From 03b7ccaa5c152c8d7ed73374be8ad4d4d034845b Mon Sep 17 00:00:00 2001 From: sowgro Date: Thu, 7 Nov 2024 12:40:42 -0500 Subject: Implement sorting and refactor --- extension/src/components/SettingsEditor.tsx | 105 ++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 extension/src/components/SettingsEditor.tsx (limited to 'extension/src/components/SettingsEditor.tsx') diff --git a/extension/src/components/SettingsEditor.tsx b/extension/src/components/SettingsEditor.tsx new file mode 100644 index 0000000..abf9888 --- /dev/null +++ b/extension/src/components/SettingsEditor.tsx @@ -0,0 +1,105 @@ +import RadioButtonGroup from "./RadioButtonGroup.tsx"; +import React, {useContext} from "react"; +import imageUrl from "../assets/close.svg" +import BookmarkTreeNode = browser.bookmarks.BookmarkTreeNode; +import {Settings} from "./Body.tsx"; + +/** + * A component for the settings sidebar + * + * @param props.tree The full bookmarks tree (for use in the root selector) + * @param props.isOpen State for weather the menu is open + */ +function SettingsEditor(props: {tree: BookmarkTreeNode[], isOpen: [boolean, React.Dispatch>]}) { + const [settings, setSettings] = useContext(Settings) + const [open, setOpen] = props.isOpen; + + return ( +
+ +

Settings

+ +

Sort

+ { + setSettings({...settings, sort: e}) + }}> + + + + + +
+ + +

Background Type

+ setSettings({...settings, backgroundMode: e})}> + + + + + + {(() => { + switch (settings.backgroundMode) { + case "image": + return (<> +

Background Image URL

+ setSettings({...settings, backgroundImage: e.target.value})}/> + ) + case "color": + return (<> +

Background Color

+ setSettings({...settings, backgroundColor: e.target.value})}/> + ) + } + })()} + +

Root folder

+ + + {/*
*/} + {/*sort: {settings.sort}*/} + {/*rootFolder: {settings.rootFolder}*/} + {/*bgmode: {settings.backgroundMode}*/} +
+) +} + +/** + * Walks the tree and creates a list of the folders + * + * @param tree The full tree to walk through + */ +function getFoldersFromTree(tree: BookmarkTreeNode[]) { + let folderList: BookmarkTreeNode[] = []; + rec(tree); + + function rec(tree: BookmarkTreeNode[]) { + tree.forEach(item => { + if (item.children) { + folderList.push(item); + rec(item.children); + } + }) + } + return folderList; +} + +export default SettingsEditor; \ No newline at end of file -- cgit v1.2.3