Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 0 additions & 1 deletion src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1009,7 +1009,6 @@ const CONST = {
RILLET: 'rillet',
DUALENTRY: 'dualEntry',
INTUIT_ENTERPRISE_SUITE: 'intuitEnterpriseSuite',
RULES_REVAMP: 'rulesRevamp',
COMMUTER_EXCLUSIONS: 'commuterExclusions',
GLOBAL_REIMBURSEMENTS: 'globalReimbursements',
GLOBAL_REIMBURSEMENT_FX: 'globalReimbursementFX',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,16 +66,15 @@ export default function WorkspaceTagsTableRow({
item.name,
tagCountSubtitle,
enabledStatusLabel,
item.showRequiredSwitch && item.required ? translate('common.required') : null,
shouldShowGLCodeColumn && item.glCode ? `${translate('workspace.tags.glCode')}: ${item.glCode}` : null,
shouldShowApproverColumn && item.approverDisplayName ? `${translate('common.approver')}: ${item.approverDisplayName}` : null,
]
.filter(Boolean)
.join(', ');

const switchValue = item.showRequiredSwitch ? !!item.required : item.enabled;
const switchAccessibilityLabel = item.showRequiredSwitch ? translate('workspace.tags.requiresTag') : translate('workspace.tags.enableTag');
const handleSwitchToggle = item.showRequiredSwitch ? item.onToggleRequired : item.onToggleEnabled;
const switchValue = item.enabled;
const switchAccessibilityLabel = translate('workspace.tags.enableTag');
const handleSwitchToggle = item.onToggleEnabled;
const isSwitchControlDisabled = !!item.disabled || !!item.isSwitchDisabled;

return (
Expand Down Expand Up @@ -161,7 +160,7 @@ export default function WorkspaceTagsTableRow({
</View>
)}

{(item.showEnabledSwitch || item.showRequiredSwitch) && !!handleSwitchToggle && (
{item.showEnabledSwitch && !!handleSwitchToggle && (
<View
style={[styles.justifyContentCenter, styles.alignItemsEnd]}
{...getCellAccessibilityProps(isTableSemanticsEnabled)}
Expand Down
20 changes: 0 additions & 20 deletions src/components/Tables/WorkspaceTagsTable/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import Table from '@components/Table';
import type {TableEmptyStateProps} from '@components/Table/TableEmptyStates/TableEmptyState';

import useLocalize from '@hooks/useLocalize';
import usePermissions from '@hooks/usePermissions';
import useResponsiveLayout from '@hooks/useResponsiveLayout';
import useThemeStyles from '@hooks/useThemeStyles';

Expand All @@ -12,7 +11,6 @@ import type {AvatarSource} from '@libs/UserAvatarUtils';

import variables from '@styles/variables';

import CONST from '@src/CONST';
import type * as OnyxCommon from '@src/types/onyx/OnyxCommon';

import type {ListRenderItemInfo} from '@shopify/flash-list';
Expand Down Expand Up @@ -40,10 +38,8 @@ type WorkspaceTagTableRowData = TableData & {
isLocked: boolean;
isSwitchDisabled?: boolean;
showEnabledSwitch: boolean;
showRequiredSwitch: boolean;
action: () => void;
onToggleEnabled?: (enabled: boolean) => void;
onToggleRequired?: (required: boolean) => void;
onClose: () => void;
};

Expand Down Expand Up @@ -73,13 +69,10 @@ export default function WorkspaceTagsTable({
const styles = useThemeStyles();
const {translate, localeCompare} = useLocalize();
const {shouldUseNarrowLayout, isMediumScreenWidth} = useResponsiveLayout();
const {isBetaEnabled} = usePermissions();

const shouldUseNarrowTableLayout = shouldUseNarrowLayout || isMediumScreenWidth;
const shouldShowTagCountColumn = isMultiLevelTags && !shouldUseNarrowTableLayout;
const shouldShowEnabledColumn = !isMultiLevelTags;
// Required is configured from Rules once the revamp is on, so the rows have no switch to head.
const shouldShowRequiredColumn = isMultiLevelTags && !hasDependentTags && !isBetaEnabled(CONST.BETAS.RULES_REVAMP);

const tagTableColumns: Array<TableColumn<WorkspaceTagTableColumnKey>> = [
{
Expand Down Expand Up @@ -128,19 +121,6 @@ export default function WorkspaceTagsTable({
},
]
: []),
...(shouldShowRequiredColumn
? [
{
key: 'required' as const,
label: translate('common.required'),
sortable: true,
width: variables.tableSwitchColumnWidth,
styling: {
containerStyles: [styles.justifyContentEnd],
},
},
]
: []),
{
key: 'actions',
label: '',
Expand Down
4 changes: 1 addition & 3 deletions src/hooks/useControlOnlyRuleUpgradeRedirect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import ROUTES from '@src/ROUTES';
import {useEffect, useRef} from 'react';

import useOnyx from './useOnyx';
import usePermissions from './usePermissions';
import usePolicy from './usePolicy';

/**
Expand All @@ -24,13 +23,12 @@ import usePolicy from './usePolicy';
*/
function useControlOnlyRuleUpgradeRedirect(policyID: string, backTo?: Route) {
const policy = usePolicy(policyID);
const {isBetaEnabled} = usePermissions();
const [policyCategories] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_CATEGORIES}${policyID}`);

const isCollect = isCollectPolicy(policy);
// Mirrors the feature check in AccessOrNotFoundWrapper. When Rules itself is disabled, that wrapper already
// redirects to More features, so redirecting to the upgrade page too would flash it on the way there.
const isRulesFeatureEnabled = arePolicyRulesEnabled(policy, policyCategories, isBetaEnabled(CONST.BETAS.RULES_REVAMP));
const isRulesFeatureEnabled = arePolicyRulesEnabled(policy, policyCategories);
const hasRedirectedToUpgrade = useRef(false);
const upgradeBackTo = backTo ?? ROUTES.WORKSPACE_RULES.getRoute(policyID);

Expand Down
5 changes: 3 additions & 2 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7701,7 +7701,6 @@ Fordern Sie Spesendetails wie Belege und Beschreibungen an, legen Sie Limits und
alwaysReimbursableDescription: 'Spesen werden immer an Mitarbeitende zurückgezahlt',
alwaysNonReimbursable: 'Immer nicht erstattungsfähig',
alwaysNonReimbursableDescription: 'Auslagen werden Mitarbeitenden nie erstattet',
billableDefault: 'Standardmäßig verrechenbar',
billableDefaultDescription: 'Wähle, ob Bar- und Kreditkartenausgaben standardmäßig verrechenbar sein sollen.',
billable: 'Abrechenbar',
billableDescription: 'Spesen werden meist an Kund:innen weiterberechnet',
Expand All @@ -7728,10 +7727,12 @@ Fordern Sie Spesendetails wie Belege und Beschreibungen an, legen Sie Limits und
publicReceiptVisibilityHintDisabled: 'Belege können nur von Expensify-Mitgliedern eingesehen werden, die Zugriff auf den Bericht haben, der den Beleg enthält.',
enableTagsToUnlockTitle: 'Tags aktivieren?',
enableTagsToUnlockPrompt: 'Aktivieren Sie Tags (unter Weitere Funktionen), um dies freizuschalten.',
enableTagsAndRequirePrompt: 'Sind Sie sicher, dass Sie Tags aktivieren und für alle Ausgaben verpflichtend machen möchten?',
enableCategoriesToUnlockTitle: 'Kategorien aktivieren?',
enableCategoriesToUnlockPrompt: 'Aktivieren Sie Kategorien (unter Weitere Funktionen), um dies freizuschalten.',
enableCategoriesAndRequirePrompt: 'Sind Sie sicher, dass Sie Kategorien aktivieren und für alle Ausgaben verpflichtend machen möchten?',
enableTagsPrompt: 'Möchten Sie Tags wirklich aktivieren? Sie können sie für alle Ausgaben erforderlich machen, sobald Sie mindestens einen Tag haben.',
noTagsToRequirePrompt: 'Sie haben keine Tags. Bitte erstellen Sie einen Tag.',
noCategoriesToRequirePrompt: 'Sie haben keine Kategorien. Bitte erstellen Sie eine Kategorie.',
},
expenseReportRules: {
title: 'Erweitert',
Expand Down
5 changes: 3 additions & 2 deletions src/languages/el.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8025,7 +8025,6 @@ ${reportName}`,
alwaysReimbursableDescription: 'Τα έξοδα αποζημιώνονται πάντα στους υπαλλήλους',
alwaysNonReimbursable: 'Πάντα μη αποζημιώσιμες',
alwaysNonReimbursableDescription: 'Τα έξοδα δεν αποζημιώνονται ποτέ στους υπαλλήλους',
billableDefault: 'Προεπιλογή χρεώσιμων',
billableDefaultDescription: 'Επιλέξτε αν οι δαπάνες με μετρητά και με πιστωτική κάρτα θα είναι χρεώσιμες από προεπιλογή.',
billable: 'Χρεώσιμη',
billableDescription: 'Οι δαπάνες συνήθως τιμολογούνται ξανά στους πελάτες',
Expand All @@ -8052,10 +8051,12 @@ ${reportName}`,
publicReceiptVisibilityHintDisabled: 'Οι αποδείξεις είναι ορατές μόνο από μέλη του Expensify που έχουν πρόσβαση στην αναφορά που περιέχει την απόδειξη.',
enableTagsToUnlockTitle: 'Ενεργοποίηση ετικετών;',
enableTagsToUnlockPrompt: 'Ενεργοποιήστε τις ετικέτες (στην ενότητα «Περισσότερες δυνατότητες») για να τις ξεκλειδώσετε.',
enableTagsAndRequirePrompt: 'Είστε βέβαιοι ότι θέλετε να ενεργοποιήσετε τις ετικέτες και να τις απαιτείτε για όλες τις δαπάνες;',
enableCategoriesToUnlockTitle: 'Ενεργοποίηση κατηγοριών;',
enableCategoriesToUnlockPrompt: 'Ενεργοποιήστε τις κατηγορίες (στην ενότητα «Περισσότερες λειτουργίες») για να τις ξεκλειδώσετε.',
enableCategoriesAndRequirePrompt: 'Είστε βέβαιοι ότι θέλετε να ενεργοποιήσετε τις κατηγορίες και να τις απαιτείτε για όλες τις δαπάνες;',
enableTagsPrompt: 'Είστε βέβαιοι ότι θέλετε να ενεργοποιήσετε τις ετικέτες; Μπορείτε να τις κάνετε υποχρεωτικές για όλες τις δαπάνες μόλις έχετε τουλάχιστον μία ετικέτα.',
noTagsToRequirePrompt: 'Δεν έχετε ετικέτες. Δημιουργήστε μία ετικέτα.',
noCategoriesToRequirePrompt: 'Δεν έχετε κατηγορίες. Δημιουργήστε μια κατηγορία.',
},
expenseReportRules: {
title: 'Για προχωρημένους',
Expand Down
5 changes: 3 additions & 2 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7938,7 +7938,6 @@ const translations = {
alwaysReimbursableDescription: 'Expenses are always paid back to employees',
alwaysNonReimbursable: 'Always non-reimbursable',
alwaysNonReimbursableDescription: 'Expenses are never paid back to employees',
billableDefault: 'Billable default',
billableDefaultDescription: 'Choose whether cash and credit card expenses should be billable by default.',
billable: 'Billable',
billableDescription: 'Expenses are most often re-billed to clients',
Expand All @@ -7965,10 +7964,12 @@ const translations = {
requireCompanyCardDisabledTooltip: 'Enable Company cards (under More features) to unlock.',
enableTagsToUnlockTitle: 'Enable tags?',
enableTagsToUnlockPrompt: 'Enable Tags (under More features) to unlock.',
enableTagsAndRequirePrompt: 'Are you sure you want to enable tags and require them for all expenses?',
enableTagsPrompt: 'Are you sure you want to enable tags? You can require them for all expenses once you have at least one tag.',
noTagsToRequirePrompt: "You don't have any tags. Please create a tag.",
enableCategoriesToUnlockTitle: 'Enable categories?',
enableCategoriesToUnlockPrompt: 'Enable Categories (under More features) to unlock.',
enableCategoriesAndRequirePrompt: 'Are you sure you want to enable categories and require them for all expenses?',
noCategoriesToRequirePrompt: "You don't have any categories. Please create a category.",
},
expenseReportRules: {
title: 'Advanced',
Expand Down
5 changes: 3 additions & 2 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7673,7 +7673,6 @@ El plan Controlar empieza en 9 $ por miembro activo al mes.`,
alwaysReimbursableDescription: 'Los gastos siempre se reembolsados a los empleados',
alwaysNonReimbursable: 'Siempre no reembolsable',
alwaysNonReimbursableDescription: 'Los gastos nunca son reembolsados a los empleados',
billableDefault: 'Valor predeterminado facturable',
billableDefaultDescription: 'Elige si los gastos en efectivo y con tarjeta de crédito deben ser facturables por defecto.',
billable: 'Facturable',
billableDescription: 'Los gastos se vuelven a facturar a los clientes en la mayoría de los casos',
Expand All @@ -7700,10 +7699,12 @@ El plan Controlar empieza en 9 $ por miembro activo al mes.`,
publicReceiptVisibilityHintDisabled: 'Solo los miembros de Expensify con acceso al informe que contiene el recibo pueden ver los recibos.',
enableTagsToUnlockTitle: '¿Habilitar etiquetas?',
enableTagsToUnlockPrompt: 'Habilita las etiquetas (en Más funciones) para desbloquear.',
enableTagsAndRequirePrompt: '¿Seguro que quieres habilitar las etiquetas y hacerlas obligatorias para todos los gastos?',
enableCategoriesToUnlockTitle: '¿Habilitar categorías?',
enableCategoriesToUnlockPrompt: 'Activa Categorías (en Más funciones) para desbloquear.',
enableCategoriesAndRequirePrompt: '¿Seguro que quieres habilitar las categorías y hacerlas obligatorias para todos los gastos?',
enableTagsPrompt: '¿Seguro que quieres habilitar las etiquetas? Podrás exigirlas para todos los gastos cuando tengas al menos una etiqueta.',
noTagsToRequirePrompt: 'No tienes ninguna etiqueta. Por favor, crea una etiqueta.',
noCategoriesToRequirePrompt: 'No tienes ninguna categoría. Por favor, crea una categoría.',
},
expenseReportRules: {
title: 'Avanzado',
Expand Down
5 changes: 3 additions & 2 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7724,7 +7724,6 @@ Rendez obligatoires des informations de dépense comme les reçus et les descrip
alwaysReimbursableDescription: 'Les dépenses sont toujours remboursées aux employés',
alwaysNonReimbursable: 'Toujours non remboursable',
alwaysNonReimbursableDescription: 'Les dépenses ne sont jamais remboursées aux employés',
billableDefault: 'Facturable par défaut',
billableDefaultDescription: 'Choisissez si les dépenses en espèces et par carte de crédit doivent être facturables par défaut.',
billable: 'Facturable',
billableDescription: 'Les dépenses sont le plus souvent refacturées aux clients',
Expand All @@ -7751,10 +7750,12 @@ Rendez obligatoires des informations de dépense comme les reçus et les descrip
publicReceiptVisibilityHintDisabled: 'Les reçus ne sont visibles que par les membres Expensify ayant accès à la note de frais contenant le reçu.',
enableTagsToUnlockTitle: 'Activer les tags ?',
enableTagsToUnlockPrompt: 'Activez les tags (sous Plus de fonctionnalités) pour débloquer.',
enableTagsAndRequirePrompt: 'Voulez-vous vraiment activer les tags et les rendre obligatoires pour toutes les dépenses ?',
enableCategoriesToUnlockTitle: 'Activer les catégories ?',
enableCategoriesToUnlockPrompt: 'Activez les catégories (dans Plus de fonctionnalités) pour déverrouiller.',
enableCategoriesAndRequirePrompt: 'Voulez-vous vraiment activer les catégories et les rendre obligatoires pour toutes les dépenses ?',
enableTagsPrompt: 'Sei sicuro di voler abilitare i tag? Potrai renderli obbligatori per tutte le spese non appena avrai almeno un tag.',
noTagsToRequirePrompt: 'Non hai ancora nessun tag. Crea un tag.',
noCategoriesToRequirePrompt: 'Vous n’avez aucune catégorie. Veuillez créer une catégorie.',
},
expenseReportRules: {
title: 'Avancé',
Expand Down
5 changes: 3 additions & 2 deletions src/languages/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7668,7 +7668,6 @@ Richiedi dettagli sulle spese come ricevute e descrizioni, imposta limiti e valo
alwaysReimbursableDescription: 'Le spese sono sempre rimborsate ai dipendenti',
alwaysNonReimbursable: 'Sempre non rimborsabile',
alwaysNonReimbursableDescription: 'Le spese non vengono mai rimborsate ai dipendenti',
billableDefault: 'Fatturabile predefinito',
billableDefaultDescription: 'Scegli se le spese in contanti e con carta di credito devono essere fatturabili per impostazione predefinita.',
billable: 'Fatturabile',
billableDescription: 'Le spese sono più spesso rifatturate ai clienti',
Expand All @@ -7695,10 +7694,12 @@ Richiedi dettagli sulle spese come ricevute e descrizioni, imposta limiti e valo
publicReceiptVisibilityHintDisabled: 'Le ricevute possono essere visualizzate solo dai membri di Expensify che hanno accesso al report che contiene la ricevuta.',
enableTagsToUnlockTitle: 'Abilitare i tag?',
enableTagsToUnlockPrompt: 'Attiva i Tag (in Altre funzionalità) per sbloccare.',
enableTagsAndRequirePrompt: 'Sei sicuro di voler abilitare le etichette e renderle obbligatorie per tutte le spese?',
enableCategoriesToUnlockTitle: 'Abilitare le categorie?',
enableCategoriesToUnlockPrompt: 'Attiva Categorie (in Altre funzionalità) per sbloccare.',
enableCategoriesAndRequirePrompt: 'Sei sicuro di voler abilitare le categorie e renderle obbligatorie per tutte le spese?',
enableTagsPrompt: 'Sei sicuro di voler abilitare i tag? Potrai renderli obbligatori per tutte le spese non appena avrai almeno un tag.',
noTagsToRequirePrompt: 'Non hai ancora nessun tag. Crea un tag.',
noCategoriesToRequirePrompt: 'Non hai ancora nessuna categoria. Crea una categoria.',
},
expenseReportRules: {
title: 'Avanzate',
Expand Down
Loading
Loading