From 41e5052da17a093425b9ddfca061f0ee04ddf0f6 Mon Sep 17 00:00:00 2001 From: anovazzi1 Date: Wed, 22 Feb 2023 18:18:45 -0300 Subject: [PATCH] delete tabs working --- space_flow/src/contexts/tabsContext.tsx | 27 ++++++++++++---- .../src/pages/FlowPage/flowManager/index.tsx | 5 ++- .../flowManager/tabComponent/index.tsx | 32 ++++++++++++------- space_flow/src/pages/FlowPage/index.tsx | 2 +- 4 files changed, 45 insertions(+), 21 deletions(-) diff --git a/space_flow/src/contexts/tabsContext.tsx b/space_flow/src/contexts/tabsContext.tsx index fb8de09f7..fbe5a3d0d 100644 --- a/space_flow/src/contexts/tabsContext.tsx +++ b/space_flow/src/contexts/tabsContext.tsx @@ -6,7 +6,7 @@ type TabsContextType={ tabIndex:number; setTabIndex:(index:number)=>void; flows:Array - removeFlow:(index:number)=>void; + removeFlow:(id:string)=>void; addFlow:(newFlow:flow)=>void; updateFlow:(newFLow:flow)=>void; } @@ -15,7 +15,7 @@ const TabsContextInitialValue = { tabIndex : 0, setTabIndex:(index:number)=>{}, flows:[], - removeFlow:(index:number)=>{}, + removeFlow:(id:string)=>{}, addFlow:(newFlow:flow)=>{}, updateFlow:(newFLow:flow)=>{} @@ -27,11 +27,24 @@ export const TabsContext = createContext(TabsContextInitialValu export function TabsProvider({children}){ const [tabIndex,setTabIndex] = useState(0) const [flows,setFlows] = useState>([]) - function removeFlow(index:number){ - let newFlows = flows - newFlows.splice(index,1) - window.sessionStorage.setItem('tabs',JSON.stringify(newFlows)) - setFlows(newFlows) + function removeFlow(id:string){ + setFlows(prevState=>{ + const newFlows = [...prevState]; + const index = newFlows.findIndex(flow=>flow.id===id) + if(index!==-1){ + newFlows.splice(index,1) + } + if(index===tabIndex){ + if(tabIndex===0){ + // + } + else{ + setTabIndex(tabIndex-1) + } + } + window.sessionStorage.setItem('tabs', JSON.stringify(newFlows)); + return newFlows; + }) } function addFlow(newFlow: flow) { setFlows(prevState => { diff --git a/space_flow/src/pages/FlowPage/flowManager/index.tsx b/space_flow/src/pages/FlowPage/flowManager/index.tsx index 3b68bff78..0a64e67f2 100644 --- a/space_flow/src/pages/FlowPage/flowManager/index.tsx +++ b/space_flow/src/pages/FlowPage/flowManager/index.tsx @@ -1,3 +1,4 @@ +import { PlusIcon } from "@heroicons/react/24/outline"; import { useContext, useEffect, useState } from "react"; import { Tab, Tabs, TabList, TabPanel } from "react-tabs"; import { ReactFlowProvider } from "reactflow"; @@ -19,12 +20,14 @@ export function TabsManager() {
{flows.map((flow, index) => { + console.log(tabIndex) return ( - +
setTabIndex(index)}>{flow.name}
); })} +
addFlow({ name: "untitled", data: null, id: _.uniqueId() })} className="cursor-pointer">
diff --git a/space_flow/src/pages/FlowPage/flowManager/tabComponent/index.tsx b/space_flow/src/pages/FlowPage/flowManager/tabComponent/index.tsx index 57aa71e01..60708c762 100644 --- a/space_flow/src/pages/FlowPage/flowManager/tabComponent/index.tsx +++ b/space_flow/src/pages/FlowPage/flowManager/tabComponent/index.tsx @@ -1,16 +1,24 @@ import { XMarkIcon } from "@heroicons/react/24/solid"; +import { useContext } from "react"; +import { TabsContext } from "../../../../contexts/tabsContext"; import { classNames } from "../../../../utils"; -type tabProps = { - name:string; +export default function TabComponent({ children, selected, id }) { + const { removeFlow, flows } = useContext(TabsContext); + return ( +
+ {children} + {flows.length > 1 && ( + removeFlow(id)} + > + )} +
+ ); } - - -export default function TabComponent({children,selected}){ - return( -
- {children} - -
- ) -} \ No newline at end of file diff --git a/space_flow/src/pages/FlowPage/index.tsx b/space_flow/src/pages/FlowPage/index.tsx index d791a122c..b7329156a 100644 --- a/space_flow/src/pages/FlowPage/index.tsx +++ b/space_flow/src/pages/FlowPage/index.tsx @@ -50,7 +50,7 @@ export default function FlowPage({flow}) { setViewport(flow.data.viewport) } useEffect(()=>{ - if(reactFlowInstance){ + if(reactFlowInstance && flow){ flow.data =reactFlowInstance.toObject() updateFlow(flow) }