diff --git a/src/frontend/src/contexts/typesContext.tsx b/src/frontend/src/contexts/typesContext.tsx index 5c134dce0..fe1c85066 100644 --- a/src/frontend/src/contexts/typesContext.tsx +++ b/src/frontend/src/contexts/typesContext.tsx @@ -37,6 +37,7 @@ const initialValue: typesContextType = { setFilterEdge: (filter) => {}, getFilterEdge: [], saveComponent: (component: NodeDataType, key: string) => {}, + deleteComponent: (key: string) => {}, }; export const typesContext = createContext(initialValue); @@ -154,9 +155,29 @@ export function TypesProvider({ children }: { children: ReactNode }) { return newData; }); } + + function deleteComponent(key: string) { + let savedComponentsJSON: localStorageUserType = { components: {} }; + if (checkLocalStorageKey(userData?.id!)) { + let savedComponents = localStorage.getItem(userData?.id!)!; + savedComponentsJSON = JSON.parse(savedComponents); + } + let components = savedComponentsJSON.components; + delete components[key]; + savedComponentsJSON.components = components; + localStorage.setItem(userData?.id!, JSON.stringify(savedComponentsJSON)); + setData((prev) => { + let newData = _.cloneDeep(prev); + //clone to prevent reference erro + delete newData["custom_components"][key]; + return newData; + }); + } + return ( ( @@ -249,15 +251,15 @@ export default function ExtraSidebar(): JSX.Element { onDragStart(event, { //split type to remove type in nodes saved with same name removing it's type: removeCountFromString(SBItemName), - node: data[SBSectionName][SBItemName], + node: dataFilter[SBSectionName][SBItemName], }) } color={nodeColors[SBSectionName]} itemName={SBItemName} //convert error to boolean - error={!!data[SBSectionName][SBItemName].error} + error={!!dataFilter[SBSectionName][SBItemName].error} display_name={ - data[SBSectionName][SBItemName].display_name + dataFilter[SBSectionName][SBItemName].display_name } /> diff --git a/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/sideBarDraggableComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/sideBarDraggableComponent/index.tsx index 01d5064b7..0eef601d2 100644 --- a/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/sideBarDraggableComponent/index.tsx +++ b/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/sideBarDraggableComponent/index.tsx @@ -1,4 +1,4 @@ -import { DragEventHandler, useRef } from "react"; +import { DragEventHandler, useContext, useRef } from "react"; import IconComponent from "../../../../../components/genericIconComponent"; import { Select, @@ -6,6 +6,7 @@ import { SelectItem, SelectTrigger, } from "../../../../../components/ui/select-custom"; +import { typesContext } from "../../../../../contexts/typesContext"; export default function SidebarDraggableComponent({ display_name, @@ -21,9 +22,23 @@ export default function SidebarDraggableComponent({ onDragStart: DragEventHandler; }) { const open = useRef(false); + const { deleteComponent } = useContext(typesContext); + + function handleSelectChange(value: string) { + switch (value) { + case "share": + break; + case "download": + break; + case "delete": + deleteComponent(itemName); + break; + } + } return (