From b97c25d3c71bff27f5aaf1eacad26cb7e256e95c Mon Sep 17 00:00:00 2001 From: anovazzi1 Date: Fri, 27 Oct 2023 08:52:50 -0300 Subject: [PATCH] fix(extraSidebarComponent): remove unnecessary dependency from useEffect hook feat(extraSidebarComponent): add support for tags selection in the extra sidebar component fix(nodeToolbarComponent): add missing import statements for new components feat(nodeToolbarComponent): add support for tags selection and public/private toggle in the node toolbar component --- .../extraSidebarComponent/index.tsx | 8 +-- .../components/nodeToolbarComponent/index.tsx | 53 +++++++++++++++++-- 2 files changed, 53 insertions(+), 8 deletions(-) diff --git a/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/index.tsx index ba516f7b7..5935badf7 100644 --- a/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/index.tsx +++ b/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/index.tsx @@ -60,7 +60,7 @@ export default function ExtraSidebar(): JSX.Element { useEffect(() => { //TODO: get tags from api setTags(["teste1", "teste2"]); - }, [setTags]); + }, []); function handleTagSelection(tag: string) { setSelectedTags((prev) => { @@ -224,8 +224,8 @@ export default function ExtraSidebar(): JSX.Element {
Add some tags to your Flow
@@ -238,7 +238,7 @@ export default function ExtraSidebar(): JSX.Element { ), - [sharePublic] + [sharePublic, tags, selectedTags] ); const ExportMemo = useMemo( diff --git a/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx index 340ca36e3..0f63c2c52 100644 --- a/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx +++ b/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx @@ -1,8 +1,10 @@ import { cloneDeep } from "lodash"; -import { useContext, useState } from "react"; +import { useContext, useEffect, useState } from "react"; import { useReactFlow, useUpdateNodeInternals } from "reactflow"; import ShadTooltip from "../../../../components/ShadTooltipComponent"; import IconComponent from "../../../../components/genericIconComponent"; +import { TagsSelector } from "../../../../components/tagsSelectorComponent"; +import ToggleShadComponent from "../../../../components/toggleShadComponent"; import { Select, SelectContent, @@ -67,6 +69,26 @@ export default function NodeToolbarComponent({ const [showModalAdvanced, setShowModalAdvanced] = useState(false); const [showconfirmShare, setShowconfirmShare] = useState(false); const [selectedValue, setSelectedValue] = useState(""); + const [sharePublic, setSharePublic] = useState(true); + const [tags, setTags] = useState([]); + const [selectedTags, setSelectedTags] = useState>(new Set()); + + useEffect(() => { + //TODO: get tags from api + setTags(["teste1", "teste2"]); + }, []); + + function handleTagSelection(tag: string) { + setSelectedTags((prev) => { + const newSet = new Set(prev); + if (newSet.has(tag)) { + newSet.delete(tag); + } else { + newSet.add(tag); + } + return newSet; + }); + } function handleShareComponent() { const componentFlow = cloneDeep(data); @@ -279,6 +301,7 @@ export default function NodeToolbarComponent({ - - This component will be available for everyone to use. - +
+
+ +
+ {sharePublic + ? "This component will be avaliable for everyone" + : "This component will be avaliable just for you"} +
+
+
+ + Add some tags to your component + + +
+
{" "}