Skip to content

Commit 16de3ea

Browse files
committed
Refactor FileBrowser to use styled components
1 parent 1c4c8a5 commit 16de3ea

13 files changed

Lines changed: 144 additions & 170 deletions

File tree

src/programs/FileBrowser/DirectoryOrFile/DirectoryOrFile.scss

Whitespace-only changes.

src/programs/FileBrowser/DirectoryOrFile/DirectoryOrFile.tsx

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@ import useLocalFS, {
44
FSObject,
55
isFSDirectory,
66
} from "../../../stores/localFS";
7-
import "./DirectoryOrFile.scss";
87
import ContextMenu from "../../../components/ContextMenu/ContextMenu";
98
import { ContextMenuAction, getFSObjectContextMenu } from "../contextMenus";
10-
import { ReactComponent as FolderIcon } from "../../../assets/icons/folder-icon.svg";
9+
1110
import useBindKeyToAction from "../../../hooks/useBindKeyToAction";
1211
import AppPopup from "../../../components/AppPopup";
1312
import HeaderBar from "../../../components/HeaderBar";
1413
import Box from "../../../components/Box";
1514
import InputField from "../../../components/InputField";
1615
import Row from "../../../components/Row";
1716
import Button from "../../../components/Button";
17+
import { StyledFolderIcon, StyledItem, StyledItemName } from "./styles";
1818

1919
interface DirectoryOrFileProps {
2020
fsObject: FSObject;
@@ -47,8 +47,8 @@ function DirectoryOrFile({
4747
}
4848

4949
return (
50-
<div
51-
className={`file-browser__main-content__item ${selected ? "active" : ""}`}
50+
<StyledItem
51+
selected={selected}
5252
onDoubleClick={() => openFSObject(fsObject)}
5353
onClick={() => setSelected(fsObject.path)}
5454
key={fsObject.path}
@@ -81,13 +81,9 @@ function DirectoryOrFile({
8181
fsObject={fsObject}
8282
/>
8383
)}
84-
{isFSDirectory(fsObject) ? (
85-
<FolderIcon className="file-browser__main-content__item-icon" />
86-
) : null}
87-
<span className="file-browser__main-content__item-name">
88-
{fsObject.name}
89-
</span>
90-
</div>
84+
{isFSDirectory(fsObject) ? <StyledFolderIcon /> : null}
85+
<StyledItemName>{fsObject.name}</StyledItemName>
86+
</StyledItem>
9187
);
9288
}
9389

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import DirectoryOrFile from "./DirectoryOrFile";
2+
3+
export default DirectoryOrFile;
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import styled from "@emotion/styled";
2+
import { ReactComponent as FolderIcon } from "../../../assets/icons/folder-icon.svg";
3+
4+
export const StyledItem = styled.div<{ selected: boolean }>`
5+
width: 100%;
6+
padding: 10px;
7+
overflow-wrap: break-word;
8+
word-break: normal;
9+
box-sizing: border-box;
10+
aspect-ratio: 1/1;
11+
height: auto;
12+
display: flex;
13+
justify-content: center;
14+
align-items: center;
15+
flex-direction: column;
16+
gap: 10px;
17+
border-radius: 10px;
18+
`;
19+
20+
export const StyledItemName = styled.span``;
21+
22+
export const StyledFolderIcon = styled(FolderIcon)`
23+
height: 80%;
24+
width: 80%;
25+
path {
26+
fill: white;
27+
}
28+
`;

src/programs/FileBrowser/FileBrowser.scss

Lines changed: 0 additions & 91 deletions
This file was deleted.

src/programs/FileBrowser/FileBrowser.tsx

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,14 @@ import useLocalFSWithHistory from "../../hooks/useLocalFSWithHistory";
44
import AppSideBar from "../../components/AppSideBar";
55
import MainContent from "./MainContent";
66

7-
import "./FileBrowser.scss";
7+
import {
8+
StyledBottomBar,
9+
StyledFileBrowser,
10+
StyledTopBar,
11+
StyledTopBarButton,
12+
StyledTopBarButtons,
13+
StyledTopBarPath,
14+
} from "./styles";
815

916
const defaultPath = "/home/user";
1017

@@ -27,28 +34,17 @@ function TopBar({
2734
navBack,
2835
}: TopBarProps) {
2936
return (
30-
<div className="file-browser__top-bar">
31-
<div className="file-browser__top-bar__button-nav">
32-
<div
33-
className="file-browser__top-bar__button-nav__left"
34-
onClick={navBack}
35-
>
36-
37-
</div>
38-
<div
39-
className="file-browser__top-bar__button-nav__right"
40-
onClick={navForward}
41-
>
42-
43-
</div>
44-
</div>
45-
<input
46-
className="file-browser__top-bar__path-nav"
37+
<StyledTopBar>
38+
<StyledTopBarButtons>
39+
<StyledTopBarButton onClick={navBack}></StyledTopBarButton>
40+
<StyledTopBarButton onClick={navForward}></StyledTopBarButton>
41+
</StyledTopBarButtons>
42+
<StyledTopBarPath
4743
value={pathSearch}
4844
onChange={onPathInputChange}
4945
onKeyDown={onPathInputSubmit}
5046
/>
51-
</div>
47+
</StyledTopBar>
5248
);
5349
}
5450

@@ -75,7 +71,7 @@ function FileBrowser({ path = defaultPath }: FileBrowserProps) {
7571
}
7672

7773
return (
78-
<div className="file-browser" ref={appRef}>
74+
<StyledFileBrowser ref={appRef}>
7975
<TopBar
8076
pathSearch={pathSearch}
8177
onPathInputChange={onPathInputChange}
@@ -97,8 +93,8 @@ function FileBrowser({ path = defaultPath }: FileBrowserProps) {
9793
openFSObject={fs.navToObject}
9894
appRef={appRef}
9995
/>
100-
<div className="file-browser__bottom-bar"></div>
101-
</div>
96+
<StyledBottomBar />
97+
</StyledFileBrowser>
10298
);
10399
}
104100

src/programs/FileBrowser/FileBrowserLauncher/FileBrowserLauncher.scss

Whitespace-only changes.

src/programs/FileBrowser/FileBrowserLauncher/FileBrowserLauncher.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import FileBrowser from "..";
22
import Launcher from "../../../components/BottomBar/Launcher";
3-
import "./FileBrowserLauncher.scss";
43

54
interface FileBrowserLauncherProps {}
65

src/programs/FileBrowser/MainContent/MainContent.scss

Lines changed: 0 additions & 37 deletions
This file was deleted.

src/programs/FileBrowser/MainContent/MainContent.tsx

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@ import useLocalFS, {
44
FSObject,
55
FSObjectType,
66
} from "../../../stores/localFS";
7-
import "./MainContent.scss";
87
import { getMainContentContextItems } from "../contextMenus";
98
import AppPopup from "../../../components/AppPopup";
109
import ContextMenu from "../../../components/ContextMenu/ContextMenu";
11-
import DirectoryOrFile from "../DirectoryOrFile/DirectoryOrFile";
10+
import DirectoryOrFile from "../DirectoryOrFile";
1211
import HeaderBar from "../../../components/HeaderBar";
1312
import Box from "../../../components/Box";
1413
import InputField from "../../../components/InputField";
1514
import Row from "../../../components/Row";
1615
import Button from "../../../components/Button";
1716
import useBindKeyToAction from "../../../hooks/useBindKeyToAction";
17+
import { StyledMainContent } from "./styles";
1818

1919
interface MainContentProps {
2020
currentDirectory: FSDirectory;
@@ -40,10 +40,7 @@ function MainContent({
4040
}
4141

4242
return (
43-
<div
44-
className="file-browser__main-content"
45-
onContextMenu={handleRightClick}
46-
>
43+
<StyledMainContent onContextMenu={handleRightClick}>
4744
{contextMenuOpen && (
4845
<ContextMenu
4946
position={clickPosition.current}
@@ -70,7 +67,7 @@ function MainContent({
7067
currentDirectory={currentDirectory}
7168
/>
7269
))}
73-
</div>
70+
</StyledMainContent>
7471
);
7572
}
7673

0 commit comments

Comments
 (0)