Skip to content

Commit 2e164a5

Browse files
committed
make MultiSelect independent from translations
1 parent e03ed72 commit 2e164a5

3 files changed

Lines changed: 29 additions & 30 deletions

File tree

src/components/Search/FilterDropdowns/MultiSelectPopup.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ import Text from '@components/Text';
88
import useLocalize from '@hooks/useLocalize';
99
import useResponsiveLayout from '@hooks/useResponsiveLayout';
1010
import useThemeStyles from '@hooks/useThemeStyles';
11-
import type {TranslationPaths} from '@src/languages/types';
1211

1312
type MultiSelectItem<T> = {
14-
translation: TranslationPaths;
13+
text: string;
1514
value: T;
1615
};
1716

@@ -41,7 +40,7 @@ function MultiSelectPopup<T extends string>({label, value, items, closeOverlay,
4140

4241
const listData: ListItem[] = useMemo(() => {
4342
return items.map((item) => ({
44-
text: translate(item.translation),
43+
text: item.text,
4544
keyForList: item.value,
4645
isSelected: !!selectedItems.find((i) => i.value === item.value),
4746
}));

src/components/Search/SearchPageHeader/SearchFiltersBar.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ function SearchFiltersBar({queryJSON, headerButtonsOptions, isMobileSelectionMod
107107
.find((filter) => filter.key === CONST.SEARCH.SYNTAX_FILTER_KEYS.FEED)
108108
?.filters.find((filter) => filter.operator === CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO)?.value;
109109
const options = getFeedOptions(allFeeds, allCards);
110-
const value = options.find((option) => option.value === feedFilterValue) ?? null;
110+
const value = feedFilterValue ? options.filter((option) => option.value === feedFilterValue) : [];
111111
return [options, value];
112112
}, [flatFilters, allFeeds, allCards]);
113113

@@ -226,12 +226,12 @@ function SearchFiltersBar({queryJSON, headerButtonsOptions, isMobileSelectionMod
226226
const feedComponent = useCallback(
227227
({closeOverlay}: PopoverComponentProps) => {
228228
return (
229-
<SingleSelectPopup
229+
<MultiSelectPopup
230230
label={translate('search.filters.feed')}
231231
items={feedOptions}
232232
value={feed}
233233
closeOverlay={closeOverlay}
234-
onChange={(item) => updateFilterForm({feed: item ? [item.value] : undefined})}
234+
onChange={(items) => updateFilterForm({feed: items.map((item) => item.value)})}
235235
/>
236236
);
237237
},
@@ -356,7 +356,7 @@ function SearchFiltersBar({queryJSON, headerButtonsOptions, isMobileSelectionMod
356356
{
357357
label: translate('search.filters.feed'),
358358
PopoverComponent: feedComponent,
359-
value: feed?.text ?? null,
359+
value: feed.map((option) => option.text),
360360
filterKey: FILTER_KEYS.FEED,
361361
},
362362
]
@@ -374,7 +374,7 @@ function SearchFiltersBar({queryJSON, headerButtonsOptions, isMobileSelectionMod
374374
{
375375
label: translate('common.status'),
376376
PopoverComponent: statusComponent,
377-
value: status.map((option) => translate(option.translation)),
377+
value: status.map((option) => option.translation ? translate(option.translation) : '').filter(Boolean),
378378
filterKey: FILTER_KEYS.STATUS,
379379
},
380380
{

src/libs/SearchUIUtils.ts

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -124,43 +124,43 @@ const taskColumnNamesToSortingProperty = {
124124
};
125125

126126
const expenseStatusOptions: Array<MultiSelectItem<SingularSearchStatus>> = [
127-
{translation: 'common.unreported', value: CONST.SEARCH.STATUS.EXPENSE.UNREPORTED},
128-
{translation: 'common.drafts', value: CONST.SEARCH.STATUS.EXPENSE.DRAFTS},
129-
{translation: 'common.outstanding', value: CONST.SEARCH.STATUS.EXPENSE.OUTSTANDING},
130-
{translation: 'iou.approved', value: CONST.SEARCH.STATUS.EXPENSE.APPROVED},
131-
{translation: 'iou.settledExpensify', value: CONST.SEARCH.STATUS.EXPENSE.PAID},
132-
{translation: 'iou.done', value: CONST.SEARCH.STATUS.EXPENSE.DONE},
127+
{text: translateLocal('common.unreported'), value: CONST.SEARCH.STATUS.EXPENSE.UNREPORTED},
128+
{text: translateLocal('common.drafts'), value: CONST.SEARCH.STATUS.EXPENSE.DRAFTS},
129+
{text: translateLocal('common.outstanding'), value: CONST.SEARCH.STATUS.EXPENSE.OUTSTANDING},
130+
{text: translateLocal('iou.approved'), value: CONST.SEARCH.STATUS.EXPENSE.APPROVED},
131+
{text: translateLocal('iou.settledExpensify'), value: CONST.SEARCH.STATUS.EXPENSE.PAID},
132+
{text: translateLocal('iou.done'), value: CONST.SEARCH.STATUS.EXPENSE.DONE},
133133
];
134134

135135
const expenseReportedStatusOptions: Array<MultiSelectItem<SingularSearchStatus>> = [
136-
{translation: 'common.drafts', value: CONST.SEARCH.STATUS.EXPENSE.DRAFTS},
137-
{translation: 'common.outstanding', value: CONST.SEARCH.STATUS.EXPENSE.OUTSTANDING},
138-
{translation: 'iou.approved', value: CONST.SEARCH.STATUS.EXPENSE.APPROVED},
139-
{translation: 'iou.settledExpensify', value: CONST.SEARCH.STATUS.EXPENSE.PAID},
140-
{translation: 'iou.done', value: CONST.SEARCH.STATUS.EXPENSE.DONE},
136+
{text: translateLocal('common.drafts'), value: CONST.SEARCH.STATUS.EXPENSE.DRAFTS},
137+
{text: translateLocal('common.outstanding'), value: CONST.SEARCH.STATUS.EXPENSE.OUTSTANDING},
138+
{text: translateLocal('iou.approved'), value: CONST.SEARCH.STATUS.EXPENSE.APPROVED},
139+
{text: translateLocal('iou.settledExpensify'), value: CONST.SEARCH.STATUS.EXPENSE.PAID},
140+
{text: translateLocal('iou.done'), value: CONST.SEARCH.STATUS.EXPENSE.DONE},
141141
];
142142

143143
const chatStatusOptions: Array<MultiSelectItem<SingularSearchStatus>> = [
144-
{translation: 'common.unread', value: CONST.SEARCH.STATUS.CHAT.UNREAD},
145-
{translation: 'common.sent', value: CONST.SEARCH.STATUS.CHAT.SENT},
146-
{translation: 'common.attachments', value: CONST.SEARCH.STATUS.CHAT.ATTACHMENTS},
147-
{translation: 'common.links', value: CONST.SEARCH.STATUS.CHAT.LINKS},
148-
{translation: 'search.filters.pinned', value: CONST.SEARCH.STATUS.CHAT.PINNED},
144+
{text: translateLocal('common.unread'), value: CONST.SEARCH.STATUS.CHAT.UNREAD},
145+
{text: translateLocal('common.sent'), value: CONST.SEARCH.STATUS.CHAT.SENT},
146+
{text: translateLocal('common.attachments'), value: CONST.SEARCH.STATUS.CHAT.ATTACHMENTS},
147+
{text: translateLocal('common.links'), value: CONST.SEARCH.STATUS.CHAT.LINKS},
148+
{text: translateLocal('search.filters.pinned'), value: CONST.SEARCH.STATUS.CHAT.PINNED},
149149
];
150150

151151
const invoiceStatusOptions: Array<MultiSelectItem<SingularSearchStatus>> = [
152-
{translation: 'common.outstanding', value: CONST.SEARCH.STATUS.INVOICE.OUTSTANDING},
153-
{translation: 'iou.settledExpensify', value: CONST.SEARCH.STATUS.INVOICE.PAID},
152+
{text: translateLocal('common.outstanding'), value: CONST.SEARCH.STATUS.INVOICE.OUTSTANDING},
153+
{text: translateLocal('iou.settledExpensify'), value: CONST.SEARCH.STATUS.INVOICE.PAID},
154154
];
155155

156156
const tripStatusOptions: Array<MultiSelectItem<SingularSearchStatus>> = [
157-
{translation: 'search.filters.current', value: CONST.SEARCH.STATUS.TRIP.CURRENT},
158-
{translation: 'search.filters.past', value: CONST.SEARCH.STATUS.TRIP.PAST},
157+
{text: translateLocal('search.filters.current'), value: CONST.SEARCH.STATUS.TRIP.CURRENT},
158+
{text: translateLocal('search.filters.past'), value: CONST.SEARCH.STATUS.TRIP.PAST},
159159
];
160160

161161
const taskStatusOptions: Array<MultiSelectItem<SingularSearchStatus>> = [
162-
{translation: 'common.outstanding', value: CONST.SEARCH.STATUS.TASK.OUTSTANDING},
163-
{translation: 'search.filters.completed', value: CONST.SEARCH.STATUS.TASK.COMPLETED},
162+
{text: translateLocal('common.outstanding'), value: CONST.SEARCH.STATUS.TASK.OUTSTANDING},
163+
{text: translateLocal('search.filters.completed'), value: CONST.SEARCH.STATUS.TASK.COMPLETED},
164164
];
165165

166166
let currentAccountID: number | undefined;

0 commit comments

Comments
 (0)