11import { CLICK_EVENT_NAME } from '../helpers/dom/clickEvent' ;
2+ import { getMiddleware , Middleware , MiddlewareHelper } from '../helpers/middleware' ;
23import noop from '../helpers/noop' ;
34import pause from '../helpers/schedulers/pause' ;
45import { i18n } from '../lib/langPack' ;
@@ -9,14 +10,22 @@ import Icon from './icon';
910
1011let submenuHelperIdSeed = 0 ;
1112
13+ export type CreateSubmenuArgs = {
14+ middleware : Middleware ;
15+ } ;
16+
1217export default function createSubmenuTrigger (
1318 options : Pick < ButtonMenuItemOptionsVerifiable , 'text' | 'regularText' | 'icon' | 'verify' | 'separator' | 'separatorDown' | 'onClose' > ,
14- createSubmenu : ( ) => MaybePromise < HTMLElement >
19+ createSubmenu : ( args : CreateSubmenuArgs ) => MaybePromise < HTMLElement >
1520) {
16- let isDisabled = false ;
21+ let
22+ isDisabled = false ,
23+ currentMiddleware : MiddlewareHelper
24+ ;
1725
1826 const onOpen = ( ) => {
1927 if ( ! menuBtnOptions . element ) return ;
28+ currentMiddleware = getMiddleware ( ) ;
2029
2130 menuBtnOptions . element . addEventListener ( CLICK_EVENT_NAME , ( e ) => {
2231 e . stopPropagation ( ) ;
@@ -26,7 +35,7 @@ export default function createSubmenuTrigger(
2635 attachFloatingButtonMenu ( {
2736 element : menuBtnOptions . element ,
2837 direction : 'right-start' ,
29- createMenu : createSubmenu ,
38+ createMenu : ( ) => createSubmenu ( { middleware : currentMiddleware . get ( ) } ) ,
3039 offset : [ - 5 , - 5 ] ,
3140 level : 2 ,
3241 triggerEvent : 'mouseenter' ,
@@ -36,6 +45,7 @@ export default function createSubmenuTrigger(
3645 } ;
3746
3847 const onClose = async ( ) => {
48+ currentMiddleware ?. destroy ( ) ;
3949 // Prevents hover from triggering when the menu is closing
4050 isDisabled = true ;
4151 await pause ( 200 ) ;
0 commit comments