@@ -56,11 +56,13 @@ export type PopupMenuProps = {
5656 onItemSelect ?: EnsembleAction ;
5757 showDivider ?: boolean | Expression < string > ;
5858 trigger ?: "click" | "hover" | "contextMenu" ;
59+ onTriggered ?: EnsembleAction ;
5960 enabled ?: boolean ;
6061} & EnsembleWidgetProps < PopupMenuStyles & EnsembleWidgetStyles > &
6162 HasItemTemplate & { "item-template" ?: { value : Expression < string > } } ;
6263
6364export const PopupMenu : React . FC < PopupMenuProps > = ( {
65+ onTriggered,
6466 onItemSelect,
6567 "item-template" : itemTemplate ,
6668 ...rest
@@ -70,6 +72,7 @@ export const PopupMenu: React.FC<PopupMenuProps> = ({
7072 rest . id ,
7173 ) ;
7274 const action = useEnsembleAction ( onItemSelect ) ;
75+ const onTriggerAction = useEnsembleAction ( onTriggered ) ;
7376
7477 const { namedData } = useTemplateData ( {
7578 data : itemTemplate ?. data ,
@@ -188,6 +191,15 @@ export const PopupMenu: React.FC<PopupMenuProps> = ({
188191 [ action ?. callback , itemsMap ] ,
189192 ) ;
190193
194+ const handleOnOpenChange = useCallback (
195+ ( open : boolean ) => {
196+ if ( open ) {
197+ onTriggerAction ?. callback ( { open } ) ;
198+ }
199+ } ,
200+ [ onTriggerAction ] ,
201+ ) ;
202+
191203 return (
192204 < div ref = { rootRef } >
193205 < AntdDropdown
@@ -198,6 +210,7 @@ export const PopupMenu: React.FC<PopupMenuProps> = ({
198210 onClick : handleMenuItemClick ,
199211 style : { overflow : "auto" , ...values ?. styles } ,
200212 } }
213+ onOpenChange = { handleOnOpenChange }
201214 trigger = { [ values ?. trigger || DEFAULT_POPUPMENU_TRIGGER ] }
202215 >
203216 { /* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */ }
0 commit comments