@radix-ui/react-menu 0.1.7-rc.20 → 0.1.7-rc.23
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 +35 -28
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +253 -236
- package/dist/index.js.map +1 -1
- package/dist/index.module.js +254 -237
- package/dist/index.module.js.map +1 -1
- package/package.json +15 -15
package/dist/index.js
CHANGED
|
@@ -44,23 +44,22 @@ var $213e4d2df823067d$exports = {};
|
|
|
44
44
|
|
|
45
45
|
$parcel$export($213e4d2df823067d$exports, "createMenuScope", () => $213e4d2df823067d$export$4027731b685e72eb);
|
|
46
46
|
$parcel$export($213e4d2df823067d$exports, "Menu", () => $213e4d2df823067d$export$d9b273488cd8ce6f);
|
|
47
|
-
$parcel$export($213e4d2df823067d$exports, "MenuSub", () => $213e4d2df823067d$export$71bdb9d1e2909932);
|
|
48
47
|
$parcel$export($213e4d2df823067d$exports, "MenuAnchor", () => $213e4d2df823067d$export$9fa5ebd18bee4d43);
|
|
49
48
|
$parcel$export($213e4d2df823067d$exports, "MenuContent", () => $213e4d2df823067d$export$479f0f2f71193efe);
|
|
50
49
|
$parcel$export($213e4d2df823067d$exports, "MenuGroup", () => $213e4d2df823067d$export$22a631d1f72787bb);
|
|
51
50
|
$parcel$export($213e4d2df823067d$exports, "MenuLabel", () => $213e4d2df823067d$export$dd37bec0e8a99143);
|
|
52
51
|
$parcel$export($213e4d2df823067d$exports, "MenuItem", () => $213e4d2df823067d$export$2ce376c2cc3355c8);
|
|
53
|
-
$parcel$export($213e4d2df823067d$exports, "MenuSubTrigger", () => $213e4d2df823067d$export$5fbbb3ba7297405f);
|
|
54
52
|
$parcel$export($213e4d2df823067d$exports, "MenuCheckboxItem", () => $213e4d2df823067d$export$f6f243521332502d);
|
|
55
53
|
$parcel$export($213e4d2df823067d$exports, "MenuRadioGroup", () => $213e4d2df823067d$export$ea2200c9eee416b3);
|
|
56
54
|
$parcel$export($213e4d2df823067d$exports, "MenuRadioItem", () => $213e4d2df823067d$export$69bd225e9817f6d0);
|
|
57
55
|
$parcel$export($213e4d2df823067d$exports, "MenuItemIndicator", () => $213e4d2df823067d$export$a2593e23056970a3);
|
|
58
56
|
$parcel$export($213e4d2df823067d$exports, "MenuSeparator", () => $213e4d2df823067d$export$1cec7dcdd713e220);
|
|
59
57
|
$parcel$export($213e4d2df823067d$exports, "MenuArrow", () => $213e4d2df823067d$export$bcdda4773debf5fa);
|
|
58
|
+
$parcel$export($213e4d2df823067d$exports, "MenuSub", () => $213e4d2df823067d$export$71bdb9d1e2909932);
|
|
59
|
+
$parcel$export($213e4d2df823067d$exports, "MenuSubTrigger", () => $213e4d2df823067d$export$5fbbb3ba7297405f);
|
|
60
|
+
$parcel$export($213e4d2df823067d$exports, "MenuSubContent", () => $213e4d2df823067d$export$e7142ab31822bde6);
|
|
60
61
|
$parcel$export($213e4d2df823067d$exports, "Root", () => $213e4d2df823067d$export$be92b6f5f03c0fe9);
|
|
61
|
-
$parcel$export($213e4d2df823067d$exports, "Sub", () => $213e4d2df823067d$export$d7a01e11500dfb6f);
|
|
62
62
|
$parcel$export($213e4d2df823067d$exports, "Anchor", () => $213e4d2df823067d$export$b688253958b8dfe7);
|
|
63
|
-
$parcel$export($213e4d2df823067d$exports, "SubTrigger", () => $213e4d2df823067d$export$2ea8a7a591ac5eac);
|
|
64
63
|
$parcel$export($213e4d2df823067d$exports, "Content", () => $213e4d2df823067d$export$7c6e2c02157bb7d2);
|
|
65
64
|
$parcel$export($213e4d2df823067d$exports, "Group", () => $213e4d2df823067d$export$eb2fcfdbd7ba97d4);
|
|
66
65
|
$parcel$export($213e4d2df823067d$exports, "Label", () => $213e4d2df823067d$export$b04be29aa201d4f5);
|
|
@@ -71,6 +70,9 @@ $parcel$export($213e4d2df823067d$exports, "RadioItem", () => $213e4d2df823067d$e
|
|
|
71
70
|
$parcel$export($213e4d2df823067d$exports, "ItemIndicator", () => $213e4d2df823067d$export$c3468e2714d175fa);
|
|
72
71
|
$parcel$export($213e4d2df823067d$exports, "Separator", () => $213e4d2df823067d$export$1ff3c3f08ae963c0);
|
|
73
72
|
$parcel$export($213e4d2df823067d$exports, "Arrow", () => $213e4d2df823067d$export$21b07c8f274aebd5);
|
|
73
|
+
$parcel$export($213e4d2df823067d$exports, "Sub", () => $213e4d2df823067d$export$d7a01e11500dfb6f);
|
|
74
|
+
$parcel$export($213e4d2df823067d$exports, "SubTrigger", () => $213e4d2df823067d$export$2ea8a7a591ac5eac);
|
|
75
|
+
$parcel$export($213e4d2df823067d$exports, "SubContent", () => $213e4d2df823067d$export$6d4de93b380beddf);
|
|
74
76
|
|
|
75
77
|
|
|
76
78
|
|
|
@@ -140,8 +142,9 @@ const [$213e4d2df823067d$var$createMenuContext, $213e4d2df823067d$export$4027731
|
|
|
140
142
|
const $213e4d2df823067d$var$usePopperScope = $cnSS2$radixuireactpopper.createPopperScope();
|
|
141
143
|
const $213e4d2df823067d$var$useRovingFocusGroupScope = $cnSS2$radixuireactrovingfocus.createRovingFocusGroupScope();
|
|
142
144
|
const [$213e4d2df823067d$var$MenuProvider, $213e4d2df823067d$var$useMenuContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$MENU_NAME);
|
|
145
|
+
const [$213e4d2df823067d$var$MenuRootProvider, $213e4d2df823067d$var$useMenuRootContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$MENU_NAME);
|
|
143
146
|
const $213e4d2df823067d$export$d9b273488cd8ce6f = (props)=>{
|
|
144
|
-
const { __scopeMenu: __scopeMenu , open: open = false , children: children , dir: dir , onOpenChange: onOpenChange , modal: modal = true } = props;
|
|
147
|
+
const { __scopeMenu: __scopeMenu , open: open = false , children: children , dir: dir , onOpenChange: onOpenChange , modal: modal = true , allowPinchZoom: allowPinchZoom } = props;
|
|
145
148
|
const popperScope = $213e4d2df823067d$var$usePopperScope(__scopeMenu);
|
|
146
149
|
const [content, setContent] = $cnSS2$react.useState(null);
|
|
147
150
|
const isUsingKeyboardRef = $cnSS2$react.useRef(false);
|
|
@@ -180,59 +183,25 @@ const $213e4d2df823067d$export$d9b273488cd8ce6f = (props)=>{
|
|
|
180
183
|
}, []);
|
|
181
184
|
return /*#__PURE__*/ $cnSS2$react.createElement($cnSS2$radixuireactpopper.Root, popperScope, /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuProvider, {
|
|
182
185
|
scope: __scopeMenu,
|
|
183
|
-
isSubmenu: false,
|
|
184
|
-
isUsingKeyboardRef: isUsingKeyboardRef,
|
|
185
|
-
dir: direction,
|
|
186
186
|
open: open,
|
|
187
187
|
onOpenChange: handleOpenChange,
|
|
188
188
|
content: content,
|
|
189
|
-
onContentChange: setContent
|
|
190
|
-
|
|
189
|
+
onContentChange: setContent
|
|
190
|
+
}, /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuRootProvider, {
|
|
191
|
+
scope: __scopeMenu,
|
|
192
|
+
onClose: $cnSS2$react.useCallback(()=>handleOpenChange(false)
|
|
191
193
|
, [
|
|
192
194
|
handleOpenChange
|
|
193
195
|
]),
|
|
194
|
-
|
|
195
|
-
|
|
196
|
+
isUsingKeyboardRef: isUsingKeyboardRef,
|
|
197
|
+
dir: direction,
|
|
198
|
+
modal: modal,
|
|
199
|
+
allowPinchZoom: allowPinchZoom
|
|
200
|
+
}, children)));
|
|
196
201
|
};
|
|
197
202
|
/*#__PURE__*/ Object.assign($213e4d2df823067d$export$d9b273488cd8ce6f, {
|
|
198
203
|
displayName: $213e4d2df823067d$var$MENU_NAME
|
|
199
204
|
});
|
|
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
205
|
/* -------------------------------------------------------------------------------------------------
|
|
237
206
|
* MenuAnchor
|
|
238
207
|
* -----------------------------------------------------------------------------------------------*/ const $213e4d2df823067d$var$ANCHOR_NAME = 'MenuAnchor';
|
|
@@ -253,27 +222,20 @@ const [$213e4d2df823067d$var$MenuContentProvider, $213e4d2df823067d$var$useMenuC
|
|
|
253
222
|
const $213e4d2df823067d$export$479f0f2f71193efe = /*#__PURE__*/ $cnSS2$react.forwardRef((props, forwardedRef)=>{
|
|
254
223
|
const { forceMount: forceMount , ...contentProps } = props;
|
|
255
224
|
const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu);
|
|
225
|
+
const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu);
|
|
256
226
|
return /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$Collection.Provider, {
|
|
257
227
|
scope: props.__scopeMenu
|
|
258
228
|
}, /*#__PURE__*/ $cnSS2$react.createElement($cnSS2$radixuireactpresence.Presence, {
|
|
259
229
|
present: forceMount || context.open
|
|
260
230
|
}, /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$Collection.Slot, {
|
|
261
231
|
scope: props.__scopeMenu
|
|
262
|
-
},
|
|
232
|
+
}, rootContext.modal ? /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuRootContentModal, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({}, contentProps, {
|
|
263
233
|
ref: forwardedRef
|
|
264
|
-
})) : /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$
|
|
234
|
+
})) : /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuRootContentNonModal, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({}, contentProps, {
|
|
265
235
|
ref: forwardedRef
|
|
266
236
|
})))));
|
|
267
237
|
});
|
|
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)=>{
|
|
238
|
+
/* ---------------------------------------------------------------------------------------------- */ const $213e4d2df823067d$var$MenuRootContentModal = /*#__PURE__*/ $cnSS2$react.forwardRef((props, forwardedRef)=>{
|
|
277
239
|
const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu);
|
|
278
240
|
const ref = $cnSS2$react.useRef(null);
|
|
279
241
|
const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); // Hide everything from ARIA except the `MenuContent`
|
|
@@ -306,52 +268,10 @@ const $213e4d2df823067d$var$MenuRootContentNonModal = /*#__PURE__*/ $cnSS2$react
|
|
|
306
268
|
onDismiss: ()=>context.onOpenChange(false)
|
|
307
269
|
}));
|
|
308
270
|
});
|
|
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
271
|
/* ---------------------------------------------------------------------------------------------- */ 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 ,
|
|
272
|
+
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 , portalled: portalled , ...contentProps } = props;
|
|
354
273
|
const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, __scopeMenu);
|
|
274
|
+
const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$CONTENT_NAME, __scopeMenu);
|
|
355
275
|
const popperScope = $213e4d2df823067d$var$usePopperScope(__scopeMenu);
|
|
356
276
|
const rovingFocusGroupScope = $213e4d2df823067d$var$useRovingFocusGroupScope(__scopeMenu);
|
|
357
277
|
const getItems = $213e4d2df823067d$var$useCollection(__scopeMenu);
|
|
@@ -367,7 +287,7 @@ const $213e4d2df823067d$var$MenuRootContentNonModal = /*#__PURE__*/ $cnSS2$react
|
|
|
367
287
|
const PortalWrapper = portalled ? $cnSS2$radixuireactportal.Portal : $cnSS2$react.Fragment;
|
|
368
288
|
const ScrollLockWrapper = disableOutsideScroll ? $cnSS2$reactremovescroll.RemoveScroll : $cnSS2$react.Fragment;
|
|
369
289
|
const scrollLockWrapperProps = disableOutsideScroll ? {
|
|
370
|
-
allowPinchZoom: allowPinchZoom
|
|
290
|
+
allowPinchZoom: rootContext.allowPinchZoom
|
|
371
291
|
} : undefined;
|
|
372
292
|
const handleTypeaheadSearch = (key)=>{
|
|
373
293
|
var _items$find, _items$find2;
|
|
@@ -452,20 +372,20 @@ const $213e4d2df823067d$var$MenuRootContentNonModal = /*#__PURE__*/ $cnSS2$react
|
|
|
452
372
|
}, /*#__PURE__*/ $cnSS2$react.createElement($cnSS2$radixuireactrovingfocus.Root, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({
|
|
453
373
|
asChild: true
|
|
454
374
|
}, rovingFocusGroupScope, {
|
|
455
|
-
dir:
|
|
375
|
+
dir: rootContext.dir,
|
|
456
376
|
orientation: "vertical",
|
|
457
377
|
loop: loop,
|
|
458
378
|
currentTabStopId: currentItemId,
|
|
459
379
|
onCurrentTabStopIdChange: setCurrentItemId,
|
|
460
380
|
onEntryFocus: (event)=>{
|
|
461
381
|
// only focus first item when using keyboard
|
|
462
|
-
if (!
|
|
382
|
+
if (!rootContext.isUsingKeyboardRef.current) event.preventDefault();
|
|
463
383
|
}
|
|
464
384
|
}), /*#__PURE__*/ $cnSS2$react.createElement($cnSS2$radixuireactpopper.Content, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({
|
|
465
385
|
role: "menu",
|
|
466
386
|
"aria-orientation": "vertical",
|
|
467
387
|
"data-state": $213e4d2df823067d$var$getOpenState(context.open),
|
|
468
|
-
dir:
|
|
388
|
+
dir: rootContext.dir
|
|
469
389
|
}, popperScope, contentProps, {
|
|
470
390
|
ref: composedRefs,
|
|
471
391
|
style: {
|
|
@@ -549,7 +469,7 @@ const $213e4d2df823067d$var$ITEM_SELECT = 'menu.itemSelect';
|
|
|
549
469
|
const $213e4d2df823067d$export$2ce376c2cc3355c8 = /*#__PURE__*/ $cnSS2$react.forwardRef((props, forwardedRef)=>{
|
|
550
470
|
const { disabled: disabled = false , onSelect: onSelect , ...itemProps } = props;
|
|
551
471
|
const ref = $cnSS2$react.useRef(null);
|
|
552
|
-
const
|
|
472
|
+
const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$ITEM_NAME, props.__scopeMenu);
|
|
553
473
|
const contentContext = $213e4d2df823067d$var$useMenuContentContext($213e4d2df823067d$var$ITEM_NAME, props.__scopeMenu);
|
|
554
474
|
const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref);
|
|
555
475
|
const isPointerDownRef = $cnSS2$react.useRef(false);
|
|
@@ -566,7 +486,7 @@ const $213e4d2df823067d$export$2ce376c2cc3355c8 = /*#__PURE__*/ $cnSS2$react.for
|
|
|
566
486
|
});
|
|
567
487
|
$cnSS2$radixuireactprimitive.dispatchDiscreteCustomEvent(menuItem, itemSelectEvent);
|
|
568
488
|
if (itemSelectEvent.defaultPrevented) isPointerDownRef.current = false;
|
|
569
|
-
else
|
|
489
|
+
else rootContext.onClose();
|
|
570
490
|
}
|
|
571
491
|
};
|
|
572
492
|
return /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuItemImpl, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({}, itemProps, {
|
|
@@ -603,131 +523,6 @@ const $213e4d2df823067d$export$2ce376c2cc3355c8 = /*#__PURE__*/ $cnSS2$react.for
|
|
|
603
523
|
/*#__PURE__*/ Object.assign($213e4d2df823067d$export$2ce376c2cc3355c8, {
|
|
604
524
|
displayName: $213e4d2df823067d$var$ITEM_NAME
|
|
605
525
|
});
|
|
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
526
|
/* ---------------------------------------------------------------------------------------------- */ const $213e4d2df823067d$var$MenuItemImpl = /*#__PURE__*/ $cnSS2$react.forwardRef((props, forwardedRef)=>{
|
|
732
527
|
const { __scopeMenu: __scopeMenu , disabled: disabled = false , textValue: textValue , ...itemProps } = props;
|
|
733
528
|
const contentContext = $213e4d2df823067d$var$useMenuContentContext($213e4d2df823067d$var$ITEM_NAME, __scopeMenu);
|
|
@@ -896,6 +691,227 @@ const $213e4d2df823067d$export$bcdda4773debf5fa = /*#__PURE__*/ $cnSS2$react.for
|
|
|
896
691
|
/*#__PURE__*/ Object.assign($213e4d2df823067d$export$bcdda4773debf5fa, {
|
|
897
692
|
displayName: $213e4d2df823067d$var$ARROW_NAME
|
|
898
693
|
});
|
|
694
|
+
/* -------------------------------------------------------------------------------------------------
|
|
695
|
+
* MenuSub
|
|
696
|
+
* -----------------------------------------------------------------------------------------------*/ const $213e4d2df823067d$var$SUB_NAME = 'MenuSub';
|
|
697
|
+
const [$213e4d2df823067d$var$MenuSubProvider, $213e4d2df823067d$var$useMenuSubContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$SUB_NAME);
|
|
698
|
+
const $213e4d2df823067d$export$71bdb9d1e2909932 = (props)=>{
|
|
699
|
+
const { __scopeMenu: __scopeMenu , children: children , open: open = false , onOpenChange: onOpenChange } = props;
|
|
700
|
+
const parentMenuContext = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$SUB_NAME, __scopeMenu);
|
|
701
|
+
const popperScope = $213e4d2df823067d$var$usePopperScope(__scopeMenu);
|
|
702
|
+
const [trigger, setTrigger] = $cnSS2$react.useState(null);
|
|
703
|
+
const [content, setContent] = $cnSS2$react.useState(null);
|
|
704
|
+
const handleOpenChange = $cnSS2$radixuireactusecallbackref.useCallbackRef(onOpenChange); // Prevent the parent menu from reopening with open submenus.
|
|
705
|
+
$cnSS2$react.useEffect(()=>{
|
|
706
|
+
if (parentMenuContext.open === false) handleOpenChange(false);
|
|
707
|
+
return ()=>handleOpenChange(false)
|
|
708
|
+
;
|
|
709
|
+
}, [
|
|
710
|
+
parentMenuContext.open,
|
|
711
|
+
handleOpenChange
|
|
712
|
+
]);
|
|
713
|
+
return /*#__PURE__*/ $cnSS2$react.createElement($cnSS2$radixuireactpopper.Root, popperScope, /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuProvider, {
|
|
714
|
+
scope: __scopeMenu,
|
|
715
|
+
open: open,
|
|
716
|
+
onOpenChange: handleOpenChange,
|
|
717
|
+
content: content,
|
|
718
|
+
onContentChange: setContent
|
|
719
|
+
}, /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuSubProvider, {
|
|
720
|
+
scope: __scopeMenu,
|
|
721
|
+
contentId: $cnSS2$radixuireactid.useId(),
|
|
722
|
+
triggerId: $cnSS2$radixuireactid.useId(),
|
|
723
|
+
trigger: trigger,
|
|
724
|
+
onTriggerChange: setTrigger
|
|
725
|
+
}, children)));
|
|
726
|
+
};
|
|
727
|
+
/*#__PURE__*/ Object.assign($213e4d2df823067d$export$71bdb9d1e2909932, {
|
|
728
|
+
displayName: $213e4d2df823067d$var$SUB_NAME
|
|
729
|
+
});
|
|
730
|
+
/* -------------------------------------------------------------------------------------------------
|
|
731
|
+
* MenuSubTrigger
|
|
732
|
+
* -----------------------------------------------------------------------------------------------*/ const $213e4d2df823067d$var$SUB_TRIGGER_NAME = 'MenuSubTrigger';
|
|
733
|
+
const $213e4d2df823067d$export$5fbbb3ba7297405f = /*#__PURE__*/ $cnSS2$react.forwardRef((props, forwardedRef)=>{
|
|
734
|
+
const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$SUB_TRIGGER_NAME, props.__scopeMenu);
|
|
735
|
+
const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$SUB_TRIGGER_NAME, props.__scopeMenu);
|
|
736
|
+
const subContext = $213e4d2df823067d$var$useMenuSubContext($213e4d2df823067d$var$SUB_TRIGGER_NAME, props.__scopeMenu);
|
|
737
|
+
const contentContext = $213e4d2df823067d$var$useMenuContentContext($213e4d2df823067d$var$SUB_TRIGGER_NAME, props.__scopeMenu);
|
|
738
|
+
const openTimerRef = $cnSS2$react.useRef(null);
|
|
739
|
+
const { pointerGraceTimerRef: pointerGraceTimerRef , onPointerGraceIntentChange: onPointerGraceIntentChange } = contentContext;
|
|
740
|
+
const scope = {
|
|
741
|
+
__scopeMenu: props.__scopeMenu
|
|
742
|
+
};
|
|
743
|
+
const clearOpenTimer = $cnSS2$react.useCallback(()=>{
|
|
744
|
+
if (openTimerRef.current) window.clearTimeout(openTimerRef.current);
|
|
745
|
+
openTimerRef.current = null;
|
|
746
|
+
}, []);
|
|
747
|
+
$cnSS2$react.useEffect(()=>clearOpenTimer
|
|
748
|
+
, [
|
|
749
|
+
clearOpenTimer
|
|
750
|
+
]);
|
|
751
|
+
$cnSS2$react.useEffect(()=>{
|
|
752
|
+
const pointerGraceTimer = pointerGraceTimerRef.current;
|
|
753
|
+
return ()=>{
|
|
754
|
+
window.clearTimeout(pointerGraceTimer);
|
|
755
|
+
onPointerGraceIntentChange(null);
|
|
756
|
+
};
|
|
757
|
+
}, [
|
|
758
|
+
pointerGraceTimerRef,
|
|
759
|
+
onPointerGraceIntentChange
|
|
760
|
+
]);
|
|
761
|
+
return /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$export$9fa5ebd18bee4d43, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({
|
|
762
|
+
asChild: true
|
|
763
|
+
}, scope), /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuItemImpl, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({
|
|
764
|
+
id: subContext.triggerId,
|
|
765
|
+
"aria-haspopup": "menu",
|
|
766
|
+
"aria-expanded": context.open,
|
|
767
|
+
"aria-controls": subContext.contentId,
|
|
768
|
+
"data-state": $213e4d2df823067d$var$getOpenState(context.open)
|
|
769
|
+
}, props, {
|
|
770
|
+
ref: $cnSS2$radixuireactcomposerefs.composeRefs(forwardedRef, subContext.onTriggerChange) // This is redundant for mouse users but we cannot determine pointer type from
|
|
771
|
+
,
|
|
772
|
+
onClick: (event)=>{
|
|
773
|
+
var _props$onClick;
|
|
774
|
+
(_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props, event);
|
|
775
|
+
if (props.disabled || event.defaultPrevented) return;
|
|
776
|
+
/**
|
|
777
|
+
* We manually focus because iOS Safari doesn't always focus on click (e.g. buttons)
|
|
778
|
+
* and we rely heavily on `onFocusOutside` for submenus to close when switching
|
|
779
|
+
* between separate submenus.
|
|
780
|
+
*/ event.currentTarget.focus();
|
|
781
|
+
if (!context.open) context.onOpenChange(true);
|
|
782
|
+
},
|
|
783
|
+
onPointerMove: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerMove, $213e4d2df823067d$var$whenMouse((event)=>{
|
|
784
|
+
contentContext.onItemEnter(event);
|
|
785
|
+
if (event.defaultPrevented) return;
|
|
786
|
+
if (!props.disabled && !context.open && !openTimerRef.current) {
|
|
787
|
+
contentContext.onPointerGraceIntentChange(null);
|
|
788
|
+
openTimerRef.current = window.setTimeout(()=>{
|
|
789
|
+
context.onOpenChange(true);
|
|
790
|
+
clearOpenTimer();
|
|
791
|
+
}, 100);
|
|
792
|
+
}
|
|
793
|
+
})),
|
|
794
|
+
onPointerLeave: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerLeave, $213e4d2df823067d$var$whenMouse((event)=>{
|
|
795
|
+
var _context$content;
|
|
796
|
+
clearOpenTimer();
|
|
797
|
+
const contentRect = (_context$content = context.content) === null || _context$content === void 0 ? void 0 : _context$content.getBoundingClientRect();
|
|
798
|
+
if (contentRect) {
|
|
799
|
+
var _context$content2;
|
|
800
|
+
// TODO: make sure to update this when we change positioning logic
|
|
801
|
+
const side = (_context$content2 = context.content) === null || _context$content2 === void 0 ? void 0 : _context$content2.dataset.side;
|
|
802
|
+
const rightSide = side === 'right';
|
|
803
|
+
const bleed = rightSide ? -5 : 5;
|
|
804
|
+
const contentNearEdge = contentRect[rightSide ? 'left' : 'right'];
|
|
805
|
+
const contentFarEdge = contentRect[rightSide ? 'right' : 'left'];
|
|
806
|
+
contentContext.onPointerGraceIntentChange({
|
|
807
|
+
area: [
|
|
808
|
+
// consistently within polygon bounds
|
|
809
|
+
{
|
|
810
|
+
x: event.clientX + bleed,
|
|
811
|
+
y: event.clientY
|
|
812
|
+
},
|
|
813
|
+
{
|
|
814
|
+
x: contentNearEdge,
|
|
815
|
+
y: contentRect.top
|
|
816
|
+
},
|
|
817
|
+
{
|
|
818
|
+
x: contentFarEdge,
|
|
819
|
+
y: contentRect.top
|
|
820
|
+
},
|
|
821
|
+
{
|
|
822
|
+
x: contentFarEdge,
|
|
823
|
+
y: contentRect.bottom
|
|
824
|
+
},
|
|
825
|
+
{
|
|
826
|
+
x: contentNearEdge,
|
|
827
|
+
y: contentRect.bottom
|
|
828
|
+
}
|
|
829
|
+
],
|
|
830
|
+
side: side
|
|
831
|
+
});
|
|
832
|
+
window.clearTimeout(pointerGraceTimerRef.current);
|
|
833
|
+
pointerGraceTimerRef.current = window.setTimeout(()=>contentContext.onPointerGraceIntentChange(null)
|
|
834
|
+
, 300);
|
|
835
|
+
} else {
|
|
836
|
+
contentContext.onTriggerLeave(event);
|
|
837
|
+
if (event.defaultPrevented) return; // There's 100ms where the user may leave an item before the submenu was opened.
|
|
838
|
+
contentContext.onPointerGraceIntentChange(null);
|
|
839
|
+
}
|
|
840
|
+
})),
|
|
841
|
+
onKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(props.onKeyDown, (event)=>{
|
|
842
|
+
const isTypingAhead = contentContext.searchRef.current !== '';
|
|
843
|
+
if (props.disabled || isTypingAhead && event.key === ' ') return;
|
|
844
|
+
if ($213e4d2df823067d$var$SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {
|
|
845
|
+
var _context$content3;
|
|
846
|
+
context.onOpenChange(true); // The trigger may hold focus if opened via pointer interaction
|
|
847
|
+
// so we ensure content is given focus again when switching to keyboard.
|
|
848
|
+
(_context$content3 = context.content) === null || _context$content3 === void 0 || _context$content3.focus(); // prevent window from scrolling
|
|
849
|
+
event.preventDefault();
|
|
850
|
+
}
|
|
851
|
+
})
|
|
852
|
+
})));
|
|
853
|
+
});
|
|
854
|
+
/*#__PURE__*/ Object.assign($213e4d2df823067d$export$5fbbb3ba7297405f, {
|
|
855
|
+
displayName: $213e4d2df823067d$var$SUB_TRIGGER_NAME
|
|
856
|
+
});
|
|
857
|
+
/* -------------------------------------------------------------------------------------------------
|
|
858
|
+
* MenuSubContent
|
|
859
|
+
* -----------------------------------------------------------------------------------------------*/ const $213e4d2df823067d$var$SUB_CONTENT_NAME = 'MenuSubContent';
|
|
860
|
+
const $213e4d2df823067d$export$e7142ab31822bde6 = /*#__PURE__*/ $cnSS2$react.forwardRef((props, forwardedRef)=>{
|
|
861
|
+
const { forceMount: forceMount , ...subContentProps } = props;
|
|
862
|
+
const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu);
|
|
863
|
+
const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu);
|
|
864
|
+
const subContext = $213e4d2df823067d$var$useMenuSubContext($213e4d2df823067d$var$SUB_CONTENT_NAME, props.__scopeMenu);
|
|
865
|
+
const ref = $cnSS2$react.useRef(null);
|
|
866
|
+
const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref);
|
|
867
|
+
return /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$Collection.Provider, {
|
|
868
|
+
scope: props.__scopeMenu
|
|
869
|
+
}, /*#__PURE__*/ $cnSS2$react.createElement($cnSS2$radixuireactpresence.Presence, {
|
|
870
|
+
present: forceMount || context.open
|
|
871
|
+
}, /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$Collection.Slot, {
|
|
872
|
+
scope: props.__scopeMenu
|
|
873
|
+
}, /*#__PURE__*/ $cnSS2$react.createElement($213e4d2df823067d$var$MenuContentImpl, ($parcel$interopDefault($cnSS2$babelruntimehelpersextends))({
|
|
874
|
+
id: subContext.contentId,
|
|
875
|
+
"aria-labelledby": subContext.triggerId
|
|
876
|
+
}, subContentProps, {
|
|
877
|
+
ref: composedRefs,
|
|
878
|
+
align: "start",
|
|
879
|
+
side: rootContext.dir === 'rtl' ? 'left' : 'right',
|
|
880
|
+
portalled: true,
|
|
881
|
+
disableOutsidePointerEvents: false,
|
|
882
|
+
disableOutsideScroll: false,
|
|
883
|
+
trapFocus: false,
|
|
884
|
+
onOpenAutoFocus: (event)=>{
|
|
885
|
+
var _ref$current;
|
|
886
|
+
// when opening a submenu, focus content for keyboard users only
|
|
887
|
+
if (rootContext.isUsingKeyboardRef.current) (_ref$current = ref.current) === null || _ref$current === void 0 || _ref$current.focus();
|
|
888
|
+
event.preventDefault();
|
|
889
|
+
} // The menu might close because of focusing another menu item in the parent menu. We
|
|
890
|
+
,
|
|
891
|
+
onCloseAutoFocus: (event)=>event.preventDefault()
|
|
892
|
+
,
|
|
893
|
+
onFocusOutside: $cnSS2$radixuiprimitive.composeEventHandlers(props.onFocusOutside, (event)=>{
|
|
894
|
+
// We prevent closing when the trigger is focused to avoid triggering a re-open animation
|
|
895
|
+
// on pointer interaction.
|
|
896
|
+
if (event.target !== subContext.trigger) context.onOpenChange(false);
|
|
897
|
+
}),
|
|
898
|
+
onEscapeKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(props.onEscapeKeyDown, rootContext.onClose),
|
|
899
|
+
onKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(props.onKeyDown, (event)=>{
|
|
900
|
+
// Submenu key events bubble through portals. We only care about keys in this menu.
|
|
901
|
+
const isKeyDownInside = event.currentTarget.contains(event.target);
|
|
902
|
+
const isCloseKey = $213e4d2df823067d$var$SUB_CLOSE_KEYS[rootContext.dir].includes(event.key);
|
|
903
|
+
if (isKeyDownInside && isCloseKey) {
|
|
904
|
+
var _subContext$trigger;
|
|
905
|
+
context.onOpenChange(false); // We focus manually because we prevented it in `onCloseAutoFocus`
|
|
906
|
+
(_subContext$trigger = subContext.trigger) === null || _subContext$trigger === void 0 || _subContext$trigger.focus(); // prevent window from scrolling
|
|
907
|
+
event.preventDefault();
|
|
908
|
+
}
|
|
909
|
+
})
|
|
910
|
+
})))));
|
|
911
|
+
});
|
|
912
|
+
/*#__PURE__*/ Object.assign($213e4d2df823067d$export$e7142ab31822bde6, {
|
|
913
|
+
displayName: $213e4d2df823067d$var$SUB_CONTENT_NAME
|
|
914
|
+
});
|
|
899
915
|
/* -----------------------------------------------------------------------------------------------*/ function $213e4d2df823067d$var$getOpenState(open) {
|
|
900
916
|
return open ? 'open' : 'closed';
|
|
901
917
|
}
|
|
@@ -975,9 +991,7 @@ function $213e4d2df823067d$var$whenMouse(handler) {
|
|
|
975
991
|
;
|
|
976
992
|
}
|
|
977
993
|
const $213e4d2df823067d$export$be92b6f5f03c0fe9 = $213e4d2df823067d$export$d9b273488cd8ce6f;
|
|
978
|
-
const $213e4d2df823067d$export$d7a01e11500dfb6f = $213e4d2df823067d$export$71bdb9d1e2909932;
|
|
979
994
|
const $213e4d2df823067d$export$b688253958b8dfe7 = $213e4d2df823067d$export$9fa5ebd18bee4d43;
|
|
980
|
-
const $213e4d2df823067d$export$2ea8a7a591ac5eac = $213e4d2df823067d$export$5fbbb3ba7297405f;
|
|
981
995
|
const $213e4d2df823067d$export$7c6e2c02157bb7d2 = $213e4d2df823067d$export$479f0f2f71193efe;
|
|
982
996
|
const $213e4d2df823067d$export$eb2fcfdbd7ba97d4 = $213e4d2df823067d$export$22a631d1f72787bb;
|
|
983
997
|
const $213e4d2df823067d$export$b04be29aa201d4f5 = $213e4d2df823067d$export$dd37bec0e8a99143;
|
|
@@ -988,6 +1002,9 @@ const $213e4d2df823067d$export$371ab307eab489c0 = $213e4d2df823067d$export$69bd2
|
|
|
988
1002
|
const $213e4d2df823067d$export$c3468e2714d175fa = $213e4d2df823067d$export$a2593e23056970a3;
|
|
989
1003
|
const $213e4d2df823067d$export$1ff3c3f08ae963c0 = $213e4d2df823067d$export$1cec7dcdd713e220;
|
|
990
1004
|
const $213e4d2df823067d$export$21b07c8f274aebd5 = $213e4d2df823067d$export$bcdda4773debf5fa;
|
|
1005
|
+
const $213e4d2df823067d$export$d7a01e11500dfb6f = $213e4d2df823067d$export$71bdb9d1e2909932;
|
|
1006
|
+
const $213e4d2df823067d$export$2ea8a7a591ac5eac = $213e4d2df823067d$export$5fbbb3ba7297405f;
|
|
1007
|
+
const $213e4d2df823067d$export$6d4de93b380beddf = $213e4d2df823067d$export$e7142ab31822bde6;
|
|
991
1008
|
|
|
992
1009
|
|
|
993
1010
|
$parcel$exportWildcard(module.exports, $213e4d2df823067d$exports);
|