Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
d7285fb
add selection
sumo-slonik Jan 20, 2026
9203435
UI to close domian member account
sumo-slonik Jan 20, 2026
4601683
Merge branch 'main' into domain-member-add-selection
sumo-slonik Jan 21, 2026
60f324e
run prettier
sumo-slonik Jan 21, 2026
31a1701
work in progress, add confirm modal
sumo-slonik Jan 22, 2026
e0ff766
Merge branch 'main' into domain-member-add-selection
sumo-slonik Jan 30, 2026
34f8a7b
Merge branch 'refs/heads/feat/domain-member-close-account' into domai…
sumo-slonik Jan 30, 2026
64329d6
add bulk close API call
sumo-slonik Jan 30, 2026
39f033a
Merge branch 'main' into domain-member-add-selection
jmusial Feb 4, 2026
5d11bb5
self review v1
jmusial Feb 4, 2026
a6e4b17
fix ts
jmusial Feb 4, 2026
51163e5
cleanup language files v1
jmusial Feb 4, 2026
83cf73c
cleanup language files v2
jmusial Feb 4, 2026
06fad41
Merge branch 'feat/domain-member-close-account' into domain-member-ad…
jmusial Feb 4, 2026
0b80c2b
Merge branch 'feat/domain-member-close-account' into domain-member-ad…
jmusial Feb 5, 2026
9c912e8
small refactor
jmusial Feb 5, 2026
ee18bb5
fix docs
jmusial Feb 5, 2026
8847a29
self review
jmusial Feb 5, 2026
5123632
fix title font
jmusial Feb 5, 2026
a002ceb
Merge branch 'main' into domain-member-add-selection-2
jmusial Feb 5, 2026
373c980
fix translations
jmusial Feb 5, 2026
cea5086
update after code review
jmusial Feb 6, 2026
52ea8f9
Merge branch 'main' into domain-member-add-selection-2
jmusial Feb 9, 2026
85edc33
update code style
jmusial Feb 9, 2026
e78d613
add mobile selection mode
jmusial Feb 9, 2026
fa73d74
fix flag
jmusial Feb 9, 2026
3ecbb12
update copy
jmusial Feb 10, 2026
b97061a
Merge branch 'main' into domain-member-add-selection-2
jmusial Feb 10, 2026
10b6566
update mobile button width
jmusial Feb 10, 2026
470ac18
fix review comments
jmusial Feb 11, 2026
d81375c
fix review comments
jmusial Feb 11, 2026
e40e5b0
Merge branch 'main' into domain-member-add-selection-2
jmusial Feb 11, 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
3 changes: 3 additions & 0 deletions src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8366,6 +8366,9 @@ const CONST = {
SECONDARY_ACTIONS: {
SETTINGS: 'settings',
},
BULK_ACTION_TYPES: {
CLOSE_ACCOUNT: 'closeAccount',
},
},
},

Expand Down
3 changes: 3 additions & 0 deletions src/components/ButtonWithDropdownMenu/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ type WorkspaceMemberBulkActionType = DeepValueOf<typeof CONST.POLICY.MEMBERS_BUL

type RoomMemberBulkActionType = DeepValueOf<typeof CONST.REPORT.ROOM_MEMBERS_BULK_ACTION_TYPES>;

type DomainMemberBulkActionType = DeepValueOf<typeof CONST.DOMAIN.MEMBERS.BULK_ACTION_TYPES>;

type WorkspaceDistanceRatesBulkActionType = DeepValueOf<typeof CONST.POLICY.BULK_ACTION_TYPES>;

type WorkspaceTaxRatesBulkActionType = DeepValueOf<typeof CONST.POLICY.BULK_ACTION_TYPES>;
Expand Down Expand Up @@ -167,6 +169,7 @@ type ButtonWithDropdownMenuRef = {
export type {
PaymentType,
WorkspaceMemberBulkActionType,
DomainMemberBulkActionType,
RoomMemberBulkActionType,
WorkspaceDistanceRatesBulkActionType,
DropdownOption,
Expand Down
18 changes: 13 additions & 5 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8465,12 +8465,20 @@ Hier ist ein *Testbeleg*, um dir zu zeigen, wie es funktioniert:`,
findMember: 'Mitglied finden',
addMember: 'Mitglied hinzufügen',
email: 'E-Mail-Adresse',
closeAccount: 'Konto schließen',
closeAccount: () => ({
one: 'Konto schließen',
other: 'Konten schließen',
}),
closeAccountPrompt: 'Bist du sicher? Diese Aktion ist dauerhaft.',
forceCloseAccount: 'Konto zwangsweise schließen',
safeCloseAccount: 'Konto sicher schließen',
closeAccountInfo:
'Wir empfehlen, das Konto sicher zu schließen, um das Schließen zu überspringen, falls Folgendes vorliegt: <ul><li>Ausstehende Genehmigungen</li><li>Aktive Erstattungen</li><li>Keine alternativen Anmeldemethoden</li></ul>Andernfalls können Sie die oben genannten Sicherheitsvorkehrungen ignorieren und das ausgewählte Konto zwangsweise schließen.',
forceCloseAccount: () => ({one: 'Konto zwangsweise schließen', other: 'Konten zwangsweise schließen'}),
safeCloseAccount: () => ({
one: 'Konto sicher schließen',
other: 'Konten sicher schließen',
}),
closeAccountInfo: () => ({
one: 'Wir empfehlen, das Konto sicher zu schließen, um das Schließen zu überspringen, falls Folgendes vorliegt: <ul><li>Ausstehende Genehmigungen</li><li>Aktive Erstattungen</li><li>Keine alternativen Anmeldemethoden</li></ul>Andernfalls können Sie die oben genannten Sicherheitsvorkehrungen ignorieren und das ausgewählte Konto zwangsweise schließen.',
other: 'Wir empfehlen, die Konten sicher zu schließen, um das Schließen zu überspringen, falls Folgendes vorliegt: <ul><li>Ausstehende Genehmigungen</li><li>Aktive Erstattungen</li><li>Keine alternativen Anmeldemethoden</li></ul>Andernfalls können Sie die oben genannten Sicherheitsvorkehrungen ignorieren und die ausgewählten Konten zwangsweise schließen.',
}),
error: {
removeMember: 'Dieser Benutzer kann nicht entfernt werden. Bitte versuche es erneut.',
addMember: 'Dieses Mitglied kann nicht hinzugefügt werden. Bitte versuche es erneut.',
Expand Down
18 changes: 13 additions & 5 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8405,12 +8405,20 @@ const translations = {
findMember: 'Find member',
addMember: 'Add member',
email: 'Email address',
closeAccount: 'Close account',
closeAccountPrompt: 'Are you sure? This action is permanent.',
forceCloseAccount: 'Force close account',
safeCloseAccount: 'Close account safely',
closeAccountInfo:
'We recommend closing the account safely to skip closing it in case there are: <ul><li>Pending approvals</li><li>Active reimbursements</li><li>No alternative login methods</li></ul>Otherwise, you can ignore the safety precautions above and force close the selected account.',
forceCloseAccount: () => ({one: 'Force close account', other: 'Force close accounts'}),
safeCloseAccount: () => ({
one: 'Close account safely',
other: 'Close accounts safely',
}),
closeAccountInfo: () => ({
one: 'We recommend closing the account safely to skip closing it in case there are: <ul><li>Pending approvals</li><li>Active reimbursements</li><li>No alternative login methods</li></ul>Otherwise, you can ignore the safety precautions above and force close the selected account.',
other: 'We recommend closing the accounts safely to skip closing it in case there are: <ul><li>Pending approvals</li><li>Active reimbursements</li><li>No alternative login methods</li></ul>Otherwise, you can ignore the safety precautions above and force close the selected accounts.',
}),
closeAccount: () => ({
one: 'Close account',
other: 'Close accounts',
}),
error: {
addMember: 'Unable to add this member. Please try again.',
removeMember: 'Unable to remove this user. Please try again.',
Expand Down
18 changes: 13 additions & 5 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8588,12 +8588,20 @@ ${amount} para ${merchant} - ${date}`,
findMember: 'Buscar miembro',
addMember: 'Añadir miembro',
email: 'Dirección de correo electrónico',
closeAccount: 'Cerrar cuenta',
closeAccount: () => ({
one: 'Cerrar cuenta',
other: 'Cerrar cuentas',
}),
closeAccountPrompt: '¿Estás seguro? Esta acción es permanente.',
forceCloseAccount: 'Forzar cierre de cuenta',
safeCloseAccount: 'Cierre seguro de cuenta',
closeAccountInfo:
'Recomendamos cerrar la cuenta de forma segura para omitir el cierre si hay: <ul><li>Aprobaciones pendientes</li><li>Reembolsos en curso</li><li>No hay otro método de inicio de sesión</li></ul>De lo contrario, puedes ignorar las precauciones de seguridad anteriores y forzar el cierre de las cuentas seleccionadas.',
forceCloseAccount: () => ({one: 'Forzar cierre de cuenta', other: 'Forzar cierre de cuentas'}),
safeCloseAccount: () => ({
one: 'Cierre seguro de cuenta',
other: 'Cierre seguro de cuentas',
}),
closeAccountInfo: () => ({
one: 'Recomendamos cerrar la cuenta de forma segura para omitir el cierre si hay: <ul><li>Aprobaciones pendientes</li><li>Reembolsos en curso</li><li>No hay otro método de inicio de sesión</li></ul>De lo contrario, puedes ignorar las precauciones de seguridad anteriores y forzar el cierre de la cuenta seleccionada.',
other: 'Recomendamos cerrar las cuentas de forma segura para omitir el cierre si hay: <ul><li>Aprobaciones pendientes</li><li>Reembolsos en curso</li><li>No hay otro método de inicio de sesión</li></ul>De lo contrario, puedes ignorar las precauciones de seguridad anteriores y forzar el cierre de las cuentas seleccionadas.',
}),
error: {
removeMember: 'No se pudo eliminar a este usuario. Por favor, inténtalo de nuevo.',
addMember: 'No se pudo añadir este miembro. Por favor, inténtalo de nuevo.',
Expand Down
18 changes: 13 additions & 5 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8485,12 +8485,20 @@ Voici un *reçu test* pour vous montrer comment ça fonctionne :`,
findMember: 'Trouver un membre',
addMember: 'Ajouter un membre',
email: 'Adresse e-mail',
closeAccount: 'Fermer le compte',
closeAccount: () => ({
one: 'Fermer le compte',
other: 'Fermer les comptes',
}),
closeAccountPrompt: 'Êtes-vous sûr(e) ? Cette action est définitive.',
forceCloseAccount: 'Forcer la fermeture du compte',
safeCloseAccount: 'Fermer le compte en toute sécurité',
closeAccountInfo:
'Nous recommandons de fermer le compte en toute sécurité afin d’éviter de le fermer dans le cas où il y aurait : <ul><li>Des validations en attente</li><li>Des remboursements actifs</li><li>Aucune autre méthode de connexion</li></ul>Sinon, vous pouvez ignorer les précautions de sécurité ci-dessus et forcer la fermeture du compte sélectionné.',
forceCloseAccount: () => ({one: 'Forcer la fermeture du compte', other: 'Forcer la fermeture des comptes'}),
safeCloseAccount: () => ({
one: 'Fermer le compte en toute sécurité',
other: 'Fermer les comptes en toute sécurité',
}),
closeAccountInfo: () => ({
one: 'Nous recommandons de fermer le compte en toute sécurité afin d’éviter de le fermer dans le cas où il y aurait : <ul><li>Des validations en attente</li><li>Des remboursements actifs</li><li>Aucune autre méthode de connexion</li></ul>Sinon, vous pouvez ignorer les précautions de sécurité ci-dessus et forcer la fermeture du compte sélectionné.',
other: 'Nous recommandons de fermer les comptes en toute sécurité afin d’éviter de les fermer dans le cas où il y aurait : <ul><li>Des validations en attente</li><li>Des remboursements actifs</li><li>Aucune autre méthode de connexion</li></ul>Sinon, vous pouvez ignorer les précautions de sécurité ci-dessus et forcer la fermeture des comptes sélectionnés.',
}),
error: {
removeMember: 'Impossible de supprimer cet utilisateur. Veuillez réessayer.',
addMember: 'Impossible d’ajouter ce membre. Veuillez réessayer.',
Expand Down
18 changes: 13 additions & 5 deletions src/languages/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8450,12 +8450,20 @@ Ecco una *ricevuta di prova* per mostrarti come funziona:`,
findMember: 'Trova membro',
addMember: 'Aggiungi membro',
email: 'Indirizzo email',
closeAccount: 'Chiudi account',
closeAccount: () => ({
one: 'Chiudi account',
other: 'Chiudi account',
}),
closeAccountPrompt: 'Sei sicuro? Questa azione è permanente.',
forceCloseAccount: 'Forza chiusura account',
safeCloseAccount: 'Chiudi il conto in sicurezza',
closeAccountInfo:
'Consigliamo di chiudere l’account in modo sicuro per evitare problemi in caso di: <ul><li>Approvazioni in sospeso</li><li>Rimborsi attivi</li><li>Nessun metodo di accesso alternativo</li></ul>In caso contrario, puoi ignorare le precauzioni di sicurezza sopra indicate e forzare la chiusura dell’account selezionato.',
forceCloseAccount: () => ({one: 'Forza chiusura account', other: 'Forza chiusura account'}),
safeCloseAccount: () => ({
one: 'Chiudi il conto in sicurezza',
other: 'Chiudi i conti in sicurezza',
}),
closeAccountInfo: () => ({
one: 'Consigliamo di chiudere l’account in modo sicuro per evitare problemi in caso di: <ul><li>Approvazioni in sospeso</li><li>Rimborsi attivi</li><li>Nessun metodo di accesso alternativo</li></ul>In caso contrario, puoi ignorare le precauzioni di sicurezza sopra indicate e forzare la chiusura dell’account selezionato.',
other: 'Consigliamo di chiudere gli account in modo sicuro per evitare problemi in caso di: <ul><li>Approvazioni in sospeso</li><li>Rimborsi attivi</li><li>Nessun metodo di accesso alternativo</li></ul>In caso contrario, puoi ignorare le precauzioni di sicurezza sopra indicate e forzare la chiusura degli account selezionati.',
}),
error: {
removeMember: 'Impossibile rimuovere questo utente. Riprova.',
addMember: 'Impossibile aggiungere questo membro. Riprova.',
Expand Down
18 changes: 13 additions & 5 deletions src/languages/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8372,12 +8372,20 @@ ${reportName}
findMember: 'メンバーを検索',
addMember: 'メンバーを追加',
email: 'メールアドレス',
closeAccount: 'アカウントを閉じる',
closeAccount: () => ({
one: 'アカウントを閉じる',
other: 'アカウントを閉じる',
}),
closeAccountPrompt: '本当によろしいですか?この操作は元に戻せません。',
forceCloseAccount: 'アカウントを強制的に閉鎖',
safeCloseAccount: 'アカウントを安全に閉じる',
closeAccountInfo:
'保留中の承認、処理中の精算、代替ログイン方法がない場合などでもアカウントを閉鎖できるように、安全にアカウントを閉鎖することを推奨します: <ul><li>保留中の承認</li><li>進行中の払い戻し</li><li>代替ログイン方法なし</li></ul>それ以外の場合は、上記の安全上の注意を無視して、選択したアカウントを強制的に閉鎖できます。',
forceCloseAccount: () => ({one: 'アカウントを強制的に閉鎖', other: 'アカウントを強制的に閉鎖'}),
safeCloseAccount: () => ({
one: 'アカウントを安全に閉じる',
other: 'アカウントを安全に閉じる',
}),
closeAccountInfo: () => ({
one: '保留中の承認、処理中の精算、代替ログイン方法がない場合などでもアカウントを閉鎖できるように、安全にアカウントを閉鎖することを推奨します: <ul><li>保留中の承認</li><li>進行中の払い戻し</li><li>代替ログイン方法なし</li></ul>それ以外の場合は、上記の安全上の注意を無視して、選択したアカウントを強制的に閉鎖できます。',
other: '保留中の承認、処理中の精算、代替ログイン方法がない場合などでもアカウントを閉鎖できるように、安全にアカウントを閉鎖することを推奨します: <ul><li>保留中の承認</li><li>進行中の払い戻し</li><li>代替ログイン方法なし</li></ul>それ以外の場合は、上記の安全上の注意を無視して、選択したアカウントを強制的に閉鎖できます。',
}),
error: {
removeMember: 'このユーザーを削除できません。もう一度お試しください。',
addMember: 'このメンバーを追加できませんでした。もう一度お試しください。',
Expand Down
18 changes: 13 additions & 5 deletions src/languages/nl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8435,12 +8435,20 @@ Hier is een *proefbon* om je te laten zien hoe het werkt:`,
findMember: 'Lid zoeken',
addMember: 'Lid toevoegen',
email: 'E-mailadres',
closeAccount: 'Account sluiten',
closeAccount: () => ({
one: 'Account sluiten',
other: 'Accounts sluiten',
}),
closeAccountPrompt: 'Weet je het zeker? Deze actie is permanent.',
forceCloseAccount: 'Account geforceerd sluiten',
safeCloseAccount: 'Account veilig sluiten',
closeAccountInfo:
'We raden aan om de account veilig te sluiten om te vermijden dat je deze moet sluiten als er zijn: <ul><li>Openstaande goedkeuringen</li><li>Actieve terugbetalingen</li><li>Geen alternatieve inlogmethoden</li></ul>Anders kun je de bovenstaande veiligheidsmaatregelen negeren en de geselecteerde account geforceerd sluiten.',
forceCloseAccount: () => ({one: 'Account geforceerd sluiten', other: 'Accounts geforceerd sluiten'}),
safeCloseAccount: () => ({
one: 'Account veilig sluiten',
other: 'Accounts veilig sluiten',
}),
closeAccountInfo: () => ({
one: 'We raden aan om de account veilig te sluiten om te vermijden dat je deze moet sluiten als er zijn: <ul><li>Openstaande goedkeuringen</li><li>Actieve terugbetalingen</li><li>Geen alternatieve inlogmethoden</li></ul>Anders kun je de bovenstaande veiligheidsmaatregelen negeren en de geselecteerde account geforceerd sluiten.',
other: 'We raden aan om de accounts veilig te sluiten om te vermijden dat je deze moet sluiten als er zijn: <ul><li>Openstaande goedkeuringen</li><li>Actieve terugbetalingen</li><li>Geen alternatieve inlogmethoden</li></ul>Anders kun je de bovenstaande veiligheidsmaatregelen negeren en de geselecteerde accounts geforceerd sluiten.',
}),
error: {
removeMember: 'Kan deze gebruiker niet verwijderen. Probeer het opnieuw.',
addMember: 'Kan dit lid niet toevoegen. Probeer het opnieuw.',
Expand Down
18 changes: 13 additions & 5 deletions src/languages/pl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8414,12 +8414,20 @@ Oto *paragon testowy*, żeby pokazać Ci, jak to działa:`,
findMember: 'Znajdź członka',
addMember: 'Dodaj członka',
email: 'Adres e-mail',
closeAccount: 'Zamknij konto',
closeAccount: () => ({
one: 'Zamknij konto',
other: 'Zamknij konta',
}),
closeAccountPrompt: 'Czy na pewno? Ta czynność jest nieodwracalna.',
forceCloseAccount: 'Wymuś zamknięcie konta',
safeCloseAccount: 'Zamknij konto bezpiecznie',
closeAccountInfo:
'Zalecamy bezpieczne zamknięcie konta, aby pominąć jego zamykanie w przypadku, gdy występują: <ul><li>Oczekujące zatwierdzenia</li><li>Aktywne zwroty kosztów</li><li>Brak alternatywnych metod logowania</li></ul>W przeciwnym razie możesz zignorować powyższe środki ostrożności i wymusić zamknięcie wybranego konta.',
forceCloseAccount: () => ({one: 'Wymuś zamknięcie konta', other: 'Wymuś zamknięcie kont'}),
safeCloseAccount: () => ({
one: 'Zamknij konto bezpiecznie',
other: 'Zamknij konta bezpiecznie',
}),
closeAccountInfo: () => ({
one: 'Zalecamy bezpieczne zamknięcie konta, aby pominąć jego zamykanie w przypadku, gdy występują: <ul><li>Oczekujące zatwierdzenia</li><li>Aktywne zwroty kosztów</li><li>Brak alternatywnych metod logowania</li></ul>W przeciwnym razie możesz zignorować powyższe środki ostrożności i wymusić zamknięcie wybranego konta.',
other: 'Zalecamy bezpieczne zamknięcie kont, aby pominąć ich zamykanie w przypadku, gdy występują: <ul><li>Oczekujące zatwierdzenia</li><li>Aktywne zwroty kosztów</li><li>Brak alternatywnych metod logowania</li></ul>W przeciwnym razie możesz zignorować powyższe środki ostrożności i wymusić zamknięcie wybranych kont.',
}),
error: {
removeMember: 'Nie można usunąć tego użytkownika. Spróbuj ponownie.',
addMember: 'Nie można dodać tego członka. Spróbuj ponownie.',
Expand Down
Loading
Loading