@fluentui-react-native/menu 0.4.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/CHANGELOG.json +76 -1
  2. package/CHANGELOG.md +31 -2
  3. package/lib/MenuItem/MenuItem.d.ts.map +1 -1
  4. package/lib/MenuItem/MenuItem.js +6 -19
  5. package/lib/MenuItem/MenuItem.js.map +1 -1
  6. package/lib/MenuItem/MenuItem.styling.d.ts +5 -0
  7. package/lib/MenuItem/MenuItem.styling.d.ts.map +1 -0
  8. package/lib/MenuItem/MenuItem.styling.js +26 -0
  9. package/lib/MenuItem/MenuItem.styling.js.map +1 -0
  10. package/lib/MenuItem/MenuItem.types.d.ts +6 -2
  11. package/lib/MenuItem/MenuItem.types.d.ts.map +1 -1
  12. package/lib/MenuItem/MenuItemTokens.d.ts +5 -0
  13. package/lib/MenuItem/MenuItemTokens.d.ts.map +1 -0
  14. package/lib/MenuItem/MenuItemTokens.js +26 -0
  15. package/lib/MenuItem/MenuItemTokens.js.map +1 -0
  16. package/lib/MenuItem/MenuItemTokens.win32.d.ts +5 -0
  17. package/lib/MenuItem/MenuItemTokens.win32.d.ts.map +1 -0
  18. package/lib/MenuItem/MenuItemTokens.win32.js +27 -0
  19. package/lib/MenuItem/MenuItemTokens.win32.js.map +1 -0
  20. package/lib/MenuItemCheckbox/MenuItemCheckbox.d.ts +3 -0
  21. package/lib/MenuItemCheckbox/MenuItemCheckbox.d.ts.map +1 -0
  22. package/lib/MenuItemCheckbox/MenuItemCheckbox.js +20 -0
  23. package/lib/MenuItemCheckbox/MenuItemCheckbox.js.map +1 -0
  24. package/lib/MenuItemCheckbox/MenuItemCheckbox.styling.d.ts +5 -0
  25. package/lib/MenuItemCheckbox/MenuItemCheckbox.styling.d.ts.map +1 -0
  26. package/lib/MenuItemCheckbox/MenuItemCheckbox.styling.js +21 -0
  27. package/lib/MenuItemCheckbox/MenuItemCheckbox.styling.js.map +1 -0
  28. package/lib/MenuItemCheckbox/MenuItemCheckbox.types.d.ts +43 -0
  29. package/lib/MenuItemCheckbox/MenuItemCheckbox.types.d.ts.map +1 -0
  30. package/lib/MenuItemCheckbox/MenuItemCheckbox.types.js +2 -0
  31. package/lib/MenuItemCheckbox/MenuItemCheckbox.types.js.map +1 -0
  32. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.d.ts +5 -0
  33. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.d.ts.map +1 -0
  34. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.js +26 -0
  35. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.js.map +1 -0
  36. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.win32.d.ts +5 -0
  37. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.win32.d.ts.map +1 -0
  38. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.win32.js +27 -0
  39. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.win32.js.map +1 -0
  40. package/lib/MenuItemCheckbox/useMenuItemCheckbox.d.ts +3 -0
  41. package/lib/MenuItemCheckbox/useMenuItemCheckbox.d.ts.map +1 -0
  42. package/lib/MenuItemCheckbox/useMenuItemCheckbox.js +25 -0
  43. package/lib/MenuItemCheckbox/useMenuItemCheckbox.js.map +1 -0
  44. package/lib/MenuList/MenuList.d.ts +4 -0
  45. package/lib/MenuList/MenuList.d.ts.map +1 -0
  46. package/lib/MenuList/MenuList.js +15 -0
  47. package/lib/MenuList/MenuList.js.map +1 -0
  48. package/lib/MenuList/MenuList.styling.d.ts +4 -0
  49. package/lib/MenuList/MenuList.styling.d.ts.map +1 -0
  50. package/lib/MenuList/MenuList.styling.js +14 -0
  51. package/lib/MenuList/MenuList.styling.js.map +1 -0
  52. package/lib/MenuList/MenuList.types.d.ts +17 -0
  53. package/lib/MenuList/MenuList.types.d.ts.map +1 -0
  54. package/lib/MenuList/MenuList.types.js +2 -0
  55. package/lib/MenuList/MenuList.types.js.map +1 -0
  56. package/lib/MenuList/MenuListTokens.d.ts +5 -0
  57. package/lib/MenuList/MenuListTokens.d.ts.map +1 -0
  58. package/lib/MenuList/MenuListTokens.js +8 -0
  59. package/lib/MenuList/MenuListTokens.js.map +1 -0
  60. package/lib/MenuList/MenuListTokens.win32.d.ts +5 -0
  61. package/lib/MenuList/MenuListTokens.win32.d.ts.map +1 -0
  62. package/lib/MenuList/MenuListTokens.win32.js +8 -0
  63. package/lib/MenuList/MenuListTokens.win32.js.map +1 -0
  64. package/lib/MenuPopover/MenuPopover.d.ts.map +1 -1
  65. package/lib/MenuPopover/MenuPopover.js +3 -2
  66. package/lib/MenuPopover/MenuPopover.js.map +1 -1
  67. package/lib/index.d.ts +1 -0
  68. package/lib/index.d.ts.map +1 -1
  69. package/lib/index.js +1 -0
  70. package/lib/index.js.map +1 -1
  71. package/lib-commonjs/MenuItem/MenuItem.d.ts.map +1 -1
  72. package/lib-commonjs/MenuItem/MenuItem.js +6 -19
  73. package/lib-commonjs/MenuItem/MenuItem.js.map +1 -1
  74. package/lib-commonjs/MenuItem/MenuItem.styling.d.ts +5 -0
  75. package/lib-commonjs/MenuItem/MenuItem.styling.d.ts.map +1 -0
  76. package/lib-commonjs/MenuItem/MenuItem.styling.js +29 -0
  77. package/lib-commonjs/MenuItem/MenuItem.styling.js.map +1 -0
  78. package/lib-commonjs/MenuItem/MenuItem.types.d.ts +6 -2
  79. package/lib-commonjs/MenuItem/MenuItem.types.d.ts.map +1 -1
  80. package/lib-commonjs/MenuItem/MenuItemTokens.d.ts +5 -0
  81. package/lib-commonjs/MenuItem/MenuItemTokens.d.ts.map +1 -0
  82. package/lib-commonjs/MenuItem/MenuItemTokens.js +30 -0
  83. package/lib-commonjs/MenuItem/MenuItemTokens.js.map +1 -0
  84. package/lib-commonjs/MenuItem/MenuItemTokens.win32.d.ts +5 -0
  85. package/lib-commonjs/MenuItem/MenuItemTokens.win32.d.ts.map +1 -0
  86. package/lib-commonjs/MenuItem/MenuItemTokens.win32.js +31 -0
  87. package/lib-commonjs/MenuItem/MenuItemTokens.win32.js.map +1 -0
  88. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.d.ts +3 -0
  89. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.d.ts.map +1 -0
  90. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.js +23 -0
  91. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.js.map +1 -0
  92. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.styling.d.ts +5 -0
  93. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.styling.d.ts.map +1 -0
  94. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.styling.js +24 -0
  95. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.styling.js.map +1 -0
  96. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.types.d.ts +43 -0
  97. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.types.d.ts.map +1 -0
  98. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.types.js +5 -0
  99. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.types.js.map +1 -0
  100. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.d.ts +5 -0
  101. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.d.ts.map +1 -0
  102. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.js +30 -0
  103. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.js.map +1 -0
  104. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.win32.d.ts +5 -0
  105. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.win32.d.ts.map +1 -0
  106. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.win32.js +31 -0
  107. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.win32.js.map +1 -0
  108. package/lib-commonjs/MenuItemCheckbox/useMenuItemCheckbox.d.ts +3 -0
  109. package/lib-commonjs/MenuItemCheckbox/useMenuItemCheckbox.d.ts.map +1 -0
  110. package/lib-commonjs/MenuItemCheckbox/useMenuItemCheckbox.js +29 -0
  111. package/lib-commonjs/MenuItemCheckbox/useMenuItemCheckbox.js.map +1 -0
  112. package/lib-commonjs/MenuList/MenuList.d.ts +4 -0
  113. package/lib-commonjs/MenuList/MenuList.d.ts.map +1 -0
  114. package/lib-commonjs/MenuList/MenuList.js +18 -0
  115. package/lib-commonjs/MenuList/MenuList.js.map +1 -0
  116. package/lib-commonjs/MenuList/MenuList.styling.d.ts +4 -0
  117. package/lib-commonjs/MenuList/MenuList.styling.d.ts.map +1 -0
  118. package/lib-commonjs/MenuList/MenuList.styling.js +17 -0
  119. package/lib-commonjs/MenuList/MenuList.styling.js.map +1 -0
  120. package/lib-commonjs/MenuList/MenuList.types.d.ts +17 -0
  121. package/lib-commonjs/MenuList/MenuList.types.d.ts.map +1 -0
  122. package/lib-commonjs/MenuList/MenuList.types.js +5 -0
  123. package/lib-commonjs/MenuList/MenuList.types.js.map +1 -0
  124. package/lib-commonjs/MenuList/MenuListTokens.d.ts +5 -0
  125. package/lib-commonjs/MenuList/MenuListTokens.d.ts.map +1 -0
  126. package/lib-commonjs/MenuList/MenuListTokens.js +12 -0
  127. package/lib-commonjs/MenuList/MenuListTokens.js.map +1 -0
  128. package/lib-commonjs/MenuList/MenuListTokens.win32.d.ts +5 -0
  129. package/lib-commonjs/MenuList/MenuListTokens.win32.d.ts.map +1 -0
  130. package/lib-commonjs/MenuList/MenuListTokens.win32.js +12 -0
  131. package/lib-commonjs/MenuList/MenuListTokens.win32.js.map +1 -0
  132. package/lib-commonjs/MenuPopover/MenuPopover.d.ts.map +1 -1
  133. package/lib-commonjs/MenuPopover/MenuPopover.js +2 -1
  134. package/lib-commonjs/MenuPopover/MenuPopover.js.map +1 -1
  135. package/lib-commonjs/index.d.ts +1 -0
  136. package/lib-commonjs/index.d.ts.map +1 -1
  137. package/lib-commonjs/index.js +3 -1
  138. package/lib-commonjs/index.js.map +1 -1
  139. package/package.json +8 -6
  140. package/src/MenuItem/MenuItem.styling.ts +45 -0
  141. package/src/MenuItem/MenuItem.tsx +4 -12
  142. package/src/MenuItem/MenuItem.types.ts +7 -2
  143. package/src/MenuItem/MenuItemTokens.ts +29 -0
  144. package/src/MenuItem/MenuItemTokens.win32.ts +30 -0
  145. package/src/MenuItemCheckbox/MenuItemCheckbox.styling.ts +37 -0
  146. package/src/MenuItemCheckbox/MenuItemCheckbox.tsx +26 -0
  147. package/src/MenuItemCheckbox/MenuItemCheckbox.types.ts +52 -0
  148. package/src/MenuItemCheckbox/MenuItemCheckboxTokens.ts +29 -0
  149. package/src/MenuItemCheckbox/MenuItemCheckboxTokens.win32.ts +30 -0
  150. package/src/MenuItemCheckbox/useMenuItemCheckbox.ts +40 -0
  151. package/src/MenuList/MenuList.styling.ts +20 -0
  152. package/src/MenuList/MenuList.tsx +23 -0
  153. package/src/MenuList/MenuList.types.ts +17 -0
  154. package/src/MenuList/MenuListTokens.ts +11 -0
  155. package/src/MenuList/MenuListTokens.win32.ts +11 -0
  156. package/src/MenuPopover/MenuPopover.tsx +7 -2
  157. package/src/index.ts +1 -0
@@ -0,0 +1,5 @@
1
+ import { Theme } from '@fluentui-react-native/framework';
2
+ import { TokenSettings } from '@fluentui-react-native/use-styling';
3
+ import { MenuItemCheckboxTokens } from './MenuItemCheckbox.types';
4
+ export declare const defaultMenuItemCheckboxTokens: TokenSettings<MenuItemCheckboxTokens, Theme>;
5
+ //# sourceMappingURL=MenuItemCheckboxTokens.win32.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuItemCheckboxTokens.win32.d.ts","sourceRoot":"","sources":["../../src/MenuItemCheckbox/MenuItemCheckboxTokens.win32.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,eAAO,MAAM,6BAA6B,EAAE,aAAa,CAAC,sBAAsB,EAAE,KAAK,CAwBrF,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultMenuItemCheckboxTokens = void 0;
4
+ var theme_tokens_1 = require("@fluentui-react-native/theme-tokens");
5
+ var defaultMenuItemCheckboxTokens = function (t) { return ({
6
+ backgroundColor: t.colors.neutralBackground1,
7
+ borderRadius: theme_tokens_1.globalTokens.corner.radius.none,
8
+ color: t.colors.neutralForeground1,
9
+ fontFamily: t.typography.families.primary,
10
+ fontSize: theme_tokens_1.globalTokens.font.size[200],
11
+ fontWeight: theme_tokens_1.globalTokens.font.weight.regular,
12
+ minHeight: 24,
13
+ minWidth: 160,
14
+ maxWidth: 300,
15
+ padding: theme_tokens_1.globalTokens.spacing.xs,
16
+ paddingHorizontal: theme_tokens_1.globalTokens.spacing.s,
17
+ hovered: {
18
+ backgroundColor: t.colors.neutralBackground1Hover,
19
+ color: t.colors.neutralForeground1Hover,
20
+ },
21
+ pressed: {
22
+ backgroundColor: t.colors.neutralBackground1Pressed,
23
+ color: t.colors.neutralForeground1Pressed,
24
+ },
25
+ disabled: {
26
+ backgroundColor: t.colors.neutralBackground1,
27
+ color: t.colors.neutralForegroundDisabled,
28
+ },
29
+ }); };
30
+ exports.defaultMenuItemCheckboxTokens = defaultMenuItemCheckboxTokens;
31
+ //# sourceMappingURL=MenuItemCheckboxTokens.win32.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuItemCheckboxTokens.win32.js","sourceRoot":"","sources":["../../src/MenuItemCheckbox/MenuItemCheckboxTokens.win32.ts"],"names":[],"mappings":";;;AACA,oEAAmE;AAI5D,IAAM,6BAA6B,GAAiD,UAAC,CAAQ,IAA6B,OAAA,CAAC;IAChI,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB;IAC5C,YAAY,EAAE,2BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;IAC7C,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB;IAClC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO;IACzC,QAAQ,EAAE,2BAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACrC,UAAU,EAAE,2BAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAA0B;IAC/D,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,OAAO,EAAE,2BAAY,CAAC,OAAO,CAAC,EAAE;IAChC,iBAAiB,EAAE,2BAAY,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,EAAE;QACP,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,uBAAuB;QACjD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,uBAAuB;KACxC;IACD,OAAO,EAAE;QACP,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,yBAAyB;QACnD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,yBAAyB;KAC1C;IACD,QAAQ,EAAE;QACR,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB;QAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,yBAAyB;KAC1C;CACF,CAAC,EAxB+H,CAwB/H,CAAC;AAxBU,QAAA,6BAA6B,iCAwBvC"}
@@ -0,0 +1,3 @@
1
+ import { MenuItemCheckboxProps, MenuItemCheckboxState } from './MenuItemCheckbox.types';
2
+ export declare const useMenuItemCheckbox: (props: MenuItemCheckboxProps) => MenuItemCheckboxState;
3
+ //# sourceMappingURL=useMenuItemCheckbox.d.ts.map
@@ -0,0 +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;AAKxF,eAAO,MAAM,mBAAmB,UAAW,qBAAqB,KAAG,qBAwBlE,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useMenuItemCheckbox = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var React = (0, tslib_1.__importStar)(require("react"));
6
+ var framework_1 = require("@fluentui-react-native/framework");
7
+ var interactive_hooks_1 = require("@fluentui-react-native/interactive-hooks");
8
+ var menuContext_1 = require("../context/menuContext");
9
+ var useMenuItemCheckbox = function (props) {
10
+ // attach the pressable state handlers
11
+ 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;
16
+ 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,
19
+ };
20
+ };
21
+ exports.useMenuItemCheckbox = useMenuItemCheckbox;
22
+ var getAccessibilityState = (0, framework_1.memoize)(getAccessibilityStateWorker);
23
+ function getAccessibilityStateWorker(disabled, accessibilityState) {
24
+ if (accessibilityState) {
25
+ return (0, tslib_1.__assign)({ disabled: disabled }, accessibilityState);
26
+ }
27
+ return { disabled: disabled };
28
+ }
29
+ //# sourceMappingURL=useMenuItemCheckbox.js.map
@@ -0,0 +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"}
@@ -0,0 +1,4 @@
1
+ import { MenuListProps } from './MenuList.types';
2
+ export declare const MenuList: import("@fluentui-react-native/framework").ComposableComponent<MenuListProps, import("./MenuList.types").MenuListSlotProps, import("./MenuList.types").MenuListTokens, object>;
3
+ export default MenuList;
4
+ //# sourceMappingURL=MenuList.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MenuList = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_native_1 = require("react-native");
6
+ var framework_1 = require("@fluentui-react-native/framework");
7
+ var MenuList_types_1 = require("./MenuList.types");
8
+ var MenuList_styling_1 = require("./MenuList.styling");
9
+ 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
+ root: react_native_1.View,
11
+ }, useRender: function (userProps, useSlots) {
12
+ var Slots = useSlots(userProps);
13
+ return function (_final, children) {
14
+ return (0, framework_1.withSlots)(Slots.root, null, children);
15
+ };
16
+ } }));
17
+ exports.default = exports.MenuList;
18
+ //# sourceMappingURL=MenuList.js.map
@@ -0,0 +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"}
@@ -0,0 +1,4 @@
1
+ import { UseStylingOptions } from '@fluentui-react-native/framework';
2
+ import { MenuListProps, MenuListTokens, MenuListSlotProps } from './MenuList.types';
3
+ export declare const stylingSettings: UseStylingOptions<MenuListProps, MenuListSlotProps, MenuListTokens>;
4
+ //# sourceMappingURL=MenuList.styling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuList.styling.d.ts","sourceRoot":"","sources":["../../src/MenuList/MenuList.styling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,iBAAiB,EAAc,MAAM,kCAAkC,CAAC;AAGxF,OAAO,EAAgB,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAElG,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,aAAa,EAAE,iBAAiB,EAAE,cAAc,CAc/F,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stylingSettings = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var framework_1 = require("@fluentui-react-native/framework");
6
+ var tokens_1 = require("@fluentui-react-native/tokens");
7
+ var MenuListTokens_1 = require("./MenuListTokens");
8
+ var MenuList_types_1 = require("./MenuList.types");
9
+ exports.stylingSettings = {
10
+ tokens: [MenuListTokens_1.defaultMenuListTokens, MenuList_types_1.menuListName],
11
+ slotProps: {
12
+ root: (0, framework_1.buildProps)(function (tokens, theme) { return ({
13
+ style: (0, tslib_1.__assign)({ backgroundColor: tokens.backgroundColor, display: 'flex' }, tokens_1.layoutStyles.from(tokens, theme)),
14
+ }); }, (0, tslib_1.__spreadArray)(['backgroundColor'], tokens_1.layoutStyles.keys, true)),
15
+ },
16
+ };
17
+ //# sourceMappingURL=MenuList.styling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuList.styling.js","sourceRoot":"","sources":["../../src/MenuList/MenuList.styling.ts"],"names":[],"mappings":";;;;AAAA,8DAAwF;AACxF,wDAA6D;AAC7D,mDAAyD;AACzD,mDAAkG;AAErF,QAAA,eAAe,GAAwE;IAClG,MAAM,EAAE,CAAC,sCAAqB,EAAE,6BAAY,CAAC;IAC7C,SAAS,EAAE;QACT,IAAI,EAAE,IAAA,sBAAU,EACd,UAAC,MAAsB,EAAE,KAAY,IAAK,OAAA,CAAC;YACzC,KAAK,0BACH,eAAe,EAAE,MAAM,CAAC,eAAe,EACvC,OAAO,EAAE,MAAM,IACZ,qBAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CACpC;SACF,CAAC,EANwC,CAMxC,8BACD,iBAAiB,GAAK,qBAAY,CAAC,IAAI,QACzC;KACF;CACF,CAAC"}
@@ -0,0 +1,17 @@
1
+ /// <reference types="react" />
2
+ import type { IViewProps } from '@fluentui-react-native/adapters';
3
+ import { IBackgroundColorTokens, LayoutTokens } from '@fluentui-react-native/tokens';
4
+ export declare const menuListName = "MenuList";
5
+ export interface MenuListTokens extends LayoutTokens, IBackgroundColorTokens {
6
+ }
7
+ export interface MenuListProps extends Omit<IViewProps, 'onPress'> {
8
+ }
9
+ export interface MenuListSlotProps {
10
+ root: React.PropsWithRef<IViewProps>;
11
+ }
12
+ export interface MenuListType {
13
+ props: MenuListProps;
14
+ tokens: MenuListTokens;
15
+ slotProps: MenuListSlotProps;
16
+ }
17
+ //# sourceMappingURL=MenuList.types.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.menuListName = void 0;
4
+ exports.menuListName = 'MenuList';
5
+ //# sourceMappingURL=MenuList.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuList.types.js","sourceRoot":"","sources":["../../src/MenuList/MenuList.types.ts"],"names":[],"mappings":";;;AAGa,QAAA,YAAY,GAAG,UAAU,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Theme } from '@fluentui-react-native/framework';
2
+ import { TokenSettings } from '@fluentui-react-native/use-styling';
3
+ import { MenuListTokens } from './MenuList.types';
4
+ export declare const defaultMenuListTokens: TokenSettings<MenuListTokens, Theme>;
5
+ //# sourceMappingURL=MenuListTokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuListTokens.d.ts","sourceRoot":"","sources":["../../src/MenuList/MenuListTokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,cAAc,EAAE,KAAK,CAKrE,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultMenuListTokens = void 0;
4
+ var theme_tokens_1 = require("@fluentui-react-native/theme-tokens");
5
+ var defaultMenuListTokens = function (t) { return ({
6
+ padding: theme_tokens_1.globalTokens.spacing.xs,
7
+ minWidth: 128,
8
+ maxWidth: 300,
9
+ backgroundColor: t.colors.neutralBackground1,
10
+ }); };
11
+ exports.defaultMenuListTokens = defaultMenuListTokens;
12
+ //# sourceMappingURL=MenuListTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuListTokens.js","sourceRoot":"","sources":["../../src/MenuList/MenuListTokens.ts"],"names":[],"mappings":";;;AACA,oEAAmE;AAI5D,IAAM,qBAAqB,GAAyC,UAAC,CAAQ,IAAqB,OAAA,CAAC;IACxG,OAAO,EAAE,2BAAY,CAAC,OAAO,CAAC,EAAE;IAChC,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB;CAC7C,CAAC,EALuG,CAKvG,CAAC;AALU,QAAA,qBAAqB,yBAK/B"}
@@ -0,0 +1,5 @@
1
+ import { Theme } from '@fluentui-react-native/framework';
2
+ import { TokenSettings } from '@fluentui-react-native/use-styling';
3
+ import { MenuListTokens } from './MenuList.types';
4
+ export declare const defaultMenuListTokens: TokenSettings<MenuListTokens, Theme>;
5
+ //# sourceMappingURL=MenuListTokens.win32.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuListTokens.win32.d.ts","sourceRoot":"","sources":["../../src/MenuList/MenuListTokens.win32.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,cAAc,EAAE,KAAK,CAKrE,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultMenuListTokens = void 0;
4
+ var theme_tokens_1 = require("@fluentui-react-native/theme-tokens");
5
+ var defaultMenuListTokens = function (t) { return ({
6
+ paddingVertical: theme_tokens_1.globalTokens.spacing.xs,
7
+ minWidth: 128,
8
+ maxWidth: 300,
9
+ backgroundColor: t.colors.neutralBackground1,
10
+ }); };
11
+ exports.defaultMenuListTokens = defaultMenuListTokens;
12
+ //# sourceMappingURL=MenuListTokens.win32.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuListTokens.win32.js","sourceRoot":"","sources":["../../src/MenuList/MenuListTokens.win32.ts"],"names":[],"mappings":";;;AACA,oEAAmE;AAI5D,IAAM,qBAAqB,GAAyC,UAAC,CAAQ,IAAqB,OAAA,CAAC;IACxG,eAAe,EAAE,2BAAY,CAAC,OAAO,CAAC,EAAE;IACxC,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB;CAC7C,CAAC,EALuG,CAKvG,CAAC;AALU,QAAA,qBAAqB,yBAK/B"}
@@ -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,iFAMtB,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,iFAWtB,CAAC;AAGH,eAAe,WAAW,CAAC"}
@@ -9,8 +9,9 @@ var MenuPopover_types_1 = require("./MenuPopover.types");
9
9
  var useMenuPopover_1 = require("./useMenuPopover");
10
10
  exports.MenuPopover = (0, framework_1.stagedComponent)(function (props) {
11
11
  var state = (0, useMenuPopover_1.useMenuPopover)(props);
12
+ var theme = (0, framework_1.useFluentTheme)();
12
13
  return function (_rest, children) {
13
- return react_1.default.createElement(callout_1.Callout, { target: state.triggerRef }, children);
14
+ return (react_1.default.createElement(callout_1.Callout, { target: state.triggerRef, borderWidth: 1, borderColor: theme.colors.neutralStrokeAccessible }, children));
14
15
  };
15
16
  });
16
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,8DAAmE;AACnE,0DAAyD;AACzD,yDAAwE;AACxE,mDAAkD;AAErC,QAAA,WAAW,GAAG,IAAA,2BAAe,EAAC,UAAC,KAAuB;IACjE,IAAM,KAAK,GAAG,IAAA,+BAAc,EAAC,KAAK,CAAC,CAAC;IAEpC,OAAO,UAAC,KAAuB,EAAE,QAAyB;QACxD,OAAO,8BAAC,iBAAO,IAAC,MAAM,EAAE,KAAK,CAAC,UAAU,IAAG,QAAQ,CAAW,CAAC;IACjE,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,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"}
@@ -2,4 +2,5 @@ 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 { MenuList } from './MenuList/MenuList';
5
6
  //# 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"}
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,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MenuItem = exports.MenuPopover = exports.MenuTrigger = exports.Menu = void 0;
3
+ exports.MenuList = 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,4 +9,6 @@ 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 MenuList_1 = require("./MenuList/MenuList");
13
+ Object.defineProperty(exports, "MenuList", { enumerable: true, get: function () { return MenuList_1.MenuList; } });
12
14
  //# 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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui-react-native/menu",
3
- "version": "0.4.0",
3
+ "version": "0.5.2",
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,11 +23,13 @@
23
23
  },
24
24
  "dependencies": {
25
25
  "@fluentui-react-native/adapters": ">=0.8.5 <1.0.0",
26
- "@fluentui-react-native/callout": ">=0.19.45 <1.0.0",
27
- "@fluentui-react-native/experimental-text": ">=0.7.25 <1.0.0",
28
- "@fluentui-react-native/framework": "0.7.25",
29
- "@fluentui-react-native/interactive-hooks": ">=0.15.5 <1.0.0",
30
- "@fluentui-react-native/tokens": ">=0.11.11 <1.0.0",
26
+ "@fluentui-react-native/callout": ">=0.20.0 <1.0.0",
27
+ "@fluentui-react-native/experimental-text": ">=0.7.26 <1.0.0",
28
+ "@fluentui-react-native/framework": "0.7.26",
29
+ "@fluentui-react-native/interactive-hooks": ">=0.15.6 <1.0.0",
30
+ "@fluentui-react-native/theme-tokens": ">=0.16.2 <1.0.0",
31
+ "@fluentui-react-native/tokens": ">=0.12.0 <1.0.0",
32
+ "@fluentui-react-native/use-styling": ">=0.8.3 <1.0.0",
31
33
  "react-native-svg": "^12.3.0",
32
34
  "tslib": "^2.3.1"
33
35
  },
@@ -0,0 +1,45 @@
1
+ import { Theme, UseStylingOptions, buildProps } from '@fluentui-react-native/framework';
2
+ import { fontStyles, layoutStyles } from '@fluentui-react-native/tokens';
3
+ import { defaultMenuItemTokens } from './MenuItemTokens';
4
+ import { menuItemName, MenuItemProps, MenuItemTokens, MenuItemSlotProps } from './MenuItem.types';
5
+
6
+ export const menuItemStates: (keyof MenuItemTokens)[] = ['hovered', 'focused', 'pressed', 'disabled'];
7
+
8
+ export const stylingSettings: UseStylingOptions<MenuItemProps, MenuItemSlotProps, MenuItemTokens> = {
9
+ tokens: [defaultMenuItemTokens, menuItemName],
10
+ states: menuItemStates,
11
+ slotProps: {
12
+ root: buildProps(
13
+ (tokens: MenuItemTokens, theme: Theme) => ({
14
+ style: {
15
+ alignItems: 'center',
16
+ backgroundColor: tokens.backgroundColor,
17
+ display: 'flex',
18
+ flexDirection: 'row',
19
+ ...layoutStyles.from(tokens, theme),
20
+ },
21
+ }),
22
+ ['backgroundColor', ...layoutStyles.keys],
23
+ ),
24
+ content: buildProps(
25
+ (tokens: MenuItemTokens, theme: Theme) => {
26
+ return {
27
+ style: {
28
+ flexGrow: 1,
29
+ color: tokens.color,
30
+ ...fontStyles.from(tokens, theme),
31
+ },
32
+ };
33
+ },
34
+ ['color', ...fontStyles.keys],
35
+ ),
36
+ submenuIndicator: buildProps(
37
+ (tokens: MenuItemTokens) => {
38
+ return {
39
+ color: tokens.color,
40
+ };
41
+ },
42
+ ['color'],
43
+ ),
44
+ },
45
+ };
@@ -5,18 +5,11 @@ import { compose, mergeProps, UseSlots, withSlots } from '@fluentui-react-native
5
5
  import { Text } from '@fluentui-react-native/experimental-text';
6
6
  import { menuItemName, MenuItemProps, MenuItemType } from './MenuItem.types';
7
7
  import { useMenuItem } from './useMenuItem';
8
+ import { stylingSettings } from './MenuItem.styling';
8
9
 
9
10
  export const MenuItem = compose<MenuItemType>({
10
11
  displayName: menuItemName,
11
- tokens: [],
12
- slotProps: {
13
- root: {
14
- style: { height: 48, width: 200, flexDirection: 'row', alignItems: 'center', backgroundColor: 'transparent' },
15
- },
16
- content: {
17
- color: 'white',
18
- },
19
- },
12
+ ...stylingSettings,
20
13
  slots: {
21
14
  root: View,
22
15
  content: Text,
@@ -24,14 +17,13 @@ export const MenuItem = compose<MenuItemType>({
24
17
  },
25
18
  useRender: (userProps: MenuItemProps, useSlots: UseSlots<MenuItemType>) => {
26
19
  const menuItem = useMenuItem(userProps);
27
- // grab the styled slots
28
- const Slots = useSlots(userProps);
20
+ const Slots = useSlots(userProps, (layer): boolean => menuItem.state[layer]);
29
21
 
30
22
  return (final: MenuItemProps) => {
31
23
  const mergedProps = mergeProps(menuItem.props, final);
32
24
  const chevronXml = `
33
25
  <svg width="12" height="16" viewBox="0 0 11 6">
34
- <path fill='white' d='M0.646447 0.646447C0.841709 0.451184 1.15829 0.451184 1.35355 0.646447L5.5 4.79289L9.64645 0.646447C9.84171 0.451185 10.1583 0.451185 10.3536 0.646447C10.5488 0.841709 10.5488 1.15829 10.3536 1.35355L5.85355 5.85355C5.65829 6.04882 5.34171 6.04882 5.14645 5.85355L0.646447 1.35355C0.451184 1.15829 0.451184 0.841709 0.646447 0.646447Z' />
26
+ <path fill='currentColor' d='M0.646447 0.646447C0.841709 0.451184 1.15829 0.451184 1.35355 0.646447L5.5 4.79289L9.64645 0.646447C9.84171 0.451185 10.1583 0.451185 10.3536 0.646447C10.5488 0.841709 10.5488 1.15829 10.3536 1.35355L5.85355 5.85355C5.65829 6.04882 5.34171 6.04882 5.14645 5.85355L0.646447 1.35355C0.451184 1.15829 0.451184 0.841709 0.646447 0.646447Z' />
35
27
  </svg>`;
36
28
 
37
29
  return (
@@ -4,11 +4,16 @@ import { SvgProps, XmlProps } from 'react-native-svg';
4
4
  import type { IViewProps } from '@fluentui-react-native/adapters';
5
5
  import { TextProps } from '@fluentui-react-native/experimental-text';
6
6
  import { IFocusable, InteractionEvent, IPressableHooks, IWithPressableOptions } from '@fluentui-react-native/interactive-hooks';
7
- import { FontTokens, IBorderTokens, IColorTokens, IShadowTokens, LayoutTokens } from '@fluentui-react-native/tokens';
7
+ import { FontTokens, IBorderTokens, IColorTokens, LayoutTokens } from '@fluentui-react-native/tokens';
8
8
 
9
9
  export const menuItemName = 'MenuItem';
10
10
 
11
- export interface MenuItemTokens extends LayoutTokens, FontTokens, IBorderTokens, IShadowTokens, IColorTokens {}
11
+ export interface MenuItemTokens extends LayoutTokens, FontTokens, IBorderTokens, IColorTokens {
12
+ disabled?: MenuItemTokens;
13
+ focused?: MenuItemTokens;
14
+ hovered?: MenuItemTokens;
15
+ pressed?: MenuItemTokens;
16
+ }
12
17
 
13
18
  export interface MenuItemProps extends Omit<IWithPressableOptions<ViewProps>, 'onPress'> {
14
19
  content: string;
@@ -0,0 +1,29 @@
1
+ import { FontWeightValue, Theme } from '@fluentui-react-native/framework';
2
+ import { globalTokens } from '@fluentui-react-native/theme-tokens';
3
+ import { TokenSettings } from '@fluentui-react-native/use-styling';
4
+ import { MenuItemTokens } from './MenuItem.types';
5
+
6
+ export const defaultMenuItemTokens: TokenSettings<MenuItemTokens, Theme> = (t: Theme): MenuItemTokens => ({
7
+ backgroundColor: t.colors.neutralBackground1,
8
+ borderRadius: globalTokens.corner.radius.medium,
9
+ color: t.colors.neutralForeground2,
10
+ fontFamily: t.typography.families.primary,
11
+ fontSize: globalTokens.font.size[300],
12
+ fontWeight: globalTokens.font.weight.regular as FontWeightValue,
13
+ minHeight: 32,
14
+ minWidth: 160,
15
+ maxWidth: 300,
16
+ padding: globalTokens.spacing.sNudge,
17
+ hovered: {
18
+ backgroundColor: t.colors.neutralBackground1Hover,
19
+ color: t.colors.neutralForeground2Hover,
20
+ },
21
+ pressed: {
22
+ backgroundColor: t.colors.neutralBackground1Pressed,
23
+ color: t.colors.neutralForeground2Pressed,
24
+ },
25
+ disabled: {
26
+ backgroundColor: t.colors.neutralBackground1,
27
+ color: t.colors.neutralForegroundDisabled,
28
+ },
29
+ });
@@ -0,0 +1,30 @@
1
+ import { FontWeightValue, Theme } from '@fluentui-react-native/framework';
2
+ import { globalTokens } from '@fluentui-react-native/theme-tokens';
3
+ import { TokenSettings } from '@fluentui-react-native/use-styling';
4
+ import { MenuItemTokens } from './MenuItem.types';
5
+
6
+ export const defaultMenuItemTokens: TokenSettings<MenuItemTokens, Theme> = (t: Theme): MenuItemTokens => ({
7
+ backgroundColor: t.colors.neutralBackground1,
8
+ borderRadius: globalTokens.corner.radius.none,
9
+ color: t.colors.neutralForeground1,
10
+ fontFamily: t.typography.families.primary,
11
+ fontSize: globalTokens.font.size[200],
12
+ fontWeight: globalTokens.font.weight.regular as FontWeightValue,
13
+ minHeight: 24,
14
+ minWidth: 160,
15
+ maxWidth: 300,
16
+ padding: globalTokens.spacing.xs,
17
+ paddingHorizontal: globalTokens.spacing.s,
18
+ hovered: {
19
+ backgroundColor: t.colors.neutralBackground1Hover,
20
+ color: t.colors.neutralForeground1Hover,
21
+ },
22
+ pressed: {
23
+ backgroundColor: t.colors.neutralBackground1Pressed,
24
+ color: t.colors.neutralForeground1Pressed,
25
+ },
26
+ disabled: {
27
+ backgroundColor: t.colors.neutralBackground1,
28
+ color: t.colors.neutralForegroundDisabled,
29
+ },
30
+ });
@@ -0,0 +1,37 @@
1
+ import { Theme, UseStylingOptions, buildProps } from '@fluentui-react-native/framework';
2
+ import { fontStyles, layoutStyles } from '@fluentui-react-native/tokens';
3
+ import { defaultMenuItemCheckboxTokens } from './MenuItemCheckboxTokens';
4
+ import { menuItemCheckboxName, MenuItemCheckboxProps, MenuItemCheckboxTokens, MenuItemCheckboxSlotProps } from './MenuItemCheckbox.types';
5
+
6
+ export const menuItemCheckboxStates: (keyof MenuItemCheckboxTokens)[] = ['hovered', 'focused', 'pressed', 'disabled'];
7
+
8
+ export const stylingSettings: UseStylingOptions<MenuItemCheckboxProps, MenuItemCheckboxSlotProps, MenuItemCheckboxTokens> = {
9
+ tokens: [defaultMenuItemCheckboxTokens, menuItemCheckboxName],
10
+ states: menuItemCheckboxStates,
11
+ slotProps: {
12
+ root: buildProps(
13
+ (tokens: MenuItemCheckboxTokens, theme: Theme) => ({
14
+ style: {
15
+ alignItems: 'center',
16
+ backgroundColor: tokens.backgroundColor,
17
+ display: 'flex',
18
+ flexDirection: 'row',
19
+ ...layoutStyles.from(tokens, theme),
20
+ },
21
+ }),
22
+ ['backgroundColor', ...layoutStyles.keys],
23
+ ),
24
+ content: buildProps(
25
+ (tokens: MenuItemCheckboxTokens, theme: Theme) => {
26
+ return {
27
+ style: {
28
+ flexGrow: 1,
29
+ color: tokens.color,
30
+ ...fontStyles.from(tokens, theme),
31
+ },
32
+ };
33
+ },
34
+ ['color', ...fontStyles.keys],
35
+ ),
36
+ },
37
+ };
@@ -0,0 +1,26 @@
1
+ /** @jsx withSlots */
2
+ import { View } from 'react-native';
3
+ import { compose, mergeProps, UseSlots, withSlots } from '@fluentui-react-native/framework';
4
+ import { Text } from '@fluentui-react-native/experimental-text';
5
+ import { menuItemCheckboxName, MenuItemCheckboxProps, MenuItemCheckboxType } from './MenuItemCheckbox.types';
6
+ import { useMenuItemCheckbox } from './useMenuItemCheckbox';
7
+ import { stylingSettings } from './MenuItemCheckbox.styling';
8
+
9
+ export const MenuItemCheckbox = compose<MenuItemCheckboxType>({
10
+ displayName: menuItemCheckboxName,
11
+ ...stylingSettings,
12
+ slots: {
13
+ root: View,
14
+ content: Text,
15
+ },
16
+ useRender: (userProps: MenuItemCheckboxProps, useSlots: UseSlots<MenuItemCheckboxType>) => {
17
+ const menuItem = useMenuItemCheckbox(userProps);
18
+ const Slots = useSlots(userProps, (layer): boolean => menuItem.state[layer]);
19
+
20
+ return (final: MenuItemCheckboxProps) => {
21
+ const mergedProps = mergeProps(menuItem.props, final);
22
+
23
+ return <Slots.root {...mergedProps}>{mergedProps.content && <Slots.content>{mergedProps.content}</Slots.content>}</Slots.root>;
24
+ };
25
+ },
26
+ });
@@ -0,0 +1,52 @@
1
+ import * as React from 'react';
2
+ import { ViewProps } from 'react-native';
3
+ import type { IViewProps } from '@fluentui-react-native/adapters';
4
+ import { TextProps } from '@fluentui-react-native/experimental-text';
5
+ import { IFocusable, InteractionEvent, IPressableHooks, IWithPressableOptions } from '@fluentui-react-native/interactive-hooks';
6
+ import { FontTokens, IBorderTokens, IColorTokens, LayoutTokens } from '@fluentui-react-native/tokens';
7
+
8
+ export const menuItemCheckboxName = 'MenuItemCheckbox';
9
+
10
+ export interface MenuItemCheckboxTokens extends LayoutTokens, FontTokens, IBorderTokens, IColorTokens {
11
+ disabled?: MenuItemCheckboxTokens;
12
+ focused?: MenuItemCheckboxTokens;
13
+ hovered?: MenuItemCheckboxTokens;
14
+ pressed?: MenuItemCheckboxTokens;
15
+ }
16
+
17
+ export interface MenuItemCheckboxProps extends Omit<IWithPressableOptions<ViewProps>, 'onPress'> {
18
+ content: string;
19
+
20
+ /**
21
+ * Applies disabled styles to menu item but remains focusable
22
+ */
23
+ disabled?: boolean;
24
+
25
+ /**
26
+ * A RefObject to access the IButton interface. Use this to access the public methods and properties of the component.
27
+ */
28
+ componentRef?: React.RefObject<IFocusable>;
29
+
30
+ /**
31
+ * If the menu item is a trigger for a submenu
32
+ */
33
+ hasSubmenu?: boolean;
34
+
35
+ /**
36
+ * A callback to call on button click event
37
+ */
38
+ onClick?: (e: InteractionEvent) => void;
39
+ }
40
+
41
+ export type MenuItemCheckboxState = IPressableHooks<MenuItemCheckboxProps & React.ComponentPropsWithRef<any>>;
42
+
43
+ export interface MenuItemCheckboxSlotProps {
44
+ root: React.PropsWithRef<IViewProps>;
45
+ content?: TextProps;
46
+ }
47
+
48
+ export interface MenuItemCheckboxType {
49
+ props: MenuItemCheckboxProps;
50
+ tokens: MenuItemCheckboxTokens;
51
+ slotProps: MenuItemCheckboxSlotProps;
52
+ }