@@ -12,6 +12,7 @@ import {
12
12
useAnchor ,
13
13
useHover ,
14
14
useSelection ,
15
+ withDndDrop ,
15
16
} from '@patternfly/react-topology' ;
16
17
import { FunctionComponent , useContext , useRef } from 'react' ;
17
18
import { AddStepMode , IVisualizationNode , NodeToolbarTrigger } from '../../../../models' ;
@@ -23,9 +24,10 @@ import { AddStepIcon } from '../Edge/AddStepIcon';
23
24
import { TargetAnchor } from '../target-anchor' ;
24
25
import './CustomGroupExpanded.scss' ;
25
26
import { CustomGroupProps } from './Group.models' ;
27
+ import { customGroupExpandedDropTargetSpec } from '../customComponentUtils' ;
26
28
27
- export const CustomGroupExpanded : FunctionComponent < CustomGroupProps > = observer (
28
- ( { element, onContextMenu, onCollapseToggle } ) => {
29
+ export const CustomGroupExpandedInner : FunctionComponent < CustomGroupProps > = observer (
30
+ ( { element, onContextMenu, onCollapseToggle, dndDropRef , droppable } ) => {
29
31
if ( ! isNode ( element ) ) {
30
32
throw new Error ( 'CustomGroupExpanded must be used only on Node elements' ) ;
31
33
}
@@ -41,7 +43,7 @@ export const CustomGroupExpanded: FunctionComponent<CustomGroupProps> = observer
41
43
CanvasDefaults . HOVER_DELAY_IN ,
42
44
CanvasDefaults . HOVER_DELAY_OUT ,
43
45
) ;
44
- const boxRef = useRef < Rect > ( element . getBounds ( ) ) ;
46
+ const boxRef = useRef < Rect | null > ( null ) ;
45
47
const shouldShowToolbar =
46
48
settingsAdapter . getSettings ( ) . nodeToolbarTrigger === NodeToolbarTrigger . onHover
47
49
? isGHover || isToolbarHover || isSelected
@@ -58,7 +60,9 @@ export const CustomGroupExpanded: FunctionComponent<CustomGroupProps> = observer
58
60
return null ;
59
61
}
60
62
61
- boxRef . current = element . getBounds ( ) ;
63
+ if ( ! droppable || ! boxRef . current ) {
64
+ boxRef . current = element . getBounds ( ) ;
65
+ }
62
66
const toolbarWidth = Math . max ( CanvasDefaults . STEP_TOOLBAR_WIDTH , boxRef . current . width ) ;
63
67
const toolbarX = boxRef . current . x + ( boxRef . current . width - toolbarWidth ) / 2 ;
64
68
const toolbarY = boxRef . current . y - CanvasDefaults . STEP_TOOLBAR_HEIGHT ;
@@ -83,6 +87,7 @@ export const CustomGroupExpanded: FunctionComponent<CustomGroupProps> = observer
83
87
onContextMenu = { onContextMenu }
84
88
>
85
89
< foreignObject
90
+ ref = { dndDropRef }
86
91
data-nodelabel = { label }
87
92
x = { boxRef . current . x }
88
93
y = { boxRef . current . y }
@@ -145,3 +150,5 @@ export const CustomGroupExpanded: FunctionComponent<CustomGroupProps> = observer
145
150
) ;
146
151
} ,
147
152
) ;
153
+
154
+ export const CustomGroupExpanded = withDndDrop ( customGroupExpandedDropTargetSpec ) ( CustomGroupExpandedInner ) ;
0 commit comments