"use client" import * as React from "react" import { Check, ChevronsUpDown, X } from "lucide-react" import { cn } from "@/lib/utils" import { Button } from "@/components/ui/button" import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, } from "@/components/ui/command" import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover" import { Badge } from "@/components/ui/badge" interface MemberAutocompleteProps { allMembers: string[]; selectedMembers: string[]; onChange: (selectedMembers: string[]) => void; } export function MemberAutocomplete({ allMembers, selectedMembers, onChange, }: MemberAutocompleteProps) { const [open, setOpen] = React.useState(false) // Liste des membres qui ne sont PAS encore sélectionnés const availableMembers = allMembers.filter( (member) => !selectedMembers.includes(member) ) // Gère la sélection d'un membre dans la liste const handleSelect = (memberId: string) => { onChange([...selectedMembers, memberId]) setOpen(false) // Ferme le popover après sélection } // Gère la suppression d'un membre (clic sur le 'X' du badge) const handleRemove = (memberId: string) => { onChange(selectedMembers.filter((m) => m !== memberId)) } return (
{/* 1. Affichage des membres déjà sélectionnés (Badges) */}
{selectedMembers.map((member) => ( {member} ))}
{/* 2. Le Popover avec le bouton de recherche */} Aucun membre trouvé. {availableMembers.map((member) => ( handleSelect(member)} className="truncate" > {member} ))}
) }