From 4a4b82cec155edf222294f090d5349bf197bc0ec Mon Sep 17 00:00:00 2001 From: Mathias Jakobsen Date: Fri, 21 Nov 2025 11:22:13 +0000 Subject: [PATCH] Merge pull request #29797 from overleaf/mj-rail-tab-hiding-refactor [web] Refactor tab hiding GitOrigin-RevId: 29b4d1e67348a51e3c575ab2dda6e0931a90d504 --- .../components/rail/rail-overflow-dropdown.tsx | 3 ++- .../features/ide-redesign/components/rail/rail-panel.tsx | 5 ++--- .../js/features/ide-redesign/components/rail/rail.tsx | 7 +++---- .../frontend/js/features/ide-redesign/utils/rail-utils.ts | 8 ++++++++ 4 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 services/web/frontend/js/features/ide-redesign/utils/rail-utils.ts diff --git a/services/web/frontend/js/features/ide-redesign/components/rail/rail-overflow-dropdown.tsx b/services/web/frontend/js/features/ide-redesign/components/rail/rail-overflow-dropdown.tsx index 2323157dc0..abf6572bae 100644 --- a/services/web/frontend/js/features/ide-redesign/components/rail/rail-overflow-dropdown.tsx +++ b/services/web/frontend/js/features/ide-redesign/components/rail/rail-overflow-dropdown.tsx @@ -2,6 +2,7 @@ import { DropdownMenu } from '@/shared/components/dropdown/dropdown-menu' import { RailTabKey } from '../../contexts/rail-context' import { RailElement } from '../../utils/rail-types' import RailTab from './rail-tab' +import { shouldIncludeRailTab } from '../../utils/rail-utils' export default function RailOverflowDropdown({ tabs, @@ -15,7 +16,7 @@ export default function RailOverflowDropdown({ return ( {tabs - .filter(({ hide }) => !hide) + .filter(shouldIncludeRailTab) .map(({ icon, key, indicator, title, disabled }) => ( {railTabs - .filter(({ hide }) => { - return typeof hide === 'function' ? !hide() : !hide - }) + .filter(shouldIncludeRailTab) .map(({ key, component, mountOnFirstLoad }) => ( { useEffect(() => { const validTabKeys = railTabs - .filter(tab => (typeof tab.hide === 'function' ? !tab.hide() : !tab.hide)) + .filter(shouldIncludeRailTab) .map(tab => tab.key) if (!validTabKeys.includes(selectedTab) && isOpen) { // If the selected tab is no longer valid (e.g. due to permissions changes), @@ -224,9 +225,7 @@ export const RailLayout = () => {