(null);
useOutsideClickDetector(ref, () => {
- if (themStore.sidebarCollapsed === false) {
+ if (themStore.mobileSidebarCollapsed === false) {
if (window.innerWidth < 768) {
- themStore.toggleSidebar();
+ themStore.toggleMobileSidebar();
}
}
});
- useEffect(() => {
- const handleResize = () => {
- if (window.innerWidth <= 768) {
- themStore.toggleSidebar(true);
- }
- if (window.innerWidth > 768) {
- themStore.toggleSidebar(false);
- }
- };
- handleResize();
- window.addEventListener("resize", handleResize);
- return () => {
- window.removeEventListener("resize", handleResize);
- };
- }, [themStore]);
-
return (
void;
+ toggleMobileSidebar: (collapsed?: boolean) => void;
setTheme: (theme: any) => void;
toggleProfileSidebar: (collapsed?: boolean) => void;
toggleWorkspaceAnalyticsSidebar: (collapsed?: boolean) => void;
@@ -20,6 +22,7 @@ export interface IThemeStore {
export class ThemeStore implements IThemeStore {
// observables
+ mobileSidebarCollapsed: boolean | undefined = true;
sidebarCollapsed: boolean | undefined = undefined;
theme: string | null = null;
profileSidebarCollapsed: boolean | undefined = undefined;
@@ -31,6 +34,7 @@ export class ThemeStore implements IThemeStore {
constructor(_rootStore: any | null = null) {
makeObservable(this, {
// observable
+ mobileSidebarCollapsed: observable.ref,
sidebarCollapsed: observable.ref,
theme: observable.ref,
profileSidebarCollapsed: observable.ref,
@@ -38,6 +42,7 @@ export class ThemeStore implements IThemeStore {
issueDetailSidebarCollapsed: observable.ref,
// action
toggleSidebar: action,
+ toggleMobileSidebar: action,
setTheme: action,
toggleProfileSidebar: action,
toggleWorkspaceAnalyticsSidebar: action,
@@ -61,6 +66,19 @@ export class ThemeStore implements IThemeStore {
localStorage.setItem("app_sidebar_collapsed", this.sidebarCollapsed.toString());
};
+ /**
+ * Toggle mobile sidebar collapsed state
+ * @param collapsed
+ */
+ toggleMobileSidebar = (collapsed?: boolean) => {
+ if (collapsed === undefined) {
+ this.mobileSidebarCollapsed = !this.mobileSidebarCollapsed;
+ } else {
+ this.mobileSidebarCollapsed = collapsed;
+ }
+ localStorage.setItem("mobile_sidebar_collapsed", this.mobileSidebarCollapsed.toString());
+ };
+
/**
* Toggle the profile sidebar collapsed state
* @param collapsed
@@ -88,13 +106,13 @@ export class ThemeStore implements IThemeStore {
};
toggleIssueDetailSidebar = (collapsed?: boolean) => {
- if(collapsed === undefined) {
+ 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