From e41cb67a8cad3b25f9074e50001863d53069d748 Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Sat, 3 Aug 2024 10:21:28 +0700 Subject: [PATCH 01/10] add sort function --- .../ReportFieldsListValuesPage.tsx | 33 +++++++++-------- .../WorkspaceReportFieldsPage.tsx | 35 ++++++++++--------- 2 files changed, 37 insertions(+), 31 deletions(-) diff --git a/src/pages/workspace/reportFields/ReportFieldsListValuesPage.tsx b/src/pages/workspace/reportFields/ReportFieldsListValuesPage.tsx index 61402b28020a..a9060eb963a9 100644 --- a/src/pages/workspace/reportFields/ReportFieldsListValuesPage.tsx +++ b/src/pages/workspace/reportFields/ReportFieldsListValuesPage.tsx @@ -22,6 +22,7 @@ import useThemeStyles from '@hooks/useThemeStyles'; import {turnOffMobileSelectionMode} from '@libs/actions/MobileSelectionMode'; import * as ReportField from '@libs/actions/Policy/ReportField'; import * as DeviceCapabilities from '@libs/DeviceCapabilities'; +import localeCompare from '@libs/LocaleCompare'; import Navigation from '@libs/Navigation/Navigation'; import * as PolicyUtils from '@libs/PolicyUtils'; import * as ReportUtils from '@libs/ReportUtils'; @@ -84,21 +85,23 @@ function ReportFieldsListValuesPage({ }, [formDraft?.disabledListValues, formDraft?.listValues, policy?.fieldList, reportFieldID]); const listValuesSections = useMemo(() => { - const data = listValues.map((value, index) => ({ - value, - index, - text: value, - keyForList: value, - isSelected: selectedValues[value], - enabled: !disabledListValues[index] ?? true, - pendingAction: reportFieldID ? policy?.fieldList?.[ReportUtils.getReportFieldKey(reportFieldID)]?.pendingAction : null, - rightElement: ( - - ), - })); + const data = listValues + .sort((a, b) => localeCompare(a, b)) + .map((value, index) => ({ + value, + index, + text: value, + keyForList: value, + isSelected: selectedValues[value], + enabled: !disabledListValues[index] ?? true, + pendingAction: reportFieldID ? policy?.fieldList?.[ReportUtils.getReportFieldKey(reportFieldID)]?.pendingAction : null, + rightElement: ( + + ), + })); return [{data, isDisabled: false}]; }, [disabledListValues, listValues, policy?.fieldList, reportFieldID, selectedValues, translate]); diff --git a/src/pages/workspace/reportFields/WorkspaceReportFieldsPage.tsx b/src/pages/workspace/reportFields/WorkspaceReportFieldsPage.tsx index 27f01330bf60..9e8f8d2a5e13 100644 --- a/src/pages/workspace/reportFields/WorkspaceReportFieldsPage.tsx +++ b/src/pages/workspace/reportFields/WorkspaceReportFieldsPage.tsx @@ -27,6 +27,7 @@ import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import {turnOffMobileSelectionMode} from '@libs/actions/MobileSelectionMode'; import * as DeviceCapabilities from '@libs/DeviceCapabilities'; +import localeCompare from '@libs/LocaleCompare'; import Navigation from '@libs/Navigation/Navigation'; import type {FullScreenNavigatorParamList} from '@libs/Navigation/types'; import * as PolicyUtils from '@libs/PolicyUtils'; @@ -99,22 +100,24 @@ function WorkspaceReportFieldsPage({ return [ { - data: Object.values(filteredPolicyFieldList).map((reportField) => ({ - value: reportField.name, - fieldID: reportField.fieldID, - keyForList: String(reportField.fieldID), - orderWeight: reportField.orderWeight, - pendingAction: reportField.pendingAction, - isSelected: selectedReportFields.find((selectedReportField) => selectedReportField.name === reportField.name) !== undefined, - isDisabled: reportField.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE, - text: reportField.name, - rightElement: ( - - ), - })), + data: Object.values(filteredPolicyFieldList) + .sort((a, b) => localeCompare(a.name, b.name)) + .map((reportField) => ({ + value: reportField.name, + fieldID: reportField.fieldID, + keyForList: String(reportField.fieldID), + orderWeight: reportField.orderWeight, + pendingAction: reportField.pendingAction, + isSelected: selectedReportFields.find((selectedReportField) => selectedReportField.name === reportField.name) !== undefined, + isDisabled: reportField.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE, + text: reportField.name, + rightElement: ( + + ), + })), isDisabled: false, }, ]; From 07c12e66d37615745eb5fe8f2bce325aadee0807 Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Sun, 4 Aug 2024 11:39:52 +0700 Subject: [PATCH 02/10] add sort func to initial page --- .../ReportFieldsInitialListValuePicker.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/workspace/reportFields/InitialListValueSelector/ReportFieldsInitialListValuePicker.tsx b/src/pages/workspace/reportFields/InitialListValueSelector/ReportFieldsInitialListValuePicker.tsx index 18f9f9d65259..7fa96c5d9e74 100644 --- a/src/pages/workspace/reportFields/InitialListValueSelector/ReportFieldsInitialListValuePicker.tsx +++ b/src/pages/workspace/reportFields/InitialListValueSelector/ReportFieldsInitialListValuePicker.tsx @@ -1,6 +1,7 @@ import React, {useMemo} from 'react'; import SelectionList from '@components/SelectionList'; import RadioListItem from '@components/SelectionList/RadioListItem'; +import localeCompare from '@libs/LocaleCompare'; type ReportFieldsInitialListValuePickerProps = { /** Options to select from if field is of type list */ @@ -22,6 +23,7 @@ function ReportFieldsInitialListValuePicker({listValues, disabledOptions, value, { data: Object.values(listValues ?? {}) .filter((listValue, index) => !disabledOptions[index]) + .sort((a, b) => localeCompare(a, b)) .map((listValue) => ({ keyForList: listValue, value: listValue, From aee49caba48d8fbbe5d14e579a8296da88585b07 Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Mon, 5 Aug 2024 21:09:43 +0700 Subject: [PATCH 03/10] update sort func after map func --- .../workspace/reportFields/ReportFieldsListValuesPage.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/workspace/reportFields/ReportFieldsListValuesPage.tsx b/src/pages/workspace/reportFields/ReportFieldsListValuesPage.tsx index a9060eb963a9..21f04c11d447 100644 --- a/src/pages/workspace/reportFields/ReportFieldsListValuesPage.tsx +++ b/src/pages/workspace/reportFields/ReportFieldsListValuesPage.tsx @@ -86,7 +86,7 @@ function ReportFieldsListValuesPage({ const listValuesSections = useMemo(() => { const data = listValues - .sort((a, b) => localeCompare(a, b)) + // .sort((a, b) => localeCompare(a, b)) .map((value, index) => ({ value, index, @@ -101,8 +101,8 @@ function ReportFieldsListValuesPage({ labelText={disabledListValues[index] ? translate('workspace.common.disabled') : translate('workspace.common.enabled')} /> ), - })); - + })) + .sort((a, b) => localeCompare(a.value, b.value)); return [{data, isDisabled: false}]; }, [disabledListValues, listValues, policy?.fieldList, reportFieldID, selectedValues, translate]); From bd4b169bad1e9802d0521f6fdff9cfc1bff0dddb Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Mon, 5 Aug 2024 23:00:23 +0700 Subject: [PATCH 04/10] remove comment line --- src/pages/workspace/reportFields/ReportFieldsListValuesPage.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/workspace/reportFields/ReportFieldsListValuesPage.tsx b/src/pages/workspace/reportFields/ReportFieldsListValuesPage.tsx index 21f04c11d447..d198697ef6fb 100644 --- a/src/pages/workspace/reportFields/ReportFieldsListValuesPage.tsx +++ b/src/pages/workspace/reportFields/ReportFieldsListValuesPage.tsx @@ -86,7 +86,6 @@ function ReportFieldsListValuesPage({ const listValuesSections = useMemo(() => { const data = listValues - // .sort((a, b) => localeCompare(a, b)) .map((value, index) => ({ value, index, From 06a303872312c931f52b6ea1a455d7581407f833 Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Tue, 6 Aug 2024 11:16:18 +0700 Subject: [PATCH 05/10] add sort func --- src/pages/EditReportFieldDropdown.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pages/EditReportFieldDropdown.tsx b/src/pages/EditReportFieldDropdown.tsx index 579d8e6c53ca..d37b6af09c4f 100644 --- a/src/pages/EditReportFieldDropdown.tsx +++ b/src/pages/EditReportFieldDropdown.tsx @@ -9,6 +9,7 @@ import type {ListItem} from '@components/SelectionList/types'; import useDebouncedState from '@hooks/useDebouncedState'; import useLocalize from '@hooks/useLocalize'; import useTheme from '@hooks/useTheme'; +import localeCompare from '@libs/LocaleCompare'; import * as OptionsListUtils from '@libs/OptionsListUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; @@ -61,7 +62,7 @@ function EditReportFieldDropdownPage({onSubmit, fieldKey, fieldValue, fieldOptio ); const [sections, headerMessage] = useMemo(() => { - const validFieldOptions = fieldOptions?.filter((option) => !!option); + const validFieldOptions = fieldOptions?.filter((option) => !!option).sort((a, b) => localeCompare(a, b)); const {policyReportFieldOptions} = OptionsListUtils.getFilteredOptions( [], From add035b1183518520cbbe06532c6aa1739273112 Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Tue, 6 Aug 2024 15:21:41 +0700 Subject: [PATCH 06/10] add sort func --- src/pages/EditReportFieldDropdown.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/EditReportFieldDropdown.tsx b/src/pages/EditReportFieldDropdown.tsx index d37b6af09c4f..fd88de54daa9 100644 --- a/src/pages/EditReportFieldDropdown.tsx +++ b/src/pages/EditReportFieldDropdown.tsx @@ -43,7 +43,7 @@ function EditReportFieldDropdownPage({onSubmit, fieldKey, fieldValue, fieldOptio const [searchValue, debouncedSearchValue, setSearchValue] = useDebouncedState(''); const theme = useTheme(); const {translate} = useLocalize(); - const recentlyUsedOptions = useMemo(() => recentlyUsedReportFields?.[fieldKey] ?? [], [recentlyUsedReportFields, fieldKey]); + const recentlyUsedOptions = useMemo(() => recentlyUsedReportFields?.[fieldKey].sort((a, b) => localeCompare(a, b)) ?? [], [recentlyUsedReportFields, fieldKey]); const itemRightSideComponent = useCallback( (item: ListItem) => { From 552ecf7fd68aa087d0db1a9ccb33b9178bcc4224 Mon Sep 17 00:00:00 2001 From: cretadn22 <168617111+cretadn22@users.noreply.github.com> Date: Tue, 6 Aug 2024 16:43:29 +0700 Subject: [PATCH 07/10] Update src/pages/EditReportFieldDropdown.tsx Co-authored-by: Pavlo Tsimura --- src/pages/EditReportFieldDropdown.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/EditReportFieldDropdown.tsx b/src/pages/EditReportFieldDropdown.tsx index fd88de54daa9..62dde5f162c5 100644 --- a/src/pages/EditReportFieldDropdown.tsx +++ b/src/pages/EditReportFieldDropdown.tsx @@ -43,7 +43,7 @@ function EditReportFieldDropdownPage({onSubmit, fieldKey, fieldValue, fieldOptio const [searchValue, debouncedSearchValue, setSearchValue] = useDebouncedState(''); const theme = useTheme(); const {translate} = useLocalize(); - const recentlyUsedOptions = useMemo(() => recentlyUsedReportFields?.[fieldKey].sort((a, b) => localeCompare(a, b)) ?? [], [recentlyUsedReportFields, fieldKey]); + const recentlyUsedOptions = useMemo(() => recentlyUsedReportFields?.[fieldKey]?.sort(localeCompare) ?? [], [recentlyUsedReportFields, fieldKey]); const itemRightSideComponent = useCallback( (item: ListItem) => { From 88a4d41c33461c4c53865d2b9a13fabad80ec2ce Mon Sep 17 00:00:00 2001 From: cretadn22 <168617111+cretadn22@users.noreply.github.com> Date: Tue, 6 Aug 2024 16:43:41 +0700 Subject: [PATCH 08/10] Update src/pages/EditReportFieldDropdown.tsx Co-authored-by: Pavlo Tsimura --- src/pages/EditReportFieldDropdown.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/EditReportFieldDropdown.tsx b/src/pages/EditReportFieldDropdown.tsx index 62dde5f162c5..ea2a3d489406 100644 --- a/src/pages/EditReportFieldDropdown.tsx +++ b/src/pages/EditReportFieldDropdown.tsx @@ -62,7 +62,7 @@ function EditReportFieldDropdownPage({onSubmit, fieldKey, fieldValue, fieldOptio ); const [sections, headerMessage] = useMemo(() => { - const validFieldOptions = fieldOptions?.filter((option) => !!option).sort((a, b) => localeCompare(a, b)); + const validFieldOptions = fieldOptions?.filter((option) => !!option).sort(localeCompare); const {policyReportFieldOptions} = OptionsListUtils.getFilteredOptions( [], From bcbbb53a5cdcb1dce69ff2ee98db2e8184faef88 Mon Sep 17 00:00:00 2001 From: cretadn22 <168617111+cretadn22@users.noreply.github.com> Date: Tue, 6 Aug 2024 16:43:54 +0700 Subject: [PATCH 09/10] Update src/pages/workspace/reportFields/InitialListValueSelector/ReportFieldsInitialListValuePicker.tsx Co-authored-by: Pavlo Tsimura --- .../ReportFieldsInitialListValuePicker.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/reportFields/InitialListValueSelector/ReportFieldsInitialListValuePicker.tsx b/src/pages/workspace/reportFields/InitialListValueSelector/ReportFieldsInitialListValuePicker.tsx index 7fa96c5d9e74..4e6328bbc36b 100644 --- a/src/pages/workspace/reportFields/InitialListValueSelector/ReportFieldsInitialListValuePicker.tsx +++ b/src/pages/workspace/reportFields/InitialListValueSelector/ReportFieldsInitialListValuePicker.tsx @@ -23,7 +23,7 @@ function ReportFieldsInitialListValuePicker({listValues, disabledOptions, value, { data: Object.values(listValues ?? {}) .filter((listValue, index) => !disabledOptions[index]) - .sort((a, b) => localeCompare(a, b)) + .sort(localeCompare) .map((listValue) => ({ keyForList: listValue, value: listValue, From 634fe3d6a226349c2ceb08fd5d199db00dd89d1e Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Tue, 6 Aug 2024 16:48:01 +0700 Subject: [PATCH 10/10] clean sort function --- src/pages/EditReportFieldDropdown.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/EditReportFieldDropdown.tsx b/src/pages/EditReportFieldDropdown.tsx index ea2a3d489406..ba6828eca782 100644 --- a/src/pages/EditReportFieldDropdown.tsx +++ b/src/pages/EditReportFieldDropdown.tsx @@ -62,7 +62,7 @@ function EditReportFieldDropdownPage({onSubmit, fieldKey, fieldValue, fieldOptio ); const [sections, headerMessage] = useMemo(() => { - const validFieldOptions = fieldOptions?.filter((option) => !!option).sort(localeCompare); + const validFieldOptions = fieldOptions?.filter((option) => !!option)?.sort(localeCompare); const {policyReportFieldOptions} = OptionsListUtils.getFilteredOptions( [],