@fluentui-react-native/menu 0.5.2 → 0.6.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.
- package/CHANGELOG.json +16 -1
- package/CHANGELOG.md +10 -2
- package/lib/Menu/Menu.types.d.ts +6 -1
- package/lib/Menu/Menu.types.d.ts.map +1 -1
- package/lib/Menu/Menu.types.js.map +1 -1
- package/lib/Menu/useMenu.d.ts.map +1 -1
- package/lib/Menu/useMenu.js +19 -9
- package/lib/Menu/useMenu.js.map +1 -1
- package/lib/Menu/useMenuContextValue.js +2 -1
- package/lib/Menu/useMenuContextValue.js.map +1 -1
- package/lib/MenuPopover/MenuPopover.d.ts.map +1 -1
- package/lib/MenuPopover/MenuPopover.js +1 -1
- package/lib/MenuPopover/MenuPopover.js.map +1 -1
- package/lib/MenuPopover/MenuPopover.types.d.ts +3 -0
- package/lib/MenuPopover/MenuPopover.types.d.ts.map +1 -1
- package/lib/MenuPopover/MenuPopover.types.js.map +1 -1
- package/lib/MenuPopover/useMenuPopover.d.ts.map +1 -1
- package/lib/MenuPopover/useMenuPopover.js +7 -1
- package/lib/MenuPopover/useMenuPopover.js.map +1 -1
- package/lib/MenuTrigger/useMenuTrigger.d.ts +2 -1
- package/lib/MenuTrigger/useMenuTrigger.d.ts.map +1 -1
- package/lib/MenuTrigger/useMenuTrigger.js +9 -3
- package/lib/MenuTrigger/useMenuTrigger.js.map +1 -1
- package/lib/context/menuContext.d.ts.map +1 -1
- package/lib/context/menuContext.js +1 -0
- package/lib/context/menuContext.js.map +1 -1
- package/lib-commonjs/Menu/Menu.types.d.ts +6 -1
- package/lib-commonjs/Menu/Menu.types.d.ts.map +1 -1
- package/lib-commonjs/Menu/Menu.types.js.map +1 -1
- package/lib-commonjs/Menu/useMenu.d.ts.map +1 -1
- package/lib-commonjs/Menu/useMenu.js +18 -9
- package/lib-commonjs/Menu/useMenu.js.map +1 -1
- package/lib-commonjs/Menu/useMenuContextValue.js +2 -1
- package/lib-commonjs/Menu/useMenuContextValue.js.map +1 -1
- package/lib-commonjs/MenuPopover/MenuPopover.d.ts.map +1 -1
- package/lib-commonjs/MenuPopover/MenuPopover.js +1 -1
- package/lib-commonjs/MenuPopover/MenuPopover.js.map +1 -1
- package/lib-commonjs/MenuPopover/MenuPopover.types.d.ts +3 -0
- package/lib-commonjs/MenuPopover/MenuPopover.types.d.ts.map +1 -1
- package/lib-commonjs/MenuPopover/MenuPopover.types.js.map +1 -1
- package/lib-commonjs/MenuPopover/useMenuPopover.d.ts.map +1 -1
- package/lib-commonjs/MenuPopover/useMenuPopover.js +8 -1
- package/lib-commonjs/MenuPopover/useMenuPopover.js.map +1 -1
- package/lib-commonjs/MenuTrigger/useMenuTrigger.d.ts +2 -1
- package/lib-commonjs/MenuTrigger/useMenuTrigger.d.ts.map +1 -1
- package/lib-commonjs/MenuTrigger/useMenuTrigger.js +9 -3
- package/lib-commonjs/MenuTrigger/useMenuTrigger.js.map +1 -1
- package/lib-commonjs/context/menuContext.d.ts.map +1 -1
- package/lib-commonjs/context/menuContext.js +1 -0
- package/lib-commonjs/context/menuContext.js.map +1 -1
- package/package.json +1 -1
- package/src/Menu/Menu.types.ts +6 -1
- package/src/Menu/useMenu.ts +26 -3
- package/src/Menu/useMenuContextValue.ts +1 -1
- package/src/MenuPopover/MenuPopover.tsx +7 -1
- package/src/MenuPopover/MenuPopover.types.ts +3 -0
- package/src/MenuPopover/useMenuPopover.ts +8 -1
- package/src/MenuTrigger/useMenuTrigger.ts +10 -3
- 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": "Wed, 11 May 2022
|
|
5
|
+
"date": "Wed, 11 May 2022 22:26:13 GMT",
|
|
6
|
+
"tag": "@fluentui-react-native/menu_v0.6.0",
|
|
7
|
+
"version": "0.6.0",
|
|
8
|
+
"comments": {
|
|
9
|
+
"minor": [
|
|
10
|
+
{
|
|
11
|
+
"author": "ruaraki@microsoft.com",
|
|
12
|
+
"package": "@fluentui-react-native/menu",
|
|
13
|
+
"commit": "0a383e3d6a736a89e628c14d27d82388cf154f2b",
|
|
14
|
+
"comment": "Dismiss and openOnHover"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"date": "Wed, 11 May 2022 19:33:59 GMT",
|
|
6
21
|
"tag": "@fluentui-react-native/menu_v0.5.2",
|
|
7
22
|
"version": "0.5.2",
|
|
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 Wed, 11 May 2022
|
|
3
|
+
This log was last generated on Wed, 11 May 2022 22:26:13 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 0.6.0
|
|
8
|
+
|
|
9
|
+
Wed, 11 May 2022 22:26:13 GMT
|
|
10
|
+
|
|
11
|
+
### Minor changes
|
|
12
|
+
|
|
13
|
+
- Dismiss and openOnHover (ruaraki@microsoft.com)
|
|
14
|
+
|
|
7
15
|
## 0.5.2
|
|
8
16
|
|
|
9
|
-
Wed, 11 May 2022 19:33:
|
|
17
|
+
Wed, 11 May 2022 19:33:59 GMT
|
|
10
18
|
|
|
11
19
|
### Patches
|
|
12
20
|
|
package/lib/Menu/Menu.types.d.ts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import type { IViewProps } from '@fluentui-react-native/adapters';
|
|
2
|
+
import { InteractionEvent } from '@fluentui-react-native/interactive-hooks';
|
|
2
3
|
import React from 'react';
|
|
3
4
|
export declare const menuName = "Menu";
|
|
4
5
|
export interface MenuProps extends Omit<IViewProps, 'onPress'> {
|
|
6
|
+
defaultOpen?: boolean;
|
|
5
7
|
open?: boolean;
|
|
8
|
+
onOpenChange?: (e: InteractionEvent, isOpen: boolean) => void;
|
|
9
|
+
openOnHover?: boolean;
|
|
6
10
|
}
|
|
7
11
|
export interface MenuState extends MenuProps {
|
|
12
|
+
isControlled: boolean;
|
|
8
13
|
isSubmenu: boolean;
|
|
9
|
-
setOpen: (isOpen: boolean) => void;
|
|
14
|
+
setOpen: (e: InteractionEvent, isOpen: boolean) => void;
|
|
10
15
|
triggerRef: React.RefObject<React.Component>;
|
|
11
16
|
}
|
|
12
17
|
//# 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;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;
|
|
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,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,QAAQ,SAAS,CAAC;AAE/B,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxD,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":"
|
|
1
|
+
{"version":3,"file":"Menu.types.js","sourceRoot":"","sources":["../../src/Menu/Menu.types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,IAAM,QAAQ,GAAG,MAAM,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenu.d.ts","sourceRoot":"","sources":["../../src/Menu/useMenu.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useMenu.d.ts","sourceRoot":"","sources":["../../src/Menu/useMenu.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpD,eAAO,MAAM,OAAO,UAAW,SAAS,KAAG,SAe1C,CAAC"}
|
package/lib/Menu/useMenu.js
CHANGED
|
@@ -1,18 +1,28 @@
|
|
|
1
|
+
import { __assign } from "tslib";
|
|
1
2
|
import React from 'react';
|
|
2
3
|
import { useMenuContext } from '../context/menuContext';
|
|
3
4
|
export var useMenu = function (props) {
|
|
4
|
-
var _a = useMenuOpenState(props), open = _a[0], setOpen = _a[1];
|
|
5
5
|
var triggerRef = React.useRef(null);
|
|
6
6
|
var context = useMenuContext();
|
|
7
7
|
var isSubmenu = context.triggerRef !== null;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
triggerRef: triggerRef,
|
|
12
|
-
isSubmenu: isSubmenu,
|
|
13
|
-
};
|
|
8
|
+
var isControlled = typeof props.open !== 'undefined';
|
|
9
|
+
var _a = useMenuOpenState(isControlled, props), open = _a[0], setOpen = _a[1];
|
|
10
|
+
return __assign(__assign({}, props), { open: open, setOpen: setOpen, triggerRef: triggerRef, isSubmenu: isSubmenu, isControlled: isControlled });
|
|
14
11
|
};
|
|
15
|
-
var useMenuOpenState = function (props) {
|
|
16
|
-
|
|
12
|
+
var useMenuOpenState = function (isControlled, props) {
|
|
13
|
+
var defaultOpen = props.defaultOpen, onOpenChange = props.onOpenChange, open = props.open;
|
|
14
|
+
var initialState = typeof defaultOpen !== 'undefined' ? defaultOpen : !!open;
|
|
15
|
+
var _a = React.useState(initialState), openInternal = _a[0], setOpenInternal = _a[1];
|
|
16
|
+
var state = isControlled ? open : openInternal;
|
|
17
|
+
var setOpen = React.useCallback(function (e, isOpen) {
|
|
18
|
+
var openPrev = state;
|
|
19
|
+
if (!isControlled) {
|
|
20
|
+
setOpenInternal(isOpen);
|
|
21
|
+
}
|
|
22
|
+
if (onOpenChange && openPrev !== isOpen) {
|
|
23
|
+
onOpenChange(e, isOpen);
|
|
24
|
+
}
|
|
25
|
+
}, [isControlled, state, onOpenChange, setOpenInternal]);
|
|
26
|
+
return [state, setOpen];
|
|
17
27
|
};
|
|
18
28
|
//# sourceMappingURL=useMenu.js.map
|
package/lib/Menu/useMenu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenu.js","sourceRoot":"","sources":["../../src/Menu/useMenu.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useMenu.js","sourceRoot":"","sources":["../../src/Menu/useMenu.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,MAAM,CAAC,IAAM,OAAO,GAAG,UAAC,KAAgB;IACtC,IAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,IAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,IAAM,SAAS,GAAG,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC;IAC9C,IAAM,YAAY,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC;IACjD,IAAA,KAAkB,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,EAAtD,IAAI,QAAA,EAAE,OAAO,QAAyC,CAAC;IAE9D,6BACK,KAAK,KACR,IAAI,MAAA,EACJ,OAAO,SAAA,EACP,UAAU,YAAA,EACV,SAAS,WAAA,EACT,YAAY,cAAA,IACZ;AACJ,CAAC,CAAC;AAEF,IAAM,gBAAgB,GAAG,UAAC,YAAqB,EAAE,KAAgB;IACvD,IAAA,WAAW,GAAyB,KAAK,YAA9B,EAAE,YAAY,GAAW,KAAK,aAAhB,EAAE,IAAI,GAAK,KAAK,KAAV,CAAW;IAClD,IAAM,YAAY,GAAG,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzE,IAAA,KAAkC,KAAK,CAAC,QAAQ,CAAU,YAAY,CAAC,EAAtE,YAAY,QAAA,EAAE,eAAe,QAAyC,CAAC;IAE9E,IAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;IAEjD,IAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAC/B,UAAC,CAAmB,EAAE,MAAe;QACnC,IAAM,QAAQ,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,EAAE;YACjB,eAAe,CAAC,MAAM,CAAC,CAAC;SACzB;QACD,IAAI,YAAY,IAAI,QAAQ,KAAK,MAAM,EAAE;YACvC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;SACzB;IACH,CAAC,EACD,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe,CAAC,CACrD,CAAC;IAEF,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC1B,CAAC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import { __assign } from "tslib";
|
|
1
2
|
export var useMenuContextValue = function (state) {
|
|
2
|
-
return {
|
|
3
|
+
return __assign({}, state);
|
|
3
4
|
};
|
|
4
5
|
//# 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,
|
|
1
|
+
{"version":3,"file":"useMenuContextValue.js","sourceRoot":"","sources":["../../src/Menu/useMenuContextValue.ts"],"names":[],"mappings":";AAGA,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,KAAgB;IAClD,oBAAY,KAAK,EAAG;AACtB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuPopover.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAmB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGxE,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"MenuPopover.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAmB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGxE,eAAO,MAAM,WAAW,iFAiBtB,CAAC;AAGH,eAAe,WAAW,CAAC"}
|
|
@@ -7,7 +7,7 @@ export var MenuPopover = stagedComponent(function (props) {
|
|
|
7
7
|
var state = useMenuPopover(props);
|
|
8
8
|
var theme = useFluentTheme();
|
|
9
9
|
return function (_rest, children) {
|
|
10
|
-
return (React.createElement(Callout, { target: state.triggerRef,
|
|
10
|
+
return (React.createElement(Callout, { borderWidth: 1, borderColor: theme.colors.neutralStrokeAccessible, target: state.triggerRef, onDismiss: state.onDismiss, dismissBehaviors: state.dismissBehaviors }, children));
|
|
11
11
|
};
|
|
12
12
|
});
|
|
13
13
|
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,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACnF,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;IACpC,IAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAE/B,OAAO,UAAC,KAAuB,EAAE,QAAyB;QACxD,OAAO,CACL,oBAAC,OAAO,
|
|
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,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACnF,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;IACpC,IAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAE/B,OAAO,UAAC,KAAuB,EAAE,QAAyB;QACxD,OAAO,CACL,oBAAC,OAAO,IACN,WAAW,EAAE,CAAC,EACd,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,uBAAuB,EACjD,MAAM,EAAE,KAAK,CAAC,UAAU,EACxB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAEvC,QAAQ,CACD,CACX,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,WAAW,CAAC,WAAW,GAAG,eAAe,CAAC;AAE1C,eAAe,WAAW,CAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { IViewProps } from '@fluentui-react-native/adapters';
|
|
3
|
+
import { DismissBehaviors } from '@fluentui-react-native/callout';
|
|
3
4
|
export declare const menuPopoverName = "MenuPopover";
|
|
4
5
|
export interface MenuPopoverProps extends Omit<IViewProps, 'onPress'> {
|
|
5
6
|
}
|
|
6
7
|
export interface MenuPopoverState {
|
|
8
|
+
dismissBehaviors: DismissBehaviors[];
|
|
9
|
+
onDismiss: () => void;
|
|
7
10
|
triggerRef: React.RefObject<React.Component>;
|
|
8
11
|
}
|
|
9
12
|
//# 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;IAC/B,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;CAC9C"}
|
|
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;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,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,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;CAC9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuPopover.types.js","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MenuPopover.types.js","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,IAAM,eAAe,GAAG,aAAa,CAAC"}
|
|
@@ -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":"AAGA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,eAAO,MAAM,cAAc,WAAY,gBAAgB,KAAG,gBAWzD,CAAC"}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
import { useMenuContext } from '../context/menuContext';
|
|
2
3
|
export var useMenuPopover = function (_props) {
|
|
3
4
|
var context = useMenuContext();
|
|
5
|
+
var setOpen = context.setOpen;
|
|
4
6
|
var triggerRef = context.triggerRef;
|
|
5
|
-
|
|
7
|
+
var onDismiss = React.useCallback(function () { return setOpen(undefined, false /* isOpen */); }, [setOpen]);
|
|
8
|
+
var dismissBehaviors = context.isControlled
|
|
9
|
+
? ['preventDismissOnKeyDown', 'preventDismissOnClickOutside']
|
|
10
|
+
: undefined;
|
|
11
|
+
return { triggerRef: triggerRef, onDismiss: onDismiss, dismissBehaviors: dismissBehaviors };
|
|
6
12
|
};
|
|
7
13
|
//# sourceMappingURL=useMenuPopover.js.map
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"useMenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,MAAM,CAAC,IAAM,cAAc,GAAG,UAAC,MAAwB;IACrD,IAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,IAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,cAAM,OAAA,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,EAAtC,CAAsC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7F,IAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY;QAC3C,CAAC,CAAE,CAAC,yBAAyB,EAAE,8BAA8B,CAAwB;QACrF,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,EAAE,UAAU,YAAA,EAAE,SAAS,WAAA,EAAE,gBAAgB,kBAAA,EAAE,CAAC;AACrD,CAAC,CAAC"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
import { InteractionEvent } from '@fluentui-react-native/interactive-hooks';
|
|
3
3
|
import { MenuTriggerProps } from './MenuTrigger.types';
|
|
4
4
|
export declare const useMenuTrigger: (_props: MenuTriggerProps) => {
|
|
5
|
-
onClick: (
|
|
5
|
+
onClick: (e: InteractionEvent) => void;
|
|
6
|
+
onHoverIn: (e: InteractionEvent) => void;
|
|
6
7
|
componentRef: import("react").RefObject<import("react").Component<{}, {}, any>>;
|
|
7
8
|
};
|
|
8
9
|
//# 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;
|
|
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;iBAcjC,gBAAgB;mBANd,gBAAgB;;CAWvC,CAAC"}
|
|
@@ -3,10 +3,16 @@ export var useMenuTrigger = function (_props) {
|
|
|
3
3
|
var context = useMenuContext();
|
|
4
4
|
var setOpen = context.setOpen;
|
|
5
5
|
var open = context.open;
|
|
6
|
+
var openOnHover = context.openOnHover;
|
|
6
7
|
var triggerRef = context.triggerRef;
|
|
7
|
-
var
|
|
8
|
-
|
|
8
|
+
var onHoverIn = function (e) {
|
|
9
|
+
if (openOnHover) {
|
|
10
|
+
setOpen(e, true /* isOpen */);
|
|
11
|
+
}
|
|
9
12
|
};
|
|
10
|
-
|
|
13
|
+
var onClick = function (e) {
|
|
14
|
+
setOpen(e, !open);
|
|
15
|
+
};
|
|
16
|
+
return { onClick: onClick, onHoverIn: onHoverIn, componentRef: triggerRef };
|
|
11
17
|
};
|
|
12
18
|
//# 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;IAC1B,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAEtC,IAAM,OAAO,GAAG,UAAC,
|
|
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,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAEtC,IAAM,SAAS,GAAG,UAAC,CAAmB;QACpC,IAAI,WAAW,EAAE;YACf,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SAC/B;IACH,CAAC,CAAC;IAEF,IAAM,OAAO,GAAG,UAAC,CAAmB;QAClC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO,EAAE,OAAO,SAAA,EAAE,SAAS,WAAA,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AAC1D,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,
|
|
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,0BAMtB,CAAC;AAEH,eAAO,MAAM,YAAY,2BAAuB,CAAC;AACjD,eAAO,MAAM,cAAc,iBAAsC,CAAC"}
|
|
@@ -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,SAAS,EAAE,KAAK;IAChB,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"}
|
|
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,YAAY,EAAE,KAAK;IACnB,SAAS,EAAE,KAAK;IAChB,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"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import type { IViewProps } from '@fluentui-react-native/adapters';
|
|
2
|
+
import { InteractionEvent } from '@fluentui-react-native/interactive-hooks';
|
|
2
3
|
import React from 'react';
|
|
3
4
|
export declare const menuName = "Menu";
|
|
4
5
|
export interface MenuProps extends Omit<IViewProps, 'onPress'> {
|
|
6
|
+
defaultOpen?: boolean;
|
|
5
7
|
open?: boolean;
|
|
8
|
+
onOpenChange?: (e: InteractionEvent, isOpen: boolean) => void;
|
|
9
|
+
openOnHover?: boolean;
|
|
6
10
|
}
|
|
7
11
|
export interface MenuState extends MenuProps {
|
|
12
|
+
isControlled: boolean;
|
|
8
13
|
isSubmenu: boolean;
|
|
9
|
-
setOpen: (isOpen: boolean) => void;
|
|
14
|
+
setOpen: (e: InteractionEvent, isOpen: boolean) => void;
|
|
10
15
|
triggerRef: React.RefObject<React.Component>;
|
|
11
16
|
}
|
|
12
17
|
//# 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;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;
|
|
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,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,QAAQ,SAAS,CAAC;AAE/B,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxD,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":";;;
|
|
1
|
+
{"version":3,"file":"Menu.types.js","sourceRoot":"","sources":["../../src/Menu/Menu.types.ts"],"names":[],"mappings":";;;AAIa,QAAA,QAAQ,GAAG,MAAM,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenu.d.ts","sourceRoot":"","sources":["../../src/Menu/useMenu.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useMenu.d.ts","sourceRoot":"","sources":["../../src/Menu/useMenu.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpD,eAAO,MAAM,OAAO,UAAW,SAAS,KAAG,SAe1C,CAAC"}
|
|
@@ -5,19 +5,28 @@ var tslib_1 = require("tslib");
|
|
|
5
5
|
var react_1 = (0, tslib_1.__importDefault)(require("react"));
|
|
6
6
|
var menuContext_1 = require("../context/menuContext");
|
|
7
7
|
var useMenu = function (props) {
|
|
8
|
-
var _a = useMenuOpenState(props), open = _a[0], setOpen = _a[1];
|
|
9
8
|
var triggerRef = react_1.default.useRef(null);
|
|
10
9
|
var context = (0, menuContext_1.useMenuContext)();
|
|
11
10
|
var isSubmenu = context.triggerRef !== null;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
triggerRef: triggerRef,
|
|
16
|
-
isSubmenu: isSubmenu,
|
|
17
|
-
};
|
|
11
|
+
var isControlled = typeof props.open !== 'undefined';
|
|
12
|
+
var _a = useMenuOpenState(isControlled, props), open = _a[0], setOpen = _a[1];
|
|
13
|
+
return (0, tslib_1.__assign)((0, tslib_1.__assign)({}, props), { open: open, setOpen: setOpen, triggerRef: triggerRef, isSubmenu: isSubmenu, isControlled: isControlled });
|
|
18
14
|
};
|
|
19
15
|
exports.useMenu = useMenu;
|
|
20
|
-
var useMenuOpenState = function (props) {
|
|
21
|
-
|
|
16
|
+
var useMenuOpenState = function (isControlled, props) {
|
|
17
|
+
var defaultOpen = props.defaultOpen, onOpenChange = props.onOpenChange, open = props.open;
|
|
18
|
+
var initialState = typeof defaultOpen !== 'undefined' ? defaultOpen : !!open;
|
|
19
|
+
var _a = react_1.default.useState(initialState), openInternal = _a[0], setOpenInternal = _a[1];
|
|
20
|
+
var state = isControlled ? open : openInternal;
|
|
21
|
+
var setOpen = react_1.default.useCallback(function (e, isOpen) {
|
|
22
|
+
var openPrev = state;
|
|
23
|
+
if (!isControlled) {
|
|
24
|
+
setOpenInternal(isOpen);
|
|
25
|
+
}
|
|
26
|
+
if (onOpenChange && openPrev !== isOpen) {
|
|
27
|
+
onOpenChange(e, isOpen);
|
|
28
|
+
}
|
|
29
|
+
}, [isControlled, state, onOpenChange, setOpenInternal]);
|
|
30
|
+
return [state, setOpen];
|
|
22
31
|
};
|
|
23
32
|
//# sourceMappingURL=useMenu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenu.js","sourceRoot":"","sources":["../../src/Menu/useMenu.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"useMenu.js","sourceRoot":"","sources":["../../src/Menu/useMenu.ts"],"names":[],"mappings":";;;;AACA,6DAA0B;AAC1B,sDAAwD;AAGjD,IAAM,OAAO,GAAG,UAAC,KAAgB;IACtC,IAAM,UAAU,GAAG,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,IAAM,OAAO,GAAG,IAAA,4BAAc,GAAE,CAAC;IACjC,IAAM,SAAS,GAAG,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC;IAC9C,IAAM,YAAY,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC;IACjD,IAAA,KAAkB,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,EAAtD,IAAI,QAAA,EAAE,OAAO,QAAyC,CAAC;IAE9D,uDACK,KAAK,KACR,IAAI,MAAA,EACJ,OAAO,SAAA,EACP,UAAU,YAAA,EACV,SAAS,WAAA,EACT,YAAY,cAAA,IACZ;AACJ,CAAC,CAAC;AAfW,QAAA,OAAO,WAelB;AAEF,IAAM,gBAAgB,GAAG,UAAC,YAAqB,EAAE,KAAgB;IACvD,IAAA,WAAW,GAAyB,KAAK,YAA9B,EAAE,YAAY,GAAW,KAAK,aAAhB,EAAE,IAAI,GAAK,KAAK,KAAV,CAAW;IAClD,IAAM,YAAY,GAAG,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzE,IAAA,KAAkC,eAAK,CAAC,QAAQ,CAAU,YAAY,CAAC,EAAtE,YAAY,QAAA,EAAE,eAAe,QAAyC,CAAC;IAE9E,IAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;IAEjD,IAAM,OAAO,GAAG,eAAK,CAAC,WAAW,CAC/B,UAAC,CAAmB,EAAE,MAAe;QACnC,IAAM,QAAQ,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,EAAE;YACjB,eAAe,CAAC,MAAM,CAAC,CAAC;SACzB;QACD,IAAI,YAAY,IAAI,QAAQ,KAAK,MAAM,EAAE;YACvC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;SACzB;IACH,CAAC,EACD,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe,CAAC,CACrD,CAAC;IAEF,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC1B,CAAC,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useMenuContextValue = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
4
5
|
var useMenuContextValue = function (state) {
|
|
5
|
-
return
|
|
6
|
+
return (0, tslib_1.__assign)({}, state);
|
|
6
7
|
};
|
|
7
8
|
exports.useMenuContextValue = useMenuContextValue;
|
|
8
9
|
//# sourceMappingURL=useMenuContextValue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenuContextValue.js","sourceRoot":"","sources":["../../src/Menu/useMenuContextValue.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useMenuContextValue.js","sourceRoot":"","sources":["../../src/Menu/useMenuContextValue.ts"],"names":[],"mappings":";;;;AAGO,IAAM,mBAAmB,GAAG,UAAC,KAAgB;IAClD,iCAAY,KAAK,EAAG;AACtB,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuPopover.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAmB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGxE,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"MenuPopover.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAmB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGxE,eAAO,MAAM,WAAW,iFAiBtB,CAAC;AAGH,eAAe,WAAW,CAAC"}
|
|
@@ -11,7 +11,7 @@ exports.MenuPopover = (0, framework_1.stagedComponent)(function (props) {
|
|
|
11
11
|
var state = (0, useMenuPopover_1.useMenuPopover)(props);
|
|
12
12
|
var theme = (0, framework_1.useFluentTheme)();
|
|
13
13
|
return function (_rest, children) {
|
|
14
|
-
return (react_1.default.createElement(callout_1.Callout, { target: state.triggerRef,
|
|
14
|
+
return (react_1.default.createElement(callout_1.Callout, { borderWidth: 1, borderColor: theme.colors.neutralStrokeAccessible, target: state.triggerRef, onDismiss: state.onDismiss, dismissBehaviors: state.dismissBehaviors }, children));
|
|
15
15
|
};
|
|
16
16
|
});
|
|
17
17
|
exports.MenuPopover.displayName = MenuPopover_types_1.menuPopoverName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.tsx"],"names":[],"mappings":";;;;AAAA,6DAA0B;AAC1B,8DAAmF;AACnF,0DAAyD;AACzD,yDAAwE;AACxE,mDAAkD;AAErC,QAAA,WAAW,GAAG,IAAA,2BAAe,EAAC,UAAC,KAAuB;IACjE,IAAM,KAAK,GAAG,IAAA,+BAAc,EAAC,KAAK,CAAC,CAAC;IACpC,IAAM,KAAK,GAAG,IAAA,0BAAc,GAAE,CAAC;IAE/B,OAAO,UAAC,KAAuB,EAAE,QAAyB;QACxD,OAAO,CACL,8BAAC,iBAAO,
|
|
1
|
+
{"version":3,"file":"MenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.tsx"],"names":[],"mappings":";;;;AAAA,6DAA0B;AAC1B,8DAAmF;AACnF,0DAAyD;AACzD,yDAAwE;AACxE,mDAAkD;AAErC,QAAA,WAAW,GAAG,IAAA,2BAAe,EAAC,UAAC,KAAuB;IACjE,IAAM,KAAK,GAAG,IAAA,+BAAc,EAAC,KAAK,CAAC,CAAC;IACpC,IAAM,KAAK,GAAG,IAAA,0BAAc,GAAE,CAAC;IAE/B,OAAO,UAAC,KAAuB,EAAE,QAAyB;QACxD,OAAO,CACL,8BAAC,iBAAO,IACN,WAAW,EAAE,CAAC,EACd,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,uBAAuB,EACjD,MAAM,EAAE,KAAK,CAAC,UAAU,EACxB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAEvC,QAAQ,CACD,CACX,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,mBAAW,CAAC,WAAW,GAAG,mCAAe,CAAC;AAE1C,kBAAe,mBAAW,CAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { IViewProps } from '@fluentui-react-native/adapters';
|
|
3
|
+
import { DismissBehaviors } from '@fluentui-react-native/callout';
|
|
3
4
|
export declare const menuPopoverName = "MenuPopover";
|
|
4
5
|
export interface MenuPopoverProps extends Omit<IViewProps, 'onPress'> {
|
|
5
6
|
}
|
|
6
7
|
export interface MenuPopoverState {
|
|
8
|
+
dismissBehaviors: DismissBehaviors[];
|
|
9
|
+
onDismiss: () => void;
|
|
7
10
|
triggerRef: React.RefObject<React.Component>;
|
|
8
11
|
}
|
|
9
12
|
//# 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;IAC/B,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;CAC9C"}
|
|
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;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,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,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;CAC9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuPopover.types.js","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"MenuPopover.types.js","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.types.ts"],"names":[],"mappings":";;;AAGa,QAAA,eAAe,GAAG,aAAa,CAAC"}
|
|
@@ -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":"AAGA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,eAAO,MAAM,cAAc,WAAY,gBAAgB,KAAG,gBAWzD,CAAC"}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useMenuPopover = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var react_1 = (0, tslib_1.__importDefault)(require("react"));
|
|
4
6
|
var menuContext_1 = require("../context/menuContext");
|
|
5
7
|
var useMenuPopover = function (_props) {
|
|
6
8
|
var context = (0, menuContext_1.useMenuContext)();
|
|
9
|
+
var setOpen = context.setOpen;
|
|
7
10
|
var triggerRef = context.triggerRef;
|
|
8
|
-
|
|
11
|
+
var onDismiss = react_1.default.useCallback(function () { return setOpen(undefined, false /* isOpen */); }, [setOpen]);
|
|
12
|
+
var dismissBehaviors = context.isControlled
|
|
13
|
+
? ['preventDismissOnKeyDown', 'preventDismissOnClickOutside']
|
|
14
|
+
: undefined;
|
|
15
|
+
return { triggerRef: triggerRef, onDismiss: onDismiss, dismissBehaviors: dismissBehaviors };
|
|
9
16
|
};
|
|
10
17
|
exports.useMenuPopover = useMenuPopover;
|
|
11
18
|
//# 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,6DAA0B;AAE1B,sDAAwD;AAGjD,IAAM,cAAc,GAAG,UAAC,MAAwB;IACrD,IAAM,OAAO,GAAG,IAAA,4BAAc,GAAE,CAAC;IACjC,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,IAAM,SAAS,GAAG,eAAK,CAAC,WAAW,CAAC,cAAM,OAAA,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,EAAtC,CAAsC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7F,IAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY;QAC3C,CAAC,CAAE,CAAC,yBAAyB,EAAE,8BAA8B,CAAwB;QACrF,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,EAAE,UAAU,YAAA,EAAE,SAAS,WAAA,EAAE,gBAAgB,kBAAA,EAAE,CAAC;AACrD,CAAC,CAAC;AAXW,QAAA,cAAc,kBAWzB"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
import { InteractionEvent } from '@fluentui-react-native/interactive-hooks';
|
|
3
3
|
import { MenuTriggerProps } from './MenuTrigger.types';
|
|
4
4
|
export declare const useMenuTrigger: (_props: MenuTriggerProps) => {
|
|
5
|
-
onClick: (
|
|
5
|
+
onClick: (e: InteractionEvent) => void;
|
|
6
|
+
onHoverIn: (e: InteractionEvent) => void;
|
|
6
7
|
componentRef: import("react").RefObject<import("react").Component<{}, {}, any>>;
|
|
7
8
|
};
|
|
8
9
|
//# 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;
|
|
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;iBAcjC,gBAAgB;mBANd,gBAAgB;;CAWvC,CAAC"}
|
|
@@ -6,11 +6,17 @@ 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 openOnHover = context.openOnHover;
|
|
9
10
|
var triggerRef = context.triggerRef;
|
|
10
|
-
var
|
|
11
|
-
|
|
11
|
+
var onHoverIn = function (e) {
|
|
12
|
+
if (openOnHover) {
|
|
13
|
+
setOpen(e, true /* isOpen */);
|
|
14
|
+
}
|
|
12
15
|
};
|
|
13
|
-
|
|
16
|
+
var onClick = function (e) {
|
|
17
|
+
setOpen(e, !open);
|
|
18
|
+
};
|
|
19
|
+
return { onClick: onClick, onHoverIn: onHoverIn, componentRef: triggerRef };
|
|
14
20
|
};
|
|
15
21
|
exports.useMenuTrigger = useMenuTrigger;
|
|
16
22
|
//# 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;IAC1B,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAEtC,IAAM,OAAO,GAAG,UAAC,
|
|
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,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAEtC,IAAM,SAAS,GAAG,UAAC,CAAmB;QACpC,IAAI,WAAW,EAAE;YACf,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SAC/B;IACH,CAAC,CAAC;IAEF,IAAM,OAAO,GAAG,UAAC,CAAmB;QAClC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO,EAAE,OAAO,SAAA,EAAE,SAAS,WAAA,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AAC1D,CAAC,CAAC;AAnBW,QAAA,cAAc,kBAmBzB"}
|
|
@@ -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,
|
|
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,0BAMtB,CAAC;AAEH,eAAO,MAAM,YAAY,2BAAuB,CAAC;AACjD,eAAO,MAAM,cAAc,iBAAsC,CAAC"}
|
|
@@ -4,6 +4,7 @@ exports.useMenuContext = exports.MenuProvider = exports.MenuContext = void 0;
|
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var React = (0, tslib_1.__importStar)(require("react"));
|
|
6
6
|
exports.MenuContext = React.createContext({
|
|
7
|
+
isControlled: false,
|
|
7
8
|
isSubmenu: false,
|
|
8
9
|
open: false,
|
|
9
10
|
setOpen: function () { return false; },
|
|
@@ -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,SAAS,EAAE,KAAK;IAChB,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"}
|
|
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,YAAY,EAAE,KAAK;IACnB,SAAS,EAAE,KAAK;IAChB,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
package/src/Menu/Menu.types.ts
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import type { IViewProps } from '@fluentui-react-native/adapters';
|
|
2
|
+
import { InteractionEvent } from '@fluentui-react-native/interactive-hooks';
|
|
2
3
|
import React from 'react';
|
|
3
4
|
|
|
4
5
|
export const menuName = 'Menu';
|
|
5
6
|
|
|
6
7
|
export interface MenuProps extends Omit<IViewProps, 'onPress'> {
|
|
8
|
+
defaultOpen?: boolean;
|
|
7
9
|
open?: boolean;
|
|
10
|
+
onOpenChange?: (e: InteractionEvent, isOpen: boolean) => void;
|
|
11
|
+
openOnHover?: boolean;
|
|
8
12
|
}
|
|
9
13
|
|
|
10
14
|
export interface MenuState extends MenuProps {
|
|
15
|
+
isControlled: boolean;
|
|
11
16
|
isSubmenu: boolean;
|
|
12
|
-
setOpen: (isOpen: boolean) => void;
|
|
17
|
+
setOpen: (e: InteractionEvent, isOpen: boolean) => void;
|
|
13
18
|
triggerRef: React.RefObject<React.Component>;
|
|
14
19
|
}
|
package/src/Menu/useMenu.ts
CHANGED
|
@@ -1,21 +1,44 @@
|
|
|
1
|
+
import { InteractionEvent } from '@fluentui-react-native/interactive-hooks';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
import { useMenuContext } from '../context/menuContext';
|
|
3
4
|
import { MenuProps, MenuState } from './Menu.types';
|
|
4
5
|
|
|
5
6
|
export const useMenu = (props: MenuProps): MenuState => {
|
|
6
|
-
const [open, setOpen] = useMenuOpenState(props);
|
|
7
7
|
const triggerRef = React.useRef(null);
|
|
8
8
|
const context = useMenuContext();
|
|
9
9
|
const isSubmenu = context.triggerRef !== null;
|
|
10
|
+
const isControlled = typeof props.open !== 'undefined';
|
|
11
|
+
const [open, setOpen] = useMenuOpenState(isControlled, props);
|
|
10
12
|
|
|
11
13
|
return {
|
|
14
|
+
...props,
|
|
12
15
|
open,
|
|
13
16
|
setOpen,
|
|
14
17
|
triggerRef,
|
|
15
18
|
isSubmenu,
|
|
19
|
+
isControlled,
|
|
16
20
|
};
|
|
17
21
|
};
|
|
18
22
|
|
|
19
|
-
const useMenuOpenState = (props: MenuProps) => {
|
|
20
|
-
|
|
23
|
+
const useMenuOpenState = (isControlled: boolean, props: MenuProps): [boolean, (e: InteractionEvent, isOpen: boolean) => void] => {
|
|
24
|
+
const { defaultOpen, onOpenChange, open } = props;
|
|
25
|
+
const initialState = typeof defaultOpen !== 'undefined' ? defaultOpen : !!open;
|
|
26
|
+
const [openInternal, setOpenInternal] = React.useState<boolean>(initialState);
|
|
27
|
+
|
|
28
|
+
const state = isControlled ? open : openInternal;
|
|
29
|
+
|
|
30
|
+
const setOpen = React.useCallback(
|
|
31
|
+
(e: InteractionEvent, isOpen: boolean) => {
|
|
32
|
+
const openPrev = state;
|
|
33
|
+
if (!isControlled) {
|
|
34
|
+
setOpenInternal(isOpen);
|
|
35
|
+
}
|
|
36
|
+
if (onOpenChange && openPrev !== isOpen) {
|
|
37
|
+
onOpenChange(e, isOpen);
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
[isControlled, state, onOpenChange, setOpenInternal],
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
return [state, setOpen];
|
|
21
44
|
};
|
|
@@ -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 {
|
|
5
|
+
return { ...state };
|
|
6
6
|
};
|
|
@@ -10,7 +10,13 @@ export const MenuPopover = stagedComponent((props: MenuPopoverProps) => {
|
|
|
10
10
|
|
|
11
11
|
return (_rest: MenuPopoverProps, children: React.ReactNode) => {
|
|
12
12
|
return (
|
|
13
|
-
<Callout
|
|
13
|
+
<Callout
|
|
14
|
+
borderWidth={1}
|
|
15
|
+
borderColor={theme.colors.neutralStrokeAccessible}
|
|
16
|
+
target={state.triggerRef}
|
|
17
|
+
onDismiss={state.onDismiss}
|
|
18
|
+
dismissBehaviors={state.dismissBehaviors}
|
|
19
|
+
>
|
|
14
20
|
{children}
|
|
15
21
|
</Callout>
|
|
16
22
|
);
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import type { IViewProps } from '@fluentui-react-native/adapters';
|
|
2
|
+
import { DismissBehaviors } from '@fluentui-react-native/callout';
|
|
2
3
|
|
|
3
4
|
export const menuPopoverName = 'MenuPopover';
|
|
4
5
|
|
|
5
6
|
export interface MenuPopoverProps extends Omit<IViewProps, 'onPress'> {}
|
|
6
7
|
|
|
7
8
|
export interface MenuPopoverState {
|
|
9
|
+
dismissBehaviors: DismissBehaviors[];
|
|
10
|
+
onDismiss: () => void;
|
|
8
11
|
triggerRef: React.RefObject<React.Component>;
|
|
9
12
|
}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { DismissBehaviors } from '@fluentui-react-native/callout';
|
|
1
3
|
import { useMenuContext } from '../context/menuContext';
|
|
2
4
|
import { MenuPopoverProps, MenuPopoverState } from './MenuPopover.types';
|
|
3
5
|
|
|
4
6
|
export const useMenuPopover = (_props: MenuPopoverProps): MenuPopoverState => {
|
|
5
7
|
const context = useMenuContext();
|
|
8
|
+
const setOpen = context.setOpen;
|
|
6
9
|
|
|
7
10
|
const triggerRef = context.triggerRef;
|
|
11
|
+
const onDismiss = React.useCallback(() => setOpen(undefined, false /* isOpen */), [setOpen]);
|
|
12
|
+
const dismissBehaviors = context.isControlled
|
|
13
|
+
? (['preventDismissOnKeyDown', 'preventDismissOnClickOutside'] as DismissBehaviors[])
|
|
14
|
+
: undefined;
|
|
8
15
|
|
|
9
|
-
return { triggerRef };
|
|
16
|
+
return { triggerRef, onDismiss, dismissBehaviors };
|
|
10
17
|
};
|
|
@@ -7,11 +7,18 @@ export const useMenuTrigger = (_props: MenuTriggerProps) => {
|
|
|
7
7
|
|
|
8
8
|
const setOpen = context.setOpen;
|
|
9
9
|
const open = context.open;
|
|
10
|
+
const openOnHover = context.openOnHover;
|
|
10
11
|
const triggerRef = context.triggerRef;
|
|
11
12
|
|
|
12
|
-
const
|
|
13
|
-
|
|
13
|
+
const onHoverIn = (e: InteractionEvent) => {
|
|
14
|
+
if (openOnHover) {
|
|
15
|
+
setOpen(e, true /* isOpen */);
|
|
16
|
+
}
|
|
14
17
|
};
|
|
15
18
|
|
|
16
|
-
|
|
19
|
+
const onClick = (e: InteractionEvent) => {
|
|
20
|
+
setOpen(e, !open);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
return { onClick, onHoverIn, componentRef: triggerRef };
|
|
17
24
|
};
|