Skip to content

Commit 331e699

Browse files
authored
Merge pull request Expensify#86684 from Expensify/cmartins-spendRuleCreate
Add spend rule base page
2 parents 2c7026d + 8421c73 commit 331e699

43 files changed

Lines changed: 2289 additions & 25 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 1 addition & 0 deletions
Loading

src/CONST/index.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4244,6 +4244,45 @@ const CONST = {
42444244
TAX: 'tax',
42454245
},
42464246
},
4247+
SPEND_RULES: {
4248+
CATEGORIES: {
4249+
AIRLINES: 'airlines',
4250+
ALCOHOL_AND_BARS: 'alcoholAndBars',
4251+
AMAZON_AND_BOOKSTORES: 'amazonAndBookstores',
4252+
AUTOMOTIVE: 'automotive',
4253+
CAR_RENTALS: 'carRentals',
4254+
DINING: 'dining',
4255+
FUEL_AND_GAS: 'fuelAndGas',
4256+
GOVERNMENT_AND_NON_PROFITS: 'governmentAndNonProfits',
4257+
GROCERIES: 'groceries',
4258+
GYMS_AND_FITNESS: 'gymsAndFitness',
4259+
HEALTHCARE: 'healthcare',
4260+
HOTELS: 'hotels',
4261+
INTERNET_AND_PHONE: 'internetAndPhone',
4262+
OFFICE_SUPPLIES: 'officeSupplies',
4263+
PARKING_AND_TOLLS: 'parkingAndTolls',
4264+
PROFESSIONAL_SERVICES: 'professionalServices',
4265+
RETAIL: 'retail',
4266+
SHIPPING_AND_DELIVERY: 'shippingAndDelivery',
4267+
SOFTWARE: 'software',
4268+
TRANSIT_AND_RIDESHARE: 'transitAndRideshare',
4269+
TRAVEL_AGENCIES: 'travelAgencies',
4270+
},
4271+
FORM: {
4272+
FIELDS: {
4273+
CARD_IDS: 'cardIDs',
4274+
RESTRICTION_ACTION: 'restrictionAction',
4275+
MERCHANT_NAMES: 'merchantNames',
4276+
MERCHANT_MATCH_TYPES: 'merchantMatchTypes',
4277+
CATEGORIES: 'categories',
4278+
MAX_AMOUNT: 'maxAmount',
4279+
},
4280+
},
4281+
ACTION: {
4282+
ALLOW: 'allow',
4283+
BLOCK: 'block',
4284+
},
4285+
},
42474286

42484287
get SUBSCRIPTION_PRICES() {
42494288
return {
@@ -9207,6 +9246,7 @@ const CONST = {
92079246
THREE_DOT_MENU: 'WorkspaceAccounting-ThreeDotMenu',
92089247
},
92099248
RULES: {
9249+
ADD_SPEND_RULE: 'WorkspaceRules-AddSpendRule',
92109250
INDIVIDUAL_EXPENSES_MENU_ITEM: 'WorkspaceRules-IndividualExpensesMenuItem',
92119251
SPEND_RULE_ITEM: 'WorkspaceRules-SpendRuleItem',
92129252
MERCHANT_RULE_ITEM: 'WorkspaceRules-MerchantRuleItem',
@@ -9216,6 +9256,9 @@ const CONST = {
92169256
MERCHANT_RULE_PREVIEW_MATCHES: 'WorkspaceRules-MerchantRulePreviewMatches',
92179257
MERCHANT_RULE_DELETE: 'WorkspaceRules-MerchantRuleDelete',
92189258
CATEGORY_SELECTOR: 'WorkspaceRules-CategorySelector',
9259+
SPEND_RULE_SECTION_ITEM: 'WorkspaceRules-SpendRuleSectionItem',
9260+
SPEND_RULE_SAVE: 'WorkspaceRules-SpendRuleSave',
9261+
SPEND_RULE_RESTRICTION_TYPE: 'WorkspaceRules-SpendRuleRestrictionType',
92199262
},
92209263
EXPENSIFY_CARD: {
92219264
ISSUE_CARD_BUTTON: 'WorkspaceExpensifyCard-IssueCardButton',

src/ONYXKEYS.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,6 +1066,8 @@ const ONYXKEYS = {
10661066
EXPENSE_RULE_FORM_DRAFT: 'expenseRuleFormDraft',
10671067
MERCHANT_RULE_FORM: 'merchantRuleForm',
10681068
MERCHANT_RULE_FORM_DRAFT: 'merchantRuleFormDraft',
1069+
SPEND_RULE_FORM: 'spendRuleForm',
1070+
SPEND_RULE_FORM_DRAFT: 'spendRuleFormDraft',
10691071
ADD_DOMAIN_MEMBER_FORM: 'addDomainMemberForm',
10701072
ADD_DOMAIN_MEMBER_FORM_DRAFT: 'addDomainMemberFormDraft',
10711073
ADD_WORK_EMAIL_FORM: 'addWorkEmailForm',
@@ -1209,6 +1211,7 @@ type OnyxFormValuesMapping = {
12091211
[ONYXKEYS.FORMS.SPLIT_EXPENSE_EDIT_DATES]: FormTypes.SplitExpenseEditDateForm;
12101212
[ONYXKEYS.FORMS.EXPENSE_RULE_FORM]: FormTypes.ExpenseRuleForm;
12111213
[ONYXKEYS.FORMS.MERCHANT_RULE_FORM]: FormTypes.MerchantRuleForm;
1214+
[ONYXKEYS.FORMS.SPEND_RULE_FORM]: FormTypes.SpendRuleForm;
12121215
[ONYXKEYS.FORMS.ADD_DOMAIN_MEMBER_FORM]: FormTypes.AddDomainMemberForm;
12131216
[ONYXKEYS.FORMS.ADD_WORK_EMAIL_FORM]: FormTypes.AddWorkEmailForm;
12141217
};

src/ROUTES.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2999,6 +2999,30 @@ const ROUTES = {
29992999
route: 'workspaces/:policyID/rules/merchant-rules/new',
30003000
getRoute: (policyID: string) => `workspaces/${policyID}/rules/merchant-rules/new` as const,
30013001
},
3002+
RULES_SPEND_NEW: {
3003+
route: 'workspaces/:policyID/rules/spend-rules/new',
3004+
getRoute: (policyID: string) => `workspaces/${policyID}/rules/spend-rules/new` as const,
3005+
},
3006+
RULES_SPEND_CARD: {
3007+
route: 'workspaces/:policyID/rules/spend-rules/new/card',
3008+
getRoute: (policyID: string) => `workspaces/${policyID}/rules/spend-rules/new/card` as const,
3009+
},
3010+
RULES_SPEND_CATEGORY: {
3011+
route: 'workspaces/:policyID/rules/spend-rules/new/category',
3012+
getRoute: (policyID: string) => `workspaces/${policyID}/rules/spend-rules/new/category` as const,
3013+
},
3014+
RULES_SPEND_MAX_AMOUNT: {
3015+
route: 'workspaces/:policyID/rules/spend-rules/new/max-amount',
3016+
getRoute: (policyID: string) => `workspaces/${policyID}/rules/spend-rules/new/max-amount` as const,
3017+
},
3018+
RULES_SPEND_MERCHANTS: {
3019+
route: 'workspaces/:policyID/rules/spend-rules/new/merchants',
3020+
getRoute: (policyID: string) => `workspaces/${policyID}/rules/spend-rules/new/merchants` as const,
3021+
},
3022+
RULES_SPEND_MERCHANT_EDIT: {
3023+
route: 'workspaces/:policyID/rules/spend-rules/new/merchants/:merchantIndex',
3024+
getRoute: (policyID: string, merchantIndex: string) => `workspaces/${policyID}/rules/spend-rules/new/merchants/${merchantIndex}` as const,
3025+
},
30023026
RULES_MERCHANT_MERCHANT_TO_MATCH: {
30033027
route: 'workspaces/:policyID/rules/merchant-rules/:ruleID/merchant-to-match',
30043028
getRoute: (policyID: string, ruleID?: string) => `workspaces/${policyID}/rules/merchant-rules/${ruleID ?? 'new'}/merchant-to-match` as const,

src/SCREENS.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -822,6 +822,10 @@ const SCREENS = {
822822
RULES_CUSTOM: 'Rules_Custom',
823823
RULES_PROHIBITED_DEFAULT: 'Rules_Prohibited_Default',
824824
RULES_MERCHANT_NEW: 'Rules_Merchant_New',
825+
RULES_SPEND_NEW: 'Rules_Spend_New',
826+
RULES_SPEND_CARD: 'Rules_Spend_Card',
827+
RULES_SPEND_CATEGORY: 'Rules_Spend_Category',
828+
RULES_SPEND_MAX_AMOUNT: 'Rules_Spend_Max_Amount',
825829
RULES_MERCHANT_MERCHANT_TO_MATCH: 'Rules_Merchant_Merchant_To_Match',
826830
RULES_MERCHANT_MATCH_TYPE: 'Rules_Merchant_Match_Type',
827831
RULES_MERCHANT_MERCHANT: 'Rules_Merchant_Merchant',
@@ -833,6 +837,8 @@ const SCREENS = {
833837
RULES_MERCHANT_BILLABLE: 'Rules_Merchant_Billable',
834838
RULES_MERCHANT_PREVIEW_MATCHES: 'Rules_Merchant_Preview_Matches',
835839
RULES_MERCHANT_EDIT: 'Rules_Merchant_Edit',
840+
RULES_SPEND_MERCHANTS: 'Rules_Spend_Merchants',
841+
RULES_SPEND_MERCHANT_EDIT: 'Rules_Spend_Merchant_Edit',
836842
PER_DIEM: 'Per_Diem',
837843
PER_DIEM_IMPORT: 'Per_Diem_Import',
838844
PER_DIEM_IMPORTED: 'Per_Diem_Imported',

src/components/Icon/chunks/illustrations.chunk.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ import Filters from '@assets/images/simple-illustrations/simple-illustration__fi
135135
import FishbowlBlue from '@assets/images/simple-illustrations/simple-illustration__fishbowl--blue.svg';
136136
import Flash from '@assets/images/simple-illustrations/simple-illustration__flash.svg';
137137
import FolderOpen from '@assets/images/simple-illustrations/simple-illustration__folder-open.svg';
138+
import FoodTruck from '@assets/images/simple-illustrations/simple-illustration__foodtruck-tacos.svg';
138139
import Gears from '@assets/images/simple-illustrations/simple-illustration__gears.svg';
139140
import HandCard from '@assets/images/simple-illustrations/simple-illustration__handcard.svg';
140141
import HeadSet from '@assets/images/simple-illustrations/simple-illustration__headset.svg';
@@ -396,6 +397,7 @@ const Illustrations = {
396397
Target,
397398
Trophy,
398399
Trophy1,
400+
FoodTruck,
399401

400402
// Multifactor Authentication Illustrations
401403
MagnifyingGlassSpyMouthClosed,

src/components/SelectionList/BaseSelectionList.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,7 @@ function BaseSelectionList<TItem extends ListItem>({
538538
canSelectMultiple={canSelectMultiple}
539539
onSelectAll={handleSelectAll}
540540
headerStyle={style?.listHeaderWrapperStyle}
541+
selectAllTextStyle={style?.listHeaderSelectAllTextStyle}
541542
shouldShowSelectAllButton={!!onSelectAll}
542543
shouldPreventDefaultFocusOnSelectRow={shouldPreventDefaultFocusOnSelectRow}
543544
/>

0 commit comments

Comments
 (0)