@fluentui-react-native/menu 0.2.0 → 0.3.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 (60) hide show
  1. package/CHANGELOG.json +16 -1
  2. package/CHANGELOG.md +10 -2
  3. package/lib/Menu/Menu.js +1 -1
  4. package/lib/Menu/Menu.types.d.ts +2 -0
  5. package/lib/Menu/Menu.types.d.ts.map +1 -1
  6. package/lib/Menu/Menu.types.js.map +1 -1
  7. package/lib/Menu/useMenu.d.ts.map +1 -1
  8. package/lib/Menu/useMenu.js +2 -0
  9. package/lib/Menu/useMenu.js.map +1 -1
  10. package/lib/Menu/useMenuContextValue.js +1 -1
  11. package/lib/Menu/useMenuContextValue.js.map +1 -1
  12. package/lib/MenuPopover/MenuPopover.js +4 -4
  13. package/lib/MenuPopover/MenuPopover.js.map +1 -1
  14. package/lib/MenuPopover/MenuPopover.types.d.ts +2 -0
  15. package/lib/MenuPopover/MenuPopover.types.d.ts.map +1 -1
  16. package/lib/MenuPopover/useMenuPopover.d.ts +2 -0
  17. package/lib/MenuPopover/useMenuPopover.d.ts.map +1 -1
  18. package/lib/MenuPopover/useMenuPopover.js +6 -1
  19. package/lib/MenuPopover/useMenuPopover.js.map +1 -1
  20. package/lib/MenuTrigger/useMenuTrigger.d.ts +2 -0
  21. package/lib/MenuTrigger/useMenuTrigger.d.ts.map +1 -1
  22. package/lib/MenuTrigger/useMenuTrigger.js +2 -1
  23. package/lib/MenuTrigger/useMenuTrigger.js.map +1 -1
  24. package/lib/context/menuContext.d.ts.map +1 -1
  25. package/lib/context/menuContext.js +1 -0
  26. package/lib/context/menuContext.js.map +1 -1
  27. package/lib-commonjs/Menu/Menu.js +1 -1
  28. package/lib-commonjs/Menu/Menu.types.d.ts +2 -0
  29. package/lib-commonjs/Menu/Menu.types.d.ts.map +1 -1
  30. package/lib-commonjs/Menu/Menu.types.js.map +1 -1
  31. package/lib-commonjs/Menu/useMenu.d.ts.map +1 -1
  32. package/lib-commonjs/Menu/useMenu.js +2 -0
  33. package/lib-commonjs/Menu/useMenu.js.map +1 -1
  34. package/lib-commonjs/Menu/useMenuContextValue.js +1 -1
  35. package/lib-commonjs/Menu/useMenuContextValue.js.map +1 -1
  36. package/lib-commonjs/MenuPopover/MenuPopover.js +4 -4
  37. package/lib-commonjs/MenuPopover/MenuPopover.js.map +1 -1
  38. package/lib-commonjs/MenuPopover/MenuPopover.types.d.ts +2 -0
  39. package/lib-commonjs/MenuPopover/MenuPopover.types.d.ts.map +1 -1
  40. package/lib-commonjs/MenuPopover/useMenuPopover.d.ts +2 -0
  41. package/lib-commonjs/MenuPopover/useMenuPopover.d.ts.map +1 -1
  42. package/lib-commonjs/MenuPopover/useMenuPopover.js +9 -0
  43. package/lib-commonjs/MenuPopover/useMenuPopover.js.map +1 -1
  44. package/lib-commonjs/MenuTrigger/useMenuTrigger.d.ts +2 -0
  45. package/lib-commonjs/MenuTrigger/useMenuTrigger.d.ts.map +1 -1
  46. package/lib-commonjs/MenuTrigger/useMenuTrigger.js +2 -1
  47. package/lib-commonjs/MenuTrigger/useMenuTrigger.js.map +1 -1
  48. package/lib-commonjs/context/menuContext.d.ts.map +1 -1
  49. package/lib-commonjs/context/menuContext.js +1 -0
  50. package/lib-commonjs/context/menuContext.js.map +1 -1
  51. package/package.json +1 -1
  52. package/src/Menu/Menu.tsx +1 -1
  53. package/src/Menu/Menu.types.ts +2 -0
  54. package/src/Menu/useMenu.ts +2 -0
  55. package/src/Menu/useMenuContextValue.ts +1 -1
  56. package/src/MenuPopover/MenuPopover.tsx +4 -4
  57. package/src/MenuPopover/MenuPopover.types.ts +3 -1
  58. package/src/MenuPopover/useMenuPopover.ts +10 -0
  59. package/src/MenuTrigger/useMenuTrigger.ts +2 -1
  60. package/src/context/menuContext.ts +1 -0
package/CHANGELOG.json CHANGED
@@ -2,7 +2,22 @@
2
2
  "name": "@fluentui-react-native/menu",
3
3
  "entries": [
4
4
  {
5
- "date": "Fri, 22 Apr 2022 22:51:13 GMT",
5
+ "date": "Mon, 25 Apr 2022 18:30:53 GMT",
6
+ "tag": "@fluentui-react-native/menu_v0.3.0",
7
+ "version": "0.3.0",
8
+ "comments": {
9
+ "minor": [
10
+ {
11
+ "author": "ruaraki@microsoft.com",
12
+ "package": "@fluentui-react-native/menu",
13
+ "commit": "add49a0b6438cb088e99b50648f09a69bdaaecdb",
14
+ "comment": "Implement target behavior"
15
+ }
16
+ ]
17
+ }
18
+ },
19
+ {
20
+ "date": "Fri, 22 Apr 2022 22:51:25 GMT",
6
21
  "tag": "@fluentui-react-native/menu_v0.2.0",
7
22
  "version": "0.2.0",
8
23
  "comments": {
package/CHANGELOG.md CHANGED
@@ -1,12 +1,20 @@
1
1
  # Change Log - @fluentui-react-native/menu
2
2
 
3
- This log was last generated on Fri, 22 Apr 2022 22:51:13 GMT and should not be manually modified.
3
+ This log was last generated on Mon, 25 Apr 2022 18:30:53 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 0.3.0
8
+
9
+ Mon, 25 Apr 2022 18:30:53 GMT
10
+
11
+ ### Minor changes
12
+
13
+ - Implement target behavior (ruaraki@microsoft.com)
14
+
7
15
  ## 0.2.0
8
16
 
9
- Fri, 22 Apr 2022 22:51:13 GMT
17
+ Fri, 22 Apr 2022 22:51:25 GMT
10
18
 
11
19
  ### Minor changes
12
20
 
package/lib/Menu/Menu.js CHANGED
@@ -10,7 +10,7 @@ export var Menu = stagedComponent(function (props) {
10
10
  return function (_rest, children) {
11
11
  var childrenArray = React.Children.toArray(children);
12
12
  if (__DEV__) {
13
- if (childrenArray.length === 2) {
13
+ if (childrenArray.length !== 2) {
14
14
  // eslint-disable-next-line no-console
15
15
  console.warn('Menu must contain two children');
16
16
  }
@@ -1,9 +1,11 @@
1
1
  import type { IViewProps } from '@fluentui-react-native/adapters';
2
+ import React from 'react';
2
3
  export declare const menuName = "Menu";
3
4
  export interface MenuProps extends Omit<IViewProps, 'onPress'> {
4
5
  open?: boolean;
5
6
  }
6
7
  export interface MenuState extends MenuProps {
7
8
  setOpen: (isOpen: boolean) => void;
9
+ triggerRef: React.RefObject<React.Component>;
8
10
  }
9
11
  //# sourceMappingURL=Menu.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.types.d.ts","sourceRoot":"","sources":["../../src/Menu/Menu.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,eAAO,MAAM,QAAQ,SAAS,CAAC;AAE/B,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;IAC5D,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC"}
1
+ {"version":3,"file":"Menu.types.d.ts","sourceRoot":"","sources":["../../src/Menu/Menu.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,QAAQ,SAAS,CAAC;AAE/B,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;IAC5D,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;CAC9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.types.js","sourceRoot":"","sources":["../../src/Menu/Menu.types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,IAAM,QAAQ,GAAG,MAAM,CAAC"}
1
+ {"version":3,"file":"Menu.types.js","sourceRoot":"","sources":["../../src/Menu/Menu.types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,IAAM,QAAQ,GAAG,MAAM,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMenu.d.ts","sourceRoot":"","sources":["../../src/Menu/useMenu.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpD,eAAO,MAAM,OAAO,UAAW,SAAS,KAAG,SAO1C,CAAC"}
1
+ {"version":3,"file":"useMenu.d.ts","sourceRoot":"","sources":["../../src/Menu/useMenu.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpD,eAAO,MAAM,OAAO,UAAW,SAAS,KAAG,SAS1C,CAAC"}
@@ -1,9 +1,11 @@
1
1
  import React from 'react';
2
2
  export var useMenu = function (props) {
3
3
  var _a = useMenuOpenState(props), open = _a[0], setOpen = _a[1];
4
+ var triggerRef = React.useRef(null);
4
5
  return {
5
6
  open: open,
6
7
  setOpen: setOpen,
8
+ triggerRef: triggerRef,
7
9
  };
8
10
  };
9
11
  var useMenuOpenState = function (props) {
@@ -1 +1 @@
1
- {"version":3,"file":"useMenu.js","sourceRoot":"","sources":["../../src/Menu/useMenu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,CAAC,IAAM,OAAO,GAAG,UAAC,KAAgB;IAChC,IAAA,KAAkB,gBAAgB,CAAC,KAAK,CAAC,EAAxC,IAAI,QAAA,EAAE,OAAO,QAA2B,CAAC;IAEhD,OAAO;QACL,IAAI,MAAA;QACJ,OAAO,SAAA;KACR,CAAC;AACJ,CAAC,CAAC;AAEF,IAAM,gBAAgB,GAAG,UAAC,KAAgB;IACxC,OAAO,KAAK,CAAC,QAAQ,CAAU,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC,CAAC"}
1
+ {"version":3,"file":"useMenu.js","sourceRoot":"","sources":["../../src/Menu/useMenu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,CAAC,IAAM,OAAO,GAAG,UAAC,KAAgB;IAChC,IAAA,KAAkB,gBAAgB,CAAC,KAAK,CAAC,EAAxC,IAAI,QAAA,EAAE,OAAO,QAA2B,CAAC;IAChD,IAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEtC,OAAO;QACL,IAAI,MAAA;QACJ,OAAO,SAAA;QACP,UAAU,YAAA;KACX,CAAC;AACJ,CAAC,CAAC;AAEF,IAAM,gBAAgB,GAAG,UAAC,KAAgB;IACxC,OAAO,KAAK,CAAC,QAAQ,CAAU,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export var useMenuContextValue = function (state) {
2
- return { open: state.open, setOpen: state.setOpen };
2
+ return { open: state.open, setOpen: state.setOpen, triggerRef: state.triggerRef };
3
3
  };
4
4
  //# sourceMappingURL=useMenuContextValue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuContextValue.js","sourceRoot":"","sources":["../../src/Menu/useMenuContextValue.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,KAAgB;IAClD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;AACtD,CAAC,CAAC"}
1
+ {"version":3,"file":"useMenuContextValue.js","sourceRoot":"","sources":["../../src/Menu/useMenuContextValue.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,KAAgB;IAClD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;AACpF,CAAC,CAAC"}
@@ -2,11 +2,11 @@ import React from 'react';
2
2
  import { stagedComponent } from '@fluentui-react-native/framework';
3
3
  import { Callout } from '@fluentui-react-native/callout';
4
4
  import { menuPopoverName } from './MenuPopover.types';
5
- import { useMenuContext } from '../context/menuContext';
6
- export var MenuPopover = stagedComponent(function (_props) {
7
- var context = useMenuContext();
5
+ import { useMenuPopover } from './useMenuPopover';
6
+ export var MenuPopover = stagedComponent(function (props) {
7
+ var state = useMenuPopover(props);
8
8
  return function (_rest, children) {
9
- return context.open && React.createElement(Callout, null, children);
9
+ return React.createElement(Callout, { target: state.triggerRef }, children);
10
10
  };
11
11
  });
12
12
  MenuPopover.displayName = menuPopoverName;
@@ -1 +1 @@
1
- {"version":3,"file":"MenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,eAAe,EAAoB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,CAAC,IAAM,WAAW,GAAG,eAAe,CAAC,UAAC,MAAwB;IAClE,IAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IAEjC,OAAO,UAAC,KAAuB,EAAE,QAAyB;QACxD,OAAO,OAAO,CAAC,IAAI,IAAI,oBAAC,OAAO,QAAE,QAAQ,CAAW,CAAC;IACvD,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,WAAW,CAAC,WAAW,GAAG,eAAe,CAAC;AAE1C,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"MenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,eAAe,EAAoB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,IAAM,WAAW,GAAG,eAAe,CAAC,UAAC,KAAuB;IACjE,IAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAEpC,OAAO,UAAC,KAAuB,EAAE,QAAyB;QACxD,OAAO,oBAAC,OAAO,IAAC,MAAM,EAAE,KAAK,CAAC,UAAU,IAAG,QAAQ,CAAW,CAAC;IACjE,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,WAAW,CAAC,WAAW,GAAG,eAAe,CAAC;AAE1C,eAAe,WAAW,CAAC"}
@@ -1,7 +1,9 @@
1
+ /// <reference types="react" />
1
2
  import type { IViewProps } from '@fluentui-react-native/adapters';
2
3
  export declare const menuPopoverName = "MenuPopover";
3
4
  export interface MenuPopoverProps extends Omit<IViewProps, 'onPress'> {
4
5
  }
5
6
  export interface MenuPopoverState {
7
+ triggerRef: React.RefObject<React.Component>;
6
8
  }
7
9
  //# sourceMappingURL=MenuPopover.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuPopover.types.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;CAAG;AAExE,MAAM,WAAW,gBAAgB;CAAG"}
1
+ {"version":3,"file":"MenuPopover.types.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;CAAG;AAExE,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;CAC9C"}
@@ -1 +1,3 @@
1
+ import { MenuPopoverProps, MenuPopoverState } from './MenuPopover.types';
2
+ export declare const useMenuPopover: (_props: MenuPopoverProps) => MenuPopoverState;
1
3
  //# sourceMappingURL=useMenuPopover.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuPopover.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"useMenuPopover.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,eAAO,MAAM,cAAc,WAAY,gBAAgB,KAAG,gBAMzD,CAAC"}
@@ -1,2 +1,7 @@
1
- "use strict";
1
+ import { useMenuContext } from '../context/menuContext';
2
+ export var useMenuPopover = function (_props) {
3
+ var context = useMenuContext();
4
+ var triggerRef = context.triggerRef;
5
+ return { triggerRef: triggerRef };
6
+ };
2
7
  //# sourceMappingURL=useMenuPopover.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"useMenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,MAAM,CAAC,IAAM,cAAc,GAAG,UAAC,MAAwB;IACrD,IAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IAEjC,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAEtC,OAAO,EAAE,UAAU,YAAA,EAAE,CAAC;AACxB,CAAC,CAAC"}
@@ -1,6 +1,8 @@
1
+ /// <reference types="react" />
1
2
  import { InteractionEvent } from '@fluentui-react-native/interactive-hooks';
2
3
  import { MenuTriggerProps } from './MenuTrigger.types';
3
4
  export declare const useMenuTrigger: (_props: MenuTriggerProps) => {
4
5
  onClick: (_e: InteractionEvent) => void;
6
+ componentRef: import("react").RefObject<import("react").Component<{}, {}, any>>;
5
7
  };
6
8
  //# sourceMappingURL=useMenuTrigger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,cAAc,WAAY,gBAAgB;kBAMhC,gBAAgB;CAKtC,CAAC"}
1
+ {"version":3,"file":"useMenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,cAAc,WAAY,gBAAgB;kBAOhC,gBAAgB;;CAKtC,CAAC"}
@@ -3,9 +3,10 @@ export var useMenuTrigger = function (_props) {
3
3
  var context = useMenuContext();
4
4
  var setOpen = context.setOpen;
5
5
  var open = context.open;
6
+ var triggerRef = context.triggerRef;
6
7
  var onClick = function (_e) {
7
8
  setOpen(!open);
8
9
  };
9
- return { onClick: onClick };
10
+ return { onClick: onClick, componentRef: triggerRef };
10
11
  };
11
12
  //# sourceMappingURL=useMenuTrigger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAIxD,MAAM,CAAC,IAAM,cAAc,GAAG,UAAC,MAAwB;IACrD,IAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IAEjC,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAM,OAAO,GAAG,UAAC,EAAoB;QACnC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,EAAE,OAAO,SAAA,EAAE,CAAC;AACrB,CAAC,CAAC"}
1
+ {"version":3,"file":"useMenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAIxD,MAAM,CAAC,IAAM,cAAc,GAAG,UAAC,MAAwB;IACrD,IAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IAEjC,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAEtC,IAAM,OAAO,GAAG,UAAC,EAAoB;QACnC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,EAAE,OAAO,SAAA,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AAC/C,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"menuContext.d.ts","sourceRoot":"","sources":["../../src/context/menuContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;GAEG;AACH,oBAAY,gBAAgB,GAAG,SAAS,CAAC;AAEzC,eAAO,MAAM,WAAW,0BAGtB,CAAC;AAEH,eAAO,MAAM,YAAY,2BAAuB,CAAC;AACjD,eAAO,MAAM,cAAc,iBAAsC,CAAC"}
1
+ {"version":3,"file":"menuContext.d.ts","sourceRoot":"","sources":["../../src/context/menuContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;GAEG;AACH,oBAAY,gBAAgB,GAAG,SAAS,CAAC;AAEzC,eAAO,MAAM,WAAW,0BAItB,CAAC;AAEH,eAAO,MAAM,YAAY,2BAAuB,CAAC;AACjD,eAAO,MAAM,cAAc,iBAAsC,CAAC"}
@@ -2,6 +2,7 @@ import * as React from 'react';
2
2
  export var MenuContext = React.createContext({
3
3
  open: false,
4
4
  setOpen: function () { return false; },
5
+ triggerRef: null,
5
6
  });
6
7
  export var MenuProvider = MenuContext.Provider;
7
8
  export var useMenuContext = function () { return React.useContext(MenuContext); };
@@ -1 +1 @@
1
- {"version":3,"file":"menuContext.js","sourceRoot":"","sources":["../../src/context/menuContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,MAAM,CAAC,IAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAmB;IAC/D,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,IAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC;AACjD,MAAM,CAAC,IAAM,cAAc,GAAG,cAAM,OAAA,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAA7B,CAA6B,CAAC"}
1
+ {"version":3,"file":"menuContext.js","sourceRoot":"","sources":["../../src/context/menuContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,MAAM,CAAC,IAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAmB;IAC/D,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;IACpB,UAAU,EAAE,IAAI;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,IAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC;AACjD,MAAM,CAAC,IAAM,cAAc,GAAG,cAAM,OAAA,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAA7B,CAA6B,CAAC"}
@@ -14,7 +14,7 @@ exports.Menu = (0, framework_1.stagedComponent)(function (props) {
14
14
  return function (_rest, children) {
15
15
  var childrenArray = react_1.default.Children.toArray(children);
16
16
  if (__DEV__) {
17
- if (childrenArray.length === 2) {
17
+ if (childrenArray.length !== 2) {
18
18
  // eslint-disable-next-line no-console
19
19
  console.warn('Menu must contain two children');
20
20
  }
@@ -1,9 +1,11 @@
1
1
  import type { IViewProps } from '@fluentui-react-native/adapters';
2
+ import React from 'react';
2
3
  export declare const menuName = "Menu";
3
4
  export interface MenuProps extends Omit<IViewProps, 'onPress'> {
4
5
  open?: boolean;
5
6
  }
6
7
  export interface MenuState extends MenuProps {
7
8
  setOpen: (isOpen: boolean) => void;
9
+ triggerRef: React.RefObject<React.Component>;
8
10
  }
9
11
  //# sourceMappingURL=Menu.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.types.d.ts","sourceRoot":"","sources":["../../src/Menu/Menu.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,eAAO,MAAM,QAAQ,SAAS,CAAC;AAE/B,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;IAC5D,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC"}
1
+ {"version":3,"file":"Menu.types.d.ts","sourceRoot":"","sources":["../../src/Menu/Menu.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,QAAQ,SAAS,CAAC;AAE/B,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;IAC5D,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;CAC9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.types.js","sourceRoot":"","sources":["../../src/Menu/Menu.types.ts"],"names":[],"mappings":";;;AAEa,QAAA,QAAQ,GAAG,MAAM,CAAC"}
1
+ {"version":3,"file":"Menu.types.js","sourceRoot":"","sources":["../../src/Menu/Menu.types.ts"],"names":[],"mappings":";;;AAGa,QAAA,QAAQ,GAAG,MAAM,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMenu.d.ts","sourceRoot":"","sources":["../../src/Menu/useMenu.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpD,eAAO,MAAM,OAAO,UAAW,SAAS,KAAG,SAO1C,CAAC"}
1
+ {"version":3,"file":"useMenu.d.ts","sourceRoot":"","sources":["../../src/Menu/useMenu.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpD,eAAO,MAAM,OAAO,UAAW,SAAS,KAAG,SAS1C,CAAC"}
@@ -5,9 +5,11 @@ var tslib_1 = require("tslib");
5
5
  var react_1 = (0, tslib_1.__importDefault)(require("react"));
6
6
  var useMenu = function (props) {
7
7
  var _a = useMenuOpenState(props), open = _a[0], setOpen = _a[1];
8
+ var triggerRef = react_1.default.useRef(null);
8
9
  return {
9
10
  open: open,
10
11
  setOpen: setOpen,
12
+ triggerRef: triggerRef,
11
13
  };
12
14
  };
13
15
  exports.useMenu = useMenu;
@@ -1 +1 @@
1
- {"version":3,"file":"useMenu.js","sourceRoot":"","sources":["../../src/Menu/useMenu.ts"],"names":[],"mappings":";;;;AAAA,6DAA0B;AAGnB,IAAM,OAAO,GAAG,UAAC,KAAgB;IAChC,IAAA,KAAkB,gBAAgB,CAAC,KAAK,CAAC,EAAxC,IAAI,QAAA,EAAE,OAAO,QAA2B,CAAC;IAEhD,OAAO;QACL,IAAI,MAAA;QACJ,OAAO,SAAA;KACR,CAAC;AACJ,CAAC,CAAC;AAPW,QAAA,OAAO,WAOlB;AAEF,IAAM,gBAAgB,GAAG,UAAC,KAAgB;IACxC,OAAO,eAAK,CAAC,QAAQ,CAAU,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC,CAAC"}
1
+ {"version":3,"file":"useMenu.js","sourceRoot":"","sources":["../../src/Menu/useMenu.ts"],"names":[],"mappings":";;;;AAAA,6DAA0B;AAGnB,IAAM,OAAO,GAAG,UAAC,KAAgB;IAChC,IAAA,KAAkB,gBAAgB,CAAC,KAAK,CAAC,EAAxC,IAAI,QAAA,EAAE,OAAO,QAA2B,CAAC;IAChD,IAAM,UAAU,GAAG,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEtC,OAAO;QACL,IAAI,MAAA;QACJ,OAAO,SAAA;QACP,UAAU,YAAA;KACX,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,OAAO,WASlB;AAEF,IAAM,gBAAgB,GAAG,UAAC,KAAgB;IACxC,OAAO,eAAK,CAAC,QAAQ,CAAU,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC,CAAC"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useMenuContextValue = void 0;
4
4
  var useMenuContextValue = function (state) {
5
- return { open: state.open, setOpen: state.setOpen };
5
+ return { open: state.open, setOpen: state.setOpen, triggerRef: state.triggerRef };
6
6
  };
7
7
  exports.useMenuContextValue = useMenuContextValue;
8
8
  //# sourceMappingURL=useMenuContextValue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuContextValue.js","sourceRoot":"","sources":["../../src/Menu/useMenuContextValue.ts"],"names":[],"mappings":";;;AAGO,IAAM,mBAAmB,GAAG,UAAC,KAAgB;IAClD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;AACtD,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B"}
1
+ {"version":3,"file":"useMenuContextValue.js","sourceRoot":"","sources":["../../src/Menu/useMenuContextValue.ts"],"names":[],"mappings":";;;AAGO,IAAM,mBAAmB,GAAG,UAAC,KAAgB;IAClD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;AACpF,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B"}
@@ -6,11 +6,11 @@ var react_1 = (0, tslib_1.__importDefault)(require("react"));
6
6
  var framework_1 = require("@fluentui-react-native/framework");
7
7
  var callout_1 = require("@fluentui-react-native/callout");
8
8
  var MenuPopover_types_1 = require("./MenuPopover.types");
9
- var menuContext_1 = require("../context/menuContext");
10
- exports.MenuPopover = (0, framework_1.stagedComponent)(function (_props) {
11
- var context = (0, menuContext_1.useMenuContext)();
9
+ var useMenuPopover_1 = require("./useMenuPopover");
10
+ exports.MenuPopover = (0, framework_1.stagedComponent)(function (props) {
11
+ var state = (0, useMenuPopover_1.useMenuPopover)(props);
12
12
  return function (_rest, children) {
13
- return context.open && react_1.default.createElement(callout_1.Callout, null, children);
13
+ return react_1.default.createElement(callout_1.Callout, { target: state.triggerRef }, children);
14
14
  };
15
15
  });
16
16
  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,sDAAwD;AAE3C,QAAA,WAAW,GAAG,IAAA,2BAAe,EAAC,UAAC,MAAwB;IAClE,IAAM,OAAO,GAAG,IAAA,4BAAc,GAAE,CAAC;IAEjC,OAAO,UAAC,KAAuB,EAAE,QAAyB;QACxD,OAAO,OAAO,CAAC,IAAI,IAAI,8BAAC,iBAAO,QAAE,QAAQ,CAAW,CAAC;IACvD,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,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,7 +1,9 @@
1
+ /// <reference types="react" />
1
2
  import type { IViewProps } from '@fluentui-react-native/adapters';
2
3
  export declare const menuPopoverName = "MenuPopover";
3
4
  export interface MenuPopoverProps extends Omit<IViewProps, 'onPress'> {
4
5
  }
5
6
  export interface MenuPopoverState {
7
+ triggerRef: React.RefObject<React.Component>;
6
8
  }
7
9
  //# sourceMappingURL=MenuPopover.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuPopover.types.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;CAAG;AAExE,MAAM,WAAW,gBAAgB;CAAG"}
1
+ {"version":3,"file":"MenuPopover.types.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;CAAG;AAExE,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;CAC9C"}
@@ -1 +1,3 @@
1
+ import { MenuPopoverProps, MenuPopoverState } from './MenuPopover.types';
2
+ export declare const useMenuPopover: (_props: MenuPopoverProps) => MenuPopoverState;
1
3
  //# sourceMappingURL=useMenuPopover.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuPopover.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"useMenuPopover.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,eAAO,MAAM,cAAc,WAAY,gBAAgB,KAAG,gBAMzD,CAAC"}
@@ -1,2 +1,11 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useMenuPopover = void 0;
4
+ var menuContext_1 = require("../context/menuContext");
5
+ var useMenuPopover = function (_props) {
6
+ var context = (0, menuContext_1.useMenuContext)();
7
+ var triggerRef = context.triggerRef;
8
+ return { triggerRef: triggerRef };
9
+ };
10
+ exports.useMenuPopover = useMenuPopover;
2
11
  //# sourceMappingURL=useMenuPopover.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"useMenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":";;;AAAA,sDAAwD;AAGjD,IAAM,cAAc,GAAG,UAAC,MAAwB;IACrD,IAAM,OAAO,GAAG,IAAA,4BAAc,GAAE,CAAC;IAEjC,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAEtC,OAAO,EAAE,UAAU,YAAA,EAAE,CAAC;AACxB,CAAC,CAAC;AANW,QAAA,cAAc,kBAMzB"}
@@ -1,6 +1,8 @@
1
+ /// <reference types="react" />
1
2
  import { InteractionEvent } from '@fluentui-react-native/interactive-hooks';
2
3
  import { MenuTriggerProps } from './MenuTrigger.types';
3
4
  export declare const useMenuTrigger: (_props: MenuTriggerProps) => {
4
5
  onClick: (_e: InteractionEvent) => void;
6
+ componentRef: import("react").RefObject<import("react").Component<{}, {}, any>>;
5
7
  };
6
8
  //# sourceMappingURL=useMenuTrigger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,cAAc,WAAY,gBAAgB;kBAMhC,gBAAgB;CAKtC,CAAC"}
1
+ {"version":3,"file":"useMenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,cAAc,WAAY,gBAAgB;kBAOhC,gBAAgB;;CAKtC,CAAC"}
@@ -6,10 +6,11 @@ var useMenuTrigger = function (_props) {
6
6
  var context = (0, menuContext_1.useMenuContext)();
7
7
  var setOpen = context.setOpen;
8
8
  var open = context.open;
9
+ var triggerRef = context.triggerRef;
9
10
  var onClick = function (_e) {
10
11
  setOpen(!open);
11
12
  };
12
- return { onClick: onClick };
13
+ return { onClick: onClick, componentRef: triggerRef };
13
14
  };
14
15
  exports.useMenuTrigger = useMenuTrigger;
15
16
  //# sourceMappingURL=useMenuTrigger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":";;;AAAA,sDAAwD;AAIjD,IAAM,cAAc,GAAG,UAAC,MAAwB;IACrD,IAAM,OAAO,GAAG,IAAA,4BAAc,GAAE,CAAC;IAEjC,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAM,OAAO,GAAG,UAAC,EAAoB;QACnC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,EAAE,OAAO,SAAA,EAAE,CAAC;AACrB,CAAC,CAAC;AAXW,QAAA,cAAc,kBAWzB"}
1
+ {"version":3,"file":"useMenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":";;;AAAA,sDAAwD;AAIjD,IAAM,cAAc,GAAG,UAAC,MAAwB;IACrD,IAAM,OAAO,GAAG,IAAA,4BAAc,GAAE,CAAC;IAEjC,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAEtC,IAAM,OAAO,GAAG,UAAC,EAAoB;QACnC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,EAAE,OAAO,SAAA,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AAC/C,CAAC,CAAC;AAZW,QAAA,cAAc,kBAYzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"menuContext.d.ts","sourceRoot":"","sources":["../../src/context/menuContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;GAEG;AACH,oBAAY,gBAAgB,GAAG,SAAS,CAAC;AAEzC,eAAO,MAAM,WAAW,0BAGtB,CAAC;AAEH,eAAO,MAAM,YAAY,2BAAuB,CAAC;AACjD,eAAO,MAAM,cAAc,iBAAsC,CAAC"}
1
+ {"version":3,"file":"menuContext.d.ts","sourceRoot":"","sources":["../../src/context/menuContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;GAEG;AACH,oBAAY,gBAAgB,GAAG,SAAS,CAAC;AAEzC,eAAO,MAAM,WAAW,0BAItB,CAAC;AAEH,eAAO,MAAM,YAAY,2BAAuB,CAAC;AACjD,eAAO,MAAM,cAAc,iBAAsC,CAAC"}
@@ -6,6 +6,7 @@ var React = (0, tslib_1.__importStar)(require("react"));
6
6
  exports.MenuContext = React.createContext({
7
7
  open: false,
8
8
  setOpen: function () { return false; },
9
+ triggerRef: null,
9
10
  });
10
11
  exports.MenuProvider = exports.MenuContext.Provider;
11
12
  var useMenuContext = function () { return React.useContext(exports.MenuContext); };
@@ -1 +1 @@
1
- {"version":3,"file":"menuContext.js","sourceRoot":"","sources":["../../src/context/menuContext.ts"],"names":[],"mappings":";;;;AAAA,wDAA+B;AAQlB,QAAA,WAAW,GAAG,KAAK,CAAC,aAAa,CAAmB;IAC/D,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;CACrB,CAAC,CAAC;AAEU,QAAA,YAAY,GAAG,mBAAW,CAAC,QAAQ,CAAC;AAC1C,IAAM,cAAc,GAAG,cAAM,OAAA,KAAK,CAAC,UAAU,CAAC,mBAAW,CAAC,EAA7B,CAA6B,CAAC;AAArD,QAAA,cAAc,kBAAuC"}
1
+ {"version":3,"file":"menuContext.js","sourceRoot":"","sources":["../../src/context/menuContext.ts"],"names":[],"mappings":";;;;AAAA,wDAA+B;AAQlB,QAAA,WAAW,GAAG,KAAK,CAAC,aAAa,CAAmB;IAC/D,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;IACpB,UAAU,EAAE,IAAI;CACjB,CAAC,CAAC;AAEU,QAAA,YAAY,GAAG,mBAAW,CAAC,QAAQ,CAAC;AAC1C,IAAM,cAAc,GAAG,cAAM,OAAA,KAAK,CAAC,UAAU,CAAC,mBAAW,CAAC,EAA7B,CAA6B,CAAC;AAArD,QAAA,cAAc,kBAAuC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui-react-native/menu",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "A cross-platform Menu component using the Fluent Design System",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
package/src/Menu/Menu.tsx CHANGED
@@ -13,7 +13,7 @@ export const Menu = stagedComponent((props: MenuProps) => {
13
13
  const childrenArray = React.Children.toArray(children) as React.ReactElement[];
14
14
 
15
15
  if (__DEV__) {
16
- if (childrenArray.length === 2) {
16
+ if (childrenArray.length !== 2) {
17
17
  // eslint-disable-next-line no-console
18
18
  console.warn('Menu must contain two children');
19
19
  }
@@ -1,4 +1,5 @@
1
1
  import type { IViewProps } from '@fluentui-react-native/adapters';
2
+ import React from 'react';
2
3
 
3
4
  export const menuName = 'Menu';
4
5
 
@@ -8,4 +9,5 @@ export interface MenuProps extends Omit<IViewProps, 'onPress'> {
8
9
 
9
10
  export interface MenuState extends MenuProps {
10
11
  setOpen: (isOpen: boolean) => void;
12
+ triggerRef: React.RefObject<React.Component>;
11
13
  }
@@ -3,10 +3,12 @@ import { MenuProps, MenuState } from './Menu.types';
3
3
 
4
4
  export const useMenu = (props: MenuProps): MenuState => {
5
5
  const [open, setOpen] = useMenuOpenState(props);
6
+ const triggerRef = React.useRef(null);
6
7
 
7
8
  return {
8
9
  open,
9
10
  setOpen,
11
+ triggerRef,
10
12
  };
11
13
  };
12
14
 
@@ -2,5 +2,5 @@ import { MenuContextValue } from '../context/menuContext';
2
2
  import { MenuState } from './Menu.types';
3
3
 
4
4
  export const useMenuContextValue = (state: MenuState): MenuContextValue => {
5
- return { open: state.open, setOpen: state.setOpen };
5
+ return { open: state.open, setOpen: state.setOpen, triggerRef: state.triggerRef };
6
6
  };
@@ -2,13 +2,13 @@ import React from 'react';
2
2
  import { stagedComponent } from '@fluentui-react-native/framework';
3
3
  import { Callout } from '@fluentui-react-native/callout';
4
4
  import { menuPopoverName, MenuPopoverProps } from './MenuPopover.types';
5
- import { useMenuContext } from '../context/menuContext';
5
+ import { useMenuPopover } from './useMenuPopover';
6
6
 
7
- export const MenuPopover = stagedComponent((_props: MenuPopoverProps) => {
8
- const context = useMenuContext();
7
+ export const MenuPopover = stagedComponent((props: MenuPopoverProps) => {
8
+ const state = useMenuPopover(props);
9
9
 
10
10
  return (_rest: MenuPopoverProps, children: React.ReactNode) => {
11
- return context.open && <Callout>{children}</Callout>;
11
+ return <Callout target={state.triggerRef}>{children}</Callout>;
12
12
  };
13
13
  });
14
14
  MenuPopover.displayName = menuPopoverName;
@@ -4,4 +4,6 @@ export const menuPopoverName = 'MenuPopover';
4
4
 
5
5
  export interface MenuPopoverProps extends Omit<IViewProps, 'onPress'> {}
6
6
 
7
- export interface MenuPopoverState {}
7
+ export interface MenuPopoverState {
8
+ triggerRef: React.RefObject<React.Component>;
9
+ }
@@ -0,0 +1,10 @@
1
+ import { useMenuContext } from '../context/menuContext';
2
+ import { MenuPopoverProps, MenuPopoverState } from './MenuPopover.types';
3
+
4
+ export const useMenuPopover = (_props: MenuPopoverProps): MenuPopoverState => {
5
+ const context = useMenuContext();
6
+
7
+ const triggerRef = context.triggerRef;
8
+
9
+ return { triggerRef };
10
+ };
@@ -7,10 +7,11 @@ export const useMenuTrigger = (_props: MenuTriggerProps) => {
7
7
 
8
8
  const setOpen = context.setOpen;
9
9
  const open = context.open;
10
+ const triggerRef = context.triggerRef;
10
11
 
11
12
  const onClick = (_e: InteractionEvent) => {
12
13
  setOpen(!open);
13
14
  };
14
15
 
15
- return { onClick };
16
+ return { onClick, componentRef: triggerRef };
16
17
  };
@@ -9,6 +9,7 @@ export type MenuContextValue = MenuState;
9
9
  export const MenuContext = React.createContext<MenuContextValue>({
10
10
  open: false,
11
11
  setOpen: () => false,
12
+ triggerRef: null,
12
13
  });
13
14
 
14
15
  export const MenuProvider = MenuContext.Provider;