aboutsummaryrefslogtreecommitdiff
path: root/extension/src/components/ContextMenu.tsx
diff options
context:
space:
mode:
authorTyler Ferrari <69283684+Sowgro@users.noreply.github.com>2024-12-17 11:25:44 -0500
committerGitHub <noreply@github.com>2024-12-17 11:25:44 -0500
commit69b7a1fae3aa7ed474877889cd68b8a6415480d7 (patch)
tree6b3d111f4bc0915e36937476177a2bf8f67c2fb3 /extension/src/components/ContextMenu.tsx
parenta2689fd6ed8f39d4aee98ad193973c743ec1ae4d (diff)
parent1ca4340e46f7fec3d2689cb8a3c60f9018ead048 (diff)
downloadbookmarks-home-69b7a1fae3aa7ed474877889cd68b8a6415480d7.tar.gz
bookmarks-home-69b7a1fae3aa7ed474877889cd68b8a6415480d7.tar.bz2
bookmarks-home-69b7a1fae3aa7ed474877889cd68b8a6415480d7.zip
Merge pull request #2 from ATO-b2/drag-n-drop
Drag n drop
Diffstat (limited to 'extension/src/components/ContextMenu.tsx')
-rw-r--r--extension/src/components/ContextMenu.tsx51
1 files changed, 51 insertions, 0 deletions
diff --git a/extension/src/components/ContextMenu.tsx b/extension/src/components/ContextMenu.tsx
new file mode 100644
index 0000000..058e9ba
--- /dev/null
+++ b/extension/src/components/ContextMenu.tsx
@@ -0,0 +1,51 @@
+import DeleteIcon from "../assets/delete.svg?react";
+import EditIcon from "../assets/edit.svg?react";
+import DragIcon from "../assets/drag.svg?react";
+import MoreIcon from "../assets/more.svg?react";
+import React, {useEffect, useState} from "react";
+
+function ContextMenu(props: {onEdit: (e: React.MouseEvent<HTMLButtonElement>) => void, onDelete: (e: React.MouseEvent<HTMLButtonElement>) => void}) {
+ const [open, setOpen] = useState(false)
+
+ useEffect(() => {
+ let evl = () => {
+ console.log("clicked")
+ open && setOpen(false);
+ console.log("evl unregistered")
+ document.body.removeEventListener('click', evl);
+ }
+ if (open) {
+ console.log("evl registered")
+ document.body.addEventListener('click', evl);
+ }
+ }, [open]);
+
+ return (
+ <div className={"overflow"}>
+ <button onClick={e => {
+ e.preventDefault();
+ setOpen(!open);
+ }}>
+ <MoreIcon/>
+ </button>
+ {open && <div className={"context-menu"}>
+ <button onClick={e => {
+ setOpen(false);
+ props.onEdit(e);
+ }}>
+ <EditIcon />
+ Edit
+ </button>
+ <button className={"del"} onClick={e => {
+ setOpen(false);
+ props.onDelete(e);
+ }}>
+ <DeleteIcon/>
+ Delete
+ </button>
+ </div>}
+ </div>
+ )
+}
+
+export default ContextMenu; \ No newline at end of file