1- import React , { useState } from 'react' ;
1+ import React , { useEffect } from 'react' ;
22import { View } from 'react-native' ;
33import AmountForm from '@components/AmountForm' ;
44import FormProvider from '@components/Form/FormProvider' ;
55import InputWrapper from '@components/Form/InputWrapper' ;
66import HeaderWithBackButton from '@components/HeaderWithBackButton' ;
7+ import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription' ;
78import ScreenWrapper from '@components/ScreenWrapper' ;
89import Text from '@components/Text' ;
910import useAutoFocusInput from '@hooks/useAutoFocusInput' ;
@@ -12,20 +13,20 @@ import useLocalize from '@hooks/useLocalize';
1213import useOnyx from '@hooks/useOnyx' ;
1314import usePolicy from '@hooks/usePolicy' ;
1415import useThemeStyles from '@hooks/useThemeStyles' ;
16+ import { clearDraftValues } from '@libs/actions/FormActions' ;
1517import { getDecodedCategoryName } from '@libs/CategoryUtils' ;
1618import { convertToFrontendAmountAsString } from '@libs/CurrencyUtils' ;
19+ import createDynamicRoute from '@libs/Navigation/helpers/dynamicRoutesUtils/createDynamicRoute' ;
1720import Navigation from '@libs/Navigation/Navigation' ;
1821import type { PlatformStackScreenProps } from '@libs/Navigation/PlatformStackNavigation/types' ;
1922import type { SettingsNavigatorParamList } from '@navigation/types' ;
2023import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper' ;
2124import { setPolicyCategoryMaxAmount } from '@userActions/Policy/Category' ;
2225import CONST from '@src/CONST' ;
2326import ONYXKEYS from '@src/ONYXKEYS' ;
24- import ROUTES from '@src/ROUTES' ;
27+ import ROUTES , { DYNAMIC_ROUTES } from '@src/ROUTES' ;
2528import type SCREENS from '@src/SCREENS' ;
2629import INPUT_IDS from '@src/types/form/WorkspaceCategoryFlagAmountsOverForm' ;
27- import type { PolicyCategoryExpenseLimitType } from '@src/types/onyx/PolicyCategory' ;
28- import ExpenseLimitTypeSelector from './ExpenseLimitTypeSelector/ExpenseLimitTypeSelector' ;
2930
3031type EditCategoryPageProps = PlatformStackScreenProps < SettingsNavigatorParamList , typeof SCREENS . WORKSPACE . CATEGORY_FLAG_AMOUNTS_OVER > ;
3132
@@ -39,9 +40,16 @@ function CategoryFlagAmountsOverPage({
3940 const { translate} = useLocalize ( ) ;
4041 const { getCurrencyDecimals} = useCurrencyListActions ( ) ;
4142 const [ policyCategories ] = useOnyx ( `${ ONYXKEYS . COLLECTION . POLICY_CATEGORIES } ${ policyID } ` ) ;
42- const [ expenseLimitType , setExpenseLimitType ] = useState < PolicyCategoryExpenseLimitType > ( policyCategories ?. [ categoryName ] ?. expenseLimitType ?? CONST . POLICY . EXPENSE_LIMIT_TYPES . EXPENSE ) ;
43+ const [ formDraft ] = useOnyx ( ONYXKEYS . FORMS . WORKSPACE_CATEGORY_FLAG_AMOUNTS_OVER_FORM_DRAFT ) ;
44+ const expenseLimitType = formDraft ?. expenseLimitType ?? policyCategories ?. [ categoryName ] ?. expenseLimitType ?? CONST . POLICY . EXPENSE_LIMIT_TYPES . EXPENSE ;
4345 const decodedCategoryName = getDecodedCategoryName ( categoryName ) ;
4446
47+ useEffect ( ( ) => {
48+ return ( ) => {
49+ clearDraftValues ( ONYXKEYS . FORMS . WORKSPACE_CATEGORY_FLAG_AMOUNTS_OVER_FORM ) ;
50+ } ;
51+ } , [ ] ) ;
52+
4553 const { inputCallbackRef} = useAutoFocusInput ( ) ;
4654
4755 const policyCategoryMaxExpenseAmount = policyCategories ?. [ categoryName ] ?. maxExpenseAmount ;
@@ -59,7 +67,7 @@ function CategoryFlagAmountsOverPage({
5967 >
6068 < ScreenWrapper
6169 enableEdgeToEdgeBottomSafeAreaPadding
62- style = { [ styles . defaultModalContainer ] }
70+ style = { styles . defaultModalContainer }
6371 testID = "CategoryFlagAmountsOverPage"
6472 shouldEnableMaxHeight
6573 >
@@ -94,11 +102,12 @@ function CategoryFlagAmountsOverPage({
94102 />
95103 < Text style = { [ styles . mutedTextLabel , styles . mt2 ] } > { translate ( 'workspace.rules.categoryRules.flagAmountsOverSubtitle' ) } </ Text >
96104 </ View >
97- < ExpenseLimitTypeSelector
98- label = { translate ( 'common.type' ) }
99- defaultValue = { expenseLimitType }
105+ < MenuItemWithTopDescription
106+ shouldShowRightIcon
107+ title = { translate ( `workspace.rules.categoryRules.expenseLimitTypes.${ expenseLimitType } ` ) }
108+ description = { translate ( 'common.type' ) }
109+ onPress = { ( ) => Navigation . navigate ( createDynamicRoute ( DYNAMIC_ROUTES . EXPENSE_LIMIT_TYPE_SELECTOR . path ) ) }
100110 wrapperStyle = { [ styles . ph5 , styles . mt3 ] }
101- setNewExpenseLimitType = { setExpenseLimitType }
102111 />
103112 </ FormProvider >
104113 </ ScreenWrapper >
0 commit comments