Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
80096d8
Add Require fields tab to Rules revamp hub.
Krishna2323 Jun 25, 2026
64a54e7
minor import fixes.
Krishna2323 Jun 25, 2026
b3f66b4
Add Require fields rule builder to Rules revamp.
Krishna2323 Jun 25, 2026
340b45f
Use MenuItem rows for require-fields rule field toggles.
Krishna2323 Jun 25, 2026
b9f87c0
update icon.
Krishna2323 Jun 25, 2026
9281182
Polish Require fields table badge and column header.
Krishna2323 Jun 25, 2026
7c03629
Add Flag for review tab and rule builder to Rules revamp.
Krishna2323 Jun 26, 2026
51192be
update translations.
Krishna2323 Jun 26, 2026
8948049
fix submit button padding.
Krishna2323 Jun 26, 2026
786d67c
add illustrations.
Krishna2323 Jun 26, 2026
837f295
add missing files.
Krishna2323 Jun 26, 2026
ad176d6
merge main and resolve conflicts.
Krishna2323 Jun 26, 2026
468792e
Add locked merchant-type defaults to Expense defaults tab
Krishna2323 Jun 26, 2026
e1d54e2
Fix sorting machine empty state illustration size on Rules tabs
Krishna2323 Jun 26, 2026
44f3166
Fix Rules R2 edge cases from PR review
Krishna2323 Jun 26, 2026
82106ee
fix selection.
Krishna2323 Jun 26, 2026
b1bb7f1
Add flag expense limit type and fix Require fields table column
Krishna2323 Jun 26, 2026
88ea990
compress svg.
Krishna2323 Jun 26, 2026
de9b967
remove unused exports.
Krishna2323 Jun 26, 2026
40a6fb0
fix submit button padding.
Krishna2323 Jun 26, 2026
3569b56
Fix Rules R2 review feedback for require-fields save and routes
Krishna2323 Jun 26, 2026
0c93cee
address review comments.
Krishna2323 Jun 26, 2026
f02f327
Merge branch 'Expensify:main' into krishna2323/issue-92741
Krishna2323 Jun 27, 2026
d9e7de3
Fix Rules R2 require-fields edge cases and gaps.
Krishna2323 Jun 27, 2026
141b9f1
Harden Rules R2 beta gates on category pickers and revamp hub
Krishna2323 Jun 27, 2026
334b85d
Fix empty state layout to 496x376 and center on page
Krishna2323 Jun 27, 2026
24094df
Fix empty state layout on small viewports
Krishna2323 Jun 27, 2026
84f0208
Derive merchant type group IDs from Category mcc group definitions
Krishna2323 Jun 28, 2026
a7d6d41
Refactor Rules R2 tables and address quality audit feedback
Krishna2323 Jun 28, 2026
2f47ce4
Align draft form types with standard Form pattern
Krishna2323 Jun 28, 2026
316ddbb
fix prettier.
Krishna2323 Jun 28, 2026
b997808
fix knip check.
Krishna2323 Jun 28, 2026
4d622fa
fix ESLint
Krishna2323 Jun 28, 2026
77873f2
Fix table re-render loop and lock tooltip BoundsObserver crash
Krishna2323 Jun 28, 2026
adf5683
Allow flag-for-review rules for categories that already have flag amo…
Krishna2323 Jun 29, 2026
acc5989
Hide legacy category rule menus when Rules Revamp beta is enabled
Krishna2323 Jun 29, 2026
7b91f86
Show one Require fields table row per category
Krishna2323 Jun 29, 2026
6dad046
Allow require-fields rules for categories that already have requirements
Krishna2323 Jun 29, 2026
05be85c
update translations.
Krishna2323 Jun 29, 2026
7747825
Merge branch 'main' into krishna2323/issue-92741
Krishna2323 Jun 29, 2026
c2d0a1a
remove unused exports.
Krishna2323 Jun 29, 2026
3a9ce3e
Defer Require fields receipt toggles to a later release
Krishna2323 Jun 29, 2026
2ea8ae1
remove unused export.
Krishna2323 Jun 29, 2026
8967dc2
Fix rules edit route collision when category is named "new"
Krishna2323 Jun 29, 2026
8a1035b
Fix rules empty state layout and illustration rendering
Krishna2323 Jun 29, 2026
bab63d6
Align New rule menu order with Rules tab selector
Krishna2323 Jun 29, 2026
2e3d3c8
add translations.
Krishna2323 Jun 30, 2026
6a268ab
Remove unused skeleton telemetry from rules table rows
Krishna2323 Jun 30, 2026
61d72f7
Remove redundant processedData lookup from rules table rows
Krishna2323 Jun 30, 2026
27b2a74
Export shared render-row type and remove merchant display proxy
Krishna2323 Jun 30, 2026
3cf5293
Move default MCC groups to CONST and build once at module init
Krishna2323 Jun 30, 2026
34a7a15
Split create and edit screens for rules sub-flow pages
Krishna2323 Jun 30, 2026
27812fa
Add TableRenderRowProps and use it in rules tables
Krishna2323 Jun 30, 2026
c64a8fa
Use item directly in spend and expense defaults table rows
Krishna2323 Jun 30, 2026
9410ebb
Inline CONST.FLAG_FOR_REVIEW_RULE.FIELDS in flag for review page
Krishna2323 Jun 30, 2026
c6f382a
Use exported INPUT_IDS instead of CONST rules form field constants
Krishna2323 Jun 30, 2026
11f9bb4
Use useFocusEffect to fetch policy data on rules form pages
Krishna2323 Jun 30, 2026
064e82a
Split PolicyRulesPageRevamp into lazy-loaded tab components
Krishna2323 Jun 30, 2026
840a563
remove unused export.
Krishna2323 Jun 30, 2026
bab8a1c
fix ESLint.
Krishna2323 Jun 30, 2026
7ee1ca3
Allow editing require-fields and flag-for-review rules while save is …
Krishna2323 Jun 30, 2026
766c78f
Keep merchant rules selectable while pending UPDATE is in flight
Krishna2323 Jul 1, 2026
0a58ee7
Show offline pending feedback when deleting require-fields and flag-f…
Krishna2323 Jul 1, 2026
e4dbc6d
Validate flag-for-review amount on the amount input page
Krishna2323 Jul 1, 2026
63789ee
Merge branch 'Expensify:main' into krishna2323/issue-92741
Krishna2323 Jul 1, 2026
4e51b0d
Move flag-for-review expense limit type into the amount page
Krishna2323 Jul 1, 2026
1b9284c
Fix rules table bulk actions loop and address PR review feedback
Krishna2323 Jul 1, 2026
b612b2e
Remove unused flag-for-review expense limit type pages
Krishna2323 Jul 1, 2026
14477e4
Fix require-fields receipt toggles and preserve flag-for-review draft…
Krishna2323 Jul 1, 2026
0bcc507
Revert require-fields receipt toggles to deferred scope
Krishna2323 Jul 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
112 changes: 77 additions & 35 deletions src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3921,6 +3921,60 @@ const CONST = {
TRAVEL: 'Travel',
UTILITIES: 'Utilities',
},
DEFAULT_MCC_GROUPS: {
airlines: {
category: 'Travel',
groupID: 'airlines',
},
commuter: {
category: 'Car',
groupID: 'commuter',
},
gas: {
category: 'Car',
groupID: 'gas',
},
goods: {
category: 'Materials',
groupID: 'goods',
},
groceries: {
category: 'Meals and Entertainment',
groupID: 'groceries',
},
hotel: {
category: 'Travel',
groupID: 'hotel',
},
mail: {
category: 'Office Supplies',
groupID: 'mail',
},
meals: {
category: 'Meals and Entertainment',
groupID: 'meals',
},
rental: {
category: 'Travel',
groupID: 'rental',
},
services: {
category: 'Professional Services',
groupID: 'services',
},
taxi: {
category: 'Travel',
groupID: 'taxi',
},
uncategorized: {
category: 'Other',
groupID: 'uncategorized',
},
utilities: {
category: 'Utilities',
groupID: 'utilities',
},
},
OWNERSHIP_ERRORS: {
NO_BILLING_CARD: 'noBillingCard',
AMOUNT_OWED: 'amountOwed',
Expand Down Expand Up @@ -4628,35 +4682,16 @@ const CONST = {
},
},
EXPENSE_RULES: {
FIELDS: {
BILLABLE: 'billable',
CATEGORY: 'category',
DESCRIPTION: 'comment',
CREATE_REPORT: 'createReport',
MERCHANT: 'merchantToMatch',
RENAME_MERCHANT: 'merchant',
REIMBURSABLE: 'reimbursable',
REPORT: 'report',
TAG: 'tag',
TAX: 'tax',
},
BULK_ACTION_TYPES: {
EDIT: 'edit',
DELETE: 'delete',
},
},
MERCHANT_RULES: {
FIELDS: {
BILLABLE: 'billable',
CATEGORY: 'category',
DESCRIPTION: 'comment',
MATCH_TYPE: 'matchType',
MERCHANT_TO_MATCH: 'merchantToMatch',
MERCHANT: 'merchant',
REIMBURSABLE: 'reimbursable',
TAG: 'tag',
TAX: 'tax',
},
REQUIRE_FIELDS_RULE_TYPES: {
REQUIRE_DESCRIPTION: 'requireDescription',
REQUIRE_ATTENDEES: 'requireAttendees',
REQUIRE_RECEIPTS_OVER: 'requireReceiptsOver',
REQUIRE_ITEMIZED_RECEIPTS_OVER: 'requireItemizedReceiptsOver',
},
SPEND_RULES: {
BADGE_VARIANTS: {
Expand Down Expand Up @@ -4687,17 +4722,6 @@ const CONST = {
TRANSIT_AND_RIDESHARE: 'transitAndRideshare',
TRAVEL_AGENCIES: 'travelAgencies',
},
FORM: {
FIELDS: {
CARD_IDS: 'cardIDs',
RESTRICTION_ACTION: 'restrictionAction',
MERCHANT_NAMES: 'merchantNames',
MERCHANT_MATCH_TYPES: 'merchantMatchTypes',
CATEGORIES: 'categories',
MAX_AMOUNT: 'maxAmount',
CURRENCIES: 'currencies',
},
},
ACTION: {
ALLOW: 'allow',
BLOCK: 'block',
Expand Down Expand Up @@ -5811,6 +5835,8 @@ const CONST = {
GENERAL: 'general',
CARD_RESTRICTIONS: 'cardRestrictions',
EXPENSE_DEFAULTS: 'expenseDefaults',
REQUIRE_FIELDS: 'requireFields',
FLAG_FOR_REVIEW: 'flagForReview',
},
SPLIT: {
AMOUNT: 'amount',
Expand Down Expand Up @@ -8354,6 +8380,18 @@ const CONST = {
INDIVIDUAL_EXPENSES_MENU_ITEM: 'WorkspaceRules-IndividualExpensesMenuItem',
SPEND_RULE_ITEM: 'WorkspaceRules-SpendRuleItem',
MERCHANT_RULE_ITEM: 'WorkspaceRules-MerchantRuleItem',
REQUIRE_FIELDS_RULE_ITEM: 'WorkspaceRules-RequireFieldsRuleItem',
REQUIRE_FIELDS_RULE_SAVE: 'WorkspaceRules-RequireFieldsRuleSave',
REQUIRE_FIELDS_RULE_CATEGORY: 'WorkspaceRules-RequireFieldsRuleCategory',
REQUIRE_FIELDS_RULE_FIELD_TOGGLE: 'WorkspaceRules-RequireFieldsRuleFieldToggle',
FLAG_FOR_REVIEW_RULE_ITEM: 'WorkspaceRules-FlagForReviewRuleItem',
FLAG_FOR_REVIEW_RULE_SAVE: 'WorkspaceRules-FlagForReviewRuleSave',
FLAG_FOR_REVIEW_RULE_CATEGORY: 'WorkspaceRules-FlagForReviewRuleCategory',
FLAG_FOR_REVIEW_RULE_AMOUNT: 'WorkspaceRules-FlagForReviewRuleAmount',
FLAG_FOR_REVIEW_RULE_EXPENSE_LIMIT_TYPE: 'WorkspaceRules-FlagForReviewRuleExpenseLimitType',
MERCHANT_TYPE_RULE_ITEM: 'WorkspaceRules-MerchantTypeRuleItem',
MERCHANT_TYPE_RULE_SAVE: 'WorkspaceRules-MerchantTypeRuleSave',
MERCHANT_TYPE_RULE_CATEGORY: 'WorkspaceRules-MerchantTypeRuleCategory',
ADD_MERCHANT_RULE: 'WorkspaceRules-AddMerchantRule',
MERCHANT_RULE_SECTION_ITEM: 'WorkspaceRules-MerchantRuleSectionItem',
MERCHANT_RULE_SAVE: 'WorkspaceRules-MerchantRuleSave',
Expand All @@ -8368,6 +8406,10 @@ const CONST = {
ADD_AGENT_RULE: 'WorkspaceRules-AddAgentRule',
AGENT_RULE_DELETE: 'WorkspaceRules-AgentRuleDelete',
NEW_RULE_MENU_ITEM: 'WorkspaceRules-NewRuleMenuItem',
NEW_RULE_MENU_ITEM_RESTRICT_CARD_SPEND: 'WorkspaceRules-NewRuleMenuItem-RestrictCardSpend',
NEW_RULE_MENU_ITEM_FLAG_FOR_REVIEW: 'WorkspaceRules-NewRuleMenuItem-FlagForReview',
NEW_RULE_MENU_ITEM_REQUIRE_FIELDS: 'WorkspaceRules-NewRuleMenuItem-RequireFields',
NEW_RULE_MENU_ITEM_APPLY_EXPENSE_DEFAULTS: 'WorkspaceRules-NewRuleMenuItem-ApplyExpenseDefaults',
REQUIRE_RECEIPTS_SAVE: 'WorkspaceRules-RequireReceiptsSave',
REQUIRE_FIELDS_SAVE: 'WorkspaceRules-RequireFieldsSave',
FLAG_RECEIPT_LINE_ITEMS_SAVE: 'WorkspaceRules-FlagReceiptLineItemsSave',
Expand Down
12 changes: 12 additions & 0 deletions src/ONYXKEYS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1161,6 +1161,14 @@ const ONYXKEYS = {
EXPENSE_RULE_FORM_DRAFT: 'expenseRuleFormDraft',
MERCHANT_RULE_FORM: 'merchantRuleForm',
MERCHANT_RULE_FORM_DRAFT: 'merchantRuleFormDraft',
REQUIRE_FIELDS_RULE_FORM: 'requireFieldsRuleForm',
REQUIRE_FIELDS_RULE_FORM_DRAFT: 'requireFieldsRuleFormDraft',
FLAG_FOR_REVIEW_RULE_FORM: 'flagForReviewRuleForm',
FLAG_FOR_REVIEW_RULE_FORM_DRAFT: 'flagForReviewRuleFormDraft',
MERCHANT_TYPE_RULE_FORM: 'merchantTypeRuleForm',
MERCHANT_TYPE_RULE_FORM_DRAFT: 'merchantTypeRuleFormDraft',
FLAG_FOR_REVIEW_RULE_MAX_AMOUNT_FORM: 'flagForReviewRuleMaxAmountForm',
FLAG_FOR_REVIEW_RULE_MAX_AMOUNT_FORM_DRAFT: 'flagForReviewRuleMaxAmountFormDraft',
SPEND_RULE_FORM: 'spendRuleForm',
SPEND_RULE_FORM_DRAFT: 'spendRuleFormDraft',
ADD_DOMAIN_MEMBER_FORM: 'addDomainMemberForm',
Expand Down Expand Up @@ -1318,6 +1326,10 @@ type OnyxFormValuesMapping = {
[ONYXKEYS.FORMS.SPLIT_EXPENSE_EDIT_DATES]: FormTypes.SplitExpenseEditDateForm;
[ONYXKEYS.FORMS.EXPENSE_RULE_FORM]: FormTypes.ExpenseRuleForm;
[ONYXKEYS.FORMS.MERCHANT_RULE_FORM]: FormTypes.MerchantRuleForm;
[ONYXKEYS.FORMS.REQUIRE_FIELDS_RULE_FORM]: FormTypes.RequireFieldsRuleForm;
[ONYXKEYS.FORMS.FLAG_FOR_REVIEW_RULE_FORM]: FormTypes.FlagForReviewRuleForm;
[ONYXKEYS.FORMS.MERCHANT_TYPE_RULE_FORM]: FormTypes.MerchantTypeRuleForm;
[ONYXKEYS.FORMS.FLAG_FOR_REVIEW_RULE_MAX_AMOUNT_FORM]: FormTypes.FlagForReviewRuleMaxAmountForm;
[ONYXKEYS.FORMS.SPEND_RULE_FORM]: FormTypes.SpendRuleForm;
[ONYXKEYS.FORMS.ADD_DOMAIN_MEMBER_FORM]: FormTypes.AddDomainMemberForm;
[ONYXKEYS.FORMS.ADD_WORK_EMAIL_FORM]: FormTypes.AddWorkEmailForm;
Expand Down
90 changes: 88 additions & 2 deletions src/ROUTES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import StringUtils from './libs/StringUtils';
import {getUrlWithParams} from './libs/Url';
import SCREENS from './SCREENS';
import type {Screen} from './SCREENS';
import type {ExpenseRuleFormFieldID} from './types/form/ExpenseRuleForm';
import type {CompanyCardFeedWithDomainID} from './types/onyx';
import type {ConnectionName, PolicyReportFieldType, SageIntacctMappingName} from './types/onyx/Policy';
import type {CustomFieldType} from './types/onyx/PolicyEmployee';
Expand All @@ -26,6 +27,10 @@ type WorkspaceCompanyCardsAssignCardParams = {
cardID: string;
};

function getRulesRevampRuleEditSegment(categoryName: string): string {
return `edit/${encodeURIComponent(categoryName)}`;
}

// This is a file containing constants for all the routes we want to be able to go to

/**
Expand Down Expand Up @@ -1410,13 +1415,13 @@ const ROUTES = {
SETTINGS_RULES: 'settings/rules',
SETTINGS_RULES_ADD: {
route: 'settings/rules/new/:field?/:index?',
getRoute: (field?: ValueOf<typeof CONST.EXPENSE_RULES.FIELDS>, index?: number) => {
getRoute: (field?: ExpenseRuleFormFieldID, index?: number) => {
return `settings/rules/new/${field ? StringUtils.camelToHyphenCase(field) : ''}${index !== undefined ? `/${index === -1 ? ':index' : index}` : ''}` as const;
},
},
SETTINGS_RULES_EDIT: {
route: 'settings/rules/edit/:hash/:field?/:index?',
getRoute: (hash?: string, field?: ValueOf<typeof CONST.EXPENSE_RULES.FIELDS>, index?: number) => {
getRoute: (hash?: string, field?: ExpenseRuleFormFieldID, index?: number) => {
return `settings/rules/edit/${hash ?? ':hash'}/${field ? StringUtils.camelToHyphenCase(field) : ''}${index !== undefined ? `/${index === -1 ? ':index' : index}` : ''}` as const;
},
},
Expand Down Expand Up @@ -3157,6 +3162,62 @@ const ROUTES = {
route: 'workspaces/:policyID/rules/require-fields',
getRoute: (policyID: string) => `workspaces/${policyID}/rules/require-fields` as const,
},
RULES_REQUIRE_FIELDS_RULE_NEW: {
route: 'workspaces/:policyID/rules/require-fields-rules/new',
getRoute: (policyID: string) => `workspaces/${policyID}/rules/require-fields-rules/new` as const,
},
RULES_REQUIRE_FIELDS_RULE_EDIT: {
route: 'workspaces/:policyID/rules/require-fields-rules/edit/:categoryName',
getRoute: (policyID: string, categoryName: string) => `workspaces/${policyID}/rules/require-fields-rules/${getRulesRevampRuleEditSegment(categoryName)}` as const,
},
RULES_REQUIRE_FIELDS_RULE_CATEGORY: {
route: 'workspaces/:policyID/rules/require-fields-rules/new/category',
getRoute: (policyID: string) => `workspaces/${policyID}/rules/require-fields-rules/new/category` as const,
},
RULES_REQUIRE_FIELDS_RULE_CATEGORY_EDIT: {
route: 'workspaces/:policyID/rules/require-fields-rules/edit/:categoryName/category',
getRoute: (policyID: string, categoryName: string) => `workspaces/${policyID}/rules/require-fields-rules/${getRulesRevampRuleEditSegment(categoryName)}/category` as const,
},
RULES_FLAG_FOR_REVIEW_RULE_NEW: {
route: 'workspaces/:policyID/rules/flag-for-review-rules/new',
getRoute: (policyID: string) => `workspaces/${policyID}/rules/flag-for-review-rules/new` as const,
},
RULES_FLAG_FOR_REVIEW_RULE_EDIT: {
route: 'workspaces/:policyID/rules/flag-for-review-rules/edit/:categoryName',
getRoute: (policyID: string, categoryName: string) => `workspaces/${policyID}/rules/flag-for-review-rules/${getRulesRevampRuleEditSegment(categoryName)}` as const,
},
RULES_FLAG_FOR_REVIEW_RULE_CATEGORY: {
route: 'workspaces/:policyID/rules/flag-for-review-rules/new/category',
getRoute: (policyID: string) => `workspaces/${policyID}/rules/flag-for-review-rules/new/category` as const,
},
RULES_FLAG_FOR_REVIEW_RULE_CATEGORY_EDIT: {
route: 'workspaces/:policyID/rules/flag-for-review-rules/edit/:categoryName/category',
getRoute: (policyID: string, categoryName: string) => `workspaces/${policyID}/rules/flag-for-review-rules/${getRulesRevampRuleEditSegment(categoryName)}/category` as const,
},
RULES_FLAG_FOR_REVIEW_RULE_AMOUNT: {
route: 'workspaces/:policyID/rules/flag-for-review-rules/new/amount',
getRoute: (policyID: string) => `workspaces/${policyID}/rules/flag-for-review-rules/new/amount` as const,
},
RULES_FLAG_FOR_REVIEW_RULE_AMOUNT_EDIT: {
route: 'workspaces/:policyID/rules/flag-for-review-rules/edit/:categoryName/amount',
getRoute: (policyID: string, categoryName: string) => `workspaces/${policyID}/rules/flag-for-review-rules/${getRulesRevampRuleEditSegment(categoryName)}/amount` as const,
},
RULES_FLAG_FOR_REVIEW_RULE_EXPENSE_LIMIT_TYPE: {
route: 'workspaces/:policyID/rules/flag-for-review-rules/new/expense-limit-type',
getRoute: (policyID: string) => `workspaces/${policyID}/rules/flag-for-review-rules/new/expense-limit-type` as const,
},
RULES_FLAG_FOR_REVIEW_RULE_EXPENSE_LIMIT_TYPE_EDIT: {
route: 'workspaces/:policyID/rules/flag-for-review-rules/edit/:categoryName/expense-limit-type',
getRoute: (policyID: string, categoryName: string) => `workspaces/${policyID}/rules/flag-for-review-rules/${getRulesRevampRuleEditSegment(categoryName)}/expense-limit-type` as const,
},
RULES_MERCHANT_TYPE_EDIT: {
route: 'workspaces/:policyID/rules/merchant-type-rules/:groupID',
getRoute: (policyID: string, groupID: string) => `workspaces/${policyID}/rules/merchant-type-rules/${encodeURIComponent(groupID)}` as const,
},
RULES_MERCHANT_TYPE_CATEGORY: {
route: 'workspaces/:policyID/rules/merchant-type-rules/:groupID/category',
getRoute: (policyID: string, groupID: string) => `workspaces/${policyID}/rules/merchant-type-rules/${encodeURIComponent(groupID)}/category` as const,
},
RULES_MAX_EXPENSE_AMOUNT: {
route: 'workspaces/:policyID/rules/max-expense-amount',
getRoute: (policyID: string) => `workspaces/${policyID}/rules/max-expense-amount` as const,
Expand Down Expand Up @@ -4246,7 +4307,32 @@ const SHARED_ROUTE_PARAMS: Partial<Record<Screen, string[]>> = {
} as const;

export {PUBLIC_SCREENS_ROUTES, SHARED_ROUTE_PARAMS, VERIFY_ACCOUNT, DYNAMIC_ROUTES};
function getRequireFieldsRuleCategoryRoute(policyID: string, categoryName?: string) {
if (categoryName) {
return ROUTES.RULES_REQUIRE_FIELDS_RULE_CATEGORY_EDIT.getRoute(policyID, categoryName);
}

return ROUTES.RULES_REQUIRE_FIELDS_RULE_CATEGORY.getRoute(policyID);
}

function getFlagForReviewRuleCategoryRoute(policyID: string, categoryName?: string) {
if (categoryName) {
return ROUTES.RULES_FLAG_FOR_REVIEW_RULE_CATEGORY_EDIT.getRoute(policyID, categoryName);
}

return ROUTES.RULES_FLAG_FOR_REVIEW_RULE_CATEGORY.getRoute(policyID);
}

function getFlagForReviewRuleAmountRoute(policyID: string, categoryName?: string) {
if (categoryName) {
return ROUTES.RULES_FLAG_FOR_REVIEW_RULE_AMOUNT_EDIT.getRoute(policyID, categoryName);
}

return ROUTES.RULES_FLAG_FOR_REVIEW_RULE_AMOUNT.getRoute(policyID);
}

export default ROUTES;
export {getFlagForReviewRuleAmountRoute, getFlagForReviewRuleCategoryRoute, getRequireFieldsRuleCategoryRoute};

type ReportAttachmentsRoute = typeof ROUTES.REPORT_ATTACHMENTS.route;
type ReportAddAttachmentRoute = `r/${string}/attachment/add`;
Expand Down
14 changes: 14 additions & 0 deletions src/SCREENS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -862,6 +862,20 @@ const SCREENS = {
RULES_NEW: 'Rules_New',
RULES_MERCHANT_NEW: 'Rules_Merchant_New',
RULES_SPEND_NEW: 'Rules_Spend_New',
RULES_REQUIRE_FIELDS_RULE_NEW: 'Rules_Require_Fields_Rule_New',
RULES_REQUIRE_FIELDS_RULE_EDIT: 'Rules_Require_Fields_Rule_Edit',
RULES_REQUIRE_FIELDS_RULE_CATEGORY: 'Rules_Require_Fields_Rule_Category',
RULES_REQUIRE_FIELDS_RULE_CATEGORY_EDIT: 'Rules_Require_Fields_Rule_Category_Edit',
RULES_FLAG_FOR_REVIEW_RULE_NEW: 'Rules_Flag_For_Review_Rule_New',
RULES_FLAG_FOR_REVIEW_RULE_EDIT: 'Rules_Flag_For_Review_Rule_Edit',
RULES_FLAG_FOR_REVIEW_RULE_CATEGORY: 'Rules_Flag_For_Review_Rule_Category',
RULES_FLAG_FOR_REVIEW_RULE_CATEGORY_EDIT: 'Rules_Flag_For_Review_Rule_Category_Edit',
RULES_FLAG_FOR_REVIEW_RULE_AMOUNT: 'Rules_Flag_For_Review_Rule_Amount',
RULES_FLAG_FOR_REVIEW_RULE_AMOUNT_EDIT: 'Rules_Flag_For_Review_Rule_Amount_Edit',
RULES_FLAG_FOR_REVIEW_RULE_EXPENSE_LIMIT_TYPE: 'Rules_Flag_For_Review_Rule_Expense_Limit_Type',
RULES_FLAG_FOR_REVIEW_RULE_EXPENSE_LIMIT_TYPE_EDIT: 'Rules_Flag_For_Review_Rule_Expense_Limit_Type_Edit',
RULES_MERCHANT_TYPE_EDIT: 'Rules_Merchant_Type_Edit',
RULES_MERCHANT_TYPE_CATEGORY: 'Rules_Merchant_Type_Category',
RULES_SPEND_EDIT: 'Rules_Spend_Edit',
RULES_SPEND_CARD: 'Rules_Spend_Card',
RULES_SPEND_CATEGORY: 'Rules_Spend_Category',
Expand Down
3 changes: 2 additions & 1 deletion src/components/EmptyStateComponent/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ function EmptyStateComponent({
subtitleStyles,
children,
headerStyles,
foregroundStyles,
cardStyles,
cardContentStyles,
headerContentStyles,
Expand All @@ -42,7 +43,7 @@ function EmptyStateComponent({

return (
<View style={[{minHeight: minModalHeight}, styles.flexGrow1, styles.flexShrink0, containerStyles]}>
<View style={styles.emptyStateForeground}>
<View style={[styles.emptyStateForeground, foregroundStyles]}>
<View style={[styles.emptyStateContent, cardStyles]}>
<View style={[styles.emptyStateHeader, headerStyles]}>{HeaderComponent}</View>
<View style={[styles.ph2, styles.pb2, cardContentStyles]}>
Expand Down
1 change: 1 addition & 0 deletions src/components/EmptyStateComponent/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ type EmptyStateComponentProps = {
cardStyles?: StyleProp<ViewStyle>;
cardContentStyles?: StyleProp<ViewStyle>;
headerStyles?: StyleProp<ViewStyle>;
foregroundStyles?: StyleProp<ViewStyle>;
headerContentStyles?: StyleProp<ViewStyle & ImageStyle>;
minModalHeight?: number;
subtitleText?: React.ReactNode;
Expand Down
Loading
Loading