@react-spectrum/menu 3.0.0-alpha.1 → 3.0.0-nightly-4980928d3-240906
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/README.md +1 -1
- package/dist/ActionMenu.main.js +70 -0
- package/dist/ActionMenu.main.js.map +1 -0
- package/dist/ActionMenu.mjs +65 -0
- package/dist/ActionMenu.module.js +65 -0
- package/dist/ActionMenu.module.js.map +1 -0
- package/dist/ContextualHelpTrigger.main.js +190 -0
- package/dist/ContextualHelpTrigger.main.js.map +1 -0
- package/dist/ContextualHelpTrigger.mjs +185 -0
- package/dist/ContextualHelpTrigger.module.js +185 -0
- package/dist/ContextualHelpTrigger.module.js.map +1 -0
- package/dist/Menu.main.js +241 -0
- package/dist/Menu.main.js.map +1 -0
- package/dist/Menu.mjs +235 -0
- package/dist/Menu.module.js +235 -0
- package/dist/Menu.module.js.map +1 -0
- package/dist/MenuItem.main.js +148 -0
- package/dist/MenuItem.main.js.map +1 -0
- package/dist/MenuItem.mjs +143 -0
- package/dist/MenuItem.module.js +143 -0
- package/dist/MenuItem.module.js.map +1 -0
- package/dist/MenuSection.main.js +80 -0
- package/dist/MenuSection.main.js.map +1 -0
- package/dist/MenuSection.mjs +75 -0
- package/dist/MenuSection.module.js +75 -0
- package/dist/MenuSection.module.js.map +1 -0
- package/dist/MenuTrigger.main.js +119 -0
- package/dist/MenuTrigger.main.js.map +1 -0
- package/dist/MenuTrigger.mjs +114 -0
- package/dist/MenuTrigger.module.js +114 -0
- package/dist/MenuTrigger.module.js.map +1 -0
- package/dist/SubmenuTrigger.main.js +152 -0
- package/dist/SubmenuTrigger.main.js.map +1 -0
- package/dist/SubmenuTrigger.mjs +147 -0
- package/dist/SubmenuTrigger.module.js +147 -0
- package/dist/SubmenuTrigger.module.js.map +1 -0
- package/dist/ar-AE.main.js +8 -0
- package/dist/ar-AE.main.js.map +1 -0
- package/dist/ar-AE.mjs +10 -0
- package/dist/ar-AE.module.js +10 -0
- package/dist/ar-AE.module.js.map +1 -0
- package/dist/bg-BG.main.js +8 -0
- package/dist/bg-BG.main.js.map +1 -0
- package/dist/bg-BG.mjs +10 -0
- package/dist/bg-BG.module.js +10 -0
- package/dist/bg-BG.module.js.map +1 -0
- package/dist/context.main.js +43 -0
- package/dist/context.main.js.map +1 -0
- package/dist/context.mjs +29 -0
- package/dist/context.module.js +29 -0
- package/dist/context.module.js.map +1 -0
- package/dist/contextualhelp_vars_css.main.js +23 -0
- package/dist/contextualhelp_vars_css.main.js.map +1 -0
- package/dist/contextualhelp_vars_css.mjs +25 -0
- package/dist/contextualhelp_vars_css.module.js +25 -0
- package/dist/contextualhelp_vars_css.module.js.map +1 -0
- package/dist/cs-CZ.main.js +8 -0
- package/dist/cs-CZ.main.js.map +1 -0
- package/dist/cs-CZ.mjs +10 -0
- package/dist/cs-CZ.module.js +10 -0
- package/dist/cs-CZ.module.js.map +1 -0
- package/dist/da-DK.main.js +8 -0
- package/dist/da-DK.main.js.map +1 -0
- package/dist/da-DK.mjs +10 -0
- package/dist/da-DK.module.js +10 -0
- package/dist/da-DK.module.js.map +1 -0
- package/dist/de-DE.main.js +8 -0
- package/dist/de-DE.main.js.map +1 -0
- package/dist/de-DE.mjs +10 -0
- package/dist/de-DE.module.js +10 -0
- package/dist/de-DE.module.js.map +1 -0
- package/dist/el-GR.main.js +8 -0
- package/dist/el-GR.main.js.map +1 -0
- package/dist/el-GR.mjs +10 -0
- package/dist/el-GR.module.js +10 -0
- package/dist/el-GR.module.js.map +1 -0
- package/dist/en-US.main.js +8 -0
- package/dist/en-US.main.js.map +1 -0
- package/dist/en-US.mjs +10 -0
- package/dist/en-US.module.js +10 -0
- package/dist/en-US.module.js.map +1 -0
- package/dist/es-ES.main.js +8 -0
- package/dist/es-ES.main.js.map +1 -0
- package/dist/es-ES.mjs +10 -0
- package/dist/es-ES.module.js +10 -0
- package/dist/es-ES.module.js.map +1 -0
- package/dist/et-EE.main.js +8 -0
- package/dist/et-EE.main.js.map +1 -0
- package/dist/et-EE.mjs +10 -0
- package/dist/et-EE.module.js +10 -0
- package/dist/et-EE.module.js.map +1 -0
- package/dist/fi-FI.main.js +8 -0
- package/dist/fi-FI.main.js.map +1 -0
- package/dist/fi-FI.mjs +10 -0
- package/dist/fi-FI.module.js +10 -0
- package/dist/fi-FI.module.js.map +1 -0
- package/dist/fr-FR.main.js +8 -0
- package/dist/fr-FR.main.js.map +1 -0
- package/dist/fr-FR.mjs +10 -0
- package/dist/fr-FR.module.js +10 -0
- package/dist/fr-FR.module.js.map +1 -0
- package/dist/he-IL.main.js +8 -0
- package/dist/he-IL.main.js.map +1 -0
- package/dist/he-IL.mjs +10 -0
- package/dist/he-IL.module.js +10 -0
- package/dist/he-IL.module.js.map +1 -0
- package/dist/hr-HR.main.js +8 -0
- package/dist/hr-HR.main.js.map +1 -0
- package/dist/hr-HR.mjs +10 -0
- package/dist/hr-HR.module.js +10 -0
- package/dist/hr-HR.module.js.map +1 -0
- package/dist/hu-HU.main.js +8 -0
- package/dist/hu-HU.main.js.map +1 -0
- package/dist/hu-HU.mjs +10 -0
- package/dist/hu-HU.module.js +10 -0
- package/dist/hu-HU.module.js.map +1 -0
- package/dist/import.mjs +28 -0
- package/dist/intlStrings.main.js +108 -0
- package/dist/intlStrings.main.js.map +1 -0
- package/dist/intlStrings.mjs +110 -0
- package/dist/intlStrings.module.js +110 -0
- package/dist/intlStrings.module.js.map +1 -0
- package/dist/it-IT.main.js +8 -0
- package/dist/it-IT.main.js.map +1 -0
- package/dist/it-IT.mjs +10 -0
- package/dist/it-IT.module.js +10 -0
- package/dist/it-IT.module.js.map +1 -0
- package/dist/ja-JP.main.js +8 -0
- package/dist/ja-JP.main.js.map +1 -0
- package/dist/ja-JP.mjs +10 -0
- package/dist/ja-JP.module.js +10 -0
- package/dist/ja-JP.module.js.map +1 -0
- package/dist/ko-KR.main.js +8 -0
- package/dist/ko-KR.main.js.map +1 -0
- package/dist/ko-KR.mjs +10 -0
- package/dist/ko-KR.module.js +10 -0
- package/dist/ko-KR.module.js.map +1 -0
- package/dist/lt-LT.main.js +8 -0
- package/dist/lt-LT.main.js.map +1 -0
- package/dist/lt-LT.mjs +10 -0
- package/dist/lt-LT.module.js +10 -0
- package/dist/lt-LT.module.js.map +1 -0
- package/dist/lv-LV.main.js +8 -0
- package/dist/lv-LV.main.js.map +1 -0
- package/dist/lv-LV.mjs +10 -0
- package/dist/lv-LV.module.js +10 -0
- package/dist/lv-LV.module.js.map +1 -0
- package/dist/main.js +27 -364
- package/dist/main.js.map +1 -0
- package/dist/menu_vars_css.main.js +177 -0
- package/dist/menu_vars_css.main.js.map +1 -0
- package/dist/menu_vars_css.mjs +179 -0
- package/dist/menu_vars_css.module.js +179 -0
- package/dist/menu_vars_css.module.js.map +1 -0
- package/dist/module.js +19 -304
- package/dist/module.js.map +1 -0
- package/dist/nb-NO.main.js +8 -0
- package/dist/nb-NO.main.js.map +1 -0
- package/dist/nb-NO.mjs +10 -0
- package/dist/nb-NO.module.js +10 -0
- package/dist/nb-NO.module.js.map +1 -0
- package/dist/nl-NL.main.js +8 -0
- package/dist/nl-NL.main.js.map +1 -0
- package/dist/nl-NL.mjs +10 -0
- package/dist/nl-NL.module.js +10 -0
- package/dist/nl-NL.module.js.map +1 -0
- package/dist/pl-PL.main.js +8 -0
- package/dist/pl-PL.main.js.map +1 -0
- package/dist/pl-PL.mjs +10 -0
- package/dist/pl-PL.module.js +10 -0
- package/dist/pl-PL.module.js.map +1 -0
- package/dist/pt-BR.main.js +8 -0
- package/dist/pt-BR.main.js.map +1 -0
- package/dist/pt-BR.mjs +10 -0
- package/dist/pt-BR.module.js +10 -0
- package/dist/pt-BR.module.js.map +1 -0
- package/dist/pt-PT.main.js +8 -0
- package/dist/pt-PT.main.js.map +1 -0
- package/dist/pt-PT.mjs +10 -0
- package/dist/pt-PT.module.js +10 -0
- package/dist/pt-PT.module.js.map +1 -0
- package/dist/ro-RO.main.js +8 -0
- package/dist/ro-RO.main.js.map +1 -0
- package/dist/ro-RO.mjs +10 -0
- package/dist/ro-RO.module.js +10 -0
- package/dist/ro-RO.module.js.map +1 -0
- package/dist/ru-RU.main.js +8 -0
- package/dist/ru-RU.main.js.map +1 -0
- package/dist/ru-RU.mjs +10 -0
- package/dist/ru-RU.module.js +10 -0
- package/dist/ru-RU.module.js.map +1 -0
- package/dist/sk-SK.main.js +8 -0
- package/dist/sk-SK.main.js.map +1 -0
- package/dist/sk-SK.mjs +10 -0
- package/dist/sk-SK.module.js +10 -0
- package/dist/sk-SK.module.js.map +1 -0
- package/dist/sl-SI.main.js +8 -0
- package/dist/sl-SI.main.js.map +1 -0
- package/dist/sl-SI.mjs +10 -0
- package/dist/sl-SI.module.js +10 -0
- package/dist/sl-SI.module.js.map +1 -0
- package/dist/sr-SP.main.js +8 -0
- package/dist/sr-SP.main.js.map +1 -0
- package/dist/sr-SP.mjs +10 -0
- package/dist/sr-SP.module.js +10 -0
- package/dist/sr-SP.module.js.map +1 -0
- package/dist/sv-SE.main.js +8 -0
- package/dist/sv-SE.main.js.map +1 -0
- package/dist/sv-SE.mjs +10 -0
- package/dist/sv-SE.module.js +10 -0
- package/dist/sv-SE.module.js.map +1 -0
- package/dist/tr-TR.main.js +8 -0
- package/dist/tr-TR.main.js.map +1 -0
- package/dist/tr-TR.mjs +10 -0
- package/dist/tr-TR.module.js +10 -0
- package/dist/tr-TR.module.js.map +1 -0
- package/dist/types.d.ts +39 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/uk-UA.main.js +8 -0
- package/dist/uk-UA.main.js.map +1 -0
- package/dist/uk-UA.mjs +10 -0
- package/dist/uk-UA.module.js +10 -0
- package/dist/uk-UA.module.js.map +1 -0
- package/dist/vars.89a944d6.css +568 -0
- package/dist/vars.89a944d6.css.map +1 -0
- package/dist/vars.c9740d19.css +30 -0
- package/dist/vars.c9740d19.css.map +1 -0
- package/dist/zh-CN.main.js +8 -0
- package/dist/zh-CN.main.js.map +1 -0
- package/dist/zh-CN.mjs +10 -0
- package/dist/zh-CN.module.js +10 -0
- package/dist/zh-CN.module.js.map +1 -0
- package/dist/zh-TW.main.js +8 -0
- package/dist/zh-TW.main.js.map +1 -0
- package/dist/zh-TW.mjs +10 -0
- package/dist/zh-TW.module.js +10 -0
- package/dist/zh-TW.module.js.map +1 -0
- package/package.json +40 -31
- package/src/ActionMenu.tsx +61 -0
- package/src/ContextualHelpTrigger.tsx +193 -0
- package/src/Menu.tsx +221 -0
- package/src/MenuItem.tsx +155 -0
- package/src/MenuSection.tsx +99 -0
- package/src/MenuTrigger.tsx +115 -0
- package/src/SubmenuTrigger.tsx +154 -0
- package/src/context.ts +63 -0
- package/src/index.ts +23 -0
- package/src/overlays.css +32 -0
- package/LICENSE +0 -201
- package/dist/main.css +0 -295
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
var $cac834c4bc0a51d3$exports = require("./context.main.js");
|
|
2
|
+
require("./vars.89a944d6.css");
|
|
3
|
+
var $3deee0fd2b46e64f$exports = require("./menu_vars_css.main.js");
|
|
4
|
+
var $6doGq$reactspectrumutils = require("@react-spectrum/utils");
|
|
5
|
+
var $6doGq$reactspectrumoverlays = require("@react-spectrum/overlays");
|
|
6
|
+
var $6doGq$reactariainteractions = require("@react-aria/interactions");
|
|
7
|
+
var $6doGq$react = require("react");
|
|
8
|
+
var $6doGq$reactariamenu = require("@react-aria/menu");
|
|
9
|
+
var $6doGq$reactstatelymenu = require("@react-stately/menu");
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
function $parcel$interopDefault(a) {
|
|
13
|
+
return a && a.__esModule ? a.default : a;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function $parcel$export(e, n, v, s) {
|
|
17
|
+
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
$parcel$export(module.exports, "MenuTrigger", () => $e56311f7204399c7$export$27d2ad3c5815583e);
|
|
21
|
+
/*
|
|
22
|
+
* Copyright 2020 Adobe. All rights reserved.
|
|
23
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
24
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
25
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
26
|
+
*
|
|
27
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
28
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
29
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
30
|
+
* governing permissions and limitations under the License.
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
function $e56311f7204399c7$var$MenuTrigger(props, ref) {
|
|
40
|
+
let triggerRef = (0, $6doGq$react.useRef)(undefined);
|
|
41
|
+
let domRef = (0, $6doGq$reactspectrumutils.useDOMRef)(ref);
|
|
42
|
+
let menuTriggerRef = domRef || triggerRef;
|
|
43
|
+
let menuRef = (0, $6doGq$react.useRef)(undefined);
|
|
44
|
+
let { children: children, align: align = 'start', shouldFlip: shouldFlip = true, direction: direction = 'bottom', closeOnSelect: closeOnSelect, trigger: trigger = 'press' } = props;
|
|
45
|
+
let [menuTrigger, menu] = (0, ($parcel$interopDefault($6doGq$react))).Children.toArray(children);
|
|
46
|
+
let state = (0, $6doGq$reactstatelymenu.useMenuTriggerState)(props);
|
|
47
|
+
let { menuTriggerProps: menuTriggerProps, menuProps: menuProps } = (0, $6doGq$reactariamenu.useMenuTrigger)({
|
|
48
|
+
trigger: trigger
|
|
49
|
+
}, state, menuTriggerRef);
|
|
50
|
+
let initialPlacement;
|
|
51
|
+
switch(direction){
|
|
52
|
+
case 'left':
|
|
53
|
+
case 'right':
|
|
54
|
+
case 'start':
|
|
55
|
+
case 'end':
|
|
56
|
+
initialPlacement = `${direction} ${align === 'end' ? 'bottom' : 'top'}`;
|
|
57
|
+
break;
|
|
58
|
+
case 'bottom':
|
|
59
|
+
case 'top':
|
|
60
|
+
default:
|
|
61
|
+
initialPlacement = `${direction} ${align}`;
|
|
62
|
+
}
|
|
63
|
+
let isMobile = (0, $6doGq$reactspectrumutils.useIsMobileDevice)();
|
|
64
|
+
let menuContext = {
|
|
65
|
+
...menuProps,
|
|
66
|
+
ref: menuRef,
|
|
67
|
+
onClose: state.close,
|
|
68
|
+
closeOnSelect: closeOnSelect,
|
|
69
|
+
autoFocus: state.focusStrategy || true,
|
|
70
|
+
UNSAFE_style: isMobile ? {
|
|
71
|
+
width: '100%',
|
|
72
|
+
maxHeight: 'inherit'
|
|
73
|
+
} : undefined,
|
|
74
|
+
UNSAFE_className: (0, $6doGq$reactspectrumutils.classNames)((0, ($parcel$interopDefault($3deee0fd2b46e64f$exports))), {
|
|
75
|
+
'spectrum-Menu-popover': !isMobile
|
|
76
|
+
}),
|
|
77
|
+
state: state
|
|
78
|
+
};
|
|
79
|
+
// On small screen devices, the menu is rendered in a tray, otherwise a popover.
|
|
80
|
+
let overlay;
|
|
81
|
+
if (isMobile) overlay = /*#__PURE__*/ (0, ($parcel$interopDefault($6doGq$react))).createElement((0, $6doGq$reactspectrumoverlays.Tray), {
|
|
82
|
+
state: state,
|
|
83
|
+
isFixedHeight: true
|
|
84
|
+
}, menu);
|
|
85
|
+
else overlay = /*#__PURE__*/ (0, ($parcel$interopDefault($6doGq$react))).createElement((0, $6doGq$reactspectrumoverlays.Popover), {
|
|
86
|
+
UNSAFE_style: {
|
|
87
|
+
clipPath: 'unset',
|
|
88
|
+
overflow: 'visible',
|
|
89
|
+
filter: 'unset',
|
|
90
|
+
borderWidth: '0px'
|
|
91
|
+
},
|
|
92
|
+
state: state,
|
|
93
|
+
triggerRef: menuTriggerRef,
|
|
94
|
+
scrollRef: menuRef,
|
|
95
|
+
placement: initialPlacement,
|
|
96
|
+
hideArrow: true,
|
|
97
|
+
shouldFlip: shouldFlip
|
|
98
|
+
}, menu);
|
|
99
|
+
return /*#__PURE__*/ (0, ($parcel$interopDefault($6doGq$react))).createElement((0, $6doGq$react.Fragment), null, /*#__PURE__*/ (0, ($parcel$interopDefault($6doGq$react))).createElement((0, $6doGq$reactspectrumutils.SlotProvider), {
|
|
100
|
+
slots: {
|
|
101
|
+
actionButton: {
|
|
102
|
+
holdAffordance: trigger === 'longPress'
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}, /*#__PURE__*/ (0, ($parcel$interopDefault($6doGq$react))).createElement((0, $6doGq$reactariainteractions.PressResponder), {
|
|
106
|
+
...menuTriggerProps,
|
|
107
|
+
ref: menuTriggerRef,
|
|
108
|
+
isPressed: state.isOpen
|
|
109
|
+
}, menuTrigger)), /*#__PURE__*/ (0, ($parcel$interopDefault($6doGq$react))).createElement((0, $cac834c4bc0a51d3$exports.MenuContext).Provider, {
|
|
110
|
+
value: menuContext
|
|
111
|
+
}, overlay));
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* The MenuTrigger serves as a wrapper around a Menu and its associated trigger,
|
|
115
|
+
* linking the Menu's open state with the trigger's press state.
|
|
116
|
+
*/ let $e56311f7204399c7$export$27d2ad3c5815583e = /*#__PURE__*/ (0, $6doGq$react.forwardRef)($e56311f7204399c7$var$MenuTrigger);
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
//# sourceMappingURL=MenuTrigger.main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;;;;AAcD,SAAS,kCAAY,KAA+B,EAAE,GAAwB;IAC5E,IAAI,aAAa,CAAA,GAAA,mBAAK,EAAe;IACrC,IAAI,SAAS,CAAA,GAAA,mCAAQ,EAAE;IACvB,IAAI,iBAAiB,UAAU;IAC/B,IAAI,UAAU,CAAA,GAAA,mBAAK,EAAkB;IACrC,IAAI,YACF,QAAQ,SACR,QAAQ,qBACR,aAAa,iBACb,YAAY,yBACZ,aAAa,WACb,UAAU,SACX,GAAG;IAEJ,IAAI,CAAC,aAAa,KAAK,GAAG,CAAA,GAAA,sCAAI,EAAE,QAAQ,CAAC,OAAO,CAAC;IACjD,IAAI,QAAQ,CAAA,GAAA,2CAAkB,EAAE;IAEhC,IAAI,oBAAC,gBAAgB,aAAE,SAAS,EAAC,GAAG,CAAA,GAAA,mCAAa,EAAE;iBAAC;IAAO,GAAG,OAAO;IAErE,IAAI;IACJ,OAAQ;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,mBAAmB,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,QAAQ,WAAW,MAAM,CAAC;YACvE;QACF,KAAK;QACL,KAAK;QACL;YACE,mBAAmB,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAC9C;IAEA,IAAI,WAAW,CAAA,GAAA,2CAAgB;IAC/B,IAAI,cAAc;QAChB,GAAG,SAAS;QACZ,KAAK;QACL,SAAS,MAAM,KAAK;uBACpB;QACA,WAAW,MAAM,aAAa,IAAI;QAClC,cAAc,WAAW;YACvB,OAAO;YACP,WAAW;QACb,IAAI;QACJ,kBAAkB,CAAA,GAAA,oCAAS,EAAE,CAAA,GAAA,mDAAK,GAAG;YAAC,yBAAyB,CAAC;QAAQ;eACxE;IACF;IAEA,gFAAgF;IAChF,IAAI;IACJ,IAAI,UACF,wBACE,0DAAC,CAAA,GAAA,iCAAG;QAAE,OAAO;QAAO,eAAA;OACjB;SAIL,wBACE,0DAAC,CAAA,GAAA,oCAAM;QACL,cAAc;YAAC,UAAU;YAAS,UAAU;YAAW,QAAQ;YAAS,aAAa;QAAK;QAC1F,OAAO;QACP,YAAY;QACZ,WAAW;QACX,WAAW;QACX,WAAA;QACA,YAAY;OACX;IAKP,qBACE,0DAAC,CAAA,GAAA,qBAAO,uBACN,0DAAC,CAAA,GAAA,sCAAW;QAAE,OAAO;YAAC,cAAc;gBAAC,gBAAgB,YAAY;YAAW;QAAC;qBAC3E,0DAAC,CAAA,GAAA,2CAAa;QAAG,GAAG,gBAAgB;QAAE,KAAK;QAAgB,WAAW,MAAM,MAAM;OAC/E,6BAGL,0DAAC,CAAA,GAAA,qCAAU,EAAE,QAAQ;QAAC,OAAO;OAC1B;AAIT;AAEA;;;CAGC,GACD,IAAI,0DAAe,CAAA,GAAA,uBAAS,EAAE","sources":["packages/@react-spectrum/menu/src/MenuTrigger.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {classNames, SlotProvider, useDOMRef, useIsMobileDevice} from '@react-spectrum/utils';\nimport {DOMRef} from '@react-types/shared';\nimport {MenuContext} from './context';\nimport {Placement} from '@react-types/overlays';\nimport {Popover, Tray} from '@react-spectrum/overlays';\nimport {PressResponder} from '@react-aria/interactions';\nimport React, {forwardRef, Fragment, useRef} from 'react';\nimport {SpectrumMenuTriggerProps} from '@react-types/menu';\nimport styles from '@adobe/spectrum-css-temp/components/menu/vars.css';\nimport {useMenuTrigger} from '@react-aria/menu';\nimport {useMenuTriggerState} from '@react-stately/menu';\n\nfunction MenuTrigger(props: SpectrumMenuTriggerProps, ref: DOMRef<HTMLElement>) {\n let triggerRef = useRef<HTMLElement>(undefined);\n let domRef = useDOMRef(ref);\n let menuTriggerRef = domRef || triggerRef;\n let menuRef = useRef<HTMLDivElement>(undefined);\n let {\n children,\n align = 'start',\n shouldFlip = true,\n direction = 'bottom',\n closeOnSelect,\n trigger = 'press'\n } = props;\n\n let [menuTrigger, menu] = React.Children.toArray(children);\n let state = useMenuTriggerState(props);\n\n let {menuTriggerProps, menuProps} = useMenuTrigger({trigger}, state, menuTriggerRef);\n\n let initialPlacement: Placement;\n switch (direction) {\n case 'left':\n case 'right':\n case 'start':\n case 'end':\n initialPlacement = `${direction} ${align === 'end' ? 'bottom' : 'top'}` as Placement;\n break;\n case 'bottom':\n case 'top':\n default:\n initialPlacement = `${direction} ${align}` as Placement;\n }\n\n let isMobile = useIsMobileDevice();\n let menuContext = {\n ...menuProps,\n ref: menuRef,\n onClose: state.close,\n closeOnSelect,\n autoFocus: state.focusStrategy || true,\n UNSAFE_style: isMobile ? {\n width: '100%',\n maxHeight: 'inherit'\n } : undefined,\n UNSAFE_className: classNames(styles, {'spectrum-Menu-popover': !isMobile}),\n state\n };\n\n // On small screen devices, the menu is rendered in a tray, otherwise a popover.\n let overlay;\n if (isMobile) {\n overlay = (\n <Tray state={state} isFixedHeight>\n {menu}\n </Tray>\n );\n } else {\n overlay = (\n <Popover\n UNSAFE_style={{clipPath: 'unset', overflow: 'visible', filter: 'unset', borderWidth: '0px'}}\n state={state}\n triggerRef={menuTriggerRef}\n scrollRef={menuRef}\n placement={initialPlacement}\n hideArrow\n shouldFlip={shouldFlip}>\n {menu}\n </Popover>\n );\n }\n\n return (\n <Fragment>\n <SlotProvider slots={{actionButton: {holdAffordance: trigger === 'longPress'}}}>\n <PressResponder {...menuTriggerProps} ref={menuTriggerRef} isPressed={state.isOpen}>\n {menuTrigger}\n </PressResponder>\n </SlotProvider>\n <MenuContext.Provider value={menuContext}>\n {overlay}\n </MenuContext.Provider>\n </Fragment>\n );\n}\n\n/**\n * The MenuTrigger serves as a wrapper around a Menu and its associated trigger,\n * linking the Menu's open state with the trigger's press state.\n */\nlet _MenuTrigger = forwardRef(MenuTrigger);\nexport {_MenuTrigger as MenuTrigger};\n"],"names":[],"version":3,"file":"MenuTrigger.main.js.map"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import {MenuContext as $d94604d52c3e3feb$export$c7e742effb1c51e2} from "./context.mjs";
|
|
2
|
+
import "./vars.89a944d6.css";
|
|
3
|
+
import $5R0iF$menu_vars_cssmodulejs from "./menu_vars_css.mjs";
|
|
4
|
+
import {useDOMRef as $5R0iF$useDOMRef, useIsMobileDevice as $5R0iF$useIsMobileDevice, classNames as $5R0iF$classNames, SlotProvider as $5R0iF$SlotProvider} from "@react-spectrum/utils";
|
|
5
|
+
import {Tray as $5R0iF$Tray, Popover as $5R0iF$Popover} from "@react-spectrum/overlays";
|
|
6
|
+
import {PressResponder as $5R0iF$PressResponder} from "@react-aria/interactions";
|
|
7
|
+
import $5R0iF$react, {useRef as $5R0iF$useRef, Fragment as $5R0iF$Fragment, forwardRef as $5R0iF$forwardRef} from "react";
|
|
8
|
+
import {useMenuTrigger as $5R0iF$useMenuTrigger} from "@react-aria/menu";
|
|
9
|
+
import {useMenuTriggerState as $5R0iF$useMenuTriggerState} from "@react-stately/menu";
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
function $parcel$interopDefault(a) {
|
|
13
|
+
return a && a.__esModule ? a.default : a;
|
|
14
|
+
}
|
|
15
|
+
/*
|
|
16
|
+
* Copyright 2020 Adobe. All rights reserved.
|
|
17
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
18
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
19
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
20
|
+
*
|
|
21
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
22
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
23
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
24
|
+
* governing permissions and limitations under the License.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
function $aa0b855f135b86e3$var$MenuTrigger(props, ref) {
|
|
34
|
+
let triggerRef = (0, $5R0iF$useRef)(undefined);
|
|
35
|
+
let domRef = (0, $5R0iF$useDOMRef)(ref);
|
|
36
|
+
let menuTriggerRef = domRef || triggerRef;
|
|
37
|
+
let menuRef = (0, $5R0iF$useRef)(undefined);
|
|
38
|
+
let { children: children, align: align = 'start', shouldFlip: shouldFlip = true, direction: direction = 'bottom', closeOnSelect: closeOnSelect, trigger: trigger = 'press' } = props;
|
|
39
|
+
let [menuTrigger, menu] = (0, $5R0iF$react).Children.toArray(children);
|
|
40
|
+
let state = (0, $5R0iF$useMenuTriggerState)(props);
|
|
41
|
+
let { menuTriggerProps: menuTriggerProps, menuProps: menuProps } = (0, $5R0iF$useMenuTrigger)({
|
|
42
|
+
trigger: trigger
|
|
43
|
+
}, state, menuTriggerRef);
|
|
44
|
+
let initialPlacement;
|
|
45
|
+
switch(direction){
|
|
46
|
+
case 'left':
|
|
47
|
+
case 'right':
|
|
48
|
+
case 'start':
|
|
49
|
+
case 'end':
|
|
50
|
+
initialPlacement = `${direction} ${align === 'end' ? 'bottom' : 'top'}`;
|
|
51
|
+
break;
|
|
52
|
+
case 'bottom':
|
|
53
|
+
case 'top':
|
|
54
|
+
default:
|
|
55
|
+
initialPlacement = `${direction} ${align}`;
|
|
56
|
+
}
|
|
57
|
+
let isMobile = (0, $5R0iF$useIsMobileDevice)();
|
|
58
|
+
let menuContext = {
|
|
59
|
+
...menuProps,
|
|
60
|
+
ref: menuRef,
|
|
61
|
+
onClose: state.close,
|
|
62
|
+
closeOnSelect: closeOnSelect,
|
|
63
|
+
autoFocus: state.focusStrategy || true,
|
|
64
|
+
UNSAFE_style: isMobile ? {
|
|
65
|
+
width: '100%',
|
|
66
|
+
maxHeight: 'inherit'
|
|
67
|
+
} : undefined,
|
|
68
|
+
UNSAFE_className: (0, $5R0iF$classNames)((0, ($parcel$interopDefault($5R0iF$menu_vars_cssmodulejs))), {
|
|
69
|
+
'spectrum-Menu-popover': !isMobile
|
|
70
|
+
}),
|
|
71
|
+
state: state
|
|
72
|
+
};
|
|
73
|
+
// On small screen devices, the menu is rendered in a tray, otherwise a popover.
|
|
74
|
+
let overlay;
|
|
75
|
+
if (isMobile) overlay = /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$Tray), {
|
|
76
|
+
state: state,
|
|
77
|
+
isFixedHeight: true
|
|
78
|
+
}, menu);
|
|
79
|
+
else overlay = /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$Popover), {
|
|
80
|
+
UNSAFE_style: {
|
|
81
|
+
clipPath: 'unset',
|
|
82
|
+
overflow: 'visible',
|
|
83
|
+
filter: 'unset',
|
|
84
|
+
borderWidth: '0px'
|
|
85
|
+
},
|
|
86
|
+
state: state,
|
|
87
|
+
triggerRef: menuTriggerRef,
|
|
88
|
+
scrollRef: menuRef,
|
|
89
|
+
placement: initialPlacement,
|
|
90
|
+
hideArrow: true,
|
|
91
|
+
shouldFlip: shouldFlip
|
|
92
|
+
}, menu);
|
|
93
|
+
return /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$Fragment), null, /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$SlotProvider), {
|
|
94
|
+
slots: {
|
|
95
|
+
actionButton: {
|
|
96
|
+
holdAffordance: trigger === 'longPress'
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}, /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$PressResponder), {
|
|
100
|
+
...menuTriggerProps,
|
|
101
|
+
ref: menuTriggerRef,
|
|
102
|
+
isPressed: state.isOpen
|
|
103
|
+
}, menuTrigger)), /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $d94604d52c3e3feb$export$c7e742effb1c51e2).Provider, {
|
|
104
|
+
value: menuContext
|
|
105
|
+
}, overlay));
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* The MenuTrigger serves as a wrapper around a Menu and its associated trigger,
|
|
109
|
+
* linking the Menu's open state with the trigger's press state.
|
|
110
|
+
*/ let $aa0b855f135b86e3$export$27d2ad3c5815583e = /*#__PURE__*/ (0, $5R0iF$forwardRef)($aa0b855f135b86e3$var$MenuTrigger);
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
export {$aa0b855f135b86e3$export$27d2ad3c5815583e as MenuTrigger};
|
|
114
|
+
//# sourceMappingURL=MenuTrigger.module.js.map
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import {MenuContext as $d94604d52c3e3feb$export$c7e742effb1c51e2} from "./context.module.js";
|
|
2
|
+
import "./vars.89a944d6.css";
|
|
3
|
+
import $5R0iF$menu_vars_cssmodulejs from "./menu_vars_css.module.js";
|
|
4
|
+
import {useDOMRef as $5R0iF$useDOMRef, useIsMobileDevice as $5R0iF$useIsMobileDevice, classNames as $5R0iF$classNames, SlotProvider as $5R0iF$SlotProvider} from "@react-spectrum/utils";
|
|
5
|
+
import {Tray as $5R0iF$Tray, Popover as $5R0iF$Popover} from "@react-spectrum/overlays";
|
|
6
|
+
import {PressResponder as $5R0iF$PressResponder} from "@react-aria/interactions";
|
|
7
|
+
import $5R0iF$react, {useRef as $5R0iF$useRef, Fragment as $5R0iF$Fragment, forwardRef as $5R0iF$forwardRef} from "react";
|
|
8
|
+
import {useMenuTrigger as $5R0iF$useMenuTrigger} from "@react-aria/menu";
|
|
9
|
+
import {useMenuTriggerState as $5R0iF$useMenuTriggerState} from "@react-stately/menu";
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
function $parcel$interopDefault(a) {
|
|
13
|
+
return a && a.__esModule ? a.default : a;
|
|
14
|
+
}
|
|
15
|
+
/*
|
|
16
|
+
* Copyright 2020 Adobe. All rights reserved.
|
|
17
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
18
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
19
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
20
|
+
*
|
|
21
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
22
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
23
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
24
|
+
* governing permissions and limitations under the License.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
function $aa0b855f135b86e3$var$MenuTrigger(props, ref) {
|
|
34
|
+
let triggerRef = (0, $5R0iF$useRef)(undefined);
|
|
35
|
+
let domRef = (0, $5R0iF$useDOMRef)(ref);
|
|
36
|
+
let menuTriggerRef = domRef || triggerRef;
|
|
37
|
+
let menuRef = (0, $5R0iF$useRef)(undefined);
|
|
38
|
+
let { children: children, align: align = 'start', shouldFlip: shouldFlip = true, direction: direction = 'bottom', closeOnSelect: closeOnSelect, trigger: trigger = 'press' } = props;
|
|
39
|
+
let [menuTrigger, menu] = (0, $5R0iF$react).Children.toArray(children);
|
|
40
|
+
let state = (0, $5R0iF$useMenuTriggerState)(props);
|
|
41
|
+
let { menuTriggerProps: menuTriggerProps, menuProps: menuProps } = (0, $5R0iF$useMenuTrigger)({
|
|
42
|
+
trigger: trigger
|
|
43
|
+
}, state, menuTriggerRef);
|
|
44
|
+
let initialPlacement;
|
|
45
|
+
switch(direction){
|
|
46
|
+
case 'left':
|
|
47
|
+
case 'right':
|
|
48
|
+
case 'start':
|
|
49
|
+
case 'end':
|
|
50
|
+
initialPlacement = `${direction} ${align === 'end' ? 'bottom' : 'top'}`;
|
|
51
|
+
break;
|
|
52
|
+
case 'bottom':
|
|
53
|
+
case 'top':
|
|
54
|
+
default:
|
|
55
|
+
initialPlacement = `${direction} ${align}`;
|
|
56
|
+
}
|
|
57
|
+
let isMobile = (0, $5R0iF$useIsMobileDevice)();
|
|
58
|
+
let menuContext = {
|
|
59
|
+
...menuProps,
|
|
60
|
+
ref: menuRef,
|
|
61
|
+
onClose: state.close,
|
|
62
|
+
closeOnSelect: closeOnSelect,
|
|
63
|
+
autoFocus: state.focusStrategy || true,
|
|
64
|
+
UNSAFE_style: isMobile ? {
|
|
65
|
+
width: '100%',
|
|
66
|
+
maxHeight: 'inherit'
|
|
67
|
+
} : undefined,
|
|
68
|
+
UNSAFE_className: (0, $5R0iF$classNames)((0, ($parcel$interopDefault($5R0iF$menu_vars_cssmodulejs))), {
|
|
69
|
+
'spectrum-Menu-popover': !isMobile
|
|
70
|
+
}),
|
|
71
|
+
state: state
|
|
72
|
+
};
|
|
73
|
+
// On small screen devices, the menu is rendered in a tray, otherwise a popover.
|
|
74
|
+
let overlay;
|
|
75
|
+
if (isMobile) overlay = /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$Tray), {
|
|
76
|
+
state: state,
|
|
77
|
+
isFixedHeight: true
|
|
78
|
+
}, menu);
|
|
79
|
+
else overlay = /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$Popover), {
|
|
80
|
+
UNSAFE_style: {
|
|
81
|
+
clipPath: 'unset',
|
|
82
|
+
overflow: 'visible',
|
|
83
|
+
filter: 'unset',
|
|
84
|
+
borderWidth: '0px'
|
|
85
|
+
},
|
|
86
|
+
state: state,
|
|
87
|
+
triggerRef: menuTriggerRef,
|
|
88
|
+
scrollRef: menuRef,
|
|
89
|
+
placement: initialPlacement,
|
|
90
|
+
hideArrow: true,
|
|
91
|
+
shouldFlip: shouldFlip
|
|
92
|
+
}, menu);
|
|
93
|
+
return /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$Fragment), null, /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$SlotProvider), {
|
|
94
|
+
slots: {
|
|
95
|
+
actionButton: {
|
|
96
|
+
holdAffordance: trigger === 'longPress'
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}, /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$PressResponder), {
|
|
100
|
+
...menuTriggerProps,
|
|
101
|
+
ref: menuTriggerRef,
|
|
102
|
+
isPressed: state.isOpen
|
|
103
|
+
}, menuTrigger)), /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $d94604d52c3e3feb$export$c7e742effb1c51e2).Provider, {
|
|
104
|
+
value: menuContext
|
|
105
|
+
}, overlay));
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* The MenuTrigger serves as a wrapper around a Menu and its associated trigger,
|
|
109
|
+
* linking the Menu's open state with the trigger's press state.
|
|
110
|
+
*/ let $aa0b855f135b86e3$export$27d2ad3c5815583e = /*#__PURE__*/ (0, $5R0iF$forwardRef)($aa0b855f135b86e3$var$MenuTrigger);
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
export {$aa0b855f135b86e3$export$27d2ad3c5815583e as MenuTrigger};
|
|
114
|
+
//# sourceMappingURL=MenuTrigger.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;;;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;;;;AAcD,SAAS,kCAAY,KAA+B,EAAE,GAAwB;IAC5E,IAAI,aAAa,CAAA,GAAA,aAAK,EAAe;IACrC,IAAI,SAAS,CAAA,GAAA,gBAAQ,EAAE;IACvB,IAAI,iBAAiB,UAAU;IAC/B,IAAI,UAAU,CAAA,GAAA,aAAK,EAAkB;IACrC,IAAI,YACF,QAAQ,SACR,QAAQ,qBACR,aAAa,iBACb,YAAY,yBACZ,aAAa,WACb,UAAU,SACX,GAAG;IAEJ,IAAI,CAAC,aAAa,KAAK,GAAG,CAAA,GAAA,YAAI,EAAE,QAAQ,CAAC,OAAO,CAAC;IACjD,IAAI,QAAQ,CAAA,GAAA,0BAAkB,EAAE;IAEhC,IAAI,oBAAC,gBAAgB,aAAE,SAAS,EAAC,GAAG,CAAA,GAAA,qBAAa,EAAE;iBAAC;IAAO,GAAG,OAAO;IAErE,IAAI;IACJ,OAAQ;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,mBAAmB,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,QAAQ,WAAW,MAAM,CAAC;YACvE;QACF,KAAK;QACL,KAAK;QACL;YACE,mBAAmB,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAC9C;IAEA,IAAI,WAAW,CAAA,GAAA,wBAAgB;IAC/B,IAAI,cAAc;QAChB,GAAG,SAAS;QACZ,KAAK;QACL,SAAS,MAAM,KAAK;uBACpB;QACA,WAAW,MAAM,aAAa,IAAI;QAClC,cAAc,WAAW;YACvB,OAAO;YACP,WAAW;QACb,IAAI;QACJ,kBAAkB,CAAA,GAAA,iBAAS,EAAE,CAAA,GAAA,sDAAK,GAAG;YAAC,yBAAyB,CAAC;QAAQ;eACxE;IACF;IAEA,gFAAgF;IAChF,IAAI;IACJ,IAAI,UACF,wBACE,gCAAC,CAAA,GAAA,WAAG;QAAE,OAAO;QAAO,eAAA;OACjB;SAIL,wBACE,gCAAC,CAAA,GAAA,cAAM;QACL,cAAc;YAAC,UAAU;YAAS,UAAU;YAAW,QAAQ;YAAS,aAAa;QAAK;QAC1F,OAAO;QACP,YAAY;QACZ,WAAW;QACX,WAAW;QACX,WAAA;QACA,YAAY;OACX;IAKP,qBACE,gCAAC,CAAA,GAAA,eAAO,uBACN,gCAAC,CAAA,GAAA,mBAAW;QAAE,OAAO;YAAC,cAAc;gBAAC,gBAAgB,YAAY;YAAW;QAAC;qBAC3E,gCAAC,CAAA,GAAA,qBAAa;QAAG,GAAG,gBAAgB;QAAE,KAAK;QAAgB,WAAW,MAAM,MAAM;OAC/E,6BAGL,gCAAC,CAAA,GAAA,yCAAU,EAAE,QAAQ;QAAC,OAAO;OAC1B;AAIT;AAEA;;;CAGC,GACD,IAAI,0DAAe,CAAA,GAAA,iBAAS,EAAE","sources":["packages/@react-spectrum/menu/src/MenuTrigger.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {classNames, SlotProvider, useDOMRef, useIsMobileDevice} from '@react-spectrum/utils';\nimport {DOMRef} from '@react-types/shared';\nimport {MenuContext} from './context';\nimport {Placement} from '@react-types/overlays';\nimport {Popover, Tray} from '@react-spectrum/overlays';\nimport {PressResponder} from '@react-aria/interactions';\nimport React, {forwardRef, Fragment, useRef} from 'react';\nimport {SpectrumMenuTriggerProps} from '@react-types/menu';\nimport styles from '@adobe/spectrum-css-temp/components/menu/vars.css';\nimport {useMenuTrigger} from '@react-aria/menu';\nimport {useMenuTriggerState} from '@react-stately/menu';\n\nfunction MenuTrigger(props: SpectrumMenuTriggerProps, ref: DOMRef<HTMLElement>) {\n let triggerRef = useRef<HTMLElement>(undefined);\n let domRef = useDOMRef(ref);\n let menuTriggerRef = domRef || triggerRef;\n let menuRef = useRef<HTMLDivElement>(undefined);\n let {\n children,\n align = 'start',\n shouldFlip = true,\n direction = 'bottom',\n closeOnSelect,\n trigger = 'press'\n } = props;\n\n let [menuTrigger, menu] = React.Children.toArray(children);\n let state = useMenuTriggerState(props);\n\n let {menuTriggerProps, menuProps} = useMenuTrigger({trigger}, state, menuTriggerRef);\n\n let initialPlacement: Placement;\n switch (direction) {\n case 'left':\n case 'right':\n case 'start':\n case 'end':\n initialPlacement = `${direction} ${align === 'end' ? 'bottom' : 'top'}` as Placement;\n break;\n case 'bottom':\n case 'top':\n default:\n initialPlacement = `${direction} ${align}` as Placement;\n }\n\n let isMobile = useIsMobileDevice();\n let menuContext = {\n ...menuProps,\n ref: menuRef,\n onClose: state.close,\n closeOnSelect,\n autoFocus: state.focusStrategy || true,\n UNSAFE_style: isMobile ? {\n width: '100%',\n maxHeight: 'inherit'\n } : undefined,\n UNSAFE_className: classNames(styles, {'spectrum-Menu-popover': !isMobile}),\n state\n };\n\n // On small screen devices, the menu is rendered in a tray, otherwise a popover.\n let overlay;\n if (isMobile) {\n overlay = (\n <Tray state={state} isFixedHeight>\n {menu}\n </Tray>\n );\n } else {\n overlay = (\n <Popover\n UNSAFE_style={{clipPath: 'unset', overflow: 'visible', filter: 'unset', borderWidth: '0px'}}\n state={state}\n triggerRef={menuTriggerRef}\n scrollRef={menuRef}\n placement={initialPlacement}\n hideArrow\n shouldFlip={shouldFlip}>\n {menu}\n </Popover>\n );\n }\n\n return (\n <Fragment>\n <SlotProvider slots={{actionButton: {holdAffordance: trigger === 'longPress'}}}>\n <PressResponder {...menuTriggerProps} ref={menuTriggerRef} isPressed={state.isOpen}>\n {menuTrigger}\n </PressResponder>\n </SlotProvider>\n <MenuContext.Provider value={menuContext}>\n {overlay}\n </MenuContext.Provider>\n </Fragment>\n );\n}\n\n/**\n * The MenuTrigger serves as a wrapper around a Menu and its associated trigger,\n * linking the Menu's open state with the trigger's press state.\n */\nlet _MenuTrigger = forwardRef(MenuTrigger);\nexport {_MenuTrigger as MenuTrigger};\n"],"names":[],"version":3,"file":"MenuTrigger.module.js.map"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
var $cac834c4bc0a51d3$exports = require("./context.main.js");
|
|
2
|
+
require("./vars.89a944d6.css");
|
|
3
|
+
var $3deee0fd2b46e64f$exports = require("./menu_vars_css.main.js");
|
|
4
|
+
var $esjnM$reactspectrumutils = require("@react-spectrum/utils");
|
|
5
|
+
var $esjnM$reactariautils = require("@react-aria/utils");
|
|
6
|
+
var $esjnM$reactspectrumoverlays = require("@react-spectrum/overlays");
|
|
7
|
+
var $esjnM$react = require("react");
|
|
8
|
+
var $esjnM$reactdom = require("react-dom");
|
|
9
|
+
var $esjnM$reactariai18n = require("@react-aria/i18n");
|
|
10
|
+
var $esjnM$reactariamenu = require("@react-aria/menu");
|
|
11
|
+
var $esjnM$reactstatelymenu = require("@react-stately/menu");
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
function $parcel$interopDefault(a) {
|
|
15
|
+
return a && a.__esModule ? a.default : a;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function $parcel$export(e, n, v, s) {
|
|
19
|
+
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
$parcel$export(module.exports, "SubmenuTrigger", () => $86ed235c4695ff3f$export$ecabc99eeffab7ca);
|
|
23
|
+
/*
|
|
24
|
+
* Copyright 2020 Adobe. All rights reserved.
|
|
25
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
26
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
27
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
28
|
+
*
|
|
29
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
30
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
31
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
32
|
+
* governing permissions and limitations under the License.
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
function $86ed235c4695ff3f$var$SubmenuTrigger(props) {
|
|
44
|
+
let triggerRef = (0, $esjnM$react.useRef)(undefined);
|
|
45
|
+
let { children: children, targetKey: targetKey } = props;
|
|
46
|
+
let [menuTrigger, menu] = (0, ($parcel$interopDefault($esjnM$react))).Children.toArray(children);
|
|
47
|
+
let { popoverContainer: popoverContainer, trayContainerRef: trayContainerRef, menu: parentMenuRef, submenu: menuRef, rootMenuTriggerState: rootMenuTriggerState } = (0, $cac834c4bc0a51d3$exports.useMenuStateContext)();
|
|
48
|
+
let submenuTriggerState = (0, $esjnM$reactstatelymenu.useSubmenuTriggerState)({
|
|
49
|
+
triggerKey: targetKey
|
|
50
|
+
}, rootMenuTriggerState);
|
|
51
|
+
let { submenuTriggerProps: submenuTriggerProps, submenuProps: submenuProps, popoverProps: popoverProps } = (0, $esjnM$reactariamenu.useSubmenuTrigger)({
|
|
52
|
+
parentMenuRef: parentMenuRef,
|
|
53
|
+
submenuRef: menuRef
|
|
54
|
+
}, submenuTriggerState, triggerRef);
|
|
55
|
+
let isMobile = (0, $esjnM$reactspectrumutils.useIsMobileDevice)();
|
|
56
|
+
let onBackButtonPress = ()=>{
|
|
57
|
+
submenuTriggerState.close();
|
|
58
|
+
if (parentMenuRef.current && !parentMenuRef.current.contains(document.activeElement)) parentMenuRef.current.focus();
|
|
59
|
+
};
|
|
60
|
+
let { direction: direction } = (0, $esjnM$reactariai18n.useLocale)();
|
|
61
|
+
let mobileSubmenuKeyDown = (e)=>{
|
|
62
|
+
switch(e.key){
|
|
63
|
+
case 'ArrowLeft':
|
|
64
|
+
if (direction === 'ltr') triggerRef.current.focus();
|
|
65
|
+
break;
|
|
66
|
+
case 'ArrowRight':
|
|
67
|
+
if (direction === 'rtl') triggerRef.current.focus();
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
let overlay;
|
|
72
|
+
if (isMobile) {
|
|
73
|
+
var _submenuProps;
|
|
74
|
+
delete submenuTriggerProps.onBlur;
|
|
75
|
+
delete submenuTriggerProps.onHoverChange;
|
|
76
|
+
var _autoFocus;
|
|
77
|
+
(_autoFocus = (_submenuProps = submenuProps).autoFocus) !== null && _autoFocus !== void 0 ? _autoFocus : _submenuProps.autoFocus = true;
|
|
78
|
+
if (trayContainerRef.current && submenuTriggerState.isOpen) overlay = /*#__PURE__*/ (0, ($parcel$interopDefault($esjnM$reactdom))).createPortal(menu, trayContainerRef.current);
|
|
79
|
+
} else {
|
|
80
|
+
let onDismissButtonPress = ()=>{
|
|
81
|
+
var _parentMenuRef_current;
|
|
82
|
+
submenuTriggerState.close();
|
|
83
|
+
(_parentMenuRef_current = parentMenuRef.current) === null || _parentMenuRef_current === void 0 ? void 0 : _parentMenuRef_current.focus();
|
|
84
|
+
};
|
|
85
|
+
overlay = /*#__PURE__*/ (0, ($parcel$interopDefault($esjnM$react))).createElement((0, $esjnM$reactspectrumoverlays.Popover), {
|
|
86
|
+
...popoverProps,
|
|
87
|
+
onDismissButtonPress: onDismissButtonPress,
|
|
88
|
+
UNSAFE_className: (0, $esjnM$reactspectrumutils.classNames)((0, ($parcel$interopDefault($3deee0fd2b46e64f$exports))), 'spectrum-Submenu-popover'),
|
|
89
|
+
container: popoverContainer,
|
|
90
|
+
containerPadding: 0,
|
|
91
|
+
enableBothDismissButtons: true,
|
|
92
|
+
UNSAFE_style: {
|
|
93
|
+
clipPath: 'unset',
|
|
94
|
+
overflow: 'visible',
|
|
95
|
+
borderWidth: '0px'
|
|
96
|
+
},
|
|
97
|
+
state: submenuTriggerState,
|
|
98
|
+
triggerRef: triggerRef,
|
|
99
|
+
scrollRef: menuRef,
|
|
100
|
+
placement: "end top",
|
|
101
|
+
hideArrow: true
|
|
102
|
+
}, menu);
|
|
103
|
+
}
|
|
104
|
+
let menuContext = {
|
|
105
|
+
...(0, $esjnM$reactariautils.mergeProps)(submenuProps, {
|
|
106
|
+
ref: menuRef,
|
|
107
|
+
UNSAFE_style: isMobile ? {
|
|
108
|
+
width: '100%',
|
|
109
|
+
maxHeight: 'inherit'
|
|
110
|
+
} : undefined,
|
|
111
|
+
UNSAFE_className: (0, $esjnM$reactspectrumutils.classNames)((0, ($parcel$interopDefault($3deee0fd2b46e64f$exports))), {
|
|
112
|
+
'spectrum-Menu-popover': !isMobile
|
|
113
|
+
}),
|
|
114
|
+
...isMobile && {
|
|
115
|
+
onBackButtonPress: onBackButtonPress,
|
|
116
|
+
onKeyDown: mobileSubmenuKeyDown
|
|
117
|
+
}
|
|
118
|
+
})
|
|
119
|
+
};
|
|
120
|
+
return /*#__PURE__*/ (0, ($parcel$interopDefault($esjnM$react))).createElement((0, ($parcel$interopDefault($esjnM$react))).Fragment, null, /*#__PURE__*/ (0, ($parcel$interopDefault($esjnM$react))).createElement((0, $cac834c4bc0a51d3$exports.SubmenuTriggerContext).Provider, {
|
|
121
|
+
value: {
|
|
122
|
+
triggerRef: triggerRef,
|
|
123
|
+
...submenuTriggerProps
|
|
124
|
+
}
|
|
125
|
+
}, menuTrigger), /*#__PURE__*/ (0, ($parcel$interopDefault($esjnM$react))).createElement((0, $cac834c4bc0a51d3$exports.MenuContext).Provider, {
|
|
126
|
+
value: menuContext
|
|
127
|
+
}, overlay));
|
|
128
|
+
}
|
|
129
|
+
$86ed235c4695ff3f$var$SubmenuTrigger.getCollectionNode = function*(props) {
|
|
130
|
+
let childArray = [];
|
|
131
|
+
(0, ($parcel$interopDefault($esjnM$react))).Children.forEach(props.children, (child)=>{
|
|
132
|
+
if (/*#__PURE__*/ (0, ($parcel$interopDefault($esjnM$react))).isValidElement(child)) childArray.push(child);
|
|
133
|
+
});
|
|
134
|
+
let [trigger] = childArray;
|
|
135
|
+
let [, content] = props.children;
|
|
136
|
+
yield {
|
|
137
|
+
element: /*#__PURE__*/ (0, ($parcel$interopDefault($esjnM$react))).cloneElement(trigger, {
|
|
138
|
+
...trigger.props,
|
|
139
|
+
hasChildItems: true,
|
|
140
|
+
isTrigger: true
|
|
141
|
+
}),
|
|
142
|
+
wrapper: (element)=>/*#__PURE__*/ (0, ($parcel$interopDefault($esjnM$react))).createElement($86ed235c4695ff3f$var$SubmenuTrigger, {
|
|
143
|
+
key: element.key,
|
|
144
|
+
targetKey: element.key,
|
|
145
|
+
...props
|
|
146
|
+
}, element, content)
|
|
147
|
+
};
|
|
148
|
+
};
|
|
149
|
+
let $86ed235c4695ff3f$export$ecabc99eeffab7ca = $86ed235c4695ff3f$var$SubmenuTrigger;
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
//# sourceMappingURL=SubmenuTrigger.main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"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","sources":["packages/@react-spectrum/menu/src/SubmenuTrigger.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {classNames, useIsMobileDevice} from '@react-spectrum/utils';\nimport {Key} from '@react-types/shared';\nimport {MenuContext, SubmenuTriggerContext, useMenuStateContext} from './context';\nimport {mergeProps} from '@react-aria/utils';\nimport {Popover} from '@react-spectrum/overlays';\nimport React, {type JSX, ReactElement, useRef} from 'react';\nimport ReactDOM from 'react-dom';\nimport styles from '@adobe/spectrum-css-temp/components/menu/vars.css';\nimport {useLocale} from '@react-aria/i18n';\nimport {useSubmenuTrigger} from '@react-aria/menu';\nimport {useSubmenuTriggerState} from '@react-stately/menu';\n\ninterface SubmenuTriggerProps {\n /**\n * The contents of the SubmenuTrigger - an Item and a Menu.\n */\n children: ReactElement<any>[],\n targetKey: Key\n}\n\nexport interface SpectrumSubmenuTriggerProps extends Omit<SubmenuTriggerProps, 'targetKey'> {}\n\nfunction SubmenuTrigger(props: SubmenuTriggerProps) {\n let triggerRef = useRef<HTMLDivElement>(undefined);\n let {\n children,\n targetKey\n } = props;\n\n let [menuTrigger, menu] = React.Children.toArray(children);\n let {popoverContainer, trayContainerRef, menu: parentMenuRef, submenu: menuRef, rootMenuTriggerState} = useMenuStateContext();\n let submenuTriggerState = useSubmenuTriggerState({triggerKey: targetKey}, rootMenuTriggerState);\n let {submenuTriggerProps, submenuProps, popoverProps} = useSubmenuTrigger({\n parentMenuRef,\n submenuRef: menuRef\n }, submenuTriggerState, triggerRef);\n let isMobile = useIsMobileDevice();\n let onBackButtonPress = () => {\n submenuTriggerState.close();\n if (parentMenuRef.current && !parentMenuRef.current.contains(document.activeElement)) {\n parentMenuRef.current.focus();\n }\n };\n\n let {direction} = useLocale();\n let mobileSubmenuKeyDown = (e: KeyboardEvent) => {\n switch (e.key) {\n case 'ArrowLeft':\n if (direction === 'ltr') {\n triggerRef.current.focus();\n }\n break;\n case 'ArrowRight':\n if (direction === 'rtl') {\n triggerRef.current.focus();\n }\n break;\n }\n };\n\n let overlay;\n\n if (isMobile) {\n delete submenuTriggerProps.onBlur;\n delete submenuTriggerProps.onHoverChange;\n submenuProps.autoFocus ??= true;\n if (trayContainerRef.current && submenuTriggerState.isOpen) {\n overlay = ReactDOM.createPortal(menu, trayContainerRef.current);\n }\n } else {\n let onDismissButtonPress = () => {\n submenuTriggerState.close();\n parentMenuRef.current?.focus();\n };\n\n overlay = (\n <Popover\n {...popoverProps}\n onDismissButtonPress={onDismissButtonPress}\n UNSAFE_className={classNames(styles, 'spectrum-Submenu-popover')}\n container={popoverContainer}\n containerPadding={0}\n enableBothDismissButtons\n UNSAFE_style={{clipPath: 'unset', overflow: 'visible', borderWidth: '0px'}}\n state={submenuTriggerState}\n triggerRef={triggerRef}\n scrollRef={menuRef}\n placement=\"end top\"\n hideArrow>\n {menu}\n </Popover>\n );\n }\n\n let menuContext = {\n ...mergeProps(submenuProps, {\n ref: menuRef,\n UNSAFE_style: isMobile ? {\n width: '100%',\n maxHeight: 'inherit'\n } : undefined,\n UNSAFE_className: classNames(styles, {'spectrum-Menu-popover': !isMobile}),\n ...(isMobile && {\n onBackButtonPress,\n onKeyDown: mobileSubmenuKeyDown\n })\n })\n };\n\n return (\n <>\n <SubmenuTriggerContext.Provider value={{triggerRef, ...submenuTriggerProps}}>{menuTrigger}</SubmenuTriggerContext.Provider>\n <MenuContext.Provider value={menuContext}>\n {overlay}\n </MenuContext.Provider>\n </>\n );\n}\n\nSubmenuTrigger.getCollectionNode = function* (props: SpectrumSubmenuTriggerProps) {\n let childArray: ReactElement[] = [];\n React.Children.forEach(props.children, child => {\n if (React.isValidElement(child)) {\n childArray.push(child);\n }\n });\n let [trigger] = childArray;\n let [, content] = props.children as [ReactElement, ReactElement];\n\n yield {\n element: React.cloneElement(trigger, {...trigger.props as any, hasChildItems: true, isTrigger: true}),\n wrapper: (element) => (\n <SubmenuTrigger key={element.key} targetKey={element.key} {...props}>\n {element}\n {content}\n </SubmenuTrigger>\n )\n };\n};\n\nlet _SubmenuTrigger = SubmenuTrigger as (props: SpectrumSubmenuTriggerProps) => JSX.Element;\nexport {_SubmenuTrigger as SubmenuTrigger};\n"],"names":[],"version":3,"file":"SubmenuTrigger.main.js.map"}
|