From 36ac3863249701560ff58ec7b257d832438e68f7 Mon Sep 17 00:00:00 2001 From: Tieptk Date: Thu, 22 Aug 2024 16:56:54 +0700 Subject: [PATCH] update remove --- src/nodes/NoteFlow.tsx | 42 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/src/nodes/NoteFlow.tsx b/src/nodes/NoteFlow.tsx index a2af228..e84da50 100644 --- a/src/nodes/NoteFlow.tsx +++ b/src/nodes/NoteFlow.tsx @@ -1,4 +1,4 @@ -import { useState } from 'react'; +import { useState,useCallback } from 'react'; import {ReactFlow, addEdge, Controls, Background, MarkerType } from '@xyflow/react'; import '@xyflow/react/dist/style.css'; import { FiUser, FiMail, FiCheckCircle,FiList } from 'react-icons/fi'; @@ -112,6 +112,7 @@ const NoteFlow = () => { const [showAdditionalOptions, setShowAdditionalOptions] = useState(false); const [selectedNodeContent, setSelectedNodeContent] = useState(''); const [showPopup, setShowPopup] = useState(false); + const [nodeToDelete, setNodeToDelete] = useState(null); const handleAddNoteClick = () => { setShowTabBar(true); @@ -203,14 +204,22 @@ const NoteFlow = () => { const onConnect = (params) => setEdges((eds) => addEdge(params, eds)); - const handleNodeDelete = (nodesToDelete) => { - setNodes((nds) => nds.filter((node) => !nodesToDelete.some((n) => n.id === node.id))); - setEdges((eds) => eds.filter((edge) => !nodesToDelete.some((n) => n.id === edge.source || n.id === edge.target))); + const onNodeContextMenu = useCallback((event, node) => { + event.preventDefault(); // Ngăn không cho menu chuột phải mặc định hiện ra + setNodeToDelete(node); + }, []); + + const handleNodeDelete = () => { + if (nodeToDelete) { + setNodes((nds) => nds.filter((node) => node.id !== nodeToDelete.id)); + setEdges((eds) => eds.filter((edge) => edge.source !== nodeToDelete.id && edge.target !== nodeToDelete.id)); + setNodeToDelete(null); + } }; return (
- + @@ -288,6 +297,29 @@ const NoteFlow = () => {
)} + {nodeToDelete && ( +
+ +
+ )} ); };