@fluentui/react-menu 9.10.0 → 9.11.1
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.json +98 -1
- package/CHANGELOG.md +30 -2
- package/dist/index.d.ts +12 -0
- package/lib/components/Menu/useMenu.js +2 -22
- package/lib/components/Menu/useMenu.js.map +1 -1
- package/lib/components/MenuItem/useMenuItemStyles.styles.js +3 -3
- package/lib/components/MenuItem/useMenuItemStyles.styles.js.map +1 -1
- package/lib/components/MenuPopover/useMenuPopover.js +8 -0
- package/lib/components/MenuPopover/useMenuPopover.js.map +1 -1
- package/lib/components/MenuTrigger/MenuTrigger.js +1 -1
- package/lib/components/MenuTrigger/MenuTrigger.js.map +1 -1
- package/lib/components/MenuTrigger/index.js +1 -1
- package/lib/components/MenuTrigger/index.js.map +1 -1
- package/lib/components/MenuTrigger/useMenuTrigger.js +164 -0
- package/lib/components/MenuTrigger/useMenuTrigger.js.map +1 -0
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/utils/useOnMenuEnter.js +2 -2
- package/lib/utils/useOnMenuEnter.js.map +1 -1
- package/lib-commonjs/components/Menu/useMenu.js +1 -20
- package/lib-commonjs/components/Menu/useMenu.js.map +1 -1
- package/lib-commonjs/components/MenuItem/useMenuItemStyles.styles.js +6 -6
- package/lib-commonjs/components/MenuItem/useMenuItemStyles.styles.js.map +1 -1
- package/lib-commonjs/components/MenuPopover/useMenuPopover.js +8 -0
- package/lib-commonjs/components/MenuPopover/useMenuPopover.js.map +1 -1
- package/lib-commonjs/components/MenuTrigger/MenuTrigger.js +2 -2
- package/lib-commonjs/components/MenuTrigger/MenuTrigger.js.map +1 -1
- package/lib-commonjs/components/MenuTrigger/index.js +1 -1
- package/lib-commonjs/components/MenuTrigger/index.js.map +1 -1
- package/lib-commonjs/components/MenuTrigger/{useMenuTrigger.styles.js → useMenuTrigger.js} +3 -1
- package/lib-commonjs/components/MenuTrigger/useMenuTrigger.js.map +1 -0
- package/lib-commonjs/index.js +2 -0
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/utils/useOnMenuEnter.js.map +1 -1
- package/package.json +8 -8
- package/lib/components/MenuTrigger/useMenuTrigger.styles.js +0 -168
- package/lib/components/MenuTrigger/useMenuTrigger.styles.js.map +0 -1
- package/lib-commonjs/components/MenuTrigger/useMenuTrigger.styles.js.map +0 -1
@@ -8,10 +8,10 @@ Object.defineProperty(exports, "MenuTrigger", {
|
|
8
8
|
});
|
9
9
|
const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
|
10
10
|
const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
|
11
|
-
const
|
11
|
+
const _useMenuTrigger = require("./useMenuTrigger");
|
12
12
|
const _renderMenuTrigger = require("./renderMenuTrigger");
|
13
13
|
const MenuTrigger = (props)=>{
|
14
|
-
const state = (0,
|
14
|
+
const state = (0, _useMenuTrigger.useMenuTrigger_unstable)(props);
|
15
15
|
return (0, _renderMenuTrigger.renderMenuTrigger_unstable)(state);
|
16
16
|
};
|
17
17
|
MenuTrigger.displayName = 'MenuTrigger';
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["MenuTrigger.js"],"sourcesContent":["import * as React from 'react';\nimport { useMenuTrigger_unstable } from './useMenuTrigger
|
1
|
+
{"version":3,"sources":["MenuTrigger.js"],"sourcesContent":["import * as React from 'react';\nimport { useMenuTrigger_unstable } from './useMenuTrigger';\nimport { renderMenuTrigger_unstable } from './renderMenuTrigger';\n/**\n * Wraps a trigger element as an only child\n * and adds the necessary event handling to open a popup menu\n */ export const MenuTrigger = (props)=>{\n const state = useMenuTrigger_unstable(props);\n return renderMenuTrigger_unstable(state);\n};\nMenuTrigger.displayName = 'MenuTrigger';\n// type casting here is required to ensure internal type FluentTriggerComponent is not leaked\nMenuTrigger.isFluentTriggerComponent = true;\n"],"names":["MenuTrigger","props","state","useMenuTrigger_unstable","renderMenuTrigger_unstable","displayName","isFluentTriggerComponent"],"mappings":";;;;+BAMiBA;;aAAAA;;;6DANM;gCACiB;mCACG;AAIhC,MAAMA,cAAc,CAACC,QAAQ;IACpC,MAAMC,QAAQC,IAAAA,uCAAuB,EAACF;IACtC,OAAOG,IAAAA,6CAA0B,EAACF;AACtC;AACAF,YAAYK,WAAW,GAAG;AAC1B,6FAA6F;AAC7FL,YAAYM,wBAAwB,GAAG,IAAI"}
|
@@ -6,4 +6,4 @@ const _exportStar = require("@swc/helpers/lib/_export_star.js").default;
|
|
6
6
|
_exportStar(require("./MenuTrigger"), exports);
|
7
7
|
_exportStar(require("./MenuTrigger.types"), exports);
|
8
8
|
_exportStar(require("./renderMenuTrigger"), exports);
|
9
|
-
_exportStar(require("./useMenuTrigger
|
9
|
+
_exportStar(require("./useMenuTrigger"), exports);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["index.js"],"sourcesContent":["export * from './MenuTrigger';\nexport * from './MenuTrigger.types';\nexport * from './renderMenuTrigger';\nexport * from './useMenuTrigger
|
1
|
+
{"version":3,"sources":["index.js"],"sourcesContent":["export * from './MenuTrigger';\nexport * from './MenuTrigger.types';\nexport * from './renderMenuTrigger';\nexport * from './useMenuTrigger';\n"],"names":[],"mappings":";;;;;oBAAc;oBACA;oBACA;oBACA"}
|
@@ -24,6 +24,7 @@ const useMenuTrigger_unstable = (props)=>{
|
|
24
24
|
const triggerId = (0, _menuContext.useMenuContext_unstable)((context)=>context.triggerId);
|
25
25
|
const openOnHover = (0, _menuContext.useMenuContext_unstable)((context)=>context.openOnHover);
|
26
26
|
const openOnContext = (0, _menuContext.useMenuContext_unstable)((context)=>context.openOnContext);
|
27
|
+
const restoreFocusTargetAttribute = (0, _reactTabster.useRestoreFocusTarget)();
|
27
28
|
const isSubmenu = (0, _useIsSubmenu.useIsSubmenu)();
|
28
29
|
const { findFirstFocusable } = (0, _reactTabster.useFocusFinders)();
|
29
30
|
const focusFirst = _react.useCallback(()=>{
|
@@ -147,6 +148,7 @@ const useMenuTrigger_unstable = (props)=>{
|
|
147
148
|
const triggerChildProps = {
|
148
149
|
'aria-haspopup': 'menu',
|
149
150
|
'aria-expanded': !open && !isSubmenu ? undefined : open,
|
151
|
+
...restoreFocusTargetAttribute,
|
150
152
|
...contextMenuProps,
|
151
153
|
onClick: (0, _reactUtilities.useEventCallback)((0, _reactUtilities.mergeCallbacks)(child === null || child === void 0 ? void 0 : child.props.onClick, onClick)),
|
152
154
|
onKeyDown: (0, _reactUtilities.useEventCallback)((0, _reactUtilities.mergeCallbacks)(child === null || child === void 0 ? void 0 : child.props.onKeyDown, onKeyDown))
|
@@ -163,4 +165,4 @@ const isTargetDisabled = (event)=>{
|
|
163
165
|
return true;
|
164
166
|
}
|
165
167
|
return (0, _reactUtilities.isHTMLElement)(event.currentTarget) && isDisabled(event.currentTarget);
|
166
|
-
};
|
168
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["useMenuTrigger.js"],"sourcesContent":["import * as React from 'react';\nimport { useMenuContext_unstable } from '../../contexts/menuContext';\nimport { useIsSubmenu } from '../../utils/useIsSubmenu';\nimport { useFocusFinders, useRestoreFocusTarget } from '@fluentui/react-tabster';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { ArrowRight, ArrowLeft, Escape, ArrowDown } from '@fluentui/keyboard-keys';\nimport { applyTriggerPropsToChildren, getTriggerChild, isHTMLElement, mergeCallbacks, useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport { useARIAButtonProps } from '@fluentui/react-aria';\n/**\n * Create the state required to render MenuTrigger.\n * Clones the only child component and adds necessary event handling behaviours to open a popup menu\n *\n * @param props - props from this instance of MenuTrigger\n */ export const useMenuTrigger_unstable = (props)=>{\n const { children , disableButtonEnhancement =false } = props;\n const triggerRef = useMenuContext_unstable((context)=>context.triggerRef);\n const menuPopoverRef = useMenuContext_unstable((context)=>context.menuPopoverRef);\n const setOpen = useMenuContext_unstable((context)=>context.setOpen);\n const open = useMenuContext_unstable((context)=>context.open);\n const triggerId = useMenuContext_unstable((context)=>context.triggerId);\n const openOnHover = useMenuContext_unstable((context)=>context.openOnHover);\n const openOnContext = useMenuContext_unstable((context)=>context.openOnContext);\n const restoreFocusTargetAttribute = useRestoreFocusTarget();\n const isSubmenu = useIsSubmenu();\n const { findFirstFocusable } = useFocusFinders();\n const focusFirst = React.useCallback(()=>{\n const firstFocusable = findFirstFocusable(menuPopoverRef.current);\n firstFocusable === null || firstFocusable === void 0 ? void 0 : firstFocusable.focus();\n }, [\n findFirstFocusable,\n menuPopoverRef\n ]);\n const openedWithKeyboardRef = React.useRef(false);\n const hasMouseMoved = React.useRef(false);\n const { dir } = useFluent();\n const OpenArrowKey = dir === 'ltr' ? ArrowRight : ArrowLeft;\n const child = getTriggerChild(children);\n const onContextMenu = (event)=>{\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnContext) {\n event.preventDefault();\n setOpen(event, {\n open: true,\n keyboard: false,\n type: 'menuTriggerContextMenu',\n event\n });\n }\n };\n const onClick = (event)=>{\n if (isTargetDisabled(event)) {\n return;\n }\n if (!openOnContext) {\n setOpen(event, {\n open: !open,\n keyboard: openedWithKeyboardRef.current,\n type: 'menuTriggerClick',\n event\n });\n openedWithKeyboardRef.current = false;\n }\n };\n const onKeyDown = (event)=>{\n if (isTargetDisabled(event)) {\n return;\n }\n const key = event.key;\n if (!openOnContext && (isSubmenu && key === OpenArrowKey || !isSubmenu && key === ArrowDown)) {\n setOpen(event, {\n open: true,\n keyboard: true,\n type: 'menuTriggerKeyDown',\n event\n });\n }\n if (key === Escape && !isSubmenu) {\n setOpen(event, {\n open: false,\n keyboard: true,\n type: 'menuTriggerKeyDown',\n event\n });\n }\n // if menu is already open, can't rely on effects to focus\n if (open && key === OpenArrowKey && isSubmenu) {\n focusFirst();\n }\n };\n const onMouseEnter = (event)=>{\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover && hasMouseMoved.current) {\n setOpen(event, {\n open: true,\n keyboard: false,\n type: 'menuTriggerMouseEnter',\n event\n });\n }\n };\n // Opening a menu when a mouse hasn't moved and just entering the trigger is a bad a11y experience\n // First time open the mouse using mousemove and then continue with mouseenter\n // Only use once to determine that the user is using the mouse since it is an expensive event to handle\n const onMouseMove = (event)=>{\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover && !hasMouseMoved.current) {\n setOpen(event, {\n open: true,\n keyboard: false,\n type: 'menuTriggerMouseMove',\n event\n });\n hasMouseMoved.current = true;\n }\n };\n const onMouseLeave = (event)=>{\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover) {\n setOpen(event, {\n open: false,\n keyboard: false,\n type: 'menuTriggerMouseLeave',\n event\n });\n }\n };\n const contextMenuProps = {\n id: triggerId,\n ...child === null || child === void 0 ? void 0 : child.props,\n ref: useMergedRefs(triggerRef, child === null || child === void 0 ? void 0 : child.ref),\n onMouseEnter: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onMouseEnter, onMouseEnter)),\n onMouseLeave: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onMouseLeave, onMouseLeave)),\n onContextMenu: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onContextMenu, onContextMenu)),\n onMouseMove: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onMouseMove, onMouseMove))\n };\n const triggerChildProps = {\n 'aria-haspopup': 'menu',\n 'aria-expanded': !open && !isSubmenu ? undefined : open,\n ...restoreFocusTargetAttribute,\n ...contextMenuProps,\n onClick: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onClick, onClick)),\n onKeyDown: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onKeyDown, onKeyDown))\n };\n const ariaButtonTriggerChildProps = useARIAButtonProps((child === null || child === void 0 ? void 0 : child.type) === 'button' || (child === null || child === void 0 ? void 0 : child.type) === 'a' ? child.type : 'div', triggerChildProps);\n return {\n isSubmenu,\n children: applyTriggerPropsToChildren(children, openOnContext ? contextMenuProps : disableButtonEnhancement ? triggerChildProps : ariaButtonTriggerChildProps)\n };\n};\nconst isTargetDisabled = (event)=>{\n const isDisabled = (el)=>el.hasAttribute('disabled') || el.hasAttribute('aria-disabled') && el.getAttribute('aria-disabled') === 'true';\n if (isHTMLElement(event.target) && isDisabled(event.target)) {\n return true;\n }\n return isHTMLElement(event.currentTarget) && isDisabled(event.currentTarget);\n};\n"],"names":["useMenuTrigger_unstable","props","children","disableButtonEnhancement","triggerRef","useMenuContext_unstable","context","menuPopoverRef","setOpen","open","triggerId","openOnHover","openOnContext","restoreFocusTargetAttribute","useRestoreFocusTarget","isSubmenu","useIsSubmenu","findFirstFocusable","useFocusFinders","focusFirst","React","useCallback","firstFocusable","current","focus","openedWithKeyboardRef","useRef","hasMouseMoved","dir","useFluent","OpenArrowKey","ArrowRight","ArrowLeft","child","getTriggerChild","onContextMenu","event","isTargetDisabled","preventDefault","keyboard","type","onClick","onKeyDown","key","ArrowDown","Escape","onMouseEnter","onMouseMove","onMouseLeave","contextMenuProps","id","ref","useMergedRefs","useEventCallback","mergeCallbacks","triggerChildProps","undefined","ariaButtonTriggerChildProps","useARIAButtonProps","applyTriggerPropsToChildren","isDisabled","el","hasAttribute","getAttribute","isHTMLElement","target","currentTarget"],"mappings":"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"}
|
package/lib-commonjs/index.js
CHANGED
@@ -77,6 +77,8 @@ _export(exports, {
|
|
77
77
|
renderMenuItemLink_unstable: ()=>_menuItemLink.renderMenuItemLink_unstable,
|
78
78
|
useMenuItemLinkStyles_unstable: ()=>_menuItemLink.useMenuItemLinkStyles_unstable,
|
79
79
|
useMenuItemLink_unstable: ()=>_menuItemLink.useMenuItemLink_unstable,
|
80
|
+
MENU_ENTER_EVENT: ()=>_utils.MENU_ENTER_EVENT,
|
81
|
+
dispatchMenuEnterEvent: ()=>_utils.dispatchMenuEnterEvent,
|
80
82
|
useOnMenuMouseEnter: ()=>_utils.useOnMenuMouseEnter
|
81
83
|
});
|
82
84
|
const _menuContext = require("./contexts/menuContext");
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["index.js"],"sourcesContent":["export { MenuProvider, useMenuContext_unstable } from './contexts/menuContext';\nexport { MenuTriggerContextProvider, useMenuTriggerContext_unstable } from './contexts/menuTriggerContext';\nexport { MenuGroupContextProvider, useMenuGroupContext_unstable } from './contexts/menuGroupContext';\nexport { MenuListProvider, useMenuListContext_unstable } from './contexts/menuListContext';\nexport { Menu, renderMenu_unstable, useMenuContextValues_unstable, useMenu_unstable } from './Menu';\nexport { MenuDivider, menuDividerClassNames, renderMenuDivider_unstable, useMenuDividerStyles_unstable, useMenuDivider_unstable } from './MenuDivider';\nexport { MenuGroup, menuGroupClassNames, renderMenuGroup_unstable, useMenuGroupContextValues_unstable, useMenuGroupStyles_unstable, useMenuGroup_unstable } from './MenuGroup';\nexport { MenuGroupHeader, menuGroupHeaderClassNames, renderMenuGroupHeader_unstable, useMenuGroupHeaderStyles_unstable, useMenuGroupHeader_unstable } from './MenuGroupHeader';\nexport { MenuItem, menuItemClassNames, renderMenuItem_unstable, useMenuItemStyles_unstable, useMenuItem_unstable } from './MenuItem';\nexport { MenuItemCheckbox, menuItemCheckboxClassNames, renderMenuItemCheckbox_unstable, useMenuItemCheckboxStyles_unstable, useMenuItemCheckbox_unstable } from './MenuItemCheckbox';\nexport { MenuItemRadio, menuItemRadioClassNames, renderMenuItemRadio_unstable, useMenuItemRadioStyles_unstable, useMenuItemRadio_unstable } from './MenuItemRadio';\nexport { MenuList, menuListClassNames, renderMenuList_unstable, useMenuListContextValues_unstable, useMenuListStyles_unstable, useMenuList_unstable } from './MenuList';\nexport { MenuPopover, menuPopoverClassNames, renderMenuPopover_unstable, useMenuPopoverStyles_unstable, useMenuPopover_unstable } from './MenuPopover';\nexport { MenuSplitGroup, menuSplitGroupClassNames, renderMenuSplitGroup_unstable, useMenuSplitGroupStyles_unstable, useMenuSplitGroup_unstable } from './MenuSplitGroup';\nexport { MenuTrigger, renderMenuTrigger_unstable, useMenuTrigger_unstable } from './MenuTrigger';\nexport { useCheckmarkStyles_unstable } from './selectable/index';\nexport { MenuItemLink, menuItemLinkClassNames, renderMenuItemLink_unstable, useMenuItemLinkStyles_unstable, useMenuItemLink_unstable } from './MenuItemLink';\nexport { useOnMenuMouseEnter } from './utils';\n"],"names":["MenuProvider","useMenuContext_unstable","MenuTriggerContextProvider","useMenuTriggerContext_unstable","MenuGroupContextProvider","useMenuGroupContext_unstable","MenuListProvider","useMenuListContext_unstable","Menu","renderMenu_unstable","useMenuContextValues_unstable","useMenu_unstable","MenuDivider","menuDividerClassNames","renderMenuDivider_unstable","useMenuDividerStyles_unstable","useMenuDivider_unstable","MenuGroup","menuGroupClassNames","renderMenuGroup_unstable","useMenuGroupContextValues_unstable","useMenuGroupStyles_unstable","useMenuGroup_unstable","MenuGroupHeader","menuGroupHeaderClassNames","renderMenuGroupHeader_unstable","useMenuGroupHeaderStyles_unstable","useMenuGroupHeader_unstable","MenuItem","menuItemClassNames","renderMenuItem_unstable","useMenuItemStyles_unstable","useMenuItem_unstable","MenuItemCheckbox","menuItemCheckboxClassNames","renderMenuItemCheckbox_unstable","useMenuItemCheckboxStyles_unstable","useMenuItemCheckbox_unstable","MenuItemRadio","menuItemRadioClassNames","renderMenuItemRadio_unstable","useMenuItemRadioStyles_unstable","useMenuItemRadio_unstable","MenuList","menuListClassNames","renderMenuList_unstable","useMenuListContextValues_unstable","useMenuListStyles_unstable","useMenuList_unstable","MenuPopover","menuPopoverClassNames","renderMenuPopover_unstable","useMenuPopoverStyles_unstable","useMenuPopover_unstable","MenuSplitGroup","menuSplitGroupClassNames","renderMenuSplitGroup_unstable","useMenuSplitGroupStyles_unstable","useMenuSplitGroup_unstable","MenuTrigger","renderMenuTrigger_unstable","useMenuTrigger_unstable","useCheckmarkStyles_unstable","MenuItemLink","menuItemLinkClassNames","renderMenuItemLink_unstable","useMenuItemLinkStyles_unstable","useMenuItemLink_unstable","useOnMenuMouseEnter"],"mappings":";;;;;;;;;;;IAASA,YAAY,MAAZA,yBAAY;IAAEC,uBAAuB,MAAvBA,oCAAuB;IACrCC,0BAA0B,MAA1BA,8CAA0B;IAAEC,8BAA8B,MAA9BA,kDAA8B;IAC1DC,wBAAwB,MAAxBA,0CAAwB;IAAEC,4BAA4B,MAA5BA,8CAA4B;IACtDC,gBAAgB,MAAhBA,iCAAgB;IAAEC,2BAA2B,MAA3BA,4CAA2B;IAC7CC,IAAI,MAAJA,UAAI;IAAEC,mBAAmB,MAAnBA,yBAAmB;IAAEC,6BAA6B,MAA7BA,mCAA6B;IAAEC,gBAAgB,MAAhBA,sBAAgB;IAC1EC,WAAW,MAAXA,wBAAW;IAAEC,qBAAqB,MAArBA,kCAAqB;IAAEC,0BAA0B,MAA1BA,uCAA0B;IAAEC,6BAA6B,MAA7BA,0CAA6B;IAAEC,uBAAuB,MAAvBA,oCAAuB;IACtHC,SAAS,MAATA,oBAAS;IAAEC,mBAAmB,MAAnBA,8BAAmB;IAAEC,wBAAwB,MAAxBA,mCAAwB;IAAEC,kCAAkC,MAAlCA,6CAAkC;IAAEC,2BAA2B,MAA3BA,sCAA2B;IAAEC,qBAAqB,MAArBA,gCAAqB;IAChJC,eAAe,MAAfA,gCAAe;IAAEC,yBAAyB,MAAzBA,0CAAyB;IAAEC,8BAA8B,MAA9BA,+CAA8B;IAAEC,iCAAiC,MAAjCA,kDAAiC;IAAEC,2BAA2B,MAA3BA,4CAA2B;IAC1IC,QAAQ,MAARA,kBAAQ;IAAEC,kBAAkB,MAAlBA,4BAAkB;IAAEC,uBAAuB,MAAvBA,iCAAuB;IAAEC,0BAA0B,MAA1BA,oCAA0B;IAAEC,oBAAoB,MAApBA,8BAAoB;IACvGC,gBAAgB,MAAhBA,kCAAgB;IAAEC,0BAA0B,MAA1BA,4CAA0B;IAAEC,+BAA+B,MAA/BA,iDAA+B;IAAEC,kCAAkC,MAAlCA,oDAAkC;IAAEC,4BAA4B,MAA5BA,8CAA4B;IAC/IC,aAAa,MAAbA,4BAAa;IAAEC,uBAAuB,MAAvBA,sCAAuB;IAAEC,4BAA4B,MAA5BA,2CAA4B;IAAEC,+BAA+B,MAA/BA,8CAA+B;IAAEC,yBAAyB,MAAzBA,wCAAyB;IAChIC,QAAQ,MAARA,kBAAQ;IAAEC,kBAAkB,MAAlBA,4BAAkB;IAAEC,uBAAuB,MAAvBA,iCAAuB;IAAEC,iCAAiC,MAAjCA,2CAAiC;IAAEC,0BAA0B,MAA1BA,oCAA0B;IAAEC,oBAAoB,MAApBA,8BAAoB;IAC1IC,WAAW,MAAXA,wBAAW;IAAEC,qBAAqB,MAArBA,kCAAqB;IAAEC,0BAA0B,MAA1BA,uCAA0B;IAAEC,6BAA6B,MAA7BA,0CAA6B;IAAEC,uBAAuB,MAAvBA,oCAAuB;IACtHC,cAAc,MAAdA,8BAAc;IAAEC,wBAAwB,MAAxBA,wCAAwB;IAAEC,6BAA6B,MAA7BA,6CAA6B;IAAEC,gCAAgC,MAAhCA,gDAAgC;IAAEC,0BAA0B,MAA1BA,0CAA0B;IACrIC,WAAW,MAAXA,wBAAW;IAAEC,0BAA0B,MAA1BA,uCAA0B;IAAEC,uBAAuB,MAAvBA,oCAAuB;IAChEC,2BAA2B,MAA3BA,kCAA2B;IAC3BC,YAAY,MAAZA,0BAAY;IAAEC,sBAAsB,MAAtBA,oCAAsB;IAAEC,2BAA2B,MAA3BA,yCAA2B;IAAEC,8BAA8B,MAA9BA,4CAA8B;IAAEC,wBAAwB,MAAxBA,sCAAwB;IAC3HC,mBAAmB,MAAnBA,0BAAmB;;
|
1
|
+
{"version":3,"sources":["index.js"],"sourcesContent":["export { MenuProvider, useMenuContext_unstable } from './contexts/menuContext';\nexport { MenuTriggerContextProvider, useMenuTriggerContext_unstable } from './contexts/menuTriggerContext';\nexport { MenuGroupContextProvider, useMenuGroupContext_unstable } from './contexts/menuGroupContext';\nexport { MenuListProvider, useMenuListContext_unstable } from './contexts/menuListContext';\nexport { Menu, renderMenu_unstable, useMenuContextValues_unstable, useMenu_unstable } from './Menu';\nexport { MenuDivider, menuDividerClassNames, renderMenuDivider_unstable, useMenuDividerStyles_unstable, useMenuDivider_unstable } from './MenuDivider';\nexport { MenuGroup, menuGroupClassNames, renderMenuGroup_unstable, useMenuGroupContextValues_unstable, useMenuGroupStyles_unstable, useMenuGroup_unstable } from './MenuGroup';\nexport { MenuGroupHeader, menuGroupHeaderClassNames, renderMenuGroupHeader_unstable, useMenuGroupHeaderStyles_unstable, useMenuGroupHeader_unstable } from './MenuGroupHeader';\nexport { MenuItem, menuItemClassNames, renderMenuItem_unstable, useMenuItemStyles_unstable, useMenuItem_unstable } from './MenuItem';\nexport { MenuItemCheckbox, menuItemCheckboxClassNames, renderMenuItemCheckbox_unstable, useMenuItemCheckboxStyles_unstable, useMenuItemCheckbox_unstable } from './MenuItemCheckbox';\nexport { MenuItemRadio, menuItemRadioClassNames, renderMenuItemRadio_unstable, useMenuItemRadioStyles_unstable, useMenuItemRadio_unstable } from './MenuItemRadio';\nexport { MenuList, menuListClassNames, renderMenuList_unstable, useMenuListContextValues_unstable, useMenuListStyles_unstable, useMenuList_unstable } from './MenuList';\nexport { MenuPopover, menuPopoverClassNames, renderMenuPopover_unstable, useMenuPopoverStyles_unstable, useMenuPopover_unstable } from './MenuPopover';\nexport { MenuSplitGroup, menuSplitGroupClassNames, renderMenuSplitGroup_unstable, useMenuSplitGroupStyles_unstable, useMenuSplitGroup_unstable } from './MenuSplitGroup';\nexport { MenuTrigger, renderMenuTrigger_unstable, useMenuTrigger_unstable } from './MenuTrigger';\nexport { useCheckmarkStyles_unstable } from './selectable/index';\nexport { MenuItemLink, menuItemLinkClassNames, renderMenuItemLink_unstable, useMenuItemLinkStyles_unstable, useMenuItemLink_unstable } from './MenuItemLink';\nexport { MENU_ENTER_EVENT, dispatchMenuEnterEvent, useOnMenuMouseEnter } from './utils';\n"],"names":["MenuProvider","useMenuContext_unstable","MenuTriggerContextProvider","useMenuTriggerContext_unstable","MenuGroupContextProvider","useMenuGroupContext_unstable","MenuListProvider","useMenuListContext_unstable","Menu","renderMenu_unstable","useMenuContextValues_unstable","useMenu_unstable","MenuDivider","menuDividerClassNames","renderMenuDivider_unstable","useMenuDividerStyles_unstable","useMenuDivider_unstable","MenuGroup","menuGroupClassNames","renderMenuGroup_unstable","useMenuGroupContextValues_unstable","useMenuGroupStyles_unstable","useMenuGroup_unstable","MenuGroupHeader","menuGroupHeaderClassNames","renderMenuGroupHeader_unstable","useMenuGroupHeaderStyles_unstable","useMenuGroupHeader_unstable","MenuItem","menuItemClassNames","renderMenuItem_unstable","useMenuItemStyles_unstable","useMenuItem_unstable","MenuItemCheckbox","menuItemCheckboxClassNames","renderMenuItemCheckbox_unstable","useMenuItemCheckboxStyles_unstable","useMenuItemCheckbox_unstable","MenuItemRadio","menuItemRadioClassNames","renderMenuItemRadio_unstable","useMenuItemRadioStyles_unstable","useMenuItemRadio_unstable","MenuList","menuListClassNames","renderMenuList_unstable","useMenuListContextValues_unstable","useMenuListStyles_unstable","useMenuList_unstable","MenuPopover","menuPopoverClassNames","renderMenuPopover_unstable","useMenuPopoverStyles_unstable","useMenuPopover_unstable","MenuSplitGroup","menuSplitGroupClassNames","renderMenuSplitGroup_unstable","useMenuSplitGroupStyles_unstable","useMenuSplitGroup_unstable","MenuTrigger","renderMenuTrigger_unstable","useMenuTrigger_unstable","useCheckmarkStyles_unstable","MenuItemLink","menuItemLinkClassNames","renderMenuItemLink_unstable","useMenuItemLinkStyles_unstable","useMenuItemLink_unstable","MENU_ENTER_EVENT","dispatchMenuEnterEvent","useOnMenuMouseEnter"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["useOnMenuEnter.js"],"sourcesContent":["import * as React from 'react';\nimport { useEventCallback } from '@fluentui/react-utilities';\nimport { elementContains } from '@fluentui/react-portal';\n/**\n * Name of the custom event\n */ export const MENU_ENTER_EVENT = 'fuimenuenter';\n/**\n * This hook works similarly to @see useOnClickOutside\n *\n * Problem: Trying to behave the same as system menus:\n * When the mouse leaves a stack of nested menus the stack should not dismiss.\n * However if the mouse leaves a stack of menus and enters a parent menu all its children menu should dismiss.\n *\n * We don't use the native mouseenter event because it would trigger too many times in the document\n * Instead, dispatch custom DOM event from the menu so that it can bubble\n * Each nested menu can use the listener to check if the event is from a child or parent menu\n */ export const useOnMenuMouseEnter = (options)=>{\n const { refs , callback , element , disabled } = options;\n // Keep mouse event here because this is essentially a custom 'mouseenter' event\n const listener = useEventCallback((ev)=>{\n const popoverRef = refs[0];\n const someMenuPopover = ev.target;\n var _popoverRef_current;\n // someMenu is a child -> will always be contained because of vParents\n // someMenu is a parent -> will always not be contained because no vParent\n // someMenu is the current popover -> it will contain itself\n const isOutsidePopover = !elementContains((_popoverRef_current = popoverRef.current) !== null && _popoverRef_current !== void 0 ? _popoverRef_current : null, someMenuPopover);\n if (isOutsidePopover && !disabled) {\n callback(ev);\n }\n });\n React.useEffect(()=>{\n // eslint-disable-next-line eqeqeq\n if (element == null) {\n return;\n }\n if (!disabled) {\n element.addEventListener(MENU_ENTER_EVENT, listener);\n }\n return ()=>{\n element.removeEventListener(MENU_ENTER_EVENT, listener);\n };\n }, [\n listener,\n element,\n disabled\n ]);\n};\n/**\n * Dispatches the custom MouseEvent enter event. Similar to calling `el.click()`\n * @param el element for the event target\n * @param nativeEvent the native mouse event this is mapped to\n */ export const dispatchMenuEnterEvent = (el, nativeEvent)=>{\n el.dispatchEvent(new CustomEvent(MENU_ENTER_EVENT, {\n bubbles: true,\n detail: {\n nativeEvent\n }\n }));\n};\n"],"names":["MENU_ENTER_EVENT","useOnMenuMouseEnter","dispatchMenuEnterEvent","options","refs","callback","element","disabled","listener","useEventCallback","ev","popoverRef","someMenuPopover","target","_popoverRef_current","isOutsidePopover","elementContains","current","React","useEffect","addEventListener","removeEventListener","el","nativeEvent","dispatchEvent","CustomEvent","bubbles","detail"],"mappings":";;;;;;;;;;;IAKiBA,gBAAgB,MAAhBA;IAWAC,mBAAmB,MAAnBA;IAoCAC,sBAAsB,MAAtBA;;;6DApDM;gCACU;6BACD;AAGrB,MAAMF,mBAAmB;AAWzB,MAAMC,sBAAsB,CAACE,UAAU;IAC9C,MAAM,EAAEC,KAAI,EAAGC,SAAQ,EAAGC,QAAO,EAAGC,SAAQ,EAAG,GAAGJ;IAClD,gFAAgF;IAChF,MAAMK,WAAWC,IAAAA,gCAAgB,EAAC,CAACC,KAAK;QACpC,MAAMC,aAAaP,IAAI,CAAC,EAAE;QAC1B,MAAMQ,kBAAkBF,GAAGG,MAAM;QACjC,IAAIC;QACJ,sEAAsE;QACtE,0EAA0E;QAC1E,4DAA4D;QAC5D,MAAMC,mBAAmB,CAACC,IAAAA,4BAAe,EAAC,AAACF,CAAAA,sBAAsBH,WAAWM,OAAO,AAAD,MAAO,IAAI,IAAIH,wBAAwB,KAAK,IAAIA,sBAAsB,IAAI,EAAEF;QAC9J,IAAIG,oBAAoB,CAACR,UAAU;YAC/BF,SAASK;QACb,CAAC;IACL;IACAQ,OAAMC,SAAS,CAAC,IAAI;QAChB,kCAAkC;QAClC,IAAIb,WAAW,IAAI,EAAE;YACjB;QACJ,CAAC;QACD,IAAI,CAACC,UAAU;YACXD,QAAQc,gBAAgB,CAACpB,kBAAkBQ;QAC/C,CAAC;QACD,OAAO,IAAI;YACPF,QAAQe,mBAAmB,CAACrB,kBAAkBQ;QAClD;IACJ,GAAG;QACCA;QACAF;QACAC;KACH;AACL;AAKW,MAAML,yBAAyB,CAACoB,IAAIC,cAAc;IACzDD,GAAGE,aAAa,CAAC,IAAIC,YAAYzB,kBAAkB;QAC/C0B,SAAS,IAAI;QACbC,QAAQ;YACJJ;QACJ;IACJ;AACJ"}
|
1
|
+
{"version":3,"sources":["useOnMenuEnter.js"],"sourcesContent":["import * as React from 'react';\nimport { useEventCallback } from '@fluentui/react-utilities';\nimport { elementContains } from '@fluentui/react-portal';\n/**\n * Name of the custom event\n */ export const MENU_ENTER_EVENT = 'fuimenuenter';\n/**\n * This hook works similarly to @see useOnClickOutside\n *\n * Problem: Trying to behave the same as system menus:\n * When the mouse leaves a stack of nested menus the stack should not dismiss.\n * However if the mouse leaves a stack of menus and enters a parent menu all its children menu should dismiss.\n *\n * We don't use the native mouseenter event because it would trigger too many times in the document\n * Instead, dispatch custom DOM event from the menu so that it can bubble\n * Each nested menu can use the listener to check if the event is from a child or parent menu\n */ export const useOnMenuMouseEnter = (options)=>{\n const { refs , callback , element , disabled } = options;\n // Keep mouse event here because this is essentially a custom 'mouseenter' event\n const listener = useEventCallback((ev)=>{\n const popoverRef = refs[0];\n const someMenuPopover = ev.target;\n var _popoverRef_current;\n // someMenu is a child -> will always be contained because of vParents\n // someMenu is a parent -> will always not be contained because no vParent\n // someMenu is the current popover -> it will contain itself\n const isOutsidePopover = !elementContains((_popoverRef_current = popoverRef.current) !== null && _popoverRef_current !== void 0 ? _popoverRef_current : null, someMenuPopover);\n if (isOutsidePopover && !disabled) {\n callback(ev);\n }\n });\n React.useEffect(()=>{\n // eslint-disable-next-line eqeqeq\n if (element == null) {\n return;\n }\n if (!disabled) {\n element.addEventListener(MENU_ENTER_EVENT, listener);\n }\n return ()=>{\n element.removeEventListener(MENU_ENTER_EVENT, listener);\n };\n }, [\n listener,\n element,\n disabled\n ]);\n};\n/**\n * Dispatches the custom MouseEvent enter event. Similar to calling `el.click()`\n * @param el - element for the event target\n * @param nativeEvent - the native mouse event this is mapped to\n */ export const dispatchMenuEnterEvent = (el, nativeEvent)=>{\n el.dispatchEvent(new CustomEvent(MENU_ENTER_EVENT, {\n bubbles: true,\n detail: {\n nativeEvent\n }\n }));\n};\n"],"names":["MENU_ENTER_EVENT","useOnMenuMouseEnter","dispatchMenuEnterEvent","options","refs","callback","element","disabled","listener","useEventCallback","ev","popoverRef","someMenuPopover","target","_popoverRef_current","isOutsidePopover","elementContains","current","React","useEffect","addEventListener","removeEventListener","el","nativeEvent","dispatchEvent","CustomEvent","bubbles","detail"],"mappings":";;;;;;;;;;;IAKiBA,gBAAgB,MAAhBA;IAWAC,mBAAmB,MAAnBA;IAoCAC,sBAAsB,MAAtBA;;;6DApDM;gCACU;6BACD;AAGrB,MAAMF,mBAAmB;AAWzB,MAAMC,sBAAsB,CAACE,UAAU;IAC9C,MAAM,EAAEC,KAAI,EAAGC,SAAQ,EAAGC,QAAO,EAAGC,SAAQ,EAAG,GAAGJ;IAClD,gFAAgF;IAChF,MAAMK,WAAWC,IAAAA,gCAAgB,EAAC,CAACC,KAAK;QACpC,MAAMC,aAAaP,IAAI,CAAC,EAAE;QAC1B,MAAMQ,kBAAkBF,GAAGG,MAAM;QACjC,IAAIC;QACJ,sEAAsE;QACtE,0EAA0E;QAC1E,4DAA4D;QAC5D,MAAMC,mBAAmB,CAACC,IAAAA,4BAAe,EAAC,AAACF,CAAAA,sBAAsBH,WAAWM,OAAO,AAAD,MAAO,IAAI,IAAIH,wBAAwB,KAAK,IAAIA,sBAAsB,IAAI,EAAEF;QAC9J,IAAIG,oBAAoB,CAACR,UAAU;YAC/BF,SAASK;QACb,CAAC;IACL;IACAQ,OAAMC,SAAS,CAAC,IAAI;QAChB,kCAAkC;QAClC,IAAIb,WAAW,IAAI,EAAE;YACjB;QACJ,CAAC;QACD,IAAI,CAACC,UAAU;YACXD,QAAQc,gBAAgB,CAACpB,kBAAkBQ;QAC/C,CAAC;QACD,OAAO,IAAI;YACPF,QAAQe,mBAAmB,CAACrB,kBAAkBQ;QAClD;IACJ,GAAG;QACCA;QACAF;QACAC;KACH;AACL;AAKW,MAAML,yBAAyB,CAACoB,IAAIC,cAAc;IACzDD,GAAGE,aAAa,CAAC,IAAIC,YAAYzB,kBAAkB;QAC/C0B,SAAS,IAAI;QACbC,QAAQ;YACJJ;QACJ;IACJ;AACJ"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@fluentui/react-menu",
|
3
|
-
"version": "9.
|
3
|
+
"version": "9.11.1",
|
4
4
|
"description": "Fluent UI menu component",
|
5
5
|
"main": "lib-commonjs/index.js",
|
6
6
|
"module": "lib/index.js",
|
@@ -13,7 +13,7 @@
|
|
13
13
|
"license": "MIT",
|
14
14
|
"scripts": {
|
15
15
|
"build": "just-scripts build",
|
16
|
-
"bundle-size": "
|
16
|
+
"bundle-size": "monosize measure",
|
17
17
|
"clean": "just-scripts clean",
|
18
18
|
"code-style": "just-scripts code-style",
|
19
19
|
"e2e": "cypress run --component",
|
@@ -30,23 +30,23 @@
|
|
30
30
|
"devDependencies": {
|
31
31
|
"@fluentui/eslint-plugin": "*",
|
32
32
|
"@fluentui/react-conformance": "*",
|
33
|
-
"@fluentui/react-conformance-griffel": "
|
33
|
+
"@fluentui/react-conformance-griffel": "*",
|
34
34
|
"@fluentui/scripts-api-extractor": "*",
|
35
35
|
"@fluentui/scripts-cypress": "*",
|
36
36
|
"@fluentui/scripts-tasks": "*"
|
37
37
|
},
|
38
38
|
"dependencies": {
|
39
39
|
"@fluentui/keyboard-keys": "^9.0.3",
|
40
|
-
"@fluentui/react-aria": "^9.3.
|
40
|
+
"@fluentui/react-aria": "^9.3.27",
|
41
41
|
"@fluentui/react-context-selector": "^9.1.26",
|
42
|
-
"@fluentui/react-icons": "^2.0.
|
43
|
-
"@fluentui/react-portal": "^9.3.
|
42
|
+
"@fluentui/react-icons": "^2.0.207",
|
43
|
+
"@fluentui/react-portal": "^9.3.3",
|
44
44
|
"@fluentui/react-positioning": "^9.8.0",
|
45
45
|
"@fluentui/react-shared-contexts": "^9.6.0",
|
46
|
-
"@fluentui/react-tabster": "^9.
|
46
|
+
"@fluentui/react-tabster": "^9.11.0",
|
47
47
|
"@fluentui/react-theme": "^9.1.9",
|
48
48
|
"@fluentui/react-utilities": "^9.10.1",
|
49
|
-
"@fluentui/react-jsx-runtime": "9.0.0-alpha.
|
49
|
+
"@fluentui/react-jsx-runtime": "9.0.0-alpha.12",
|
50
50
|
"@griffel/react": "^1.5.7",
|
51
51
|
"@swc/helpers": "^0.4.14"
|
52
52
|
},
|
@@ -1,168 +0,0 @@
|
|
1
|
-
import * as React from 'react';
|
2
|
-
import { useMenuContext_unstable } from '../../contexts/menuContext';
|
3
|
-
import { useIsSubmenu } from '../../utils/useIsSubmenu';
|
4
|
-
import { useFocusFinders } from '@fluentui/react-tabster';
|
5
|
-
import { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';
|
6
|
-
import { ArrowRight, ArrowLeft, Escape, ArrowDown } from '@fluentui/keyboard-keys';
|
7
|
-
import { applyTriggerPropsToChildren, getTriggerChild, isHTMLElement, mergeCallbacks, useEventCallback, useMergedRefs } from '@fluentui/react-utilities';
|
8
|
-
import { useARIAButtonProps } from '@fluentui/react-aria';
|
9
|
-
/**
|
10
|
-
* Create the state required to render MenuTrigger.
|
11
|
-
* Clones the only child component and adds necessary event handling behaviours to open a popup menu
|
12
|
-
*
|
13
|
-
* @param props - props from this instance of MenuTrigger
|
14
|
-
*/
|
15
|
-
export const useMenuTrigger_unstable = props => {
|
16
|
-
const {
|
17
|
-
children,
|
18
|
-
disableButtonEnhancement = false
|
19
|
-
} = props;
|
20
|
-
const triggerRef = useMenuContext_unstable(context => context.triggerRef);
|
21
|
-
const menuPopoverRef = useMenuContext_unstable(context => context.menuPopoverRef);
|
22
|
-
const setOpen = useMenuContext_unstable(context => context.setOpen);
|
23
|
-
const open = useMenuContext_unstable(context => context.open);
|
24
|
-
const triggerId = useMenuContext_unstable(context => context.triggerId);
|
25
|
-
const openOnHover = useMenuContext_unstable(context => context.openOnHover);
|
26
|
-
const openOnContext = useMenuContext_unstable(context => context.openOnContext);
|
27
|
-
const isSubmenu = useIsSubmenu();
|
28
|
-
const {
|
29
|
-
findFirstFocusable
|
30
|
-
} = useFocusFinders();
|
31
|
-
const focusFirst = React.useCallback(() => {
|
32
|
-
const firstFocusable = findFirstFocusable(menuPopoverRef.current);
|
33
|
-
firstFocusable === null || firstFocusable === void 0 ? void 0 : firstFocusable.focus();
|
34
|
-
}, [findFirstFocusable, menuPopoverRef]);
|
35
|
-
const openedWithKeyboardRef = React.useRef(false);
|
36
|
-
const hasMouseMoved = React.useRef(false);
|
37
|
-
const {
|
38
|
-
dir
|
39
|
-
} = useFluent();
|
40
|
-
const OpenArrowKey = dir === 'ltr' ? ArrowRight : ArrowLeft;
|
41
|
-
const child = getTriggerChild(children);
|
42
|
-
const onContextMenu = event => {
|
43
|
-
if (isTargetDisabled(event)) {
|
44
|
-
return;
|
45
|
-
}
|
46
|
-
if (openOnContext) {
|
47
|
-
event.preventDefault();
|
48
|
-
setOpen(event, {
|
49
|
-
open: true,
|
50
|
-
keyboard: false,
|
51
|
-
type: 'menuTriggerContextMenu',
|
52
|
-
event
|
53
|
-
});
|
54
|
-
}
|
55
|
-
};
|
56
|
-
const onClick = event => {
|
57
|
-
if (isTargetDisabled(event)) {
|
58
|
-
return;
|
59
|
-
}
|
60
|
-
if (!openOnContext) {
|
61
|
-
setOpen(event, {
|
62
|
-
open: !open,
|
63
|
-
keyboard: openedWithKeyboardRef.current,
|
64
|
-
type: 'menuTriggerClick',
|
65
|
-
event
|
66
|
-
});
|
67
|
-
openedWithKeyboardRef.current = false;
|
68
|
-
}
|
69
|
-
};
|
70
|
-
const onKeyDown = event => {
|
71
|
-
if (isTargetDisabled(event)) {
|
72
|
-
return;
|
73
|
-
}
|
74
|
-
const key = event.key;
|
75
|
-
if (!openOnContext && (isSubmenu && key === OpenArrowKey || !isSubmenu && key === ArrowDown)) {
|
76
|
-
setOpen(event, {
|
77
|
-
open: true,
|
78
|
-
keyboard: true,
|
79
|
-
type: 'menuTriggerKeyDown',
|
80
|
-
event
|
81
|
-
});
|
82
|
-
}
|
83
|
-
if (key === Escape && !isSubmenu) {
|
84
|
-
setOpen(event, {
|
85
|
-
open: false,
|
86
|
-
keyboard: true,
|
87
|
-
type: 'menuTriggerKeyDown',
|
88
|
-
event
|
89
|
-
});
|
90
|
-
}
|
91
|
-
// if menu is already open, can't rely on effects to focus
|
92
|
-
if (open && key === OpenArrowKey && isSubmenu) {
|
93
|
-
focusFirst();
|
94
|
-
}
|
95
|
-
};
|
96
|
-
const onMouseEnter = event => {
|
97
|
-
if (isTargetDisabled(event)) {
|
98
|
-
return;
|
99
|
-
}
|
100
|
-
if (openOnHover && hasMouseMoved.current) {
|
101
|
-
setOpen(event, {
|
102
|
-
open: true,
|
103
|
-
keyboard: false,
|
104
|
-
type: 'menuTriggerMouseEnter',
|
105
|
-
event
|
106
|
-
});
|
107
|
-
}
|
108
|
-
};
|
109
|
-
// Opening a menu when a mouse hasn't moved and just entering the trigger is a bad a11y experience
|
110
|
-
// First time open the mouse using mousemove and then continue with mouseenter
|
111
|
-
// Only use once to determine that the user is using the mouse since it is an expensive event to handle
|
112
|
-
const onMouseMove = event => {
|
113
|
-
if (isTargetDisabled(event)) {
|
114
|
-
return;
|
115
|
-
}
|
116
|
-
if (openOnHover && !hasMouseMoved.current) {
|
117
|
-
setOpen(event, {
|
118
|
-
open: true,
|
119
|
-
keyboard: false,
|
120
|
-
type: 'menuTriggerMouseMove',
|
121
|
-
event
|
122
|
-
});
|
123
|
-
hasMouseMoved.current = true;
|
124
|
-
}
|
125
|
-
};
|
126
|
-
const onMouseLeave = event => {
|
127
|
-
if (isTargetDisabled(event)) {
|
128
|
-
return;
|
129
|
-
}
|
130
|
-
if (openOnHover) {
|
131
|
-
setOpen(event, {
|
132
|
-
open: false,
|
133
|
-
keyboard: false,
|
134
|
-
type: 'menuTriggerMouseLeave',
|
135
|
-
event
|
136
|
-
});
|
137
|
-
}
|
138
|
-
};
|
139
|
-
const contextMenuProps = {
|
140
|
-
id: triggerId,
|
141
|
-
...(child === null || child === void 0 ? void 0 : child.props),
|
142
|
-
ref: useMergedRefs(triggerRef, child === null || child === void 0 ? void 0 : child.ref),
|
143
|
-
onMouseEnter: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onMouseEnter, onMouseEnter)),
|
144
|
-
onMouseLeave: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onMouseLeave, onMouseLeave)),
|
145
|
-
onContextMenu: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onContextMenu, onContextMenu)),
|
146
|
-
onMouseMove: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onMouseMove, onMouseMove))
|
147
|
-
};
|
148
|
-
const triggerChildProps = {
|
149
|
-
'aria-haspopup': 'menu',
|
150
|
-
'aria-expanded': !open && !isSubmenu ? undefined : open,
|
151
|
-
...contextMenuProps,
|
152
|
-
onClick: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onClick, onClick)),
|
153
|
-
onKeyDown: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onKeyDown, onKeyDown))
|
154
|
-
};
|
155
|
-
const ariaButtonTriggerChildProps = useARIAButtonProps((child === null || child === void 0 ? void 0 : child.type) === 'button' || (child === null || child === void 0 ? void 0 : child.type) === 'a' ? child.type : 'div', triggerChildProps);
|
156
|
-
return {
|
157
|
-
isSubmenu,
|
158
|
-
children: applyTriggerPropsToChildren(children, openOnContext ? contextMenuProps : disableButtonEnhancement ? triggerChildProps : ariaButtonTriggerChildProps)
|
159
|
-
};
|
160
|
-
};
|
161
|
-
const isTargetDisabled = event => {
|
162
|
-
const isDisabled = el => el.hasAttribute('disabled') || el.hasAttribute('aria-disabled') && el.getAttribute('aria-disabled') === 'true';
|
163
|
-
if (isHTMLElement(event.target) && isDisabled(event.target)) {
|
164
|
-
return true;
|
165
|
-
}
|
166
|
-
return isHTMLElement(event.currentTarget) && isDisabled(event.currentTarget);
|
167
|
-
};
|
168
|
-
//# sourceMappingURL=useMenuTrigger.styles.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["React","useMenuContext_unstable","useIsSubmenu","useFocusFinders","useFluent_unstable","useFluent","ArrowRight","ArrowLeft","Escape","ArrowDown","applyTriggerPropsToChildren","getTriggerChild","isHTMLElement","mergeCallbacks","useEventCallback","useMergedRefs","useARIAButtonProps","useMenuTrigger_unstable","props","children","disableButtonEnhancement","triggerRef","context","menuPopoverRef","setOpen","open","triggerId","openOnHover","openOnContext","isSubmenu","findFirstFocusable","focusFirst","useCallback","firstFocusable","current","focus","openedWithKeyboardRef","useRef","hasMouseMoved","dir","OpenArrowKey","child","onContextMenu","event","isTargetDisabled","preventDefault","keyboard","type","onClick","onKeyDown","key","onMouseEnter","onMouseMove","onMouseLeave","contextMenuProps","id","ref","triggerChildProps","undefined","ariaButtonTriggerChildProps","isDisabled","el","hasAttribute","getAttribute","target","currentTarget"],"sources":["useMenuTrigger.styles.js"],"sourcesContent":["import * as React from 'react';\nimport { useMenuContext_unstable } from '../../contexts/menuContext';\nimport { useIsSubmenu } from '../../utils/useIsSubmenu';\nimport { useFocusFinders } from '@fluentui/react-tabster';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { ArrowRight, ArrowLeft, Escape, ArrowDown } from '@fluentui/keyboard-keys';\nimport { applyTriggerPropsToChildren, getTriggerChild, isHTMLElement, mergeCallbacks, useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport { useARIAButtonProps } from '@fluentui/react-aria';\n/**\n * Create the state required to render MenuTrigger.\n * Clones the only child component and adds necessary event handling behaviours to open a popup menu\n *\n * @param props - props from this instance of MenuTrigger\n */ export const useMenuTrigger_unstable = (props)=>{\n const { children , disableButtonEnhancement =false } = props;\n const triggerRef = useMenuContext_unstable((context)=>context.triggerRef);\n const menuPopoverRef = useMenuContext_unstable((context)=>context.menuPopoverRef);\n const setOpen = useMenuContext_unstable((context)=>context.setOpen);\n const open = useMenuContext_unstable((context)=>context.open);\n const triggerId = useMenuContext_unstable((context)=>context.triggerId);\n const openOnHover = useMenuContext_unstable((context)=>context.openOnHover);\n const openOnContext = useMenuContext_unstable((context)=>context.openOnContext);\n const isSubmenu = useIsSubmenu();\n const { findFirstFocusable } = useFocusFinders();\n const focusFirst = React.useCallback(()=>{\n const firstFocusable = findFirstFocusable(menuPopoverRef.current);\n firstFocusable === null || firstFocusable === void 0 ? void 0 : firstFocusable.focus();\n }, [\n findFirstFocusable,\n menuPopoverRef\n ]);\n const openedWithKeyboardRef = React.useRef(false);\n const hasMouseMoved = React.useRef(false);\n const { dir } = useFluent();\n const OpenArrowKey = dir === 'ltr' ? ArrowRight : ArrowLeft;\n const child = getTriggerChild(children);\n const onContextMenu = (event)=>{\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnContext) {\n event.preventDefault();\n setOpen(event, {\n open: true,\n keyboard: false,\n type: 'menuTriggerContextMenu',\n event\n });\n }\n };\n const onClick = (event)=>{\n if (isTargetDisabled(event)) {\n return;\n }\n if (!openOnContext) {\n setOpen(event, {\n open: !open,\n keyboard: openedWithKeyboardRef.current,\n type: 'menuTriggerClick',\n event\n });\n openedWithKeyboardRef.current = false;\n }\n };\n const onKeyDown = (event)=>{\n if (isTargetDisabled(event)) {\n return;\n }\n const key = event.key;\n if (!openOnContext && (isSubmenu && key === OpenArrowKey || !isSubmenu && key === ArrowDown)) {\n setOpen(event, {\n open: true,\n keyboard: true,\n type: 'menuTriggerKeyDown',\n event\n });\n }\n if (key === Escape && !isSubmenu) {\n setOpen(event, {\n open: false,\n keyboard: true,\n type: 'menuTriggerKeyDown',\n event\n });\n }\n // if menu is already open, can't rely on effects to focus\n if (open && key === OpenArrowKey && isSubmenu) {\n focusFirst();\n }\n };\n const onMouseEnter = (event)=>{\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover && hasMouseMoved.current) {\n setOpen(event, {\n open: true,\n keyboard: false,\n type: 'menuTriggerMouseEnter',\n event\n });\n }\n };\n // Opening a menu when a mouse hasn't moved and just entering the trigger is a bad a11y experience\n // First time open the mouse using mousemove and then continue with mouseenter\n // Only use once to determine that the user is using the mouse since it is an expensive event to handle\n const onMouseMove = (event)=>{\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover && !hasMouseMoved.current) {\n setOpen(event, {\n open: true,\n keyboard: false,\n type: 'menuTriggerMouseMove',\n event\n });\n hasMouseMoved.current = true;\n }\n };\n const onMouseLeave = (event)=>{\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover) {\n setOpen(event, {\n open: false,\n keyboard: false,\n type: 'menuTriggerMouseLeave',\n event\n });\n }\n };\n const contextMenuProps = {\n id: triggerId,\n ...child === null || child === void 0 ? void 0 : child.props,\n ref: useMergedRefs(triggerRef, child === null || child === void 0 ? void 0 : child.ref),\n onMouseEnter: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onMouseEnter, onMouseEnter)),\n onMouseLeave: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onMouseLeave, onMouseLeave)),\n onContextMenu: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onContextMenu, onContextMenu)),\n onMouseMove: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onMouseMove, onMouseMove))\n };\n const triggerChildProps = {\n 'aria-haspopup': 'menu',\n 'aria-expanded': !open && !isSubmenu ? undefined : open,\n ...contextMenuProps,\n onClick: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onClick, onClick)),\n onKeyDown: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onKeyDown, onKeyDown))\n };\n const ariaButtonTriggerChildProps = useARIAButtonProps((child === null || child === void 0 ? void 0 : child.type) === 'button' || (child === null || child === void 0 ? void 0 : child.type) === 'a' ? child.type : 'div', triggerChildProps);\n return {\n isSubmenu,\n children: applyTriggerPropsToChildren(children, openOnContext ? contextMenuProps : disableButtonEnhancement ? triggerChildProps : ariaButtonTriggerChildProps)\n };\n};\nconst isTargetDisabled = (event)=>{\n const isDisabled = (el)=>el.hasAttribute('disabled') || el.hasAttribute('aria-disabled') && el.getAttribute('aria-disabled') === 'true';\n if (isHTMLElement(event.target) && isDisabled(event.target)) {\n return true;\n }\n return isHTMLElement(event.currentTarget) && isDisabled(event.currentTarget);\n};\n"],"mappings":"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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["useMenuTrigger.styles.js"],"sourcesContent":["import * as React from 'react';\nimport { useMenuContext_unstable } from '../../contexts/menuContext';\nimport { useIsSubmenu } from '../../utils/useIsSubmenu';\nimport { useFocusFinders } from '@fluentui/react-tabster';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { ArrowRight, ArrowLeft, Escape, ArrowDown } from '@fluentui/keyboard-keys';\nimport { applyTriggerPropsToChildren, getTriggerChild, isHTMLElement, mergeCallbacks, useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport { useARIAButtonProps } from '@fluentui/react-aria';\n/**\n * Create the state required to render MenuTrigger.\n * Clones the only child component and adds necessary event handling behaviours to open a popup menu\n *\n * @param props - props from this instance of MenuTrigger\n */\nexport const useMenuTrigger_unstable = props => {\n const {\n children,\n disableButtonEnhancement = false\n } = props;\n const triggerRef = useMenuContext_unstable(context => context.triggerRef);\n const menuPopoverRef = useMenuContext_unstable(context => context.menuPopoverRef);\n const setOpen = useMenuContext_unstable(context => context.setOpen);\n const open = useMenuContext_unstable(context => context.open);\n const triggerId = useMenuContext_unstable(context => context.triggerId);\n const openOnHover = useMenuContext_unstable(context => context.openOnHover);\n const openOnContext = useMenuContext_unstable(context => context.openOnContext);\n const isSubmenu = useIsSubmenu();\n const {\n findFirstFocusable\n } = useFocusFinders();\n const focusFirst = React.useCallback(() => {\n const firstFocusable = findFirstFocusable(menuPopoverRef.current);\n firstFocusable === null || firstFocusable === void 0 ? void 0 : firstFocusable.focus();\n }, [findFirstFocusable, menuPopoverRef]);\n const openedWithKeyboardRef = React.useRef(false);\n const hasMouseMoved = React.useRef(false);\n const {\n dir\n } = useFluent();\n const OpenArrowKey = dir === 'ltr' ? ArrowRight : ArrowLeft;\n const child = getTriggerChild(children);\n const onContextMenu = event => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnContext) {\n event.preventDefault();\n setOpen(event, {\n open: true,\n keyboard: false,\n type: 'menuTriggerContextMenu',\n event\n });\n }\n };\n const onClick = event => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (!openOnContext) {\n setOpen(event, {\n open: !open,\n keyboard: openedWithKeyboardRef.current,\n type: 'menuTriggerClick',\n event\n });\n openedWithKeyboardRef.current = false;\n }\n };\n const onKeyDown = event => {\n if (isTargetDisabled(event)) {\n return;\n }\n const key = event.key;\n if (!openOnContext && (isSubmenu && key === OpenArrowKey || !isSubmenu && key === ArrowDown)) {\n setOpen(event, {\n open: true,\n keyboard: true,\n type: 'menuTriggerKeyDown',\n event\n });\n }\n if (key === Escape && !isSubmenu) {\n setOpen(event, {\n open: false,\n keyboard: true,\n type: 'menuTriggerKeyDown',\n event\n });\n }\n // if menu is already open, can't rely on effects to focus\n if (open && key === OpenArrowKey && isSubmenu) {\n focusFirst();\n }\n };\n const onMouseEnter = event => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover && hasMouseMoved.current) {\n setOpen(event, {\n open: true,\n keyboard: false,\n type: 'menuTriggerMouseEnter',\n event\n });\n }\n };\n // Opening a menu when a mouse hasn't moved and just entering the trigger is a bad a11y experience\n // First time open the mouse using mousemove and then continue with mouseenter\n // Only use once to determine that the user is using the mouse since it is an expensive event to handle\n const onMouseMove = event => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover && !hasMouseMoved.current) {\n setOpen(event, {\n open: true,\n keyboard: false,\n type: 'menuTriggerMouseMove',\n event\n });\n hasMouseMoved.current = true;\n }\n };\n const onMouseLeave = event => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover) {\n setOpen(event, {\n open: false,\n keyboard: false,\n type: 'menuTriggerMouseLeave',\n event\n });\n }\n };\n const contextMenuProps = {\n id: triggerId,\n ...(child === null || child === void 0 ? void 0 : child.props),\n ref: useMergedRefs(triggerRef, child === null || child === void 0 ? void 0 : child.ref),\n onMouseEnter: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onMouseEnter, onMouseEnter)),\n onMouseLeave: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onMouseLeave, onMouseLeave)),\n onContextMenu: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onContextMenu, onContextMenu)),\n onMouseMove: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onMouseMove, onMouseMove))\n };\n const triggerChildProps = {\n 'aria-haspopup': 'menu',\n 'aria-expanded': !open && !isSubmenu ? undefined : open,\n ...contextMenuProps,\n onClick: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onClick, onClick)),\n onKeyDown: useEventCallback(mergeCallbacks(child === null || child === void 0 ? void 0 : child.props.onKeyDown, onKeyDown))\n };\n const ariaButtonTriggerChildProps = useARIAButtonProps((child === null || child === void 0 ? void 0 : child.type) === 'button' || (child === null || child === void 0 ? void 0 : child.type) === 'a' ? child.type : 'div', triggerChildProps);\n return {\n isSubmenu,\n children: applyTriggerPropsToChildren(children, openOnContext ? contextMenuProps : disableButtonEnhancement ? triggerChildProps : ariaButtonTriggerChildProps)\n };\n};\nconst isTargetDisabled = event => {\n const isDisabled = el => el.hasAttribute('disabled') || el.hasAttribute('aria-disabled') && el.getAttribute('aria-disabled') === 'true';\n if (isHTMLElement(event.target) && isDisabled(event.target)) {\n return true;\n }\n return isHTMLElement(event.currentTarget) && isDisabled(event.currentTarget);\n};\n//# sourceMappingURL=useMenuTrigger.styles.js.map"],"names":["useMenuTrigger_unstable","props","children","disableButtonEnhancement","triggerRef","useMenuContext_unstable","context","menuPopoverRef","setOpen","open","triggerId","openOnHover","openOnContext","isSubmenu","useIsSubmenu","findFirstFocusable","useFocusFinders","focusFirst","React","useCallback","firstFocusable","current","focus","openedWithKeyboardRef","useRef","hasMouseMoved","dir","useFluent","OpenArrowKey","ArrowRight","ArrowLeft","child","getTriggerChild","onContextMenu","event","isTargetDisabled","preventDefault","keyboard","type","onClick","onKeyDown","key","ArrowDown","Escape","onMouseEnter","onMouseMove","onMouseLeave","contextMenuProps","id","ref","useMergedRefs","useEventCallback","mergeCallbacks","triggerChildProps","undefined","ariaButtonTriggerChildProps","useARIAButtonProps","applyTriggerPropsToChildren","isDisabled","el","hasAttribute","getAttribute","isHTMLElement","target","currentTarget"],"mappings":"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"}
|