11import * as React from "react" ;
22
3+ import { EditMenuItem } from "./EditMenuItem" ;
34import { FlowElementReference } from "../model/FlowElement" ;
45import { addContentElement , addDivergingGateway } from "../model/action/addElement" ;
56import { addBranch } from "../model/action/addBranch" ;
6- import { removeElement } from "../model/action/removeElement" ;
7+ import { isChangeNextElementAllowed } from "../model/action/changeNextElement" ;
8+ import { removeElement , isRemoveElementAllowed } from "../model/action/removeElement" ;
79
810import { SelectableElementType , EditActionResult , DraggableType } from "../types/EditAction" ;
911import { FlowModelerProps , MenuOptions } from "../types/FlowModelerProps" ;
1012import { ElementType } from "../types/GridCellData" ;
11- import { EditMenuItem } from "./EditMenuItem" ;
1213
1314const onClickStopPropagation = ( event : React . MouseEvent ) : void => event . stopPropagation ( ) ;
1415
@@ -17,7 +18,7 @@ export class EditMenu extends React.Component<{
1718 referenceElement ?: FlowElementReference ;
1819 branchIndex ?: number ;
1920 menuOptions ?: FlowModelerProps [ "options" ] [ "editActions" ] ;
20- onChange ? : ( change : ( originalFlow : FlowModelerProps [ "flow" ] ) => EditActionResult ) => void ;
21+ onChange : ( change : ( originalFlow : FlowModelerProps [ "flow" ] ) => EditActionResult ) => void ;
2122} > {
2223 isNextElementReferencedByOthers = ( ) : boolean => {
2324 const { referenceElement, branchIndex } = this . props ;
@@ -43,7 +44,7 @@ export class EditMenu extends React.Component<{
4344 this . isNextElementReferencedByOthers ( )
4445 ? { type : dragType , originType : targetType , originElement : referenceElement , originBranchIndex : branchIndex }
4546 : undefined ;
46- return < EditMenuItem options = { options } defaultClassName = { defaultClassName } onClick = { onClick } dragItem = { dragItem } /> ;
47+ return < EditMenuItem key = { defaultClassName } options = { options } defaultClassName = { defaultClassName } onClick = { onClick } dragItem = { dragItem } /> ;
4748 }
4849
4950 onAddContentElementClick = ( ) : void => {
@@ -96,11 +97,11 @@ export class EditMenu extends React.Component<{
9697 }
9798
9899 renderChangeNextElementItem ( ) : React . ReactNode {
99- const { targetType, menuOptions } = this . props ;
100- if ( targetType !== ElementType . Content && targetType !== ElementType . ConnectGatewayToElement ) {
101- return null ;
100+ const { targetType, referenceElement , branchIndex , menuOptions } = this . props ;
101+ if ( isChangeNextElementAllowed ( targetType , referenceElement , branchIndex ) ) {
102+ return this . renderMenuItem ( menuOptions ? menuOptions . changeNextElement : undefined , "change-next" , undefined , DraggableType . LINK ) ;
102103 }
103- return this . renderMenuItem ( menuOptions ? menuOptions . changeNextElement : undefined , "change-next" , undefined , DraggableType . LINK ) ;
104+ return null ;
104105 }
105106
106107 onRemoveClick = ( ) : void => {
@@ -111,18 +112,14 @@ export class EditMenu extends React.Component<{
111112 } ;
112113
113114 renderRemoveItem ( ) : React . ReactNode {
114- const { targetType, menuOptions } = this . props ;
115- if ( targetType !== ElementType . Content && targetType !== ElementType . ConnectGatewayToElement ) {
116- return null ;
115+ const { targetType, referenceElement , branchIndex , menuOptions } = this . props ;
116+ if ( isRemoveElementAllowed ( targetType , referenceElement , branchIndex ) ) {
117+ return this . renderMenuItem ( menuOptions ? menuOptions . removeElement : undefined , "remove" , this . onRemoveClick ) ;
117118 }
118- return this . renderMenuItem ( menuOptions ? menuOptions . removeElement : undefined , "remove" , this . onRemoveClick ) ;
119+ return null ;
119120 }
120121
121122 render ( ) : React . ReactNode {
122- const { onChange } = this . props ;
123- if ( ! onChange ) {
124- return null ;
125- }
126123 const menuItems = [
127124 this . renderAddContentElementItem ( ) ,
128125 this . renderAddDivergingGatewayItem ( ) ,
0 commit comments