diff --git a/src/frontend/src/components/core/dropdownComponent/index.tsx b/src/frontend/src/components/core/dropdownComponent/index.tsx index 0ad0623ef..eed5ba29a 100644 --- a/src/frontend/src/components/core/dropdownComponent/index.tsx +++ b/src/frontend/src/components/core/dropdownComponent/index.tsx @@ -58,6 +58,7 @@ export default function Dropdown({ const [openDialog, setOpenDialog] = useState(false); const [customValue, setCustomValue] = useState(""); const [filteredOptions, setFilteredOptions] = useState(validOptions); + const [filteredMetadata, setFilteredMetadata] = useState(optionsMetaData); const [refreshOptions, setRefreshOptions] = useState(false); const refButton = useRef(null); @@ -94,8 +95,21 @@ export default function Dropdown({ const value = event.target.value; const searchValues = fuse.search(value); const filtered = searchValues.map((search) => search.item); - if (!filtered.includes(value) && combobox && value) filtered.push(value); + + // Update filteredOptions with the search results setFilteredOptions(value ? filtered : validOptions); + + // Update filteredMetadata to match the filtered options + if (value && optionsMetaData) { + const newMetadata = filtered.map((option) => { + const originalIndex = validOptions.indexOf(option); + return optionsMetaData[originalIndex]; + }); + setFilteredMetadata(newMetadata); + } else { + setFilteredMetadata(optionsMetaData); + } + setCustomValue(value); }; @@ -313,37 +327,37 @@ export default function Dropdown({ data-testid={`${option}-${index}-option`} >
- {optionsMetaData?.[index]?.icon && ( + {filteredMetadata?.[index]?.icon && ( )}
0, - "w-full pl-2": !optionsMetaData?.[index]?.icon, + filteredMetadata && filteredMetadata?.length > 0, + "w-full pl-2": !filteredMetadata?.[index]?.icon, })} >
{option}{" "}
- {optionsMetaData && optionsMetaData?.length > 0 ? ( + {filteredMetadata && filteredMetadata?.length > 0 ? (
{Object.entries( - filterMetadataKeys(optionsMetaData?.[index] || {}), + filterMetadataKeys(filteredMetadata?.[index] || {}), ) .filter( ([key, value]) => @@ -408,7 +422,7 @@ export default function Dropdown({ } > - {filteredOptions?.length > 0 && renderSearchInput()} + {options?.length > 0 && renderSearchInput()} {renderOptionsList()}