@fluentui-react-native/menu 0.14.2 → 0.14.5

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 (88) hide show
  1. package/CHANGELOG.json +64 -1
  2. package/CHANGELOG.md +29 -2
  3. package/SPEC.md +5 -6
  4. package/lib/Menu/Menu.types.d.ts +2 -1
  5. package/lib/Menu/Menu.types.d.ts.map +1 -1
  6. package/lib/Menu/useMenu.d.ts.map +1 -1
  7. package/lib/Menu/useMenu.js +42 -8
  8. package/lib/Menu/useMenu.js.map +1 -1
  9. package/lib/MenuItem/useMenuItem.d.ts.map +1 -1
  10. package/lib/MenuItem/useMenuItem.js +4 -1
  11. package/lib/MenuItem/useMenuItem.js.map +1 -1
  12. package/lib/MenuItemRadio/useMenuItemRadio.d.ts.map +1 -1
  13. package/lib/MenuItemRadio/useMenuItemRadio.js +9 -4
  14. package/lib/MenuItemRadio/useMenuItemRadio.js.map +1 -1
  15. package/lib/MenuList/MenuList.js +1 -1
  16. package/lib/MenuList/MenuList.js.map +1 -1
  17. package/lib/MenuList/MenuList.types.d.ts +10 -5
  18. package/lib/MenuList/MenuList.types.d.ts.map +1 -1
  19. package/lib/MenuList/useMenuList.d.ts.map +1 -1
  20. package/lib/MenuList/useMenuList.js +73 -26
  21. package/lib/MenuList/useMenuList.js.map +1 -1
  22. package/lib/MenuList/useMenuListContextValue.js +1 -1
  23. package/lib/MenuList/useMenuListContextValue.js.map +1 -1
  24. package/lib/MenuPopover/useMenuPopover.d.ts.map +1 -1
  25. package/lib/MenuPopover/useMenuPopover.js +3 -1
  26. package/lib/MenuPopover/useMenuPopover.js.map +1 -1
  27. package/lib/MenuTrigger/useMenuTrigger.d.ts.map +1 -1
  28. package/lib/MenuTrigger/useMenuTrigger.js +2 -0
  29. package/lib/MenuTrigger/useMenuTrigger.js.map +1 -1
  30. package/lib/__tests__/Menu.test.js +2 -2
  31. package/lib/__tests__/Menu.test.js.map +1 -1
  32. package/lib/context/menuContext.d.ts.map +1 -1
  33. package/lib/context/menuContext.js +3 -2
  34. package/lib/context/menuContext.js.map +1 -1
  35. package/lib/context/menuListContext.d.ts +6 -4
  36. package/lib/context/menuListContext.d.ts.map +1 -1
  37. package/lib/context/menuListContext.js +2 -1
  38. package/lib/context/menuListContext.js.map +1 -1
  39. package/lib-commonjs/Menu/Menu.types.d.ts +2 -1
  40. package/lib-commonjs/Menu/Menu.types.d.ts.map +1 -1
  41. package/lib-commonjs/Menu/useMenu.d.ts.map +1 -1
  42. package/lib-commonjs/Menu/useMenu.js +42 -8
  43. package/lib-commonjs/Menu/useMenu.js.map +1 -1
  44. package/lib-commonjs/MenuItem/useMenuItem.d.ts.map +1 -1
  45. package/lib-commonjs/MenuItem/useMenuItem.js +4 -1
  46. package/lib-commonjs/MenuItem/useMenuItem.js.map +1 -1
  47. package/lib-commonjs/MenuItemRadio/useMenuItemRadio.d.ts.map +1 -1
  48. package/lib-commonjs/MenuItemRadio/useMenuItemRadio.js +9 -4
  49. package/lib-commonjs/MenuItemRadio/useMenuItemRadio.js.map +1 -1
  50. package/lib-commonjs/MenuList/MenuList.js +1 -1
  51. package/lib-commonjs/MenuList/MenuList.js.map +1 -1
  52. package/lib-commonjs/MenuList/MenuList.types.d.ts +10 -5
  53. package/lib-commonjs/MenuList/MenuList.types.d.ts.map +1 -1
  54. package/lib-commonjs/MenuList/useMenuList.d.ts.map +1 -1
  55. package/lib-commonjs/MenuList/useMenuList.js +74 -27
  56. package/lib-commonjs/MenuList/useMenuList.js.map +1 -1
  57. package/lib-commonjs/MenuList/useMenuListContextValue.js +1 -1
  58. package/lib-commonjs/MenuList/useMenuListContextValue.js.map +1 -1
  59. package/lib-commonjs/MenuPopover/useMenuPopover.d.ts.map +1 -1
  60. package/lib-commonjs/MenuPopover/useMenuPopover.js +3 -1
  61. package/lib-commonjs/MenuPopover/useMenuPopover.js.map +1 -1
  62. package/lib-commonjs/MenuTrigger/useMenuTrigger.d.ts.map +1 -1
  63. package/lib-commonjs/MenuTrigger/useMenuTrigger.js +2 -0
  64. package/lib-commonjs/MenuTrigger/useMenuTrigger.js.map +1 -1
  65. package/lib-commonjs/__tests__/Menu.test.js +2 -2
  66. package/lib-commonjs/__tests__/Menu.test.js.map +1 -1
  67. package/lib-commonjs/context/menuContext.d.ts.map +1 -1
  68. package/lib-commonjs/context/menuContext.js +3 -2
  69. package/lib-commonjs/context/menuContext.js.map +1 -1
  70. package/lib-commonjs/context/menuListContext.d.ts +6 -4
  71. package/lib-commonjs/context/menuListContext.d.ts.map +1 -1
  72. package/lib-commonjs/context/menuListContext.js +2 -1
  73. package/lib-commonjs/context/menuListContext.js.map +1 -1
  74. package/package.json +4 -4
  75. package/src/Menu/Menu.types.ts +2 -1
  76. package/src/Menu/useMenu.ts +62 -9
  77. package/src/MenuItem/useMenuItem.ts +6 -1
  78. package/src/MenuItemRadio/useMenuItemRadio.ts +11 -3
  79. package/src/MenuList/MenuList.tsx +1 -1
  80. package/src/MenuList/MenuList.types.ts +10 -5
  81. package/src/MenuList/useMenuList.ts +76 -37
  82. package/src/MenuList/useMenuListContextValue.ts +1 -1
  83. package/src/MenuPopover/useMenuPopover.ts +3 -0
  84. package/src/MenuTrigger/useMenuTrigger.ts +2 -0
  85. package/src/__tests__/Menu.test.tsx +2 -2
  86. package/src/__tests__/__snapshots__/Menu.test.tsx.snap +14 -0
  87. package/src/context/menuContext.ts +3 -2
  88. package/src/context/menuListContext.ts +5 -2
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":";;;;AAAA,sDAAwD;AAGxD,6CAA2F;AAC3F,6DAA0B;AAC1B,oCAAiE;AAEjE,IAAM,oBAAoB,GACxB,uBAAQ,CAAC,EAAE,KAAM,OAAe,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAmC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAqC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3I,IAAM,aAAa,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACzC,IAAM,cAAc,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAEpC,IAAM,cAAc,GAAG;IAC5B,IAAM,OAAO,GAAG,IAAA,4BAAc,GAAE,CAAC;IACzB,IAAA,IAAI,GAA4G,OAAO,KAAnH,EAAE,WAAW,GAA+F,OAAO,YAAtG,EAAE,oBAAoB,GAAyE,OAAO,qBAAhF,EAAE,OAAO,GAAgE,OAAO,QAAvE,EAAE,uBAAuB,GAAuC,OAAO,wBAA9C,EAAE,oBAAoB,GAAiB,OAAO,qBAAxB,EAAE,UAAU,GAAK,OAAO,WAAZ,CAAa;IAEhI,IAAM,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC;IAEjE,IAAM,qBAAqB,GAAG,eAAK,CAAC,WAAW,CAC7C,UAAC,CAA2B;QAC1B,IAAI,uBAAQ,CAAC,EAAE,KAAM,OAAe,EAAE;YACpC,QAAQ,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE;gBAChC,KAAK,QAAQ;oBACX,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC9B,MAAM;gBAER,KAAK,UAAU;oBACb,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;oBAC/B,MAAM;aACT;SACF;IACH,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,IAAM,SAAS,GAAG,eAAK,CAAC,WAAW,CACjC,UAAC,CAAmB;QAClB,IAAI,WAAW,EAAE;YACf,YAAY,CAAC,oBAAoB,CAAC,CAAC;YACnC,YAAY,CAAC,oBAAoB,CAAC,CAAC;YACnC,UAAU,CAAC;gBACT,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC,EAAE,mBAAU,CAAC,CAAC;SAChB;IACH,CAAC,EACD,CAAC,WAAW,EAAE,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,CACnE,CAAC;IAEF,IAAM,UAAU,GAAG,eAAK,CAAC,WAAW,CAClC,UAAC,CAAmB;QAClB,IAAI,WAAW,EAAE;YACf,IAAM,KAAK,GAAG,UAAU,CAAC;gBACvB,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;YACjC,CAAC,EAAE,mBAAU,CAAC,CAAC;YACf,uBAAuB,CAAC,KAAK,CAAC,CAAC;SAChC;IACH,CAAC,EACD,CAAC,WAAW,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAChD,CAAC;IAEF,IAAM,OAAO,GAAG,eAAK,CAAC,WAAW,CAC/B,UAAC,CAAmB;QAClB,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,EACD,CAAC,IAAI,EAAE,OAAO,CAAC,CAChB,CAAC;IAEF,OAAO;QACL,KAAK,EAAE;YACL,OAAO,SAAA;YACP,SAAS,WAAA;YACT,UAAU,EAAE,iCAAwB,IAAI,UAAU;YAClD,YAAY,EAAE,UAAU;YACxB,kBAAkB,oBAAA;YAClB,oBAAoB,sBAAA;YACpB,qBAAqB,uBAAA;SACtB;QACD,UAAU,EAAE,OAAO,CAAC,SAAS;KAC9B,CAAC;AACJ,CAAC,CAAC;AAnEW,QAAA,cAAc,kBAmEzB"}
1
+ {"version":3,"file":"useMenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":"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"}
@@ -75,7 +75,7 @@ describe('Checkbox component tests', function () {
75
75
  });
76
76
  it('Menu open checkbox defaultChecked', function () {
77
77
  var tree = renderer
78
- .create(React.createElement(Menu_1.Menu, { open: true, defaultChecked: { 'Option 1': true } },
78
+ .create(React.createElement(Menu_1.Menu, { open: true, defaultChecked: ['Option 1'] },
79
79
  React.createElement(MenuTrigger_1.default, null,
80
80
  React.createElement(button_1.ButtonV1, null, "Open")),
81
81
  React.createElement(MenuPopover_1.default, null,
@@ -88,7 +88,7 @@ describe('Checkbox component tests', function () {
88
88
  });
89
89
  it('Menu open checkbox checked', function () {
90
90
  var tree = renderer
91
- .create(React.createElement(Menu_1.Menu, { open: true, checked: { 'Option 1': true } },
91
+ .create(React.createElement(Menu_1.Menu, { open: true, checked: ['Option 1'] },
92
92
  React.createElement(MenuTrigger_1.default, null,
93
93
  React.createElement(button_1.ButtonV1, null, "Open")),
94
94
  React.createElement(MenuPopover_1.default, null,
@@ -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 +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,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,oBAAoB,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IACtC,oBAAoB,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IACtC,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;IAC1D,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;CAC3D;AAED,eAAO,MAAM,WAAW,iCAUtB,CAAC;AAEH,eAAO,MAAM,YAAY,kCAAuB,CAAC;AACjD,eAAO,MAAM,cAAc,wBAAsC,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,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,oBAAoB,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IACtC,oBAAoB,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IACtC,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;IAC1D,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;CAC3D;AAED,eAAO,MAAM,WAAW,iCAWtB,CAAC;AAEH,eAAO,MAAM,YAAY,kCAAuB,CAAC;AACjD,eAAO,MAAM,cAAc,wBAAsC,CAAC"}
@@ -5,13 +5,14 @@ var tslib_1 = require("tslib");
5
5
  var React = (0, tslib_1.__importStar)(require("react"));
6
6
  exports.MenuContext = React.createContext({
7
7
  isControlled: false,
8
- checked: {},
9
- defaultChecked: {},
8
+ checked: [],
9
+ defaultChecked: [],
10
10
  hasCheckmarks: false,
11
11
  isSubmenu: false,
12
12
  open: false,
13
13
  onCheckedChange: function () { return false; },
14
14
  setOpen: function () { return false; },
15
+ shouldFocusOnContainer: false,
15
16
  triggerRef: null,
16
17
  });
17
18
  exports.MenuProvider = exports.MenuContext.Provider;
@@ -1 +1 @@
1
- {"version":3,"file":"menuContext.js","sourceRoot":"","sources":["../../src/context/menuContext.ts"],"names":[],"mappings":";;;;AAAA,wDAA+B;AAalB,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"}
1
+ {"version":3,"file":"menuContext.js","sourceRoot":"","sources":["../../src/context/menuContext.ts"],"names":[],"mappings":";;;;AAAA,wDAA+B;AAalB,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,sBAAsB,EAAE,KAAK;IAC7B,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"}
@@ -3,8 +3,10 @@ import type { MenuListState } from '../MenuList/MenuList.types';
3
3
  /**
4
4
  * Context shared between Menu and its child components
5
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;
6
+ export declare type MenuListContextValue = Omit<MenuListState, 'props'> & {
7
+ hasCheckmarks: boolean;
8
+ };
9
+ export declare const MenuListContext: React.Context<MenuListContextValue>;
10
+ export declare const MenuListProvider: React.Provider<MenuListContextValue>;
11
+ export declare const useMenuListContext: () => MenuListContextValue;
10
12
  //# sourceMappingURL=menuListContext.d.ts.map
@@ -1 +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"}
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,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG;IAChE,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,eAAe,qCAO1B,CAAC;AAEH,eAAO,MAAM,gBAAgB,sCAA2B,CAAC;AACzD,eAAO,MAAM,kBAAkB,4BAA0C,CAAC"}
@@ -6,9 +6,10 @@ var React = (0, tslib_1.__importStar)(require("react"));
6
6
  exports.MenuListContext = React.createContext({
7
7
  isCheckedControlled: false,
8
8
  checked: {},
9
- defaultChecked: {},
10
9
  hasCheckmarks: false,
11
10
  onCheckedChange: function () { return false; },
11
+ addRadioItem: function () { return false; },
12
+ removeRadioItem: function () { return false; },
12
13
  });
13
14
  exports.MenuListProvider = exports.MenuListContext.Provider;
14
15
  var useMenuListContext = function () { return React.useContext(exports.MenuListContext); };
@@ -1 +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"}
1
+ {"version":3,"file":"menuListContext.js","sourceRoot":"","sources":["../../src/context/menuListContext.ts"],"names":[],"mappings":";;;;AAAA,wDAA+B;AAUlB,QAAA,eAAe,GAAG,KAAK,CAAC,aAAa,CAAuB;IACvE,mBAAmB,EAAE,KAAK;IAC1B,OAAO,EAAE,EAAE;IACX,aAAa,EAAE,KAAK;IACpB,eAAe,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;IAC5B,YAAY,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;IACzB,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui-react-native/menu",
3
- "version": "0.14.2",
3
+ "version": "0.14.5",
4
4
  "description": "A cross-platform Menu component using the Fluent Design System",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -23,10 +23,10 @@
23
23
  },
24
24
  "dependencies": {
25
25
  "@fluentui-react-native/adapters": ">=0.8.5 <1.0.0",
26
- "@fluentui-react-native/callout": ">=0.20.6 <1.0.0",
26
+ "@fluentui-react-native/callout": ">=0.20.7 <1.0.0",
27
27
  "@fluentui-react-native/experimental-text": ">=0.9.0 <1.0.0",
28
28
  "@fluentui-react-native/framework": "0.7.30",
29
- "@fluentui-react-native/interactive-hooks": ">=0.16.2 <1.0.0",
29
+ "@fluentui-react-native/interactive-hooks": ">=0.16.3 <1.0.0",
30
30
  "@fluentui-react-native/theme-tokens": ">=0.18.0 <1.0.0",
31
31
  "@fluentui-react-native/tokens": ">=0.14.0 <1.0.0",
32
32
  "@fluentui-react-native/use-styling": ">=0.8.3 <1.0.0",
@@ -34,7 +34,7 @@
34
34
  "tslib": "^2.3.1"
35
35
  },
36
36
  "devDependencies": {
37
- "@fluentui-react-native/button": ">=0.22.27 <1.0.0",
37
+ "@fluentui-react-native/button": ">=0.22.28 <1.0.0",
38
38
  "@fluentui-react-native/eslint-config-rules": "^0.1.1",
39
39
  "@fluentui-react-native/scripts": "^0.1.1",
40
40
  "@fluentui-react-native/test-tools": ">=0.1.1 <1.0.0",
@@ -15,6 +15,7 @@ export interface MenuState extends MenuProps {
15
15
  isControlled: boolean;
16
16
  isSubmenu: boolean;
17
17
  parentPopoverHoverOutTimer?: NodeJS.Timeout;
18
- setOpen: (e: InteractionEvent, isOpen: boolean) => void;
18
+ setOpen: (e: InteractionEvent, isOpen: boolean, bubble?: boolean) => void;
19
+ shouldFocusOnContainer: boolean;
19
20
  triggerRef: React.RefObject<React.Component>;
20
21
  }
@@ -1,14 +1,24 @@
1
- import { InteractionEvent } from '@fluentui-react-native/interactive-hooks';
1
+ import { InteractionEvent, isMouseEvent } from '@fluentui-react-native/interactive-hooks';
2
2
  import React from 'react';
3
+ import { Platform } from 'react-native';
3
4
  import { useMenuContext } from '../context/menuContext';
4
5
  import { MenuProps, MenuState } from './Menu.types';
5
6
 
7
+ // Due to how events get fired we get double notifications
8
+ // for the same event causing us to immediately reopen
9
+ // a menu when we close it. Adding in a delay to prevent
10
+ // this behavior.
11
+ const delayOpen = 150;
12
+ let lastCloseTimestamp = -1;
13
+
6
14
  export const useMenu = (props: MenuProps): MenuState => {
7
15
  const triggerRef = React.useRef();
8
16
  const context = useMenuContext();
9
17
  const isSubmenu = context.triggerRef !== null;
10
- const isControlled = typeof props.open !== 'undefined';
11
- const [open, setOpen] = useMenuOpenState(isControlled, props);
18
+ const isOpenControlled = typeof props.open !== 'undefined';
19
+ const [open, shouldFocusOnContainer, setOpen] = useMenuOpenState(isOpenControlled, props, context.setOpen);
20
+
21
+ const [checked, onCheckedChange] = useMenuCheckedState(props);
12
22
 
13
23
  // Default behavior for submenu is to open on hover
14
24
  // the ...props line below will override this behavior for a submenu
@@ -26,32 +36,75 @@ export const useMenu = (props: MenuProps): MenuState => {
26
36
  ...props,
27
37
  open,
28
38
  setOpen,
39
+ shouldFocusOnContainer,
40
+ checked,
41
+ onCheckedChange,
29
42
  triggerRef,
30
43
  isSubmenu,
31
- isControlled,
44
+ isControlled: isOpenControlled,
32
45
  parentPopoverHoverOutTimer,
33
46
  };
34
47
  };
35
48
 
36
- const useMenuOpenState = (isControlled: boolean, props: MenuProps): [boolean, (e: InteractionEvent, isOpen: boolean) => void] => {
49
+ const useMenuOpenState = (
50
+ isControlled: boolean,
51
+ props: MenuProps,
52
+ parentSetOpen: (e: InteractionEvent, isOpen: boolean, bubble?: boolean) => void,
53
+ ): [boolean, boolean, (e: InteractionEvent, isOpen: boolean, bubble?: boolean) => void] => {
37
54
  const { defaultOpen, onOpenChange, open } = props;
38
55
  const initialState = typeof defaultOpen !== 'undefined' ? defaultOpen : !!open;
39
56
  const [openInternal, setOpenInternal] = React.useState<boolean>(initialState);
57
+ const [shouldFocusOnContainer, setShouldFocusOnContainer] = React.useState<boolean>(false);
40
58
 
41
59
  const state = isControlled ? open : openInternal;
42
60
 
43
61
  const setOpen = React.useCallback(
44
- (e: InteractionEvent, isOpen: boolean) => {
62
+ (e: InteractionEvent, isOpen: boolean, bubble?: boolean) => {
45
63
  const openPrev = state;
46
- if (!isControlled) {
64
+ if (!isControlled && (!isOpen || lastCloseTimestamp + delayOpen <= Date.now())) {
47
65
  setOpenInternal(isOpen);
48
66
  }
67
+
68
+ if (isOpen && Platform.OS === ('win32' as any) && isMouseEvent(e)) {
69
+ setShouldFocusOnContainer(true);
70
+ }
71
+
72
+ if (!isOpen) {
73
+ setShouldFocusOnContainer(false);
74
+ lastCloseTimestamp = Date.now();
75
+ }
76
+
49
77
  if (onOpenChange && openPrev !== isOpen) {
50
78
  onOpenChange(e, isOpen);
51
79
  }
80
+
81
+ if (bubble && parentSetOpen) {
82
+ parentSetOpen(e, isOpen, bubble);
83
+ }
84
+ },
85
+ [isControlled, state, onOpenChange, setOpenInternal, parentSetOpen],
86
+ );
87
+
88
+ return [state, shouldFocusOnContainer, setOpen];
89
+ };
90
+
91
+ const useMenuCheckedState = (props: MenuProps): [string[], (e: InteractionEvent, checked: string[]) => void] => {
92
+ const { checked, defaultChecked, onCheckedChange: onCheckedChangeOriginal } = props;
93
+ const [checkedInternal, setCheckedInternal] = React.useState(defaultChecked ?? checked ?? []);
94
+
95
+ const isControlled = typeof checked !== 'undefined';
96
+ const state = isControlled ? checked : checkedInternal;
97
+
98
+ const onCheckedChange = React.useCallback(
99
+ (e: InteractionEvent, checked: string[]) => {
100
+ if (!isControlled) {
101
+ setCheckedInternal(checked);
102
+ }
103
+
104
+ onCheckedChangeOriginal?.(e, checked);
52
105
  },
53
- [isControlled, state, onOpenChange, setOpenInternal],
106
+ [isControlled, setCheckedInternal, onCheckedChangeOriginal],
54
107
  );
55
108
 
56
- return [state, setOpen];
109
+ return [state, onCheckedChange];
57
110
  };
@@ -44,7 +44,12 @@ export const useMenuItem = (props: MenuItemProps): MenuItemState => {
44
44
 
45
45
  onClick?.(e);
46
46
  if (!hasSubmenu) {
47
- setOpen(e, false /*isOpen*/);
47
+ const isArrowClose =
48
+ isKeyPressEvent(e) &&
49
+ isInSubmenu &&
50
+ ((isRtl && e.nativeEvent.key === 'ArrowRight') || (!isRtl && e.nativeEvent.key === 'ArrowLeft'));
51
+
52
+ setOpen(e, false /*isOpen*/, !isArrowClose /*bubble*/);
48
53
  }
49
54
  },
50
55
  [disabled, hasSubmenu, isInSubmenu, onClick, setOpen],
@@ -7,17 +7,25 @@ import { useMenuCheckboxInteraction } from '../MenuItemCheckbox/useMenuItemCheck
7
7
  export const useMenuItemRadio = (props: MenuItemCheckboxProps): MenuItemCheckboxState => {
8
8
  const { disabled, name } = props;
9
9
  const context = useMenuListContext();
10
- const checked = context.checked?.[name];
11
10
  const selectRadio = context.selectRadio;
12
11
 
13
12
  const toggleChecked = React.useCallback(
14
13
  (e: InteractionEvent) => {
15
14
  if (!disabled) {
16
- selectRadio(e, name, !checked);
15
+ selectRadio(e, name);
17
16
  }
18
17
  },
19
- [checked, disabled, name, selectRadio],
18
+ [disabled, name, selectRadio],
20
19
  );
21
20
 
21
+ // Explicitly only run on mount and unmount
22
+ React.useEffect(() => {
23
+ context.addRadioItem(name);
24
+
25
+ return () => {
26
+ context.removeRadioItem(name);
27
+ };
28
+ }, []); // eslint-disable-line react-hooks/exhaustive-deps
29
+
22
30
  return useMenuCheckboxInteraction(props, toggleChecked);
23
31
  };
@@ -37,7 +37,7 @@ export const MenuList = compose<MenuListType>({
37
37
  useRender: (userProps: MenuListProps, useSlots: UseSlots<MenuListType>) => {
38
38
  const menuList = useMenuList(userProps);
39
39
  const contextValue = useMenuListContextValue(menuList);
40
- const Slots = useSlots(menuList);
40
+ const Slots = useSlots(menuList.props);
41
41
 
42
42
  return (_final: MenuListProps, children: React.ReactNode) => {
43
43
  return (
@@ -9,15 +9,20 @@ export interface MenuListTokens extends LayoutTokens, IBackgroundColorTokens {
9
9
  }
10
10
 
11
11
  export interface MenuListProps extends Omit<IViewProps, 'onPress'> {
12
- checked?: Record<string, boolean>;
13
- defaultChecked?: Record<string, boolean>;
12
+ checked?: string[];
13
+ defaultChecked?: string[];
14
14
  hasCheckmarks?: boolean;
15
- onCheckedChange?: (e: InteractionEvent, name: string, isChecked: boolean) => void;
15
+ onCheckedChange?: (e: InteractionEvent, checked: string[]) => void;
16
16
  }
17
17
 
18
- export interface MenuListState extends MenuListProps {
18
+ export interface MenuListState extends Omit<MenuListProps, 'checked' | 'onCheckedChange'> {
19
+ props: MenuListProps;
20
+ checked?: Record<string, boolean>;
19
21
  isCheckedControlled: boolean;
20
- selectRadio?: (e: InteractionEvent, name: string, isChecked: boolean) => void;
22
+ onCheckedChange?: (e: InteractionEvent, name: string, isChecked: boolean) => void;
23
+ selectRadio?: (e: InteractionEvent, name: string) => void;
24
+ addRadioItem: (name: string) => void;
25
+ removeRadioItem: (name: string) => void;
21
26
  }
22
27
 
23
28
  export interface MenuListSlotProps {
@@ -3,66 +3,105 @@ import React from 'react';
3
3
  import { useMenuContext } from '../context/menuContext';
4
4
  import { MenuListProps, MenuListState } from './MenuList.types';
5
5
 
6
+ // Track the radio items so we know what to clear selection from when selectRadio is called
7
+ // Purposefully left out of the hook because
8
+ // 1. RadioItems just keeps track of information - changing this array doesn't need to force rerender
9
+ // 2. Keeping them here means these consts are not recreated on every render, which would force rerendering of all children
10
+ const radioItems = [];
11
+ const addRadioItem = (name: string) => {
12
+ radioItems.push(name);
13
+ };
14
+ const removeRadioItem = (name: string) => {
15
+ radioItems.filter((item) => item !== name);
16
+ };
17
+
6
18
  export const useMenuList = (_props: MenuListProps): MenuListState => {
7
19
  const context = useMenuContext();
8
20
 
9
21
  // MenuList v2 needs to be able to be standalone, but this is not in scope for v1
10
22
  // Assuming that checked information will come from parent Menu
11
- const isCheckedControlled = typeof context.checked !== 'undefined';
12
- const [checked, onCheckedChange, selectRadio] = useMenuCheckedState(isCheckedControlled, context);
23
+ const { defaultChecked, onCheckedChange: onCheckedChangeOriginal, checked: checkedOriginal } = context;
13
24
 
14
- return {
15
- ...context,
16
- isCheckedControlled,
17
- checked,
18
- onCheckedChange,
19
- selectRadio,
20
- };
21
- };
25
+ // Convert passed in array to map so that i's easier to look up checked state
26
+ const checkedMap = React.useMemo(() => {
27
+ const state = {};
28
+ if (!checkedOriginal) {
29
+ return state;
30
+ }
31
+
32
+ for (const key of checkedOriginal) {
33
+ state[key] = true;
34
+ }
35
+ return state;
36
+ }, [checkedOriginal]);
37
+
38
+ const [checkedInternal, setCheckedInternal] = React.useState<Record<string, boolean>>(() => {
39
+ if (checkedMap) {
40
+ return checkedMap;
41
+ }
22
42
 
23
- const useMenuCheckedState = (
24
- isControlled: boolean,
25
- props: MenuListProps,
26
- ): [
27
- Record<string, boolean>,
28
- (e: InteractionEvent, name: string, isChecked: boolean) => void,
29
- (e: InteractionEvent, name: string, isChecked: boolean) => void,
30
- ] => {
31
- const { defaultChecked, onCheckedChange, checked } = props;
32
- const initialState = defaultChecked ?? checked ?? {};
33
- const [checkedInternal, setCheckedInternal] = React.useState<Record<string, boolean>>(initialState);
43
+ const initialChecked = defaultChecked ?? [];
44
+ const state = {};
45
+ for (const key of initialChecked) {
46
+ state[key] = true;
47
+ }
48
+ return state;
49
+ });
34
50
 
35
- const state = isControlled ? checked : checkedInternal;
51
+ const isCheckedControlled = typeof checkedOriginal !== 'undefined';
52
+ const checked = isCheckedControlled ? checkedMap : checkedInternal;
36
53
 
37
- const setChecked = React.useCallback(
54
+ const onCheckedChange = React.useCallback(
38
55
  (e: InteractionEvent, name: string, isChecked: boolean) => {
39
- if (!isControlled) {
40
- const curChecked = state;
41
- curChecked[name] = isChecked;
42
- const updatedChecked = { ...curChecked };
56
+ const updatedChecked = { ...checked };
57
+ if (isChecked) {
58
+ updatedChecked[name] = true;
59
+ } else {
60
+ delete updatedChecked[name];
61
+ }
62
+
63
+ if (!isCheckedControlled) {
43
64
  setCheckedInternal(updatedChecked);
44
65
  }
45
66
 
46
- if (onCheckedChange) {
47
- onCheckedChange(e, name, isChecked);
67
+ if (onCheckedChangeOriginal) {
68
+ onCheckedChangeOriginal(e, Object.keys(updatedChecked));
48
69
  }
49
70
  },
50
- [isControlled, state, onCheckedChange, setCheckedInternal],
71
+ [isCheckedControlled, checked, onCheckedChangeOriginal, setCheckedInternal],
51
72
  );
52
73
 
53
74
  const selectRadio = React.useCallback(
54
- (e: InteractionEvent, name: string, isChecked: boolean) => {
55
- if (!isControlled) {
56
- const updatedChecked = { [name]: true };
75
+ (e: InteractionEvent, name: string) => {
76
+ const updatedChecked = {};
77
+ for (const checkedName of Object.keys(checked)) {
78
+ if (!radioItems.includes(checkedName)) {
79
+ // Preserve checked state if non-radio items
80
+ updatedChecked[checkedName] = checked[checkedName];
81
+ }
82
+ }
83
+ updatedChecked[name] = true;
84
+
85
+ if (!isCheckedControlled) {
57
86
  setCheckedInternal(updatedChecked);
58
87
  }
59
88
 
60
- if (onCheckedChange) {
61
- onCheckedChange(e, name, isChecked);
89
+ if (onCheckedChangeOriginal) {
90
+ onCheckedChangeOriginal(e, Object.keys(updatedChecked));
62
91
  }
63
92
  },
64
- [isControlled, onCheckedChange, setCheckedInternal],
93
+ [isCheckedControlled, onCheckedChangeOriginal, setCheckedInternal, checked],
65
94
  );
66
95
 
67
- return [state, setChecked, selectRadio];
96
+ return {
97
+ props: {
98
+ ...context,
99
+ },
100
+ isCheckedControlled,
101
+ checked,
102
+ onCheckedChange,
103
+ selectRadio,
104
+ addRadioItem,
105
+ removeRadioItem,
106
+ };
68
107
  };
@@ -2,5 +2,5 @@ import { MenuListContextValue } from '../context/menuListContext';
2
2
  import { MenuListState } from './MenuList.types';
3
3
 
4
4
  export const useMenuListContextValue = (state: MenuListState): MenuListContextValue => {
5
- return { ...state };
5
+ return { hasCheckmarks: state.props.hasCheckmarks, ...state };
6
6
  };
@@ -18,6 +18,7 @@ export const useMenuPopover = (_props: MenuPopoverProps): MenuPopoverState => {
18
18
  parentPopoverHoverOutTimer,
19
19
  popoverHoverOutTimer,
20
20
  setPopoverHoverOutTimer,
21
+ shouldFocusOnContainer,
21
22
  triggerHoverOutTimer,
22
23
  } = context;
23
24
 
@@ -60,6 +61,8 @@ export const useMenuPopover = (_props: MenuPopoverProps): MenuPopoverState => {
60
61
  innerView: {
61
62
  onMouseEnter,
62
63
  onMouseLeave: isCloseOnHoverOutEnabled && onMouseLeave,
64
+ accessible: shouldFocusOnContainer,
65
+ focusable: shouldFocusOnContainer,
63
66
  },
64
67
  };
65
68
  };
@@ -38,6 +38,7 @@ export const useMenuTrigger = (): MenuTriggerState => {
38
38
  if (openOnHover) {
39
39
  clearTimeout(popoverHoverOutTimer);
40
40
  clearTimeout(triggerHoverOutTimer);
41
+ e.persist();
41
42
  setTimeout(() => {
42
43
  setOpen(e, true /* isOpen */);
43
44
  }, delayHover);
@@ -49,6 +50,7 @@ export const useMenuTrigger = (): MenuTriggerState => {
49
50
  const onHoverOut = React.useCallback(
50
51
  (e: InteractionEvent) => {
51
52
  if (openOnHover) {
53
+ e.persist();
52
54
  const timer = setTimeout(() => {
53
55
  setOpen(e, false /* isOpen */);
54
56
  }, delayHover);
@@ -110,7 +110,7 @@ describe('Checkbox component tests', () => {
110
110
  it('Menu open checkbox defaultChecked', () => {
111
111
  const tree = renderer
112
112
  .create(
113
- <Menu open defaultChecked={{ 'Option 1': true }}>
113
+ <Menu open defaultChecked={['Option 1']}>
114
114
  <MenuTrigger>
115
115
  <Button>Open</Button>
116
116
  </MenuTrigger>
@@ -130,7 +130,7 @@ describe('Checkbox component tests', () => {
130
130
  it('Menu open checkbox checked', () => {
131
131
  const tree = renderer
132
132
  .create(
133
- <Menu open checked={{ 'Option 1': true }}>
133
+ <Menu open checked={['Option 1']}>
134
134
  <MenuTrigger>
135
135
  <Button>Open</Button>
136
136
  </MenuTrigger>
@@ -153,6 +153,8 @@ Array [
153
153
  }
154
154
  >
155
155
  <View
156
+ accessible={false}
157
+ focusable={false}
156
158
  onMouseEnter={[Function]}
157
159
  onMouseLeave={false}
158
160
  >
@@ -371,6 +373,8 @@ Array [
371
373
  }
372
374
  >
373
375
  <View
376
+ accessible={false}
377
+ focusable={false}
374
378
  onMouseEnter={[Function]}
375
379
  onMouseLeave={false}
376
380
  >
@@ -534,6 +538,8 @@ Array [
534
538
  }
535
539
  >
536
540
  <View
541
+ accessible={false}
542
+ focusable={false}
537
543
  onMouseEnter={[Function]}
538
544
  onMouseLeave={false}
539
545
  >
@@ -883,6 +889,8 @@ Array [
883
889
  }
884
890
  >
885
891
  <View
892
+ accessible={false}
893
+ focusable={false}
886
894
  onMouseEnter={[Function]}
887
895
  onMouseLeave={false}
888
896
  >
@@ -1232,6 +1240,8 @@ Array [
1232
1240
  }
1233
1241
  >
1234
1242
  <View
1243
+ accessible={false}
1244
+ focusable={false}
1235
1245
  onMouseEnter={[Function]}
1236
1246
  onMouseLeave={false}
1237
1247
  >
@@ -1581,6 +1591,8 @@ Array [
1581
1591
  }
1582
1592
  >
1583
1593
  <View
1594
+ accessible={false}
1595
+ focusable={false}
1584
1596
  onMouseEnter={[Function]}
1585
1597
  onMouseLeave={false}
1586
1598
  >
@@ -1918,6 +1930,8 @@ Array [
1918
1930
  }
1919
1931
  >
1920
1932
  <View
1933
+ accessible={false}
1934
+ focusable={false}
1921
1935
  onMouseEnter={[Function]}
1922
1936
  onMouseLeave={false}
1923
1937
  >
@@ -13,13 +13,14 @@ export interface MenuContextValue extends MenuState {
13
13
 
14
14
  export const MenuContext = React.createContext<MenuContextValue>({
15
15
  isControlled: false,
16
- checked: {},
17
- defaultChecked: {},
16
+ checked: [],
17
+ defaultChecked: [],
18
18
  hasCheckmarks: false,
19
19
  isSubmenu: false,
20
20
  open: false,
21
21
  onCheckedChange: () => false,
22
22
  setOpen: () => false,
23
+ shouldFocusOnContainer: false,
23
24
  triggerRef: null,
24
25
  });
25
26