1- import { useEffect , useState , useMemo } from 'react' ;
1+ import { useEffect , useState , useMemo , useCallback } from 'react' ;
22import ConnectionModal from './Popups/ConnectionModal/ConnectionModal' ;
33import LlmDropdown from './Dropdown' ;
44import FileTable from './FileTable' ;
@@ -7,10 +7,9 @@ import { useCredentials } from '../context/UserCredentials';
77import { useFileContext } from '../context/UsersFiles' ;
88import CustomAlert from './UI/Alert' ;
99import { extractAPI } from '../utils/FileAPI' ;
10- import { ContentProps , CustomFile , OptionType , UserCredentials , alertStateType } from '../types' ;
10+ import { ContentProps , CustomFile , Menuitems , OptionType , UserCredentials , alertStateType } from '../types' ;
11+ import deleteAPI from '../services/DeleteFiles' ;
1112import { postProcessing } from '../services/PostProcessing' ;
12- import GraphViewModal from '../components/Graph/GraphViewModal' ;
13- import deleteAPI from '../services/deleteFiles' ;
1413import DeletePopUp from './Popups/DeletePopUp/DeletePopUp' ;
1514import { triggerStatusUpdateAPI } from '../services/ServerSideStatusUpdateAPI' ;
1615import useServerSideEvent from '../hooks/useSse' ;
@@ -20,13 +19,17 @@ import { buttonCaptions, largeFileSize, taskParam, tooltips } from '../utils/Con
2019import ButtonWithToolTip from './UI/ButtonWithToolTip' ;
2120import connectAPI from '../services/ConnectAPI' ;
2221import SettingModalHOC from '../HOC/SettingModalHOC' ;
22+ import GraphViewModal from './Graph/GraphViewModal' ;
23+ import CustomMenu from './UI/Menu' ;
24+ import { TrashIconOutline } from '@neo4j-ndl/react/icons' ;
2325
2426const Content : React . FC < ContentProps > = ( {
2527 isLeftExpanded,
2628 isRightExpanded,
2729 openTextSchema,
2830 isSchema,
2931 setIsSchema,
32+ openOrphanNodeDeletionModal,
3033} ) => {
3134 const [ init , setInit ] = useState < boolean > ( false ) ;
3235 const [ openConnection , setOpenConnection ] = useState < boolean > ( false ) ;
@@ -38,6 +41,8 @@ const Content: React.FC<ContentProps> = ({
3841 const [ extractLoading , setextractLoading ] = useState < boolean > ( false ) ;
3942 const [ isLargeFile , setIsLargeFile ] = useState < boolean > ( false ) ;
4043 const [ showSettingnModal , setshowSettingModal ] = useState < boolean > ( false ) ;
44+ const [ openDeleteMenu , setopenDeleteMenu ] = useState < boolean > ( false ) ;
45+ const [ deleteAnchor , setdeleteAnchor ] = useState < HTMLElement | null > ( null ) ;
4146
4247 const {
4348 filesData,
@@ -480,6 +485,22 @@ const Content: React.FC<ContentProps> = ({
480485 }
481486 } ;
482487
488+ const deleteMenuItems : Menuitems [ ] = useMemo (
489+ ( ) => [
490+ {
491+ title : `Delete Files ${ selectedfileslength > 0 ? `(${ selectedfileslength } )` : '' } ` ,
492+ onClick : ( ) => setshowDeletePopUp ( true ) ,
493+ disabledCondition : ! selectedfileslength ,
494+ } ,
495+ {
496+ title : 'Delete Orphan Nodes' ,
497+ onClick : ( ) => openOrphanNodeDeletionModal ( ) ,
498+ disabledCondition : false ,
499+ } ,
500+ ] ,
501+ [ selectedfileslength ]
502+ ) ;
503+
483504 const handleContinue = ( ) => {
484505 if ( ! isLargeFile ) {
485506 handleGenerateGraph ( true , filesData ) ;
@@ -624,19 +645,26 @@ const Content: React.FC<ContentProps> = ({
624645 >
625646 { buttonCaptions . exploreGraphWithBloom }
626647 </ ButtonWithToolTip >
627- < ButtonWithToolTip
628- text = {
629- ! selectedfileslength ? tooltips . deleteFile : `${ selectedfileslength } ${ tooltips . deleteSelectedFiles } `
630- }
631- placement = 'top'
632- onClick = { ( ) => setshowDeletePopUp ( true ) }
633- disabled = { ! selectedfileslength }
634- className = 'ml-0.5'
635- label = 'Delete Files'
648+ < CustomMenu
649+ open = { openDeleteMenu }
650+ closeHandler = { useCallback ( ( ) => {
651+ setopenDeleteMenu ( false ) ;
652+ } , [ ] ) }
653+ items = { deleteMenuItems }
654+ MenuAnchor = { deleteAnchor }
655+ anchorOrigin = { useMemo ( ( ) => ( { horizontal : 'left' , vertical : 'bottom' } ) , [ ] ) }
656+ transformOrigin = { useMemo ( ( ) => ( { horizontal : 'right' , vertical : 'top' } ) , [ ] ) }
657+ > </ CustomMenu >
658+ < Button
659+ label = 'Delete Menu trigger'
660+ onClick = { ( e ) => {
661+ setdeleteAnchor ( e . currentTarget ) ;
662+ setopenDeleteMenu ( true ) ;
663+ } }
636664 >
637- { buttonCaptions . deleteFiles }
638- { selectedfileslength > 0 && `( ${ selectedfileslength } )` }
639- </ ButtonWithToolTip >
665+ < TrashIconOutline className = 'n-size-token-7' />
666+ Delete < TrashIconOutline > </ TrashIconOutline >
667+ </ Button >
640668 </ Flex >
641669 </ Flex >
642670 </ div >
0 commit comments