| @@ -49,8 +49,13 @@ | ||
| 49 | 49 | }, |
| 50 | 50 | get menuOpenedBy() { |
| 51 | 51 | const ctx = getContext(); |
| 52 | 52 | return ctx.type === "overlay" ? ctx.overlayOpenedBy : ctx.submenuOpenedBy; |
| 53 | + }, | |
| 54 | + get isSubmenuOpen() { | |
| 55 | + const ctx = getContext(); | |
| 56 | + const isDefaultOverlayOpen = !ctx.hasCustomOverlay && Object.values(ctx.overlayOpenedBy || {}).filter(Boolean).length > 0; | |
| 57 | + return isDefaultOverlayOpen || state.isMenuOpen; | |
| 53 | 58 | } |
| 54 | 59 | }, |
| 55 | 60 | actions: { |
| 56 | 61 | openMenuOnHover(event) { |
| @@ -56,11 +61,10 @@ | ||
| 56 | 61 | openMenuOnHover(event) { |
| 57 | 62 | if (event?.pointerType === "touch") { |
| 58 | 63 | return; |
| 59 | 64 | } |
| 60 | - const { type, overlayOpenedBy } = getContext(); | |
| 61 | - if (type === "submenu" && // Only open on hover if the overlay is closed. | |
| 62 | - Object.values(overlayOpenedBy || {}).filter(Boolean).length === 0) { | |
| 65 | + const { type } = getContext(); | |
| 66 | + if (type === "submenu") { | |
| 63 | 67 | actions.openMenu("hover"); |
| 64 | 68 | } |
| 65 | 69 | }, |
| 66 | 70 | closeMenuOnHover(event) { |
| @@ -66,11 +70,10 @@ | ||
| 66 | 70 | closeMenuOnHover(event) { |
| 67 | 71 | if (event?.pointerType === "touch") { |
| 68 | 72 | return; |
| 69 | 73 | } |
| 70 | - const { type, overlayOpenedBy } = getContext(); | |
| 71 | - if (type === "submenu" && // Only close on hover if the overlay is closed. | |
| 72 | - Object.values(overlayOpenedBy || {}).filter(Boolean).length === 0) { | |
| 74 | + const { type } = getContext(); | |
| 75 | + if (type === "submenu") { | |
| 73 | 76 | actions.closeMenu("hover"); |
| 74 | 77 | } |
| 75 | 78 | }, |
| 76 | 79 | openMenuOnClick() { |