From c7c31d9cfbedc7cfdfbacf45e082a43313b1e082 Mon Sep 17 00:00:00 2001 From: Vamsi Krishna <46787868+vamsikrishnamathala@users.noreply.github.com> Date: Tue, 15 Jul 2025 15:29:17 +0530 Subject: [PATCH] [WEB-4509] fix: layout switcher in global views #3672 --- apps/web/ee/components/views/helper.tsx | 44 ++++++++++--------------- 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/apps/web/ee/components/views/helper.tsx b/apps/web/ee/components/views/helper.tsx index c174f1e57d..572cb61420 100644 --- a/apps/web/ee/components/views/helper.tsx +++ b/apps/web/ee/components/views/helper.tsx @@ -1,5 +1,5 @@ import { useEffect } from "react"; -import { E_FEATURE_FLAGS, EIssueFilterType, EIssueLayoutTypes } from "@plane/constants"; +import { E_FEATURE_FLAGS, EIssueLayoutTypes } from "@plane/constants"; import { EIssuesStoreType } from "@plane/types"; import { TLayoutSelectionProps } from "@/ce/components/views/helper"; import { LayoutSelection } from "@/components/issues"; @@ -8,6 +8,8 @@ import { useIssues } from "@/hooks/store"; import { useFlag } from "@/plane-web/hooks/store"; import { WorkspaceGanttRoot } from "../issues/issue-layouts/gantt/root"; +const ALLOWED_LAYOUTS = [EIssueLayoutTypes.SPREADSHEET, EIssueLayoutTypes.GANTT]; + /** * @description Global view layout selection component * @param {TLayoutSelectionProps} props @@ -16,37 +18,27 @@ import { WorkspaceGanttRoot } from "../issues/issue-layouts/gantt/root"; export const GlobalViewLayoutSelection = ({ onChange, selectedLayout, workspaceSlug }: TLayoutSelectionProps) => { const isGanttLayoutEnabled = useFlag(workspaceSlug, E_FEATURE_FLAGS.GLOBAL_VIEWS_TIMELINE); - if (!isGanttLayoutEnabled) return null; - - return ( - - ); -}; - -export const WorkspaceAdditionalLayouts = (props: TWorkspaceLayoutProps) => { - const isGanttLayoutEnabled = useFlag(props.workspaceSlug, E_FEATURE_FLAGS.GLOBAL_VIEWS_TIMELINE); - const { issuesFilter: { updateFilters }, } = useIssues(EIssuesStoreType.GLOBAL); - /** To handle layout switch when downgraded */ + /** To handle layout switch when downgraded and to reset default layout to SPREADSHEET*/ useEffect(() => { - if (!isGanttLayoutEnabled && props.activeLayout === EIssueLayoutTypes.GANTT) { - updateFilters( - props.workspaceSlug, - undefined, - EIssueFilterType.DISPLAY_FILTERS, - { layout: EIssueLayoutTypes.SPREADSHEET }, - props.globalViewId - ); - } - }, [isGanttLayoutEnabled, props.activeLayout, props.workspaceSlug, props.globalViewId, updateFilters]); + const shouldSwitchToSpreadsheet = + !ALLOWED_LAYOUTS.includes(selectedLayout) || + (!isGanttLayoutEnabled && selectedLayout === EIssueLayoutTypes.GANTT); + if (shouldSwitchToSpreadsheet) { + onChange(EIssueLayoutTypes.SPREADSHEET); + } + }, [isGanttLayoutEnabled, selectedLayout, workspaceSlug, updateFilters, onChange]); + + if (!isGanttLayoutEnabled) return null; + + return ; +}; + +export const WorkspaceAdditionalLayouts = (props: TWorkspaceLayoutProps) => { switch (props.activeLayout) { case EIssueLayoutTypes.GANTT: return ;