diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2024-11-07 12:40:42 -0500 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2024-11-07 12:40:42 -0500 |
commit | 03b7ccaa5c152c8d7ed73374be8ad4d4d034845b (patch) | |
tree | 7ce20a5749018fbe82c85ee1bd7c2a5c5083eb4b /extension/src/components/FolderButton.tsx | |
parent | 958ab3cd5edad8b48a3fa49e0f151b3285abdbfa (diff) | |
download | bookmarks-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.tsx | 30 |
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 |