Skip to content

Commit 8050388

Browse files
committed
feat: Added toggle for navigation pane on left side
1 parent e5263d7 commit 8050388

File tree

3 files changed

+37
-5
lines changed

3 files changed

+37
-5
lines changed

frontend/src/FileManager/BreadCrumb/BreadCrumb.jsx

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
import { useEffect, useRef, useState } from "react";
2+
import PropTypes from "prop-types";
23
import { MdHome, MdMoreHoriz, MdOutlineNavigateNext } from "react-icons/md";
4+
import { TbLayoutSidebarLeftExpand, TbLayoutSidebarLeftCollapseFilled } from "react-icons/tb";
35
import { useFileNavigation } from "../../contexts/FileNavigationContext";
46
import { useDetectOutsideClick } from "../../hooks/useDetectOutsideClick";
57
import { useTranslation } from "../../contexts/TranslationProvider";
68
import "./BreadCrumb.scss";
79

8-
const BreadCrumb = () => {
10+
const BreadCrumb = ({
11+
isNavigationPaneOpen,
12+
setNavigationPaneOpen,
13+
}) => {
914
const [folders, setFolders] = useState([]);
1015
const [hiddenFolders, setHiddenFolders] = useState([]);
1116
const [hiddenFoldersWidth, setHiddenFoldersWidth] = useState([]);
@@ -79,6 +84,15 @@ const BreadCrumb = () => {
7984
return (
8085
<div className="bread-crumb-container">
8186
<div className="breadcrumb" ref={breadCrumbRef}>
87+
<div style={{ display: "contents" }}>
88+
<span
89+
className="folder-name folder-name-btn"
90+
onClick={() => setNavigationPaneOpen((prev) => !prev)}
91+
>
92+
{isNavigationPaneOpen ? <TbLayoutSidebarLeftCollapseFilled /> : <TbLayoutSidebarLeftExpand />}
93+
</span>
94+
</div>
95+
<div style={{ width: '1px', backgroundColor: "#cfcfcf" }}></div>
8296
{folders.map((folder, index) => (
8397
<div key={index} style={{ display: "contents" }}>
8498
<span
@@ -124,4 +138,9 @@ const BreadCrumb = () => {
124138

125139
BreadCrumb.displayName = "BreadCrumb";
126140

141+
BreadCrumb.propTypes = {
142+
isNavigationPaneOpen: PropTypes.bool.isRequired,
143+
setNavigationPaneOpen: PropTypes.func.isRequired,
144+
}
145+
127146
export default BreadCrumb;

frontend/src/FileManager/FileManager.jsx

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { useColumnResize } from "../hooks/useColumnResize";
1414
import PropTypes from "prop-types";
1515
import { dateStringValidator, urlValidator } from "../validators/propValidators";
1616
import { TranslationProvider } from "../contexts/TranslationProvider";
17-
import { useMemo } from "react";
17+
import { useMemo, useState } from "react";
1818
import { defaultPermissions } from "../constants";
1919
import "./FileManager.scss";
2020

@@ -49,7 +49,9 @@ const FileManager = ({
4949
fontFamily = "Nunito Sans, sans-serif",
5050
language = "en",
5151
permissions: userPermissions = {},
52+
showNavigationPane = true,
5253
}) => {
54+
const [isNavigationPaneOpen, setNavigationPaneOpen] = useState(showNavigationPane);
5355
const triggerAction = useTriggerAction();
5456
const { containerRef, colSizes, isDragging, handleMouseMove, handleMouseUp, handleMouseDown } =
5557
useColumnResize(20, 80);
@@ -86,16 +88,25 @@ const FileManager = ({
8688
onMouseUp={handleMouseUp}
8789
className="files-container"
8890
>
89-
<div className="navigation-pane" style={{ width: colSizes.col1 + "%" }}>
91+
<div
92+
className="navigation-pane"
93+
style={{
94+
width: colSizes.col1 + "%",
95+
display: isNavigationPaneOpen ? "block" : "none",
96+
}}
97+
>
9098
<NavigationPane onFileOpen={onFileOpen} />
9199
<div
92100
className={`sidebar-resize ${isDragging ? "sidebar-dragging" : ""}`}
93101
onMouseDown={handleMouseDown}
94102
/>
95103
</div>
96104

97-
<div className="folders-preview" style={{ width: colSizes.col2 + "%" }}>
98-
<BreadCrumb />
105+
<div className="folders-preview" style={{ width: (isNavigationPaneOpen ? colSizes.col2 : 100) + "%" }}>
106+
<BreadCrumb
107+
isNavigationPaneOpen={isNavigationPaneOpen}
108+
setNavigationPaneOpen={setNavigationPaneOpen}
109+
/>
99110
<FileList
100111
onCreateFolder={onCreateFolder}
101112
onRename={onRename}
@@ -184,6 +195,7 @@ FileManager.propTypes = {
184195
download: PropTypes.bool,
185196
delete: PropTypes.bool,
186197
}),
198+
showNavigationPane: PropTypes.bool,
187199
};
188200

189201
export default FileManager;

frontend/src/FileManager/FileManager.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ svg {
8484
padding-right: 0px;
8585
padding-left: 0px;
8686
border-bottom-right-radius: 8px;
87+
border-bottom-left-radius: 8px;
8788
}
8889
}
8990
}

0 commit comments

Comments
 (0)