Skip to content

Commit 2980836

Browse files
authored
[WEB-5527] fix: extended sidebar (#8197)
1 parent 78fbdde commit 2980836

File tree

3 files changed

+28
-16
lines changed

3 files changed

+28
-16
lines changed

apps/web/app/(all)/[workspaceSlug]/(projects)/extended-project-sidebar.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useRef, useState } from "react";
1+
import { useCallback, useRef, useState } from "react";
22
import { observer } from "mobx-react";
33
import { useParams } from "next/navigation";
44
// plane imports
@@ -76,7 +76,7 @@ export const ExtendedProjectSidebar = observer(function ExtendedProjectSidebar()
7676
EUserPermissionsLevel.WORKSPACE
7777
);
7878

79-
const handleClose = () => toggleExtendedProjectSidebar(false);
79+
const handleClose = useCallback(() => toggleExtendedProjectSidebar(false), [toggleExtendedProjectSidebar]);
8080

8181
const handleCopyText = (projectId: string) => {
8282
copyUrlToClipboard(`${workspaceSlug}/projects/${projectId}/issues`).then(() => {
@@ -102,16 +102,17 @@ export const ExtendedProjectSidebar = observer(function ExtendedProjectSidebar()
102102
extendedSidebarRef={extendedProjectSidebarRef}
103103
handleClose={handleClose}
104104
excludedElementId="extended-project-sidebar-toggle"
105+
className="px-0"
105106
>
106-
<div className="flex flex-col gap-1 w-full sticky top-4 pt-0">
107+
<div className="flex flex-col gap-1 w-full sticky top-4 px-4">
107108
<div className="flex items-center justify-between">
108109
<span className="text-sm font-semibold text-custom-text-300 py-1.5">Projects</span>
109110
{isAuthorizedUser && (
110111
<Tooltip tooltipHeading={t("create_project")} tooltipContent="">
111112
<button
112113
type="button"
113114
data-ph-element={PROJECT_TRACKER_ELEMENTS.EXTENDED_SIDEBAR_ADD_BUTTON}
114-
className="p-0.5 rounded hover:bg-custom-sidebar-background-80 flex-shrink-0"
115+
className="p-0.5 rounded hover:bg-custom-sidebar-background-80 flex-shrink-0 text-custom-text-300 hover:text-custom-text-200 transition-colors"
115116
onClick={() => {
116117
setIsProjectModalOpen(true);
117118
}}
@@ -133,7 +134,7 @@ export const ExtendedProjectSidebar = observer(function ExtendedProjectSidebar()
133134
</div>
134135
</div>
135136
{filteredProjects.length === 0 ? (
136-
<div className="flex flex-col items-center mt-4 px-6 pt-10">
137+
<div className="flex flex-col items-center mt-4 p-10">
137138
<EmptyStateCompact
138139
title={t("common_empty_state.search.title")}
139140
description={t("common_empty_state.search.description")}
@@ -143,7 +144,7 @@ export const ExtendedProjectSidebar = observer(function ExtendedProjectSidebar()
143144
/>
144145
</div>
145146
) : (
146-
<div className="flex flex-col gap-0.5 overflow-x-hidden overflow-y-auto vertical-scrollbar scrollbar-sm flex-grow mt-4 pl-4">
147+
<div className="flex flex-col gap-0.5 overflow-x-hidden overflow-y-auto vertical-scrollbar scrollbar-sm flex-grow mt-4 pl-9 pr-2">
147148
{filteredProjects.map((projectId, index) => (
148149
<SidebarProjectsListItem
149150
key={projectId}

apps/web/app/(all)/[workspaceSlug]/(projects)/extended-sidebar-wrapper.tsx

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
import type { FC } from "react";
2-
import React from "react";
1+
import React, { useEffect } from "react";
32
import { observer } from "mobx-react";
43
// plane imports
54
import { EXTENDED_SIDEBAR_WIDTH, SIDEBAR_WIDTH } from "@plane/constants";
65
import { useLocalStorage } from "@plane/hooks";
76
import { cn } from "@plane/utils";
87
// hooks
8+
import { useAppTheme } from "@/hooks/store/use-app-theme";
9+
// hooks
910
import useExtendedSidebarOutsideClickDetector from "@/hooks/use-extended-sidebar-overview-outside-click";
1011

1112
type Props = {
13+
className?: string;
1214
children: React.ReactNode;
1315
extendedSidebarRef: React.RefObject<HTMLDivElement>;
1416
isExtendedSidebarOpened: boolean;
@@ -17,26 +19,35 @@ type Props = {
1719
};
1820

1921
export const ExtendedSidebarWrapper = observer(function ExtendedSidebarWrapper(props: Props) {
20-
const { children, extendedSidebarRef, isExtendedSidebarOpened, handleClose, excludedElementId } = props;
22+
const { className, children, extendedSidebarRef, isExtendedSidebarOpened, handleClose, excludedElementId } = props;
2123
// store hooks
24+
const { sidebarCollapsed } = useAppTheme();
25+
// local storage
2226
const { storedValue } = useLocalStorage("sidebarWidth", SIDEBAR_WIDTH);
2327

2428
useExtendedSidebarOutsideClickDetector(extendedSidebarRef, handleClose, excludedElementId);
2529

30+
useEffect(() => {
31+
if (sidebarCollapsed) {
32+
handleClose();
33+
}
34+
}, [sidebarCollapsed, handleClose]);
35+
2636
return (
2737
<div
2838
id={excludedElementId}
2939
ref={extendedSidebarRef}
3040
className={cn(
31-
`absolute h-full z-[21] flex flex-col py-2 transform transition-all duration-300 ease-in-out bg-custom-sidebar-background-100 border-r border-custom-sidebar-border-200 p-4 shadow-sm`,
41+
"absolute h-full z-[21] flex flex-col py-2 transform transition-all duration-300 ease-in-out bg-custom-sidebar-background-100 border-r border-custom-sidebar-border-200 p-4 shadow-sm",
3242
{
33-
"translate-x-0 opacity-100": isExtendedSidebarOpened,
34-
[`-translate-x-[${EXTENDED_SIDEBAR_WIDTH}px] opacity-0 hidden`]: !isExtendedSidebarOpened,
35-
}
43+
"opacity-100": isExtendedSidebarOpened,
44+
"opacity-0 hidden": !isExtendedSidebarOpened,
45+
},
46+
className
3647
)}
3748
style={{
3849
left: `${storedValue ?? SIDEBAR_WIDTH}px`,
39-
width: `${isExtendedSidebarOpened ? EXTENDED_SIDEBAR_WIDTH : 0}px`,
50+
width: `${EXTENDED_SIDEBAR_WIDTH}px`,
4051
}}
4152
>
4253
{children}

apps/web/app/(all)/[workspaceSlug]/(projects)/extended-sidebar.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useMemo, useRef } from "react";
1+
import { useCallback, useMemo, useRef } from "react";
22
import { observer } from "mobx-react";
33
import { useParams } from "next/navigation";
44
// plane imports
@@ -107,7 +107,7 @@ export const ExtendedAppSidebar = observer(function ExtendedAppSidebar() {
107107
if (updatedSortOrder != undefined) updateWorkspaceItemSortOrder(sourceId, updatedSortOrder);
108108
};
109109

110-
const handleClose = () => toggleExtendedSidebar(false);
110+
const handleClose = useCallback(() => toggleExtendedSidebar(false), [toggleExtendedSidebar]);
111111

112112
return (
113113
<ExtendedSidebarWrapper

0 commit comments

Comments
 (0)