Add Don't change option to Reimbursable and Billable rule selectors - #98074
Add Don't change option to Reimbursable and Billable rule selectors#98074MelvinBot wants to merge 3 commits into
Conversation
Co-authored-by: Qichen Zhu <QichenZhu@users.noreply.github.com>
🦜 Polyglot Parrot! 🦜Squawk! Looks like you added some shiny new English strings. Allow me to parrot them back to you in other tongues: View the translation diffdiff --git a/src/languages/el.ts b/src/languages/el.ts
index 15e3ace519a..6ab8e4c4e19 100644
--- a/src/languages/el.ts
+++ b/src/languages/el.ts
@@ -321,7 +321,6 @@ const translations: TranslationDeepObject<typeof en> = {
automatic: 'Αυτόματο',
showing: 'Εμφανίζονται',
of: 'του',
- // @context Carousel pagination counter showing the current item's position out of the total (e.g. "3 of 50").
currentOfTotal: ({current, total}: {current: number; total: number}) => `${current} από ${total}`,
default: 'Προεπιλογή',
update: 'Ενημέρωση',
@@ -7494,8 +7493,10 @@ _Για πιο αναλυτικές οδηγίες, [επισκεφθείτε τ
},
exportAgainModal: {
title: 'Προσοχή!',
- description: (reportName, connectionName) =>
- `Οι παρακάτω αναφορές έχουν ήδη εξαχθεί στο ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName]}. Είστε βέβαιοι ότι θέλετε να τις εξαγάγετε ξανά;
+ description: (
+ reportName,
+ connectionName,
+ ) => `Οι παρακάτω αναφορές έχουν ήδη εξαχθεί στο ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName]}. Είστε βέβαιοι ότι θέλετε να τις εξαγάγετε ξανά;
${reportName}`,
confirmText: 'Ναι, εξαγωγή ξανά',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index fce61c689a0..4b6f46674ac 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -43,7 +43,7 @@ const translations: TranslationDeepObject<typeof en> = {
unshare: 'Rimuovi condivisione',
yes: 'Sì',
no: 'No',
- dontChange: 'Non modificare',
+ dontChange: 'Non cambiare',
ok: 'OK',
notNow: 'Non ora',
noThanks: 'No, grazie',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index f01a7d38347..508584eb0de 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -43,7 +43,7 @@ const translations: TranslationDeepObject<typeof en> = {
unshare: 'Deixar de compartilhar',
yes: 'Sim',
no: 'Não',
- dontChange: 'Não alterar',
+ dontChange: 'Não altere',
ok: 'OK',
notNow: 'Agora não',
noThanks: 'Não, obrigado',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 82b536c4b02..e8028455686 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -43,7 +43,7 @@ const translations: TranslationDeepObject<typeof en> = {
unshare: '取消共享',
yes: '是',
no: '否',
- dontChange: '不更改',
+ dontChange: '不要更改',
ok: 'OK',
notNow: '暂不处理',
noThanks: '不用了,谢谢',
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
I looked into the failing checks — there's nothing to fix in the code. The two failing checks both require human action, not a code change:
Everything else is green: So no fix was pushed — the remaining red checks resolve once the author checklist is completed and a reviewer approves. |
|
I re-checked — the status is unchanged from my previous comment, and there's still no code failure to push a fix for. The only two red checks are both human/reviewer-gated:
All code/test checks pass: |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen_recording_20260810_165118.webmAndroid: mWeb ChromeScreen_recording_20260810_165647.webmiOS: HybridAppSimulator.Screen.Recording.-.iPhone.17.-.2026-08-10.at.14.57.23.moviOS: mWeb SafariSimulator.Screen.Recording.-.iPhone.16e.-.2026-08-10.at.16.51.06.movMacOS: Chrome / SafariScreen.Recording.2026-08-13.at.9.45.18.PM.mov |
|
|
The two failing checks aren't code problems — they both need a human, and there's nothing for me to push.
The actual CI (typecheck, ESLint, Bun/unit tests, builds, Storybook, perf, etc.) is all green, so no code fix is needed from me here. |
|
@MelvinBot, please resolve conflicts. Thanks! |
…eOption Co-authored-by: Qichen Zhu <QichenZhu@users.noreply.github.com> # Conflicts: # src/components/Rule/RuleBooleanBase.tsx
|
🤖 Resolved the conflicts and pushed the merge of The only real conflict was in let selectedItem: ValueOf<typeof CONST.SEARCH.BOOLEAN> | typeof KEEP_UNCHANGED = KEEP_UNCHANGED;
if (formValue !== undefined && formValue !== '') {The language files auto-merged cleanly. |
|
🤖 I re-checked all checks on this PR. There's no code fix to push — every automated code/CI check is now passing (typecheck, all The only two failing checks are non-code process gates that require human action, not a code change:
Neither is fixable by pushing to the branch, so I've left the code untouched. Once the checklist is completed and a review approval lands, both will clear. |
|
🤖 Re-checked — the state is unchanged from my previous comment. All automated code/CI checks are passing on the current commit (
There's nothing for me to push here; both clear once those human steps are done. |
|
🤖 Re-checked — nothing has changed since my earlier analysis. All 42 automated code/CI checks pass. The only two failing checks are non-code process gates that can't be fixed by a code push:
There's no code fix for me to make here, so I've left the branch untouched. Both clear once the checklist is completed and a review approval lands. |
|
@QichenZhu Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
|
@MelvinBot please merge main again. Thanks. |
…eOption Co-authored-by: Qichen Zhu <QichenZhu@users.noreply.github.com>
|
🤖 Merged |
|
@robertjchen Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
|
There's no code-level check failure to fix — every substantive check on this PR is now green (typecheck, all 8 The only check reporting So no fix was pushed, because there isn't a broken check to fix. Let me know if you were seeing a different failure and I'll take another look. |
QichenZhu
left a comment
There was a problem hiding this comment.
Retested, still looks good.
Explanation of Change
Adds an explicit
Don't changeoption to the Reimbursable and Billable selectors in Expense Rules, so the "leave this field unset" state is a real, discoverable choice instead of an undiscoverable "re-click the selected row to deselect" gesture.All four surfaces (personal + workspace, Reimbursable + Billable) render through the shared
RuleBooleanBasecomponent, so the change is centralized:Don't change,Yes,No— and behaves like a true radio group that cannot be cleared to nothing.Don't changeis selected by default when the field is unset, and picking it is how you unset the field (it callsonSelect(fieldID, null), the existing "no action" path). The old deselect-on-re-click branch is removed.Don't changesentinel is kept local toRuleBooleanBase(not added toCONST.SEARCH.BOOLEAN, which is shared with Search filters) so it does not leak into search.Don't changeinstead of a blank value when a field is unset — personalRulePageBaseand workspaceMerchantRulePageBase.common.dontChangetranslation key toen.tsand all target locales.Don't changemaps to the field simply being absent from the saved rule, so there is no data-model, API, or backend change — this is purely a NewDot presentation change.Fixed Issues
$ #97746
PROPOSAL: #97746 (comment)
Tests
// TODO: The human co-author must fill out / confirm the tests before marking this PR as "ready for review".
Suggested steps:
Offline tests
Same as Tests — this is a presentation-only change with no network dependency.
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]." Same as Tests.
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari