File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -85,6 +85,10 @@ export function getProperties(
8585 hidePropertyIn ( defaultProperties , values , "hoverCloseOn" ) ;
8686 }
8787
88+ if ( values . trigger !== "onclick" ) {
89+ hidePropertyIn ( defaultProperties , values , "clickCloseOn" ) ;
90+ }
91+
8892 return defaultProperties ;
8993}
9094
Original file line number Diff line number Diff line change 9191 <enumerationValue key =" onhover" >Hover</enumerationValue >
9292 </enumerationValues >
9393 </property >
94+ <property key =" clickCloseOn" type =" enumeration" defaultValue =" onClickAnywhere" >
95+ <caption >Close on</caption >
96+ <description />
97+ <enumerationValues >
98+ <enumerationValue key =" onClickAnywhere" >Click anywhere</enumerationValue >
99+ <enumerationValue key =" onClickOutside" >Click outside</enumerationValue >
100+ </enumerationValues >
101+ </property >
94102 <property key =" hoverCloseOn" type =" enumeration" defaultValue =" onHoverLeave" >
95103 <caption >Close on</caption >
96104 <description />
Original file line number Diff line number Diff line change @@ -34,6 +34,7 @@ describe("Menu", () => {
3434 menuTrigger : createElement ( "button" , null , "Trigger" ) ,
3535 advancedMode : false ,
3636 hoverCloseOn : "onClickOutside" ,
37+ clickCloseOn : "onClickAnywhere" ,
3738 position : "bottom" ,
3839 basicItems : [
3940 basicItemProps ,
Original file line number Diff line number Diff line change @@ -28,6 +28,7 @@ describe("Popup Menu", () => {
2828 advancedMode : false ,
2929 position : "bottom" ,
3030 hoverCloseOn : "onHoverLeave" ,
31+ clickCloseOn : "onClickAnywhere" ,
3132 basicItems : [
3233 basicItemProps ,
3334 { itemType : "divider" , caption : dynamicValue ( "Caption" ) , styleClass : "defaultStyle" }
Original file line number Diff line number Diff line change @@ -19,10 +19,13 @@ export function PopupMenu(props: PopupMenuContainerProps): ReactElement {
1919 clippingStrategy : props . clippingStrategy
2020 } ) ;
2121
22- const handleOnClickItem = useCallback ( ( itemAction ?: ActionValue ) : void => {
23- setVisibility ( false ) ;
24- executeAction ( itemAction ) ;
25- } , [ ] ) ;
22+ const handleOnClickItem = useCallback (
23+ ( itemAction ?: ActionValue ) : void => {
24+ if ( props . clickCloseOn === "onClickAnywhere" ) setVisibility ( false ) ;
25+ executeAction ( itemAction ) ;
26+ } ,
27+ [ props . clickCloseOn ]
28+ ) ;
2629
2730 useEffect ( ( ) => {
2831 setVisibility ( props . menuToggle ) ;
Original file line number Diff line number Diff line change @@ -26,6 +26,8 @@ export interface CustomItemsType {
2626
2727export type TriggerEnum = "onclick" | "onhover" ;
2828
29+ export type ClickCloseOnEnum = "onClickAnywhere" | "onClickOutside" ;
30+
2931export type HoverCloseOnEnum = "onClickOutside" | "onHoverLeave" ;
3032
3133export type PositionEnum = "left" | "right" | "top" | "bottom" ;
@@ -56,6 +58,7 @@ export interface PopupMenuContainerProps {
5658 basicItems : BasicItemsType [ ] ;
5759 customItems : CustomItemsType [ ] ;
5860 trigger : TriggerEnum ;
61+ clickCloseOn : ClickCloseOnEnum ;
5962 hoverCloseOn : HoverCloseOnEnum ;
6063 position : PositionEnum ;
6164 clippingStrategy : ClippingStrategyEnum ;
@@ -78,6 +81,7 @@ export interface PopupMenuPreviewProps {
7881 basicItems : BasicItemsPreviewType [ ] ;
7982 customItems : CustomItemsPreviewType [ ] ;
8083 trigger : TriggerEnum ;
84+ clickCloseOn : ClickCloseOnEnum ;
8185 hoverCloseOn : HoverCloseOnEnum ;
8286 position : PositionEnum ;
8387 clippingStrategy : ClippingStrategyEnum ;
You can’t perform that action at this time.
0 commit comments