@fluentui-react-native/menu 1.0.73 → 1.0.74
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/MenuTrigger/MenuTrigger.d.ts +3 -2
- package/lib/MenuTrigger/MenuTrigger.d.ts.map +1 -1
- package/lib/MenuTrigger/MenuTrigger.js +13 -20
- package/lib/MenuTrigger/MenuTrigger.js.map +1 -1
- package/lib/MenuTrigger/MenuTrigger.types.d.ts +11 -1
- package/lib/MenuTrigger/MenuTrigger.types.d.ts.map +1 -1
- package/lib/MenuTrigger/MenuTrigger.types.js.map +1 -1
- package/lib/MenuTrigger/useMenuTrigger.d.ts +2 -2
- package/lib/MenuTrigger/useMenuTrigger.d.ts.map +1 -1
- package/lib/MenuTrigger/useMenuTrigger.js +28 -8
- package/lib/MenuTrigger/useMenuTrigger.js.map +1 -1
- package/lib/MenuTrigger/useMergeRefs.d.ts +20 -0
- package/lib/MenuTrigger/useMergeRefs.d.ts.map +1 -0
- package/lib/MenuTrigger/useMergeRefs.js +36 -0
- package/lib/MenuTrigger/useMergeRefs.js.map +1 -0
- package/lib/__tests__/Menu.test.js +1 -1
- package/lib/__tests__/Menu.test.js.map +1 -1
- package/lib-commonjs/MenuTrigger/MenuTrigger.d.ts +3 -2
- package/lib-commonjs/MenuTrigger/MenuTrigger.d.ts.map +1 -1
- package/lib-commonjs/MenuTrigger/MenuTrigger.js +14 -20
- package/lib-commonjs/MenuTrigger/MenuTrigger.js.map +1 -1
- package/lib-commonjs/MenuTrigger/MenuTrigger.types.d.ts +11 -1
- package/lib-commonjs/MenuTrigger/MenuTrigger.types.d.ts.map +1 -1
- package/lib-commonjs/MenuTrigger/MenuTrigger.types.js.map +1 -1
- package/lib-commonjs/MenuTrigger/useMenuTrigger.d.ts +2 -2
- package/lib-commonjs/MenuTrigger/useMenuTrigger.d.ts.map +1 -1
- package/lib-commonjs/MenuTrigger/useMenuTrigger.js +27 -8
- package/lib-commonjs/MenuTrigger/useMenuTrigger.js.map +1 -1
- package/lib-commonjs/MenuTrigger/useMergeRefs.d.ts +20 -0
- package/lib-commonjs/MenuTrigger/useMergeRefs.d.ts.map +1 -0
- package/lib-commonjs/MenuTrigger/useMergeRefs.js +40 -0
- package/lib-commonjs/MenuTrigger/useMergeRefs.js.map +1 -0
- package/lib-commonjs/__tests__/Menu.test.js +1 -1
- package/lib-commonjs/__tests__/Menu.test.js.map +1 -1
- package/package.json +1 -1
- package/src/MenuTrigger/MenuTrigger.tsx +15 -23
- package/src/MenuTrigger/MenuTrigger.types.ts +12 -0
- package/src/MenuTrigger/useMenuTrigger.ts +44 -9
- package/src/MenuTrigger/useMergeRefs.ts +42 -0
- package/src/__tests__/Menu.test.tsx +1 -1
- package/src/__tests__/__snapshots__/Menu.test.tsx.snap +8 -8
- package/lib/MenuTrigger/getRevisedProps.d.ts +0 -11
- package/lib/MenuTrigger/getRevisedProps.d.ts.map +0 -1
- package/lib/MenuTrigger/getRevisedProps.js +0 -45
- package/lib/MenuTrigger/getRevisedProps.js.map +0 -1
- package/lib-commonjs/MenuTrigger/getRevisedProps.d.ts +0 -11
- package/lib-commonjs/MenuTrigger/getRevisedProps.d.ts.map +0 -1
- package/lib-commonjs/MenuTrigger/getRevisedProps.js +0 -48
- package/lib-commonjs/MenuTrigger/getRevisedProps.js.map +0 -1
- package/src/MenuTrigger/getRevisedProps.ts +0 -52
package/CHANGELOG.json
CHANGED
|
@@ -2,7 +2,22 @@
|
|
|
2
2
|
"name": "@fluentui-react-native/menu",
|
|
3
3
|
"entries": [
|
|
4
4
|
{
|
|
5
|
-
"date": "Fri, 11 Nov 2022
|
|
5
|
+
"date": "Fri, 11 Nov 2022 19:03:29 GMT",
|
|
6
|
+
"tag": "@fluentui-react-native/menu_v1.0.74",
|
|
7
|
+
"version": "1.0.74",
|
|
8
|
+
"comments": {
|
|
9
|
+
"patch": [
|
|
10
|
+
{
|
|
11
|
+
"author": "ruaraki@microsoft.com",
|
|
12
|
+
"package": "@fluentui-react-native/menu",
|
|
13
|
+
"commit": "64b20dfcc58d60e3d609fc8ca07ef4043a21e5c8",
|
|
14
|
+
"comment": "Add ref merging to useMenuTrigger"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"date": "Fri, 11 Nov 2022 18:06:31 GMT",
|
|
6
21
|
"tag": "@fluentui-react-native/menu_v1.0.73",
|
|
7
22
|
"version": "1.0.73",
|
|
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, 11 Nov 2022
|
|
3
|
+
This log was last generated on Fri, 11 Nov 2022 19:03:29 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 1.0.74
|
|
8
|
+
|
|
9
|
+
Fri, 11 Nov 2022 19:03:29 GMT
|
|
10
|
+
|
|
11
|
+
### Patches
|
|
12
|
+
|
|
13
|
+
- Add ref merging to useMenuTrigger (ruaraki@microsoft.com)
|
|
14
|
+
|
|
7
15
|
## 1.0.73
|
|
8
16
|
|
|
9
|
-
Fri, 11 Nov 2022 18:
|
|
17
|
+
Fri, 11 Nov 2022 18:06:31 GMT
|
|
10
18
|
|
|
11
19
|
### Patches
|
|
12
20
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { MenuTriggerProps } from './MenuTrigger.types';
|
|
3
|
+
export declare const MenuTrigger: React.FunctionComponent<MenuTriggerProps>;
|
|
3
4
|
export default MenuTrigger;
|
|
4
5
|
//# sourceMappingURL=MenuTrigger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAmB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAIxE,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAejE,CAAC;AAGF,eAAe,WAAW,CAAC"}
|
|
@@ -1,27 +1,20 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { stagedComponent } from '@fluentui-react-native/framework';
|
|
1
|
+
import * as React from 'react';
|
|
3
2
|
import { menuTriggerName } from './MenuTrigger.types';
|
|
4
3
|
import { useMenuTrigger } from './useMenuTrigger';
|
|
5
4
|
import { MenuTriggerProvider } from '../context/menuTriggerContext';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var childrenArray = React.Children.toArray(children);
|
|
11
|
-
if (__DEV__) {
|
|
12
|
-
if (childrenArray.length !== 1) {
|
|
13
|
-
console.warn('Only expecting one child for MenuTrigger');
|
|
14
|
-
}
|
|
5
|
+
export var MenuTrigger = function (props) {
|
|
6
|
+
if (__DEV__) {
|
|
7
|
+
if (!React.Children.only(props.children)) {
|
|
8
|
+
console.warn('Only expecting one child for MenuTrigger');
|
|
15
9
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
});
|
|
10
|
+
}
|
|
11
|
+
var menuTrigger = useMenuTrigger(props.children.props);
|
|
12
|
+
// In order to properly support accessibility without erasing props set on the
|
|
13
|
+
// child component which may affect accessibility, we need to modify the
|
|
14
|
+
// state in the inner render so we can access the child component and its props.
|
|
15
|
+
var revised = React.cloneElement(props.children, menuTrigger.props);
|
|
16
|
+
return React.createElement(MenuTriggerProvider, { value: menuTrigger.hasSubmenu }, revised);
|
|
17
|
+
};
|
|
25
18
|
MenuTrigger.displayName = menuTriggerName;
|
|
26
19
|
export default MenuTrigger;
|
|
27
20
|
//# sourceMappingURL=MenuTrigger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAoB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,CAAC,IAAM,WAAW,GAA8C,UAAC,KAAuB;IAC5F,IAAI,OAAO,EAAE;QACX,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YACxC,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;SAC1D;KACF;IAED,IAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEzD,8EAA8E;IAC9E,wEAAwE;IACxE,gFAAgF;IAChF,IAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IAEtE,OAAO,oBAAC,mBAAmB,IAAC,KAAK,EAAE,WAAW,CAAC,UAAU,IAAG,OAAO,CAAuB,CAAC;AAC7F,CAAC,CAAC;AACF,WAAW,CAAC,WAAW,GAAG,eAAe,CAAC;AAE1C,eAAe,WAAW,CAAC"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
import * as React from 'react';
|
|
2
2
|
import { InteractionEvent, PressablePropsExtended } from '@fluentui-react-native/interactive-hooks';
|
|
3
3
|
export declare const menuTriggerName = "MenuTrigger";
|
|
4
|
+
/**
|
|
5
|
+
* Represents single react element (or null), which is the
|
|
6
|
+
* type of the child of MenuTrigger. Notably this excludes string, number,
|
|
7
|
+
* and array of elements as children, which MenuTrigger doesn't support.
|
|
8
|
+
*/
|
|
9
|
+
declare type SingleReactElement = React.ReactElement | null;
|
|
10
|
+
export interface MenuTriggerProps {
|
|
11
|
+
children?: SingleReactElement;
|
|
12
|
+
}
|
|
4
13
|
export interface MenuTriggerChildProps extends Omit<PressablePropsExtended, 'onPress'> {
|
|
5
14
|
/**
|
|
6
15
|
* A RefObject to refer to the trigger component.
|
|
@@ -15,4 +24,5 @@ export interface MenuTriggerState {
|
|
|
15
24
|
props: MenuTriggerChildProps;
|
|
16
25
|
hasSubmenu: boolean;
|
|
17
26
|
}
|
|
27
|
+
export {};
|
|
18
28
|
//# sourceMappingURL=MenuTrigger.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuTrigger.types.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MenuTrigger.types.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAEpG,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,aAAK,kBAAkB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC;IACpF;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEhD;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,UAAU,EAAE,OAAO,CAAC;CACrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuTrigger.types.js","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MenuTrigger.types.js","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,IAAM,eAAe,GAAG,aAAa,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { MenuTriggerState } from './MenuTrigger.types';
|
|
2
|
-
export declare const useMenuTrigger: () => MenuTriggerState;
|
|
1
|
+
import { MenuTriggerChildProps, MenuTriggerState } from './MenuTrigger.types';
|
|
2
|
+
export declare const useMenuTrigger: (childProps: MenuTriggerChildProps) => MenuTriggerState;
|
|
3
3
|
//# sourceMappingURL=useMenuTrigger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"useMenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAW9E,eAAO,MAAM,cAAc,eAAgB,qBAAqB,KAAG,gBAsHlE,CAAC"}
|
|
@@ -1,14 +1,29 @@
|
|
|
1
|
+
import { __assign, __spreadArray } from "tslib";
|
|
1
2
|
import { useMenuContext } from '../context/menuContext';
|
|
2
3
|
import { Platform } from 'react-native';
|
|
3
4
|
import React from 'react';
|
|
4
5
|
import { hoverDelayDefault } from '../consts';
|
|
5
|
-
|
|
6
|
+
import { useMergedRefs } from './useMergeRefs';
|
|
7
|
+
var baseAccessibilityActions = Platform.OS === 'win32' ? [{ name: 'Expand' }, { name: 'Collapse' }] : [];
|
|
6
8
|
var expandedState = { expanded: true };
|
|
7
9
|
var collapsedState = { expanded: false };
|
|
8
|
-
export var useMenuTrigger = function () {
|
|
10
|
+
export var useMenuTrigger = function (childProps) {
|
|
9
11
|
var context = useMenuContext();
|
|
10
12
|
var _a = context.hoverDelay, hoverDelay = _a === void 0 ? hoverDelayDefault : _a, open = context.open, openOnHover = context.openOnHover, popoverHoverOutTimer = context.popoverHoverOutTimer, setOpen = context.setOpen, setTriggerHoverOutTimer = context.setTriggerHoverOutTimer, triggerHoverOutTimer = context.triggerHoverOutTimer, triggerRef = context.triggerRef;
|
|
11
|
-
var accessibilityState =
|
|
13
|
+
var childAccessibilityActions = childProps.accessibilityActions, childAccessibilityState = childProps.accessibilityState, childOnAccessibilityAction = childProps.onAccessibilityAction, childOnClick = childProps.onClick, childOnHoverIn = childProps.onHoverIn, childOnHoverOut = childProps.onHoverOut, childComponentRef = childProps.componentRef;
|
|
14
|
+
var accessibilityActions = React.useMemo(function () {
|
|
15
|
+
if (childAccessibilityActions) {
|
|
16
|
+
return __spreadArray(__spreadArray([], baseAccessibilityActions, true), childAccessibilityActions, true);
|
|
17
|
+
}
|
|
18
|
+
return baseAccessibilityActions;
|
|
19
|
+
}, [childAccessibilityActions]);
|
|
20
|
+
var accessibilityState = React.useMemo(function () {
|
|
21
|
+
var baseState = open ? expandedState : collapsedState;
|
|
22
|
+
if (childAccessibilityState) {
|
|
23
|
+
return __assign(__assign({}, baseState), childAccessibilityState);
|
|
24
|
+
}
|
|
25
|
+
return baseState;
|
|
26
|
+
}, [childAccessibilityState, open]);
|
|
12
27
|
var onAccessibilityAction = React.useCallback(function (e) {
|
|
13
28
|
if (Platform.OS === 'win32') {
|
|
14
29
|
switch (e.nativeEvent.actionName) {
|
|
@@ -20,7 +35,8 @@ export var useMenuTrigger = function () {
|
|
|
20
35
|
break;
|
|
21
36
|
}
|
|
22
37
|
}
|
|
23
|
-
|
|
38
|
+
childOnAccessibilityAction && childOnAccessibilityAction(e);
|
|
39
|
+
}, [childOnAccessibilityAction, setOpen]);
|
|
24
40
|
var onHoverIn = React.useCallback(function (e) {
|
|
25
41
|
if (openOnHover) {
|
|
26
42
|
clearTimeout(popoverHoverOutTimer);
|
|
@@ -30,7 +46,8 @@ export var useMenuTrigger = function () {
|
|
|
30
46
|
setOpen(e, true /* isOpen */);
|
|
31
47
|
}, hoverDelay);
|
|
32
48
|
}
|
|
33
|
-
|
|
49
|
+
childOnHoverIn && childOnHoverIn(e);
|
|
50
|
+
}, [childOnHoverIn, hoverDelay, openOnHover, setOpen, triggerHoverOutTimer, popoverHoverOutTimer]);
|
|
34
51
|
var onHoverOut = React.useCallback(function (e) {
|
|
35
52
|
if (openOnHover) {
|
|
36
53
|
e.persist();
|
|
@@ -39,10 +56,13 @@ export var useMenuTrigger = function () {
|
|
|
39
56
|
}, hoverDelay);
|
|
40
57
|
setTriggerHoverOutTimer(timer);
|
|
41
58
|
}
|
|
42
|
-
|
|
59
|
+
childOnHoverOut && childOnHoverOut(e);
|
|
60
|
+
}, [childOnHoverOut, hoverDelay, openOnHover, setOpen, setTriggerHoverOutTimer]);
|
|
43
61
|
var onClick = React.useCallback(function (e) {
|
|
44
62
|
setOpen(e, !open);
|
|
45
|
-
|
|
63
|
+
childOnClick && childOnClick(e);
|
|
64
|
+
}, [childOnClick, open, setOpen]);
|
|
65
|
+
var ref = useMergedRefs(triggerRef, childComponentRef);
|
|
46
66
|
React.useEffect(function () {
|
|
47
67
|
return function cleanup() {
|
|
48
68
|
clearTimeout(triggerHoverOutTimer);
|
|
@@ -53,7 +73,7 @@ export var useMenuTrigger = function () {
|
|
|
53
73
|
onClick: onClick,
|
|
54
74
|
onHoverIn: onHoverIn,
|
|
55
75
|
onHoverOut: onHoverOut,
|
|
56
|
-
componentRef:
|
|
76
|
+
componentRef: ref,
|
|
57
77
|
accessibilityState: accessibilityState,
|
|
58
78
|
accessibilityActions: accessibilityActions,
|
|
59
79
|
onAccessibilityAction: onAccessibilityAction,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAqD,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"useMenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copied from @fluentui/react-utilities
|
|
3
|
+
*
|
|
4
|
+
* Keeping the file local to Menu for now while looking into whether
|
|
5
|
+
* we can pull in @fluentui/react-utilities package
|
|
6
|
+
*/
|
|
7
|
+
import * as React from 'react';
|
|
8
|
+
/**
|
|
9
|
+
* A Ref function which can be treated like a ref object in that it has an attached
|
|
10
|
+
* current property, which will be updated as the ref is evaluated.
|
|
11
|
+
*/
|
|
12
|
+
export declare type RefObjectFunction<T> = React.RefObject<T> & ((value: T) => void);
|
|
13
|
+
/**
|
|
14
|
+
* React hook to merge multiple React refs (either MutableRefObjects or ref callbacks) into a single ref callback that
|
|
15
|
+
* updates all provided refs
|
|
16
|
+
* @param refs - Refs to collectively update with one ref value.
|
|
17
|
+
* @returns A function with an attached "current" prop, so that it can be treated like a RefObject.
|
|
18
|
+
*/
|
|
19
|
+
export declare function useMergedRefs<T>(...refs: (React.Ref<T> | undefined)[]): RefObjectFunction<T>;
|
|
20
|
+
//# sourceMappingURL=useMergeRefs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMergeRefs.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/useMergeRefs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;GAGG;AACH,oBAAY,iBAAiB,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;AAE7E;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAoB5F"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copied from @fluentui/react-utilities
|
|
3
|
+
*
|
|
4
|
+
* Keeping the file local to Menu for now while looking into whether
|
|
5
|
+
* we can pull in @fluentui/react-utilities package
|
|
6
|
+
*/
|
|
7
|
+
import { __spreadArray } from "tslib";
|
|
8
|
+
import * as React from 'react';
|
|
9
|
+
/**
|
|
10
|
+
* React hook to merge multiple React refs (either MutableRefObjects or ref callbacks) into a single ref callback that
|
|
11
|
+
* updates all provided refs
|
|
12
|
+
* @param refs - Refs to collectively update with one ref value.
|
|
13
|
+
* @returns A function with an attached "current" prop, so that it can be treated like a RefObject.
|
|
14
|
+
*/
|
|
15
|
+
export function useMergedRefs() {
|
|
16
|
+
var refs = [];
|
|
17
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
18
|
+
refs[_i] = arguments[_i];
|
|
19
|
+
}
|
|
20
|
+
var mergedCallback = React.useCallback(function (value) {
|
|
21
|
+
// Update the "current" prop hanging on the function.
|
|
22
|
+
mergedCallback.current = value;
|
|
23
|
+
for (var _i = 0, refs_1 = refs; _i < refs_1.length; _i++) {
|
|
24
|
+
var ref = refs_1[_i];
|
|
25
|
+
if (typeof ref === 'function') {
|
|
26
|
+
ref(value);
|
|
27
|
+
}
|
|
28
|
+
else if (ref) {
|
|
29
|
+
// work around the immutability of the React.Ref type
|
|
30
|
+
ref.current = value;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}, __spreadArray([], refs, true));
|
|
34
|
+
return mergedCallback;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=useMergeRefs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMergeRefs.js","sourceRoot":"","sources":["../../src/MenuTrigger/useMergeRefs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B;;;;;GAKG;AACH,MAAM,UAAU,aAAa;IAAI,cAAqC;SAArC,UAAqC,EAArC,qBAAqC,EAArC,IAAqC;QAArC,yBAAqC;;IACpE,IAAM,cAAc,GAAyB,KAAK,CAAC,WAAW,CAC5D,UAAC,KAAQ;QACP,qDAAqD;QACpD,cAAuD,CAAC,OAAO,GAAG,KAAK,CAAC;QAEzE,KAAkB,UAAI,EAAJ,aAAI,EAAJ,kBAAI,EAAJ,IAAI,EAAE;YAAnB,IAAM,GAAG,aAAA;YACZ,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;gBAC7B,GAAG,CAAC,KAAK,CAAC,CAAC;aACZ;iBAAM,IAAI,GAAG,EAAE;gBACd,qDAAqD;gBACpD,GAA4C,CAAC,OAAO,GAAG,KAAK,CAAC;aAC/D;SACF;IACH,CAAC,oBAEG,IAAI,QAC0B,CAAC;IAErC,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -10,7 +10,7 @@ import { MenuItem } from '../MenuItem/MenuItem';
|
|
|
10
10
|
import { MenuItemCheckbox } from '../MenuItemCheckbox/MenuItemCheckbox';
|
|
11
11
|
import { MenuDivider } from '../MenuDivider/MenuDivider';
|
|
12
12
|
import { MenuItemRadio } from '../MenuItemRadio/MenuItemRadio';
|
|
13
|
-
describe('
|
|
13
|
+
describe('Menu component tests', function () {
|
|
14
14
|
it('Menu default', function () {
|
|
15
15
|
var tree = renderer
|
|
16
16
|
.create(React.createElement(Menu, null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.test.js","sourceRoot":"","sources":["../../src/__tests__/Menu.test.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,QAAQ,IAAI,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"Menu.test.js","sourceRoot":"","sources":["../../src/__tests__/Menu.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { MenuTriggerProps } from './MenuTrigger.types';
|
|
3
|
+
export declare const MenuTrigger: React.FunctionComponent<MenuTriggerProps>;
|
|
3
4
|
export default MenuTrigger;
|
|
4
5
|
//# sourceMappingURL=MenuTrigger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAmB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAIxE,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAejE,CAAC;AAGF,eAAe,WAAW,CAAC"}
|
|
@@ -2,30 +2,24 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MenuTrigger = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
|
-
var
|
|
6
|
-
var framework_1 = require("@fluentui-react-native/framework");
|
|
5
|
+
var React = (0, tslib_1.__importStar)(require("react"));
|
|
7
6
|
var MenuTrigger_types_1 = require("./MenuTrigger.types");
|
|
8
7
|
var useMenuTrigger_1 = require("./useMenuTrigger");
|
|
9
8
|
var menuTriggerContext_1 = require("../context/menuTriggerContext");
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
var childrenArray = react_1.default.Children.toArray(children);
|
|
15
|
-
if (__DEV__) {
|
|
16
|
-
if (childrenArray.length !== 1) {
|
|
17
|
-
console.warn('Only expecting one child for MenuTrigger');
|
|
18
|
-
}
|
|
9
|
+
var MenuTrigger = function (props) {
|
|
10
|
+
if (__DEV__) {
|
|
11
|
+
if (!React.Children.only(props.children)) {
|
|
12
|
+
console.warn('Only expecting one child for MenuTrigger');
|
|
19
13
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
14
|
+
}
|
|
15
|
+
var menuTrigger = (0, useMenuTrigger_1.useMenuTrigger)(props.children.props);
|
|
16
|
+
// In order to properly support accessibility without erasing props set on the
|
|
17
|
+
// child component which may affect accessibility, we need to modify the
|
|
18
|
+
// state in the inner render so we can access the child component and its props.
|
|
19
|
+
var revised = React.cloneElement(props.children, menuTrigger.props);
|
|
20
|
+
return React.createElement(menuTriggerContext_1.MenuTriggerProvider, { value: menuTrigger.hasSubmenu }, revised);
|
|
21
|
+
};
|
|
22
|
+
exports.MenuTrigger = MenuTrigger;
|
|
29
23
|
exports.MenuTrigger.displayName = MenuTrigger_types_1.menuTriggerName;
|
|
30
24
|
exports.default = exports.MenuTrigger;
|
|
31
25
|
//# sourceMappingURL=MenuTrigger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.tsx"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"MenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.tsx"],"names":[],"mappings":";;;;AAAA,wDAA+B;AAC/B,yDAAwE;AACxE,mDAAkD;AAClD,oEAAoE;AAE7D,IAAM,WAAW,GAA8C,UAAC,KAAuB;IAC5F,IAAI,OAAO,EAAE;QACX,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YACxC,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;SAC1D;KACF;IAED,IAAM,WAAW,GAAG,IAAA,+BAAc,EAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEzD,8EAA8E;IAC9E,wEAAwE;IACxE,gFAAgF;IAChF,IAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IAEtE,OAAO,oBAAC,wCAAmB,IAAC,KAAK,EAAE,WAAW,CAAC,UAAU,IAAG,OAAO,CAAuB,CAAC;AAC7F,CAAC,CAAC;AAfW,QAAA,WAAW,eAetB;AACF,mBAAW,CAAC,WAAW,GAAG,mCAAe,CAAC;AAE1C,kBAAe,mBAAW,CAAC"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
import * as React from 'react';
|
|
2
2
|
import { InteractionEvent, PressablePropsExtended } from '@fluentui-react-native/interactive-hooks';
|
|
3
3
|
export declare const menuTriggerName = "MenuTrigger";
|
|
4
|
+
/**
|
|
5
|
+
* Represents single react element (or null), which is the
|
|
6
|
+
* type of the child of MenuTrigger. Notably this excludes string, number,
|
|
7
|
+
* and array of elements as children, which MenuTrigger doesn't support.
|
|
8
|
+
*/
|
|
9
|
+
declare type SingleReactElement = React.ReactElement | null;
|
|
10
|
+
export interface MenuTriggerProps {
|
|
11
|
+
children?: SingleReactElement;
|
|
12
|
+
}
|
|
4
13
|
export interface MenuTriggerChildProps extends Omit<PressablePropsExtended, 'onPress'> {
|
|
5
14
|
/**
|
|
6
15
|
* A RefObject to refer to the trigger component.
|
|
@@ -15,4 +24,5 @@ export interface MenuTriggerState {
|
|
|
15
24
|
props: MenuTriggerChildProps;
|
|
16
25
|
hasSubmenu: boolean;
|
|
17
26
|
}
|
|
27
|
+
export {};
|
|
18
28
|
//# sourceMappingURL=MenuTrigger.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuTrigger.types.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MenuTrigger.types.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAEpG,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,aAAK,kBAAkB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC;IACpF;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEhD;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,UAAU,EAAE,OAAO,CAAC;CACrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuTrigger.types.js","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"MenuTrigger.types.js","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.types.ts"],"names":[],"mappings":";;;AAGa,QAAA,eAAe,GAAG,aAAa,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { MenuTriggerState } from './MenuTrigger.types';
|
|
2
|
-
export declare const useMenuTrigger: () => MenuTriggerState;
|
|
1
|
+
import { MenuTriggerChildProps, MenuTriggerState } from './MenuTrigger.types';
|
|
2
|
+
export declare const useMenuTrigger: (childProps: MenuTriggerChildProps) => MenuTriggerState;
|
|
3
3
|
//# sourceMappingURL=useMenuTrigger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"useMenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAW9E,eAAO,MAAM,cAAc,eAAgB,qBAAqB,KAAG,gBAsHlE,CAAC"}
|
|
@@ -6,13 +6,27 @@ var menuContext_1 = require("../context/menuContext");
|
|
|
6
6
|
var react_native_1 = require("react-native");
|
|
7
7
|
var react_1 = (0, tslib_1.__importDefault)(require("react"));
|
|
8
8
|
var consts_1 = require("../consts");
|
|
9
|
-
var
|
|
9
|
+
var useMergeRefs_1 = require("./useMergeRefs");
|
|
10
|
+
var baseAccessibilityActions = react_native_1.Platform.OS === 'win32' ? [{ name: 'Expand' }, { name: 'Collapse' }] : [];
|
|
10
11
|
var expandedState = { expanded: true };
|
|
11
12
|
var collapsedState = { expanded: false };
|
|
12
|
-
var useMenuTrigger = function () {
|
|
13
|
+
var useMenuTrigger = function (childProps) {
|
|
13
14
|
var context = (0, menuContext_1.useMenuContext)();
|
|
14
15
|
var _a = context.hoverDelay, hoverDelay = _a === void 0 ? consts_1.hoverDelayDefault : _a, open = context.open, openOnHover = context.openOnHover, popoverHoverOutTimer = context.popoverHoverOutTimer, setOpen = context.setOpen, setTriggerHoverOutTimer = context.setTriggerHoverOutTimer, triggerHoverOutTimer = context.triggerHoverOutTimer, triggerRef = context.triggerRef;
|
|
15
|
-
var accessibilityState =
|
|
16
|
+
var childAccessibilityActions = childProps.accessibilityActions, childAccessibilityState = childProps.accessibilityState, childOnAccessibilityAction = childProps.onAccessibilityAction, childOnClick = childProps.onClick, childOnHoverIn = childProps.onHoverIn, childOnHoverOut = childProps.onHoverOut, childComponentRef = childProps.componentRef;
|
|
17
|
+
var accessibilityActions = react_1.default.useMemo(function () {
|
|
18
|
+
if (childAccessibilityActions) {
|
|
19
|
+
return (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], baseAccessibilityActions, true), childAccessibilityActions, true);
|
|
20
|
+
}
|
|
21
|
+
return baseAccessibilityActions;
|
|
22
|
+
}, [childAccessibilityActions]);
|
|
23
|
+
var accessibilityState = react_1.default.useMemo(function () {
|
|
24
|
+
var baseState = open ? expandedState : collapsedState;
|
|
25
|
+
if (childAccessibilityState) {
|
|
26
|
+
return (0, tslib_1.__assign)((0, tslib_1.__assign)({}, baseState), childAccessibilityState);
|
|
27
|
+
}
|
|
28
|
+
return baseState;
|
|
29
|
+
}, [childAccessibilityState, open]);
|
|
16
30
|
var onAccessibilityAction = react_1.default.useCallback(function (e) {
|
|
17
31
|
if (react_native_1.Platform.OS === 'win32') {
|
|
18
32
|
switch (e.nativeEvent.actionName) {
|
|
@@ -24,7 +38,8 @@ var useMenuTrigger = function () {
|
|
|
24
38
|
break;
|
|
25
39
|
}
|
|
26
40
|
}
|
|
27
|
-
|
|
41
|
+
childOnAccessibilityAction && childOnAccessibilityAction(e);
|
|
42
|
+
}, [childOnAccessibilityAction, setOpen]);
|
|
28
43
|
var onHoverIn = react_1.default.useCallback(function (e) {
|
|
29
44
|
if (openOnHover) {
|
|
30
45
|
clearTimeout(popoverHoverOutTimer);
|
|
@@ -34,7 +49,8 @@ var useMenuTrigger = function () {
|
|
|
34
49
|
setOpen(e, true /* isOpen */);
|
|
35
50
|
}, hoverDelay);
|
|
36
51
|
}
|
|
37
|
-
|
|
52
|
+
childOnHoverIn && childOnHoverIn(e);
|
|
53
|
+
}, [childOnHoverIn, hoverDelay, openOnHover, setOpen, triggerHoverOutTimer, popoverHoverOutTimer]);
|
|
38
54
|
var onHoverOut = react_1.default.useCallback(function (e) {
|
|
39
55
|
if (openOnHover) {
|
|
40
56
|
e.persist();
|
|
@@ -43,10 +59,13 @@ var useMenuTrigger = function () {
|
|
|
43
59
|
}, hoverDelay);
|
|
44
60
|
setTriggerHoverOutTimer(timer);
|
|
45
61
|
}
|
|
46
|
-
|
|
62
|
+
childOnHoverOut && childOnHoverOut(e);
|
|
63
|
+
}, [childOnHoverOut, hoverDelay, openOnHover, setOpen, setTriggerHoverOutTimer]);
|
|
47
64
|
var onClick = react_1.default.useCallback(function (e) {
|
|
48
65
|
setOpen(e, !open);
|
|
49
|
-
|
|
66
|
+
childOnClick && childOnClick(e);
|
|
67
|
+
}, [childOnClick, open, setOpen]);
|
|
68
|
+
var ref = (0, useMergeRefs_1.useMergedRefs)(triggerRef, childComponentRef);
|
|
50
69
|
react_1.default.useEffect(function () {
|
|
51
70
|
return function cleanup() {
|
|
52
71
|
clearTimeout(triggerHoverOutTimer);
|
|
@@ -57,7 +76,7 @@ var useMenuTrigger = function () {
|
|
|
57
76
|
onClick: onClick,
|
|
58
77
|
onHoverIn: onHoverIn,
|
|
59
78
|
onHoverOut: onHoverOut,
|
|
60
|
-
componentRef:
|
|
79
|
+
componentRef: ref,
|
|
61
80
|
accessibilityState: accessibilityState,
|
|
62
81
|
accessibilityActions: accessibilityActions,
|
|
63
82
|
onAccessibilityAction: onAccessibilityAction,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":";;;;AAAA,sDAAwD;AAGxD,6CAA2F;AAC3F,6DAA0B;AAC1B,oCAA8C;
|
|
1
|
+
{"version":3,"file":"useMenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copied from @fluentui/react-utilities
|
|
3
|
+
*
|
|
4
|
+
* Keeping the file local to Menu for now while looking into whether
|
|
5
|
+
* we can pull in @fluentui/react-utilities package
|
|
6
|
+
*/
|
|
7
|
+
import * as React from 'react';
|
|
8
|
+
/**
|
|
9
|
+
* A Ref function which can be treated like a ref object in that it has an attached
|
|
10
|
+
* current property, which will be updated as the ref is evaluated.
|
|
11
|
+
*/
|
|
12
|
+
export declare type RefObjectFunction<T> = React.RefObject<T> & ((value: T) => void);
|
|
13
|
+
/**
|
|
14
|
+
* React hook to merge multiple React refs (either MutableRefObjects or ref callbacks) into a single ref callback that
|
|
15
|
+
* updates all provided refs
|
|
16
|
+
* @param refs - Refs to collectively update with one ref value.
|
|
17
|
+
* @returns A function with an attached "current" prop, so that it can be treated like a RefObject.
|
|
18
|
+
*/
|
|
19
|
+
export declare function useMergedRefs<T>(...refs: (React.Ref<T> | undefined)[]): RefObjectFunction<T>;
|
|
20
|
+
//# sourceMappingURL=useMergeRefs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMergeRefs.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/useMergeRefs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;GAGG;AACH,oBAAY,iBAAiB,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;AAE7E;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAoB5F"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copied from @fluentui/react-utilities
|
|
4
|
+
*
|
|
5
|
+
* Keeping the file local to Menu for now while looking into whether
|
|
6
|
+
* we can pull in @fluentui/react-utilities package
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.useMergedRefs = void 0;
|
|
10
|
+
var tslib_1 = require("tslib");
|
|
11
|
+
var React = (0, tslib_1.__importStar)(require("react"));
|
|
12
|
+
/**
|
|
13
|
+
* React hook to merge multiple React refs (either MutableRefObjects or ref callbacks) into a single ref callback that
|
|
14
|
+
* updates all provided refs
|
|
15
|
+
* @param refs - Refs to collectively update with one ref value.
|
|
16
|
+
* @returns A function with an attached "current" prop, so that it can be treated like a RefObject.
|
|
17
|
+
*/
|
|
18
|
+
function useMergedRefs() {
|
|
19
|
+
var refs = [];
|
|
20
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
21
|
+
refs[_i] = arguments[_i];
|
|
22
|
+
}
|
|
23
|
+
var mergedCallback = React.useCallback(function (value) {
|
|
24
|
+
// Update the "current" prop hanging on the function.
|
|
25
|
+
mergedCallback.current = value;
|
|
26
|
+
for (var _i = 0, refs_1 = refs; _i < refs_1.length; _i++) {
|
|
27
|
+
var ref = refs_1[_i];
|
|
28
|
+
if (typeof ref === 'function') {
|
|
29
|
+
ref(value);
|
|
30
|
+
}
|
|
31
|
+
else if (ref) {
|
|
32
|
+
// work around the immutability of the React.Ref type
|
|
33
|
+
ref.current = value;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}, (0, tslib_1.__spreadArray)([], refs, true));
|
|
37
|
+
return mergedCallback;
|
|
38
|
+
}
|
|
39
|
+
exports.useMergedRefs = useMergedRefs;
|
|
40
|
+
//# sourceMappingURL=useMergeRefs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMergeRefs.js","sourceRoot":"","sources":["../../src/MenuTrigger/useMergeRefs.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAEH,wDAA+B;AAQ/B;;;;;GAKG;AACH,SAAgB,aAAa;IAAI,cAAqC;SAArC,UAAqC,EAArC,qBAAqC,EAArC,IAAqC;QAArC,yBAAqC;;IACpE,IAAM,cAAc,GAAyB,KAAK,CAAC,WAAW,CAC5D,UAAC,KAAQ;QACP,qDAAqD;QACpD,cAAuD,CAAC,OAAO,GAAG,KAAK,CAAC;QAEzE,KAAkB,UAAI,EAAJ,aAAI,EAAJ,kBAAI,EAAJ,IAAI,EAAE;YAAnB,IAAM,GAAG,aAAA;YACZ,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;gBAC7B,GAAG,CAAC,KAAK,CAAC,CAAC;aACZ;iBAAM,IAAI,GAAG,EAAE;gBACd,qDAAqD;gBACpD,GAA4C,CAAC,OAAO,GAAG,KAAK,CAAC;aAC/D;SACF;IACH,CAAC,iCAEG,IAAI,QAC0B,CAAC;IAErC,OAAO,cAAc,CAAC;AACxB,CAAC;AApBD,sCAoBC"}
|
|
@@ -13,7 +13,7 @@ var MenuItem_1 = require("../MenuItem/MenuItem");
|
|
|
13
13
|
var MenuItemCheckbox_1 = require("../MenuItemCheckbox/MenuItemCheckbox");
|
|
14
14
|
var MenuDivider_1 = require("../MenuDivider/MenuDivider");
|
|
15
15
|
var MenuItemRadio_1 = require("../MenuItemRadio/MenuItemRadio");
|
|
16
|
-
describe('
|
|
16
|
+
describe('Menu component tests', function () {
|
|
17
17
|
it('Menu default', function () {
|
|
18
18
|
var tree = renderer
|
|
19
19
|
.create(React.createElement(Menu_1.Menu, null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.test.js","sourceRoot":"","sources":["../../src/__tests__/Menu.test.tsx"],"names":[],"mappings":";;;AAAA,wDAA+B;AAE/B,yEAAgD;AAChD,qCAAoC;AACpC,gEAAkE;AAClE,wFAAqD;AACrD,wDAAmE;AACnE,wFAAqD;AACrD,iDAAgD;AAChD,iDAAgD;AAChD,yEAAwE;AACxE,0DAAyD;AACzD,gEAA+D;AAE/D,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"Menu.test.js","sourceRoot":"","sources":["../../src/__tests__/Menu.test.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,32 +1,24 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import { menuTriggerName } from './MenuTrigger.types';
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { menuTriggerName, MenuTriggerProps } from './MenuTrigger.types';
|
|
4
3
|
import { useMenuTrigger } from './useMenuTrigger';
|
|
5
4
|
import { MenuTriggerProvider } from '../context/menuTriggerContext';
|
|
6
|
-
import { getRevisedProps } from './getRevisedProps';
|
|
7
5
|
|
|
8
|
-
export const MenuTrigger =
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const childrenArray = React.Children.toArray(children) as React.ReactElement[];
|
|
13
|
-
|
|
14
|
-
if (__DEV__) {
|
|
15
|
-
if (childrenArray.length !== 1) {
|
|
16
|
-
console.warn('Only expecting one child for MenuTrigger');
|
|
17
|
-
}
|
|
6
|
+
export const MenuTrigger: React.FunctionComponent<MenuTriggerProps> = (props: MenuTriggerProps) => {
|
|
7
|
+
if (__DEV__) {
|
|
8
|
+
if (!React.Children.only(props.children)) {
|
|
9
|
+
console.warn('Only expecting one child for MenuTrigger');
|
|
18
10
|
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const menuTrigger = useMenuTrigger(props.children.props);
|
|
19
14
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const revisedProps = getRevisedProps(menuTrigger, child.props);
|
|
25
|
-
const revised = React.cloneElement(child, revisedProps);
|
|
15
|
+
// In order to properly support accessibility without erasing props set on the
|
|
16
|
+
// child component which may affect accessibility, we need to modify the
|
|
17
|
+
// state in the inner render so we can access the child component and its props.
|
|
18
|
+
const revised = React.cloneElement(props.children, menuTrigger.props);
|
|
26
19
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
});
|
|
20
|
+
return <MenuTriggerProvider value={menuTrigger.hasSubmenu}>{revised}</MenuTriggerProvider>;
|
|
21
|
+
};
|
|
30
22
|
MenuTrigger.displayName = menuTriggerName;
|
|
31
23
|
|
|
32
24
|
export default MenuTrigger;
|
|
@@ -1,7 +1,19 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
1
2
|
import { InteractionEvent, PressablePropsExtended } from '@fluentui-react-native/interactive-hooks';
|
|
2
3
|
|
|
3
4
|
export const menuTriggerName = 'MenuTrigger';
|
|
4
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Represents single react element (or null), which is the
|
|
8
|
+
* type of the child of MenuTrigger. Notably this excludes string, number,
|
|
9
|
+
* and array of elements as children, which MenuTrigger doesn't support.
|
|
10
|
+
*/
|
|
11
|
+
type SingleReactElement = React.ReactElement | null;
|
|
12
|
+
|
|
13
|
+
export interface MenuTriggerProps {
|
|
14
|
+
children?: SingleReactElement;
|
|
15
|
+
}
|
|
16
|
+
|
|
5
17
|
export interface MenuTriggerChildProps extends Omit<PressablePropsExtended, 'onPress'> {
|
|
6
18
|
/**
|
|
7
19
|
* A RefObject to refer to the trigger component.
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { useMenuContext } from '../context/menuContext';
|
|
2
2
|
import { InteractionEvent } from '@fluentui-react-native/interactive-hooks';
|
|
3
|
-
import { MenuTriggerState } from './MenuTrigger.types';
|
|
3
|
+
import { MenuTriggerChildProps, MenuTriggerState } from './MenuTrigger.types';
|
|
4
4
|
import { AccessibilityActionEvent, AccessibilityActionName, Platform } from 'react-native';
|
|
5
5
|
import React from 'react';
|
|
6
6
|
import { hoverDelayDefault } from '../consts';
|
|
7
|
+
import { useMergedRefs } from './useMergeRefs';
|
|
7
8
|
|
|
8
|
-
const
|
|
9
|
+
const baseAccessibilityActions =
|
|
9
10
|
Platform.OS === ('win32' as any) ? [{ name: 'Expand' as AccessibilityActionName }, { name: 'Collapse' as AccessibilityActionName }] : [];
|
|
10
11
|
const expandedState = { expanded: true };
|
|
11
12
|
const collapsedState = { expanded: false };
|
|
12
13
|
|
|
13
|
-
export const useMenuTrigger = (): MenuTriggerState => {
|
|
14
|
+
export const useMenuTrigger = (childProps: MenuTriggerChildProps): MenuTriggerState => {
|
|
14
15
|
const context = useMenuContext();
|
|
15
16
|
const {
|
|
16
17
|
hoverDelay = hoverDelayDefault,
|
|
@@ -23,7 +24,33 @@ export const useMenuTrigger = (): MenuTriggerState => {
|
|
|
23
24
|
triggerRef,
|
|
24
25
|
} = context;
|
|
25
26
|
|
|
26
|
-
const
|
|
27
|
+
const {
|
|
28
|
+
accessibilityActions: childAccessibilityActions,
|
|
29
|
+
accessibilityState: childAccessibilityState,
|
|
30
|
+
onAccessibilityAction: childOnAccessibilityAction,
|
|
31
|
+
onClick: childOnClick,
|
|
32
|
+
onHoverIn: childOnHoverIn,
|
|
33
|
+
onHoverOut: childOnHoverOut,
|
|
34
|
+
componentRef: childComponentRef,
|
|
35
|
+
} = childProps;
|
|
36
|
+
|
|
37
|
+
const accessibilityActions = React.useMemo(() => {
|
|
38
|
+
if (childAccessibilityActions) {
|
|
39
|
+
return [...baseAccessibilityActions, ...childAccessibilityActions];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return baseAccessibilityActions;
|
|
43
|
+
}, [childAccessibilityActions]);
|
|
44
|
+
|
|
45
|
+
const accessibilityState = React.useMemo(() => {
|
|
46
|
+
const baseState = open ? expandedState : collapsedState;
|
|
47
|
+
|
|
48
|
+
if (childAccessibilityState) {
|
|
49
|
+
return { ...baseState, ...childAccessibilityState };
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return baseState;
|
|
53
|
+
}, [childAccessibilityState, open]);
|
|
27
54
|
|
|
28
55
|
const onAccessibilityAction = React.useCallback(
|
|
29
56
|
(e: AccessibilityActionEvent) => {
|
|
@@ -38,8 +65,9 @@ export const useMenuTrigger = (): MenuTriggerState => {
|
|
|
38
65
|
break;
|
|
39
66
|
}
|
|
40
67
|
}
|
|
68
|
+
childOnAccessibilityAction && childOnAccessibilityAction(e);
|
|
41
69
|
},
|
|
42
|
-
[setOpen],
|
|
70
|
+
[childOnAccessibilityAction, setOpen],
|
|
43
71
|
);
|
|
44
72
|
|
|
45
73
|
const onHoverIn = React.useCallback(
|
|
@@ -52,8 +80,10 @@ export const useMenuTrigger = (): MenuTriggerState => {
|
|
|
52
80
|
setOpen(e, true /* isOpen */);
|
|
53
81
|
}, hoverDelay);
|
|
54
82
|
}
|
|
83
|
+
|
|
84
|
+
childOnHoverIn && childOnHoverIn(e);
|
|
55
85
|
},
|
|
56
|
-
[hoverDelay, openOnHover, setOpen, triggerHoverOutTimer, popoverHoverOutTimer],
|
|
86
|
+
[childOnHoverIn, hoverDelay, openOnHover, setOpen, triggerHoverOutTimer, popoverHoverOutTimer],
|
|
57
87
|
);
|
|
58
88
|
|
|
59
89
|
const onHoverOut = React.useCallback(
|
|
@@ -65,17 +95,22 @@ export const useMenuTrigger = (): MenuTriggerState => {
|
|
|
65
95
|
}, hoverDelay);
|
|
66
96
|
setTriggerHoverOutTimer(timer);
|
|
67
97
|
}
|
|
98
|
+
|
|
99
|
+
childOnHoverOut && childOnHoverOut(e);
|
|
68
100
|
},
|
|
69
|
-
[hoverDelay, openOnHover, setOpen, setTriggerHoverOutTimer],
|
|
101
|
+
[childOnHoverOut, hoverDelay, openOnHover, setOpen, setTriggerHoverOutTimer],
|
|
70
102
|
);
|
|
71
103
|
|
|
72
104
|
const onClick = React.useCallback(
|
|
73
105
|
(e: InteractionEvent) => {
|
|
74
106
|
setOpen(e, !open);
|
|
107
|
+
childOnClick && childOnClick(e);
|
|
75
108
|
},
|
|
76
|
-
[open, setOpen],
|
|
109
|
+
[childOnClick, open, setOpen],
|
|
77
110
|
);
|
|
78
111
|
|
|
112
|
+
const ref = useMergedRefs(triggerRef, childComponentRef);
|
|
113
|
+
|
|
79
114
|
React.useEffect(() => {
|
|
80
115
|
return function cleanup() {
|
|
81
116
|
clearTimeout(triggerHoverOutTimer);
|
|
@@ -87,7 +122,7 @@ export const useMenuTrigger = (): MenuTriggerState => {
|
|
|
87
122
|
onClick,
|
|
88
123
|
onHoverIn,
|
|
89
124
|
onHoverOut,
|
|
90
|
-
componentRef:
|
|
125
|
+
componentRef: ref,
|
|
91
126
|
accessibilityState,
|
|
92
127
|
accessibilityActions,
|
|
93
128
|
onAccessibilityAction,
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copied from @fluentui/react-utilities
|
|
3
|
+
*
|
|
4
|
+
* Keeping the file local to Menu for now while looking into whether
|
|
5
|
+
* we can pull in @fluentui/react-utilities package
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import * as React from 'react';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* A Ref function which can be treated like a ref object in that it has an attached
|
|
12
|
+
* current property, which will be updated as the ref is evaluated.
|
|
13
|
+
*/
|
|
14
|
+
export type RefObjectFunction<T> = React.RefObject<T> & ((value: T) => void);
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* React hook to merge multiple React refs (either MutableRefObjects or ref callbacks) into a single ref callback that
|
|
18
|
+
* updates all provided refs
|
|
19
|
+
* @param refs - Refs to collectively update with one ref value.
|
|
20
|
+
* @returns A function with an attached "current" prop, so that it can be treated like a RefObject.
|
|
21
|
+
*/
|
|
22
|
+
export function useMergedRefs<T>(...refs: (React.Ref<T> | undefined)[]): RefObjectFunction<T> {
|
|
23
|
+
const mergedCallback: RefObjectFunction<T> = React.useCallback(
|
|
24
|
+
(value: T) => {
|
|
25
|
+
// Update the "current" prop hanging on the function.
|
|
26
|
+
(mergedCallback as unknown as React.MutableRefObject<T>).current = value;
|
|
27
|
+
|
|
28
|
+
for (const ref of refs) {
|
|
29
|
+
if (typeof ref === 'function') {
|
|
30
|
+
ref(value);
|
|
31
|
+
} else if (ref) {
|
|
32
|
+
// work around the immutability of the React.Ref type
|
|
33
|
+
(ref as unknown as React.MutableRefObject<T>).current = value;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- already exhaustive
|
|
38
|
+
[...refs],
|
|
39
|
+
) as unknown as RefObjectFunction<T>;
|
|
40
|
+
|
|
41
|
+
return mergedCallback;
|
|
42
|
+
}
|
|
@@ -12,7 +12,7 @@ import { MenuItemCheckbox } from '../MenuItemCheckbox/MenuItemCheckbox';
|
|
|
12
12
|
import { MenuDivider } from '../MenuDivider/MenuDivider';
|
|
13
13
|
import { MenuItemRadio } from '../MenuItemRadio/MenuItemRadio';
|
|
14
14
|
|
|
15
|
-
describe('
|
|
15
|
+
describe('Menu component tests', () => {
|
|
16
16
|
it('Menu default', () => {
|
|
17
17
|
const tree = renderer
|
|
18
18
|
.create(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`
|
|
3
|
+
exports[`Menu component tests Menu default 1`] = `
|
|
4
4
|
<View
|
|
5
5
|
accessibilityActions={Array []}
|
|
6
6
|
accessibilityLabel="Default"
|
|
@@ -65,7 +65,7 @@ exports[`Checkbox component tests Menu default 1`] = `
|
|
|
65
65
|
</View>
|
|
66
66
|
`;
|
|
67
67
|
|
|
68
|
-
exports[`
|
|
68
|
+
exports[`Menu component tests Menu defaultOpen 1`] = `
|
|
69
69
|
Array [
|
|
70
70
|
<View
|
|
71
71
|
accessibilityActions={Array []}
|
|
@@ -273,7 +273,7 @@ Array [
|
|
|
273
273
|
]
|
|
274
274
|
`;
|
|
275
275
|
|
|
276
|
-
exports[`
|
|
276
|
+
exports[`Menu component tests Menu open 1`] = `
|
|
277
277
|
Array [
|
|
278
278
|
<View
|
|
279
279
|
accessibilityActions={Array []}
|
|
@@ -434,7 +434,7 @@ Array [
|
|
|
434
434
|
]
|
|
435
435
|
`;
|
|
436
436
|
|
|
437
|
-
exports[`
|
|
437
|
+
exports[`Menu component tests Menu open checkbox and divider 1`] = `
|
|
438
438
|
Array [
|
|
439
439
|
<View
|
|
440
440
|
accessibilityActions={Array []}
|
|
@@ -780,7 +780,7 @@ Array [
|
|
|
780
780
|
]
|
|
781
781
|
`;
|
|
782
782
|
|
|
783
|
-
exports[`
|
|
783
|
+
exports[`Menu component tests Menu open checkbox checked 1`] = `
|
|
784
784
|
Array [
|
|
785
785
|
<View
|
|
786
786
|
accessibilityActions={Array []}
|
|
@@ -1126,7 +1126,7 @@ Array [
|
|
|
1126
1126
|
]
|
|
1127
1127
|
`;
|
|
1128
1128
|
|
|
1129
|
-
exports[`
|
|
1129
|
+
exports[`Menu component tests Menu open checkbox defaultChecked 1`] = `
|
|
1130
1130
|
Array [
|
|
1131
1131
|
<View
|
|
1132
1132
|
accessibilityActions={Array []}
|
|
@@ -1472,7 +1472,7 @@ Array [
|
|
|
1472
1472
|
]
|
|
1473
1473
|
`;
|
|
1474
1474
|
|
|
1475
|
-
exports[`
|
|
1475
|
+
exports[`Menu component tests Menu open radio 1`] = `
|
|
1476
1476
|
Array [
|
|
1477
1477
|
<View
|
|
1478
1478
|
accessibilityActions={Array []}
|
|
@@ -1806,7 +1806,7 @@ Array [
|
|
|
1806
1806
|
]
|
|
1807
1807
|
`;
|
|
1808
1808
|
|
|
1809
|
-
exports[`
|
|
1809
|
+
exports[`Menu component tests Menu submenu 1`] = `
|
|
1810
1810
|
Array [
|
|
1811
1811
|
<View
|
|
1812
1812
|
accessibilityActions={Array []}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { MenuTriggerChildProps, MenuTriggerState } from './MenuTrigger.types';
|
|
2
|
-
/**
|
|
3
|
-
* Creates a merged set of props between the MenuTrigger's child component's props
|
|
4
|
-
* and the props that the MenuTrigger wants its child to have.
|
|
5
|
-
*
|
|
6
|
-
* Because children are not accessible in the outer render, we deal with the merge in this function.
|
|
7
|
-
*/
|
|
8
|
-
export declare const getRevisedProps: typeof getRevisedPropsWorker;
|
|
9
|
-
declare function getRevisedPropsWorker(state: MenuTriggerState, props: any): MenuTriggerChildProps;
|
|
10
|
-
export {};
|
|
11
|
-
//# sourceMappingURL=getRevisedProps.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getRevisedProps.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/getRevisedProps.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE9E;;;;;GAKG;AACH,eAAO,MAAM,eAAe,8BAAiC,CAAC;AAC9D,iBAAS,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,GAAG,qBAAqB,CAuCzF"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { __assign, __spreadArray } from "tslib";
|
|
2
|
-
import { memoize } from '@fluentui-react-native/framework';
|
|
3
|
-
import { isMouseEvent } from '@fluentui-react-native/interactive-hooks';
|
|
4
|
-
/**
|
|
5
|
-
* Creates a merged set of props between the MenuTrigger's child component's props
|
|
6
|
-
* and the props that the MenuTrigger wants its child to have.
|
|
7
|
-
*
|
|
8
|
-
* Because children are not accessible in the outer render, we deal with the merge in this function.
|
|
9
|
-
*/
|
|
10
|
-
export var getRevisedProps = memoize(getRevisedPropsWorker);
|
|
11
|
-
function getRevisedPropsWorker(state, props) {
|
|
12
|
-
var revisedProps = __assign({}, state.props);
|
|
13
|
-
if (props.accessibilityState) {
|
|
14
|
-
revisedProps.accessibilityState = __assign(__assign({}, state.props.accessibilityState), props.accessibilityState);
|
|
15
|
-
}
|
|
16
|
-
if (props.accessibilityActions) {
|
|
17
|
-
revisedProps.accessibilityActions = __spreadArray(__spreadArray([], state.props.accessibilityActions, true), props.accessibilityActions, true);
|
|
18
|
-
}
|
|
19
|
-
if (props.onAccessibilityAction) {
|
|
20
|
-
revisedProps.onAccessibilityAction = function (e) {
|
|
21
|
-
state.props.onAccessibilityAction(e);
|
|
22
|
-
props.onAccessibilityAction(e);
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
if (props.onClick) {
|
|
26
|
-
revisedProps.onClick = function (e) {
|
|
27
|
-
state.props.onClick(e);
|
|
28
|
-
props.onClick(e);
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
if (props.onHoverIn) {
|
|
32
|
-
revisedProps.onHoverIn = function (e) {
|
|
33
|
-
state.props.onHoverIn(isMouseEvent(e) && e);
|
|
34
|
-
props.onHoverIn(e);
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
if (props.onHoverOut) {
|
|
38
|
-
revisedProps.onHoverOut = function (e) {
|
|
39
|
-
state.props.onHoverOut(isMouseEvent(e) && e);
|
|
40
|
-
props.onHoverOut(e);
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
return __assign({}, revisedProps);
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=getRevisedProps.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getRevisedProps.js","sourceRoot":"","sources":["../../src/MenuTrigger/getRevisedProps.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAoB,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAG1F;;;;;GAKG;AACH,MAAM,CAAC,IAAM,eAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAC9D,SAAS,qBAAqB,CAAC,KAAuB,EAAE,KAAU;IAChE,IAAM,YAAY,gBAAQ,KAAK,CAAC,KAAK,CAAE,CAAC;IACxC,IAAI,KAAK,CAAC,kBAAkB,EAAE;QAC5B,YAAY,CAAC,kBAAkB,yBAAQ,KAAK,CAAC,KAAK,CAAC,kBAAkB,GAAK,KAAK,CAAC,kBAAkB,CAAE,CAAC;KACtG;IAED,IAAI,KAAK,CAAC,oBAAoB,EAAE;QAC9B,YAAY,CAAC,oBAAoB,mCAAO,KAAK,CAAC,KAAK,CAAC,oBAAoB,SAAK,KAAK,CAAC,oBAAoB,OAAC,CAAC;KAC1G;IAED,IAAI,KAAK,CAAC,qBAAqB,EAAE;QAC/B,YAAY,CAAC,qBAAqB,GAAG,UAAC,CAA2B;YAC/D,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACrC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC;KACH;IAED,IAAI,KAAK,CAAC,OAAO,EAAE;QACjB,YAAY,CAAC,OAAO,GAAG,UAAC,CAAmB;YACzC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACvB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC,CAAC;KACH;IAED,IAAI,KAAK,CAAC,SAAS,EAAE;QACnB,YAAY,CAAC,SAAS,GAAG,UAAC,CAAmB;YAC3C,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5C,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC;KACH;IAED,IAAI,KAAK,CAAC,UAAU,EAAE;QACpB,YAAY,CAAC,UAAU,GAAG,UAAC,CAAmB;YAC5C,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC;KACH;IAED,oBAAY,YAAY,EAAG;AAC7B,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { MenuTriggerChildProps, MenuTriggerState } from './MenuTrigger.types';
|
|
2
|
-
/**
|
|
3
|
-
* Creates a merged set of props between the MenuTrigger's child component's props
|
|
4
|
-
* and the props that the MenuTrigger wants its child to have.
|
|
5
|
-
*
|
|
6
|
-
* Because children are not accessible in the outer render, we deal with the merge in this function.
|
|
7
|
-
*/
|
|
8
|
-
export declare const getRevisedProps: typeof getRevisedPropsWorker;
|
|
9
|
-
declare function getRevisedPropsWorker(state: MenuTriggerState, props: any): MenuTriggerChildProps;
|
|
10
|
-
export {};
|
|
11
|
-
//# sourceMappingURL=getRevisedProps.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getRevisedProps.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/getRevisedProps.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE9E;;;;;GAKG;AACH,eAAO,MAAM,eAAe,8BAAiC,CAAC;AAC9D,iBAAS,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,GAAG,qBAAqB,CAuCzF"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getRevisedProps = void 0;
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
|
-
var framework_1 = require("@fluentui-react-native/framework");
|
|
6
|
-
var interactive_hooks_1 = require("@fluentui-react-native/interactive-hooks");
|
|
7
|
-
/**
|
|
8
|
-
* Creates a merged set of props between the MenuTrigger's child component's props
|
|
9
|
-
* and the props that the MenuTrigger wants its child to have.
|
|
10
|
-
*
|
|
11
|
-
* Because children are not accessible in the outer render, we deal with the merge in this function.
|
|
12
|
-
*/
|
|
13
|
-
exports.getRevisedProps = (0, framework_1.memoize)(getRevisedPropsWorker);
|
|
14
|
-
function getRevisedPropsWorker(state, props) {
|
|
15
|
-
var revisedProps = (0, tslib_1.__assign)({}, state.props);
|
|
16
|
-
if (props.accessibilityState) {
|
|
17
|
-
revisedProps.accessibilityState = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, state.props.accessibilityState), props.accessibilityState);
|
|
18
|
-
}
|
|
19
|
-
if (props.accessibilityActions) {
|
|
20
|
-
revisedProps.accessibilityActions = (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], state.props.accessibilityActions, true), props.accessibilityActions, true);
|
|
21
|
-
}
|
|
22
|
-
if (props.onAccessibilityAction) {
|
|
23
|
-
revisedProps.onAccessibilityAction = function (e) {
|
|
24
|
-
state.props.onAccessibilityAction(e);
|
|
25
|
-
props.onAccessibilityAction(e);
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
if (props.onClick) {
|
|
29
|
-
revisedProps.onClick = function (e) {
|
|
30
|
-
state.props.onClick(e);
|
|
31
|
-
props.onClick(e);
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
if (props.onHoverIn) {
|
|
35
|
-
revisedProps.onHoverIn = function (e) {
|
|
36
|
-
state.props.onHoverIn((0, interactive_hooks_1.isMouseEvent)(e) && e);
|
|
37
|
-
props.onHoverIn(e);
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
if (props.onHoverOut) {
|
|
41
|
-
revisedProps.onHoverOut = function (e) {
|
|
42
|
-
state.props.onHoverOut((0, interactive_hooks_1.isMouseEvent)(e) && e);
|
|
43
|
-
props.onHoverOut(e);
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
return (0, tslib_1.__assign)({}, revisedProps);
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=getRevisedProps.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getRevisedProps.js","sourceRoot":"","sources":["../../src/MenuTrigger/getRevisedProps.ts"],"names":[],"mappings":";;;;AACA,8DAA2D;AAC3D,8EAA0F;AAG1F;;;;;GAKG;AACU,QAAA,eAAe,GAAG,IAAA,mBAAO,EAAC,qBAAqB,CAAC,CAAC;AAC9D,SAAS,qBAAqB,CAAC,KAAuB,EAAE,KAAU;IAChE,IAAM,YAAY,6BAAQ,KAAK,CAAC,KAAK,CAAE,CAAC;IACxC,IAAI,KAAK,CAAC,kBAAkB,EAAE;QAC5B,YAAY,CAAC,kBAAkB,mDAAQ,KAAK,CAAC,KAAK,CAAC,kBAAkB,GAAK,KAAK,CAAC,kBAAkB,CAAE,CAAC;KACtG;IAED,IAAI,KAAK,CAAC,oBAAoB,EAAE;QAC9B,YAAY,CAAC,oBAAoB,6DAAO,KAAK,CAAC,KAAK,CAAC,oBAAoB,SAAK,KAAK,CAAC,oBAAoB,OAAC,CAAC;KAC1G;IAED,IAAI,KAAK,CAAC,qBAAqB,EAAE;QAC/B,YAAY,CAAC,qBAAqB,GAAG,UAAC,CAA2B;YAC/D,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACrC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC;KACH;IAED,IAAI,KAAK,CAAC,OAAO,EAAE;QACjB,YAAY,CAAC,OAAO,GAAG,UAAC,CAAmB;YACzC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACvB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC,CAAC;KACH;IAED,IAAI,KAAK,CAAC,SAAS,EAAE;QACnB,YAAY,CAAC,SAAS,GAAG,UAAC,CAAmB;YAC3C,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAA,gCAAY,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5C,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC;KACH;IAED,IAAI,KAAK,CAAC,UAAU,EAAE;QACpB,YAAY,CAAC,UAAU,GAAG,UAAC,CAAmB;YAC5C,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAA,gCAAY,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC;KACH;IAED,iCAAY,YAAY,EAAG;AAC7B,CAAC"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { AccessibilityActionEvent } from 'react-native';
|
|
2
|
-
import { memoize } from '@fluentui-react-native/framework';
|
|
3
|
-
import { InteractionEvent, isMouseEvent } from '@fluentui-react-native/interactive-hooks';
|
|
4
|
-
import { MenuTriggerChildProps, MenuTriggerState } from './MenuTrigger.types';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Creates a merged set of props between the MenuTrigger's child component's props
|
|
8
|
-
* and the props that the MenuTrigger wants its child to have.
|
|
9
|
-
*
|
|
10
|
-
* Because children are not accessible in the outer render, we deal with the merge in this function.
|
|
11
|
-
*/
|
|
12
|
-
export const getRevisedProps = memoize(getRevisedPropsWorker);
|
|
13
|
-
function getRevisedPropsWorker(state: MenuTriggerState, props: any): MenuTriggerChildProps {
|
|
14
|
-
const revisedProps = { ...state.props };
|
|
15
|
-
if (props.accessibilityState) {
|
|
16
|
-
revisedProps.accessibilityState = { ...state.props.accessibilityState, ...props.accessibilityState };
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
if (props.accessibilityActions) {
|
|
20
|
-
revisedProps.accessibilityActions = [...state.props.accessibilityActions, ...props.accessibilityActions];
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
if (props.onAccessibilityAction) {
|
|
24
|
-
revisedProps.onAccessibilityAction = (e: AccessibilityActionEvent) => {
|
|
25
|
-
state.props.onAccessibilityAction(e);
|
|
26
|
-
props.onAccessibilityAction(e);
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
if (props.onClick) {
|
|
31
|
-
revisedProps.onClick = (e: InteractionEvent) => {
|
|
32
|
-
state.props.onClick(e);
|
|
33
|
-
props.onClick(e);
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
if (props.onHoverIn) {
|
|
38
|
-
revisedProps.onHoverIn = (e: InteractionEvent) => {
|
|
39
|
-
state.props.onHoverIn(isMouseEvent(e) && e);
|
|
40
|
-
props.onHoverIn(e);
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
if (props.onHoverOut) {
|
|
45
|
-
revisedProps.onHoverOut = (e: InteractionEvent) => {
|
|
46
|
-
state.props.onHoverOut(isMouseEvent(e) && e);
|
|
47
|
-
props.onHoverOut(e);
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return { ...revisedProps };
|
|
52
|
-
}
|