diff --git a/src/components/Search/SearchMultipleSelectionPicker.tsx b/src/components/Search/SearchMultipleSelectionPicker.tsx index 0dcb43baf874..b26c2a62fcef 100644 --- a/src/components/Search/SearchMultipleSelectionPicker.tsx +++ b/src/components/Search/SearchMultipleSelectionPicker.tsx @@ -35,7 +35,7 @@ function SearchMultipleSelectionPicker({items, initiallySelectedItems, pickerTit const {sections, noResultsFound} = useMemo(() => { const selectedItemsSection = selectedItems .filter((item) => item?.name.toLowerCase().includes(debouncedSearchTerm?.toLowerCase())) - .sort((a, b) => sortOptionsWithEmptyValue(a.value as string, b.value as string)) + .sort((a, b) => sortOptionsWithEmptyValue(a.value.toString(), b.value.toString())) .map((item) => ({ text: item.name, keyForList: item.name, @@ -43,8 +43,11 @@ function SearchMultipleSelectionPicker({items, initiallySelectedItems, pickerTit value: item.value, })); const remainingItemsSection = items - .filter((item) => selectedItems.some((selectedItem) => selectedItem.value === item.value) === false && item?.name?.toLowerCase().includes(debouncedSearchTerm?.toLowerCase())) - .sort((a, b) => sortOptionsWithEmptyValue(a.value as string, b.value as string)) + .filter( + (item) => + !selectedItems.some((selectedItem) => selectedItem.value.toString() === item.value.toString()) && item?.name?.toLowerCase().includes(debouncedSearchTerm?.toLowerCase()), + ) + .sort((a, b) => sortOptionsWithEmptyValue(a.value.toString(), b.value.toString())) .map((item) => ({ text: item.name, keyForList: item.name, diff --git a/src/libs/PolicyUtils.ts b/src/libs/PolicyUtils.ts index d89e4f5c513e..0035c9ae8ca5 100644 --- a/src/libs/PolicyUtils.ts +++ b/src/libs/PolicyUtils.ts @@ -578,6 +578,9 @@ function getAllTaxRatesNamesAndKeys(): Record { allTaxRates[taxRate.name] = [taxRateKey]; return; } + if (allTaxRates[taxRate.name].includes(taxRateKey)) { + return; + } allTaxRates[taxRate.name].push(taxRateKey); }); }); diff --git a/src/libs/SearchQueryUtils.ts b/src/libs/SearchQueryUtils.ts index 52fb60daeaa7..fefbcf8057d6 100644 --- a/src/libs/SearchQueryUtils.ts +++ b/src/libs/SearchQueryUtils.ts @@ -395,7 +395,7 @@ function buildSearchQueryString(queryJSON?: SearchQueryJSON) { */ function buildQueryStringFromFilterFormValues(filterValues: Partial) { // We separate type and status filters from other filters to maintain hashes consistency for saved searches - const {type, status, policyID, groupBy, ...otherFilters} = filterValues; + const {type, status, groupBy, ...otherFilters} = filterValues; const filtersString: string[] = []; // When switching types/setting the type, ensure we aren't polluting our query with filters that are @@ -436,11 +436,6 @@ function buildQueryStringFromFilterFormValues(filterValues: Partial sanitizeSearchValue(id)).join(',') : sanitizeSearchValue(policyID); - filtersString.push(`${CONST.SEARCH.SYNTAX_FILTER_KEYS.POLICY_ID}:${sanitizedPolicyIDs}`); - } - const mappedFilters = Object.entries(otherFilters) .map(([filterKey, filterValue]) => { if ( @@ -776,7 +771,7 @@ function buildUserReadableQueryString( title += ` group-by:${groupBy}`; } - if (policyID) { + if (policyID && policyID.length > 0) { title += ` workspace:${policyID.map((id) => sanitizeSearchValue(policies?.[`${ONYXKEYS.COLLECTION.POLICY}${id}`]?.name ?? id)).join(',')}`; } diff --git a/src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersCategoryPage.tsx b/src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersCategoryPage.tsx index a249b78ff08c..caf6dd0b4c00 100644 --- a/src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersCategoryPage.tsx +++ b/src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersCategoryPage.tsx @@ -35,7 +35,7 @@ function SearchFiltersCategoryPage() { const items = [{name: translate('search.noCategory'), value: CONST.SEARCH.CATEGORY_EMPTY_VALUE as string}]; const uniqueCategoryNames = new Set(); - if (!selectedPoliciesCategories) { + if (!selectedPoliciesCategories || selectedPoliciesCategories.length === 0) { Object.values(allPolicyCategories ?? {}).map((policyCategories) => Object.values(policyCategories ?? {}).forEach((category) => uniqueCategoryNames.add(category.name))); } else { selectedPoliciesCategories.forEach((category) => uniqueCategoryNames.add(category.name)); diff --git a/src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersTagPage.tsx b/src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersTagPage.tsx index 683b84788987..90c2d9e9973b 100644 --- a/src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersTagPage.tsx +++ b/src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersTagPage.tsx @@ -36,7 +36,7 @@ function SearchFiltersTagPage() { const items = [{name: translate('search.noTag'), value: CONST.SEARCH.TAG_EMPTY_VALUE as string}]; const uniqueTagNames = new Set(); - if (!selectedPoliciesTagLists) { + if (!selectedPoliciesTagLists || selectedPoliciesTagLists.length === 0) { const tagListsUnpacked = Object.values(allPolicyTagLists ?? {}).filter((item) => !!item) as PolicyTagLists[]; tagListsUnpacked .map(getTagNamesFromTagsLists) diff --git a/src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersTaxRatePage.tsx b/src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersTaxRatePage.tsx index 9cce40a5ddda..06aa98855cc8 100644 --- a/src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersTaxRatePage.tsx +++ b/src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersTaxRatePage.tsx @@ -36,7 +36,7 @@ function SearchFiltersTaxRatePage() { const selectedPoliciesTaxRates = policies?.map((policy) => policy?.taxRates?.taxes).filter((taxRates) => !!taxRates); const taxItems = useMemo(() => { - if (!selectedPoliciesTaxRates) { + if (!selectedPoliciesTaxRates || selectedPoliciesTaxRates?.length === 0) { return Object.entries(allTaxRates).map(([taxRateName, taxRateKeys]) => ({name: taxRateName, value: taxRateKeys})); } const selectedPoliciesTaxRatesItems = selectedPoliciesTaxRates.reduce( diff --git a/src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersWorkspacePage.tsx b/src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersWorkspacePage.tsx index abb3a7786b03..e6bbf36e91c8 100644 --- a/src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersWorkspacePage.tsx +++ b/src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersWorkspacePage.tsx @@ -70,7 +70,7 @@ function SearchFiltersWorkspacePage() { }, [selectedOptions]); const resetChanges = useCallback(() => { - updateWorkspaceFilter(null); + setSelectedOptions([]); }, []); return (