diff --git a/site/src/components/Combobox/Combobox.stories.tsx b/site/src/components/Combobox/Combobox.stories.tsx index 6e52ec3141..2356010cb8 100644 --- a/site/src/components/Combobox/Combobox.stories.tsx +++ b/site/src/components/Combobox/Combobox.stories.tsx @@ -37,6 +37,7 @@ const ComboboxWithHooks = ({ optionsList?: SelectFilterOption[]; }) => { const [value, setValue] = useState(undefined); + const [inputValue, setInputValue] = useState(""); const selectedOption = optionsList.find((opt) => opt.value === value); return ( @@ -48,7 +49,11 @@ const ComboboxWithHooks = ({ /> - + {optionsList.map((option) => ( diff --git a/site/src/components/Combobox/Combobox.tsx b/site/src/components/Combobox/Combobox.tsx index 20fb0ecf82..0cbca4ea35 100644 --- a/site/src/components/Combobox/Combobox.tsx +++ b/site/src/components/Combobox/Combobox.tsx @@ -127,6 +127,7 @@ export const ComboboxContent = ({ }; export const ComboboxInput = CommandInput; + export const ComboboxList = CommandList; export const ComboboxItem = ({ diff --git a/site/src/components/Filter/SelectFilter.tsx b/site/src/components/Filter/SelectFilter.tsx index fbf8d78b5b..339e8aa7e8 100644 --- a/site/src/components/Filter/SelectFilter.tsx +++ b/site/src/components/Filter/SelectFilter.tsx @@ -71,6 +71,8 @@ export const SelectFilter: FC = ({ minWidth: width, }} align="end" + // We want the backend to handle the filtering, not the client. + shouldFilter={false} > {selectFilterSearch} { @@ -44,11 +48,15 @@ export const useFilterMenu = ({ }); const selectedOption = selectedOptionQuery.data; const searchOptionsQuery = useQuery({ - queryKey: [id, "autocomplete", "search", query], - queryFn: () => getOptions(query), + queryKey: [id, "autocomplete", "search", debouncedQuery], + queryFn: () => getOptions(debouncedQuery), enabled, }); const searchOptions = useMemo(() => { + if (searchOptionsQuery.isFetching) { + return undefined; + } + const isDataLoaded = searchOptionsQuery.isFetched && selectedOptionQuery.isFetched; @@ -77,6 +85,7 @@ export const useFilterMenu = ({ query, searchOptionsQuery.data, searchOptionsQuery.isFetched, + searchOptionsQuery.isFetching, selectedOption, ]);