diff --git a/web/pages/[workspaceSlug]/projects/[projectId]/issues/[issueId].tsx b/web/pages/[workspaceSlug]/projects/[projectId]/issues/[issueId].tsx
index 6be784368..64f43939e 100644
--- a/web/pages/[workspaceSlug]/projects/[projectId]/issues/[issueId].tsx
+++ b/web/pages/[workspaceSlug]/projects/[projectId]/issues/[issueId].tsx
@@ -1,4 +1,4 @@
-import React, { ReactElement } from "react";
+import React, { ReactElement, useEffect } from "react";
import { useRouter } from "next/router";
import useSWR from "swr";
import { observer } from "mobx-react-lite";
@@ -12,7 +12,7 @@ import { Loader } from "@plane/ui";
// types
import { NextPageWithLayout } from "lib/types";
// fetch-keys
-import { useIssueDetail } from "hooks/store";
+import { useApplication, useIssueDetail } from "hooks/store";
const IssueDetailsPage: NextPageWithLayout = observer(() => {
// router
@@ -23,6 +23,7 @@ const IssueDetailsPage: NextPageWithLayout = observer(() => {
fetchIssue,
issue: { getIssueById },
} = useIssueDetail();
+ const { theme: themeStore } = useApplication();
const { isLoading } = useSWR(
workspaceSlug && projectId && issueId ? `ISSUE_DETAIL_${workspaceSlug}_${projectId}_${issueId}` : null,
@@ -34,6 +35,21 @@ const IssueDetailsPage: NextPageWithLayout = observer(() => {
const issue = getIssueById(issueId?.toString() || "") || undefined;
const issueLoader = !issue || isLoading ? true : false;
+ useEffect(() => {
+ const handleToggleIssueDetailSidebar = () => {
+ if (window && window.innerWidth < 768) {
+ themeStore.toggleIssueDetailSidebar(true);
+ }
+ if (window && themeStore.issueDetailSidebarCollapsed && window.innerWidth >= 768) {
+ themeStore.toggleIssueDetailSidebar(false);
+ }
+ };
+
+ window.addEventListener("resize", handleToggleIssueDetailSidebar);
+ handleToggleIssueDetailSidebar();
+ return () => window.removeEventListener("resize", handleToggleIssueDetailSidebar);
+ }, [themeStore]);
+
return (
<>
{issueLoader ? (
diff --git a/web/store/application/theme.store.ts b/web/store/application/theme.store.ts
index f264c175d..505f3803c 100644
--- a/web/store/application/theme.store.ts
+++ b/web/store/application/theme.store.ts
@@ -9,11 +9,13 @@ export interface IThemeStore {
sidebarCollapsed: boolean | undefined;
profileSidebarCollapsed: boolean | undefined;
workspaceAnalyticsSidebarCollapsed: boolean | undefined;
+ issueDetailSidebarCollapsed: boolean | undefined;
// actions
toggleSidebar: (collapsed?: boolean) => void;
setTheme: (theme: any) => void;
toggleProfileSidebar: (collapsed?: boolean) => void;
toggleWorkspaceAnalyticsSidebar: (collapsed?: boolean) => void;
+ toggleIssueDetailSidebar: (collapsed?: boolean) => void;
}
export class ThemeStore implements IThemeStore {
@@ -22,6 +24,7 @@ export class ThemeStore implements IThemeStore {
theme: string | null = null;
profileSidebarCollapsed: boolean | undefined = undefined;
workspaceAnalyticsSidebarCollapsed: boolean | undefined = undefined;
+ issueDetailSidebarCollapsed: boolean | undefined = undefined;
// root store
rootStore;
@@ -32,11 +35,13 @@ export class ThemeStore implements IThemeStore {
theme: observable.ref,
profileSidebarCollapsed: observable.ref,
workspaceAnalyticsSidebarCollapsed: observable.ref,
+ issueDetailSidebarCollapsed: observable.ref,
// action
toggleSidebar: action,
setTheme: action,
toggleProfileSidebar: action,
- toggleWorkspaceAnalyticsSidebar: action
+ toggleWorkspaceAnalyticsSidebar: action,
+ toggleIssueDetailSidebar: action,
// computed
});
// root store
@@ -82,6 +87,15 @@ export class ThemeStore implements IThemeStore {
localStorage.setItem("workspace_analytics_sidebar_collapsed", this.workspaceAnalyticsSidebarCollapsed.toString());
};
+ toggleIssueDetailSidebar = (collapsed?: boolean) => {
+ if(collapsed === undefined) {
+ this.issueDetailSidebarCollapsed = !this.issueDetailSidebarCollapsed;
+ } else {
+ this.issueDetailSidebarCollapsed = collapsed;
+ }
+ localStorage.setItem("issue_detail_sidebar_collapsed", this.issueDetailSidebarCollapsed.toString());
+ }
+
/**
* Sets the user theme and applies it to the platform
* @param _theme