Make IOURequestStepPerDiemWorkspace use new SelectionList#71976
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #71976 +/- ##
==========================================
- Coverage 35.22% 35.19% -0.03%
==========================================
Files 3290 3298 +8
Lines 107480 108205 +725
Branches 34291 34591 +300
==========================================
+ Hits 37855 38078 +223
- Misses 69440 69941 +501
- Partials 185 186 +1 📢 Thoughts on this report? Let us know! 🚀 New features to boost your workflow:
|
IOURequestStepPerDiemWorkspace use new SelectionList
|
@rushatgabhane 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] |
|
@Expensify/design FYI, same as here, I'm getting rid of the Without it:
Let me know if I should keep it instead |
In this particular case, I think it would be beneficial to actually say "Choose a workspace" as the label - otherwise it feels a little blunt to just have a list of workspaces as the first thing you see. Thoughts @Expensify/design ? |
|
Oh yes totally agree for this situation. |
|
Agree. I remember having the thought of removing it back in the day, but Danny rightfully pointed out that it helps for the reasons Shawn mentions 👍 |
|
Thanks, I will add |
|
Works for me, thanks! |
🦜 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/de.ts b/src/languages/de.ts
index 8a3b4e92..e6c34f7c 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -659,7 +659,7 @@ const translations = {
reschedule: 'Verschieben',
general: 'Allgemein',
workspacesTabTitle: 'Arbeitsbereiche',
- getTheApp: 'Hole dir die App',
+ getTheApp: 'Hol dir die App',
scanReceiptsOnTheGo: 'Scannen Sie Belege von Ihrem Telefon aus',
headsUp: 'Achtung!',
submitTo: 'Einreichen an',
@@ -1047,11 +1047,11 @@ const translations = {
upload: 'Beleg hochladen',
uploadMultiple: 'Belege hochladen',
dragReceiptBeforeEmail: 'Ziehen Sie eine Quittung auf diese Seite oder leiten Sie eine Quittung weiter an',
- dragReceiptsBeforeEmail: 'Ziehen Sie Quittungen auf diese Seite oder leiten Sie Quittungen weiter an',
+ dragReceiptsBeforeEmail: 'Ziehen Sie Belege auf diese Seite oder leiten Sie Belege weiter an',
dragReceiptAfterEmail: 'oder wählen Sie unten eine Datei zum Hochladen aus.',
dragReceiptsAfterEmail: 'oder wählen Sie unten Dateien zum Hochladen aus.',
- chooseReceipt: 'Wählen Sie eine Quittung zum Hochladen aus oder leiten Sie eine Quittung weiter an',
- chooseReceipts: 'Wählen Sie Quittungen zum Hochladen aus oder leiten Sie Quittungen weiter an ',
+ chooseReceipt: 'Wählen Sie einen Beleg zum Hochladen aus oder leiten Sie einen Beleg weiter an',
+ chooseReceipts: 'Wählen Sie Belege zum Hochladen aus oder leiten Sie Belege weiter an',
takePhoto: 'Ein Foto machen',
cameraAccess: 'Der Kamerazugriff ist erforderlich, um Fotos von Belegen zu machen.',
deniedCameraAccess: 'Kamerazugriff wurde noch nicht gewährt, bitte folgen Sie',
@@ -1466,6 +1466,7 @@ const translations = {
subtitle: 'Wählen Sie einen zusätzlichen Genehmiger für diesen Bericht, bevor wir ihn durch den Rest des Genehmigungs-Workflows leiten.',
},
},
+ chooseWorkspace: 'Wählen Sie einen Arbeitsbereich aus',
},
transactionMerge: {
listPage: {
@@ -4810,7 +4811,7 @@ const translations = {
textAlternateText: 'Fügen Sie ein Feld für die freie Texteingabe hinzu.',
dateAlternateText: 'Fügen Sie einen Kalender zur Datumauswahl hinzu.',
dropdownAlternateText: 'Fügen Sie eine Liste von Optionen zur Auswahl hinzu.',
- formulaAlternateText: 'Fügen Sie ein Formularfeld hinzu.',
+ formulaAlternateText: 'Ein Formularfeld hinzufügen.',
nameInputSubtitle: 'Wählen Sie einen Namen für das Berichtsfeld.',
typeInputSubtitle: 'Wählen Sie aus, welche Art von Berichtsfeld verwendet werden soll.',
initialValueInputSubtitle: 'Geben Sie einen Startwert ein, der im Berichtsfeld angezeigt werden soll.',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 9aa0ba3a..8186981d 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -1045,7 +1045,7 @@ const translations = {
upload: 'Télécharger le reçu',
uploadMultiple: 'Télécharger des reçus',
dragReceiptBeforeEmail: 'Faites glisser un reçu sur cette page, transférez un reçu à',
- dragReceiptsBeforeEmail: 'Faites glisser des reçus sur cette page, transférez des reçus à',
+ dragReceiptsBeforeEmail: 'Faites glisser les reçus sur cette page, transférez les reçus à',
dragReceiptAfterEmail: 'ou choisissez un fichier à télécharger ci-dessous.',
dragReceiptsAfterEmail: 'ou choisissez des fichiers à télécharger ci-dessous.',
chooseReceipt: 'Choisissez un reçu à télécharger ou transférez un reçu à',
@@ -1465,6 +1465,7 @@ const translations = {
subtitle: "Choisissez un approbateur supplémentaire pour ce rapport avant de le faire passer par le reste du flux de travail d'approbation.",
},
},
+ chooseWorkspace: 'Choisissez un espace de travail',
},
transactionMerge: {
listPage: {
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 66380497..c70f4c9b 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -1041,11 +1041,11 @@ const translations = {
upload: 'Carica ricevuta',
uploadMultiple: 'Carica ricevute',
dragReceiptBeforeEmail: 'Trascina una ricevuta su questa pagina, inoltra una ricevuta a',
- dragReceiptsBeforeEmail: 'Trascina ricevute su questa pagina, inoltra ricevute a',
- dragReceiptAfterEmail: 'oppure scegli un file da caricare qui sotto.',
- dragReceiptsAfterEmail: 'oppure scegli file da caricare qui sotto.',
+ dragReceiptsBeforeEmail: 'Trascina le ricevute su questa pagina, inoltra le ricevute a',
+ dragReceiptAfterEmail: 'o scegli un file da caricare qui sotto.',
+ dragReceiptsAfterEmail: 'oppure scegli i file da caricare qui sotto.',
chooseReceipt: 'Scegli una ricevuta da caricare o inoltra una ricevuta a',
- chooseReceipts: 'Scegli ricevute da caricare o inoltra ricevute a',
+ chooseReceipts: 'Scegli le ricevute da caricare o inoltra le ricevute a',
takePhoto: 'Scatta una foto',
cameraAccess: "L'accesso alla fotocamera è necessario per scattare foto delle ricevute.",
deniedCameraAccess: "L'accesso alla fotocamera non è ancora stato concesso, si prega di seguire",
@@ -1459,6 +1459,7 @@ const translations = {
subtitle: 'Scegli un approvatore aggiuntivo per questo report prima di instradarlo attraverso il resto del flusso di lavoro di approvazione.',
},
},
+ chooseWorkspace: "Scegli un'area di lavoro",
},
transactionMerge: {
listPage: {
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 32e82e9d..852ec270 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -1042,12 +1042,12 @@ const translations = {
receipt: {
upload: '領収書をアップロード',
uploadMultiple: '領収書をアップロード',
- dragReceiptBeforeEmail: '領収書をこのページにドラッグするか、領収書を転送する',
- dragReceiptsBeforeEmail: '領収書をこのページにドラッグするか、領収書を転送する',
- dragReceiptAfterEmail: 'または、以下にアップロードするファイルを選択してください。',
+ dragReceiptBeforeEmail: 'このページにレシートをドラッグするか、レシートを転送する',
+ dragReceiptsBeforeEmail: 'このページに領収書をドラッグするか、領収書を転送する',
+ dragReceiptAfterEmail: 'または、以下のファイルを選択してアップロードしてください。',
dragReceiptsAfterEmail: 'または、以下にアップロードするファイルを選択してください。',
chooseReceipt: 'アップロードするレシートを選択するか、レシートを転送してください',
- chooseReceipts: 'アップロードするレシートを選択するか、レシートを転送してください',
+ chooseReceipts: 'アップロードする領収書を選択するか、領収書を転送する',
takePhoto: '写真を撮る',
cameraAccess: '領収書の写真を撮るためにカメラへのアクセスが必要です。',
deniedCameraAccess: 'カメラへのアクセスがまだ許可されていません。以下の手順に従ってください。',
@@ -1237,7 +1237,7 @@ const translations = {
nextStep: '次のステップ',
finished: '完了',
sendInvoice: ({amount}: RequestAmountParams) => `${amount} 請求書を送信`,
- submitAmount: ({amount}: RequestAmountParams) => `${amount}を提出`,
+ submitAmount: ({amount}: RequestAmountParams) => `${amount}を提出する`,
expenseAmount: ({formattedAmount, comment}: RequestedAmountMessageParams) => `${formattedAmount}${comment ? `${comment} のために` : ''}`,
submitted: ({memo}: SubmittedWithMemoParams) => `提出済み${memo ? `、次のように言って ${memo}` : ''}`,
automaticallySubmitted: `<a href="${CONST.SELECT_WORKFLOWS_HELP_URL}">送信の遅延</a>を通じて送信されました`,
@@ -1460,6 +1460,7 @@ const translations = {
subtitle: '承認ワークフローの残りの部分を経由する前に、このレポートの追加の承認者を選択してください。',
},
},
+ chooseWorkspace: 'ワークスペースを選択',
},
transactionMerge: {
listPage: {
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index e5496372..65bc9e59 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -1041,11 +1041,11 @@ const translations = {
upload: 'Bonnetje uploaden',
uploadMultiple: 'Bonnetjes uploaden',
dragReceiptBeforeEmail: 'Sleep een bon naar deze pagina, stuur een bon door naar',
- dragReceiptsBeforeEmail: 'Sleep bonnen naar deze pagina, stuur bonnen door naar',
- dragReceiptAfterEmail: 'of kies hieronder een bestand om te uploaden.',
- dragReceiptsAfterEmail: 'of kies hieronder bestanden om te uploaden.',
+ dragReceiptsBeforeEmail: 'Sleep bonnen naar deze pagina, stuur bonnen naar',
+ dragReceiptAfterEmail: 'of kies een bestand om hieronder te uploaden.',
+ dragReceiptsAfterEmail: 'of kies bestanden om hieronder te uploaden.',
chooseReceipt: 'Kies een bon om te uploaden of stuur een bon door naar',
- chooseReceipts: 'Kies bonnen om te uploaden of stuur bonnen door naar',
+ chooseReceipts: 'Kies bonnen om te uploaden of stuur bonnen naar',
takePhoto: 'Maak een foto',
cameraAccess: "Cameratoegang is vereist om foto's van bonnetjes te maken.",
deniedCameraAccess: 'Camera-toegang is nog steeds niet verleend, volg alstublieft',
@@ -1235,7 +1235,7 @@ const translations = {
nextStep: 'Volgende stappen',
finished: 'Voltooid',
sendInvoice: ({amount}: RequestAmountParams) => `Verstuur ${amount} factuur`,
- submitAmount: ({amount}: RequestAmountParams) => `Verstuur ${amount}`,
+ submitAmount: ({amount}: RequestAmountParams) => `Verzend ${amount}`,
expenseAmount: ({formattedAmount, comment}: RequestedAmountMessageParams) => `${formattedAmount}${comment ? `voor ${comment}` : ''}`,
submitted: ({memo}: SubmittedWithMemoParams) => `ingediend${memo ? `, zegt ${memo}` : ''}`,
automaticallySubmitted: `ingediend via <a href="${CONST.SELECT_WORKFLOWS_HELP_URL}">vertraging indieningen</a>`,
@@ -1460,6 +1460,7 @@ const translations = {
subtitle: 'Kies een extra goedkeurder voor dit rapport voordat we het via de rest van de goedkeuringsworkflow sturen.',
},
},
+ chooseWorkspace: 'Kies een werkruimte',
},
transactionMerge: {
listPage: {
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index f776be16..965daa04 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -1040,7 +1040,7 @@ const translations = {
upload: 'Prześlij paragon',
uploadMultiple: 'Prześlij paragony',
dragReceiptBeforeEmail: 'Przeciągnij paragon na tę stronę, prześlij paragon do',
- dragReceiptsBeforeEmail: 'Przeciągnij paragony na tę stronę, prześlij paragony do',
+ dragReceiptsBeforeEmail: 'Przeciągnij paragony na tę stronę, prześlij paragony na',
dragReceiptAfterEmail: 'lub wybierz plik do przesłania poniżej.',
dragReceiptsAfterEmail: 'lub wybierz pliki do przesłania poniżej.',
chooseReceipt: 'Wybierz paragon do przesłania lub prześlij paragon do',
@@ -1234,7 +1234,7 @@ const translations = {
nextStep: 'Następne kroki',
finished: 'Zakończono',
sendInvoice: ({amount}: RequestAmountParams) => `Wyślij fakturę na kwotę ${amount}`,
- submitAmount: ({amount}: RequestAmountParams) => `Zatwierdź ${amount}`,
+ submitAmount: ({amount}: RequestAmountParams) => `Prześlij ${amount}`,
expenseAmount: ({formattedAmount, comment}: RequestedAmountMessageParams) => `${formattedAmount}${comment ? `dla ${comment}` : ''}`,
submitted: ({memo}: SubmittedWithMemoParams) => `przesłano${memo ? `, mówiąc ${memo}` : ''}`,
automaticallySubmitted: `przesłane za pomocą <a href="${CONST.SELECT_WORKFLOWS_HELP_URL}">opóźnij zgłoszenia</a>`,
@@ -1458,6 +1458,7 @@ const translations = {
subtitle: 'Wybierz dodatkowego zatwierdzającego dla tego raportu, zanim poprowadzimy go przez resztę przepływu pracy zatwierdzania.',
},
},
+ chooseWorkspace: 'Wybierz przestrzeń roboczą',
},
transactionMerge: {
listPage: {
@@ -4804,7 +4805,7 @@ const translations = {
textType: 'Tekst',
dateType: 'Data',
dropdownType: 'Lista',
- formulaType: 'Formuła',
+ formulaType: 'Formula',
textAlternateText: 'Dodaj pole do swobodnego wprowadzania tekstu.',
dateAlternateText: 'Dodaj kalendarz do wyboru daty.',
dropdownAlternateText: 'Dodaj listę opcji do wyboru.',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index aed4ddfc..bc405c94 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -660,7 +660,7 @@ const translations = {
general: 'Geral',
workspacesTabTitle: 'Workspaces',
getTheApp: 'Obtenha o aplicativo',
- scanReceiptsOnTheGo: 'Digitalize recibos com seu celular',
+ scanReceiptsOnTheGo: 'Digitalize recibos do seu celular',
headsUp: 'Atenção!',
submitTo: 'Enviar para',
forwardTo: 'Encaminhar para',
@@ -1042,7 +1042,7 @@ const translations = {
upload: 'Fazer upload de recibo',
uploadMultiple: 'Fazer upload de recibos',
dragReceiptBeforeEmail: 'Arraste um recibo para esta página, encaminhe um recibo para',
- dragReceiptsBeforeEmail: 'Arraste recibos para esta página, encaminhe recibos para',
+ dragReceiptsBeforeEmail: 'Arraste os recibos para esta página, encaminhe os recibos para',
dragReceiptAfterEmail: 'ou escolha um arquivo para enviar abaixo.',
dragReceiptsAfterEmail: 'ou escolha arquivos para enviar abaixo.',
chooseReceipt: 'Escolha um recibo para enviar ou encaminhe um recibo para',
@@ -1458,6 +1458,7 @@ const translations = {
subtitle: 'Escolha um aprovador adicional para este relatório antes de o encaminharmos através do restante do fluxo de trabalho de aprovação.',
},
},
+ chooseWorkspace: 'Escolha um espaço de trabalho',
},
transactionMerge: {
listPage: {
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index a7a8b81f..ea47df00 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -659,7 +659,7 @@ const translations = {
general: '常规',
workspacesTabTitle: '工作区',
getTheApp: '获取应用程序',
- scanReceiptsOnTheGo: '用手机扫描收据',
+ scanReceiptsOnTheGo: '从手机扫描收据',
headsUp: '注意!',
submitTo: '提交到',
forwardTo: '转发到',
@@ -1032,12 +1032,12 @@ const translations = {
receipt: {
upload: '上传收据',
uploadMultiple: '上传收据',
- dragReceiptBeforeEmail: '将收据拖到此页面上,转发收据到',
- dragReceiptsBeforeEmail: '将收据拖到此页面上,转发收据到',
- dragReceiptAfterEmail: '或选择下面的文件上传。',
+ dragReceiptBeforeEmail: '将收据拖到此页面上,或将收据转发至',
+ dragReceiptsBeforeEmail: '将收据拖到此页面上,转发收据至',
+ dragReceiptAfterEmail: '或选择一个文件上传。',
dragReceiptsAfterEmail: '或选择下面的文件上传。',
- chooseReceipt: '选择要上传的收据或转发收据到',
- chooseReceipts: '选择要上传的收据或转发收据到',
+ chooseReceipt: '选择一个收据上传或转发收据到',
+ chooseReceipts: '选择收据进行上传或转发收据到',
takePhoto: '拍照',
cameraAccess: '需要相机权限来拍摄收据照片。',
deniedCameraAccess: '相机访问权限仍未授予,请按照以下步骤操作',
@@ -1223,7 +1223,7 @@ const translations = {
nextStep: '下一步',
finished: '完成',
sendInvoice: ({amount}: RequestAmountParams) => `发送 ${amount} 发票`,
- submitAmount: ({amount}: RequestAmountParams) => `提交 ${amount}`,
+ submitAmount: ({amount}: RequestAmountParams) => `提交${amount}`,
expenseAmount: ({formattedAmount, comment}: RequestedAmountMessageParams) => `${formattedAmount}${comment ? `对于${comment}` : ''}`,
submitted: ({memo}: SubmittedWithMemoParams) => `已提交${memo ? `, 备注 ${memo}` : ''}`,
automaticallySubmitted: `通过<a href="${CONST.SELECT_WORKFLOWS_HELP_URL}">延迟提交</a>提交`,
@@ -1442,6 +1442,7 @@ const translations = {
subtitle: '在我们将此报告路由到其余审批工作流之前,为此报告选择一个额外的审批人。',
},
},
+ chooseWorkspace: '选择一个工作区',
},
transactionMerge: {
listPage: {
@@ -4716,7 +4717,7 @@ const translations = {
textType: '文本',
dateType: '日期',
dropdownType: '列表',
- formulaType: '公式',
+ formulaType: 'Formula',
textAlternateText: '添加一个字段用于自由文本输入。',
dateAlternateText: '添加日历以选择日期。',
dropdownAlternateText: '添加一个选项列表供选择。',
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
grgia
left a comment
There was a problem hiding this comment.
NAB, but why the translations change / this one as part of this PR?
Reviewer Checklist
Screenshots/VideosAndroid: mWeb ChromeMacOS: Chrome / SafariScreen.Recording.2025-10-14.at.04.58.51.movMacOS: Desktop |
|
🚀 Deployed to staging by https://github.com/grgia in version: 9.2.31-0 🚀
|
|
@GCyganek The workspace list does not have a search bar at the top when there are more than 8 workspaces (this is how it currently works for manual expenses). Is this expected for the moment or should we create a new issue about this?
|
|
I dont think it is expected, every list should have the search bar over the limit of the items |
|
🚀 Deployed to production by https://github.com/mountiny in version: 9.2.31-2 🚀
|
It looks like we haven't been showing the search bar even before the migration I did here, thanks for catching this |








Explanation of Change
Fixed Issues
$ #65655
PROPOSAL: N/A
Tests
Per diemfeatureScreen.Recording.2025-10-07.at.11.57.26.mov
Create expanseto open the Right Hand Panel and click on thePer diemtab to open the listOffline tests
QA Steps
Same as tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, 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.ScrollViewcomponent to make it scrollable when more elements are added to the page.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
Screen.Recording.2025-10-07.at.12.12.23.mov
Android: mWeb Chrome
Screen.Recording.2025-10-07.at.12.09.41.mov
iOS: Native
Screen.Recording.2025-10-07.at.12.16.08.mov
iOS: mWeb Safari
Screen.Recording.2025-10-07.at.12.17.12.mov
MacOS: Chrome / Safari
Screen.Recording.2025-10-07.at.11.52.32.mov
MacOS: Desktop
Screen.Recording.2025-10-07.at.12.07.21.mov