import { Button } from '@/components/ui/button'; import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, } from '@/components/ui/command'; import { MultiSelectOptionType } from '@/components/ui/multi-select'; import { Popover, PopoverContent, PopoverTrigger, } from '@/components/ui/popover'; import { Separator } from '@/components/ui/separator'; import { useAllTestingResult, useSelectTestingResult, } from '@/hooks/knowledge-hooks'; import { cn } from '@/lib/utils'; import { CheckIcon, ChevronDown, Files, XIcon } from 'lucide-react'; import { useMemo, useState } from 'react'; interface IProps { onTesting(documentIds: string[]): void; setSelectedDocumentIds(documentIds: string[]): void; selectedDocumentIds: string[]; } const RetrievalDocuments = ({ onTesting, selectedDocumentIds, setSelectedDocumentIds, }: IProps) => { const { documents: documentsAll } = useAllTestingResult(); const { documents } = useSelectTestingResult(); const [isPopoverOpen, setIsPopoverOpen] = useState(false); const { documents: useDocuments } = { documents: documentsAll?.length > documents?.length ? documentsAll : documents, }; const [selectedValues, setSelectedValues] = useState(selectedDocumentIds); const multiOptions = useMemo(() => { return useDocuments?.map((item) => { return { label: item.doc_name, value: item.doc_id, disabled: item.doc_name === 'Disabled User', // suffix: ( //
//
{item.count}
//
// //
//
// ), }; }); }, [useDocuments]); const handleTogglePopover = () => { setIsPopoverOpen((prev) => !prev); }; const onValueChange = (value: string[]) => { console.log(value); onTesting(value); setSelectedDocumentIds(value); // handleDatasetSelectChange(value, field.onChange); }; const handleClear = () => { setSelectedValues([]); onValueChange([]); }; const handleInputKeyDown = (event: React.KeyboardEvent) => { if (event.key === 'Enter') { setIsPopoverOpen(true); } else if (event.key === 'Backspace' && !event.currentTarget.value) { const newSelectedValues = [...selectedValues]; newSelectedValues.pop(); setSelectedValues(newSelectedValues); onValueChange(newSelectedValues); } }; const toggleOption = (option: string) => { const newSelectedValues = selectedValues.includes(option) ? selectedValues.filter((value) => value !== option) : [...selectedValues, option]; setSelectedValues(newSelectedValues); onValueChange(newSelectedValues); }; return ( setIsPopoverOpen(false)} > No results found. {!multiOptions.some((x) => 'options' in x) && (multiOptions as unknown as MultiSelectOptionType[]).map( (option) => { const isSelected = selectedValues.includes(option.value); return ( { if (option.disabled) return false; toggleOption(option.value); }} className={cn('cursor-pointer', { 'cursor-not-allowed text-text-disabled': option.disabled, })} >
{option.icon && ( )} {option.label} {option.suffix && ( {option.suffix} )}
); }, )}
{selectedValues.length > 0 && ( <> Clear )} setIsPopoverOpen(false)} className="flex-1 justify-center cursor-pointer max-w-full" > Close
); }; export default RetrievalDocuments;