@fluentui-react-native/menu 0.5.2 → 0.8.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 (200) hide show
  1. package/CHANGELOG.json +46 -1
  2. package/CHANGELOG.md +26 -2
  3. package/lib/Menu/Menu.types.d.ts +8 -3
  4. package/lib/Menu/Menu.types.d.ts.map +1 -1
  5. package/lib/Menu/Menu.types.js.map +1 -1
  6. package/lib/Menu/useMenu.d.ts.map +1 -1
  7. package/lib/Menu/useMenu.js +19 -9
  8. package/lib/Menu/useMenu.js.map +1 -1
  9. package/lib/Menu/useMenuContextValue.js +2 -1
  10. package/lib/Menu/useMenuContextValue.js.map +1 -1
  11. package/lib/MenuItem/MenuItem.d.ts.map +1 -1
  12. package/lib/MenuItem/MenuItem.js +3 -1
  13. package/lib/MenuItem/MenuItem.js.map +1 -1
  14. package/lib/MenuItem/MenuItem.styling.d.ts.map +1 -1
  15. package/lib/MenuItem/MenuItem.styling.js +7 -0
  16. package/lib/MenuItem/MenuItem.styling.js.map +1 -1
  17. package/lib/MenuItem/MenuItem.types.d.ts +12 -7
  18. package/lib/MenuItem/MenuItem.types.d.ts.map +1 -1
  19. package/lib/MenuItem/MenuItemTokens.d.ts.map +1 -1
  20. package/lib/MenuItem/MenuItemTokens.js +2 -0
  21. package/lib/MenuItem/MenuItemTokens.js.map +1 -1
  22. package/lib/MenuItem/MenuItemTokens.win32.d.ts.map +1 -1
  23. package/lib/MenuItem/MenuItemTokens.win32.js +2 -0
  24. package/lib/MenuItem/MenuItemTokens.win32.js.map +1 -1
  25. package/lib/MenuItem/useMenuItem.d.ts.map +1 -1
  26. package/lib/MenuItem/useMenuItem.js +5 -1
  27. package/lib/MenuItem/useMenuItem.js.map +1 -1
  28. package/lib/MenuItemCheckbox/MenuItemCheckbox.d.ts.map +1 -1
  29. package/lib/MenuItemCheckbox/MenuItemCheckbox.js +6 -1
  30. package/lib/MenuItemCheckbox/MenuItemCheckbox.js.map +1 -1
  31. package/lib/MenuItemCheckbox/MenuItemCheckbox.styling.d.ts.map +1 -1
  32. package/lib/MenuItemCheckbox/MenuItemCheckbox.styling.js +12 -6
  33. package/lib/MenuItemCheckbox/MenuItemCheckbox.styling.js.map +1 -1
  34. package/lib/MenuItemCheckbox/MenuItemCheckbox.types.d.ts +14 -9
  35. package/lib/MenuItemCheckbox/MenuItemCheckbox.types.d.ts.map +1 -1
  36. package/lib/MenuItemCheckbox/MenuItemCheckbox.types.js.map +1 -1
  37. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.d.ts.map +1 -1
  38. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.js +20 -0
  39. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.js.map +1 -1
  40. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.win32.d.ts.map +1 -1
  41. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.win32.js +20 -0
  42. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.win32.js.map +1 -1
  43. package/lib/MenuItemCheckbox/useMenuItemCheckbox.d.ts.map +1 -1
  44. package/lib/MenuItemCheckbox/useMenuItemCheckbox.js +31 -12
  45. package/lib/MenuItemCheckbox/useMenuItemCheckbox.js.map +1 -1
  46. package/lib/MenuList/MenuList.d.ts.map +1 -1
  47. package/lib/MenuList/MenuList.js +8 -2
  48. package/lib/MenuList/MenuList.js.map +1 -1
  49. package/lib/MenuList/MenuList.types.d.ts +8 -0
  50. package/lib/MenuList/MenuList.types.d.ts.map +1 -1
  51. package/lib/MenuList/MenuList.types.js.map +1 -1
  52. package/lib/MenuList/useMenuContextValue.d.ts +4 -0
  53. package/lib/MenuList/useMenuContextValue.d.ts.map +1 -0
  54. package/lib/MenuList/useMenuContextValue.js +5 -0
  55. package/lib/MenuList/useMenuContextValue.js.map +1 -0
  56. package/lib/MenuList/useMenuList.d.ts +3 -0
  57. package/lib/MenuList/useMenuList.d.ts.map +1 -0
  58. package/lib/MenuList/useMenuList.js +31 -0
  59. package/lib/MenuList/useMenuList.js.map +1 -0
  60. package/lib/MenuPopover/MenuPopover.d.ts.map +1 -1
  61. package/lib/MenuPopover/MenuPopover.js +1 -1
  62. package/lib/MenuPopover/MenuPopover.js.map +1 -1
  63. package/lib/MenuPopover/MenuPopover.types.d.ts +3 -0
  64. package/lib/MenuPopover/MenuPopover.types.d.ts.map +1 -1
  65. package/lib/MenuPopover/MenuPopover.types.js.map +1 -1
  66. package/lib/MenuPopover/useMenuPopover.d.ts.map +1 -1
  67. package/lib/MenuPopover/useMenuPopover.js +7 -1
  68. package/lib/MenuPopover/useMenuPopover.js.map +1 -1
  69. package/lib/MenuTrigger/useMenuTrigger.d.ts +2 -1
  70. package/lib/MenuTrigger/useMenuTrigger.d.ts.map +1 -1
  71. package/lib/MenuTrigger/useMenuTrigger.js +9 -3
  72. package/lib/MenuTrigger/useMenuTrigger.js.map +1 -1
  73. package/lib/context/menuContext.d.ts.map +1 -1
  74. package/lib/context/menuContext.js +5 -0
  75. package/lib/context/menuContext.js.map +1 -1
  76. package/lib/context/menuListContext.d.ts +10 -0
  77. package/lib/context/menuListContext.d.ts.map +1 -0
  78. package/lib/context/menuListContext.js +11 -0
  79. package/lib/context/menuListContext.js.map +1 -0
  80. package/lib/index.d.ts +1 -0
  81. package/lib/index.d.ts.map +1 -1
  82. package/lib/index.js +1 -0
  83. package/lib/index.js.map +1 -1
  84. package/lib-commonjs/Menu/Menu.types.d.ts +8 -3
  85. package/lib-commonjs/Menu/Menu.types.d.ts.map +1 -1
  86. package/lib-commonjs/Menu/Menu.types.js.map +1 -1
  87. package/lib-commonjs/Menu/useMenu.d.ts.map +1 -1
  88. package/lib-commonjs/Menu/useMenu.js +18 -9
  89. package/lib-commonjs/Menu/useMenu.js.map +1 -1
  90. package/lib-commonjs/Menu/useMenuContextValue.js +2 -1
  91. package/lib-commonjs/Menu/useMenuContextValue.js.map +1 -1
  92. package/lib-commonjs/MenuItem/MenuItem.d.ts.map +1 -1
  93. package/lib-commonjs/MenuItem/MenuItem.js +3 -1
  94. package/lib-commonjs/MenuItem/MenuItem.js.map +1 -1
  95. package/lib-commonjs/MenuItem/MenuItem.styling.d.ts.map +1 -1
  96. package/lib-commonjs/MenuItem/MenuItem.styling.js +7 -0
  97. package/lib-commonjs/MenuItem/MenuItem.styling.js.map +1 -1
  98. package/lib-commonjs/MenuItem/MenuItem.types.d.ts +12 -7
  99. package/lib-commonjs/MenuItem/MenuItem.types.d.ts.map +1 -1
  100. package/lib-commonjs/MenuItem/MenuItemTokens.d.ts.map +1 -1
  101. package/lib-commonjs/MenuItem/MenuItemTokens.js +2 -0
  102. package/lib-commonjs/MenuItem/MenuItemTokens.js.map +1 -1
  103. package/lib-commonjs/MenuItem/MenuItemTokens.win32.d.ts.map +1 -1
  104. package/lib-commonjs/MenuItem/MenuItemTokens.win32.js +2 -0
  105. package/lib-commonjs/MenuItem/MenuItemTokens.win32.js.map +1 -1
  106. package/lib-commonjs/MenuItem/useMenuItem.d.ts.map +1 -1
  107. package/lib-commonjs/MenuItem/useMenuItem.js +5 -1
  108. package/lib-commonjs/MenuItem/useMenuItem.js.map +1 -1
  109. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.d.ts.map +1 -1
  110. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.js +6 -1
  111. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.js.map +1 -1
  112. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.styling.d.ts.map +1 -1
  113. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.styling.js +12 -6
  114. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.styling.js.map +1 -1
  115. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.types.d.ts +14 -9
  116. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.types.d.ts.map +1 -1
  117. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.types.js.map +1 -1
  118. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.d.ts.map +1 -1
  119. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.js +20 -0
  120. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.js.map +1 -1
  121. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.win32.d.ts.map +1 -1
  122. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.win32.js +20 -0
  123. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.win32.js.map +1 -1
  124. package/lib-commonjs/MenuItemCheckbox/useMenuItemCheckbox.d.ts.map +1 -1
  125. package/lib-commonjs/MenuItemCheckbox/useMenuItemCheckbox.js +29 -10
  126. package/lib-commonjs/MenuItemCheckbox/useMenuItemCheckbox.js.map +1 -1
  127. package/lib-commonjs/MenuList/MenuList.d.ts.map +1 -1
  128. package/lib-commonjs/MenuList/MenuList.js +8 -2
  129. package/lib-commonjs/MenuList/MenuList.js.map +1 -1
  130. package/lib-commonjs/MenuList/MenuList.types.d.ts +8 -0
  131. package/lib-commonjs/MenuList/MenuList.types.d.ts.map +1 -1
  132. package/lib-commonjs/MenuList/MenuList.types.js.map +1 -1
  133. package/lib-commonjs/MenuList/useMenuContextValue.d.ts +4 -0
  134. package/lib-commonjs/MenuList/useMenuContextValue.d.ts.map +1 -0
  135. package/lib-commonjs/MenuList/useMenuContextValue.js +9 -0
  136. package/lib-commonjs/MenuList/useMenuContextValue.js.map +1 -0
  137. package/lib-commonjs/MenuList/useMenuList.d.ts +3 -0
  138. package/lib-commonjs/MenuList/useMenuList.d.ts.map +1 -0
  139. package/lib-commonjs/MenuList/useMenuList.js +35 -0
  140. package/lib-commonjs/MenuList/useMenuList.js.map +1 -0
  141. package/lib-commonjs/MenuPopover/MenuPopover.d.ts.map +1 -1
  142. package/lib-commonjs/MenuPopover/MenuPopover.js +1 -1
  143. package/lib-commonjs/MenuPopover/MenuPopover.js.map +1 -1
  144. package/lib-commonjs/MenuPopover/MenuPopover.types.d.ts +3 -0
  145. package/lib-commonjs/MenuPopover/MenuPopover.types.d.ts.map +1 -1
  146. package/lib-commonjs/MenuPopover/MenuPopover.types.js.map +1 -1
  147. package/lib-commonjs/MenuPopover/useMenuPopover.d.ts.map +1 -1
  148. package/lib-commonjs/MenuPopover/useMenuPopover.js +8 -1
  149. package/lib-commonjs/MenuPopover/useMenuPopover.js.map +1 -1
  150. package/lib-commonjs/MenuTrigger/useMenuTrigger.d.ts +2 -1
  151. package/lib-commonjs/MenuTrigger/useMenuTrigger.d.ts.map +1 -1
  152. package/lib-commonjs/MenuTrigger/useMenuTrigger.js +9 -3
  153. package/lib-commonjs/MenuTrigger/useMenuTrigger.js.map +1 -1
  154. package/lib-commonjs/context/menuContext.d.ts.map +1 -1
  155. package/lib-commonjs/context/menuContext.js +5 -0
  156. package/lib-commonjs/context/menuContext.js.map +1 -1
  157. package/lib-commonjs/context/menuListContext.d.ts +10 -0
  158. package/lib-commonjs/context/menuListContext.d.ts.map +1 -0
  159. package/lib-commonjs/context/menuListContext.js +16 -0
  160. package/lib-commonjs/context/menuListContext.js.map +1 -0
  161. package/lib-commonjs/index.d.ts +1 -0
  162. package/lib-commonjs/index.d.ts.map +1 -1
  163. package/lib-commonjs/index.js +3 -1
  164. package/lib-commonjs/index.js.map +1 -1
  165. package/package.json +1 -1
  166. package/src/Menu/Menu.types.ts +8 -3
  167. package/src/Menu/useMenu.ts +26 -3
  168. package/src/Menu/useMenuContextValue.ts +1 -1
  169. package/src/MenuItem/MenuItem.styling.ts +10 -0
  170. package/src/MenuItem/MenuItem.tsx +3 -1
  171. package/src/MenuItem/MenuItem.types.ts +14 -8
  172. package/src/MenuItem/MenuItemTokens.ts +2 -0
  173. package/src/MenuItem/MenuItemTokens.win32.ts +2 -0
  174. package/src/MenuItem/useMenuItem.ts +5 -2
  175. package/src/MenuItemCheckbox/MenuItemCheckbox.styling.ts +19 -10
  176. package/src/MenuItemCheckbox/MenuItemCheckbox.tsx +12 -1
  177. package/src/MenuItemCheckbox/MenuItemCheckbox.types.ts +14 -10
  178. package/src/MenuItemCheckbox/MenuItemCheckboxTokens.ts +20 -0
  179. package/src/MenuItemCheckbox/MenuItemCheckboxTokens.win32.ts +20 -0
  180. package/src/MenuItemCheckbox/useMenuItemCheckbox.ts +64 -16
  181. package/src/MenuList/MenuList.tsx +11 -2
  182. package/src/MenuList/MenuList.types.ts +11 -1
  183. package/src/MenuList/useMenuContextValue.ts +6 -0
  184. package/src/MenuList/useMenuList.ts +49 -0
  185. package/src/MenuPopover/MenuPopover.tsx +7 -1
  186. package/src/MenuPopover/MenuPopover.types.ts +3 -0
  187. package/src/MenuPopover/useMenuPopover.ts +8 -1
  188. package/src/MenuTrigger/useMenuTrigger.ts +10 -3
  189. package/src/context/menuContext.ts +5 -0
  190. package/src/context/menuListContext.ts +18 -0
  191. package/src/index.ts +1 -0
  192. package/lib/context/menuTriggerContext.d.ts +0 -1
  193. package/lib/context/menuTriggerContext.d.ts.map +0 -1
  194. package/lib/context/menuTriggerContext.js +0 -2
  195. package/lib/context/menuTriggerContext.js.map +0 -1
  196. package/lib-commonjs/context/menuTriggerContext.d.ts +0 -1
  197. package/lib-commonjs/context/menuTriggerContext.d.ts.map +0 -1
  198. package/lib-commonjs/context/menuTriggerContext.js +0 -2
  199. package/lib-commonjs/context/menuTriggerContext.js.map +0 -1
  200. package/src/context/menuTriggerContext.ts +0 -0
@@ -5,25 +5,44 @@ var tslib_1 = require("tslib");
5
5
  var React = (0, tslib_1.__importStar)(require("react"));
6
6
  var framework_1 = require("@fluentui-react-native/framework");
7
7
  var interactive_hooks_1 = require("@fluentui-react-native/interactive-hooks");
8
- var menuContext_1 = require("../context/menuContext");
8
+ var menuListContext_1 = require("../context/menuListContext");
9
+ var defaultAccessibilityActions = [{ name: 'Toggle' }];
9
10
  var useMenuItemCheckbox = function (props) {
11
+ var _a;
10
12
  // attach the pressable state handlers
11
13
  var defaultComponentRef = React.useRef(null);
12
- 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"]);
13
- var pressable = (0, interactive_hooks_1.useAsPressable)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, rest), { disabled: disabled, onPress: onClick }));
14
- var onKeyProps = (0, interactive_hooks_1.useKeyProps)(onClick, ' ', 'Enter');
15
- var hasSubmenu = (0, menuContext_1.useMenuContext)().isSubmenu;
14
+ var accessibilityActions = props.accessibilityActions, accessibilityState = props.accessibilityState, _b = props.componentRef, componentRef = _b === void 0 ? defaultComponentRef : _b, disabled = props.disabled, name = props.name, onAccessibilityAction = props.onAccessibilityAction, rest = (0, tslib_1.__rest)(props, ["accessibilityActions", "accessibilityState", "componentRef", "disabled", "name", "onAccessibilityAction"]);
15
+ var context = (0, menuListContext_1.useMenuListContext)();
16
+ var checked = (_a = context.checked) === null || _a === void 0 ? void 0 : _a[name];
17
+ var onCheckedChange = context.onCheckedChange;
18
+ var toggleChecked = React.useCallback(function (e) {
19
+ onCheckedChange(e, name, !checked);
20
+ }, [checked, name, onCheckedChange]);
21
+ // Ensure focus is placed on checkbox after click
22
+ var toggleCheckedWithFocus = (0, interactive_hooks_1.useOnPressWithFocus)(componentRef, toggleChecked);
23
+ var pressable = (0, interactive_hooks_1.useAsPressable)((0, tslib_1.__assign)({ onPress: toggleCheckedWithFocus }, rest));
24
+ var buttonRef = (0, interactive_hooks_1.useViewCommandFocus)(componentRef);
25
+ var onKeyProps = (0, interactive_hooks_1.useKeyProps)(toggleChecked, ' ');
26
+ var accessibilityActionsProp = accessibilityActions
27
+ ? (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], defaultAccessibilityActions, true), accessibilityActions, true) : defaultAccessibilityActions;
28
+ var onAccessibilityActionProp = React.useCallback(function (event) {
29
+ if (event.nativeEvent.actionName === 'Toggle') {
30
+ toggleChecked(event);
31
+ }
32
+ onAccessibilityAction && onAccessibilityAction(event);
33
+ }, [toggleChecked, onAccessibilityAction]);
34
+ var state = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, pressable.state), { disabled: !!props.disabled, checked: checked });
16
35
  return {
17
- props: (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, pressable.props), { accessible: true, accessibilityRole: 'button', onAccessibilityTap: props.onAccessibilityTap || props.onClick, accessibilityLabel: props.accessibilityLabel, accessibilityState: getAccessibilityState(disabled, accessibilityState), enableFocusRing: true, focusable: !disabled, hasSubmenu: hasSubmenu, ref: componentRef }), onKeyProps),
18
- state: pressable.state,
36
+ 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),
37
+ state: state,
19
38
  };
20
39
  };
21
40
  exports.useMenuItemCheckbox = useMenuItemCheckbox;
22
41
  var getAccessibilityState = (0, framework_1.memoize)(getAccessibilityStateWorker);
23
- function getAccessibilityStateWorker(disabled, accessibilityState) {
42
+ function getAccessibilityStateWorker(disabled, checked, accessibilityState) {
24
43
  if (accessibilityState) {
25
- return (0, tslib_1.__assign)({ disabled: disabled }, accessibilityState);
44
+ return (0, tslib_1.__assign)({ disabled: disabled, checked: checked }, accessibilityState);
26
45
  }
27
- return { disabled: disabled };
46
+ return { disabled: disabled, checked: checked };
28
47
  }
29
48
  //# sourceMappingURL=useMenuItemCheckbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuItemCheckbox.js","sourceRoot":"","sources":["../../src/MenuItemCheckbox/useMenuItemCheckbox.ts"],"names":[],"mappings":";;;;AAAA,wDAA+B;AAG/B,8DAA2D;AAC3D,8EAAuF;AACvF,sDAAwD;AAEjD,IAAM,mBAAmB,GAAG,UAAC,KAA4B;IAC9D,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,UAAU,GAAG,IAAA,4BAAc,GAAE,CAAC,SAAS,CAAC;IAE9C,OAAO;QACL,KAAK,wEACA,SAAS,CAAC,KAAK,KAClB,UAAU,EAAE,IAAI,EAChB,iBAAiB,EAAE,QAAQ,EAC3B,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,UAAU,YAAA,EACV,GAAG,EAAE,YAAY,KACd,UAAU,CACd;QACD,KAAK,EAAE,SAAS,CAAC,KAAK;KACvB,CAAC;AACJ,CAAC,CAAC;AAxBW,QAAA,mBAAmB,uBAwB9B;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":"useMenuItemCheckbox.js","sourceRoot":"","sources":["../../src/MenuItemCheckbox/useMenuItemCheckbox.ts"],"names":[],"mappings":";;;;AAAA,wDAA+B;AAG/B,8DAA2D;AAC3D,8EAMkD;AAClD,8DAAgE;AAEhE,IAAM,2BAA2B,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AAElD,IAAM,mBAAmB,GAAG,UAAC,KAA4B;;IAC9D,sCAAsC;IACtC,IAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE7C,IAAA,oBAAoB,GAOlB,KAAK,qBAPa,EACpB,kBAAkB,GAMhB,KAAK,mBANW,EAClB,KAKE,KAAK,aAL2B,EAAlC,YAAY,mBAAG,mBAAmB,KAAA,EAClC,QAAQ,GAIN,KAAK,SAJC,EACR,IAAI,GAGF,KAAK,KAHH,EACJ,qBAAqB,GAEnB,KAAK,sBAFc,EAClB,IAAI,uBACL,KAAK,EARH,2GAQL,CADQ,CACC;IACV,IAAM,OAAO,GAAG,IAAA,oCAAkB,GAAE,CAAC;IACrC,IAAM,OAAO,GAAG,MAAA,OAAO,CAAC,OAAO,0CAAG,IAAI,CAAC,CAAC;IACxC,IAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAEhD,IAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CACrC,UAAC,CAAmB;QAClB,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC,EACD,CAAC,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,CACjC,CAAC;IACF,iDAAiD;IACjD,IAAM,sBAAsB,GAAG,IAAA,uCAAmB,EAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IAEhF,IAAM,SAAS,GAAG,IAAA,kCAAc,0BAAG,OAAO,EAAE,sBAAsB,IAAK,IAAI,EAAG,CAAC;IAC/E,IAAM,SAAS,GAAG,IAAA,uCAAmB,EAAC,YAAY,CAAC,CAAC;IAEpD,IAAM,UAAU,GAAG,IAAA,+BAAW,EAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IACnD,IAAM,wBAAwB,GAAG,oBAAoB;QACnD,CAAC,2DAAK,2BAA2B,SAAK,oBAAoB,QAC1D,CAAC,CAAC,2BAA2B,CAAC;IAChC,IAAM,yBAAyB,GAAG,KAAK,CAAC,WAAW,CACjD,UAAC,KAA+B;QAC9B,IAAI,KAAK,CAAC,WAAW,CAAC,UAAU,KAAK,QAAQ,EAAE;YAC7C,aAAa,CAAC,KAAK,CAAC,CAAC;SACtB;QACD,qBAAqB,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC,EACD,CAAC,aAAa,EAAE,qBAAqB,CAAC,CACvC,CAAC;IAEF,IAAM,KAAK,mDACN,SAAS,CAAC,KAAK,KAClB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,EAC1B,OAAO,EAAE,OAAO,GACjB,CAAC;IAEF,OAAO;QACL,KAAK,wEACA,SAAS,CAAC,KAAK,KAClB,UAAU,EAAE,IAAI,EAChB,oBAAoB,EAAE,wBAAwB,EAC9C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAC5C,iBAAiB,EAAE,UAAU,EAC7B,kBAAkB,EAAE,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC,EACtF,eAAe,EAAE,IAAI,EACrB,SAAS,EAAE,CAAC,QAAQ,EACpB,qBAAqB,EAAE,yBAAyB,EAChD,GAAG,EAAE,SAAS,KACX,UAAU,CACd;QACD,KAAK,EAAE,KAAK;KACb,CAAC;AACJ,CAAC,CAAC;AAhEW,QAAA,mBAAmB,uBAgE9B;AAEF,IAAM,qBAAqB,GAAG,IAAA,mBAAO,EAAC,2BAA2B,CAAC,CAAC;AACnE,SAAS,2BAA2B,CAAC,QAAiB,EAAE,OAAgB,EAAE,kBAAuC;IAC/G,IAAI,kBAAkB,EAAE;QACtB,+BAAS,QAAQ,UAAA,EAAE,OAAO,SAAA,IAAK,kBAAkB,EAAG;KACrD;IACD,OAAO,EAAE,QAAQ,UAAA,EAAE,OAAO,SAAA,EAAE,CAAC;AAC/B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuList.d.ts","sourceRoot":"","sources":["../../src/MenuList/MenuList.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAgB,aAAa,EAAgB,MAAM,kBAAkB,CAAC;AAG7E,eAAO,MAAM,QAAQ,gLAanB,CAAC;AAEH,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"MenuList.d.ts","sourceRoot":"","sources":["../../src/MenuList/MenuList.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAgB,aAAa,EAAgB,MAAM,kBAAkB,CAAC;AAM7E,eAAO,MAAM,QAAQ,gLAmBnB,CAAC;AAEH,eAAe,QAAQ,CAAC"}
@@ -6,12 +6,18 @@ var react_native_1 = require("react-native");
6
6
  var framework_1 = require("@fluentui-react-native/framework");
7
7
  var MenuList_types_1 = require("./MenuList.types");
8
8
  var MenuList_styling_1 = require("./MenuList.styling");
9
+ var menuListContext_1 = require("../context/menuListContext");
10
+ var useMenuList_1 = require("./useMenuList");
11
+ var useMenuContextValue_1 = require("./useMenuContextValue");
9
12
  exports.MenuList = (0, framework_1.compose)((0, tslib_1.__assign)((0, tslib_1.__assign)({ displayName: MenuList_types_1.menuListName }, MenuList_styling_1.stylingSettings), { slots: {
10
13
  root: react_native_1.View,
11
14
  }, useRender: function (userProps, useSlots) {
12
- var Slots = useSlots(userProps);
15
+ var menuList = (0, useMenuList_1.useMenuList)(userProps);
16
+ var contextValue = (0, useMenuContextValue_1.useMenuListContextValue)(menuList);
17
+ var Slots = useSlots(menuList);
13
18
  return function (_final, children) {
14
- return (0, framework_1.withSlots)(Slots.root, null, children);
19
+ return ((0, framework_1.withSlots)(menuListContext_1.MenuListProvider, { value: contextValue },
20
+ (0, framework_1.withSlots)(Slots.root, null, children)));
15
21
  };
16
22
  } }));
17
23
  exports.default = exports.MenuList;
@@ -1 +1 @@
1
- {"version":3,"file":"MenuList.js","sourceRoot":"","sources":["../../src/MenuList/MenuList.tsx"],"names":[],"mappings":";;;;AAEA,6CAAoC;AACpC,8DAAgF;AAChF,mDAA6E;AAC7E,uDAAqD;AAExC,QAAA,QAAQ,GAAG,IAAA,mBAAO,gDAC7B,WAAW,EAAE,6BAAY,IACtB,kCAAe,KAClB,KAAK,EAAE;QACL,IAAI,EAAE,mBAAI;KACX,EACD,SAAS,EAAE,UAAC,SAAwB,EAAE,QAAgC;QACpE,IAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QAElC,OAAO,UAAC,MAAqB,EAAE,QAAyB;YACtD,OAAO,2BAAC,KAAK,CAAC,IAAI,QAAE,QAAQ,CAAc,CAAC;QAC7C,CAAC,CAAC;IACJ,CAAC,IACD,CAAC;AAEH,kBAAe,gBAAQ,CAAC"}
1
+ {"version":3,"file":"MenuList.js","sourceRoot":"","sources":["../../src/MenuList/MenuList.tsx"],"names":[],"mappings":";;;;AAEA,6CAAoC;AACpC,8DAAgF;AAChF,mDAA6E;AAC7E,uDAAqD;AACrD,8DAA8D;AAC9D,6CAA4C;AAC5C,6DAAgE;AAEnD,QAAA,QAAQ,GAAG,IAAA,mBAAO,gDAC7B,WAAW,EAAE,6BAAY,IACtB,kCAAe,KAClB,KAAK,EAAE;QACL,IAAI,EAAE,mBAAI;KACX,EACD,SAAS,EAAE,UAAC,SAAwB,EAAE,QAAgC;QACpE,IAAM,QAAQ,GAAG,IAAA,yBAAW,EAAC,SAAS,CAAC,CAAC;QACxC,IAAM,YAAY,GAAG,IAAA,6CAAuB,EAAC,QAAQ,CAAC,CAAC;QACvD,IAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEjC,OAAO,UAAC,MAAqB,EAAE,QAAyB;YACtD,OAAO,CACL,2BAAC,kCAAgB,IAAC,KAAK,EAAE,YAAY;gBACnC,2BAAC,KAAK,CAAC,IAAI,QAAE,QAAQ,CAAc,CAClB,CACpB,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC,IACD,CAAC;AAEH,kBAAe,gBAAQ,CAAC"}
@@ -1,10 +1,18 @@
1
1
  /// <reference types="react" />
2
2
  import type { IViewProps } from '@fluentui-react-native/adapters';
3
+ import { InteractionEvent } from '@fluentui-react-native/interactive-hooks';
3
4
  import { IBackgroundColorTokens, LayoutTokens } from '@fluentui-react-native/tokens';
4
5
  export declare const menuListName = "MenuList";
5
6
  export interface MenuListTokens extends LayoutTokens, IBackgroundColorTokens {
6
7
  }
7
8
  export interface MenuListProps extends Omit<IViewProps, 'onPress'> {
9
+ checked?: Record<string, boolean>;
10
+ defaultChecked?: Record<string, boolean>;
11
+ hasCheckmarks?: boolean;
12
+ onCheckedChange?: (e: InteractionEvent, name: string, isChecked: boolean) => void;
13
+ }
14
+ export interface MenuListState extends MenuListProps {
15
+ isCheckedControlled: boolean;
8
16
  }
9
17
  export interface MenuListSlotProps {
10
18
  root: React.PropsWithRef<IViewProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"MenuList.types.d.ts","sourceRoot":"","sources":["../../src/MenuList/MenuList.types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAErF,eAAO,MAAM,YAAY,aAAa,CAAC;AAEvC,MAAM,WAAW,cAAe,SAAQ,YAAY,EAAE,sBAAsB;CAAG;AAE/E,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;CAAG;AAErE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;CACtC;AACD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,iBAAiB,CAAC;CAC9B"}
1
+ {"version":3,"file":"MenuList.types.d.ts","sourceRoot":"","sources":["../../src/MenuList/MenuList.types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAErF,eAAO,MAAM,YAAY,aAAa,CAAC;AAEvC,MAAM,WAAW,cAAe,SAAQ,YAAY,EAAE,sBAAsB;CAAG;AAE/E,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CACnF;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;CACtC;AACD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,iBAAiB,CAAC;CAC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuList.types.js","sourceRoot":"","sources":["../../src/MenuList/MenuList.types.ts"],"names":[],"mappings":";;;AAGa,QAAA,YAAY,GAAG,UAAU,CAAC"}
1
+ {"version":3,"file":"MenuList.types.js","sourceRoot":"","sources":["../../src/MenuList/MenuList.types.ts"],"names":[],"mappings":";;;AAIa,QAAA,YAAY,GAAG,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { MenuListContextValue } from '../context/menuListContext';
2
+ import { MenuListState } from './MenuList.types';
3
+ export declare const useMenuListContextValue: (state: MenuListState) => MenuListContextValue;
4
+ //# sourceMappingURL=useMenuContextValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMenuContextValue.d.ts","sourceRoot":"","sources":["../../src/MenuList/useMenuContextValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,eAAO,MAAM,uBAAuB,UAAW,aAAa,KAAG,oBAE9D,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useMenuListContextValue = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var useMenuListContextValue = function (state) {
6
+ return (0, tslib_1.__assign)({}, state);
7
+ };
8
+ exports.useMenuListContextValue = useMenuListContextValue;
9
+ //# sourceMappingURL=useMenuContextValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMenuContextValue.js","sourceRoot":"","sources":["../../src/MenuList/useMenuContextValue.ts"],"names":[],"mappings":";;;;AAGO,IAAM,uBAAuB,GAAG,UAAC,KAAoB;IAC1D,iCAAY,KAAK,EAAG;AACtB,CAAC,CAAC;AAFW,QAAA,uBAAuB,2BAElC"}
@@ -0,0 +1,3 @@
1
+ import { MenuListProps, MenuListState } from './MenuList.types';
2
+ export declare const useMenuList: (_props: MenuListProps) => MenuListState;
3
+ //# sourceMappingURL=useMenuList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMenuList.d.ts","sourceRoot":"","sources":["../../src/MenuList/useMenuList.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEhE,eAAO,MAAM,WAAW,WAAY,aAAa,KAAG,aAcnD,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useMenuList = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = (0, tslib_1.__importDefault)(require("react"));
6
+ var menuContext_1 = require("../context/menuContext");
7
+ var useMenuList = function (_props) {
8
+ var context = (0, menuContext_1.useMenuContext)();
9
+ // MenuList v2 needs to be able to be standalone, but this is not in scope for v1
10
+ // Assuming that checked information will come from parent Menu
11
+ var isCheckedControlled = typeof context.checked !== 'undefined';
12
+ var _a = useMenuCheckedState(isCheckedControlled, context), checked = _a[0], onCheckedChange = _a[1];
13
+ return (0, tslib_1.__assign)((0, tslib_1.__assign)({}, context), { isCheckedControlled: isCheckedControlled, checked: checked, onCheckedChange: onCheckedChange });
14
+ };
15
+ exports.useMenuList = useMenuList;
16
+ var useMenuCheckedState = function (isControlled, props) {
17
+ var _a;
18
+ var defaultChecked = props.defaultChecked, onCheckedChange = props.onCheckedChange, checked = props.checked;
19
+ var initialState = (_a = defaultChecked !== null && defaultChecked !== void 0 ? defaultChecked : checked) !== null && _a !== void 0 ? _a : {};
20
+ var _b = react_1.default.useState(initialState), checkedInternal = _b[0], setCheckedInternal = _b[1];
21
+ var state = isControlled ? checked : checkedInternal;
22
+ var setChecked = react_1.default.useCallback(function (e, name, isChecked) {
23
+ if (!isControlled) {
24
+ var curChecked = state;
25
+ curChecked[name] = isChecked;
26
+ var updatedChecked = (0, tslib_1.__assign)({}, curChecked);
27
+ setCheckedInternal(updatedChecked);
28
+ }
29
+ if (onCheckedChange) {
30
+ onCheckedChange(e, name, isChecked);
31
+ }
32
+ }, [isControlled, state, onCheckedChange, setCheckedInternal]);
33
+ return [state, setChecked];
34
+ };
35
+ //# sourceMappingURL=useMenuList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMenuList.js","sourceRoot":"","sources":["../../src/MenuList/useMenuList.ts"],"names":[],"mappings":";;;;AACA,6DAA0B;AAC1B,sDAAwD;AAGjD,IAAM,WAAW,GAAG,UAAC,MAAqB;IAC/C,IAAM,OAAO,GAAG,IAAA,4BAAc,GAAE,CAAC;IAEjC,iFAAiF;IACjF,+DAA+D;IAC/D,IAAM,mBAAmB,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,WAAW,CAAC;IAC7D,IAAA,KAA6B,mBAAmB,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAA7E,OAAO,QAAA,EAAE,eAAe,QAAqD,CAAC;IAErF,uDACK,OAAO,KACV,mBAAmB,qBAAA,EACnB,OAAO,SAAA,EACP,eAAe,iBAAA,IACf;AACJ,CAAC,CAAC;AAdW,QAAA,WAAW,eActB;AAEF,IAAM,mBAAmB,GAAG,UAC1B,YAAqB,EACrB,KAAoB;;IAEZ,IAAA,cAAc,GAA+B,KAAK,eAApC,EAAE,eAAe,GAAc,KAAK,gBAAnB,EAAE,OAAO,GAAK,KAAK,QAAV,CAAW;IAC3D,IAAM,YAAY,GAAG,MAAA,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,OAAO,mCAAI,EAAE,CAAC;IAC/C,IAAA,KAAwC,eAAK,CAAC,QAAQ,CAA0B,YAAY,CAAC,EAA5F,eAAe,QAAA,EAAE,kBAAkB,QAAyD,CAAC;IAEpG,IAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;IAEvD,IAAM,UAAU,GAAG,eAAK,CAAC,WAAW,CAClC,UAAC,CAAmB,EAAE,IAAY,EAAE,SAAkB;QACpD,IAAI,CAAC,YAAY,EAAE;YACjB,IAAM,UAAU,GAAG,KAAK,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;YAC7B,IAAM,cAAc,6BAAQ,UAAU,CAAE,CAAC;YACzC,kBAAkB,CAAC,cAAc,CAAC,CAAC;SACpC;QAED,IAAI,eAAe,EAAE;YACnB,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;SACrC;IACH,CAAC,EACD,CAAC,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,kBAAkB,CAAC,CAC3D,CAAC;IAEF,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC7B,CAAC,CAAC"}
@@ -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,iFAWtB,CAAC;AAGH,eAAe,WAAW,CAAC"}
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,iFAiBtB,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, { target: state.triggerRef, borderWidth: 1, borderColor: theme.colors.neutralStrokeAccessible }, 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 }, 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,IAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,uBAAuB,IACjG,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,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,IAEvC,QAAQ,CACD,CACX,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,mBAAW,CAAC,WAAW,GAAG,mCAAe,CAAC;AAE1C,kBAAe,mBAAW,CAAC"}
@@ -1,9 +1,12 @@
1
1
  /// <reference types="react" />
2
2
  import type { IViewProps } from '@fluentui-react-native/adapters';
3
+ import { DismissBehaviors } from '@fluentui-react-native/callout';
3
4
  export declare const menuPopoverName = "MenuPopover";
4
5
  export interface MenuPopoverProps extends Omit<IViewProps, 'onPress'> {
5
6
  }
6
7
  export interface MenuPopoverState {
8
+ dismissBehaviors: DismissBehaviors[];
9
+ onDismiss: () => void;
7
10
  triggerRef: React.RefObject<React.Component>;
8
11
  }
9
12
  //# sourceMappingURL=MenuPopover.types.d.ts.map
@@ -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;AAElE,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;CAAG;AAExE,MAAM,WAAW,gBAAgB;IAC/B,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,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;CAAG;AAExE,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;CAC9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuPopover.types.js","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.types.ts"],"names":[],"mappings":";;;AAEa,QAAA,eAAe,GAAG,aAAa,CAAC"}
1
+ {"version":3,"file":"MenuPopover.types.js","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.types.ts"],"names":[],"mappings":";;;AAGa,QAAA,eAAe,GAAG,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuPopover.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,eAAO,MAAM,cAAc,WAAY,gBAAgB,KAAG,gBAMzD,CAAC"}
1
+ {"version":3,"file":"useMenuPopover.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,eAAO,MAAM,cAAc,WAAY,gBAAgB,KAAG,gBAWzD,CAAC"}
@@ -1,11 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useMenuPopover = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = (0, tslib_1.__importDefault)(require("react"));
4
6
  var menuContext_1 = require("../context/menuContext");
5
7
  var useMenuPopover = function (_props) {
6
8
  var context = (0, menuContext_1.useMenuContext)();
9
+ var setOpen = context.setOpen;
7
10
  var triggerRef = context.triggerRef;
8
- return { triggerRef: triggerRef };
11
+ var onDismiss = react_1.default.useCallback(function () { return setOpen(undefined, false /* isOpen */); }, [setOpen]);
12
+ var dismissBehaviors = context.isControlled
13
+ ? ['preventDismissOnKeyDown', 'preventDismissOnClickOutside']
14
+ : undefined;
15
+ return { triggerRef: triggerRef, onDismiss: onDismiss, dismissBehaviors: dismissBehaviors };
9
16
  };
10
17
  exports.useMenuPopover = useMenuPopover;
11
18
  //# sourceMappingURL=useMenuPopover.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":";;;AAAA,sDAAwD;AAGjD,IAAM,cAAc,GAAG,UAAC,MAAwB;IACrD,IAAM,OAAO,GAAG,IAAA,4BAAc,GAAE,CAAC;IAEjC,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAEtC,OAAO,EAAE,UAAU,YAAA,EAAE,CAAC;AACxB,CAAC,CAAC;AANW,QAAA,cAAc,kBAMzB"}
1
+ {"version":3,"file":"useMenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":";;;;AAAA,6DAA0B;AAE1B,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;IAEd,OAAO,EAAE,UAAU,YAAA,EAAE,SAAS,WAAA,EAAE,gBAAgB,kBAAA,EAAE,CAAC;AACrD,CAAC,CAAC;AAXW,QAAA,cAAc,kBAWzB"}
@@ -2,7 +2,8 @@
2
2
  import { InteractionEvent } from '@fluentui-react-native/interactive-hooks';
3
3
  import { MenuTriggerProps } from './MenuTrigger.types';
4
4
  export declare const useMenuTrigger: (_props: MenuTriggerProps) => {
5
- onClick: (_e: InteractionEvent) => void;
5
+ onClick: (e: InteractionEvent) => void;
6
+ onHoverIn: (e: InteractionEvent) => void;
6
7
  componentRef: import("react").RefObject<import("react").Component<{}, {}, any>>;
7
8
  };
8
9
  //# sourceMappingURL=useMenuTrigger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,cAAc,WAAY,gBAAgB;kBAOhC,gBAAgB;;CAKtC,CAAC"}
1
+ {"version":3,"file":"useMenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,cAAc,WAAY,gBAAgB;iBAcjC,gBAAgB;mBANd,gBAAgB;;CAWvC,CAAC"}
@@ -6,11 +6,17 @@ var useMenuTrigger = function (_props) {
6
6
  var context = (0, menuContext_1.useMenuContext)();
7
7
  var setOpen = context.setOpen;
8
8
  var open = context.open;
9
+ var openOnHover = context.openOnHover;
9
10
  var triggerRef = context.triggerRef;
10
- var onClick = function (_e) {
11
- setOpen(!open);
11
+ var onHoverIn = function (e) {
12
+ if (openOnHover) {
13
+ setOpen(e, true /* isOpen */);
14
+ }
12
15
  };
13
- return { onClick: onClick, componentRef: triggerRef };
16
+ var onClick = function (e) {
17
+ setOpen(e, !open);
18
+ };
19
+ return { onClick: onClick, onHoverIn: onHoverIn, componentRef: triggerRef };
14
20
  };
15
21
  exports.useMenuTrigger = useMenuTrigger;
16
22
  //# sourceMappingURL=useMenuTrigger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":";;;AAAA,sDAAwD;AAIjD,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,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAEtC,IAAM,OAAO,GAAG,UAAC,EAAoB;QACnC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,EAAE,OAAO,SAAA,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AAC/C,CAAC,CAAC;AAZW,QAAA,cAAc,kBAYzB"}
1
+ {"version":3,"file":"useMenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":";;;AAAA,sDAAwD;AAIjD,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,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,OAAO,GAAG,UAAC,CAAmB;QAClC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO,EAAE,OAAO,SAAA,EAAE,SAAS,WAAA,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AAC1D,CAAC,CAAC;AAnBW,QAAA,cAAc,kBAmBzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"menuContext.d.ts","sourceRoot":"","sources":["../../src/context/menuContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;GAEG;AACH,oBAAY,gBAAgB,GAAG,SAAS,CAAC;AAEzC,eAAO,MAAM,WAAW,0BAKtB,CAAC;AAEH,eAAO,MAAM,YAAY,2BAAuB,CAAC;AACjD,eAAO,MAAM,cAAc,iBAAsC,CAAC"}
1
+ {"version":3,"file":"menuContext.d.ts","sourceRoot":"","sources":["../../src/context/menuContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;GAEG;AACH,oBAAY,gBAAgB,GAAG,SAAS,CAAC;AAEzC,eAAO,MAAM,WAAW,0BAUtB,CAAC;AAEH,eAAO,MAAM,YAAY,2BAAuB,CAAC;AACjD,eAAO,MAAM,cAAc,iBAAsC,CAAC"}
@@ -4,8 +4,13 @@ exports.useMenuContext = exports.MenuProvider = exports.MenuContext = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var React = (0, tslib_1.__importStar)(require("react"));
6
6
  exports.MenuContext = React.createContext({
7
+ isControlled: false,
8
+ checked: {},
9
+ defaultChecked: {},
10
+ hasCheckmarks: false,
7
11
  isSubmenu: false,
8
12
  open: false,
13
+ onCheckedChange: function () { return false; },
9
14
  setOpen: function () { return false; },
10
15
  triggerRef: null,
11
16
  });
@@ -1 +1 @@
1
- {"version":3,"file":"menuContext.js","sourceRoot":"","sources":["../../src/context/menuContext.ts"],"names":[],"mappings":";;;;AAAA,wDAA+B;AAQlB,QAAA,WAAW,GAAG,KAAK,CAAC,aAAa,CAAmB;IAC/D,SAAS,EAAE,KAAK;IAChB,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;IACpB,UAAU,EAAE,IAAI;CACjB,CAAC,CAAC;AAEU,QAAA,YAAY,GAAG,mBAAW,CAAC,QAAQ,CAAC;AAC1C,IAAM,cAAc,GAAG,cAAM,OAAA,KAAK,CAAC,UAAU,CAAC,mBAAW,CAAC,EAA7B,CAA6B,CAAC;AAArD,QAAA,cAAc,kBAAuC"}
1
+ {"version":3,"file":"menuContext.js","sourceRoot":"","sources":["../../src/context/menuContext.ts"],"names":[],"mappings":";;;;AAAA,wDAA+B;AAQlB,QAAA,WAAW,GAAG,KAAK,CAAC,aAAa,CAAmB;IAC/D,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,EAAE;IACX,cAAc,EAAE,EAAE;IAClB,aAAa,EAAE,KAAK;IACpB,SAAS,EAAE,KAAK;IAChB,IAAI,EAAE,KAAK;IACX,eAAe,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;IAC5B,OAAO,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;IACpB,UAAU,EAAE,IAAI;CACjB,CAAC,CAAC;AAEU,QAAA,YAAY,GAAG,mBAAW,CAAC,QAAQ,CAAC;AAC1C,IAAM,cAAc,GAAG,cAAM,OAAA,KAAK,CAAC,UAAU,CAAC,mBAAW,CAAC,EAA7B,CAA6B,CAAC;AAArD,QAAA,cAAc,kBAAuC"}
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import type { MenuListState } from '../MenuList/MenuList.types';
3
+ /**
4
+ * Context shared between Menu and its child components
5
+ */
6
+ export declare type MenuListContextValue = MenuListState;
7
+ export declare const MenuListContext: React.Context<MenuListState>;
8
+ export declare const MenuListProvider: React.Provider<MenuListState>;
9
+ export declare const useMenuListContext: () => MenuListState;
10
+ //# sourceMappingURL=menuListContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menuListContext.d.ts","sourceRoot":"","sources":["../../src/context/menuListContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE;;GAEG;AACH,oBAAY,oBAAoB,GAAG,aAAa,CAAC;AAEjD,eAAO,MAAM,eAAe,8BAM1B,CAAC;AAEH,eAAO,MAAM,gBAAgB,+BAA2B,CAAC;AACzD,eAAO,MAAM,kBAAkB,qBAA0C,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useMenuListContext = exports.MenuListProvider = exports.MenuListContext = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var React = (0, tslib_1.__importStar)(require("react"));
6
+ exports.MenuListContext = React.createContext({
7
+ isCheckedControlled: false,
8
+ checked: {},
9
+ defaultChecked: {},
10
+ hasCheckmarks: false,
11
+ onCheckedChange: function () { return false; },
12
+ });
13
+ exports.MenuListProvider = exports.MenuListContext.Provider;
14
+ var useMenuListContext = function () { return React.useContext(exports.MenuListContext); };
15
+ exports.useMenuListContext = useMenuListContext;
16
+ //# sourceMappingURL=menuListContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menuListContext.js","sourceRoot":"","sources":["../../src/context/menuListContext.ts"],"names":[],"mappings":";;;;AAAA,wDAA+B;AAQlB,QAAA,eAAe,GAAG,KAAK,CAAC,aAAa,CAAuB;IACvE,mBAAmB,EAAE,KAAK;IAC1B,OAAO,EAAE,EAAE;IACX,cAAc,EAAE,EAAE;IAClB,aAAa,EAAE,KAAK;IACpB,eAAe,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;CAC7B,CAAC,CAAC;AAEU,QAAA,gBAAgB,GAAG,uBAAe,CAAC,QAAQ,CAAC;AAClD,IAAM,kBAAkB,GAAG,cAAM,OAAA,KAAK,CAAC,UAAU,CAAC,uBAAe,CAAC,EAAjC,CAAiC,CAAC;AAA7D,QAAA,kBAAkB,sBAA2C"}
@@ -2,5 +2,6 @@ export { Menu } from './Menu/Menu';
2
2
  export { MenuTrigger } from './MenuTrigger/MenuTrigger';
3
3
  export { MenuPopover } from './MenuPopover/MenuPopover';
4
4
  export { MenuItem } from './MenuItem/MenuItem';
5
+ export { MenuItemCheckbox } from './MenuItemCheckbox/MenuItemCheckbox';
5
6
  export { MenuList } from './MenuList/MenuList';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MenuList = exports.MenuItem = exports.MenuPopover = exports.MenuTrigger = exports.Menu = void 0;
3
+ exports.MenuList = exports.MenuItemCheckbox = exports.MenuItem = exports.MenuPopover = exports.MenuTrigger = exports.Menu = void 0;
4
4
  var Menu_1 = require("./Menu/Menu");
5
5
  Object.defineProperty(exports, "Menu", { enumerable: true, get: function () { return Menu_1.Menu; } });
6
6
  var MenuTrigger_1 = require("./MenuTrigger/MenuTrigger");
@@ -9,6 +9,8 @@ var MenuPopover_1 = require("./MenuPopover/MenuPopover");
9
9
  Object.defineProperty(exports, "MenuPopover", { enumerable: true, get: function () { return MenuPopover_1.MenuPopover; } });
10
10
  var MenuItem_1 = require("./MenuItem/MenuItem");
11
11
  Object.defineProperty(exports, "MenuItem", { enumerable: true, get: function () { return MenuItem_1.MenuItem; } });
12
+ var MenuItemCheckbox_1 = require("./MenuItemCheckbox/MenuItemCheckbox");
13
+ Object.defineProperty(exports, "MenuItemCheckbox", { enumerable: true, get: function () { return MenuItemCheckbox_1.MenuItemCheckbox; } });
12
14
  var MenuList_1 = require("./MenuList/MenuList");
13
15
  Object.defineProperty(exports, "MenuList", { enumerable: true, get: function () { return MenuList_1.MenuList; } });
14
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,oCAAmC;AAA1B,4FAAA,IAAI,OAAA;AACb,yDAAwD;AAA/C,0GAAA,WAAW,OAAA;AACpB,yDAAwD;AAA/C,0GAAA,WAAW,OAAA;AACpB,gDAA+C;AAAtC,oGAAA,QAAQ,OAAA;AACjB,gDAA+C;AAAtC,oGAAA,QAAQ,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,oCAAmC;AAA1B,4FAAA,IAAI,OAAA;AACb,yDAAwD;AAA/C,0GAAA,WAAW,OAAA;AACpB,yDAAwD;AAA/C,0GAAA,WAAW,OAAA;AACpB,gDAA+C;AAAtC,oGAAA,QAAQ,OAAA;AACjB,wEAAuE;AAA9D,oHAAA,gBAAgB,OAAA;AACzB,gDAA+C;AAAtC,oGAAA,QAAQ,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui-react-native/menu",
3
- "version": "0.5.2",
3
+ "version": "0.8.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",
@@ -1,14 +1,19 @@
1
- import type { IViewProps } from '@fluentui-react-native/adapters';
1
+ import { InteractionEvent } from '@fluentui-react-native/interactive-hooks';
2
2
  import React from 'react';
3
+ import type { MenuListProps } from '../MenuList/MenuList.types';
3
4
 
4
5
  export const menuName = 'Menu';
5
6
 
6
- export interface MenuProps extends Omit<IViewProps, 'onPress'> {
7
+ export interface MenuProps extends MenuListProps {
8
+ defaultOpen?: boolean;
7
9
  open?: boolean;
10
+ onOpenChange?: (e: InteractionEvent, isOpen: boolean) => void;
11
+ openOnHover?: boolean;
8
12
  }
9
13
 
10
14
  export interface MenuState extends MenuProps {
15
+ isControlled: boolean;
11
16
  isSubmenu: boolean;
12
- setOpen: (isOpen: boolean) => void;
17
+ setOpen: (e: InteractionEvent, isOpen: boolean) => void;
13
18
  triggerRef: React.RefObject<React.Component>;
14
19
  }
@@ -1,21 +1,44 @@
1
+ import { InteractionEvent } from '@fluentui-react-native/interactive-hooks';
1
2
  import React from 'react';
2
3
  import { useMenuContext } from '../context/menuContext';
3
4
  import { MenuProps, MenuState } from './Menu.types';
4
5
 
5
6
  export const useMenu = (props: MenuProps): MenuState => {
6
- const [open, setOpen] = useMenuOpenState(props);
7
7
  const triggerRef = React.useRef(null);
8
8
  const context = useMenuContext();
9
9
  const isSubmenu = context.triggerRef !== null;
10
+ const isControlled = typeof props.open !== 'undefined';
11
+ const [open, setOpen] = useMenuOpenState(isControlled, props);
10
12
 
11
13
  return {
14
+ ...props,
12
15
  open,
13
16
  setOpen,
14
17
  triggerRef,
15
18
  isSubmenu,
19
+ isControlled,
16
20
  };
17
21
  };
18
22
 
19
- const useMenuOpenState = (props: MenuProps) => {
20
- return React.useState<boolean>(props.open);
23
+ const useMenuOpenState = (isControlled: boolean, props: MenuProps): [boolean, (e: InteractionEvent, isOpen: boolean) => void] => {
24
+ const { defaultOpen, onOpenChange, open } = props;
25
+ const initialState = typeof defaultOpen !== 'undefined' ? defaultOpen : !!open;
26
+ const [openInternal, setOpenInternal] = React.useState<boolean>(initialState);
27
+
28
+ const state = isControlled ? open : openInternal;
29
+
30
+ const setOpen = React.useCallback(
31
+ (e: InteractionEvent, isOpen: boolean) => {
32
+ const openPrev = state;
33
+ if (!isControlled) {
34
+ setOpenInternal(isOpen);
35
+ }
36
+ if (onOpenChange && openPrev !== isOpen) {
37
+ onOpenChange(e, isOpen);
38
+ }
39
+ },
40
+ [isControlled, state, onOpenChange, setOpenInternal],
41
+ );
42
+
43
+ return [state, setOpen];
21
44
  };
@@ -2,5 +2,5 @@ import { MenuContextValue } from '../context/menuContext';
2
2
  import { MenuState } from './Menu.types';
3
3
 
4
4
  export const useMenuContextValue = (state: MenuState): MenuContextValue => {
5
- return { open: state.open, setOpen: state.setOpen, triggerRef: state.triggerRef, isSubmenu: state.isSubmenu };
5
+ return { ...state };
6
6
  };
@@ -21,6 +21,16 @@ export const stylingSettings: UseStylingOptions<MenuItemProps, MenuItemSlotProps
21
21
  }),
22
22
  ['backgroundColor', ...layoutStyles.keys],
23
23
  ),
24
+ checkmark: buildProps(
25
+ (tokens: MenuItemTokens) => ({
26
+ style: {
27
+ height: tokens.checkmarkSize,
28
+ width: tokens.checkmarkSize,
29
+ marginEnd: tokens.gap,
30
+ },
31
+ }),
32
+ ['checkmarkSize', 'gap'],
33
+ ),
24
34
  content: buildProps(
25
35
  (tokens: MenuItemTokens, theme: Theme) => {
26
36
  return {
@@ -12,6 +12,7 @@ export const MenuItem = compose<MenuItemType>({
12
12
  ...stylingSettings,
13
13
  slots: {
14
14
  root: View,
15
+ checkmark: View,
15
16
  content: Text,
16
17
  submenuIndicator: SvgXml,
17
18
  },
@@ -28,8 +29,9 @@ export const MenuItem = compose<MenuItemType>({
28
29
 
29
30
  return (
30
31
  <Slots.root {...mergedProps}>
32
+ {menuItem.hasCheckmarks && <Slots.checkmark />}
31
33
  {mergedProps.content && <Slots.content>{mergedProps.content}</Slots.content>}
32
- {mergedProps.hasSubmenu && <Slots.submenuIndicator xml={chevronXml} />}
34
+ {menuItem.hasSubmenu && <Slots.submenuIndicator xml={chevronXml} />}
33
35
  </Slots.root>
34
36
  );
35
37
  };