@fluentui/react-menu 9.7.1 → 9.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.json CHANGED
@@ -2,7 +2,58 @@
2
2
  "name": "@fluentui/react-menu",
3
3
  "entries": [
4
4
  {
5
- "date": "Fri, 10 Mar 2023 07:11:11 GMT",
5
+ "date": "Mon, 13 Mar 2023 08:55:00 GMT",
6
+ "tag": "@fluentui/react-menu_v9.7.2",
7
+ "version": "9.7.2",
8
+ "comments": {
9
+ "patch": [
10
+ {
11
+ "author": "bernardo.sunderhus@gmail.com",
12
+ "package": "@fluentui/react-menu",
13
+ "commit": "edf96a6b5d6f13843ada1400480e347b84384b8e",
14
+ "comment": "fix: stops using instaceof in favor of isHTMLElement"
15
+ },
16
+ {
17
+ "author": "beachball",
18
+ "package": "@fluentui/react-menu",
19
+ "comment": "Bump @fluentui/react-aria to v9.3.13",
20
+ "commit": "edf96a6b5d6f13843ada1400480e347b84384b8e"
21
+ },
22
+ {
23
+ "author": "beachball",
24
+ "package": "@fluentui/react-menu",
25
+ "comment": "Bump @fluentui/react-context-selector to v9.1.13",
26
+ "commit": "edf96a6b5d6f13843ada1400480e347b84384b8e"
27
+ },
28
+ {
29
+ "author": "beachball",
30
+ "package": "@fluentui/react-menu",
31
+ "comment": "Bump @fluentui/react-portal to v9.1.12",
32
+ "commit": "edf96a6b5d6f13843ada1400480e347b84384b8e"
33
+ },
34
+ {
35
+ "author": "beachball",
36
+ "package": "@fluentui/react-menu",
37
+ "comment": "Bump @fluentui/react-positioning to v9.5.3",
38
+ "commit": "edf96a6b5d6f13843ada1400480e347b84384b8e"
39
+ },
40
+ {
41
+ "author": "beachball",
42
+ "package": "@fluentui/react-menu",
43
+ "comment": "Bump @fluentui/react-tabster to v9.5.6",
44
+ "commit": "edf96a6b5d6f13843ada1400480e347b84384b8e"
45
+ },
46
+ {
47
+ "author": "beachball",
48
+ "package": "@fluentui/react-menu",
49
+ "comment": "Bump @fluentui/react-utilities to v9.7.0",
50
+ "commit": "edf96a6b5d6f13843ada1400480e347b84384b8e"
51
+ }
52
+ ]
53
+ }
54
+ },
55
+ {
56
+ "date": "Fri, 10 Mar 2023 07:14:01 GMT",
6
57
  "tag": "@fluentui/react-menu_v9.7.1",
7
58
  "version": "9.7.1",
8
59
  "comments": {
package/CHANGELOG.md CHANGED
@@ -1,12 +1,27 @@
1
1
  # Change Log - @fluentui/react-menu
2
2
 
3
- This log was last generated on Fri, 10 Mar 2023 07:11:11 GMT and should not be manually modified.
3
+ This log was last generated on Mon, 13 Mar 2023 08:55:00 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [9.7.2](https://github.com/microsoft/fluentui/tree/@fluentui/react-menu_v9.7.2)
8
+
9
+ Mon, 13 Mar 2023 08:55:00 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-menu_v9.7.1..@fluentui/react-menu_v9.7.2)
11
+
12
+ ### Patches
13
+
14
+ - fix: stops using instaceof in favor of isHTMLElement ([PR #27161](https://github.com/microsoft/fluentui/pull/27161) by bernardo.sunderhus@gmail.com)
15
+ - Bump @fluentui/react-aria to v9.3.13 ([PR #27161](https://github.com/microsoft/fluentui/pull/27161) by beachball)
16
+ - Bump @fluentui/react-context-selector to v9.1.13 ([PR #27161](https://github.com/microsoft/fluentui/pull/27161) by beachball)
17
+ - Bump @fluentui/react-portal to v9.1.12 ([PR #27161](https://github.com/microsoft/fluentui/pull/27161) by beachball)
18
+ - Bump @fluentui/react-positioning to v9.5.3 ([PR #27161](https://github.com/microsoft/fluentui/pull/27161) by beachball)
19
+ - Bump @fluentui/react-tabster to v9.5.6 ([PR #27161](https://github.com/microsoft/fluentui/pull/27161) by beachball)
20
+ - Bump @fluentui/react-utilities to v9.7.0 ([PR #27161](https://github.com/microsoft/fluentui/pull/27161) by beachball)
21
+
7
22
  ## [9.7.1](https://github.com/microsoft/fluentui/tree/@fluentui/react-menu_v9.7.1)
8
23
 
9
- Fri, 10 Mar 2023 07:11:11 GMT
24
+ Fri, 10 Mar 2023 07:14:01 GMT
10
25
  [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-menu_v9.7.0..@fluentui/react-menu_v9.7.1)
11
26
 
12
27
  ### Patches
@@ -4,7 +4,7 @@ import { useIsSubmenu } from '../../utils/useIsSubmenu';
4
4
  import { useFocusFinders } from '@fluentui/react-tabster';
5
5
  import { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';
6
6
  import { ArrowRight, ArrowLeft, Escape, ArrowDown } from '@fluentui/keyboard-keys';
7
- import { applyTriggerPropsToChildren, getTriggerChild, mergeCallbacks, useEventCallback, useMergedRefs } from '@fluentui/react-utilities';
7
+ import { applyTriggerPropsToChildren, getTriggerChild, isHTMLElement, mergeCallbacks, useEventCallback, useMergedRefs } from '@fluentui/react-utilities';
8
8
  import { useARIAButtonProps } from '@fluentui/react-aria';
9
9
  /**
10
10
  * Create the state required to render MenuTrigger.
@@ -158,11 +158,11 @@ export const useMenuTrigger_unstable = props => {
158
158
  children: applyTriggerPropsToChildren(children, openOnContext ? contextMenuProps : disableButtonEnhancement ? triggerChildProps : ariaButtonTriggerChildProps)
159
159
  };
160
160
  };
161
- const isTargetDisabled = e => {
161
+ const isTargetDisabled = event => {
162
162
  const isDisabled = el => el.hasAttribute('disabled') || el.hasAttribute('aria-disabled') && el.getAttribute('aria-disabled') === 'true';
163
- if (e.target instanceof HTMLElement && isDisabled(e.target)) {
163
+ if (isHTMLElement(event.target) && isDisabled(event.target)) {
164
164
  return true;
165
165
  }
166
- return e.currentTarget instanceof HTMLElement && isDisabled(e.currentTarget);
166
+ return isHTMLElement(event.currentTarget) && isDisabled(event.currentTarget);
167
167
  };
168
168
  //# sourceMappingURL=useMenuTrigger.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMenuContext_unstable","useIsSubmenu","useFocusFinders","useFluent_unstable","useFluent","ArrowRight","ArrowLeft","Escape","ArrowDown","applyTriggerPropsToChildren","getTriggerChild","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","e","isDisabled","el","hasAttribute","getAttribute","target","HTMLElement","currentTarget"],"sources":["../src/packages/react-components/react-menu/src/components/MenuTrigger/useMenuTrigger.ts"],"sourcesContent":["import * as React from 'react';\nimport { MenuTriggerProps, MenuTriggerState } from './MenuTrigger.types';\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 {\n applyTriggerPropsToChildren,\n getTriggerChild,\n mergeCallbacks,\n useEventCallback,\n useMergedRefs,\n} from '@fluentui/react-utilities';\nimport { useARIAButtonProps } from '@fluentui/react-aria';\n\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: MenuTriggerProps): MenuTriggerState => {\n const { children, disableButtonEnhancement = false } = props;\n\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\n const isSubmenu = useIsSubmenu();\n\n const { findFirstFocusable } = useFocusFinders();\n const focusFirst = React.useCallback(() => {\n const firstFocusable = findFirstFocusable(menuPopoverRef.current);\n firstFocusable?.focus();\n }, [findFirstFocusable, menuPopoverRef]);\n\n const openedWithKeyboardRef = React.useRef(false);\n const hasMouseMoved = React.useRef(false);\n\n const { dir } = useFluent();\n const OpenArrowKey = dir === 'ltr' ? ArrowRight : ArrowLeft;\n\n const child = getTriggerChild(children);\n\n const onContextMenu = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n\n if (openOnContext) {\n event.preventDefault();\n setOpen(event, { open: true, keyboard: false, type: 'menuTriggerContextMenu', event });\n }\n };\n\n const onClick = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n\n if (!openOnContext) {\n setOpen(event, { open: !open, keyboard: openedWithKeyboardRef.current, type: 'menuTriggerClick', event });\n openedWithKeyboardRef.current = false;\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n\n const key = event.key;\n\n if (!openOnContext && ((isSubmenu && key === OpenArrowKey) || (!isSubmenu && key === ArrowDown))) {\n setOpen(event, { open: true, keyboard: true, type: 'menuTriggerKeyDown', event });\n }\n\n if (key === Escape && !isSubmenu) {\n setOpen(event, { open: false, keyboard: true, type: 'menuTriggerKeyDown', 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\n const onMouseEnter = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover && hasMouseMoved.current) {\n setOpen(event, { open: true, keyboard: false, type: 'menuTriggerMouseEnter', 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: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover && !hasMouseMoved.current) {\n setOpen(event, { open: true, keyboard: false, type: 'menuTriggerMouseMove', event });\n hasMouseMoved.current = true;\n }\n };\n\n const onMouseLeave = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover) {\n setOpen(event, { open: false, keyboard: false, type: 'menuTriggerMouseLeave', event });\n }\n };\n\n const contextMenuProps = {\n id: triggerId,\n ...child?.props,\n ref: useMergedRefs(triggerRef, child?.ref),\n onMouseEnter: useEventCallback(mergeCallbacks(child?.props.onMouseEnter, onMouseEnter)),\n onMouseLeave: useEventCallback(mergeCallbacks(child?.props.onMouseLeave, onMouseLeave)),\n onContextMenu: useEventCallback(mergeCallbacks(child?.props.onContextMenu, onContextMenu)),\n onMouseMove: useEventCallback(mergeCallbacks(child?.props.onMouseMove, onMouseMove)),\n };\n\n const triggerChildProps = {\n 'aria-haspopup': 'menu',\n 'aria-expanded': !open && !isSubmenu ? undefined : open,\n ...contextMenuProps,\n onClick: useEventCallback(mergeCallbacks(child?.props.onClick, onClick)),\n onKeyDown: useEventCallback(mergeCallbacks(child?.props.onKeyDown, onKeyDown)),\n } as const;\n\n const ariaButtonTriggerChildProps = useARIAButtonProps(\n child?.type === 'button' || child?.type === 'a' ? child.type : 'div',\n triggerChildProps,\n );\n\n return {\n isSubmenu,\n children: applyTriggerPropsToChildren(\n children,\n openOnContext ? contextMenuProps : disableButtonEnhancement ? triggerChildProps : ariaButtonTriggerChildProps,\n ),\n };\n};\n\nconst isTargetDisabled = (e: React.SyntheticEvent | Event) => {\n const isDisabled = (el: HTMLElement) =>\n el.hasAttribute('disabled') || (el.hasAttribute('aria-disabled') && el.getAttribute('aria-disabled') === 'true');\n if (e.target instanceof HTMLElement && isDisabled(e.target)) {\n return true;\n }\n\n return e.currentTarget instanceof HTMLElement && isDisabled(e.currentTarget);\n};\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,uBAAuB,QAAQ,4BAA4B;AACpE,SAASC,YAAY,QAAQ,0BAA0B;AACvD,SAASC,eAAe,QAAQ,yBAAyB;AACzD,SAASC,kBAAkB,IAAIC,SAAS,QAAQ,iCAAiC;AACjF,SAASC,UAAU,EAAEC,SAAS,EAAEC,MAAM,EAAEC,SAAS,QAAQ,yBAAyB;AAClF,SACEC,2BAA2B,EAC3BC,eAAe,EACfC,cAAc,EACdC,gBAAgB,EAChBC,aAAa,QACR,2BAA2B;AAClC,SAASC,kBAAkB,QAAQ,sBAAsB;AAEzD;;;;;;AAMA,OAAO,MAAMC,uBAAuB,GAAIC,KAAuB,IAAsB;EACnF,MAAM;IAAEC,QAAQ;IAAEC,wBAAwB,GAAG;EAAK,CAAE,GAAGF,KAAK;EAE5D,MAAMG,UAAU,GAAGnB,uBAAuB,CAACoB,OAAO,IAAIA,OAAO,CAACD,UAAU,CAAC;EACzE,MAAME,cAAc,GAAGrB,uBAAuB,CAACoB,OAAO,IAAIA,OAAO,CAACC,cAAc,CAAC;EACjF,MAAMC,OAAO,GAAGtB,uBAAuB,CAACoB,OAAO,IAAIA,OAAO,CAACE,OAAO,CAAC;EACnE,MAAMC,IAAI,GAAGvB,uBAAuB,CAACoB,OAAO,IAAIA,OAAO,CAACG,IAAI,CAAC;EAC7D,MAAMC,SAAS,GAAGxB,uBAAuB,CAACoB,OAAO,IAAIA,OAAO,CAACI,SAAS,CAAC;EACvE,MAAMC,WAAW,GAAGzB,uBAAuB,CAACoB,OAAO,IAAIA,OAAO,CAACK,WAAW,CAAC;EAC3E,MAAMC,aAAa,GAAG1B,uBAAuB,CAACoB,OAAO,IAAIA,OAAO,CAACM,aAAa,CAAC;EAE/E,MAAMC,SAAS,GAAG1B,YAAY,EAAE;EAEhC,MAAM;IAAE2B;EAAkB,CAAE,GAAG1B,eAAe,EAAE;EAChD,MAAM2B,UAAU,GAAG9B,KAAK,CAAC+B,WAAW,CAAC,MAAK;IACxC,MAAMC,cAAc,GAAGH,kBAAkB,CAACP,cAAc,CAACW,OAAO,CAAC;IACjED,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEE,KAAK,EAAE;EACzB,CAAC,EAAE,CAACL,kBAAkB,EAAEP,cAAc,CAAC,CAAC;EAExC,MAAMa,qBAAqB,GAAGnC,KAAK,CAACoC,MAAM,CAAC,KAAK,CAAC;EACjD,MAAMC,aAAa,GAAGrC,KAAK,CAACoC,MAAM,CAAC,KAAK,CAAC;EAEzC,MAAM;IAAEE;EAAG,CAAE,GAAGjC,SAAS,EAAE;EAC3B,MAAMkC,YAAY,GAAGD,GAAG,KAAK,KAAK,GAAGhC,UAAU,GAAGC,SAAS;EAE3D,MAAMiC,KAAK,GAAG7B,eAAe,CAACO,QAAQ,CAAC;EAEvC,MAAMuB,aAAa,GAAIC,KAA+E,IAAI;IACxG,IAAIC,gBAAgB,CAACD,KAAK,CAAC,EAAE;MAC3B;;IAGF,IAAIf,aAAa,EAAE;MACjBe,KAAK,CAACE,cAAc,EAAE;MACtBrB,OAAO,CAACmB,KAAK,EAAE;QAAElB,IAAI,EAAE,IAAI;QAAEqB,QAAQ,EAAE,KAAK;QAAEC,IAAI,EAAE,wBAAwB;QAAEJ;MAAK,CAAE,CAAC;;EAE1F,CAAC;EAED,MAAMK,OAAO,GAAIL,KAA+E,IAAI;IAClG,IAAIC,gBAAgB,CAACD,KAAK,CAAC,EAAE;MAC3B;;IAGF,IAAI,CAACf,aAAa,EAAE;MAClBJ,OAAO,CAACmB,KAAK,EAAE;QAAElB,IAAI,EAAE,CAACA,IAAI;QAAEqB,QAAQ,EAAEV,qBAAqB,CAACF,OAAO;QAAEa,IAAI,EAAE,kBAAkB;QAAEJ;MAAK,CAAE,CAAC;MACzGP,qBAAqB,CAACF,OAAO,GAAG,KAAK;;EAEzC,CAAC;EAED,MAAMe,SAAS,GAAIN,KAAkF,IAAI;IACvG,IAAIC,gBAAgB,CAACD,KAAK,CAAC,EAAE;MAC3B;;IAGF,MAAMO,GAAG,GAAGP,KAAK,CAACO,GAAG;IAErB,IAAI,CAACtB,aAAa,KAAMC,SAAS,IAAIqB,GAAG,KAAKV,YAAY,IAAM,CAACX,SAAS,IAAIqB,GAAG,KAAKxC,SAAU,CAAC,EAAE;MAChGc,OAAO,CAACmB,KAAK,EAAE;QAAElB,IAAI,EAAE,IAAI;QAAEqB,QAAQ,EAAE,IAAI;QAAEC,IAAI,EAAE,oBAAoB;QAAEJ;MAAK,CAAE,CAAC;;IAGnF,IAAIO,GAAG,KAAKzC,MAAM,IAAI,CAACoB,SAAS,EAAE;MAChCL,OAAO,CAACmB,KAAK,EAAE;QAAElB,IAAI,EAAE,KAAK;QAAEqB,QAAQ,EAAE,IAAI;QAAEC,IAAI,EAAE,oBAAoB;QAAEJ;MAAK,CAAE,CAAC;;IAGpF;IACA,IAAIlB,IAAI,IAAIyB,GAAG,KAAKV,YAAY,IAAIX,SAAS,EAAE;MAC7CE,UAAU,EAAE;;EAEhB,CAAC;EAED,MAAMoB,YAAY,GAAIR,KAA+E,IAAI;IACvG,IAAIC,gBAAgB,CAACD,KAAK,CAAC,EAAE;MAC3B;;IAEF,IAAIhB,WAAW,IAAIW,aAAa,CAACJ,OAAO,EAAE;MACxCV,OAAO,CAACmB,KAAK,EAAE;QAAElB,IAAI,EAAE,IAAI;QAAEqB,QAAQ,EAAE,KAAK;QAAEC,IAAI,EAAE,uBAAuB;QAAEJ;MAAK,CAAE,CAAC;;EAEzF,CAAC;EAED;EACA;EACA;EACA,MAAMS,WAAW,GAAIT,KAA+E,IAAI;IACtG,IAAIC,gBAAgB,CAACD,KAAK,CAAC,EAAE;MAC3B;;IAEF,IAAIhB,WAAW,IAAI,CAACW,aAAa,CAACJ,OAAO,EAAE;MACzCV,OAAO,CAACmB,KAAK,EAAE;QAAElB,IAAI,EAAE,IAAI;QAAEqB,QAAQ,EAAE,KAAK;QAAEC,IAAI,EAAE,sBAAsB;QAAEJ;MAAK,CAAE,CAAC;MACpFL,aAAa,CAACJ,OAAO,GAAG,IAAI;;EAEhC,CAAC;EAED,MAAMmB,YAAY,GAAIV,KAA+E,IAAI;IACvG,IAAIC,gBAAgB,CAACD,KAAK,CAAC,EAAE;MAC3B;;IAEF,IAAIhB,WAAW,EAAE;MACfH,OAAO,CAACmB,KAAK,EAAE;QAAElB,IAAI,EAAE,KAAK;QAAEqB,QAAQ,EAAE,KAAK;QAAEC,IAAI,EAAE,uBAAuB;QAAEJ;MAAK,CAAE,CAAC;;EAE1F,CAAC;EAED,MAAMW,gBAAgB,GAAG;IACvBC,EAAE,EAAE7B,SAAS;IACb,IAAGe,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEvB,KAAK;IACfsC,GAAG,EAAEzC,aAAa,CAACM,UAAU,EAAEoB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEe,GAAG,CAAC;IAC1CL,YAAY,EAAErC,gBAAgB,CAACD,cAAc,CAAC4B,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEvB,KAAK,CAACiC,YAAY,EAAEA,YAAY,CAAC,CAAC;IACvFE,YAAY,EAAEvC,gBAAgB,CAACD,cAAc,CAAC4B,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEvB,KAAK,CAACmC,YAAY,EAAEA,YAAY,CAAC,CAAC;IACvFX,aAAa,EAAE5B,gBAAgB,CAACD,cAAc,CAAC4B,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEvB,KAAK,CAACwB,aAAa,EAAEA,aAAa,CAAC,CAAC;IAC1FU,WAAW,EAAEtC,gBAAgB,CAACD,cAAc,CAAC4B,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEvB,KAAK,CAACkC,WAAW,EAAEA,WAAW,CAAC;GACpF;EAED,MAAMK,iBAAiB,GAAG;IACxB,eAAe,EAAE,MAAM;IACvB,eAAe,EAAE,CAAChC,IAAI,IAAI,CAACI,SAAS,GAAG6B,SAAS,GAAGjC,IAAI;IACvD,GAAG6B,gBAAgB;IACnBN,OAAO,EAAElC,gBAAgB,CAACD,cAAc,CAAC4B,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEvB,KAAK,CAAC8B,OAAO,EAAEA,OAAO,CAAC,CAAC;IACxEC,SAAS,EAAEnC,gBAAgB,CAACD,cAAc,CAAC4B,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEvB,KAAK,CAAC+B,SAAS,EAAEA,SAAS,CAAC;GACrE;EAEV,MAAMU,2BAA2B,GAAG3C,kBAAkB,CACpD,CAAAyB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEM,IAAI,MAAK,QAAQ,IAAI,CAAAN,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEM,IAAI,MAAK,GAAG,GAAGN,KAAK,CAACM,IAAI,GAAG,KAAK,EACpEU,iBAAiB,CAClB;EAED,OAAO;IACL5B,SAAS;IACTV,QAAQ,EAAER,2BAA2B,CACnCQ,QAAQ,EACRS,aAAa,GAAG0B,gBAAgB,GAAGlC,wBAAwB,GAAGqC,iBAAiB,GAAGE,2BAA2B;GAEhH;AACH,CAAC;AAED,MAAMf,gBAAgB,GAAIgB,CAA+B,IAAI;EAC3D,MAAMC,UAAU,GAAIC,EAAe,IACjCA,EAAE,CAACC,YAAY,CAAC,UAAU,CAAC,IAAKD,EAAE,CAACC,YAAY,CAAC,eAAe,CAAC,IAAID,EAAE,CAACE,YAAY,CAAC,eAAe,CAAC,KAAK,MAAO;EAClH,IAAIJ,CAAC,CAACK,MAAM,YAAYC,WAAW,IAAIL,UAAU,CAACD,CAAC,CAACK,MAAM,CAAC,EAAE;IAC3D,OAAO,IAAI;;EAGb,OAAOL,CAAC,CAACO,aAAa,YAAYD,WAAW,IAAIL,UAAU,CAACD,CAAC,CAACO,aAAa,CAAC;AAC9E,CAAC"}
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":["../src/packages/react-components/react-menu/src/components/MenuTrigger/useMenuTrigger.ts"],"sourcesContent":["import * as React from 'react';\nimport { MenuTriggerProps, MenuTriggerState } from './MenuTrigger.types';\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 {\n applyTriggerPropsToChildren,\n getTriggerChild,\n isHTMLElement,\n mergeCallbacks,\n useEventCallback,\n useMergedRefs,\n} from '@fluentui/react-utilities';\nimport { useARIAButtonProps } from '@fluentui/react-aria';\n\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: MenuTriggerProps): MenuTriggerState => {\n const { children, disableButtonEnhancement = false } = props;\n\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\n const isSubmenu = useIsSubmenu();\n\n const { findFirstFocusable } = useFocusFinders();\n const focusFirst = React.useCallback(() => {\n const firstFocusable = findFirstFocusable(menuPopoverRef.current);\n firstFocusable?.focus();\n }, [findFirstFocusable, menuPopoverRef]);\n\n const openedWithKeyboardRef = React.useRef(false);\n const hasMouseMoved = React.useRef(false);\n\n const { dir } = useFluent();\n const OpenArrowKey = dir === 'ltr' ? ArrowRight : ArrowLeft;\n\n const child = getTriggerChild(children);\n\n const onContextMenu = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n\n if (openOnContext) {\n event.preventDefault();\n setOpen(event, { open: true, keyboard: false, type: 'menuTriggerContextMenu', event });\n }\n };\n\n const onClick = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n\n if (!openOnContext) {\n setOpen(event, { open: !open, keyboard: openedWithKeyboardRef.current, type: 'menuTriggerClick', event });\n openedWithKeyboardRef.current = false;\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n\n const key = event.key;\n\n if (!openOnContext && ((isSubmenu && key === OpenArrowKey) || (!isSubmenu && key === ArrowDown))) {\n setOpen(event, { open: true, keyboard: true, type: 'menuTriggerKeyDown', event });\n }\n\n if (key === Escape && !isSubmenu) {\n setOpen(event, { open: false, keyboard: true, type: 'menuTriggerKeyDown', 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\n const onMouseEnter = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover && hasMouseMoved.current) {\n setOpen(event, { open: true, keyboard: false, type: 'menuTriggerMouseEnter', 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: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover && !hasMouseMoved.current) {\n setOpen(event, { open: true, keyboard: false, type: 'menuTriggerMouseMove', event });\n hasMouseMoved.current = true;\n }\n };\n\n const onMouseLeave = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover) {\n setOpen(event, { open: false, keyboard: false, type: 'menuTriggerMouseLeave', event });\n }\n };\n\n const contextMenuProps = {\n id: triggerId,\n ...child?.props,\n ref: useMergedRefs(triggerRef, child?.ref),\n onMouseEnter: useEventCallback(mergeCallbacks(child?.props.onMouseEnter, onMouseEnter)),\n onMouseLeave: useEventCallback(mergeCallbacks(child?.props.onMouseLeave, onMouseLeave)),\n onContextMenu: useEventCallback(mergeCallbacks(child?.props.onContextMenu, onContextMenu)),\n onMouseMove: useEventCallback(mergeCallbacks(child?.props.onMouseMove, onMouseMove)),\n };\n\n const triggerChildProps = {\n 'aria-haspopup': 'menu',\n 'aria-expanded': !open && !isSubmenu ? undefined : open,\n ...contextMenuProps,\n onClick: useEventCallback(mergeCallbacks(child?.props.onClick, onClick)),\n onKeyDown: useEventCallback(mergeCallbacks(child?.props.onKeyDown, onKeyDown)),\n } as const;\n\n const ariaButtonTriggerChildProps = useARIAButtonProps(\n child?.type === 'button' || child?.type === 'a' ? child.type : 'div',\n triggerChildProps,\n );\n\n return {\n isSubmenu,\n children: applyTriggerPropsToChildren(\n children,\n openOnContext ? contextMenuProps : disableButtonEnhancement ? triggerChildProps : ariaButtonTriggerChildProps,\n ),\n };\n};\n\nconst isTargetDisabled = (event: React.SyntheticEvent | Event) => {\n const isDisabled = (el: HTMLElement) =>\n 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\n return isHTMLElement(event.currentTarget) && isDisabled(event.currentTarget);\n};\n"],"mappings":"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"}
@@ -99,14 +99,14 @@ define(["require", "exports", "tslib", "react", "../../contexts/menuContext", ".
99
99
  };
100
100
  };
101
101
  exports.useMenuTrigger_unstable = useMenuTrigger_unstable;
102
- var isTargetDisabled = function (e) {
102
+ var isTargetDisabled = function (event) {
103
103
  var isDisabled = function (el) {
104
104
  return el.hasAttribute('disabled') || (el.hasAttribute('aria-disabled') && el.getAttribute('aria-disabled') === 'true');
105
105
  };
106
- if (e.target instanceof HTMLElement && isDisabled(e.target)) {
106
+ if (react_utilities_1.isHTMLElement(event.target) && isDisabled(event.target)) {
107
107
  return true;
108
108
  }
109
- return e.currentTarget instanceof HTMLElement && isDisabled(e.currentTarget);
109
+ return react_utilities_1.isHTMLElement(event.currentTarget) && isDisabled(event.currentTarget);
110
110
  };
111
111
  });
112
112
  //# sourceMappingURL=useMenuTrigger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuTrigger.js","sourceRoot":"","sources":["../../../../../../../../../packages/react-components/react-menu/src/components/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { MenuTriggerProps, MenuTriggerState } from './MenuTrigger.types';\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 {\n applyTriggerPropsToChildren,\n getTriggerChild,\n mergeCallbacks,\n useEventCallback,\n useMergedRefs,\n} from '@fluentui/react-utilities';\nimport { useARIAButtonProps } from '@fluentui/react-aria';\n\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: MenuTriggerProps): MenuTriggerState => {\n const { children, disableButtonEnhancement = false } = props;\n\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\n const isSubmenu = useIsSubmenu();\n\n const { findFirstFocusable } = useFocusFinders();\n const focusFirst = React.useCallback(() => {\n const firstFocusable = findFirstFocusable(menuPopoverRef.current);\n firstFocusable?.focus();\n }, [findFirstFocusable, menuPopoverRef]);\n\n const openedWithKeyboardRef = React.useRef(false);\n const hasMouseMoved = React.useRef(false);\n\n const { dir } = useFluent();\n const OpenArrowKey = dir === 'ltr' ? ArrowRight : ArrowLeft;\n\n const child = getTriggerChild(children);\n\n const onContextMenu = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n\n if (openOnContext) {\n event.preventDefault();\n setOpen(event, { open: true, keyboard: false, type: 'menuTriggerContextMenu', event });\n }\n };\n\n const onClick = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n\n if (!openOnContext) {\n setOpen(event, { open: !open, keyboard: openedWithKeyboardRef.current, type: 'menuTriggerClick', event });\n openedWithKeyboardRef.current = false;\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n\n const key = event.key;\n\n if (!openOnContext && ((isSubmenu && key === OpenArrowKey) || (!isSubmenu && key === ArrowDown))) {\n setOpen(event, { open: true, keyboard: true, type: 'menuTriggerKeyDown', event });\n }\n\n if (key === Escape && !isSubmenu) {\n setOpen(event, { open: false, keyboard: true, type: 'menuTriggerKeyDown', 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\n const onMouseEnter = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover && hasMouseMoved.current) {\n setOpen(event, { open: true, keyboard: false, type: 'menuTriggerMouseEnter', 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: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover && !hasMouseMoved.current) {\n setOpen(event, { open: true, keyboard: false, type: 'menuTriggerMouseMove', event });\n hasMouseMoved.current = true;\n }\n };\n\n const onMouseLeave = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover) {\n setOpen(event, { open: false, keyboard: false, type: 'menuTriggerMouseLeave', event });\n }\n };\n\n const contextMenuProps = {\n id: triggerId,\n ...child?.props,\n ref: useMergedRefs(triggerRef, child?.ref),\n onMouseEnter: useEventCallback(mergeCallbacks(child?.props.onMouseEnter, onMouseEnter)),\n onMouseLeave: useEventCallback(mergeCallbacks(child?.props.onMouseLeave, onMouseLeave)),\n onContextMenu: useEventCallback(mergeCallbacks(child?.props.onContextMenu, onContextMenu)),\n onMouseMove: useEventCallback(mergeCallbacks(child?.props.onMouseMove, onMouseMove)),\n };\n\n const triggerChildProps = {\n 'aria-haspopup': 'menu',\n 'aria-expanded': !open && !isSubmenu ? undefined : open,\n ...contextMenuProps,\n onClick: useEventCallback(mergeCallbacks(child?.props.onClick, onClick)),\n onKeyDown: useEventCallback(mergeCallbacks(child?.props.onKeyDown, onKeyDown)),\n } as const;\n\n const ariaButtonTriggerChildProps = useARIAButtonProps(\n child?.type === 'button' || child?.type === 'a' ? child.type : 'div',\n triggerChildProps,\n );\n\n return {\n isSubmenu,\n children: applyTriggerPropsToChildren(\n children,\n openOnContext ? contextMenuProps : disableButtonEnhancement ? triggerChildProps : ariaButtonTriggerChildProps,\n ),\n };\n};\n\nconst isTargetDisabled = (e: React.SyntheticEvent | Event) => {\n const isDisabled = (el: HTMLElement) =>\n el.hasAttribute('disabled') || (el.hasAttribute('aria-disabled') && el.getAttribute('aria-disabled') === 'true');\n if (e.target instanceof HTMLElement && isDisabled(e.target)) {\n return true;\n }\n\n return e.currentTarget instanceof HTMLElement && isDisabled(e.currentTarget);\n};\n"]}
1
+ {"version":3,"file":"useMenuTrigger.js","sourceRoot":"","sources":["../../../../../../../../../packages/react-components/react-menu/src/components/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { MenuTriggerProps, MenuTriggerState } from './MenuTrigger.types';\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 {\n applyTriggerPropsToChildren,\n getTriggerChild,\n isHTMLElement,\n mergeCallbacks,\n useEventCallback,\n useMergedRefs,\n} from '@fluentui/react-utilities';\nimport { useARIAButtonProps } from '@fluentui/react-aria';\n\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: MenuTriggerProps): MenuTriggerState => {\n const { children, disableButtonEnhancement = false } = props;\n\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\n const isSubmenu = useIsSubmenu();\n\n const { findFirstFocusable } = useFocusFinders();\n const focusFirst = React.useCallback(() => {\n const firstFocusable = findFirstFocusable(menuPopoverRef.current);\n firstFocusable?.focus();\n }, [findFirstFocusable, menuPopoverRef]);\n\n const openedWithKeyboardRef = React.useRef(false);\n const hasMouseMoved = React.useRef(false);\n\n const { dir } = useFluent();\n const OpenArrowKey = dir === 'ltr' ? ArrowRight : ArrowLeft;\n\n const child = getTriggerChild(children);\n\n const onContextMenu = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n\n if (openOnContext) {\n event.preventDefault();\n setOpen(event, { open: true, keyboard: false, type: 'menuTriggerContextMenu', event });\n }\n };\n\n const onClick = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n\n if (!openOnContext) {\n setOpen(event, { open: !open, keyboard: openedWithKeyboardRef.current, type: 'menuTriggerClick', event });\n openedWithKeyboardRef.current = false;\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n\n const key = event.key;\n\n if (!openOnContext && ((isSubmenu && key === OpenArrowKey) || (!isSubmenu && key === ArrowDown))) {\n setOpen(event, { open: true, keyboard: true, type: 'menuTriggerKeyDown', event });\n }\n\n if (key === Escape && !isSubmenu) {\n setOpen(event, { open: false, keyboard: true, type: 'menuTriggerKeyDown', 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\n const onMouseEnter = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover && hasMouseMoved.current) {\n setOpen(event, { open: true, keyboard: false, type: 'menuTriggerMouseEnter', 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: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover && !hasMouseMoved.current) {\n setOpen(event, { open: true, keyboard: false, type: 'menuTriggerMouseMove', event });\n hasMouseMoved.current = true;\n }\n };\n\n const onMouseLeave = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover) {\n setOpen(event, { open: false, keyboard: false, type: 'menuTriggerMouseLeave', event });\n }\n };\n\n const contextMenuProps = {\n id: triggerId,\n ...child?.props,\n ref: useMergedRefs(triggerRef, child?.ref),\n onMouseEnter: useEventCallback(mergeCallbacks(child?.props.onMouseEnter, onMouseEnter)),\n onMouseLeave: useEventCallback(mergeCallbacks(child?.props.onMouseLeave, onMouseLeave)),\n onContextMenu: useEventCallback(mergeCallbacks(child?.props.onContextMenu, onContextMenu)),\n onMouseMove: useEventCallback(mergeCallbacks(child?.props.onMouseMove, onMouseMove)),\n };\n\n const triggerChildProps = {\n 'aria-haspopup': 'menu',\n 'aria-expanded': !open && !isSubmenu ? undefined : open,\n ...contextMenuProps,\n onClick: useEventCallback(mergeCallbacks(child?.props.onClick, onClick)),\n onKeyDown: useEventCallback(mergeCallbacks(child?.props.onKeyDown, onKeyDown)),\n } as const;\n\n const ariaButtonTriggerChildProps = useARIAButtonProps(\n child?.type === 'button' || child?.type === 'a' ? child.type : 'div',\n triggerChildProps,\n );\n\n return {\n isSubmenu,\n children: applyTriggerPropsToChildren(\n children,\n openOnContext ? contextMenuProps : disableButtonEnhancement ? triggerChildProps : ariaButtonTriggerChildProps,\n ),\n };\n};\n\nconst isTargetDisabled = (event: React.SyntheticEvent | Event) => {\n const isDisabled = (el: HTMLElement) =>\n 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\n return isHTMLElement(event.currentTarget) && isDisabled(event.currentTarget);\n};\n"]}
@@ -165,11 +165,11 @@ const useMenuTrigger_unstable = props => {
165
165
  };
166
166
  };
167
167
  exports.useMenuTrigger_unstable = useMenuTrigger_unstable;
168
- const isTargetDisabled = e => {
168
+ const isTargetDisabled = event => {
169
169
  const isDisabled = el => el.hasAttribute('disabled') || el.hasAttribute('aria-disabled') && el.getAttribute('aria-disabled') === 'true';
170
- if (e.target instanceof HTMLElement && isDisabled(e.target)) {
170
+ if (react_utilities_1.isHTMLElement(event.target) && isDisabled(event.target)) {
171
171
  return true;
172
172
  }
173
- return e.currentTarget instanceof HTMLElement && isDisabled(e.currentTarget);
173
+ return react_utilities_1.isHTMLElement(event.currentTarget) && isDisabled(event.currentTarget);
174
174
  };
175
175
  //# sourceMappingURL=useMenuTrigger.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","require","menuContext_1","useIsSubmenu_1","react_tabster_1","react_shared_contexts_1","keyboard_keys_1","react_utilities_1","react_aria_1","useMenuTrigger_unstable","props","children","disableButtonEnhancement","triggerRef","useMenuContext_unstable","context","menuPopoverRef","setOpen","open","triggerId","openOnHover","openOnContext","isSubmenu","useIsSubmenu","findFirstFocusable","useFocusFinders","focusFirst","useCallback","firstFocusable","current","focus","openedWithKeyboardRef","useRef","hasMouseMoved","dir","useFluent_unstable","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","exports","e","isDisabled","el","hasAttribute","getAttribute","target","HTMLElement","currentTarget"],"sources":["../src/packages/react-components/react-menu/src/components/MenuTrigger/useMenuTrigger.ts"],"sourcesContent":["import * as React from 'react';\nimport { MenuTriggerProps, MenuTriggerState } from './MenuTrigger.types';\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 {\n applyTriggerPropsToChildren,\n getTriggerChild,\n mergeCallbacks,\n useEventCallback,\n useMergedRefs,\n} from '@fluentui/react-utilities';\nimport { useARIAButtonProps } from '@fluentui/react-aria';\n\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: MenuTriggerProps): MenuTriggerState => {\n const { children, disableButtonEnhancement = false } = props;\n\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\n const isSubmenu = useIsSubmenu();\n\n const { findFirstFocusable } = useFocusFinders();\n const focusFirst = React.useCallback(() => {\n const firstFocusable = findFirstFocusable(menuPopoverRef.current);\n firstFocusable?.focus();\n }, [findFirstFocusable, menuPopoverRef]);\n\n const openedWithKeyboardRef = React.useRef(false);\n const hasMouseMoved = React.useRef(false);\n\n const { dir } = useFluent();\n const OpenArrowKey = dir === 'ltr' ? ArrowRight : ArrowLeft;\n\n const child = getTriggerChild(children);\n\n const onContextMenu = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n\n if (openOnContext) {\n event.preventDefault();\n setOpen(event, { open: true, keyboard: false, type: 'menuTriggerContextMenu', event });\n }\n };\n\n const onClick = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n\n if (!openOnContext) {\n setOpen(event, { open: !open, keyboard: openedWithKeyboardRef.current, type: 'menuTriggerClick', event });\n openedWithKeyboardRef.current = false;\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n\n const key = event.key;\n\n if (!openOnContext && ((isSubmenu && key === OpenArrowKey) || (!isSubmenu && key === ArrowDown))) {\n setOpen(event, { open: true, keyboard: true, type: 'menuTriggerKeyDown', event });\n }\n\n if (key === Escape && !isSubmenu) {\n setOpen(event, { open: false, keyboard: true, type: 'menuTriggerKeyDown', 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\n const onMouseEnter = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover && hasMouseMoved.current) {\n setOpen(event, { open: true, keyboard: false, type: 'menuTriggerMouseEnter', 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: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover && !hasMouseMoved.current) {\n setOpen(event, { open: true, keyboard: false, type: 'menuTriggerMouseMove', event });\n hasMouseMoved.current = true;\n }\n };\n\n const onMouseLeave = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover) {\n setOpen(event, { open: false, keyboard: false, type: 'menuTriggerMouseLeave', event });\n }\n };\n\n const contextMenuProps = {\n id: triggerId,\n ...child?.props,\n ref: useMergedRefs(triggerRef, child?.ref),\n onMouseEnter: useEventCallback(mergeCallbacks(child?.props.onMouseEnter, onMouseEnter)),\n onMouseLeave: useEventCallback(mergeCallbacks(child?.props.onMouseLeave, onMouseLeave)),\n onContextMenu: useEventCallback(mergeCallbacks(child?.props.onContextMenu, onContextMenu)),\n onMouseMove: useEventCallback(mergeCallbacks(child?.props.onMouseMove, onMouseMove)),\n };\n\n const triggerChildProps = {\n 'aria-haspopup': 'menu',\n 'aria-expanded': !open && !isSubmenu ? undefined : open,\n ...contextMenuProps,\n onClick: useEventCallback(mergeCallbacks(child?.props.onClick, onClick)),\n onKeyDown: useEventCallback(mergeCallbacks(child?.props.onKeyDown, onKeyDown)),\n } as const;\n\n const ariaButtonTriggerChildProps = useARIAButtonProps(\n child?.type === 'button' || child?.type === 'a' ? child.type : 'div',\n triggerChildProps,\n );\n\n return {\n isSubmenu,\n children: applyTriggerPropsToChildren(\n children,\n openOnContext ? contextMenuProps : disableButtonEnhancement ? triggerChildProps : ariaButtonTriggerChildProps,\n ),\n };\n};\n\nconst isTargetDisabled = (e: React.SyntheticEvent | Event) => {\n const isDisabled = (el: HTMLElement) =>\n el.hasAttribute('disabled') || (el.hasAttribute('aria-disabled') && el.getAttribute('aria-disabled') === 'true');\n if (e.target instanceof HTMLElement && isDisabled(e.target)) {\n return true;\n }\n\n return e.currentTarget instanceof HTMLElement && isDisabled(e.currentTarget);\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","require","menuContext_1","useIsSubmenu_1","react_tabster_1","react_shared_contexts_1","keyboard_keys_1","react_utilities_1","react_aria_1","useMenuTrigger_unstable","props","children","disableButtonEnhancement","triggerRef","useMenuContext_unstable","context","menuPopoverRef","setOpen","open","triggerId","openOnHover","openOnContext","isSubmenu","useIsSubmenu","findFirstFocusable","useFocusFinders","focusFirst","useCallback","firstFocusable","current","focus","openedWithKeyboardRef","useRef","hasMouseMoved","dir","useFluent_unstable","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","exports","isDisabled","el","hasAttribute","getAttribute","isHTMLElement","target","currentTarget"],"sources":["../src/packages/react-components/react-menu/src/components/MenuTrigger/useMenuTrigger.ts"],"sourcesContent":["import * as React from 'react';\nimport { MenuTriggerProps, MenuTriggerState } from './MenuTrigger.types';\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 {\n applyTriggerPropsToChildren,\n getTriggerChild,\n isHTMLElement,\n mergeCallbacks,\n useEventCallback,\n useMergedRefs,\n} from '@fluentui/react-utilities';\nimport { useARIAButtonProps } from '@fluentui/react-aria';\n\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: MenuTriggerProps): MenuTriggerState => {\n const { children, disableButtonEnhancement = false } = props;\n\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\n const isSubmenu = useIsSubmenu();\n\n const { findFirstFocusable } = useFocusFinders();\n const focusFirst = React.useCallback(() => {\n const firstFocusable = findFirstFocusable(menuPopoverRef.current);\n firstFocusable?.focus();\n }, [findFirstFocusable, menuPopoverRef]);\n\n const openedWithKeyboardRef = React.useRef(false);\n const hasMouseMoved = React.useRef(false);\n\n const { dir } = useFluent();\n const OpenArrowKey = dir === 'ltr' ? ArrowRight : ArrowLeft;\n\n const child = getTriggerChild(children);\n\n const onContextMenu = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n\n if (openOnContext) {\n event.preventDefault();\n setOpen(event, { open: true, keyboard: false, type: 'menuTriggerContextMenu', event });\n }\n };\n\n const onClick = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n\n if (!openOnContext) {\n setOpen(event, { open: !open, keyboard: openedWithKeyboardRef.current, type: 'menuTriggerClick', event });\n openedWithKeyboardRef.current = false;\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n\n const key = event.key;\n\n if (!openOnContext && ((isSubmenu && key === OpenArrowKey) || (!isSubmenu && key === ArrowDown))) {\n setOpen(event, { open: true, keyboard: true, type: 'menuTriggerKeyDown', event });\n }\n\n if (key === Escape && !isSubmenu) {\n setOpen(event, { open: false, keyboard: true, type: 'menuTriggerKeyDown', 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\n const onMouseEnter = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover && hasMouseMoved.current) {\n setOpen(event, { open: true, keyboard: false, type: 'menuTriggerMouseEnter', 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: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover && !hasMouseMoved.current) {\n setOpen(event, { open: true, keyboard: false, type: 'menuTriggerMouseMove', event });\n hasMouseMoved.current = true;\n }\n };\n\n const onMouseLeave = (event: React.MouseEvent<HTMLButtonElement & HTMLAnchorElement & HTMLDivElement>) => {\n if (isTargetDisabled(event)) {\n return;\n }\n if (openOnHover) {\n setOpen(event, { open: false, keyboard: false, type: 'menuTriggerMouseLeave', event });\n }\n };\n\n const contextMenuProps = {\n id: triggerId,\n ...child?.props,\n ref: useMergedRefs(triggerRef, child?.ref),\n onMouseEnter: useEventCallback(mergeCallbacks(child?.props.onMouseEnter, onMouseEnter)),\n onMouseLeave: useEventCallback(mergeCallbacks(child?.props.onMouseLeave, onMouseLeave)),\n onContextMenu: useEventCallback(mergeCallbacks(child?.props.onContextMenu, onContextMenu)),\n onMouseMove: useEventCallback(mergeCallbacks(child?.props.onMouseMove, onMouseMove)),\n };\n\n const triggerChildProps = {\n 'aria-haspopup': 'menu',\n 'aria-expanded': !open && !isSubmenu ? undefined : open,\n ...contextMenuProps,\n onClick: useEventCallback(mergeCallbacks(child?.props.onClick, onClick)),\n onKeyDown: useEventCallback(mergeCallbacks(child?.props.onKeyDown, onKeyDown)),\n } as const;\n\n const ariaButtonTriggerChildProps = useARIAButtonProps(\n child?.type === 'button' || child?.type === 'a' ? child.type : 'div',\n triggerChildProps,\n );\n\n return {\n isSubmenu,\n children: applyTriggerPropsToChildren(\n children,\n openOnContext ? contextMenuProps : disableButtonEnhancement ? triggerChildProps : ariaButtonTriggerChildProps,\n ),\n };\n};\n\nconst isTargetDisabled = (event: React.SyntheticEvent | Event) => {\n const isDisabled = (el: HTMLElement) =>\n 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\n return isHTMLElement(event.currentTarget) && isDisabled(event.currentTarget);\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-menu",
3
- "version": "9.7.1",
3
+ "version": "9.7.2",
4
4
  "description": "Fluent UI menu component",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -35,16 +35,16 @@
35
35
  "@fluentui/scripts-tasks": "*"
36
36
  },
37
37
  "dependencies": {
38
- "@fluentui/react-aria": "^9.3.12",
38
+ "@fluentui/react-aria": "^9.3.13",
39
39
  "@fluentui/keyboard-keys": "^9.0.1",
40
- "@fluentui/react-context-selector": "^9.1.12",
40
+ "@fluentui/react-context-selector": "^9.1.13",
41
41
  "@fluentui/react-icons": "^2.0.175",
42
- "@fluentui/react-portal": "^9.1.11",
43
- "@fluentui/react-positioning": "^9.5.2",
42
+ "@fluentui/react-portal": "^9.1.12",
43
+ "@fluentui/react-positioning": "^9.5.3",
44
44
  "@fluentui/react-shared-contexts": "^9.3.0",
45
- "@fluentui/react-tabster": "^9.5.5",
45
+ "@fluentui/react-tabster": "^9.5.6",
46
46
  "@fluentui/react-theme": "^9.1.5",
47
- "@fluentui/react-utilities": "^9.6.2",
47
+ "@fluentui/react-utilities": "^9.7.0",
48
48
  "@griffel/react": "^1.5.2",
49
49
  "tslib": "^2.1.0"
50
50
  },