@radix-ui/react-menu 0.1.7-rc.7 → 1.0.0-rc.1
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/dist/index.d.ts +43 -35
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +328 -296
- package/dist/index.js.map +1 -1
- package/dist/index.module.js +293 -281
- package/dist/index.module.js.map +1 -1
- package/package.json +18 -17
package/dist/index.js
CHANGED
|
@@ -1,76 +1,65 @@
|
|
|
1
1
|
var $cnSS2$babelruntimehelpersextends = require("@babel/runtime/helpers/extends");
|
|
2
2
|
var $cnSS2$react = require("react");
|
|
3
|
-
var $cnSS2$reactremovescroll = require("react-remove-scroll");
|
|
4
|
-
var $cnSS2$ariahidden = require("aria-hidden");
|
|
5
3
|
var $cnSS2$radixuiprimitive = require("@radix-ui/primitive");
|
|
6
4
|
var $cnSS2$radixuireactcollection = require("@radix-ui/react-collection");
|
|
7
5
|
var $cnSS2$radixuireactcomposerefs = require("@radix-ui/react-compose-refs");
|
|
8
6
|
var $cnSS2$radixuireactcontext = require("@radix-ui/react-context");
|
|
7
|
+
var $cnSS2$radixuireactdirection = require("@radix-ui/react-direction");
|
|
9
8
|
var $cnSS2$radixuireactdismissablelayer = require("@radix-ui/react-dismissable-layer");
|
|
9
|
+
var $cnSS2$radixuireactfocusguards = require("@radix-ui/react-focus-guards");
|
|
10
10
|
var $cnSS2$radixuireactfocusscope = require("@radix-ui/react-focus-scope");
|
|
11
|
-
var $cnSS2$
|
|
12
|
-
var $cnSS2$radixuireactprimitive = require("@radix-ui/react-primitive");
|
|
11
|
+
var $cnSS2$radixuireactid = require("@radix-ui/react-id");
|
|
13
12
|
var $cnSS2$radixuireactpopper = require("@radix-ui/react-popper");
|
|
14
13
|
var $cnSS2$radixuireactportal = require("@radix-ui/react-portal");
|
|
14
|
+
var $cnSS2$radixuireactpresence = require("@radix-ui/react-presence");
|
|
15
|
+
var $cnSS2$radixuireactprimitive = require("@radix-ui/react-primitive");
|
|
15
16
|
var $cnSS2$radixuireactrovingfocus = require("@radix-ui/react-roving-focus");
|
|
16
|
-
var $cnSS2$
|
|
17
|
+
var $cnSS2$radixuireactslot = require("@radix-ui/react-slot");
|
|
17
18
|
var $cnSS2$radixuireactusecallbackref = require("@radix-ui/react-use-callback-ref");
|
|
18
|
-
var $cnSS2$
|
|
19
|
-
var $cnSS2$
|
|
20
|
-
|
|
21
|
-
function $parcel$exportWildcard(dest, source) {
|
|
22
|
-
Object.keys(source).forEach(function(key) {
|
|
23
|
-
if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
Object.defineProperty(dest, key, {
|
|
28
|
-
enumerable: true,
|
|
29
|
-
get: function get() {
|
|
30
|
-
return source[key];
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
});
|
|
19
|
+
var $cnSS2$ariahidden = require("aria-hidden");
|
|
20
|
+
var $cnSS2$reactremovescroll = require("react-remove-scroll");
|
|
34
21
|
|
|
35
|
-
|
|
22
|
+
function $parcel$export(e, n, v, s) {
|
|
23
|
+
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
36
24
|
}
|
|
37
25
|
function $parcel$interopDefault(a) {
|
|
38
26
|
return a && a.__esModule ? a.default : a;
|
|
39
27
|
}
|
|
40
|
-
function $parcel$export(e, n, v, s) {
|
|
41
|
-
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
42
|
-
}
|
|
43
|
-
var $213e4d2df823067d$exports = {};
|
|
44
28
|
|
|
45
|
-
$parcel$export(
|
|
46
|
-
$parcel$export(
|
|
47
|
-
$parcel$export(
|
|
48
|
-
$parcel$export(
|
|
49
|
-
$parcel$export(
|
|
50
|
-
$parcel$export(
|
|
51
|
-
$parcel$export(
|
|
52
|
-
$parcel$export(
|
|
53
|
-
$parcel$export(
|
|
54
|
-
$parcel$export(
|
|
55
|
-
$parcel$export(
|
|
56
|
-
$parcel$export(
|
|
57
|
-
$parcel$export(
|
|
58
|
-
$parcel$export(
|
|
59
|
-
$parcel$export(
|
|
60
|
-
$parcel$export(
|
|
61
|
-
$parcel$export(
|
|
62
|
-
$parcel$export(
|
|
63
|
-
$parcel$export(
|
|
64
|
-
$parcel$export(
|
|
65
|
-
$parcel$export(
|
|
66
|
-
$parcel$export(
|
|
67
|
-
$parcel$export(
|
|
68
|
-
$parcel$export(
|
|
69
|
-
$parcel$export(
|
|
70
|
-
$parcel$export(
|
|
71
|
-
$parcel$export(
|
|
72
|
-
$parcel$export(
|
|
73
|
-
$parcel$export(
|
|
29
|
+
$parcel$export(module.exports, "createMenuScope", () => $213e4d2df823067d$export$4027731b685e72eb);
|
|
30
|
+
$parcel$export(module.exports, "Menu", () => $213e4d2df823067d$export$d9b273488cd8ce6f);
|
|
31
|
+
$parcel$export(module.exports, "MenuAnchor", () => $213e4d2df823067d$export$9fa5ebd18bee4d43);
|
|
32
|
+
$parcel$export(module.exports, "MenuPortal", () => $213e4d2df823067d$export$793392f970497feb);
|
|
33
|
+
$parcel$export(module.exports, "MenuContent", () => $213e4d2df823067d$export$479f0f2f71193efe);
|
|
34
|
+
$parcel$export(module.exports, "MenuGroup", () => $213e4d2df823067d$export$22a631d1f72787bb);
|
|
35
|
+
$parcel$export(module.exports, "MenuLabel", () => $213e4d2df823067d$export$dd37bec0e8a99143);
|
|
36
|
+
$parcel$export(module.exports, "MenuItem", () => $213e4d2df823067d$export$2ce376c2cc3355c8);
|
|
37
|
+
$parcel$export(module.exports, "MenuCheckboxItem", () => $213e4d2df823067d$export$f6f243521332502d);
|
|
38
|
+
$parcel$export(module.exports, "MenuRadioGroup", () => $213e4d2df823067d$export$ea2200c9eee416b3);
|
|
39
|
+
$parcel$export(module.exports, "MenuRadioItem", () => $213e4d2df823067d$export$69bd225e9817f6d0);
|
|
40
|
+
$parcel$export(module.exports, "MenuItemIndicator", () => $213e4d2df823067d$export$a2593e23056970a3);
|
|
41
|
+
$parcel$export(module.exports, "MenuSeparator", () => $213e4d2df823067d$export$1cec7dcdd713e220);
|
|
42
|
+
$parcel$export(module.exports, "MenuArrow", () => $213e4d2df823067d$export$bcdda4773debf5fa);
|
|
43
|
+
$parcel$export(module.exports, "MenuSub", () => $213e4d2df823067d$export$71bdb9d1e2909932);
|
|
44
|
+
$parcel$export(module.exports, "MenuSubTrigger", () => $213e4d2df823067d$export$5fbbb3ba7297405f);
|
|
45
|
+
$parcel$export(module.exports, "MenuSubContent", () => $213e4d2df823067d$export$e7142ab31822bde6);
|
|
46
|
+
$parcel$export(module.exports, "Root", () => $213e4d2df823067d$export$be92b6f5f03c0fe9);
|
|
47
|
+
$parcel$export(module.exports, "Anchor", () => $213e4d2df823067d$export$b688253958b8dfe7);
|
|
48
|
+
$parcel$export(module.exports, "Portal", () => $213e4d2df823067d$export$602eac185826482c);
|
|
49
|
+
$parcel$export(module.exports, "Content", () => $213e4d2df823067d$export$7c6e2c02157bb7d2);
|
|
50
|
+
$parcel$export(module.exports, "Group", () => $213e4d2df823067d$export$eb2fcfdbd7ba97d4);
|
|
51
|
+
$parcel$export(module.exports, "Label", () => $213e4d2df823067d$export$b04be29aa201d4f5);
|
|
52
|
+
$parcel$export(module.exports, "Item", () => $213e4d2df823067d$export$6d08773d2e66f8f2);
|
|
53
|
+
$parcel$export(module.exports, "CheckboxItem", () => $213e4d2df823067d$export$16ce288f89fa631c);
|
|
54
|
+
$parcel$export(module.exports, "RadioGroup", () => $213e4d2df823067d$export$a98f0dcb43a68a25);
|
|
55
|
+
$parcel$export(module.exports, "RadioItem", () => $213e4d2df823067d$export$371ab307eab489c0);
|
|
56
|
+
$parcel$export(module.exports, "ItemIndicator", () => $213e4d2df823067d$export$c3468e2714d175fa);
|
|
57
|
+
$parcel$export(module.exports, "Separator", () => $213e4d2df823067d$export$1ff3c3f08ae963c0);
|
|
58
|
+
$parcel$export(module.exports, "Arrow", () => $213e4d2df823067d$export$21b07c8f274aebd5);
|
|
59
|
+
$parcel$export(module.exports, "Sub", () => $213e4d2df823067d$export$d7a01e11500dfb6f);
|
|
60
|
+
$parcel$export(module.exports, "SubTrigger", () => $213e4d2df823067d$export$2ea8a7a591ac5eac);
|
|
61
|
+
$parcel$export(module.exports, "SubContent", () => $213e4d2df823067d$export$6d4de93b380beddf);
|
|
62
|
+
|
|
74
63
|
|
|
75
64
|
|
|
76
65
|
|
|
@@ -140,6 +129,7 @@ const [$213e4d2df823067d$var$createMenuContext, $213e4d2df823067d$export$4027731
|
|
|
140
129
|
const $213e4d2df823067d$var$usePopperScope = $cnSS2$radixuireactpopper.createPopperScope();
|
|
141
130
|
const $213e4d2df823067d$var$useRovingFocusGroupScope = $cnSS2$radixuireactrovingfocus.createRovingFocusGroupScope();
|
|
142
131
|
const [$213e4d2df823067d$var$MenuProvider, $213e4d2df823067d$var$useMenuContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$MENU_NAME);
|
|
132
|
+
const [$213e4d2df823067d$var$MenuRootProvider, $213e4d2df823067d$var$useMenuRootContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$MENU_NAME);
|
|
143
133
|
const $213e4d2df823067d$export$d9b273488cd8ce6f = (props)=>{
|
|
144
134
|
const { __scopeMenu: __scopeMenu , open: open = false , children: children , dir: dir , onOpenChange: onOpenChange , modal: modal = true } = props;
|
|
145
135
|
const popperScope = $213e4d2df823067d$var$usePopperScope(__scopeMenu);
|
|
@@ -180,59 +170,24 @@ const $213e4d2df823067d$export$d9b273488cd8ce6f = (props)=>{
|
|
|
180
170
|
}, []);
|
|
181
171
|
return /*#__PURE__*/ $cnSS2$react.createElement($cnSS2$radixuireactpopper.Root, popperScope, /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuProvider, {
|
|
182
172
|
scope: __scopeMenu,
|
|
183
|
-
isSubmenu: false,
|
|
184
|
-
isUsingKeyboardRef: isUsingKeyboardRef,
|
|
185
|
-
dir: direction,
|
|
186
173
|
open: open,
|
|
187
174
|
onOpenChange: handleOpenChange,
|
|
188
175
|
content: content,
|
|
189
|
-
onContentChange: setContent
|
|
190
|
-
|
|
176
|
+
onContentChange: setContent
|
|
177
|
+
}, /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuRootProvider, {
|
|
178
|
+
scope: __scopeMenu,
|
|
179
|
+
onClose: $cnSS2$react.useCallback(()=>handleOpenChange(false)
|
|
191
180
|
, [
|
|
192
181
|
handleOpenChange
|
|
193
182
|
]),
|
|
183
|
+
isUsingKeyboardRef: isUsingKeyboardRef,
|
|
184
|
+
dir: direction,
|
|
194
185
|
modal: modal
|
|
195
|
-
}, children));
|
|
186
|
+
}, children)));
|
|
196
187
|
};
|
|
197
188
|
/*#__PURE__*/ Object.assign($213e4d2df823067d$export$d9b273488cd8ce6f, {
|
|
198
189
|
displayName: $213e4d2df823067d$var$MENU_NAME
|
|
199
190
|
});
|
|
200
|
-
/* ---------------------------------------------------------------------------------------------- */ const $213e4d2df823067d$var$SUB_NAME = 'MenuSub';
|
|
201
|
-
const $213e4d2df823067d$export$71bdb9d1e2909932 = (props)=>{
|
|
202
|
-
const { __scopeMenu: __scopeMenu , children: children , open: open = false , onOpenChange: onOpenChange } = props;
|
|
203
|
-
const parentMenuContext = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$SUB_NAME, __scopeMenu);
|
|
204
|
-
const popperScope = $213e4d2df823067d$var$usePopperScope(__scopeMenu);
|
|
205
|
-
const [trigger, setTrigger] = $cnSS2$react.useState(null);
|
|
206
|
-
const [content, setContent] = $cnSS2$react.useState(null);
|
|
207
|
-
const handleOpenChange = $cnSS2$radixuireactusecallbackref.useCallbackRef(onOpenChange); // Prevent the parent menu from reopening with open submenus.
|
|
208
|
-
$cnSS2$react.useEffect(()=>{
|
|
209
|
-
if (parentMenuContext.open === false) handleOpenChange(false);
|
|
210
|
-
return ()=>handleOpenChange(false)
|
|
211
|
-
;
|
|
212
|
-
}, [
|
|
213
|
-
parentMenuContext.open,
|
|
214
|
-
handleOpenChange
|
|
215
|
-
]);
|
|
216
|
-
return /*#__PURE__*/ $cnSS2$react.createElement($cnSS2$radixuireactpopper.Root, popperScope, /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuProvider, {
|
|
217
|
-
scope: __scopeMenu,
|
|
218
|
-
isSubmenu: true,
|
|
219
|
-
isUsingKeyboardRef: parentMenuContext.isUsingKeyboardRef,
|
|
220
|
-
dir: parentMenuContext.dir,
|
|
221
|
-
open: open,
|
|
222
|
-
onOpenChange: handleOpenChange,
|
|
223
|
-
content: content,
|
|
224
|
-
onContentChange: setContent,
|
|
225
|
-
onRootClose: parentMenuContext.onRootClose,
|
|
226
|
-
contentId: $cnSS2$radixuireactid.useId(),
|
|
227
|
-
trigger: trigger,
|
|
228
|
-
onTriggerChange: setTrigger,
|
|
229
|
-
triggerId: $cnSS2$radixuireactid.useId(),
|
|
230
|
-
modal: false
|
|
231
|
-
}, children));
|
|
232
|
-
};
|
|
233
|
-
/*#__PURE__*/ Object.assign($213e4d2df823067d$export$71bdb9d1e2909932, {
|
|
234
|
-
displayName: $213e4d2df823067d$var$SUB_NAME
|
|
235
|
-
});
|
|
236
191
|
/* -------------------------------------------------------------------------------------------------
|
|
237
192
|
* MenuAnchor
|
|
238
193
|
* -----------------------------------------------------------------------------------------------*/ const $213e4d2df823067d$var$ANCHOR_NAME = 'MenuAnchor';
|
|
@@ -246,34 +201,50 @@ const $213e4d2df823067d$export$9fa5ebd18bee4d43 = /*#__PURE__*/ $cnSS2$react.for
|
|
|
246
201
|
/*#__PURE__*/ Object.assign($213e4d2df823067d$export$9fa5ebd18bee4d43, {
|
|
247
202
|
displayName: $213e4d2df823067d$var$ANCHOR_NAME
|
|
248
203
|
});
|
|
204
|
+
/* -------------------------------------------------------------------------------------------------
|
|
205
|
+
* MenuPortal
|
|
206
|
+
* -----------------------------------------------------------------------------------------------*/ const $213e4d2df823067d$var$PORTAL_NAME = 'MenuPortal';
|
|
207
|
+
const [$213e4d2df823067d$var$PortalProvider, $213e4d2df823067d$var$usePortalContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$PORTAL_NAME, {
|
|
208
|
+
forceMount: undefined
|
|
209
|
+
});
|
|
210
|
+
const $213e4d2df823067d$export$793392f970497feb = (props)=>{
|
|
211
|
+
const { __scopeMenu: __scopeMenu , forceMount: forceMount , children: children , container: container } = props;
|
|
212
|
+
const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$PORTAL_NAME, __scopeMenu);
|
|
213
|
+
return /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$PortalProvider, {
|
|
214
|
+
scope: __scopeMenu,
|
|
215
|
+
forceMount: forceMount
|
|
216
|
+
}, /*#__PURE__*/ $cnSS2$react.createElement($cnSS2$radixuireactpresence.Presence, {
|
|
217
|
+
present: forceMount || context.open
|
|
218
|
+
}, /*#__PURE__*/ $cnSS2$react.createElement($cnSS2$radixuireactportal.Portal, {
|
|
219
|
+
asChild: true,
|
|
220
|
+
container: container
|
|
221
|
+
}, children)));
|
|
222
|
+
};
|
|
223
|
+
/*#__PURE__*/ Object.assign($213e4d2df823067d$export$793392f970497feb, {
|
|
224
|
+
displayName: $213e4d2df823067d$var$PORTAL_NAME
|
|
225
|
+
});
|
|
249
226
|
/* -------------------------------------------------------------------------------------------------
|
|
250
227
|
* MenuContent
|
|
251
228
|
* -----------------------------------------------------------------------------------------------*/ const $213e4d2df823067d$var$CONTENT_NAME = 'MenuContent';
|
|
252
229
|
const [$213e4d2df823067d$var$MenuContentProvider, $213e4d2df823067d$var$useMenuContentContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$CONTENT_NAME);
|
|
253
230
|
const $213e4d2df823067d$export$479f0f2f71193efe = /*#__PURE__*/ $cnSS2$react.forwardRef((props, forwardedRef)=>{
|
|
254
|
-
const
|
|
231
|
+
const portalContext = $213e4d2df823067d$var$usePortalContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu);
|
|
232
|
+
const { forceMount: forceMount = portalContext.forceMount , ...contentProps } = props;
|
|
255
233
|
const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu);
|
|
234
|
+
const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu);
|
|
256
235
|
return /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$Collection.Provider, {
|
|
257
236
|
scope: props.__scopeMenu
|
|
258
237
|
}, /*#__PURE__*/ $cnSS2$react.createElement($cnSS2$radixuireactpresence.Presence, {
|
|
259
238
|
present: forceMount || context.open
|
|
260
239
|
}, /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$Collection.Slot, {
|
|
261
240
|
scope: props.__scopeMenu
|
|
262
|
-
},
|
|
241
|
+
}, rootContext.modal ? /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuRootContentModal, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({}, contentProps, {
|
|
263
242
|
ref: forwardedRef
|
|
264
|
-
})) : /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$
|
|
243
|
+
})) : /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuRootContentNonModal, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({}, contentProps, {
|
|
265
244
|
ref: forwardedRef
|
|
266
245
|
})))));
|
|
267
246
|
});
|
|
268
|
-
/* ---------------------------------------------------------------------------------------------- */ const $213e4d2df823067d$var$
|
|
269
|
-
const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu);
|
|
270
|
-
return context.modal ? /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuRootContentModal, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({}, props, {
|
|
271
|
-
ref: forwardedRef
|
|
272
|
-
})) : /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuRootContentNonModal, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({}, props, {
|
|
273
|
-
ref: forwardedRef
|
|
274
|
-
}));
|
|
275
|
-
});
|
|
276
|
-
const $213e4d2df823067d$var$MenuRootContentModal = /*#__PURE__*/ $cnSS2$react.forwardRef((props, forwardedRef)=>{
|
|
247
|
+
/* ---------------------------------------------------------------------------------------------- */ const $213e4d2df823067d$var$MenuRootContentModal = /*#__PURE__*/ $cnSS2$react.forwardRef((props, forwardedRef)=>{
|
|
277
248
|
const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu);
|
|
278
249
|
const ref = $cnSS2$react.useRef(null);
|
|
279
250
|
const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); // Hide everything from ARIA except the `MenuContent`
|
|
@@ -306,52 +277,10 @@ const $213e4d2df823067d$var$MenuRootContentNonModal = /*#__PURE__*/ $cnSS2$react
|
|
|
306
277
|
onDismiss: ()=>context.onOpenChange(false)
|
|
307
278
|
}));
|
|
308
279
|
});
|
|
309
|
-
/* ---------------------------------------------------------------------------------------------- */ const $213e4d2df823067d$var$MenuSubContent = /*#__PURE__*/ $cnSS2$react.forwardRef((props, forwardedRef)=>{
|
|
310
|
-
const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu);
|
|
311
|
-
const ref = $cnSS2$react.useRef(null);
|
|
312
|
-
const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref);
|
|
313
|
-
return context.isSubmenu ? /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuContentImpl, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({
|
|
314
|
-
id: context.contentId,
|
|
315
|
-
"aria-labelledby": context.triggerId
|
|
316
|
-
}, props, {
|
|
317
|
-
ref: composedRefs,
|
|
318
|
-
align: "start",
|
|
319
|
-
side: context.dir === 'rtl' ? 'left' : 'right',
|
|
320
|
-
portalled: true,
|
|
321
|
-
disableOutsidePointerEvents: false,
|
|
322
|
-
disableOutsideScroll: false,
|
|
323
|
-
trapFocus: false,
|
|
324
|
-
onOpenAutoFocus: (event)=>{
|
|
325
|
-
var _ref$current;
|
|
326
|
-
// when opening a submenu, focus content for keyboard users only
|
|
327
|
-
if (context.isUsingKeyboardRef.current) (_ref$current = ref.current) === null || _ref$current === void 0 || _ref$current.focus();
|
|
328
|
-
event.preventDefault();
|
|
329
|
-
} // The menu might close because of focusing another menu item in the parent menu. We
|
|
330
|
-
,
|
|
331
|
-
onCloseAutoFocus: (event)=>event.preventDefault()
|
|
332
|
-
,
|
|
333
|
-
onFocusOutside: $cnSS2$radixuiprimitive.composeEventHandlers(props.onFocusOutside, (event)=>{
|
|
334
|
-
// We prevent closing when the trigger is focused to avoid triggering a re-open animation
|
|
335
|
-
// on pointer interaction.
|
|
336
|
-
if (event.target !== context.trigger) context.onOpenChange(false);
|
|
337
|
-
}),
|
|
338
|
-
onEscapeKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(props.onEscapeKeyDown, context.onRootClose),
|
|
339
|
-
onKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(props.onKeyDown, (event)=>{
|
|
340
|
-
// Submenu key events bubble through portals. We only care about keys in this menu.
|
|
341
|
-
const isKeyDownInside = event.currentTarget.contains(event.target);
|
|
342
|
-
const isCloseKey = $213e4d2df823067d$var$SUB_CLOSE_KEYS[context.dir].includes(event.key);
|
|
343
|
-
if (isKeyDownInside && isCloseKey) {
|
|
344
|
-
var _context$trigger;
|
|
345
|
-
context.onOpenChange(false); // We focus manually because we prevented it in `onCloseAutoFocus`
|
|
346
|
-
(_context$trigger = context.trigger) === null || _context$trigger === void 0 || _context$trigger.focus(); // prevent window from scrolling
|
|
347
|
-
event.preventDefault();
|
|
348
|
-
}
|
|
349
|
-
})
|
|
350
|
-
})) : null;
|
|
351
|
-
});
|
|
352
280
|
/* ---------------------------------------------------------------------------------------------- */ const $213e4d2df823067d$var$MenuContentImpl = /*#__PURE__*/ $cnSS2$react.forwardRef((props, forwardedRef)=>{
|
|
353
|
-
const { __scopeMenu: __scopeMenu , loop: loop = false , trapFocus: trapFocus , onOpenAutoFocus: onOpenAutoFocus , onCloseAutoFocus: onCloseAutoFocus , disableOutsidePointerEvents: disableOutsidePointerEvents , onEscapeKeyDown: onEscapeKeyDown , onPointerDownOutside: onPointerDownOutside , onFocusOutside: onFocusOutside , onInteractOutside: onInteractOutside , onDismiss: onDismiss , disableOutsideScroll: disableOutsideScroll ,
|
|
281
|
+
const { __scopeMenu: __scopeMenu , loop: loop = false , trapFocus: trapFocus , onOpenAutoFocus: onOpenAutoFocus , onCloseAutoFocus: onCloseAutoFocus , disableOutsidePointerEvents: disableOutsidePointerEvents , onEscapeKeyDown: onEscapeKeyDown , onPointerDownOutside: onPointerDownOutside , onFocusOutside: onFocusOutside , onInteractOutside: onInteractOutside , onDismiss: onDismiss , disableOutsideScroll: disableOutsideScroll , ...contentProps } = props;
|
|
354
282
|
const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, __scopeMenu);
|
|
283
|
+
const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$CONTENT_NAME, __scopeMenu);
|
|
355
284
|
const popperScope = $213e4d2df823067d$var$usePopperScope(__scopeMenu);
|
|
356
285
|
const rovingFocusGroupScope = $213e4d2df823067d$var$useRovingFocusGroupScope(__scopeMenu);
|
|
357
286
|
const getItems = $213e4d2df823067d$var$useCollection(__scopeMenu);
|
|
@@ -364,10 +293,10 @@ const $213e4d2df823067d$var$MenuRootContentNonModal = /*#__PURE__*/ $cnSS2$react
|
|
|
364
293
|
const pointerGraceIntentRef = $cnSS2$react.useRef(null);
|
|
365
294
|
const pointerDirRef = $cnSS2$react.useRef('right');
|
|
366
295
|
const lastPointerXRef = $cnSS2$react.useRef(0);
|
|
367
|
-
const PortalWrapper = portalled ? $cnSS2$radixuireactportal.Portal : $cnSS2$react.Fragment;
|
|
368
296
|
const ScrollLockWrapper = disableOutsideScroll ? $cnSS2$reactremovescroll.RemoveScroll : $cnSS2$react.Fragment;
|
|
369
297
|
const scrollLockWrapperProps = disableOutsideScroll ? {
|
|
370
|
-
|
|
298
|
+
as: $cnSS2$radixuireactslot.Slot,
|
|
299
|
+
allowPinchZoom: true
|
|
371
300
|
} : undefined;
|
|
372
301
|
const handleTypeaheadSearch = (key)=>{
|
|
373
302
|
var _items$find, _items$find2;
|
|
@@ -405,7 +334,7 @@ const $213e4d2df823067d$var$MenuRootContentNonModal = /*#__PURE__*/ $cnSS2$react
|
|
|
405
334
|
const isMovingTowards = pointerDirRef.current === ((_pointerGraceIntentRe = pointerGraceIntentRef.current) === null || _pointerGraceIntentRe === void 0 ? void 0 : _pointerGraceIntentRe.side);
|
|
406
335
|
return isMovingTowards && $213e4d2df823067d$var$isPointerInGraceArea(event, (_pointerGraceIntentRe2 = pointerGraceIntentRef.current) === null || _pointerGraceIntentRe2 === void 0 ? void 0 : _pointerGraceIntentRe2.area);
|
|
407
336
|
}, []);
|
|
408
|
-
return /*#__PURE__*/ $cnSS2$react.createElement(
|
|
337
|
+
return /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuContentProvider, {
|
|
409
338
|
scope: __scopeMenu,
|
|
410
339
|
searchRef: searchRef,
|
|
411
340
|
onItemEnter: $cnSS2$react.useCallback((event)=>{
|
|
@@ -430,7 +359,7 @@ const $213e4d2df823067d$var$MenuRootContentNonModal = /*#__PURE__*/ $cnSS2$react
|
|
|
430
359
|
onPointerGraceIntentChange: $cnSS2$react.useCallback((intent)=>{
|
|
431
360
|
pointerGraceIntentRef.current = intent;
|
|
432
361
|
}, [])
|
|
433
|
-
}, /*#__PURE__*/ $cnSS2$react.createElement($cnSS2$radixuireactfocusscope.FocusScope, {
|
|
362
|
+
}, /*#__PURE__*/ $cnSS2$react.createElement(ScrollLockWrapper, scrollLockWrapperProps, /*#__PURE__*/ $cnSS2$react.createElement($cnSS2$radixuireactfocusscope.FocusScope, {
|
|
434
363
|
asChild: true,
|
|
435
364
|
trapped: trapFocus,
|
|
436
365
|
onMountAutoFocus: $cnSS2$radixuiprimitive.composeEventHandlers(onOpenAutoFocus, (event)=>{
|
|
@@ -452,20 +381,20 @@ const $213e4d2df823067d$var$MenuRootContentNonModal = /*#__PURE__*/ $cnSS2$react
|
|
|
452
381
|
}, /*#__PURE__*/ $cnSS2$react.createElement($cnSS2$radixuireactrovingfocus.Root, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({
|
|
453
382
|
asChild: true
|
|
454
383
|
}, rovingFocusGroupScope, {
|
|
455
|
-
dir:
|
|
384
|
+
dir: rootContext.dir,
|
|
456
385
|
orientation: "vertical",
|
|
457
386
|
loop: loop,
|
|
458
387
|
currentTabStopId: currentItemId,
|
|
459
388
|
onCurrentTabStopIdChange: setCurrentItemId,
|
|
460
389
|
onEntryFocus: (event)=>{
|
|
461
390
|
// only focus first item when using keyboard
|
|
462
|
-
if (!
|
|
391
|
+
if (!rootContext.isUsingKeyboardRef.current) event.preventDefault();
|
|
463
392
|
}
|
|
464
393
|
}), /*#__PURE__*/ $cnSS2$react.createElement($cnSS2$radixuireactpopper.Content, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({
|
|
465
394
|
role: "menu",
|
|
466
395
|
"aria-orientation": "vertical",
|
|
467
396
|
"data-state": $213e4d2df823067d$var$getOpenState(context.open),
|
|
468
|
-
dir:
|
|
397
|
+
dir: rootContext.dir
|
|
469
398
|
}, popperScope, contentProps, {
|
|
470
399
|
ref: composedRefs,
|
|
471
400
|
style: {
|
|
@@ -475,7 +404,7 @@ const $213e4d2df823067d$var$MenuRootContentNonModal = /*#__PURE__*/ $cnSS2$react
|
|
|
475
404
|
onKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(contentProps.onKeyDown, (event)=>{
|
|
476
405
|
// submenu key events bubble through portals. We only care about keys in this menu.
|
|
477
406
|
const target = event.target;
|
|
478
|
-
const isKeyDownInside = event.currentTarget
|
|
407
|
+
const isKeyDownInside = target.closest('[role="menu"]') === event.currentTarget;
|
|
479
408
|
const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;
|
|
480
409
|
const isCharacterKey = event.key.length === 1;
|
|
481
410
|
if (isKeyDownInside) {
|
|
@@ -511,7 +440,7 @@ const $213e4d2df823067d$var$MenuRootContentNonModal = /*#__PURE__*/ $cnSS2$react
|
|
|
511
440
|
lastPointerXRef.current = event.clientX;
|
|
512
441
|
}
|
|
513
442
|
}))
|
|
514
|
-
})))))))
|
|
443
|
+
})))))));
|
|
515
444
|
});
|
|
516
445
|
/*#__PURE__*/ Object.assign($213e4d2df823067d$export$479f0f2f71193efe, {
|
|
517
446
|
displayName: $213e4d2df823067d$var$CONTENT_NAME
|
|
@@ -549,14 +478,14 @@ const $213e4d2df823067d$var$ITEM_SELECT = 'menu.itemSelect';
|
|
|
549
478
|
const $213e4d2df823067d$export$2ce376c2cc3355c8 = /*#__PURE__*/ $cnSS2$react.forwardRef((props, forwardedRef)=>{
|
|
550
479
|
const { disabled: disabled = false , onSelect: onSelect , ...itemProps } = props;
|
|
551
480
|
const ref = $cnSS2$react.useRef(null);
|
|
552
|
-
const
|
|
481
|
+
const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$ITEM_NAME, props.__scopeMenu);
|
|
553
482
|
const contentContext = $213e4d2df823067d$var$useMenuContentContext($213e4d2df823067d$var$ITEM_NAME, props.__scopeMenu);
|
|
554
483
|
const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref);
|
|
555
484
|
const isPointerDownRef = $cnSS2$react.useRef(false);
|
|
556
485
|
const handleSelect = ()=>{
|
|
557
486
|
const menuItem = ref.current;
|
|
558
487
|
if (!disabled && menuItem) {
|
|
559
|
-
const itemSelectEvent = new
|
|
488
|
+
const itemSelectEvent = new CustomEvent($213e4d2df823067d$var$ITEM_SELECT, {
|
|
560
489
|
bubbles: true,
|
|
561
490
|
cancelable: true
|
|
562
491
|
});
|
|
@@ -564,9 +493,9 @@ const $213e4d2df823067d$export$2ce376c2cc3355c8 = /*#__PURE__*/ $cnSS2$react.for
|
|
|
564
493
|
, {
|
|
565
494
|
once: true
|
|
566
495
|
});
|
|
567
|
-
|
|
496
|
+
$cnSS2$radixuireactprimitive.dispatchDiscreteCustomEvent(menuItem, itemSelectEvent);
|
|
568
497
|
if (itemSelectEvent.defaultPrevented) isPointerDownRef.current = false;
|
|
569
|
-
else
|
|
498
|
+
else rootContext.onClose();
|
|
570
499
|
}
|
|
571
500
|
};
|
|
572
501
|
return /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuItemImpl, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({}, itemProps, {
|
|
@@ -603,137 +532,13 @@ const $213e4d2df823067d$export$2ce376c2cc3355c8 = /*#__PURE__*/ $cnSS2$react.for
|
|
|
603
532
|
/*#__PURE__*/ Object.assign($213e4d2df823067d$export$2ce376c2cc3355c8, {
|
|
604
533
|
displayName: $213e4d2df823067d$var$ITEM_NAME
|
|
605
534
|
});
|
|
606
|
-
/* -------------------------------------------------------------------------------------------------
|
|
607
|
-
* MenuSubTrigger
|
|
608
|
-
* -----------------------------------------------------------------------------------------------*/ const $213e4d2df823067d$var$SUB_TRIGGER_NAME = 'MenuSubTrigger';
|
|
609
|
-
const $213e4d2df823067d$export$5fbbb3ba7297405f = /*#__PURE__*/ $cnSS2$react.forwardRef((props, forwardedRef)=>{
|
|
610
|
-
const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$SUB_TRIGGER_NAME, props.__scopeMenu);
|
|
611
|
-
const contentContext = $213e4d2df823067d$var$useMenuContentContext($213e4d2df823067d$var$SUB_TRIGGER_NAME, props.__scopeMenu);
|
|
612
|
-
const openTimerRef = $cnSS2$react.useRef(null);
|
|
613
|
-
const { pointerGraceTimerRef: pointerGraceTimerRef , onPointerGraceIntentChange: onPointerGraceIntentChange } = contentContext;
|
|
614
|
-
const scope = {
|
|
615
|
-
__scopeMenu: props.__scopeMenu
|
|
616
|
-
};
|
|
617
|
-
const clearOpenTimer = $cnSS2$react.useCallback(()=>{
|
|
618
|
-
if (openTimerRef.current) window.clearTimeout(openTimerRef.current);
|
|
619
|
-
openTimerRef.current = null;
|
|
620
|
-
}, []);
|
|
621
|
-
$cnSS2$react.useEffect(()=>clearOpenTimer
|
|
622
|
-
, [
|
|
623
|
-
clearOpenTimer
|
|
624
|
-
]);
|
|
625
|
-
$cnSS2$react.useEffect(()=>{
|
|
626
|
-
const pointerGraceTimer = pointerGraceTimerRef.current;
|
|
627
|
-
return ()=>{
|
|
628
|
-
window.clearTimeout(pointerGraceTimer);
|
|
629
|
-
onPointerGraceIntentChange(null);
|
|
630
|
-
};
|
|
631
|
-
}, [
|
|
632
|
-
pointerGraceTimerRef,
|
|
633
|
-
onPointerGraceIntentChange
|
|
634
|
-
]);
|
|
635
|
-
return context.isSubmenu ? /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$export$9fa5ebd18bee4d43, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({
|
|
636
|
-
asChild: true
|
|
637
|
-
}, scope), /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuItemImpl, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({
|
|
638
|
-
id: context.triggerId,
|
|
639
|
-
"aria-haspopup": "menu",
|
|
640
|
-
"aria-expanded": context.open,
|
|
641
|
-
"aria-controls": context.contentId,
|
|
642
|
-
"data-state": $213e4d2df823067d$var$getOpenState(context.open)
|
|
643
|
-
}, props, {
|
|
644
|
-
ref: $cnSS2$radixuireactcomposerefs.composeRefs(forwardedRef, context.onTriggerChange) // This is redundant for mouse users but we cannot determine pointer type from
|
|
645
|
-
,
|
|
646
|
-
onClick: (event)=>{
|
|
647
|
-
var _props$onClick;
|
|
648
|
-
(_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props, event);
|
|
649
|
-
if (props.disabled || event.defaultPrevented) return;
|
|
650
|
-
/**
|
|
651
|
-
* We manually focus because iOS Safari doesn't always focus on click (e.g. buttons)
|
|
652
|
-
* and we rely heavily on `onFocusOutside` for submenus to close when switching
|
|
653
|
-
* between separate submenus.
|
|
654
|
-
*/ event.currentTarget.focus();
|
|
655
|
-
if (!context.open) context.onOpenChange(true);
|
|
656
|
-
},
|
|
657
|
-
onPointerMove: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerMove, $213e4d2df823067d$var$whenMouse((event)=>{
|
|
658
|
-
contentContext.onItemEnter(event);
|
|
659
|
-
if (event.defaultPrevented) return;
|
|
660
|
-
if (!props.disabled && !context.open && !openTimerRef.current) {
|
|
661
|
-
contentContext.onPointerGraceIntentChange(null);
|
|
662
|
-
openTimerRef.current = window.setTimeout(()=>{
|
|
663
|
-
context.onOpenChange(true);
|
|
664
|
-
clearOpenTimer();
|
|
665
|
-
}, 100);
|
|
666
|
-
}
|
|
667
|
-
})),
|
|
668
|
-
onPointerLeave: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerLeave, $213e4d2df823067d$var$whenMouse((event)=>{
|
|
669
|
-
var _context$content;
|
|
670
|
-
clearOpenTimer();
|
|
671
|
-
const contentRect = (_context$content = context.content) === null || _context$content === void 0 ? void 0 : _context$content.getBoundingClientRect();
|
|
672
|
-
if (contentRect) {
|
|
673
|
-
var _context$content2;
|
|
674
|
-
// TODO: make sure to update this when we change positioning logic
|
|
675
|
-
const side = (_context$content2 = context.content) === null || _context$content2 === void 0 ? void 0 : _context$content2.dataset.side;
|
|
676
|
-
const rightSide = side === 'right';
|
|
677
|
-
const bleed = rightSide ? -5 : 5;
|
|
678
|
-
const contentNearEdge = contentRect[rightSide ? 'left' : 'right'];
|
|
679
|
-
const contentFarEdge = contentRect[rightSide ? 'right' : 'left'];
|
|
680
|
-
contentContext.onPointerGraceIntentChange({
|
|
681
|
-
area: [
|
|
682
|
-
// consistently within polygon bounds
|
|
683
|
-
{
|
|
684
|
-
x: event.clientX + bleed,
|
|
685
|
-
y: event.clientY
|
|
686
|
-
},
|
|
687
|
-
{
|
|
688
|
-
x: contentNearEdge,
|
|
689
|
-
y: contentRect.top
|
|
690
|
-
},
|
|
691
|
-
{
|
|
692
|
-
x: contentFarEdge,
|
|
693
|
-
y: contentRect.top
|
|
694
|
-
},
|
|
695
|
-
{
|
|
696
|
-
x: contentFarEdge,
|
|
697
|
-
y: contentRect.bottom
|
|
698
|
-
},
|
|
699
|
-
{
|
|
700
|
-
x: contentNearEdge,
|
|
701
|
-
y: contentRect.bottom
|
|
702
|
-
}
|
|
703
|
-
],
|
|
704
|
-
side: side
|
|
705
|
-
});
|
|
706
|
-
window.clearTimeout(pointerGraceTimerRef.current);
|
|
707
|
-
pointerGraceTimerRef.current = window.setTimeout(()=>contentContext.onPointerGraceIntentChange(null)
|
|
708
|
-
, 300);
|
|
709
|
-
} else {
|
|
710
|
-
contentContext.onTriggerLeave(event);
|
|
711
|
-
if (event.defaultPrevented) return; // There's 100ms where the user may leave an item before the submenu was opened.
|
|
712
|
-
contentContext.onPointerGraceIntentChange(null);
|
|
713
|
-
}
|
|
714
|
-
})),
|
|
715
|
-
onKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(props.onKeyDown, (event)=>{
|
|
716
|
-
const isTypingAhead = contentContext.searchRef.current !== '';
|
|
717
|
-
if (props.disabled || isTypingAhead && event.key === ' ') return;
|
|
718
|
-
if ($213e4d2df823067d$var$SUB_OPEN_KEYS[context.dir].includes(event.key)) {
|
|
719
|
-
var _context$content3;
|
|
720
|
-
context.onOpenChange(true); // The trigger may hold focus if opened via pointer interaction
|
|
721
|
-
// so we ensure content is given focus again when switching to keyboard.
|
|
722
|
-
(_context$content3 = context.content) === null || _context$content3 === void 0 || _context$content3.focus(); // prevent window from scrolling
|
|
723
|
-
event.preventDefault();
|
|
724
|
-
}
|
|
725
|
-
})
|
|
726
|
-
}))) : null;
|
|
727
|
-
});
|
|
728
|
-
/*#__PURE__*/ Object.assign($213e4d2df823067d$export$5fbbb3ba7297405f, {
|
|
729
|
-
displayName: $213e4d2df823067d$var$SUB_TRIGGER_NAME
|
|
730
|
-
});
|
|
731
535
|
/* ---------------------------------------------------------------------------------------------- */ const $213e4d2df823067d$var$MenuItemImpl = /*#__PURE__*/ $cnSS2$react.forwardRef((props, forwardedRef)=>{
|
|
732
536
|
const { __scopeMenu: __scopeMenu , disabled: disabled = false , textValue: textValue , ...itemProps } = props;
|
|
733
537
|
const contentContext = $213e4d2df823067d$var$useMenuContentContext($213e4d2df823067d$var$ITEM_NAME, __scopeMenu);
|
|
734
538
|
const rovingFocusGroupScope = $213e4d2df823067d$var$useRovingFocusGroupScope(__scopeMenu);
|
|
735
539
|
const ref = $cnSS2$react.useRef(null);
|
|
736
|
-
const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref);
|
|
540
|
+
const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref);
|
|
541
|
+
const [isFocused, setIsFocused] = $cnSS2$react.useState(false); // get the item's `.textContent` as default strategy for typeahead `textValue`
|
|
737
542
|
const [textContent, setTextContent] = $cnSS2$react.useState('');
|
|
738
543
|
$cnSS2$react.useEffect(()=>{
|
|
739
544
|
const menuItem = ref.current;
|
|
@@ -754,6 +559,7 @@ const $213e4d2df823067d$export$5fbbb3ba7297405f = /*#__PURE__*/ $cnSS2$react.for
|
|
|
754
559
|
focusable: !disabled
|
|
755
560
|
}), /*#__PURE__*/ $cnSS2$react.createElement($cnSS2$radixuireactprimitive.Primitive.div, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({
|
|
756
561
|
role: "menuitem",
|
|
562
|
+
"data-highlighted": isFocused ? '' : undefined,
|
|
757
563
|
"aria-disabled": disabled || undefined,
|
|
758
564
|
"data-disabled": disabled ? '' : undefined
|
|
759
565
|
}, itemProps, {
|
|
@@ -769,7 +575,11 @@ const $213e4d2df823067d$export$5fbbb3ba7297405f = /*#__PURE__*/ $cnSS2$react.for
|
|
|
769
575
|
}
|
|
770
576
|
})),
|
|
771
577
|
onPointerLeave: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerLeave, $213e4d2df823067d$var$whenMouse((event)=>contentContext.onItemLeave(event)
|
|
772
|
-
))
|
|
578
|
+
)),
|
|
579
|
+
onFocus: $cnSS2$radixuiprimitive.composeEventHandlers(props.onFocus, ()=>setIsFocused(true)
|
|
580
|
+
),
|
|
581
|
+
onBlur: $cnSS2$radixuiprimitive.composeEventHandlers(props.onBlur, ()=>setIsFocused(false)
|
|
582
|
+
)
|
|
773
583
|
}))));
|
|
774
584
|
});
|
|
775
585
|
/* -------------------------------------------------------------------------------------------------
|
|
@@ -890,6 +700,227 @@ const $213e4d2df823067d$export$bcdda4773debf5fa = /*#__PURE__*/ $cnSS2$react.for
|
|
|
890
700
|
/*#__PURE__*/ Object.assign($213e4d2df823067d$export$bcdda4773debf5fa, {
|
|
891
701
|
displayName: $213e4d2df823067d$var$ARROW_NAME
|
|
892
702
|
});
|
|
703
|
+
/* -------------------------------------------------------------------------------------------------
|
|
704
|
+
* MenuSub
|
|
705
|
+
* -----------------------------------------------------------------------------------------------*/ const $213e4d2df823067d$var$SUB_NAME = 'MenuSub';
|
|
706
|
+
const [$213e4d2df823067d$var$MenuSubProvider, $213e4d2df823067d$var$useMenuSubContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$SUB_NAME);
|
|
707
|
+
const $213e4d2df823067d$export$71bdb9d1e2909932 = (props)=>{
|
|
708
|
+
const { __scopeMenu: __scopeMenu , children: children , open: open = false , onOpenChange: onOpenChange } = props;
|
|
709
|
+
const parentMenuContext = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$SUB_NAME, __scopeMenu);
|
|
710
|
+
const popperScope = $213e4d2df823067d$var$usePopperScope(__scopeMenu);
|
|
711
|
+
const [trigger, setTrigger] = $cnSS2$react.useState(null);
|
|
712
|
+
const [content, setContent] = $cnSS2$react.useState(null);
|
|
713
|
+
const handleOpenChange = $cnSS2$radixuireactusecallbackref.useCallbackRef(onOpenChange); // Prevent the parent menu from reopening with open submenus.
|
|
714
|
+
$cnSS2$react.useEffect(()=>{
|
|
715
|
+
if (parentMenuContext.open === false) handleOpenChange(false);
|
|
716
|
+
return ()=>handleOpenChange(false)
|
|
717
|
+
;
|
|
718
|
+
}, [
|
|
719
|
+
parentMenuContext.open,
|
|
720
|
+
handleOpenChange
|
|
721
|
+
]);
|
|
722
|
+
return /*#__PURE__*/ $cnSS2$react.createElement($cnSS2$radixuireactpopper.Root, popperScope, /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuProvider, {
|
|
723
|
+
scope: __scopeMenu,
|
|
724
|
+
open: open,
|
|
725
|
+
onOpenChange: handleOpenChange,
|
|
726
|
+
content: content,
|
|
727
|
+
onContentChange: setContent
|
|
728
|
+
}, /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuSubProvider, {
|
|
729
|
+
scope: __scopeMenu,
|
|
730
|
+
contentId: $cnSS2$radixuireactid.useId(),
|
|
731
|
+
triggerId: $cnSS2$radixuireactid.useId(),
|
|
732
|
+
trigger: trigger,
|
|
733
|
+
onTriggerChange: setTrigger
|
|
734
|
+
}, children)));
|
|
735
|
+
};
|
|
736
|
+
/*#__PURE__*/ Object.assign($213e4d2df823067d$export$71bdb9d1e2909932, {
|
|
737
|
+
displayName: $213e4d2df823067d$var$SUB_NAME
|
|
738
|
+
});
|
|
739
|
+
/* -------------------------------------------------------------------------------------------------
|
|
740
|
+
* MenuSubTrigger
|
|
741
|
+
* -----------------------------------------------------------------------------------------------*/ const $213e4d2df823067d$var$SUB_TRIGGER_NAME = 'MenuSubTrigger';
|
|
742
|
+
const $213e4d2df823067d$export$5fbbb3ba7297405f = /*#__PURE__*/ $cnSS2$react.forwardRef((props, forwardedRef)=>{
|
|
743
|
+
const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$SUB_TRIGGER_NAME, props.__scopeMenu);
|
|
744
|
+
const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$SUB_TRIGGER_NAME, props.__scopeMenu);
|
|
745
|
+
const subContext = $213e4d2df823067d$var$useMenuSubContext($213e4d2df823067d$var$SUB_TRIGGER_NAME, props.__scopeMenu);
|
|
746
|
+
const contentContext = $213e4d2df823067d$var$useMenuContentContext($213e4d2df823067d$var$SUB_TRIGGER_NAME, props.__scopeMenu);
|
|
747
|
+
const openTimerRef = $cnSS2$react.useRef(null);
|
|
748
|
+
const { pointerGraceTimerRef: pointerGraceTimerRef , onPointerGraceIntentChange: onPointerGraceIntentChange } = contentContext;
|
|
749
|
+
const scope = {
|
|
750
|
+
__scopeMenu: props.__scopeMenu
|
|
751
|
+
};
|
|
752
|
+
const clearOpenTimer = $cnSS2$react.useCallback(()=>{
|
|
753
|
+
if (openTimerRef.current) window.clearTimeout(openTimerRef.current);
|
|
754
|
+
openTimerRef.current = null;
|
|
755
|
+
}, []);
|
|
756
|
+
$cnSS2$react.useEffect(()=>clearOpenTimer
|
|
757
|
+
, [
|
|
758
|
+
clearOpenTimer
|
|
759
|
+
]);
|
|
760
|
+
$cnSS2$react.useEffect(()=>{
|
|
761
|
+
const pointerGraceTimer = pointerGraceTimerRef.current;
|
|
762
|
+
return ()=>{
|
|
763
|
+
window.clearTimeout(pointerGraceTimer);
|
|
764
|
+
onPointerGraceIntentChange(null);
|
|
765
|
+
};
|
|
766
|
+
}, [
|
|
767
|
+
pointerGraceTimerRef,
|
|
768
|
+
onPointerGraceIntentChange
|
|
769
|
+
]);
|
|
770
|
+
return /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$export$9fa5ebd18bee4d43, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({
|
|
771
|
+
asChild: true
|
|
772
|
+
}, scope), /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuItemImpl, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({
|
|
773
|
+
id: subContext.triggerId,
|
|
774
|
+
"aria-haspopup": "menu",
|
|
775
|
+
"aria-expanded": context.open,
|
|
776
|
+
"aria-controls": subContext.contentId,
|
|
777
|
+
"data-state": $213e4d2df823067d$var$getOpenState(context.open)
|
|
778
|
+
}, props, {
|
|
779
|
+
ref: $cnSS2$radixuireactcomposerefs.composeRefs(forwardedRef, subContext.onTriggerChange) // This is redundant for mouse users but we cannot determine pointer type from
|
|
780
|
+
,
|
|
781
|
+
onClick: (event)=>{
|
|
782
|
+
var _props$onClick;
|
|
783
|
+
(_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props, event);
|
|
784
|
+
if (props.disabled || event.defaultPrevented) return;
|
|
785
|
+
/**
|
|
786
|
+
* We manually focus because iOS Safari doesn't always focus on click (e.g. buttons)
|
|
787
|
+
* and we rely heavily on `onFocusOutside` for submenus to close when switching
|
|
788
|
+
* between separate submenus.
|
|
789
|
+
*/ event.currentTarget.focus();
|
|
790
|
+
if (!context.open) context.onOpenChange(true);
|
|
791
|
+
},
|
|
792
|
+
onPointerMove: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerMove, $213e4d2df823067d$var$whenMouse((event)=>{
|
|
793
|
+
contentContext.onItemEnter(event);
|
|
794
|
+
if (event.defaultPrevented) return;
|
|
795
|
+
if (!props.disabled && !context.open && !openTimerRef.current) {
|
|
796
|
+
contentContext.onPointerGraceIntentChange(null);
|
|
797
|
+
openTimerRef.current = window.setTimeout(()=>{
|
|
798
|
+
context.onOpenChange(true);
|
|
799
|
+
clearOpenTimer();
|
|
800
|
+
}, 100);
|
|
801
|
+
}
|
|
802
|
+
})),
|
|
803
|
+
onPointerLeave: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerLeave, $213e4d2df823067d$var$whenMouse((event)=>{
|
|
804
|
+
var _context$content;
|
|
805
|
+
clearOpenTimer();
|
|
806
|
+
const contentRect = (_context$content = context.content) === null || _context$content === void 0 ? void 0 : _context$content.getBoundingClientRect();
|
|
807
|
+
if (contentRect) {
|
|
808
|
+
var _context$content2;
|
|
809
|
+
// TODO: make sure to update this when we change positioning logic
|
|
810
|
+
const side = (_context$content2 = context.content) === null || _context$content2 === void 0 ? void 0 : _context$content2.dataset.side;
|
|
811
|
+
const rightSide = side === 'right';
|
|
812
|
+
const bleed = rightSide ? -5 : 5;
|
|
813
|
+
const contentNearEdge = contentRect[rightSide ? 'left' : 'right'];
|
|
814
|
+
const contentFarEdge = contentRect[rightSide ? 'right' : 'left'];
|
|
815
|
+
contentContext.onPointerGraceIntentChange({
|
|
816
|
+
area: [
|
|
817
|
+
// consistently within polygon bounds
|
|
818
|
+
{
|
|
819
|
+
x: event.clientX + bleed,
|
|
820
|
+
y: event.clientY
|
|
821
|
+
},
|
|
822
|
+
{
|
|
823
|
+
x: contentNearEdge,
|
|
824
|
+
y: contentRect.top
|
|
825
|
+
},
|
|
826
|
+
{
|
|
827
|
+
x: contentFarEdge,
|
|
828
|
+
y: contentRect.top
|
|
829
|
+
},
|
|
830
|
+
{
|
|
831
|
+
x: contentFarEdge,
|
|
832
|
+
y: contentRect.bottom
|
|
833
|
+
},
|
|
834
|
+
{
|
|
835
|
+
x: contentNearEdge,
|
|
836
|
+
y: contentRect.bottom
|
|
837
|
+
}
|
|
838
|
+
],
|
|
839
|
+
side: side
|
|
840
|
+
});
|
|
841
|
+
window.clearTimeout(pointerGraceTimerRef.current);
|
|
842
|
+
pointerGraceTimerRef.current = window.setTimeout(()=>contentContext.onPointerGraceIntentChange(null)
|
|
843
|
+
, 300);
|
|
844
|
+
} else {
|
|
845
|
+
contentContext.onTriggerLeave(event);
|
|
846
|
+
if (event.defaultPrevented) return; // There's 100ms where the user may leave an item before the submenu was opened.
|
|
847
|
+
contentContext.onPointerGraceIntentChange(null);
|
|
848
|
+
}
|
|
849
|
+
})),
|
|
850
|
+
onKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(props.onKeyDown, (event)=>{
|
|
851
|
+
const isTypingAhead = contentContext.searchRef.current !== '';
|
|
852
|
+
if (props.disabled || isTypingAhead && event.key === ' ') return;
|
|
853
|
+
if ($213e4d2df823067d$var$SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {
|
|
854
|
+
var _context$content3;
|
|
855
|
+
context.onOpenChange(true); // The trigger may hold focus if opened via pointer interaction
|
|
856
|
+
// so we ensure content is given focus again when switching to keyboard.
|
|
857
|
+
(_context$content3 = context.content) === null || _context$content3 === void 0 || _context$content3.focus(); // prevent window from scrolling
|
|
858
|
+
event.preventDefault();
|
|
859
|
+
}
|
|
860
|
+
})
|
|
861
|
+
})));
|
|
862
|
+
});
|
|
863
|
+
/*#__PURE__*/ Object.assign($213e4d2df823067d$export$5fbbb3ba7297405f, {
|
|
864
|
+
displayName: $213e4d2df823067d$var$SUB_TRIGGER_NAME
|
|
865
|
+
});
|
|
866
|
+
/* -------------------------------------------------------------------------------------------------
|
|
867
|
+
* MenuSubContent
|
|
868
|
+
* -----------------------------------------------------------------------------------------------*/ const $213e4d2df823067d$var$SUB_CONTENT_NAME = 'MenuSubContent';
|
|
869
|
+
const $213e4d2df823067d$export$e7142ab31822bde6 = /*#__PURE__*/ $cnSS2$react.forwardRef((props, forwardedRef)=>{
|
|
870
|
+
const portalContext = $213e4d2df823067d$var$usePortalContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu);
|
|
871
|
+
const { forceMount: forceMount = portalContext.forceMount , ...subContentProps } = props;
|
|
872
|
+
const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu);
|
|
873
|
+
const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu);
|
|
874
|
+
const subContext = $213e4d2df823067d$var$useMenuSubContext($213e4d2df823067d$var$SUB_CONTENT_NAME, props.__scopeMenu);
|
|
875
|
+
const ref = $cnSS2$react.useRef(null);
|
|
876
|
+
const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref);
|
|
877
|
+
return /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$Collection.Provider, {
|
|
878
|
+
scope: props.__scopeMenu
|
|
879
|
+
}, /*#__PURE__*/ $cnSS2$react.createElement($cnSS2$radixuireactpresence.Presence, {
|
|
880
|
+
present: forceMount || context.open
|
|
881
|
+
}, /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$Collection.Slot, {
|
|
882
|
+
scope: props.__scopeMenu
|
|
883
|
+
}, /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuContentImpl, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({
|
|
884
|
+
id: subContext.contentId,
|
|
885
|
+
"aria-labelledby": subContext.triggerId
|
|
886
|
+
}, subContentProps, {
|
|
887
|
+
ref: composedRefs,
|
|
888
|
+
align: "start",
|
|
889
|
+
side: rootContext.dir === 'rtl' ? 'left' : 'right',
|
|
890
|
+
disableOutsidePointerEvents: false,
|
|
891
|
+
disableOutsideScroll: false,
|
|
892
|
+
trapFocus: false,
|
|
893
|
+
onOpenAutoFocus: (event)=>{
|
|
894
|
+
var _ref$current;
|
|
895
|
+
// when opening a submenu, focus content for keyboard users only
|
|
896
|
+
if (rootContext.isUsingKeyboardRef.current) (_ref$current = ref.current) === null || _ref$current === void 0 || _ref$current.focus();
|
|
897
|
+
event.preventDefault();
|
|
898
|
+
} // The menu might close because of focusing another menu item in the parent menu. We
|
|
899
|
+
,
|
|
900
|
+
onCloseAutoFocus: (event)=>event.preventDefault()
|
|
901
|
+
,
|
|
902
|
+
onFocusOutside: $cnSS2$radixuiprimitive.composeEventHandlers(props.onFocusOutside, (event)=>{
|
|
903
|
+
// We prevent closing when the trigger is focused to avoid triggering a re-open animation
|
|
904
|
+
// on pointer interaction.
|
|
905
|
+
if (event.target !== subContext.trigger) context.onOpenChange(false);
|
|
906
|
+
}),
|
|
907
|
+
onEscapeKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(props.onEscapeKeyDown, rootContext.onClose),
|
|
908
|
+
onKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(props.onKeyDown, (event)=>{
|
|
909
|
+
// Submenu key events bubble through portals. We only care about keys in this menu.
|
|
910
|
+
const isKeyDownInside = event.currentTarget.contains(event.target);
|
|
911
|
+
const isCloseKey = $213e4d2df823067d$var$SUB_CLOSE_KEYS[rootContext.dir].includes(event.key);
|
|
912
|
+
if (isKeyDownInside && isCloseKey) {
|
|
913
|
+
var _subContext$trigger;
|
|
914
|
+
context.onOpenChange(false); // We focus manually because we prevented it in `onCloseAutoFocus`
|
|
915
|
+
(_subContext$trigger = subContext.trigger) === null || _subContext$trigger === void 0 || _subContext$trigger.focus(); // prevent window from scrolling
|
|
916
|
+
event.preventDefault();
|
|
917
|
+
}
|
|
918
|
+
})
|
|
919
|
+
})))));
|
|
920
|
+
});
|
|
921
|
+
/*#__PURE__*/ Object.assign($213e4d2df823067d$export$e7142ab31822bde6, {
|
|
922
|
+
displayName: $213e4d2df823067d$var$SUB_CONTENT_NAME
|
|
923
|
+
});
|
|
893
924
|
/* -----------------------------------------------------------------------------------------------*/ function $213e4d2df823067d$var$getOpenState(open) {
|
|
894
925
|
return open ? 'open' : 'closed';
|
|
895
926
|
}
|
|
@@ -969,9 +1000,8 @@ function $213e4d2df823067d$var$whenMouse(handler) {
|
|
|
969
1000
|
;
|
|
970
1001
|
}
|
|
971
1002
|
const $213e4d2df823067d$export$be92b6f5f03c0fe9 = $213e4d2df823067d$export$d9b273488cd8ce6f;
|
|
972
|
-
const $213e4d2df823067d$export$d7a01e11500dfb6f = $213e4d2df823067d$export$71bdb9d1e2909932;
|
|
973
1003
|
const $213e4d2df823067d$export$b688253958b8dfe7 = $213e4d2df823067d$export$9fa5ebd18bee4d43;
|
|
974
|
-
const $213e4d2df823067d$export$
|
|
1004
|
+
const $213e4d2df823067d$export$602eac185826482c = $213e4d2df823067d$export$793392f970497feb;
|
|
975
1005
|
const $213e4d2df823067d$export$7c6e2c02157bb7d2 = $213e4d2df823067d$export$479f0f2f71193efe;
|
|
976
1006
|
const $213e4d2df823067d$export$eb2fcfdbd7ba97d4 = $213e4d2df823067d$export$22a631d1f72787bb;
|
|
977
1007
|
const $213e4d2df823067d$export$b04be29aa201d4f5 = $213e4d2df823067d$export$dd37bec0e8a99143;
|
|
@@ -982,9 +1012,11 @@ const $213e4d2df823067d$export$371ab307eab489c0 = $213e4d2df823067d$export$69bd2
|
|
|
982
1012
|
const $213e4d2df823067d$export$c3468e2714d175fa = $213e4d2df823067d$export$a2593e23056970a3;
|
|
983
1013
|
const $213e4d2df823067d$export$1ff3c3f08ae963c0 = $213e4d2df823067d$export$1cec7dcdd713e220;
|
|
984
1014
|
const $213e4d2df823067d$export$21b07c8f274aebd5 = $213e4d2df823067d$export$bcdda4773debf5fa;
|
|
1015
|
+
const $213e4d2df823067d$export$d7a01e11500dfb6f = $213e4d2df823067d$export$71bdb9d1e2909932;
|
|
1016
|
+
const $213e4d2df823067d$export$2ea8a7a591ac5eac = $213e4d2df823067d$export$5fbbb3ba7297405f;
|
|
1017
|
+
const $213e4d2df823067d$export$6d4de93b380beddf = $213e4d2df823067d$export$e7142ab31822bde6;
|
|
985
1018
|
|
|
986
1019
|
|
|
987
|
-
$parcel$exportWildcard(module.exports, $213e4d2df823067d$exports);
|
|
988
1020
|
|
|
989
1021
|
|
|
990
1022
|
//# sourceMappingURL=index.js.map
|