@fluentui-react-native/menu 0.11.0 → 0.13.0

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.
Files changed (74) hide show
  1. package/CHANGELOG.json +52 -1
  2. package/CHANGELOG.md +27 -2
  3. package/lib/MenuItem/MenuItem.js +1 -1
  4. package/lib/MenuItem/MenuItem.js.map +1 -1
  5. package/lib/MenuItem/useMenuItem.d.ts.map +1 -1
  6. package/lib/MenuItem/useMenuItem.js +34 -6
  7. package/lib/MenuItem/useMenuItem.js.map +1 -1
  8. package/lib/MenuItemCheckbox/MenuItemCheckbox.js +1 -1
  9. package/lib/MenuItemCheckbox/MenuItemCheckbox.js.map +1 -1
  10. package/lib/MenuItemCheckbox/useMenuItemCheckbox.d.ts.map +1 -1
  11. package/lib/MenuItemCheckbox/useMenuItemCheckbox.js +12 -8
  12. package/lib/MenuItemCheckbox/useMenuItemCheckbox.js.map +1 -1
  13. package/lib/MenuItemRadio/useMenuItemRadio.d.ts.map +1 -1
  14. package/lib/MenuItemRadio/useMenuItemRadio.js +5 -3
  15. package/lib/MenuItemRadio/useMenuItemRadio.js.map +1 -1
  16. package/lib/MenuPopover/MenuPopover.d.ts +1 -2
  17. package/lib/MenuPopover/MenuPopover.d.ts.map +1 -1
  18. package/lib/MenuPopover/MenuPopover.js +1 -1
  19. package/lib/MenuPopover/MenuPopover.js.map +1 -1
  20. package/lib/MenuPopover/MenuPopover.types.d.ts +4 -4
  21. package/lib/MenuPopover/MenuPopover.types.d.ts.map +1 -1
  22. package/lib/MenuPopover/useMenuPopover.d.ts.map +1 -1
  23. package/lib/MenuPopover/useMenuPopover.js +2 -1
  24. package/lib/MenuPopover/useMenuPopover.js.map +1 -1
  25. package/lib/MenuTrigger/MenuTrigger.d.ts.map +1 -1
  26. package/lib/MenuTrigger/MenuTrigger.js +24 -2
  27. package/lib/MenuTrigger/MenuTrigger.js.map +1 -1
  28. package/lib/MenuTrigger/MenuTrigger.types.d.ts +3 -0
  29. package/lib/MenuTrigger/MenuTrigger.types.d.ts.map +1 -1
  30. package/lib/MenuTrigger/useMenuTrigger.d.ts.map +1 -1
  31. package/lib/MenuTrigger/useMenuTrigger.js +26 -1
  32. package/lib/MenuTrigger/useMenuTrigger.js.map +1 -1
  33. package/lib-commonjs/MenuItem/MenuItem.js +1 -1
  34. package/lib-commonjs/MenuItem/MenuItem.js.map +1 -1
  35. package/lib-commonjs/MenuItem/useMenuItem.d.ts.map +1 -1
  36. package/lib-commonjs/MenuItem/useMenuItem.js +32 -4
  37. package/lib-commonjs/MenuItem/useMenuItem.js.map +1 -1
  38. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.js +1 -1
  39. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.js.map +1 -1
  40. package/lib-commonjs/MenuItemCheckbox/useMenuItemCheckbox.d.ts.map +1 -1
  41. package/lib-commonjs/MenuItemCheckbox/useMenuItemCheckbox.js +12 -8
  42. package/lib-commonjs/MenuItemCheckbox/useMenuItemCheckbox.js.map +1 -1
  43. package/lib-commonjs/MenuItemRadio/useMenuItemRadio.d.ts.map +1 -1
  44. package/lib-commonjs/MenuItemRadio/useMenuItemRadio.js +5 -3
  45. package/lib-commonjs/MenuItemRadio/useMenuItemRadio.js.map +1 -1
  46. package/lib-commonjs/MenuPopover/MenuPopover.d.ts +1 -2
  47. package/lib-commonjs/MenuPopover/MenuPopover.d.ts.map +1 -1
  48. package/lib-commonjs/MenuPopover/MenuPopover.js +1 -1
  49. package/lib-commonjs/MenuPopover/MenuPopover.js.map +1 -1
  50. package/lib-commonjs/MenuPopover/MenuPopover.types.d.ts +4 -4
  51. package/lib-commonjs/MenuPopover/MenuPopover.types.d.ts.map +1 -1
  52. package/lib-commonjs/MenuPopover/useMenuPopover.d.ts.map +1 -1
  53. package/lib-commonjs/MenuPopover/useMenuPopover.js +2 -1
  54. package/lib-commonjs/MenuPopover/useMenuPopover.js.map +1 -1
  55. package/lib-commonjs/MenuTrigger/MenuTrigger.d.ts.map +1 -1
  56. package/lib-commonjs/MenuTrigger/MenuTrigger.js +22 -1
  57. package/lib-commonjs/MenuTrigger/MenuTrigger.js.map +1 -1
  58. package/lib-commonjs/MenuTrigger/MenuTrigger.types.d.ts +3 -0
  59. package/lib-commonjs/MenuTrigger/MenuTrigger.types.d.ts.map +1 -1
  60. package/lib-commonjs/MenuTrigger/useMenuTrigger.d.ts.map +1 -1
  61. package/lib-commonjs/MenuTrigger/useMenuTrigger.js +27 -1
  62. package/lib-commonjs/MenuTrigger/useMenuTrigger.js.map +1 -1
  63. package/package.json +3 -3
  64. package/src/MenuItem/MenuItem.tsx +1 -1
  65. package/src/MenuItem/useMenuItem.ts +49 -9
  66. package/src/MenuItemCheckbox/MenuItemCheckbox.tsx +1 -1
  67. package/src/MenuItemCheckbox/useMenuItemCheckbox.ts +13 -9
  68. package/src/MenuItemRadio/useMenuItemRadio.ts +5 -3
  69. package/src/MenuPopover/MenuPopover.tsx +1 -0
  70. package/src/MenuPopover/MenuPopover.types.ts +4 -3
  71. package/src/MenuPopover/useMenuPopover.ts +2 -1
  72. package/src/MenuTrigger/MenuTrigger.tsx +29 -3
  73. package/src/MenuTrigger/MenuTrigger.types.ts +3 -0
  74. package/src/MenuTrigger/useMenuTrigger.ts +33 -2
@@ -3,22 +3,50 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useMenuItem = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var React = (0, tslib_1.__importStar)(require("react"));
6
+ var react_native_1 = require("react-native");
6
7
  var framework_1 = require("@fluentui-react-native/framework");
7
8
  var interactive_hooks_1 = require("@fluentui-react-native/interactive-hooks");
8
9
  var menuContext_1 = require("../context/menuContext");
9
10
  var menuListContext_1 = require("../context/menuListContext");
10
11
  var menuTriggerContext_1 = require("../context/menuTriggerContext");
12
+ var triggerKeys = [' ', 'Enter'];
13
+ var submenuTriggerKeys = (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], triggerKeys, true), ['ArrowLeft', 'ArrowRight'], false);
11
14
  var useMenuItem = function (props) {
12
15
  // attach the pressable state handlers
13
16
  var defaultComponentRef = React.useRef(null);
14
17
  var onClick = props.onClick, accessibilityState = props.accessibilityState, _a = props.componentRef, componentRef = _a === void 0 ? defaultComponentRef : _a, disabled = props.disabled, rest = (0, tslib_1.__rest)(props, ["onClick", "accessibilityState", "componentRef", "disabled"]);
15
- var pressable = (0, interactive_hooks_1.useAsPressable)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, rest), { disabled: disabled, onPress: onClick }));
16
- var onKeyProps = (0, interactive_hooks_1.useKeyProps)(onClick, ' ', 'Enter');
17
18
  var isTrigger = (0, menuTriggerContext_1.useMenuTriggerContext)();
18
- var hasSubmenu = (0, menuContext_1.useMenuContext)().isSubmenu && isTrigger;
19
+ var isSubmenu = (0, menuContext_1.useMenuContext)().isSubmenu;
20
+ var hasSubmenu = isSubmenu && isTrigger;
21
+ var isInSubmenu = isSubmenu && !isTrigger;
22
+ var setOpen = (0, menuContext_1.useMenuContext)().setOpen;
23
+ var onInvoke = React.useCallback(function (e) {
24
+ if (disabled) {
25
+ return;
26
+ }
27
+ var isRtl = react_native_1.I18nManager.isRTL;
28
+ if ((0, interactive_hooks_1.isKeyPressEvent)(e) &&
29
+ hasSubmenu &&
30
+ ((isRtl && e.nativeEvent.key === 'ArrowRight') || (!isRtl && e.nativeEvent.key === 'ArrowLeft'))) {
31
+ return;
32
+ }
33
+ if ((0, interactive_hooks_1.isKeyPressEvent)(e) &&
34
+ isInSubmenu &&
35
+ ((isRtl && e.nativeEvent.key === 'ArrowLeft') || (!isRtl && e.nativeEvent.key === 'ArrowRight'))) {
36
+ return;
37
+ }
38
+ onClick === null || onClick === void 0 ? void 0 : onClick(e);
39
+ if (!hasSubmenu) {
40
+ setOpen(e, false /*isOpen*/);
41
+ }
42
+ }, [disabled, hasSubmenu, isInSubmenu, onClick, setOpen]);
43
+ var pressable = (0, interactive_hooks_1.useAsPressable)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, rest), { disabled: disabled, onPress: onInvoke }));
44
+ var keys = isSubmenu ? submenuTriggerKeys : triggerKeys;
45
+ // Explicitly override onKeyDown to override the native behavior of moving focus with arrow keys.
46
+ var onKeyDownProps = interactive_hooks_1.useKeyDownProps.apply(void 0, (0, tslib_1.__spreadArray)([onInvoke], keys, false));
19
47
  var hasCheckmarks = (0, menuListContext_1.useMenuListContext)().hasCheckmarks;
20
48
  return {
21
- props: (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, pressable.props), { accessible: true, accessibilityRole: 'menuitem', onAccessibilityTap: props.onAccessibilityTap || props.onClick, accessibilityLabel: props.accessibilityLabel, accessibilityState: getAccessibilityState(disabled, accessibilityState), enableFocusRing: true, focusable: !disabled, ref: componentRef }), onKeyProps),
49
+ props: (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, pressable.props), { accessible: true, accessibilityRole: 'menuitem', onAccessibilityTap: props.onAccessibilityTap || onInvoke, accessibilityLabel: props.accessibilityLabel || props.content, accessibilityState: getAccessibilityState(disabled, accessibilityState), enableFocusRing: true, focusable: true, ref: componentRef }), onKeyDownProps),
22
50
  state: pressable.state,
23
51
  hasSubmenu: hasSubmenu,
24
52
  hasCheckmarks: hasCheckmarks,
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuItem.js","sourceRoot":"","sources":["../../src/MenuItem/useMenuItem.ts"],"names":[],"mappings":";;;;AAAA,wDAA+B;AAG/B,8DAA2D;AAC3D,8EAAuF;AACvF,sDAAwD;AACxD,8DAAgE;AAChE,oEAAsE;AAE/D,IAAM,WAAW,GAAG,UAAC,KAAoB;IAC9C,sCAAsC;IACtC,IAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC,IAAA,OAAO,GAAgF,KAAK,QAArF,EAAE,kBAAkB,GAA4D,KAAK,mBAAjE,EAAE,KAA0D,KAAK,aAA7B,EAAlC,YAAY,mBAAG,mBAAmB,KAAA,EAAE,QAAQ,GAAc,KAAK,SAAnB,EAAK,IAAI,uBAAK,KAAK,EAA9F,6DAAsF,CAAF,CAAW;IACrG,IAAM,SAAS,GAAG,IAAA,kCAAc,kDAAM,IAAI,KAAE,QAAQ,UAAA,EAAE,OAAO,EAAE,OAAO,IAAG,CAAC;IAC1E,IAAM,UAAU,GAAG,IAAA,+BAAW,EAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACtD,IAAM,SAAS,GAAG,IAAA,0CAAqB,GAAE,CAAC;IAC1C,IAAM,UAAU,GAAG,IAAA,4BAAc,GAAE,CAAC,SAAS,IAAI,SAAS,CAAC;IAC3D,IAAM,aAAa,GAAG,IAAA,oCAAkB,GAAE,CAAC,aAAa,CAAC;IAEzD,OAAO;QACL,KAAK,wEACA,SAAS,CAAC,KAAK,KAClB,UAAU,EAAE,IAAI,EAChB,iBAAiB,EAAE,UAAU,EAC7B,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,OAAO,EAC7D,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAC5C,kBAAkB,EAAE,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EACvE,eAAe,EAAE,IAAI,EACrB,SAAS,EAAE,CAAC,QAAQ,EACpB,GAAG,EAAE,YAAY,KACd,UAAU,CACd;QACD,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,UAAU,YAAA;QACV,aAAa,eAAA;KACd,CAAC;AACJ,CAAC,CAAC;AA3BW,QAAA,WAAW,eA2BtB;AAEF,IAAM,qBAAqB,GAAG,IAAA,mBAAO,EAAC,2BAA2B,CAAC,CAAC;AACnE,SAAS,2BAA2B,CAAC,QAAiB,EAAE,kBAAuC;IAC7F,IAAI,kBAAkB,EAAE;QACtB,+BAAS,QAAQ,UAAA,IAAK,kBAAkB,EAAG;KAC5C;IACD,OAAO,EAAE,QAAQ,UAAA,EAAE,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"useMenuItem.js","sourceRoot":"","sources":["../../src/MenuItem/useMenuItem.ts"],"names":[],"mappings":";;;;AAAA,wDAA+B;AAC/B,6CAA+D;AAE/D,8DAA2D;AAC3D,8EAA8H;AAC9H,sDAAwD;AACxD,8DAAgE;AAChE,oEAAsE;AAEtE,IAAM,WAAW,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACnC,IAAM,kBAAkB,6DAAO,WAAW,UAAE,WAAW,EAAE,YAAY,SAAC,CAAC;AAEhE,IAAM,WAAW,GAAG,UAAC,KAAoB;IAC9C,sCAAsC;IACtC,IAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC,IAAA,OAAO,GAAgF,KAAK,QAArF,EAAE,kBAAkB,GAA4D,KAAK,mBAAjE,EAAE,KAA0D,KAAK,aAA7B,EAAlC,YAAY,mBAAG,mBAAmB,KAAA,EAAE,QAAQ,GAAc,KAAK,SAAnB,EAAK,IAAI,uBAAK,KAAK,EAA9F,6DAAsF,CAAF,CAAW;IACrG,IAAM,SAAS,GAAG,IAAA,0CAAqB,GAAE,CAAC;IAC1C,IAAM,SAAS,GAAG,IAAA,4BAAc,GAAE,CAAC,SAAS,CAAC;IAC7C,IAAM,UAAU,GAAG,SAAS,IAAI,SAAS,CAAC;IAC1C,IAAM,WAAW,GAAG,SAAS,IAAI,CAAC,SAAS,CAAC;IAE5C,IAAM,OAAO,GAAG,IAAA,4BAAc,GAAE,CAAC,OAAO,CAAC;IACzC,IAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAChC,UAAC,CAAmB;QAClB,IAAI,QAAQ,EAAE;YACZ,OAAO;SACR;QAED,IAAM,KAAK,GAAG,0BAAW,CAAC,KAAK,CAAC;QAChC,IACE,IAAA,mCAAe,EAAC,CAAC,CAAC;YAClB,UAAU;YACV,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,EAChG;YACA,OAAO;SACR;QACD,IACE,IAAA,mCAAe,EAAC,CAAC,CAAC;YAClB,WAAW;YACX,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,EAChG;YACA,OAAO;SACR;QAED,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,UAAU,EAAE;YACf,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;SAC9B;IACH,CAAC,EACD,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CACtD,CAAC;IAEF,IAAM,SAAS,GAAG,IAAA,kCAAc,kDAAM,IAAI,KAAE,QAAQ,UAAA,EAAE,OAAO,EAAE,QAAQ,IAAG,CAAC;IAC3E,IAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,CAAC;IAE1D,iGAAiG;IACjG,IAAM,cAAc,GAAG,mCAAe,2CAAC,QAAQ,GAAK,IAAI,SAAC,CAAC;IAC1D,IAAM,aAAa,GAAG,IAAA,oCAAkB,GAAE,CAAC,aAAa,CAAC;IAEzD,OAAO;QACL,KAAK,wEACA,SAAS,CAAC,KAAK,KAClB,UAAU,EAAE,IAAI,EAChB,iBAAiB,EAAE,UAAU,EAC7B,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,IAAI,QAAQ,EACxD,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,OAAO,EAC7D,kBAAkB,EAAE,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EACvE,eAAe,EAAE,IAAI,EACrB,SAAS,EAAE,IAAI,EACf,GAAG,EAAE,YAAY,KACd,cAAc,CAClB;QACD,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,UAAU,YAAA;QACV,aAAa,eAAA;KACd,CAAC;AACJ,CAAC,CAAC;AAhEW,QAAA,WAAW,eAgEtB;AAEF,IAAM,qBAAqB,GAAG,IAAA,mBAAO,EAAC,2BAA2B,CAAC,CAAC;AACnE,SAAS,2BAA2B,CAAC,QAAiB,EAAE,kBAAuC;IAC7F,IAAI,kBAAkB,EAAE;QACtB,+BAAS,QAAQ,UAAA,IAAK,kBAAkB,EAAG;KAC5C;IACD,OAAO,EAAE,QAAQ,UAAA,EAAE,CAAC;AACtB,CAAC"}
@@ -16,7 +16,7 @@ exports.MenuItemCheckbox = (0, framework_1.compose)((0, tslib_1.__assign)((0, ts
16
16
  content: experimental_text_1.Text,
17
17
  }, useRender: function (userProps, useSlots) {
18
18
  var menuItem = (0, useMenuItemCheckbox_1.useMenuItemCheckbox)(userProps);
19
- var Slots = useSlots(userProps, function (layer) { return menuItem.state[layer]; });
19
+ var Slots = useSlots(userProps, function (layer) { return menuItem.state[layer] || userProps[layer]; });
20
20
  return (0, exports.menuItemFinalRender)(menuItem, Slots);
21
21
  } }));
22
22
  var menuItemFinalRender = function (menuItem, Slots) {
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItemCheckbox.js","sourceRoot":"","sources":["../../src/MenuItemCheckbox/MenuItemCheckbox.tsx"],"names":[],"mappings":";;;;AAAA,qBAAqB;AACrB,6CAAoC;AACpC,qDAA0C;AAC1C,8DAAmG;AACnG,8EAAgE;AAChE,mEAMkC;AAClC,6DAA4D;AAC5D,uEAA6D;AAEhD,QAAA,gBAAgB,GAAG,IAAA,mBAAO,gDACrC,WAAW,EAAE,6CAAoB,IAC9B,0CAAe,KAClB,KAAK,EAAE;QACL,IAAI,EAAE,mBAAI;QACV,SAAS,EAAE,yBAAM;QACjB,OAAO,EAAE,wBAAI;KACd,EACD,SAAS,EAAE,UAAC,SAAgC,EAAE,QAAwC;QACpF,IAAM,QAAQ,GAAG,IAAA,yCAAmB,EAAC,SAAS,CAAC,CAAC;QAChD,IAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,EAAE,UAAC,KAAK,IAAc,OAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAArB,CAAqB,CAAC,CAAC;QAE7E,OAAO,IAAA,2BAAmB,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC,IACD,CAAC;AAEI,IAAM,mBAAmB,GAAG,UACjC,QAA+B,EAC/B,KAAuC;IAEvC,OAAO,UAAC,KAA4B;QAClC,IAAM,WAAW,GAAG,IAAA,sBAAU,EAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACtD,IAAM,YAAY,GAAG,6XAGd,CAAC;QAER,OAAO,CACL,2BAAC,KAAK,CAAC,IAAI,4BAAK,WAAW;YACzB,2BAAC,KAAK,CAAC,SAAS,IAAC,GAAG,EAAE,YAAY,GAAI;YACrC,WAAW,CAAC,OAAO,IAAI,2BAAC,KAAK,CAAC,OAAO,QAAE,WAAW,CAAC,OAAO,CAAiB,CACjE,CACd,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,mBAAmB,uBAkB9B"}
1
+ {"version":3,"file":"MenuItemCheckbox.js","sourceRoot":"","sources":["../../src/MenuItemCheckbox/MenuItemCheckbox.tsx"],"names":[],"mappings":";;;;AAAA,qBAAqB;AACrB,6CAAoC;AACpC,qDAA0C;AAC1C,8DAAmG;AACnG,8EAAgE;AAChE,mEAMkC;AAClC,6DAA4D;AAC5D,uEAA6D;AAEhD,QAAA,gBAAgB,GAAG,IAAA,mBAAO,gDACrC,WAAW,EAAE,6CAAoB,IAC9B,0CAAe,KAClB,KAAK,EAAE;QACL,IAAI,EAAE,mBAAI;QACV,SAAS,EAAE,yBAAM;QACjB,OAAO,EAAE,wBAAI;KACd,EACD,SAAS,EAAE,UAAC,SAAgC,EAAE,QAAwC;QACpF,IAAM,QAAQ,GAAG,IAAA,yCAAmB,EAAC,SAAS,CAAC,CAAC;QAChD,IAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,EAAE,UAAC,KAAK,IAAc,OAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,EAAzC,CAAyC,CAAC,CAAC;QAEjG,OAAO,IAAA,2BAAmB,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC,IACD,CAAC;AAEI,IAAM,mBAAmB,GAAG,UACjC,QAA+B,EAC/B,KAAuC;IAEvC,OAAO,UAAC,KAA4B;QAClC,IAAM,WAAW,GAAG,IAAA,sBAAU,EAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACtD,IAAM,YAAY,GAAG,6XAGd,CAAC;QAER,OAAO,CACL,2BAAC,KAAK,CAAC,IAAI,4BAAK,WAAW;YACzB,2BAAC,KAAK,CAAC,SAAS,IAAC,GAAG,EAAE,YAAY,GAAI;YACrC,WAAW,CAAC,OAAO,IAAI,2BAAC,KAAK,CAAC,OAAO,QAAE,WAAW,CAAC,OAAO,CAAiB,CACjE,CACd,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,mBAAmB,uBAkB9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuItemCheckbox.d.ts","sourceRoot":"","sources":["../../src/MenuItemCheckbox/useMenuItemCheckbox.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAExF,OAAO,EACL,gBAAgB,EAKjB,MAAM,0CAA0C,CAAC;AAKlD,eAAO,MAAM,mBAAmB,UAAW,qBAAqB,KAAG,qBAclE,CAAC;AAUF;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,UAC9B,qBAAqB,sBACR,gBAAgB,KAAK,IAAI,KAC5C,qBAwDF,CAAC"}
1
+ {"version":3,"file":"useMenuItemCheckbox.d.ts","sourceRoot":"","sources":["../../src/MenuItemCheckbox/useMenuItemCheckbox.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAExF,OAAO,EACL,gBAAgB,EAKjB,MAAM,0CAA0C,CAAC;AAKlD,eAAO,MAAM,mBAAmB,UAAW,qBAAqB,KAAG,qBAgBlE,CAAC;AAUF;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,UAC9B,qBAAqB,sBACR,gBAAgB,KAAK,IAAI,KAC5C,qBA0DF,CAAC"}
@@ -9,13 +9,15 @@ var menuListContext_1 = require("../context/menuListContext");
9
9
  var defaultAccessibilityActions = [{ name: 'Toggle' }];
10
10
  var useMenuItemCheckbox = function (props) {
11
11
  var _a;
12
- var name = props.name;
12
+ var disabled = props.disabled, name = props.name;
13
13
  var context = (0, menuListContext_1.useMenuListContext)();
14
14
  var checked = (_a = context.checked) === null || _a === void 0 ? void 0 : _a[name];
15
15
  var onCheckedChange = context.onCheckedChange;
16
16
  var toggleChecked = React.useCallback(function (e) {
17
- onCheckedChange(e, name, !checked);
18
- }, [checked, name, onCheckedChange]);
17
+ if (!disabled) {
18
+ onCheckedChange(e, name, !checked);
19
+ }
20
+ }, [checked, disabled, name, onCheckedChange]);
19
21
  return (0, exports.useMenuCheckboxInteraction)(props, toggleChecked);
20
22
  };
21
23
  exports.useMenuItemCheckbox = useMenuItemCheckbox;
@@ -48,14 +50,16 @@ var useMenuCheckboxInteraction = function (props, toggleCallback) {
48
50
  var accessibilityActionsProp = accessibilityActions
49
51
  ? (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], defaultAccessibilityActions, true), accessibilityActions, true) : defaultAccessibilityActions;
50
52
  var onAccessibilityActionProp = React.useCallback(function (event) {
51
- if (event.nativeEvent.actionName === 'Toggle') {
52
- toggleCallback(event);
53
+ if (!disabled) {
54
+ if (event.nativeEvent.actionName === 'Toggle') {
55
+ toggleCallback(event);
56
+ }
57
+ onAccessibilityAction && onAccessibilityAction(event);
53
58
  }
54
- onAccessibilityAction && onAccessibilityAction(event);
55
- }, [toggleCallback, onAccessibilityAction]);
59
+ }, [disabled, toggleCallback, onAccessibilityAction]);
56
60
  var state = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, pressable.state), { disabled: !!props.disabled, checked: checked });
57
61
  return {
58
- props: (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, pressable.props), { accessible: true, accessibilityActions: accessibilityActionsProp, accessibilityLabel: props.accessibilityLabel, accessibilityRole: 'menuitem', accessibilityState: getAccessibilityState(disabled, state.checked, accessibilityState), enableFocusRing: true, focusable: !disabled, onAccessibilityAction: onAccessibilityActionProp, ref: buttonRef }), onKeyProps),
62
+ props: (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, pressable.props), { accessible: true, accessibilityActions: accessibilityActionsProp, accessibilityLabel: props.accessibilityLabel || props.content, accessibilityRole: 'menuitem', accessibilityState: getAccessibilityState(disabled, state.checked, accessibilityState), enableFocusRing: true, focusable: true, onAccessibilityAction: onAccessibilityActionProp, ref: buttonRef }), onKeyProps),
59
63
  state: state,
60
64
  };
61
65
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuItemCheckbox.js","sourceRoot":"","sources":["../../src/MenuItemCheckbox/useMenuItemCheckbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useMenuItemCheckbox.js","sourceRoot":"","sources":["../../src/MenuItemCheckbox/useMenuItemCheckbox.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuItemRadio.d.ts","sourceRoot":"","sources":["../../src/MenuItemRadio/useMenuItemRadio.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAG1G,eAAO,MAAM,gBAAgB,UAAW,qBAAqB,KAAG,qBAc/D,CAAC"}
1
+ {"version":3,"file":"useMenuItemRadio.d.ts","sourceRoot":"","sources":["../../src/MenuItemRadio/useMenuItemRadio.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAG1G,eAAO,MAAM,gBAAgB,UAAW,qBAAqB,KAAG,qBAgB/D,CAAC"}
@@ -7,13 +7,15 @@ var menuListContext_1 = require("../context/menuListContext");
7
7
  var useMenuItemCheckbox_1 = require("../MenuItemCheckbox/useMenuItemCheckbox");
8
8
  var useMenuItemRadio = function (props) {
9
9
  var _a;
10
- var name = props.name;
10
+ var disabled = props.disabled, name = props.name;
11
11
  var context = (0, menuListContext_1.useMenuListContext)();
12
12
  var checked = (_a = context.checked) === null || _a === void 0 ? void 0 : _a[name];
13
13
  var selectRadio = context.selectRadio;
14
14
  var toggleChecked = React.useCallback(function (e) {
15
- selectRadio(e, name, !checked);
16
- }, [checked, name, selectRadio]);
15
+ if (!disabled) {
16
+ selectRadio(e, name, !checked);
17
+ }
18
+ }, [checked, disabled, name, selectRadio]);
17
19
  return (0, useMenuItemCheckbox_1.useMenuCheckboxInteraction)(props, toggleChecked);
18
20
  };
19
21
  exports.useMenuItemRadio = useMenuItemRadio;
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuItemRadio.js","sourceRoot":"","sources":["../../src/MenuItemRadio/useMenuItemRadio.ts"],"names":[],"mappings":";;;;AAAA,wDAA+B;AAE/B,8DAAgE;AAEhE,+EAAqF;AAE9E,IAAM,gBAAgB,GAAG,UAAC,KAA4B;;IACnD,IAAA,IAAI,GAAK,KAAK,KAAV,CAAW;IACvB,IAAM,OAAO,GAAG,IAAA,oCAAkB,GAAE,CAAC;IACrC,IAAM,OAAO,GAAG,MAAA,OAAO,CAAC,OAAO,0CAAG,IAAI,CAAC,CAAC;IACxC,IAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAExC,IAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CACrC,UAAC,CAAmB;QAClB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,EACD,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAC7B,CAAC;IAEF,OAAO,IAAA,gDAA0B,EAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAC1D,CAAC,CAAC;AAdW,QAAA,gBAAgB,oBAc3B"}
1
+ {"version":3,"file":"useMenuItemRadio.js","sourceRoot":"","sources":["../../src/MenuItemRadio/useMenuItemRadio.ts"],"names":[],"mappings":";;;;AAAA,wDAA+B;AAE/B,8DAAgE;AAEhE,+EAAqF;AAE9E,IAAM,gBAAgB,GAAG,UAAC,KAA4B;;IACnD,IAAA,QAAQ,GAAW,KAAK,SAAhB,EAAE,IAAI,GAAK,KAAK,KAAV,CAAW;IACjC,IAAM,OAAO,GAAG,IAAA,oCAAkB,GAAE,CAAC;IACrC,IAAM,OAAO,GAAG,MAAA,OAAO,CAAC,OAAO,0CAAG,IAAI,CAAC,CAAC;IACxC,IAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAExC,IAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CACrC,UAAC,CAAmB;QAClB,IAAI,CAAC,QAAQ,EAAE;YACb,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;SAChC;IACH,CAAC,EACD,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,CACvC,CAAC;IAEF,OAAO,IAAA,gDAA0B,EAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAC1D,CAAC,CAAC;AAhBW,QAAA,gBAAgB,oBAgB3B"}
@@ -1,4 +1,3 @@
1
- import { MenuPopoverProps } from './MenuPopover.types';
2
- export declare const MenuPopover: import("@fluentui-react-native/framework").ComposableFunction<MenuPopoverProps>;
1
+ export declare const MenuPopover: import("@fluentui-react-native/framework").ComposableFunction<import("@fluentui-react-native/callout").ICalloutProps>;
3
2
  export default MenuPopover;
4
3
  //# sourceMappingURL=MenuPopover.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuPopover.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAmB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGxE,eAAO,MAAM,WAAW,iFAoBtB,CAAC;AAGH,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"MenuPopover.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.tsx"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW,uHAqBtB,CAAC;AAGH,eAAe,WAAW,CAAC"}
@@ -11,7 +11,7 @@ exports.MenuPopover = (0, framework_1.stagedComponent)(function (props) {
11
11
  var state = (0, useMenuPopover_1.useMenuPopover)(props);
12
12
  var theme = (0, framework_1.useFluentTheme)();
13
13
  return function (_rest, children) {
14
- return (react_1.default.createElement(callout_1.Callout, { borderWidth: 1, borderColor: theme.colors.neutralStrokeAccessible, target: state.triggerRef, onDismiss: state.onDismiss, dismissBehaviors: state.dismissBehaviors, setInitialFocus: state.setInitialFocus, directionalHint: state.directionalHint, doNotTakePointerCapture: state.doNotTakePointerCapture }, children));
14
+ return (react_1.default.createElement(callout_1.Callout, { accessibilityRole: state.accessibilityRole, borderWidth: 1, borderColor: theme.colors.neutralStrokeAccessible, target: state.triggerRef, onDismiss: state.onDismiss, dismissBehaviors: state.dismissBehaviors, setInitialFocus: state.setInitialFocus, directionalHint: state.directionalHint, doNotTakePointerCapture: state.doNotTakePointerCapture }, children));
15
15
  };
16
16
  });
17
17
  exports.MenuPopover.displayName = MenuPopover_types_1.menuPopoverName;
@@ -1 +1 @@
1
- {"version":3,"file":"MenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.tsx"],"names":[],"mappings":";;;;AAAA,6DAA0B;AAC1B,8DAAmF;AACnF,0DAAyD;AACzD,yDAAwE;AACxE,mDAAkD;AAErC,QAAA,WAAW,GAAG,IAAA,2BAAe,EAAC,UAAC,KAAuB;IACjE,IAAM,KAAK,GAAG,IAAA,+BAAc,EAAC,KAAK,CAAC,CAAC;IACpC,IAAM,KAAK,GAAG,IAAA,0BAAc,GAAE,CAAC;IAE/B,OAAO,UAAC,KAAuB,EAAE,QAAyB;QACxD,OAAO,CACL,8BAAC,iBAAO,IACN,WAAW,EAAE,CAAC,EACd,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,uBAAuB,EACjD,MAAM,EAAE,KAAK,CAAC,UAAU,EACxB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,eAAe,EAAE,KAAK,CAAC,eAAe,EACtC,eAAe,EAAE,KAAK,CAAC,eAAe,EACtC,uBAAuB,EAAE,KAAK,CAAC,uBAAuB,IAErD,QAAQ,CACD,CACX,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,mBAAW,CAAC,WAAW,GAAG,mCAAe,CAAC;AAE1C,kBAAe,mBAAW,CAAC"}
1
+ {"version":3,"file":"MenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.tsx"],"names":[],"mappings":";;;;AAAA,6DAA0B;AAC1B,8DAAmF;AACnF,0DAAyD;AACzD,yDAAwE;AACxE,mDAAkD;AAErC,QAAA,WAAW,GAAG,IAAA,2BAAe,EAAC,UAAC,KAAuB;IACjE,IAAM,KAAK,GAAG,IAAA,+BAAc,EAAC,KAAK,CAAC,CAAC;IACpC,IAAM,KAAK,GAAG,IAAA,0BAAc,GAAE,CAAC;IAE/B,OAAO,UAAC,KAAuB,EAAE,QAAyB;QACxD,OAAO,CACL,8BAAC,iBAAO,IACN,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAC1C,WAAW,EAAE,CAAC,EACd,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,uBAAuB,EACjD,MAAM,EAAE,KAAK,CAAC,UAAU,EACxB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,eAAe,EAAE,KAAK,CAAC,eAAe,EACtC,eAAe,EAAE,KAAK,CAAC,eAAe,EACtC,uBAAuB,EAAE,KAAK,CAAC,uBAAuB,IAErD,QAAQ,CACD,CACX,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,mBAAW,CAAC,WAAW,GAAG,mCAAe,CAAC;AAE1C,kBAAe,mBAAW,CAAC"}
@@ -1,10 +1,10 @@
1
1
  /// <reference types="react" />
2
- import type { IViewProps } from '@fluentui-react-native/adapters';
3
- import { DirectionalHint, DismissBehaviors } from '@fluentui-react-native/callout';
2
+ import { DirectionalHint, DismissBehaviors, ICalloutProps } from '@fluentui-react-native/callout';
3
+ import { AccessibilityRole } from 'react-native';
4
4
  export declare const menuPopoverName = "MenuPopover";
5
- export interface MenuPopoverProps extends Omit<IViewProps, 'onPress'> {
6
- }
5
+ export declare type MenuPopoverProps = ICalloutProps;
7
6
  export interface MenuPopoverState {
7
+ accessibilityRole: AccessibilityRole;
8
8
  directionalHint?: DirectionalHint;
9
9
  dismissBehaviors: DismissBehaviors[];
10
10
  doNotTakePointerCapture: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"MenuPopover.types.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEnF,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;CAAG;AAExE,MAAM,WAAW,gBAAgB;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,uBAAuB,EAAE,OAAO,CAAC;IACjC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;CAC9C"}
1
+ {"version":3,"file":"MenuPopover.types.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,oBAAY,gBAAgB,GAAG,aAAa,CAAC;AAE7C,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,uBAAuB,EAAE,OAAO,CAAC;IACjC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;CAC9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuPopover.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,eAAO,MAAM,cAAc,WAAY,gBAAgB,KAAG,gBAiBzD,CAAC"}
1
+ {"version":3,"file":"useMenuPopover.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,eAAO,MAAM,cAAc,WAAY,gBAAgB,KAAG,gBAkBzD,CAAC"}
@@ -18,7 +18,8 @@ var useMenuPopover = function (_props) {
18
18
  // automatically onto first element of Callout
19
19
  var setInitialFocus = react_native_1.Platform.OS === 'win32' || react_native_1.Platform.OS === 'windows';
20
20
  var doNotTakePointerCapture = context.openOnHover;
21
- return { triggerRef: triggerRef, onDismiss: onDismiss, directionalHint: directionalHint, dismissBehaviors: dismissBehaviors, doNotTakePointerCapture: doNotTakePointerCapture, setInitialFocus: setInitialFocus };
21
+ var accessibilityRole = 'menu';
22
+ return { accessibilityRole: accessibilityRole, triggerRef: triggerRef, onDismiss: onDismiss, directionalHint: directionalHint, dismissBehaviors: dismissBehaviors, doNotTakePointerCapture: doNotTakePointerCapture, setInitialFocus: setInitialFocus };
22
23
  };
23
24
  exports.useMenuPopover = useMenuPopover;
24
25
  var getDirectionalHint = function (isSubmenu, isRtl) {
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":";;;;AAAA,6DAA0B;AAC1B,6CAAqD;AAErD,sDAAwD;AAGjD,IAAM,cAAc,GAAG,UAAC,MAAwB;IACrD,IAAM,OAAO,GAAG,IAAA,4BAAc,GAAE,CAAC;IACjC,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,IAAM,SAAS,GAAG,eAAK,CAAC,WAAW,CAAC,cAAM,OAAA,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,EAAtC,CAAsC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7F,IAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY;QAC3C,CAAC,CAAE,CAAC,yBAAyB,EAAE,8BAA8B,CAAwB;QACrF,CAAC,CAAC,SAAS,CAAC;IACd,IAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,0BAAW,CAAC,KAAK,CAAC,CAAC;IAEjF,4EAA4E;IAC5E,8CAA8C;IAC9C,IAAM,eAAe,GAAG,uBAAQ,CAAC,EAAE,KAAM,OAAe,IAAI,uBAAQ,CAAC,EAAE,KAAK,SAAS,CAAC;IACtF,IAAM,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC;IAEpD,OAAO,EAAE,UAAU,YAAA,EAAE,SAAS,WAAA,EAAE,eAAe,iBAAA,EAAE,gBAAgB,kBAAA,EAAE,uBAAuB,yBAAA,EAAE,eAAe,iBAAA,EAAE,CAAC;AAChH,CAAC,CAAC;AAjBW,QAAA,cAAc,kBAiBzB;AAEF,IAAM,kBAAkB,GAAG,UAAC,SAAkB,EAAE,KAAc;IAC5D,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,KAAK,EAAE;QACT,OAAO,aAAa,CAAC;KACtB;IAED,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC"}
1
+ {"version":3,"file":"useMenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":";;;;AAAA,6DAA0B;AAC1B,6CAAqD;AAErD,sDAAwD;AAGjD,IAAM,cAAc,GAAG,UAAC,MAAwB;IACrD,IAAM,OAAO,GAAG,IAAA,4BAAc,GAAE,CAAC;IACjC,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,IAAM,SAAS,GAAG,eAAK,CAAC,WAAW,CAAC,cAAM,OAAA,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,EAAtC,CAAsC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7F,IAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY;QAC3C,CAAC,CAAE,CAAC,yBAAyB,EAAE,8BAA8B,CAAwB;QACrF,CAAC,CAAC,SAAS,CAAC;IACd,IAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,0BAAW,CAAC,KAAK,CAAC,CAAC;IAEjF,4EAA4E;IAC5E,8CAA8C;IAC9C,IAAM,eAAe,GAAG,uBAAQ,CAAC,EAAE,KAAM,OAAe,IAAI,uBAAQ,CAAC,EAAE,KAAK,SAAS,CAAC;IACtF,IAAM,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC;IACpD,IAAM,iBAAiB,GAAG,MAAM,CAAC;IAEjC,OAAO,EAAE,iBAAiB,mBAAA,EAAE,UAAU,YAAA,EAAE,SAAS,WAAA,EAAE,eAAe,iBAAA,EAAE,gBAAgB,kBAAA,EAAE,uBAAuB,yBAAA,EAAE,eAAe,iBAAA,EAAE,CAAC;AACnI,CAAC,CAAC;AAlBW,QAAA,cAAc,kBAkBzB;AAEF,IAAM,kBAAkB,GAAG,UAAC,SAAkB,EAAE,KAAc;IAC5D,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,KAAK,EAAE;QACT,OAAO,aAAa,CAAC;KACtB;IAED,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAmB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAIxE,eAAO,MAAM,WAAW,iFAiBtB,CAAC;AAGH,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"MenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAmB,gBAAgB,EAAoB,MAAM,qBAAqB,CAAC;AAK1F,eAAO,MAAM,WAAW,iFAqBtB,CAAC;AAwBH,eAAe,WAAW,CAAC"}
@@ -16,11 +16,32 @@ exports.MenuTrigger = (0, framework_1.stagedComponent)(function (props) {
16
16
  console.log('Only expecting one child for MenuTrigger');
17
17
  }
18
18
  }
19
+ // In order to properly support accessibility without erasing props set on the
20
+ // child component which may affect accessibility, we need to modify the
21
+ // state in the inner render so we can access the child component and its props.
19
22
  var child = childrenArray[0];
20
- var revised = react_1.default.cloneElement(child, menuTrigger.props);
23
+ var revisedState = getRevisedState(menuTrigger, child.props);
24
+ var revised = react_1.default.cloneElement(child, revisedState);
21
25
  return react_1.default.createElement(menuTriggerContext_1.MenuTriggerProvider, { value: menuTrigger.hasSubmenu }, revised);
22
26
  };
23
27
  });
24
28
  exports.MenuTrigger.displayName = MenuTrigger_types_1.menuTriggerName;
29
+ var getRevisedState = (0, framework_1.memoize)(getRevisedStateWorker);
30
+ function getRevisedStateWorker(state, props) {
31
+ var revisedState = (0, tslib_1.__assign)({}, state);
32
+ if (props.accessibilityState) {
33
+ revisedState.props.accessibilityState = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, state.props.accessibilityState), props.accessibilityState);
34
+ }
35
+ if (props.accessibilityActions) {
36
+ revisedState.props.accessibilityActions = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, state.props.accessibilityActions), props.accessibilityActions);
37
+ }
38
+ if (props.onAccessibilityAction) {
39
+ revisedState.props.onAccessibilityAction = function (e) {
40
+ state.props.onAccessibilityAction(e);
41
+ props.onAccessibilityAction(e);
42
+ };
43
+ }
44
+ return revisedState;
45
+ }
25
46
  exports.default = exports.MenuTrigger;
26
47
  //# sourceMappingURL=MenuTrigger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.tsx"],"names":[],"mappings":";;;;AAAA,6DAA0B;AAC1B,8DAAmE;AACnE,yDAAwE;AACxE,mDAAkD;AAClD,oEAAoE;AAEvD,QAAA,WAAW,GAAG,IAAA,2BAAe,EAAC,UAAC,KAAuB;IACjE,IAAM,WAAW,GAAG,IAAA,+BAAc,EAAC,KAAK,CAAC,CAAC;IAE1C,OAAO,UAAC,KAAuB,EAAE,QAAyB;QACxD,IAAM,aAAa,GAAG,eAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAyB,CAAC;QAE/E,IAAI,OAAO,EAAE;YACX,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9B,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;aACzD;SACF;QAED,IAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAM,OAAO,GAAG,eAAK,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QAE7D,OAAO,8BAAC,wCAAmB,IAAC,KAAK,EAAE,WAAW,CAAC,UAAU,IAAG,OAAO,CAAuB,CAAC;IAC7F,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,mBAAW,CAAC,WAAW,GAAG,mCAAe,CAAC;AAE1C,kBAAe,mBAAW,CAAC"}
1
+ {"version":3,"file":"MenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.tsx"],"names":[],"mappings":";;;;AAAA,6DAA0B;AAC1B,8DAA4E;AAC5E,yDAA0F;AAC1F,mDAAkD;AAElD,oEAAoE;AAEvD,QAAA,WAAW,GAAG,IAAA,2BAAe,EAAC,UAAC,KAAuB;IACjE,IAAM,WAAW,GAAG,IAAA,+BAAc,EAAC,KAAK,CAAC,CAAC;IAE1C,OAAO,UAAC,KAAuB,EAAE,QAAyB;QACxD,IAAM,aAAa,GAAG,eAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAyB,CAAC;QAE/E,IAAI,OAAO,EAAE;YACX,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9B,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;aACzD;SACF;QAED,8EAA8E;QAC9E,wEAAwE;QACxE,gFAAgF;QAChF,IAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAM,YAAY,GAAG,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/D,IAAM,OAAO,GAAG,eAAK,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAExD,OAAO,8BAAC,wCAAmB,IAAC,KAAK,EAAE,WAAW,CAAC,UAAU,IAAG,OAAO,CAAuB,CAAC;IAC7F,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,mBAAW,CAAC,WAAW,GAAG,mCAAe,CAAC;AAE1C,IAAM,eAAe,GAAG,IAAA,mBAAO,EAAC,qBAAqB,CAAC,CAAC;AACvD,SAAS,qBAAqB,CAAC,KAAuB,EAAE,KAAU;IAChE,IAAM,YAAY,6BAAQ,KAAK,CAAE,CAAC;IAClC,IAAI,KAAK,CAAC,kBAAkB,EAAE;QAC5B,YAAY,CAAC,KAAK,CAAC,kBAAkB,mDAAQ,KAAK,CAAC,KAAK,CAAC,kBAAkB,GAAK,KAAK,CAAC,kBAAkB,CAAE,CAAC;KAC5G;IAED,IAAI,KAAK,CAAC,oBAAoB,EAAE;QAC9B,YAAY,CAAC,KAAK,CAAC,oBAAoB,mDAAQ,KAAK,CAAC,KAAK,CAAC,oBAAoB,GAAK,KAAK,CAAC,oBAAoB,CAAE,CAAC;KAClH;IAED,IAAI,KAAK,CAAC,qBAAqB,EAAE;QAC/B,YAAY,CAAC,KAAK,CAAC,qBAAqB,GAAG,UAAC,CAA2B;YACrE,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACrC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC;KACH;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,kBAAe,mBAAW,CAAC"}
@@ -7,6 +7,9 @@ export interface MenuTriggerProps extends Omit<IWithPressableOptions<ViewProps>,
7
7
  * A RefObject to refer to the trigger component.
8
8
  */
9
9
  componentRef?: React.RefObject<React.Component>;
10
+ /**
11
+ * A callback to call on button click event
12
+ */
10
13
  onClick?: (e: InteractionEvent) => void;
11
14
  }
12
15
  export interface MenuTriggerState {
@@ -1 +1 @@
1
- {"version":3,"file":"MenuTrigger.types.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IACzF;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEhD,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB"}
1
+ {"version":3,"file":"MenuTrigger.types.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IACzF;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEhD;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGzE,eAAO,MAAM,cAAc,WAAY,gBAAgB,KAAG,gBAiCzD,CAAC"}
1
+ {"version":3,"file":"useMenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAOzE,eAAO,MAAM,cAAc,WAAY,gBAAgB,KAAG,gBA4DzD,CAAC"}
@@ -1,14 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useMenuTrigger = void 0;
4
+ var tslib_1 = require("tslib");
4
5
  var menuContext_1 = require("../context/menuContext");
5
6
  var react_native_1 = require("react-native");
7
+ var react_1 = (0, tslib_1.__importDefault)(require("react"));
8
+ var accessibilityActions = react_native_1.Platform.OS === 'win32' ? [{ name: 'Expand' }, { name: 'Collapse' }] : [];
6
9
  var useMenuTrigger = function (_props) {
7
10
  var context = (0, menuContext_1.useMenuContext)();
8
11
  var setOpen = context.setOpen;
9
12
  var open = context.open;
10
13
  var openOnHover = context.openOnHover;
11
14
  var triggerRef = context.triggerRef;
15
+ var accessibilityState = context.open ? { expanded: true } : { expanded: false };
16
+ var onAccessibilityAction = react_1.default.useCallback(function (e) {
17
+ if (react_native_1.Platform.OS === 'win32') {
18
+ switch (e.nativeEvent.actionName) {
19
+ case 'Expand':
20
+ setOpen(e, true /* isOpen */);
21
+ break;
22
+ case 'Collapse':
23
+ setOpen(e, false /* isOpen */);
24
+ break;
25
+ }
26
+ }
27
+ }, [setOpen]);
12
28
  var delayHover = react_native_1.Platform.select({
13
29
  macos: 100,
14
30
  default: 500, // win32
@@ -27,7 +43,17 @@ var useMenuTrigger = function (_props) {
27
43
  setOpen(e, !open);
28
44
  };
29
45
  return {
30
- props: { onClick: onClick, onHoverIn: onHoverIn, onHoverOut: onHoverOut, componentRef: triggerRef, delayHoverIn: delayHover, delayHoverOut: delayHover },
46
+ props: {
47
+ onClick: onClick,
48
+ onHoverIn: onHoverIn,
49
+ onHoverOut: react_native_1.Platform.OS === 'win32' && onHoverOut,
50
+ componentRef: triggerRef,
51
+ delayHoverIn: delayHover,
52
+ delayHoverOut: react_native_1.Platform.OS === 'win32' && delayHover,
53
+ accessibilityState: accessibilityState,
54
+ accessibilityActions: accessibilityActions,
55
+ onAccessibilityAction: onAccessibilityAction,
56
+ },
31
57
  hasSubmenu: context.isSubmenu,
32
58
  };
33
59
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":";;;AAAA,sDAAwD;AAGxD,6CAAwC;AAEjC,IAAM,cAAc,GAAG,UAAC,MAAwB;IACrD,IAAM,OAAO,GAAG,IAAA,4BAAc,GAAE,CAAC;IAEjC,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAEtC,IAAM,UAAU,GAAG,uBAAQ,CAAC,MAAM,CAAC;QACjC,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,GAAG,EAAE,QAAQ;KACvB,CAAC,CAAC;IAEH,IAAM,SAAS,GAAG,UAAC,CAAmB;QACpC,IAAI,WAAW,EAAE;YACf,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SAC/B;IACH,CAAC,CAAC;IAEF,IAAM,UAAU,GAAG,UAAC,CAAmB;QACrC,IAAI,WAAW,EAAE;YACf,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;SAChC;IACH,CAAC,CAAC;IAEF,IAAM,OAAO,GAAG,UAAC,CAAmB;QAClC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,EAAE,OAAO,SAAA,EAAE,SAAS,WAAA,EAAE,UAAU,YAAA,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE;QACxH,UAAU,EAAE,OAAO,CAAC,SAAS;KAC9B,CAAC;AACJ,CAAC,CAAC;AAjCW,QAAA,cAAc,kBAiCzB"}
1
+ {"version":3,"file":"useMenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":";;;;AAAA,sDAAwD;AAGxD,6CAA2F;AAC3F,6DAA0B;AAE1B,IAAM,oBAAoB,GACxB,uBAAQ,CAAC,EAAE,KAAM,OAAe,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAmC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAqC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAEpI,IAAM,cAAc,GAAG,UAAC,MAAwB;IACrD,IAAM,OAAO,GAAG,IAAA,4BAAc,GAAE,CAAC;IAEjC,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,IAAM,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACnF,IAAM,qBAAqB,GAAG,eAAK,CAAC,WAAW,CAC7C,UAAC,CAA2B;QAC1B,IAAI,uBAAQ,CAAC,EAAE,KAAM,OAAe,EAAE;YACpC,QAAQ,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE;gBAChC,KAAK,QAAQ;oBACX,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC9B,MAAM;gBAER,KAAK,UAAU;oBACb,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;oBAC/B,MAAM;aACT;SACF;IACH,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,IAAM,UAAU,GAAG,uBAAQ,CAAC,MAAM,CAAC;QACjC,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,GAAG,EAAE,QAAQ;KACvB,CAAC,CAAC;IAEH,IAAM,SAAS,GAAG,UAAC,CAAmB;QACpC,IAAI,WAAW,EAAE;YACf,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SAC/B;IACH,CAAC,CAAC;IAEF,IAAM,UAAU,GAAG,UAAC,CAAmB;QACrC,IAAI,WAAW,EAAE;YACf,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;SAChC;IACH,CAAC,CAAC;IAEF,IAAM,OAAO,GAAG,UAAC,CAAmB;QAClC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,EAAE;YACL,OAAO,SAAA;YACP,SAAS,WAAA;YACT,UAAU,EAAE,uBAAQ,CAAC,EAAE,KAAM,OAAe,IAAI,UAAU;YAC1D,YAAY,EAAE,UAAU;YACxB,YAAY,EAAE,UAAU;YACxB,aAAa,EAAE,uBAAQ,CAAC,EAAE,KAAM,OAAe,IAAI,UAAU;YAC7D,kBAAkB,oBAAA;YAClB,oBAAoB,sBAAA;YACpB,qBAAqB,uBAAA;SACtB;QACD,UAAU,EAAE,OAAO,CAAC,SAAS;KAC9B,CAAC;AACJ,CAAC,CAAC;AA5DW,QAAA,cAAc,kBA4DzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui-react-native/menu",
3
- "version": "0.11.0",
3
+ "version": "0.13.0",
4
4
  "description": "A cross-platform Menu component using the Fluent Design System",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -23,10 +23,10 @@
23
23
  },
24
24
  "dependencies": {
25
25
  "@fluentui-react-native/adapters": ">=0.8.5 <1.0.0",
26
- "@fluentui-react-native/callout": ">=0.20.4 <1.0.0",
26
+ "@fluentui-react-native/callout": ">=0.20.5 <1.0.0",
27
27
  "@fluentui-react-native/experimental-text": ">=0.9.0 <1.0.0",
28
28
  "@fluentui-react-native/framework": "0.7.30",
29
- "@fluentui-react-native/interactive-hooks": ">=0.16.0 <1.0.0",
29
+ "@fluentui-react-native/interactive-hooks": ">=0.16.1 <1.0.0",
30
30
  "@fluentui-react-native/theme-tokens": ">=0.18.0 <1.0.0",
31
31
  "@fluentui-react-native/tokens": ">=0.14.0 <1.0.0",
32
32
  "@fluentui-react-native/use-styling": ">=0.8.3 <1.0.0",
@@ -18,7 +18,7 @@ export const MenuItem = compose<MenuItemType>({
18
18
  },
19
19
  useRender: (userProps: MenuItemProps, useSlots: UseSlots<MenuItemType>) => {
20
20
  const menuItem = useMenuItem(userProps);
21
- const Slots = useSlots(userProps, (layer): boolean => menuItem.state[layer]);
21
+ const Slots = useSlots(userProps, (layer): boolean => menuItem.state[layer] || userProps[layer]);
22
22
 
23
23
  return (final: MenuItemProps) => {
24
24
  const mergedProps = mergeProps(menuItem.props, final);
@@ -1,20 +1,60 @@
1
1
  import * as React from 'react';
2
- import { AccessibilityState } from 'react-native';
2
+ import { AccessibilityState, I18nManager } from 'react-native';
3
3
  import { MenuItemProps, MenuItemState } from './MenuItem.types';
4
4
  import { memoize } from '@fluentui-react-native/framework';
5
- import { useAsPressable, useKeyProps } from '@fluentui-react-native/interactive-hooks';
5
+ import { InteractionEvent, isKeyPressEvent, useAsPressable, useKeyDownProps } from '@fluentui-react-native/interactive-hooks';
6
6
  import { useMenuContext } from '../context/menuContext';
7
7
  import { useMenuListContext } from '../context/menuListContext';
8
8
  import { useMenuTriggerContext } from '../context/menuTriggerContext';
9
9
 
10
+ const triggerKeys = [' ', 'Enter'];
11
+ const submenuTriggerKeys = [...triggerKeys, 'ArrowLeft', 'ArrowRight'];
12
+
10
13
  export const useMenuItem = (props: MenuItemProps): MenuItemState => {
11
14
  // attach the pressable state handlers
12
15
  const defaultComponentRef = React.useRef(null);
13
16
  const { onClick, accessibilityState, componentRef = defaultComponentRef, disabled, ...rest } = props;
14
- const pressable = useAsPressable({ ...rest, disabled, onPress: onClick });
15
- const onKeyProps = useKeyProps(onClick, ' ', 'Enter');
16
17
  const isTrigger = useMenuTriggerContext();
17
- const hasSubmenu = useMenuContext().isSubmenu && isTrigger;
18
+ const isSubmenu = useMenuContext().isSubmenu;
19
+ const hasSubmenu = isSubmenu && isTrigger;
20
+ const isInSubmenu = isSubmenu && !isTrigger;
21
+
22
+ const setOpen = useMenuContext().setOpen;
23
+ const onInvoke = React.useCallback(
24
+ (e: InteractionEvent) => {
25
+ if (disabled) {
26
+ return;
27
+ }
28
+
29
+ const isRtl = I18nManager.isRTL;
30
+ if (
31
+ isKeyPressEvent(e) &&
32
+ hasSubmenu &&
33
+ ((isRtl && e.nativeEvent.key === 'ArrowRight') || (!isRtl && e.nativeEvent.key === 'ArrowLeft'))
34
+ ) {
35
+ return;
36
+ }
37
+ if (
38
+ isKeyPressEvent(e) &&
39
+ isInSubmenu &&
40
+ ((isRtl && e.nativeEvent.key === 'ArrowLeft') || (!isRtl && e.nativeEvent.key === 'ArrowRight'))
41
+ ) {
42
+ return;
43
+ }
44
+
45
+ onClick?.(e);
46
+ if (!hasSubmenu) {
47
+ setOpen(e, false /*isOpen*/);
48
+ }
49
+ },
50
+ [disabled, hasSubmenu, isInSubmenu, onClick, setOpen],
51
+ );
52
+
53
+ const pressable = useAsPressable({ ...rest, disabled, onPress: onInvoke });
54
+ const keys = isSubmenu ? submenuTriggerKeys : triggerKeys;
55
+
56
+ // Explicitly override onKeyDown to override the native behavior of moving focus with arrow keys.
57
+ const onKeyDownProps = useKeyDownProps(onInvoke, ...keys);
18
58
  const hasCheckmarks = useMenuListContext().hasCheckmarks;
19
59
 
20
60
  return {
@@ -22,13 +62,13 @@ export const useMenuItem = (props: MenuItemProps): MenuItemState => {
22
62
  ...pressable.props,
23
63
  accessible: true,
24
64
  accessibilityRole: 'menuitem',
25
- onAccessibilityTap: props.onAccessibilityTap || props.onClick,
26
- accessibilityLabel: props.accessibilityLabel,
65
+ onAccessibilityTap: props.onAccessibilityTap || onInvoke,
66
+ accessibilityLabel: props.accessibilityLabel || props.content,
27
67
  accessibilityState: getAccessibilityState(disabled, accessibilityState),
28
68
  enableFocusRing: true,
29
- focusable: !disabled,
69
+ focusable: true,
30
70
  ref: componentRef,
31
- ...onKeyProps,
71
+ ...onKeyDownProps,
32
72
  },
33
73
  state: pressable.state,
34
74
  hasSubmenu,
@@ -23,7 +23,7 @@ export const MenuItemCheckbox = compose<MenuItemCheckboxType>({
23
23
  },
24
24
  useRender: (userProps: MenuItemCheckboxProps, useSlots: UseSlots<MenuItemCheckboxType>) => {
25
25
  const menuItem = useMenuItemCheckbox(userProps);
26
- const Slots = useSlots(userProps, (layer): boolean => menuItem.state[layer]);
26
+ const Slots = useSlots(userProps, (layer): boolean => menuItem.state[layer] || userProps[layer]);
27
27
 
28
28
  return menuItemFinalRender(menuItem, Slots);
29
29
  },
@@ -14,16 +14,18 @@ import { useMenuListContext } from '../context/menuListContext';
14
14
  const defaultAccessibilityActions = [{ name: 'Toggle' }];
15
15
 
16
16
  export const useMenuItemCheckbox = (props: MenuItemCheckboxProps): MenuItemCheckboxState => {
17
- const { name } = props;
17
+ const { disabled, name } = props;
18
18
  const context = useMenuListContext();
19
19
  const checked = context.checked?.[name];
20
20
  const onCheckedChange = context.onCheckedChange;
21
21
 
22
22
  const toggleChecked = React.useCallback(
23
23
  (e: InteractionEvent) => {
24
- onCheckedChange(e, name, !checked);
24
+ if (!disabled) {
25
+ onCheckedChange(e, name, !checked);
26
+ }
25
27
  },
26
- [checked, name, onCheckedChange],
28
+ [checked, disabled, name, onCheckedChange],
27
29
  );
28
30
 
29
31
  return useMenuCheckboxInteraction(props, toggleChecked);
@@ -74,12 +76,14 @@ export const useMenuCheckboxInteraction = (
74
76
  : defaultAccessibilityActions;
75
77
  const onAccessibilityActionProp = React.useCallback(
76
78
  (event: AccessibilityActionEvent) => {
77
- if (event.nativeEvent.actionName === 'Toggle') {
78
- toggleCallback(event);
79
+ if (!disabled) {
80
+ if (event.nativeEvent.actionName === 'Toggle') {
81
+ toggleCallback(event);
82
+ }
83
+ onAccessibilityAction && onAccessibilityAction(event);
79
84
  }
80
- onAccessibilityAction && onAccessibilityAction(event);
81
85
  },
82
- [toggleCallback, onAccessibilityAction],
86
+ [disabled, toggleCallback, onAccessibilityAction],
83
87
  );
84
88
 
85
89
  const state = {
@@ -93,11 +97,11 @@ export const useMenuCheckboxInteraction = (
93
97
  ...pressable.props,
94
98
  accessible: true,
95
99
  accessibilityActions: accessibilityActionsProp,
96
- accessibilityLabel: props.accessibilityLabel,
100
+ accessibilityLabel: props.accessibilityLabel || props.content,
97
101
  accessibilityRole: 'menuitem',
98
102
  accessibilityState: getAccessibilityState(disabled, state.checked, accessibilityState),
99
103
  enableFocusRing: true,
100
- focusable: !disabled,
104
+ focusable: true,
101
105
  onAccessibilityAction: onAccessibilityActionProp,
102
106
  ref: buttonRef,
103
107
  ...onKeyProps,
@@ -5,16 +5,18 @@ import { MenuItemCheckboxProps, MenuItemCheckboxState } from '../MenuItemCheckbo
5
5
  import { useMenuCheckboxInteraction } from '../MenuItemCheckbox/useMenuItemCheckbox';
6
6
 
7
7
  export const useMenuItemRadio = (props: MenuItemCheckboxProps): MenuItemCheckboxState => {
8
- const { name } = props;
8
+ const { disabled, name } = props;
9
9
  const context = useMenuListContext();
10
10
  const checked = context.checked?.[name];
11
11
  const selectRadio = context.selectRadio;
12
12
 
13
13
  const toggleChecked = React.useCallback(
14
14
  (e: InteractionEvent) => {
15
- selectRadio(e, name, !checked);
15
+ if (!disabled) {
16
+ selectRadio(e, name, !checked);
17
+ }
16
18
  },
17
- [checked, name, selectRadio],
19
+ [checked, disabled, name, selectRadio],
18
20
  );
19
21
 
20
22
  return useMenuCheckboxInteraction(props, toggleChecked);
@@ -11,6 +11,7 @@ export const MenuPopover = stagedComponent((props: MenuPopoverProps) => {
11
11
  return (_rest: MenuPopoverProps, children: React.ReactNode) => {
12
12
  return (
13
13
  <Callout
14
+ accessibilityRole={state.accessibilityRole}
14
15
  borderWidth={1}
15
16
  borderColor={theme.colors.neutralStrokeAccessible}
16
17
  target={state.triggerRef}