@fluentui-react-native/menu 0.9.1 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/CHANGELOG.json +132 -7
  2. package/CHANGELOG.md +42 -2
  3. package/lib/MenuItemCheckbox/MenuItemCheckbox.d.ts +4 -2
  4. package/lib/MenuItemCheckbox/MenuItemCheckbox.d.ts.map +1 -1
  5. package/lib/MenuItemCheckbox/MenuItemCheckbox.js +11 -8
  6. package/lib/MenuItemCheckbox/MenuItemCheckbox.js.map +1 -1
  7. package/lib/MenuItemCheckbox/useMenuItemCheckbox.d.ts +10 -0
  8. package/lib/MenuItemCheckbox/useMenuItemCheckbox.d.ts.map +1 -1
  9. package/lib/MenuItemCheckbox/useMenuItemCheckbox.js +28 -14
  10. package/lib/MenuItemCheckbox/useMenuItemCheckbox.js.map +1 -1
  11. package/lib/MenuItemRadio/MenuItemRadio.d.ts +4 -0
  12. package/lib/MenuItemRadio/MenuItemRadio.d.ts.map +1 -0
  13. package/lib/MenuItemRadio/MenuItemRadio.js +12 -0
  14. package/lib/MenuItemRadio/MenuItemRadio.js.map +1 -0
  15. package/lib/MenuItemRadio/useMenuItemRadio.d.ts +3 -0
  16. package/lib/MenuItemRadio/useMenuItemRadio.d.ts.map +1 -0
  17. package/lib/MenuItemRadio/useMenuItemRadio.js +15 -0
  18. package/lib/MenuItemRadio/useMenuItemRadio.js.map +1 -0
  19. package/lib/MenuList/MenuList.d.ts +0 -1
  20. package/lib/MenuList/MenuList.d.ts.map +1 -1
  21. package/lib/MenuList/MenuList.js +23 -5
  22. package/lib/MenuList/MenuList.js.map +1 -1
  23. package/lib/MenuList/MenuList.styling.d.ts.map +1 -1
  24. package/lib/MenuList/MenuList.styling.js +2 -1
  25. package/lib/MenuList/MenuList.styling.js.map +1 -1
  26. package/lib/MenuList/MenuList.types.d.ts +5 -1
  27. package/lib/MenuList/MenuList.types.d.ts.map +1 -1
  28. package/lib/MenuList/MenuListTokens.d.ts.map +1 -1
  29. package/lib/MenuList/MenuListTokens.js +1 -0
  30. package/lib/MenuList/MenuListTokens.js.map +1 -1
  31. package/lib/MenuList/useMenuList.d.ts.map +1 -1
  32. package/lib/MenuList/useMenuList.js +13 -3
  33. package/lib/MenuList/useMenuList.js.map +1 -1
  34. package/lib/MenuList/{useMenuContextValue.d.ts → useMenuListContextValue.d.ts} +1 -1
  35. package/lib/MenuList/useMenuListContextValue.d.ts.map +1 -0
  36. package/lib/MenuList/{useMenuContextValue.js → useMenuListContextValue.js} +1 -1
  37. package/lib/MenuList/useMenuListContextValue.js.map +1 -0
  38. package/lib/MenuPopover/MenuPopover.d.ts.map +1 -1
  39. package/lib/MenuPopover/MenuPopover.js +1 -1
  40. package/lib/MenuPopover/MenuPopover.js.map +1 -1
  41. package/lib/MenuPopover/MenuPopover.types.d.ts +2 -0
  42. package/lib/MenuPopover/MenuPopover.types.d.ts.map +1 -1
  43. package/lib/MenuPopover/useMenuPopover.d.ts.map +1 -1
  44. package/lib/MenuPopover/useMenuPopover.js +6 -1
  45. package/lib/MenuPopover/useMenuPopover.js.map +1 -1
  46. package/lib/MenuTrigger/useMenuTrigger.d.ts +3 -0
  47. package/lib/MenuTrigger/useMenuTrigger.d.ts.map +1 -1
  48. package/lib/MenuTrigger/useMenuTrigger.js +11 -1
  49. package/lib/MenuTrigger/useMenuTrigger.js.map +1 -1
  50. package/lib/index.d.ts +1 -0
  51. package/lib/index.d.ts.map +1 -1
  52. package/lib/index.js +1 -0
  53. package/lib/index.js.map +1 -1
  54. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.d.ts +4 -2
  55. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.d.ts.map +1 -1
  56. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.js +12 -8
  57. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.js.map +1 -1
  58. package/lib-commonjs/MenuItemCheckbox/useMenuItemCheckbox.d.ts +10 -0
  59. package/lib-commonjs/MenuItemCheckbox/useMenuItemCheckbox.d.ts.map +1 -1
  60. package/lib-commonjs/MenuItemCheckbox/useMenuItemCheckbox.js +31 -16
  61. package/lib-commonjs/MenuItemCheckbox/useMenuItemCheckbox.js.map +1 -1
  62. package/lib-commonjs/MenuItemRadio/MenuItemRadio.d.ts +4 -0
  63. package/lib-commonjs/MenuItemRadio/MenuItemRadio.d.ts.map +1 -0
  64. package/lib-commonjs/MenuItemRadio/MenuItemRadio.js +15 -0
  65. package/lib-commonjs/MenuItemRadio/MenuItemRadio.js.map +1 -0
  66. package/lib-commonjs/MenuItemRadio/useMenuItemRadio.d.ts +3 -0
  67. package/lib-commonjs/MenuItemRadio/useMenuItemRadio.d.ts.map +1 -0
  68. package/lib-commonjs/MenuItemRadio/useMenuItemRadio.js +20 -0
  69. package/lib-commonjs/MenuItemRadio/useMenuItemRadio.js.map +1 -0
  70. package/lib-commonjs/MenuList/MenuList.d.ts +0 -1
  71. package/lib-commonjs/MenuList/MenuList.d.ts.map +1 -1
  72. package/lib-commonjs/MenuList/MenuList.js +22 -4
  73. package/lib-commonjs/MenuList/MenuList.js.map +1 -1
  74. package/lib-commonjs/MenuList/MenuList.styling.d.ts.map +1 -1
  75. package/lib-commonjs/MenuList/MenuList.styling.js +2 -1
  76. package/lib-commonjs/MenuList/MenuList.styling.js.map +1 -1
  77. package/lib-commonjs/MenuList/MenuList.types.d.ts +5 -1
  78. package/lib-commonjs/MenuList/MenuList.types.d.ts.map +1 -1
  79. package/lib-commonjs/MenuList/MenuListTokens.d.ts.map +1 -1
  80. package/lib-commonjs/MenuList/MenuListTokens.js +1 -0
  81. package/lib-commonjs/MenuList/MenuListTokens.js.map +1 -1
  82. package/lib-commonjs/MenuList/useMenuList.d.ts.map +1 -1
  83. package/lib-commonjs/MenuList/useMenuList.js +13 -3
  84. package/lib-commonjs/MenuList/useMenuList.js.map +1 -1
  85. package/lib-commonjs/MenuList/{useMenuContextValue.d.ts → useMenuListContextValue.d.ts} +1 -1
  86. package/lib-commonjs/MenuList/useMenuListContextValue.d.ts.map +1 -0
  87. package/lib-commonjs/MenuList/{useMenuContextValue.js → useMenuListContextValue.js} +1 -1
  88. package/lib-commonjs/MenuList/useMenuListContextValue.js.map +1 -0
  89. package/lib-commonjs/MenuPopover/MenuPopover.d.ts.map +1 -1
  90. package/lib-commonjs/MenuPopover/MenuPopover.js +1 -1
  91. package/lib-commonjs/MenuPopover/MenuPopover.js.map +1 -1
  92. package/lib-commonjs/MenuPopover/MenuPopover.types.d.ts +2 -0
  93. package/lib-commonjs/MenuPopover/MenuPopover.types.d.ts.map +1 -1
  94. package/lib-commonjs/MenuPopover/useMenuPopover.d.ts.map +1 -1
  95. package/lib-commonjs/MenuPopover/useMenuPopover.js +6 -1
  96. package/lib-commonjs/MenuPopover/useMenuPopover.js.map +1 -1
  97. package/lib-commonjs/MenuTrigger/useMenuTrigger.d.ts +3 -0
  98. package/lib-commonjs/MenuTrigger/useMenuTrigger.d.ts.map +1 -1
  99. package/lib-commonjs/MenuTrigger/useMenuTrigger.js +11 -1
  100. package/lib-commonjs/MenuTrigger/useMenuTrigger.js.map +1 -1
  101. package/lib-commonjs/index.d.ts +1 -0
  102. package/lib-commonjs/index.d.ts.map +1 -1
  103. package/lib-commonjs/index.js +3 -1
  104. package/lib-commonjs/index.js.map +1 -1
  105. package/package.json +7 -7
  106. package/src/MenuItemCheckbox/MenuItemCheckbox.tsx +29 -16
  107. package/src/MenuItemCheckbox/useMenuItemCheckbox.ts +39 -20
  108. package/src/MenuItemRadio/MenuItemRadio.tsx +16 -0
  109. package/src/MenuItemRadio/useMenuItemRadio.ts +21 -0
  110. package/src/MenuList/MenuList.styling.ts +2 -1
  111. package/src/MenuList/MenuList.tsx +23 -5
  112. package/src/MenuList/MenuList.types.ts +5 -2
  113. package/src/MenuList/MenuListTokens.ts +1 -0
  114. package/src/MenuList/useMenuList.ts +22 -3
  115. package/src/MenuList/{useMenuContextValue.ts → useMenuListContextValue.ts} +0 -0
  116. package/src/MenuPopover/MenuPopover.tsx +2 -0
  117. package/src/MenuPopover/MenuPopover.types.ts +2 -0
  118. package/src/MenuPopover/useMenuPopover.ts +7 -1
  119. package/src/MenuTrigger/useMenuTrigger.ts +13 -1
  120. package/src/index.ts +1 -0
  121. package/lib/MenuList/useMenuContextValue.d.ts.map +0 -1
  122. package/lib/MenuList/useMenuContextValue.js.map +0 -1
  123. package/lib-commonjs/MenuList/useMenuContextValue.d.ts.map +0 -1
  124. package/lib-commonjs/MenuList/useMenuContextValue.js.map +0 -1
@@ -7,6 +7,8 @@ export interface MenuPopoverProps extends Omit<IViewProps, 'onPress'> {}
7
7
 
8
8
  export interface MenuPopoverState {
9
9
  dismissBehaviors: DismissBehaviors[];
10
+ doNotTakePointerCapture: boolean;
10
11
  onDismiss: () => void;
12
+ setInitialFocus: boolean;
11
13
  triggerRef: React.RefObject<React.Component>;
12
14
  }
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { Platform } from 'react-native';
2
3
  import { DismissBehaviors } from '@fluentui-react-native/callout';
3
4
  import { useMenuContext } from '../context/menuContext';
4
5
  import { MenuPopoverProps, MenuPopoverState } from './MenuPopover.types';
@@ -13,5 +14,10 @@ export const useMenuPopover = (_props: MenuPopoverProps): MenuPopoverState => {
13
14
  ? (['preventDismissOnKeyDown', 'preventDismissOnClickOutside'] as DismissBehaviors[])
14
15
  : undefined;
15
16
 
16
- return { triggerRef, onDismiss, dismissBehaviors };
17
+ // Initial focus behavior differs per platform, Windows platforms move focus
18
+ // automatically onto first element of Callout
19
+ const setInitialFocus = Platform.OS === ('win32' as any) || Platform.OS === 'windows';
20
+ const doNotTakePointerCapture = context.openOnHover;
21
+
22
+ return { triggerRef, onDismiss, dismissBehaviors, doNotTakePointerCapture, setInitialFocus };
17
23
  };
@@ -1,6 +1,7 @@
1
1
  import { useMenuContext } from '../context/menuContext';
2
2
  import { InteractionEvent } from '@fluentui-react-native/interactive-hooks';
3
3
  import { MenuTriggerProps } from './MenuTrigger.types';
4
+ import { Platform } from 'react-native';
4
5
 
5
6
  export const useMenuTrigger = (_props: MenuTriggerProps) => {
6
7
  const context = useMenuContext();
@@ -10,15 +11,26 @@ export const useMenuTrigger = (_props: MenuTriggerProps) => {
10
11
  const openOnHover = context.openOnHover;
11
12
  const triggerRef = context.triggerRef;
12
13
 
14
+ const delayHover = Platform.select({
15
+ macos: 100,
16
+ default: 500, // win32
17
+ });
18
+
13
19
  const onHoverIn = (e: InteractionEvent) => {
14
20
  if (openOnHover) {
15
21
  setOpen(e, true /* isOpen */);
16
22
  }
17
23
  };
18
24
 
25
+ const onHoverOut = (e: InteractionEvent) => {
26
+ if (openOnHover) {
27
+ setOpen(e, false /* isOpen */);
28
+ }
29
+ };
30
+
19
31
  const onClick = (e: InteractionEvent) => {
20
32
  setOpen(e, !open);
21
33
  };
22
34
 
23
- return { onClick, onHoverIn, componentRef: triggerRef };
35
+ return { onClick, onHoverIn, onHoverOut, componentRef: triggerRef, delayHoverIn: delayHover, delayHoverOut: delayHover };
24
36
  };
package/src/index.ts CHANGED
@@ -3,5 +3,6 @@ export { MenuTrigger } from './MenuTrigger/MenuTrigger';
3
3
  export { MenuPopover } from './MenuPopover/MenuPopover';
4
4
  export { MenuItem } from './MenuItem/MenuItem';
5
5
  export { MenuItemCheckbox } from './MenuItemCheckbox/MenuItemCheckbox';
6
+ export { MenuItemRadio } from './MenuItemRadio/MenuItemRadio';
6
7
  export { MenuList } from './MenuList/MenuList';
7
8
  export { MenuDivider } from './MenuDivider/MenuDivider';
@@ -1 +0,0 @@
1
- {"version":3,"file":"useMenuContextValue.d.ts","sourceRoot":"","sources":["../../src/MenuList/useMenuContextValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,eAAO,MAAM,uBAAuB,UAAW,aAAa,KAAG,oBAE9D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useMenuContextValue.js","sourceRoot":"","sources":["../../src/MenuList/useMenuContextValue.ts"],"names":[],"mappings":";AAGA,MAAM,CAAC,IAAM,uBAAuB,GAAG,UAAC,KAAoB;IAC1D,oBAAY,KAAK,EAAG;AACtB,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useMenuContextValue.d.ts","sourceRoot":"","sources":["../../src/MenuList/useMenuContextValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,eAAO,MAAM,uBAAuB,UAAW,aAAa,KAAG,oBAE9D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useMenuContextValue.js","sourceRoot":"","sources":["../../src/MenuList/useMenuContextValue.ts"],"names":[],"mappings":";;;;AAGO,IAAM,uBAAuB,GAAG,UAAC,KAAoB;IAC1D,iCAAY,KAAK,EAAG;AACtB,CAAC,CAAC;AAFW,QAAA,uBAAuB,2BAElC"}