From 28223969e74bf0f417f30014391ac3c53128df91 Mon Sep 17 00:00:00 2001 From: Bernhard Owen Josephus Date: Thu, 2 Apr 2026 01:14:29 +0800 Subject: [PATCH 01/25] prepare new popups and hooks --- .../Search/FilterDropdowns/AmountPopup.tsx | 190 +++++++++++ .../FilterDropdowns/CardSelectPopup.tsx | 218 +++++++++++++ .../FilterDropdowns/CategorySelectPopup.tsx | 92 ++++++ .../FilterDropdowns/CurrencySelectPopup.tsx | 33 ++ .../FilterDropdowns/ExportedToSelectPopup.tsx | 144 +++++++++ .../FilterDropdowns/GroupCurrencyPopup.tsx | 45 +++ .../Search/FilterDropdowns/InSelectPopup.tsx | 219 +++++++++++++ .../FilterDropdowns/ReportFieldPopup.tsx | 297 ++++++++++++++++++ .../Search/FilterDropdowns/TagSelectPopup.tsx | 68 ++++ .../FilterDropdowns/TaxRateSelectPopup.tsx | 54 ++++ .../FilterDropdowns/WorkspaceSelectPopup.tsx | 54 ++++ .../Search/hooks/useFilterCardValue.tsx | 48 +++ .../Search/hooks/useFilterReportValue.tsx | 20 ++ .../Search/hooks/useFilterTaxRateValue.tsx | 28 ++ 14 files changed, 1510 insertions(+) create mode 100644 src/components/Search/FilterDropdowns/AmountPopup.tsx create mode 100644 src/components/Search/FilterDropdowns/CardSelectPopup.tsx create mode 100644 src/components/Search/FilterDropdowns/CategorySelectPopup.tsx create mode 100644 src/components/Search/FilterDropdowns/CurrencySelectPopup.tsx create mode 100644 src/components/Search/FilterDropdowns/ExportedToSelectPopup.tsx create mode 100644 src/components/Search/FilterDropdowns/GroupCurrencyPopup.tsx create mode 100644 src/components/Search/FilterDropdowns/InSelectPopup.tsx create mode 100644 src/components/Search/FilterDropdowns/ReportFieldPopup.tsx create mode 100644 src/components/Search/FilterDropdowns/TagSelectPopup.tsx create mode 100644 src/components/Search/FilterDropdowns/TaxRateSelectPopup.tsx create mode 100644 src/components/Search/FilterDropdowns/WorkspaceSelectPopup.tsx create mode 100644 src/components/Search/hooks/useFilterCardValue.tsx create mode 100644 src/components/Search/hooks/useFilterReportValue.tsx create mode 100644 src/components/Search/hooks/useFilterTaxRateValue.tsx diff --git a/src/components/Search/FilterDropdowns/AmountPopup.tsx b/src/components/Search/FilterDropdowns/AmountPopup.tsx new file mode 100644 index 000000000000..1ddca5ebd436 --- /dev/null +++ b/src/components/Search/FilterDropdowns/AmountPopup.tsx @@ -0,0 +1,190 @@ +import React, {useState} from 'react'; +import {View} from 'react-native'; +import type {ValueOf} from 'type-fest'; +import AmountWithoutCurrencyInput from '@components/AmountWithoutCurrencyInput'; +import Button from '@components/Button'; +import HeaderWithBackButton from '@components/HeaderWithBackButton'; +import MenuItem from '@components/MenuItem'; +import useLocalize from '@hooks/useLocalize'; +import useResponsiveLayout from '@hooks/useResponsiveLayout'; +import useThemeStyles from '@hooks/useThemeStyles'; +import {convertToBackendAmount, convertToFrontendAmountAsString} from '@libs/CurrencyUtils'; +import CONST from '@src/CONST'; +import type {SearchAdvancedFiltersForm} from '@src/types/form'; +import type {SearchAmountFilterKeys} from '../types'; +import type {PopoverComponentProps} from './DropdownButton'; +import Text from '@components/Text'; + +type AmountPopupProps = PopoverComponentProps & { + filterKey: SearchAmountFilterKeys; + label: string; + value: Record, string | undefined>; + updateFilterForm: (value: Partial) => void; +}; + +type AmountInputProps = { + title: string; + value: string; + name: string; + onSave: (value: string) => void; + onBackButtonPress: () => void; +}; + +function AmountInput({title, value, name, onSave, onBackButtonPress}: AmountInputProps) { + const {translate} = useLocalize(); + const styles = useThemeStyles(); + const {shouldUseNarrowLayout} = useResponsiveLayout(); + const [amount, setAmount] = useState(value); + + return ( + + + + +