@fluentui-react-native/menu 0.14.8 → 0.15.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 (78) hide show
  1. package/CHANGELOG.json +46 -1
  2. package/CHANGELOG.md +26 -2
  3. package/lib/Menu/Menu.types.d.ts +13 -0
  4. package/lib/Menu/Menu.types.d.ts.map +1 -1
  5. package/lib/MenuItem/MenuItem.d.ts +2 -0
  6. package/lib/MenuItem/MenuItem.d.ts.map +1 -1
  7. package/lib/MenuItem/MenuItem.js +18 -6
  8. package/lib/MenuItem/MenuItem.js.map +1 -1
  9. package/lib/MenuItem/MenuItem.types.d.ts +15 -5
  10. package/lib/MenuItem/MenuItem.types.d.ts.map +1 -1
  11. package/lib/MenuItem/useMenuItem.d.ts.map +1 -1
  12. package/lib/MenuItem/useMenuItem.js +1 -1
  13. package/lib/MenuItem/useMenuItem.js.map +1 -1
  14. package/lib/MenuItemCheckbox/MenuItemCheckbox.d.ts +1 -0
  15. package/lib/MenuItemCheckbox/MenuItemCheckbox.d.ts.map +1 -1
  16. package/lib/MenuItemCheckbox/MenuItemCheckbox.js +7 -5
  17. package/lib/MenuItemCheckbox/MenuItemCheckbox.js.map +1 -1
  18. package/lib/MenuItemCheckbox/MenuItemCheckbox.types.d.ts +18 -5
  19. package/lib/MenuItemCheckbox/MenuItemCheckbox.types.d.ts.map +1 -1
  20. package/lib/MenuItemCheckbox/useMenuItemCheckbox.d.ts.map +1 -1
  21. package/lib/MenuItemCheckbox/useMenuItemCheckbox.js +2 -2
  22. package/lib/MenuItemCheckbox/useMenuItemCheckbox.js.map +1 -1
  23. package/lib/MenuList/MenuList.types.d.ts +17 -0
  24. package/lib/MenuList/MenuList.types.d.ts.map +1 -1
  25. package/lib/MenuTrigger/useMenuTrigger.d.ts.map +1 -1
  26. package/lib/MenuTrigger/useMenuTrigger.js +6 -6
  27. package/lib/MenuTrigger/useMenuTrigger.js.map +1 -1
  28. package/lib/__tests__/Menu.test.js +18 -18
  29. package/lib/__tests__/Menu.test.js.map +1 -1
  30. package/lib/consts.d.ts +1 -1
  31. package/lib/consts.d.ts.map +1 -1
  32. package/lib/consts.js +1 -1
  33. package/lib/consts.js.map +1 -1
  34. package/lib-commonjs/Menu/Menu.types.d.ts +13 -0
  35. package/lib-commonjs/Menu/Menu.types.d.ts.map +1 -1
  36. package/lib-commonjs/MenuItem/MenuItem.d.ts +2 -0
  37. package/lib-commonjs/MenuItem/MenuItem.d.ts.map +1 -1
  38. package/lib-commonjs/MenuItem/MenuItem.js +17 -5
  39. package/lib-commonjs/MenuItem/MenuItem.js.map +1 -1
  40. package/lib-commonjs/MenuItem/MenuItem.types.d.ts +15 -5
  41. package/lib-commonjs/MenuItem/MenuItem.types.d.ts.map +1 -1
  42. package/lib-commonjs/MenuItem/useMenuItem.d.ts.map +1 -1
  43. package/lib-commonjs/MenuItem/useMenuItem.js +1 -1
  44. package/lib-commonjs/MenuItem/useMenuItem.js.map +1 -1
  45. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.d.ts +1 -0
  46. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.d.ts.map +1 -1
  47. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.js +6 -4
  48. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.js.map +1 -1
  49. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.types.d.ts +18 -5
  50. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.types.d.ts.map +1 -1
  51. package/lib-commonjs/MenuItemCheckbox/useMenuItemCheckbox.d.ts.map +1 -1
  52. package/lib-commonjs/MenuItemCheckbox/useMenuItemCheckbox.js +2 -2
  53. package/lib-commonjs/MenuItemCheckbox/useMenuItemCheckbox.js.map +1 -1
  54. package/lib-commonjs/MenuList/MenuList.types.d.ts +17 -0
  55. package/lib-commonjs/MenuList/MenuList.types.d.ts.map +1 -1
  56. package/lib-commonjs/MenuTrigger/useMenuTrigger.d.ts.map +1 -1
  57. package/lib-commonjs/MenuTrigger/useMenuTrigger.js +5 -5
  58. package/lib-commonjs/MenuTrigger/useMenuTrigger.js.map +1 -1
  59. package/lib-commonjs/__tests__/Menu.test.js +18 -18
  60. package/lib-commonjs/__tests__/Menu.test.js.map +1 -1
  61. package/lib-commonjs/consts.d.ts +1 -1
  62. package/lib-commonjs/consts.d.ts.map +1 -1
  63. package/lib-commonjs/consts.js +2 -2
  64. package/lib-commonjs/consts.js.map +1 -1
  65. package/package.json +1 -1
  66. package/src/Menu/Menu.types.ts +20 -0
  67. package/src/MenuItem/MenuItem.tsx +22 -5
  68. package/src/MenuItem/MenuItem.types.ts +18 -7
  69. package/src/MenuItem/useMenuItem.ts +0 -1
  70. package/src/MenuItemCheckbox/MenuItemCheckbox.tsx +8 -4
  71. package/src/MenuItemCheckbox/MenuItemCheckbox.types.ts +22 -7
  72. package/src/MenuItemCheckbox/useMenuItemCheckbox.ts +2 -1
  73. package/src/MenuList/MenuList.types.ts +20 -0
  74. package/src/MenuTrigger/useMenuTrigger.ts +15 -6
  75. package/src/__tests__/Menu.test.tsx +20 -18
  76. package/src/__tests__/__snapshots__/Menu.test.tsx.snap +0 -13
  77. package/src/consts.ts +1 -1
  78. package/SPEC.md +0 -344
@@ -21,7 +21,7 @@ describe('Checkbox component tests', function () {
21
21
  React.createElement(button_1.ButtonV1, null, "Default")),
22
22
  React.createElement(MenuPopover_1.default, null,
23
23
  React.createElement(MenuList_1.MenuList, null,
24
- React.createElement(MenuItem_1.MenuItem, { content: "Option 1" })))))
24
+ React.createElement(MenuItem_1.MenuItem, null, "Option 1")))))
25
25
  .toJSON();
26
26
  expect(tree).toMatchSnapshot();
27
27
  });
@@ -32,7 +32,7 @@ describe('Checkbox component tests', function () {
32
32
  React.createElement(button_1.ButtonV1, null, "Open")),
33
33
  React.createElement(MenuPopover_1.default, null,
34
34
  React.createElement(MenuList_1.MenuList, null,
35
- React.createElement(MenuItem_1.MenuItem, { content: "Option 1" })))))
35
+ React.createElement(MenuItem_1.MenuItem, null, "Option 1")))))
36
36
  .toJSON();
37
37
  expect(tree).toMatchSnapshot();
38
38
  });
@@ -43,8 +43,8 @@ describe('Checkbox component tests', function () {
43
43
  React.createElement(button_1.ButtonV1, null, "Open")),
44
44
  React.createElement(MenuPopover_1.default, null,
45
45
  React.createElement(MenuList_1.MenuList, null,
46
- React.createElement(MenuItem_1.MenuItem, { content: "Option 1" }),
47
- React.createElement(MenuItem_1.MenuItem, { disabled: true, content: "Option 2" })))))
46
+ React.createElement(MenuItem_1.MenuItem, null, "Option 1"),
47
+ React.createElement(MenuItem_1.MenuItem, { disabled: true }, "Option 2")))))
48
48
  .toJSON();
49
49
  expect(tree).toMatchSnapshot();
50
50
  });
@@ -55,9 +55,9 @@ describe('Checkbox component tests', function () {
55
55
  React.createElement(button_1.ButtonV1, null, "Open")),
56
56
  React.createElement(MenuPopover_1.default, null,
57
57
  React.createElement(MenuList_1.MenuList, null,
58
- React.createElement(MenuItemCheckbox_1.MenuItemCheckbox, { content: "Option 1", name: "Option 1" }),
58
+ React.createElement(MenuItemCheckbox_1.MenuItemCheckbox, { name: "Option 1" }, "Option 1"),
59
59
  React.createElement(MenuDivider_1.MenuDivider, null),
60
- React.createElement(MenuItemCheckbox_1.MenuItemCheckbox, { disabled: true, content: "Option 2", name: "Option 2" })))))
60
+ React.createElement(MenuItemCheckbox_1.MenuItemCheckbox, { disabled: true, name: "Option 2" }, "Option 2")))))
61
61
  .toJSON();
62
62
  expect(tree).toMatchSnapshot();
63
63
  });
@@ -68,8 +68,8 @@ describe('Checkbox component tests', function () {
68
68
  React.createElement(button_1.ButtonV1, null, "Open")),
69
69
  React.createElement(MenuPopover_1.default, null,
70
70
  React.createElement(MenuList_1.MenuList, null,
71
- React.createElement(MenuItemRadio_1.MenuItemRadio, { content: "Option 1", name: "Option 1" }),
72
- React.createElement(MenuItemRadio_1.MenuItemRadio, { content: "Option 2", name: "Option 2" })))))
71
+ React.createElement(MenuItemRadio_1.MenuItemRadio, { name: "Option 1" }, "Option 1"),
72
+ React.createElement(MenuItemRadio_1.MenuItemRadio, { name: "Option 2" }, "Option 2")))))
73
73
  .toJSON();
74
74
  expect(tree).toMatchSnapshot();
75
75
  });
@@ -80,9 +80,9 @@ describe('Checkbox component tests', function () {
80
80
  React.createElement(button_1.ButtonV1, null, "Open")),
81
81
  React.createElement(MenuPopover_1.default, null,
82
82
  React.createElement(MenuList_1.MenuList, null,
83
- React.createElement(MenuItemCheckbox_1.MenuItemCheckbox, { content: "Option 1", name: "Option 1" }),
83
+ React.createElement(MenuItemCheckbox_1.MenuItemCheckbox, { name: "Option 1" }, "Option 1"),
84
84
  React.createElement(MenuDivider_1.MenuDivider, null),
85
- React.createElement(MenuItemCheckbox_1.MenuItemCheckbox, { content: "Option 2", name: "Option 2" })))))
85
+ React.createElement(MenuItemCheckbox_1.MenuItemCheckbox, { name: "Option 2" }, "Option 2")))))
86
86
  .toJSON();
87
87
  expect(tree).toMatchSnapshot();
88
88
  });
@@ -93,9 +93,9 @@ describe('Checkbox component tests', function () {
93
93
  React.createElement(button_1.ButtonV1, null, "Open")),
94
94
  React.createElement(MenuPopover_1.default, null,
95
95
  React.createElement(MenuList_1.MenuList, null,
96
- React.createElement(MenuItemCheckbox_1.MenuItemCheckbox, { content: "Option 1", name: "Option 1" }),
96
+ React.createElement(MenuItemCheckbox_1.MenuItemCheckbox, { name: "Option 1" }, "Option 1"),
97
97
  React.createElement(MenuDivider_1.MenuDivider, null),
98
- React.createElement(MenuItemCheckbox_1.MenuItemCheckbox, { content: "Option 2", name: "Option 2" })))))
98
+ React.createElement(MenuItemCheckbox_1.MenuItemCheckbox, { name: "Option 2" }, "Option 2")))))
99
99
  .toJSON();
100
100
  expect(tree).toMatchSnapshot();
101
101
  });
@@ -106,13 +106,13 @@ describe('Checkbox component tests', function () {
106
106
  React.createElement(button_1.ButtonV1, null, "Default")),
107
107
  React.createElement(MenuPopover_1.default, null,
108
108
  React.createElement(MenuList_1.MenuList, null,
109
- React.createElement(MenuItem_1.MenuItem, { content: "Option 1" }),
109
+ React.createElement(MenuItem_1.MenuItem, null, "Option 1"),
110
110
  React.createElement(Menu_1.Menu, null,
111
111
  React.createElement(MenuTrigger_1.default, null,
112
- React.createElement(MenuItem_1.MenuItem, { content: "Option 2" })),
112
+ React.createElement(MenuItem_1.MenuItem, null, "Option 2")),
113
113
  React.createElement(MenuPopover_1.default, null,
114
114
  React.createElement(MenuList_1.MenuList, null,
115
- React.createElement(MenuItem_1.MenuItem, { content: "Option 1" }))))))))
115
+ React.createElement(MenuItem_1.MenuItem, null, "Option 1"))))))))
116
116
  .toJSON();
117
117
  expect(tree).toMatchSnapshot();
118
118
  });
@@ -124,7 +124,7 @@ describe('Menu rerender tests', function () {
124
124
  React.createElement(button_1.ButtonV1, null, "Rerender twice")),
125
125
  React.createElement(MenuPopover_1.default, null,
126
126
  React.createElement(MenuList_1.MenuList, null,
127
- React.createElement(MenuItem_1.MenuItem, { content: "Option 1" }))))); }, 3);
127
+ React.createElement(MenuItem_1.MenuItem, null, "Option 1"))))); }, 3);
128
128
  });
129
129
  it('Menu re-renders correctly with style', function () {
130
130
  var style = { backgroundColor: 'black' };
@@ -133,7 +133,7 @@ describe('Menu rerender tests', function () {
133
133
  React.createElement(button_1.ButtonV1, { style: style }, "Rerender twice")),
134
134
  React.createElement(MenuPopover_1.default, null,
135
135
  React.createElement(MenuList_1.MenuList, null,
136
- React.createElement(MenuItem_1.MenuItem, { content: "Option 1" }))))); }, 3);
136
+ React.createElement(MenuItem_1.MenuItem, null, "Option 1"))))); }, 3);
137
137
  });
138
138
  it('Menu re-renders correctly with accessibilityAction', function () {
139
139
  var action = [{ name: 'Expand' }];
@@ -142,7 +142,7 @@ describe('Menu rerender tests', function () {
142
142
  React.createElement(button_1.ButtonV1, null, "Rerender twice")),
143
143
  React.createElement(MenuPopover_1.default, null,
144
144
  React.createElement(MenuList_1.MenuList, null,
145
- React.createElement(MenuItem_1.MenuItem, { accessibilityActions: action, content: "Option 1" }))))); }, 3);
145
+ React.createElement(MenuItem_1.MenuItem, { accessibilityActions: action }, "Option 1"))))); }, 3);
146
146
  });
147
147
  });
148
148
  //# sourceMappingURL=Menu.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.test.js","sourceRoot":"","sources":["../../src/__tests__/Menu.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Menu.test.js","sourceRoot":"","sources":["../../src/__tests__/Menu.test.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- export declare const delayHover: number;
1
+ export declare const hoverDelayDefault: number;
2
2
  export declare const isCloseOnHoverOutEnabled: boolean;
3
3
  //# sourceMappingURL=consts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,QAGrB,CAAC;AAEH,eAAO,MAAM,wBAAwB,SAAmC,CAAC"}
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,QAG5B,CAAC;AAEH,eAAO,MAAM,wBAAwB,SAAmC,CAAC"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isCloseOnHoverOutEnabled = exports.delayHover = void 0;
3
+ exports.isCloseOnHoverOutEnabled = exports.hoverDelayDefault = void 0;
4
4
  var react_native_1 = require("react-native");
5
- exports.delayHover = react_native_1.Platform.select({
5
+ exports.hoverDelayDefault = react_native_1.Platform.select({
6
6
  macos: 100,
7
7
  default: 500, // win32
8
8
  });
@@ -1 +1 @@
1
- {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":";;;AAAA,6CAAwC;AAE3B,QAAA,UAAU,GAAG,uBAAQ,CAAC,MAAM,CAAC;IACxC,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,GAAG,EAAE,QAAQ;CACvB,CAAC,CAAC;AAEU,QAAA,wBAAwB,GAAG,uBAAQ,CAAC,EAAE,KAAM,OAAe,CAAC"}
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":";;;AAAA,6CAAwC;AAE3B,QAAA,iBAAiB,GAAG,uBAAQ,CAAC,MAAM,CAAC;IAC/C,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,GAAG,EAAE,QAAQ;CACvB,CAAC,CAAC;AAEU,QAAA,wBAAwB,GAAG,uBAAQ,CAAC,EAAE,KAAM,OAAe,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui-react-native/menu",
3
- "version": "0.14.8",
3
+ "version": "0.15.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",
@@ -5,9 +5,29 @@ import type { MenuListProps } from '../MenuList/MenuList.types';
5
5
  export const menuName = 'Menu';
6
6
 
7
7
  export interface MenuProps extends MenuListProps {
8
+ /**
9
+ * Whether the popup is open on mount
10
+ */
8
11
  defaultOpen?: boolean;
12
+
13
+ /**
14
+ * How much delay to have between hover in and showing the menu, in ms.
15
+ */
16
+ hoverDelay?: number;
17
+
18
+ /**
19
+ * Whether the popup is open
20
+ */
9
21
  open?: boolean;
22
+
23
+ /**
24
+ * Call back when the component requests to change value
25
+ */
10
26
  onOpenChange?: (e: InteractionEvent, isOpen: boolean) => void;
27
+
28
+ /*
29
+ * Opens the menu on hovering over the trigger
30
+ */
11
31
  openOnHover?: boolean;
12
32
  }
13
33
 
@@ -1,11 +1,12 @@
1
1
  /** @jsx withSlots */
2
2
  import { I18nManager, View } from 'react-native';
3
3
  import { SvgXml } from 'react-native-svg';
4
- import { compose, mergeProps, UseSlots, withSlots } from '@fluentui-react-native/framework';
4
+ import { compose, memoize, mergeProps, UseSlots, withSlots } from '@fluentui-react-native/framework';
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
8
  import { stylingSettings } from './MenuItem.styling';
9
+ import React from 'react';
9
10
 
10
11
  export const MenuItem = compose<MenuItemType>({
11
12
  displayName: menuItemName,
@@ -20,8 +21,8 @@ export const MenuItem = compose<MenuItemType>({
20
21
  const menuItem = useMenuItem(userProps);
21
22
  const Slots = useSlots(userProps, (layer): boolean => menuItem.state[layer] || userProps[layer]);
22
23
 
23
- return (final: MenuItemProps) => {
24
- const mergedProps = mergeProps(menuItem.props, final);
24
+ return (final: MenuItemProps, children: React.ReactNode) => {
25
+ const { accessibilityLabel, ...mergedProps } = mergeProps(menuItem.props, final);
25
26
  const chevronXml = I18nManager.isRTL
26
27
  ? `
27
28
  <svg>
@@ -32,13 +33,29 @@ export const MenuItem = compose<MenuItemType>({
32
33
  <path fill='currentColor' d='M4.64645 2.14645C4.45118 2.34171 4.45118 2.65829 4.64645 2.85355L7.79289 6L4.64645 9.14645C4.45118 9.34171 4.45118 9.65829 4.64645 9.85355C4.84171 10.0488 5.15829 10.0488 5.35355 9.85355L8.85355 6.35355C9.04882 6.15829 9.04882 5.84171 8.85355 5.64645L5.35355 2.14645C5.15829 1.95118 4.84171 1.95118 4.64645 2.14645Z' />
33
34
  </svg>`;
34
35
 
36
+ // We only automatically support the one child string.
37
+ const label = getAccessibilityLabel(accessibilityLabel, children[0]);
38
+
35
39
  return (
36
- <Slots.root {...mergedProps}>
40
+ <Slots.root {...mergedProps} accessibilityLabel={label}>
37
41
  {menuItem.hasCheckmarks && <Slots.checkmark />}
38
- {mergedProps.content && <Slots.content>{mergedProps.content}</Slots.content>}
42
+ {children && <Slots.content>{children}</Slots.content>}
39
43
  {menuItem.hasSubmenu && <Slots.submenuIndicator xml={chevronXml} />}
40
44
  </Slots.root>
41
45
  );
42
46
  };
43
47
  },
44
48
  });
49
+
50
+ const getAccessibilityLabelWorker = (accessibilityLabel: string, child: React.ReactNode) => {
51
+ if (accessibilityLabel !== undefined) {
52
+ return accessibilityLabel;
53
+ }
54
+
55
+ if (typeof child === 'string') {
56
+ return child;
57
+ }
58
+
59
+ return '';
60
+ };
61
+ export const getAccessibilityLabel = memoize(getAccessibilityLabelWorker);
@@ -9,11 +9,29 @@ import { FontTokens, IBorderTokens, IColorTokens, LayoutTokens } from '@fluentui
9
9
  export const menuItemName = 'MenuItem';
10
10
 
11
11
  export interface MenuItemTokens extends LayoutTokens, FontTokens, IBorderTokens, IColorTokens {
12
+ /**
13
+ * Height and width in pixels of the space that is reserved to align the item's text with other items which have checkmarks
14
+ */
12
15
  checkmarkSize?: number;
16
+
17
+ /**
18
+ * Amount of space in pixels around the indicator that shows that an item has a submenu
19
+ */
13
20
  submenuIndicatorPadding?: number;
21
+
22
+ /**
23
+ * Height and width in pixels of the indicator that shows that an item has a submenu
24
+ */
14
25
  submenuIndicatorSize?: number;
26
+
27
+ /**
28
+ * Space between parts of the item control in pixels
29
+ */
15
30
  gap?: number;
16
31
 
32
+ /**
33
+ * States of the item control
34
+ */
17
35
  disabled?: MenuItemTokens;
18
36
  focused?: MenuItemTokens;
19
37
  hovered?: MenuItemTokens;
@@ -21,13 +39,6 @@ export interface MenuItemTokens extends LayoutTokens, FontTokens, IBorderTokens,
21
39
  }
22
40
 
23
41
  export interface MenuItemProps extends Omit<IWithPressableOptions<ViewProps>, 'onPress'> {
24
- content: string;
25
-
26
- /**
27
- * Applies disabled styles to menu item but remains focusable
28
- */
29
- disabled?: boolean;
30
-
31
42
  /**
32
43
  * A RefObject to access the IButton interface. Use this to access the public methods and properties of the component.
33
44
  */
@@ -68,7 +68,6 @@ export const useMenuItem = (props: MenuItemProps): MenuItemState => {
68
68
  accessible: true,
69
69
  accessibilityRole: 'menuitem',
70
70
  onAccessibilityTap: props.onAccessibilityTap || onInvoke,
71
- accessibilityLabel: props.accessibilityLabel || props.content,
72
71
  accessibilityState: getAccessibilityState(disabled, accessibilityState),
73
72
  enableFocusRing: Platform.select({
74
73
  macos: false,
@@ -12,6 +12,8 @@ import {
12
12
  } from './MenuItemCheckbox.types';
13
13
  import { useMenuItemCheckbox } from './useMenuItemCheckbox';
14
14
  import { stylingSettings } from './MenuItemCheckbox.styling';
15
+ import { getAccessibilityLabel } from '../MenuItem/MenuItem';
16
+ import React from 'react';
15
17
 
16
18
  export const MenuItemCheckbox = compose<MenuItemCheckboxType>({
17
19
  displayName: menuItemCheckboxName,
@@ -33,17 +35,19 @@ export const menuItemFinalRender = (
33
35
  menuItem: MenuItemCheckboxState,
34
36
  Slots: Slots<MenuItemCheckboxSlotProps>,
35
37
  ): React.FunctionComponent<MenuItemCheckboxProps> => {
36
- return (final: MenuItemCheckboxProps) => {
37
- const mergedProps = mergeProps(menuItem.props, final);
38
+ return (final: MenuItemCheckboxProps, children: React.ReactNode) => {
39
+ const { accessibilityLabel, ...mergedProps } = mergeProps(menuItem.props, final);
38
40
  const checkmarkXml = `
39
41
  <svg>
40
42
  <path fill='currentColor' d='M9.85355 3.14645C10.0488 3.34171 10.0488 3.65829 9.85355 3.85355L5.35355 8.35355C5.15829 8.54882 4.84171 8.54882 4.64645 8.35355L2.64645 6.35355C2.45118 6.15829 2.45118 5.84171 2.64645 5.64645C2.84171 5.45118 3.15829 5.45118 3.35355 5.64645L5 7.29289L9.14645 3.14645C9.34171 2.95118 9.65829 2.95118 9.85355 3.14645Z' />
41
43
  </svg>`;
42
44
 
45
+ const label = getAccessibilityLabel(accessibilityLabel, children[0]);
46
+
43
47
  return (
44
- <Slots.root {...mergedProps}>
48
+ <Slots.root {...mergedProps} accessibilityLabel={label}>
45
49
  <Slots.checkmark xml={checkmarkXml} />
46
- {mergedProps.content && <Slots.content>{mergedProps.content}</Slots.content>}
50
+ {children && <Slots.content>{children}</Slots.content>}
47
51
  </Slots.root>
48
52
  );
49
53
  };
@@ -9,12 +9,34 @@ import { FontTokens, IBorderTokens, IColorTokens, LayoutTokens } from '@fluentui
9
9
  export const menuItemCheckboxName = 'MenuItemCheckbox';
10
10
 
11
11
  export interface MenuItemCheckboxTokens extends LayoutTokens, FontTokens, IBorderTokens, IColorTokens {
12
+ /**
13
+ * Color of the checkmark icon
14
+ */
12
15
  checkmarkColor?: ColorValue;
16
+
17
+ /**
18
+ * Amount of space in pixels around the checkmark icon
19
+ */
13
20
  checkmarkPadding?: number;
21
+
22
+ /**
23
+ * Height and width in pixels of the checkmark icon
24
+ */
14
25
  checkmarkSize?: number;
26
+
27
+ /**
28
+ * Visibility of the checkmark icon from 0 to 1
29
+ */
15
30
  checkmarkVisibility?: number;
31
+
32
+ /**
33
+ * Space between parts of the item control in pixels
34
+ */
16
35
  gap?: number;
17
36
 
37
+ /**
38
+ * States of the item control
39
+ */
18
40
  checked?: MenuItemCheckboxTokens;
19
41
  disabled?: MenuItemCheckboxTokens;
20
42
  focused?: MenuItemCheckboxTokens;
@@ -23,13 +45,6 @@ export interface MenuItemCheckboxTokens extends LayoutTokens, FontTokens, IBorde
23
45
  }
24
46
 
25
47
  export interface MenuItemCheckboxProps extends Omit<IWithPressableOptions<ViewProps>, 'onPress'> {
26
- content: string;
27
-
28
- /**
29
- * Applies disabled styles to menu item but remains focusable
30
- */
31
- disabled?: boolean;
32
-
33
48
  /**
34
49
  * A RefObject to access the IButton interface. Use this to access the public methods and properties of the component.
35
50
  */
@@ -54,6 +54,7 @@ export const useMenuCheckboxInteraction = (
54
54
  const defaultComponentRef = React.useRef(null);
55
55
  const {
56
56
  accessibilityActions,
57
+ accessibilityLabel,
57
58
  accessibilityState,
58
59
  componentRef = defaultComponentRef,
59
60
  disabled,
@@ -97,7 +98,7 @@ export const useMenuCheckboxInteraction = (
97
98
  ...pressable.props,
98
99
  accessible: true,
99
100
  accessibilityActions: accessibilityActionsProp,
100
- accessibilityLabel: props.accessibilityLabel || props.content,
101
+ accessibilityLabel,
101
102
  accessibilityRole: 'menuitem',
102
103
  accessibilityState: getAccessibilityState(disabled, state.checked, accessibilityState),
103
104
  enableFocusRing: Platform.select({
@@ -6,13 +6,33 @@ import React from 'react';
6
6
  export const menuListName = 'MenuList';
7
7
 
8
8
  export interface MenuListTokens extends LayoutTokens, IBackgroundColorTokens {
9
+ /**
10
+ * Space between items in pixels
11
+ */
9
12
  gap?: number;
10
13
  }
11
14
 
12
15
  export interface MenuListProps extends Omit<IViewProps, 'onPress'> {
16
+ /**
17
+ * Array of all checked items
18
+ */
13
19
  checked?: string[];
20
+
21
+ /**
22
+ * Default items to be checked on mount
23
+ */
14
24
  defaultChecked?: string[];
25
+
26
+ /**
27
+ * States that menu items can contain selectable items and reserves space for item alignment
28
+ */
15
29
  hasCheckmarks?: boolean;
30
+
31
+ /**
32
+ * Callback when checked items change
33
+ *
34
+ * @param checked Array of all currently checked values
35
+ */
16
36
  onCheckedChange?: (e: InteractionEvent, checked: string[]) => void;
17
37
  }
18
38
 
@@ -3,7 +3,7 @@ import { InteractionEvent } from '@fluentui-react-native/interactive-hooks';
3
3
  import { MenuTriggerState } from './MenuTrigger.types';
4
4
  import { AccessibilityActionEvent, AccessibilityActionName, Platform } from 'react-native';
5
5
  import React from 'react';
6
- import { delayHover, isCloseOnHoverOutEnabled } from '../consts';
6
+ import { hoverDelayDefault, isCloseOnHoverOutEnabled } from '../consts';
7
7
 
8
8
  const accessibilityActions =
9
9
  Platform.OS === ('win32' as any) ? [{ name: 'Expand' as AccessibilityActionName }, { name: 'Collapse' as AccessibilityActionName }] : [];
@@ -12,7 +12,16 @@ const collapsedState = { expanded: false };
12
12
 
13
13
  export const useMenuTrigger = (): MenuTriggerState => {
14
14
  const context = useMenuContext();
15
- const { open, openOnHover, popoverHoverOutTimer, setOpen, setTriggerHoverOutTimer, triggerHoverOutTimer, triggerRef } = context;
15
+ const {
16
+ hoverDelay = hoverDelayDefault,
17
+ open,
18
+ openOnHover,
19
+ popoverHoverOutTimer,
20
+ setOpen,
21
+ setTriggerHoverOutTimer,
22
+ triggerHoverOutTimer,
23
+ triggerRef,
24
+ } = context;
16
25
 
17
26
  const accessibilityState = open ? expandedState : collapsedState;
18
27
 
@@ -41,10 +50,10 @@ export const useMenuTrigger = (): MenuTriggerState => {
41
50
  e.persist();
42
51
  setTimeout(() => {
43
52
  setOpen(e, true /* isOpen */);
44
- }, delayHover);
53
+ }, hoverDelay);
45
54
  }
46
55
  },
47
- [openOnHover, setOpen, triggerHoverOutTimer, popoverHoverOutTimer],
56
+ [hoverDelay, openOnHover, setOpen, triggerHoverOutTimer, popoverHoverOutTimer],
48
57
  );
49
58
 
50
59
  const onHoverOut = React.useCallback(
@@ -53,11 +62,11 @@ export const useMenuTrigger = (): MenuTriggerState => {
53
62
  e.persist();
54
63
  const timer = setTimeout(() => {
55
64
  setOpen(e, false /* isOpen */);
56
- }, delayHover);
65
+ }, hoverDelay);
57
66
  setTriggerHoverOutTimer(timer);
58
67
  }
59
68
  },
60
- [openOnHover, setOpen, setTriggerHoverOutTimer],
69
+ [hoverDelay, openOnHover, setOpen, setTriggerHoverOutTimer],
61
70
  );
62
71
 
63
72
  const onClick = React.useCallback(
@@ -22,7 +22,7 @@ describe('Checkbox component tests', () => {
22
22
  </MenuTrigger>
23
23
  <MenuPopover>
24
24
  <MenuList>
25
- <MenuItem content="Option 1" />
25
+ <MenuItem>Option 1</MenuItem>
26
26
  </MenuList>
27
27
  </MenuPopover>
28
28
  </Menu>,
@@ -40,7 +40,7 @@ describe('Checkbox component tests', () => {
40
40
  </MenuTrigger>
41
41
  <MenuPopover>
42
42
  <MenuList>
43
- <MenuItem content="Option 1" />
43
+ <MenuItem>Option 1</MenuItem>
44
44
  </MenuList>
45
45
  </MenuPopover>
46
46
  </Menu>,
@@ -58,8 +58,8 @@ describe('Checkbox component tests', () => {
58
58
  </MenuTrigger>
59
59
  <MenuPopover>
60
60
  <MenuList>
61
- <MenuItem content="Option 1" />
62
- <MenuItem disabled content="Option 2" />
61
+ <MenuItem>Option 1</MenuItem>
62
+ <MenuItem disabled>Option 2</MenuItem>
63
63
  </MenuList>
64
64
  </MenuPopover>
65
65
  </Menu>,
@@ -77,9 +77,11 @@ describe('Checkbox component tests', () => {
77
77
  </MenuTrigger>
78
78
  <MenuPopover>
79
79
  <MenuList>
80
- <MenuItemCheckbox content="Option 1" name="Option 1" />
80
+ <MenuItemCheckbox name="Option 1">Option 1</MenuItemCheckbox>
81
81
  <MenuDivider />
82
- <MenuItemCheckbox disabled content="Option 2" name="Option 2" />
82
+ <MenuItemCheckbox disabled name="Option 2">
83
+ Option 2
84
+ </MenuItemCheckbox>
83
85
  </MenuList>
84
86
  </MenuPopover>
85
87
  </Menu>,
@@ -97,8 +99,8 @@ describe('Checkbox component tests', () => {
97
99
  </MenuTrigger>
98
100
  <MenuPopover>
99
101
  <MenuList>
100
- <MenuItemRadio content="Option 1" name="Option 1" />
101
- <MenuItemRadio content="Option 2" name="Option 2" />
102
+ <MenuItemRadio name="Option 1">Option 1</MenuItemRadio>
103
+ <MenuItemRadio name="Option 2">Option 2</MenuItemRadio>
102
104
  </MenuList>
103
105
  </MenuPopover>
104
106
  </Menu>,
@@ -116,9 +118,9 @@ describe('Checkbox component tests', () => {
116
118
  </MenuTrigger>
117
119
  <MenuPopover>
118
120
  <MenuList>
119
- <MenuItemCheckbox content="Option 1" name="Option 1" />
121
+ <MenuItemCheckbox name="Option 1">Option 1</MenuItemCheckbox>
120
122
  <MenuDivider />
121
- <MenuItemCheckbox content="Option 2" name="Option 2" />
123
+ <MenuItemCheckbox name="Option 2">Option 2</MenuItemCheckbox>
122
124
  </MenuList>
123
125
  </MenuPopover>
124
126
  </Menu>,
@@ -136,9 +138,9 @@ describe('Checkbox component tests', () => {
136
138
  </MenuTrigger>
137
139
  <MenuPopover>
138
140
  <MenuList>
139
- <MenuItemCheckbox content="Option 1" name="Option 1" />
141
+ <MenuItemCheckbox name="Option 1">Option 1</MenuItemCheckbox>
140
142
  <MenuDivider />
141
- <MenuItemCheckbox content="Option 2" name="Option 2" />
143
+ <MenuItemCheckbox name="Option 2">Option 2</MenuItemCheckbox>
142
144
  </MenuList>
143
145
  </MenuPopover>
144
146
  </Menu>,
@@ -156,14 +158,14 @@ describe('Checkbox component tests', () => {
156
158
  </MenuTrigger>
157
159
  <MenuPopover>
158
160
  <MenuList>
159
- <MenuItem content="Option 1" />
161
+ <MenuItem>Option 1</MenuItem>
160
162
  <Menu>
161
163
  <MenuTrigger>
162
- <MenuItem content="Option 2" />
164
+ <MenuItem>Option 2</MenuItem>
163
165
  </MenuTrigger>
164
166
  <MenuPopover>
165
167
  <MenuList>
166
- <MenuItem content="Option 1" />
168
+ <MenuItem>Option 1</MenuItem>
167
169
  </MenuList>
168
170
  </MenuPopover>
169
171
  </Menu>
@@ -186,7 +188,7 @@ describe('Menu rerender tests', () => {
186
188
  </MenuTrigger>
187
189
  <MenuPopover>
188
190
  <MenuList>
189
- <MenuItem content="Option 1" />
191
+ <MenuItem>Option 1</MenuItem>
190
192
  </MenuList>
191
193
  </MenuPopover>
192
194
  </Menu>
@@ -205,7 +207,7 @@ describe('Menu rerender tests', () => {
205
207
  </MenuTrigger>
206
208
  <MenuPopover>
207
209
  <MenuList>
208
- <MenuItem content="Option 1" />
210
+ <MenuItem>Option 1</MenuItem>
209
211
  </MenuList>
210
212
  </MenuPopover>
211
213
  </Menu>
@@ -224,7 +226,7 @@ describe('Menu rerender tests', () => {
224
226
  </MenuTrigger>
225
227
  <MenuPopover>
226
228
  <MenuList>
227
- <MenuItem accessibilityActions={action} content="Option 1" />
229
+ <MenuItem accessibilityActions={action}>Option 1</MenuItem>
228
230
  </MenuList>
229
231
  </MenuPopover>
230
232
  </Menu>