aboutsummaryrefslogtreecommitdiff
path: root/extension/src/components/FolderButton.tsx
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2024-11-07 12:40:42 -0500
committersowgro <tpoke.ferrari@gmail.com>2024-11-07 12:40:42 -0500
commit03b7ccaa5c152c8d7ed73374be8ad4d4d034845b (patch)
tree7ce20a5749018fbe82c85ee1bd7c2a5c5083eb4b /extension/src/components/FolderButton.tsx
parent958ab3cd5edad8b48a3fa49e0f151b3285abdbfa (diff)
downloadbookmarks-home-03b7ccaa5c152c8d7ed73374be8ad4d4d034845b.tar.gz
bookmarks-home-03b7ccaa5c152c8d7ed73374be8ad4d4d034845b.tar.bz2
bookmarks-home-03b7ccaa5c152c8d7ed73374be8ad4d4d034845b.zip
Implement sorting and refactor
Diffstat (limited to 'extension/src/components/FolderButton.tsx')
-rw-r--r--extension/src/components/FolderButton.tsx30
1 files changed, 30 insertions, 0 deletions
diff --git a/extension/src/components/FolderButton.tsx b/extension/src/components/FolderButton.tsx
new file mode 100644
index 0000000..2d7cc9e
--- /dev/null
+++ b/extension/src/components/FolderButton.tsx
@@ -0,0 +1,30 @@
+import BookmarkTreeNode = browser.bookmarks.BookmarkTreeNode;
+import FolderBody from "./FolderBody.tsx";
+import folderIcon from "../assets/folder.svg"
+import folderIconOpen from "../assets/folder_open.svg"
+import {useState} from "react";
+
+/**
+ * A component for the button used to open a bookmark folder.
+ * This is themed the same as a bookmark
+ *
+ * @param props.data The BookmarkTreeNode containing the data of the folder
+ */
+function FolderButton(props: {data: BookmarkTreeNode}) {
+ const [folderOpen, setFolderOpen] = useState(false);
+
+ return(
+ <>
+ <a className={"bookmark draggable"} onClick={() => setFolderOpen(!folderOpen)}>
+ <img alt="Folder icon" src={folderOpen ? folderIconOpen : folderIcon}/>
+ <span>{props.data.title}</span>
+ </a>
+ { folderOpen
+ && props.data.children
+ && props.data.children.length > 0
+ && (<FolderBody data={props.data}/>)}
+ </>
+);
+}
+
+export default FolderButton \ No newline at end of file