@jobber/components 8.21.1 → 8.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Dialog.d.ts +1 -0
- package/Dialog.js +17 -0
- package/dist/BottomSheet-cjs.js +34 -7
- package/dist/BottomSheet-es.js +34 -8
- package/dist/CSPContext-cjs.js +69 -0
- package/dist/CSPContext-es.js +46 -0
- package/dist/Card/index.cjs +3 -0
- package/dist/Card/index.mjs +3 -0
- package/dist/ComboboxChipRemove-cjs.js +54 -211
- package/dist/ComboboxChipRemove-es.js +8 -164
- package/dist/DataDump/index.cjs +3 -0
- package/dist/DataDump/index.mjs +3 -0
- package/dist/Dialog/Dialog.d.ts +3 -0
- package/dist/Dialog/Dialog.types.d.ts +205 -0
- package/dist/Dialog/DialogBottomSheet.d.ts +28 -0
- package/dist/Dialog/DialogModal.d.ts +20 -0
- package/dist/Dialog/constants.d.ts +1 -0
- package/dist/Dialog/dialogComposableShared.d.ts +53 -0
- package/dist/Dialog/dialogReturnFocus.d.ts +43 -0
- package/dist/Dialog/index.cjs +33 -0
- package/dist/Dialog/index.d.ts +4 -0
- package/dist/Dialog/index.mjs +25 -0
- package/dist/DrawerDescription-cjs.js +410 -0
- package/dist/DrawerDescription-es.js +383 -0
- package/dist/DrawerTitle-cjs.js +116 -0
- package/dist/DrawerTitle-es.js +92 -0
- package/dist/InputNumberExperimental-cjs.js +24 -23
- package/dist/InputNumberExperimental-es.js +3 -2
- package/dist/InternalBackdrop-es.js +3 -3
- package/dist/Menu/index.cjs +3 -0
- package/dist/Menu/index.mjs +3 -0
- package/dist/Menu-cjs.js +6 -4
- package/dist/Menu-es.js +6 -4
- package/dist/MenuSubmenuTrigger-cjs.js +53 -103
- package/dist/MenuSubmenuTrigger-es.js +55 -103
- package/dist/NumberFieldInput-cjs.js +9 -9
- package/dist/NumberFieldInput-es.js +3 -3
- package/dist/Page/index.cjs +3 -0
- package/dist/Page/index.mjs +3 -0
- package/dist/ScrollAreaViewport-cjs.js +921 -960
- package/dist/ScrollAreaViewport-es.js +917 -958
- package/dist/SelectGroupLabel-cjs.js +1924 -0
- package/dist/SelectGroupLabel-es.js +1888 -0
- package/dist/SelectPrimitive-cjs.js +112 -0
- package/dist/SelectPrimitive-es.js +110 -0
- package/dist/ToolbarRootContext-cjs.js +35 -0
- package/dist/ToolbarRootContext-es.js +14 -0
- package/dist/dialogReturnFocus-cjs.js +427 -0
- package/dist/dialogReturnFocus-es.js +423 -0
- package/dist/docs/SelectPrimitive/SelectPrimitive.md +326 -0
- package/dist/docs/index.md +1 -0
- package/dist/floating-ui.react-dom-cjs.js +1 -0
- package/dist/floating-ui.react-dom-es.js +2 -2
- package/dist/floating-ui.utils.dom-es.js +1 -1
- package/dist/index.cjs +15 -7
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +12 -7
- package/dist/primitives/BottomSheet/BottomSheet.d.ts +19 -1
- package/dist/primitives/BottomSheet/BottomSheet.types.d.ts +8 -0
- package/dist/primitives/BottomSheet/index.cjs +2 -0
- package/dist/primitives/BottomSheet/index.d.ts +1 -1
- package/dist/primitives/BottomSheet/index.mjs +2 -1
- package/dist/primitives/ComboboxPrimitive/index.cjs +3 -1
- package/dist/primitives/ComboboxPrimitive/index.mjs +3 -1
- package/dist/primitives/InputNumberExperimental/index.cjs +2 -1
- package/dist/primitives/InputNumberExperimental/index.mjs +2 -1
- package/dist/primitives/SelectPrimitive/SelectPrimitive.d.ts +63 -0
- package/dist/primitives/SelectPrimitive/index.cjs +29 -0
- package/dist/primitives/SelectPrimitive/index.d.ts +2 -0
- package/dist/primitives/SelectPrimitive/index.mjs +23 -0
- package/dist/primitives/SelectPrimitive/types.d.ts +16 -0
- package/dist/primitives/index.cjs +9 -1
- package/dist/primitives/index.d.ts +1 -0
- package/dist/primitives/index.mjs +8 -2
- package/dist/primitives/mergeClassName.d.ts +12 -0
- package/dist/resolveAriaLabelledBy-cjs.js +195 -0
- package/dist/resolveAriaLabelledBy-es.js +162 -0
- package/dist/styles.css +685 -0
- package/dist/unstyledPrimitives/index.cjs +434 -259
- package/dist/unstyledPrimitives/index.d.ts +2 -0
- package/dist/unstyledPrimitives/index.mjs +425 -252
- package/dist/useButton-cjs.js +2 -0
- package/dist/useButton-es.js +3 -2
- package/dist/useCompositeListItem-es.js +4 -4
- package/dist/useLabel-cjs.js +3 -329
- package/dist/useLabel-es.js +4 -299
- package/dist/useLabelableId-cjs.js +332 -0
- package/dist/useLabelableId-es.js +300 -0
- package/dist/useRenderElement-cjs.js +3 -0
- package/dist/useRenderElement-es.js +4 -1
- package/dist/utils/meta/meta.json +11 -1
- package/package.json +2 -2
|
@@ -3,19 +3,26 @@
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var useButton = require('../useButton-cjs.js');
|
|
5
5
|
var ComboboxChipRemove = require('../ComboboxChipRemove-cjs.js');
|
|
6
|
+
var resolveAriaLabelledBy = require('../resolveAriaLabelledBy-cjs.js');
|
|
6
7
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
8
|
var Separator = require('../Separator-cjs.js');
|
|
9
|
+
var DrawerDescription = require('../DrawerDescription-cjs.js');
|
|
10
|
+
var DrawerTitle = require('../DrawerTitle-cjs.js');
|
|
8
11
|
var ScrollAreaViewport = require('../ScrollAreaViewport-cjs.js');
|
|
9
|
-
var MenuSubmenuTrigger = require('../MenuSubmenuTrigger-cjs.js');
|
|
10
12
|
var useRenderElement = require('../useRenderElement-cjs.js');
|
|
11
13
|
var floatingUi_utils_dom = require('../floating-ui.utils.dom-cjs.js');
|
|
12
14
|
var clamp = require('../clamp-cjs.js');
|
|
13
15
|
var InternalBackdrop = require('../InternalBackdrop-cjs.js');
|
|
14
16
|
var ReactDOM = require('react-dom');
|
|
17
|
+
var MenuSubmenuTrigger = require('../MenuSubmenuTrigger-cjs.js');
|
|
15
18
|
var useCompositeListItem = require('../useCompositeListItem-cjs.js');
|
|
16
19
|
var index_esm = require('../index.esm-cjs.js');
|
|
17
20
|
var NumberFieldInput = require('../NumberFieldInput-cjs.js');
|
|
18
|
-
require('../
|
|
21
|
+
var SelectGroupLabel = require('../SelectGroupLabel-cjs.js');
|
|
22
|
+
var useLabelableId = require('../useLabelableId-cjs.js');
|
|
23
|
+
var useLabel = require('../useLabel-cjs.js');
|
|
24
|
+
require('../CSPContext-cjs.js');
|
|
25
|
+
require('../ToolbarRootContext-cjs.js');
|
|
19
26
|
require('../floating-ui.react-dom-cjs.js');
|
|
20
27
|
|
|
21
28
|
function _interopNamespaceDefault(e) {
|
|
@@ -108,7 +115,7 @@ function AutocompleteRoot(props) {
|
|
|
108
115
|
if (highlightedValue == null) {
|
|
109
116
|
setInlineInputValue('');
|
|
110
117
|
} else {
|
|
111
|
-
setInlineInputValue(
|
|
118
|
+
setInlineInputValue(resolveAriaLabelledBy.stringifyAsLabel(highlightedValue, itemToStringValue));
|
|
112
119
|
}
|
|
113
120
|
} else {
|
|
114
121
|
setInlineInputValue('');
|
|
@@ -147,7 +154,7 @@ function AutocompleteValue(props) {
|
|
|
147
154
|
});
|
|
148
155
|
}
|
|
149
156
|
|
|
150
|
-
var index_parts$
|
|
157
|
+
var index_parts$7 = /*#__PURE__*/Object.freeze({
|
|
151
158
|
__proto__: null,
|
|
152
159
|
Arrow: ComboboxChipRemove.ComboboxArrow,
|
|
153
160
|
Backdrop: ComboboxChipRemove.ComboboxBackdrop,
|
|
@@ -174,40 +181,20 @@ var index_parts$5 = /*#__PURE__*/Object.freeze({
|
|
|
174
181
|
useFilteredItems: ComboboxChipRemove.useFilteredItems
|
|
175
182
|
});
|
|
176
183
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
const {
|
|
191
|
-
store
|
|
192
|
-
} = ScrollAreaViewport.useDialogRootContext();
|
|
193
|
-
const id = useButton.useBaseUiId(idProp);
|
|
194
|
-
store.useSyncedValueWithCleanup('descriptionElementId', id);
|
|
195
|
-
return useRenderElement.useRenderElement('p', componentProps, {
|
|
196
|
-
ref: forwardedRef,
|
|
197
|
-
props: [{
|
|
198
|
-
id
|
|
199
|
-
}, elementProps]
|
|
200
|
-
});
|
|
184
|
+
var index_parts$6 = /*#__PURE__*/Object.freeze({
|
|
185
|
+
__proto__: null,
|
|
186
|
+
Backdrop: DrawerDescription.DialogBackdrop,
|
|
187
|
+
Close: DrawerTitle.DialogClose,
|
|
188
|
+
Description: DrawerDescription.DialogDescription,
|
|
189
|
+
Handle: DrawerDescription.DialogHandle,
|
|
190
|
+
Popup: DrawerDescription.DialogPopup,
|
|
191
|
+
Portal: ScrollAreaViewport.DialogPortal,
|
|
192
|
+
Root: ScrollAreaViewport.DialogRoot,
|
|
193
|
+
Title: DrawerTitle.DialogTitle,
|
|
194
|
+
Trigger: ScrollAreaViewport.DialogTrigger,
|
|
195
|
+
Viewport: DrawerDescription.DialogViewport,
|
|
196
|
+
createHandle: DrawerDescription.createDialogHandle
|
|
201
197
|
});
|
|
202
|
-
if (process.env.NODE_ENV !== "production") DialogDescription.displayName = "DialogDescription";
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* A paragraph with additional information about the drawer.
|
|
206
|
-
* Renders a `<p>` element.
|
|
207
|
-
*
|
|
208
|
-
* Documentation: [Base UI Drawer](https://base-ui.com/react/components/drawer)
|
|
209
|
-
*/
|
|
210
|
-
const DrawerDescription = DialogDescription;
|
|
211
198
|
|
|
212
199
|
const stateAttributesMapping$5 = {
|
|
213
200
|
active(value) {
|
|
@@ -406,160 +393,6 @@ function createVisualStateStore() {
|
|
|
406
393
|
};
|
|
407
394
|
}
|
|
408
395
|
|
|
409
|
-
let DialogViewportDataAttributes = function (DialogViewportDataAttributes) {
|
|
410
|
-
/**
|
|
411
|
-
* Present when the dialog is open.
|
|
412
|
-
*/
|
|
413
|
-
DialogViewportDataAttributes[DialogViewportDataAttributes["open"] = InternalBackdrop.CommonPopupDataAttributes.open] = "open";
|
|
414
|
-
/**
|
|
415
|
-
* Present when the dialog is closed.
|
|
416
|
-
*/
|
|
417
|
-
DialogViewportDataAttributes[DialogViewportDataAttributes["closed"] = InternalBackdrop.CommonPopupDataAttributes.closed] = "closed";
|
|
418
|
-
/**
|
|
419
|
-
* Present when the dialog is animating in.
|
|
420
|
-
*/
|
|
421
|
-
DialogViewportDataAttributes[DialogViewportDataAttributes["startingStyle"] = InternalBackdrop.CommonPopupDataAttributes.startingStyle] = "startingStyle";
|
|
422
|
-
/**
|
|
423
|
-
* Present when the dialog is animating out.
|
|
424
|
-
*/
|
|
425
|
-
DialogViewportDataAttributes[DialogViewportDataAttributes["endingStyle"] = InternalBackdrop.CommonPopupDataAttributes.endingStyle] = "endingStyle";
|
|
426
|
-
/**
|
|
427
|
-
* Present when the dialog is nested within another dialog.
|
|
428
|
-
*/
|
|
429
|
-
DialogViewportDataAttributes["nested"] = "data-nested";
|
|
430
|
-
/**
|
|
431
|
-
* Present when the dialog has other open dialogs nested within it.
|
|
432
|
-
*/
|
|
433
|
-
DialogViewportDataAttributes["nestedDialogOpen"] = "data-nested-dialog-open";
|
|
434
|
-
return DialogViewportDataAttributes;
|
|
435
|
-
}({});
|
|
436
|
-
|
|
437
|
-
const stateAttributesMapping$3 = {
|
|
438
|
-
...InternalBackdrop.popupStateMapping,
|
|
439
|
-
...useButton.transitionStatusMapping,
|
|
440
|
-
nested(value) {
|
|
441
|
-
return value ? {
|
|
442
|
-
[DialogViewportDataAttributes.nested]: ''
|
|
443
|
-
} : null;
|
|
444
|
-
},
|
|
445
|
-
nestedDialogOpen(value) {
|
|
446
|
-
return value ? {
|
|
447
|
-
[DialogViewportDataAttributes.nestedDialogOpen]: ''
|
|
448
|
-
} : null;
|
|
449
|
-
}
|
|
450
|
-
};
|
|
451
|
-
|
|
452
|
-
/**
|
|
453
|
-
* A positioning container for the dialog popup that can be made scrollable.
|
|
454
|
-
* Renders a `<div>` element.
|
|
455
|
-
*
|
|
456
|
-
* Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)
|
|
457
|
-
*/
|
|
458
|
-
const DialogViewport = /*#__PURE__*/React__namespace.forwardRef(function DialogViewport(componentProps, forwardedRef) {
|
|
459
|
-
const {
|
|
460
|
-
className,
|
|
461
|
-
render,
|
|
462
|
-
children,
|
|
463
|
-
...elementProps
|
|
464
|
-
} = componentProps;
|
|
465
|
-
const keepMounted = ScrollAreaViewport.useDialogPortalContext();
|
|
466
|
-
const {
|
|
467
|
-
store
|
|
468
|
-
} = ScrollAreaViewport.useDialogRootContext();
|
|
469
|
-
const open = store.useState('open');
|
|
470
|
-
const nested = store.useState('nested');
|
|
471
|
-
const transitionStatus = store.useState('transitionStatus');
|
|
472
|
-
const nestedOpenDialogCount = store.useState('nestedOpenDialogCount');
|
|
473
|
-
const mounted = store.useState('mounted');
|
|
474
|
-
const nestedDialogOpen = nestedOpenDialogCount > 0;
|
|
475
|
-
const state = {
|
|
476
|
-
open,
|
|
477
|
-
nested,
|
|
478
|
-
transitionStatus,
|
|
479
|
-
nestedDialogOpen
|
|
480
|
-
};
|
|
481
|
-
const shouldRender = keepMounted || mounted;
|
|
482
|
-
return useRenderElement.useRenderElement('div', componentProps, {
|
|
483
|
-
enabled: shouldRender,
|
|
484
|
-
state,
|
|
485
|
-
ref: [forwardedRef, store.useStateSetter('viewportElement')],
|
|
486
|
-
stateAttributesMapping: stateAttributesMapping$3,
|
|
487
|
-
props: [{
|
|
488
|
-
role: 'presentation',
|
|
489
|
-
hidden: !mounted,
|
|
490
|
-
style: {
|
|
491
|
-
pointerEvents: !open ? 'none' : undefined
|
|
492
|
-
},
|
|
493
|
-
children
|
|
494
|
-
}, elementProps]
|
|
495
|
-
});
|
|
496
|
-
});
|
|
497
|
-
if (process.env.NODE_ENV !== "production") DialogViewport.displayName = "DialogViewport";
|
|
498
|
-
|
|
499
|
-
/**
|
|
500
|
-
* A handle to control a Dialog imperatively and to associate detached triggers with it.
|
|
501
|
-
*/
|
|
502
|
-
class DialogHandle {
|
|
503
|
-
/**
|
|
504
|
-
* Internal store holding the dialog state.
|
|
505
|
-
* @internal
|
|
506
|
-
*/
|
|
507
|
-
|
|
508
|
-
constructor(store) {
|
|
509
|
-
this.store = store ?? new ScrollAreaViewport.DialogStore();
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
/**
|
|
513
|
-
* Opens the dialog and associates it with the trigger with the given id.
|
|
514
|
-
* The trigger, if provided, must be a Dialog.Trigger component with this handle passed as a prop.
|
|
515
|
-
*
|
|
516
|
-
* This method should only be called in an event handler or an effect (not during rendering).
|
|
517
|
-
*
|
|
518
|
-
* @param triggerId ID of the trigger to associate with the dialog. If null, the dialog will open without a trigger association.
|
|
519
|
-
*/
|
|
520
|
-
open(triggerId) {
|
|
521
|
-
const triggerElement = triggerId ? this.store.context.triggerElements.getById(triggerId) : undefined;
|
|
522
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
523
|
-
if (triggerId && !triggerElement) {
|
|
524
|
-
console.warn(`Base UI: DialogHandle.open: No trigger found with id "${triggerId}". The dialog will open, but the trigger will not be associated with the dialog.`);
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
this.store.setOpen(true, useButton.createChangeEventDetails(useButton.imperativeAction, undefined, triggerElement));
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
/**
|
|
531
|
-
* Opens the dialog and sets the payload.
|
|
532
|
-
* Does not associate the dialog with any trigger.
|
|
533
|
-
*
|
|
534
|
-
* @param payload Payload to set when opening the dialog.
|
|
535
|
-
*/
|
|
536
|
-
openWithPayload(payload) {
|
|
537
|
-
this.store.set('payload', payload);
|
|
538
|
-
this.store.setOpen(true, useButton.createChangeEventDetails(useButton.imperativeAction, undefined, undefined));
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
/**
|
|
542
|
-
* Closes the dialog.
|
|
543
|
-
*/
|
|
544
|
-
close() {
|
|
545
|
-
this.store.setOpen(false, useButton.createChangeEventDetails(useButton.imperativeAction, undefined, undefined));
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
/**
|
|
549
|
-
* Indicates whether the dialog is currently open.
|
|
550
|
-
*/
|
|
551
|
-
get isOpen() {
|
|
552
|
-
return this.store.state.open;
|
|
553
|
-
}
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
/**
|
|
557
|
-
* Creates a new handle to connect a Dialog.Root with detached Dialog.Trigger components.
|
|
558
|
-
*/
|
|
559
|
-
function createDialogHandle() {
|
|
560
|
-
return new DialogHandle();
|
|
561
|
-
}
|
|
562
|
-
|
|
563
396
|
function isScrollable(element, axis) {
|
|
564
397
|
const style = floatingUi_utils_dom.getComputedStyle(element);
|
|
565
398
|
if (axis === 'vertical') {
|
|
@@ -1572,7 +1405,7 @@ const SWIPE_AREA_SWIPING_HOOK = {
|
|
|
1572
1405
|
const SWIPE_AREA_DISABLED_HOOK = {
|
|
1573
1406
|
[DrawerSwipeAreaDataAttributes.disabled]: ''
|
|
1574
1407
|
};
|
|
1575
|
-
const stateAttributesMapping$
|
|
1408
|
+
const stateAttributesMapping$3 = {
|
|
1576
1409
|
open(value) {
|
|
1577
1410
|
return value ? SWIPE_AREA_OPEN_HOOK : SWIPE_AREA_CLOSED_HOOK;
|
|
1578
1411
|
},
|
|
@@ -1877,7 +1710,7 @@ const DrawerSwipeArea = /*#__PURE__*/React__namespace.forwardRef(function Drawer
|
|
|
1877
1710
|
return useRenderElement.useRenderElement('div', componentProps, {
|
|
1878
1711
|
state,
|
|
1879
1712
|
ref: [forwardedRef, swipeAreaRef, registerTrigger],
|
|
1880
|
-
stateAttributesMapping: stateAttributesMapping$
|
|
1713
|
+
stateAttributesMapping: stateAttributesMapping$3,
|
|
1881
1714
|
props: [{
|
|
1882
1715
|
role: 'presentation',
|
|
1883
1716
|
'aria-hidden': true,
|
|
@@ -2593,7 +2426,7 @@ const DrawerViewport = /*#__PURE__*/React__namespace.forwardRef(function DrawerV
|
|
|
2593
2426
|
lastPointerTypeRef.current = '';
|
|
2594
2427
|
ignoreNextTouchStartFromPenRef.current = false;
|
|
2595
2428
|
}
|
|
2596
|
-
return /*#__PURE__*/jsxRuntime.jsx(DialogViewport, {
|
|
2429
|
+
return /*#__PURE__*/jsxRuntime.jsx(DrawerDescription.DialogViewport, {
|
|
2597
2430
|
ref: forwardedRef,
|
|
2598
2431
|
className: className,
|
|
2599
2432
|
render: render,
|
|
@@ -2881,13 +2714,13 @@ function shouldDismissFromStartEdge(direction, axis) {
|
|
|
2881
2714
|
return null;
|
|
2882
2715
|
}
|
|
2883
2716
|
|
|
2884
|
-
var index_parts$
|
|
2717
|
+
var index_parts$5 = /*#__PURE__*/Object.freeze({
|
|
2885
2718
|
__proto__: null,
|
|
2886
2719
|
Backdrop: ScrollAreaViewport.DrawerBackdrop,
|
|
2887
|
-
Close:
|
|
2720
|
+
Close: DrawerTitle.DrawerClose,
|
|
2888
2721
|
Content: ScrollAreaViewport.DrawerContent,
|
|
2889
|
-
Description: DrawerDescription,
|
|
2890
|
-
Handle: DialogHandle,
|
|
2722
|
+
Description: DrawerDescription.DrawerDescription,
|
|
2723
|
+
Handle: DrawerDescription.DialogHandle,
|
|
2891
2724
|
Indent: DrawerIndent,
|
|
2892
2725
|
IndentBackground: DrawerIndentBackground,
|
|
2893
2726
|
Popup: ScrollAreaViewport.DrawerPopup,
|
|
@@ -2895,10 +2728,10 @@ var index_parts$4 = /*#__PURE__*/Object.freeze({
|
|
|
2895
2728
|
Provider: DrawerProvider,
|
|
2896
2729
|
Root: ScrollAreaViewport.DrawerRoot,
|
|
2897
2730
|
SwipeArea: DrawerSwipeArea,
|
|
2898
|
-
Title:
|
|
2731
|
+
Title: DrawerTitle.DrawerTitle,
|
|
2899
2732
|
Trigger: ScrollAreaViewport.DrawerTrigger,
|
|
2900
2733
|
Viewport: DrawerViewport,
|
|
2901
|
-
createHandle: createDialogHandle
|
|
2734
|
+
createHandle: DrawerDescription.createDialogHandle
|
|
2902
2735
|
});
|
|
2903
2736
|
|
|
2904
2737
|
/**
|
|
@@ -2943,52 +2776,6 @@ const MenuArrow = /*#__PURE__*/React__namespace.forwardRef(function MenuArrow(co
|
|
|
2943
2776
|
});
|
|
2944
2777
|
if (process.env.NODE_ENV !== "production") MenuArrow.displayName = "MenuArrow";
|
|
2945
2778
|
|
|
2946
|
-
const stateAttributesMapping$1 = {
|
|
2947
|
-
...InternalBackdrop.popupStateMapping,
|
|
2948
|
-
...useButton.transitionStatusMapping
|
|
2949
|
-
};
|
|
2950
|
-
|
|
2951
|
-
/**
|
|
2952
|
-
* An overlay displayed beneath the menu popup.
|
|
2953
|
-
* Renders a `<div>` element.
|
|
2954
|
-
*
|
|
2955
|
-
* Documentation: [Base UI Menu](https://base-ui.com/react/components/menu)
|
|
2956
|
-
*/
|
|
2957
|
-
const MenuBackdrop = /*#__PURE__*/React__namespace.forwardRef(function MenuBackdrop(componentProps, forwardedRef) {
|
|
2958
|
-
const {
|
|
2959
|
-
className,
|
|
2960
|
-
render,
|
|
2961
|
-
...elementProps
|
|
2962
|
-
} = componentProps;
|
|
2963
|
-
const {
|
|
2964
|
-
store
|
|
2965
|
-
} = MenuSubmenuTrigger.useMenuRootContext();
|
|
2966
|
-
const open = store.useState('open');
|
|
2967
|
-
const mounted = store.useState('mounted');
|
|
2968
|
-
const transitionStatus = store.useState('transitionStatus');
|
|
2969
|
-
const lastOpenChangeReason = store.useState('lastOpenChangeReason');
|
|
2970
|
-
const contextMenuContext = MenuSubmenuTrigger.useContextMenuRootContext();
|
|
2971
|
-
const state = {
|
|
2972
|
-
open,
|
|
2973
|
-
transitionStatus
|
|
2974
|
-
};
|
|
2975
|
-
return useRenderElement.useRenderElement('div', componentProps, {
|
|
2976
|
-
ref: contextMenuContext?.backdropRef ? [forwardedRef, contextMenuContext.backdropRef] : forwardedRef,
|
|
2977
|
-
state,
|
|
2978
|
-
stateAttributesMapping: stateAttributesMapping$1,
|
|
2979
|
-
props: [{
|
|
2980
|
-
role: 'presentation',
|
|
2981
|
-
hidden: !mounted,
|
|
2982
|
-
style: {
|
|
2983
|
-
pointerEvents: lastOpenChangeReason === useButton.triggerHover ? 'none' : undefined,
|
|
2984
|
-
userSelect: 'none',
|
|
2985
|
-
WebkitUserSelect: 'none'
|
|
2986
|
-
}
|
|
2987
|
-
}, elementProps]
|
|
2988
|
-
});
|
|
2989
|
-
});
|
|
2990
|
-
if (process.env.NODE_ENV !== "production") MenuBackdrop.displayName = "MenuBackdrop";
|
|
2991
|
-
|
|
2992
2779
|
const MenuCheckboxItemContext = /*#__PURE__*/React__namespace.createContext(undefined);
|
|
2993
2780
|
if (process.env.NODE_ENV !== "production") MenuCheckboxItemContext.displayName = "MenuCheckboxItemContext";
|
|
2994
2781
|
function useMenuCheckboxItemContext() {
|
|
@@ -3594,7 +3381,7 @@ let MenuViewportCssVars = /*#__PURE__*/function (MenuViewportCssVars) {
|
|
|
3594
3381
|
return MenuViewportCssVars;
|
|
3595
3382
|
}({});
|
|
3596
3383
|
|
|
3597
|
-
const stateAttributesMapping = {
|
|
3384
|
+
const stateAttributesMapping$2 = {
|
|
3598
3385
|
activationDirection: value => value ? {
|
|
3599
3386
|
'data-activation-direction': value
|
|
3600
3387
|
} : null
|
|
@@ -3642,7 +3429,7 @@ const MenuViewport = /*#__PURE__*/React__namespace.forwardRef(function MenuViewp
|
|
|
3642
3429
|
props: [elementProps, {
|
|
3643
3430
|
children: childrenToRender
|
|
3644
3431
|
}],
|
|
3645
|
-
stateAttributesMapping
|
|
3432
|
+
stateAttributesMapping: stateAttributesMapping$2
|
|
3646
3433
|
});
|
|
3647
3434
|
});
|
|
3648
3435
|
if (process.env.NODE_ENV !== "production") MenuViewport.displayName = "MenuViewport";
|
|
@@ -3693,10 +3480,10 @@ function createMenuHandle() {
|
|
|
3693
3480
|
return new MenuHandle();
|
|
3694
3481
|
}
|
|
3695
3482
|
|
|
3696
|
-
var index_parts$
|
|
3483
|
+
var index_parts$4 = /*#__PURE__*/Object.freeze({
|
|
3697
3484
|
__proto__: null,
|
|
3698
3485
|
Arrow: MenuArrow,
|
|
3699
|
-
Backdrop: MenuBackdrop,
|
|
3486
|
+
Backdrop: MenuSubmenuTrigger.MenuBackdrop,
|
|
3700
3487
|
CheckboxItem: MenuCheckboxItem,
|
|
3701
3488
|
CheckboxItemIndicator: MenuCheckboxItemIndicator,
|
|
3702
3489
|
Group: MenuSubmenuTrigger.MenuGroup,
|
|
@@ -4077,7 +3864,7 @@ const ScrollAreaCorner = /*#__PURE__*/React__namespace.forwardRef(function Scrol
|
|
|
4077
3864
|
});
|
|
4078
3865
|
if (process.env.NODE_ENV !== "production") ScrollAreaCorner.displayName = "ScrollAreaCorner";
|
|
4079
3866
|
|
|
4080
|
-
var index_parts$
|
|
3867
|
+
var index_parts$3 = /*#__PURE__*/Object.freeze({
|
|
4081
3868
|
__proto__: null,
|
|
4082
3869
|
Content: ScrollAreaContent,
|
|
4083
3870
|
Corner: ScrollAreaCorner,
|
|
@@ -4087,7 +3874,7 @@ var index_parts$2 = /*#__PURE__*/Object.freeze({
|
|
|
4087
3874
|
Viewport: ScrollAreaViewport.ScrollAreaViewport
|
|
4088
3875
|
});
|
|
4089
3876
|
|
|
4090
|
-
var index_parts$
|
|
3877
|
+
var index_parts$2 = /*#__PURE__*/Object.freeze({
|
|
4091
3878
|
__proto__: null,
|
|
4092
3879
|
Arrow: ComboboxChipRemove.ComboboxArrow,
|
|
4093
3880
|
Backdrop: ComboboxChipRemove.ComboboxBackdrop,
|
|
@@ -4474,7 +4261,7 @@ const NumberFieldScrubAreaCursor = /*#__PURE__*/React__namespace.forwardRef(func
|
|
|
4474
4261
|
});
|
|
4475
4262
|
if (process.env.NODE_ENV !== "production") NumberFieldScrubAreaCursor.displayName = "NumberFieldScrubAreaCursor";
|
|
4476
4263
|
|
|
4477
|
-
var index_parts = /*#__PURE__*/Object.freeze({
|
|
4264
|
+
var index_parts$1 = /*#__PURE__*/Object.freeze({
|
|
4478
4265
|
__proto__: null,
|
|
4479
4266
|
Decrement: NumberFieldInput.NumberFieldDecrement,
|
|
4480
4267
|
Group: NumberFieldInput.NumberFieldGroup,
|
|
@@ -4485,6 +4272,392 @@ var index_parts = /*#__PURE__*/Object.freeze({
|
|
|
4485
4272
|
ScrubAreaCursor: NumberFieldScrubAreaCursor
|
|
4486
4273
|
});
|
|
4487
4274
|
|
|
4275
|
+
/**
|
|
4276
|
+
* An accessible label that is automatically associated with the select trigger.
|
|
4277
|
+
* Renders a `<div>` element.
|
|
4278
|
+
*
|
|
4279
|
+
* Documentation: [Base UI Select](https://base-ui.com/react/components/select)
|
|
4280
|
+
*/
|
|
4281
|
+
const SelectLabel = /*#__PURE__*/React__namespace.forwardRef(function SelectLabel(componentProps, forwardedRef) {
|
|
4282
|
+
const {
|
|
4283
|
+
render,
|
|
4284
|
+
className,
|
|
4285
|
+
...elementProps
|
|
4286
|
+
} = componentProps;
|
|
4287
|
+
// Keep label id derived from the root and ignore runtime `id` overrides from untyped consumers.
|
|
4288
|
+
const elementPropsWithoutId = elementProps;
|
|
4289
|
+
delete elementPropsWithoutId.id;
|
|
4290
|
+
const fieldRootContext = useLabelableId.useFieldRootContext();
|
|
4291
|
+
const {
|
|
4292
|
+
store
|
|
4293
|
+
} = SelectGroupLabel.useSelectRootContext();
|
|
4294
|
+
const triggerElement = InternalBackdrop.useStore(store, SelectGroupLabel.selectors.triggerElement);
|
|
4295
|
+
const rootId = InternalBackdrop.useStore(store, SelectGroupLabel.selectors.id);
|
|
4296
|
+
const defaultLabelId = resolveAriaLabelledBy.getDefaultLabelId(rootId);
|
|
4297
|
+
const labelProps = useLabel.useLabel({
|
|
4298
|
+
id: defaultLabelId,
|
|
4299
|
+
fallbackControlId: triggerElement?.id ?? rootId,
|
|
4300
|
+
setLabelId(nextLabelId) {
|
|
4301
|
+
store.set('labelId', nextLabelId);
|
|
4302
|
+
}
|
|
4303
|
+
});
|
|
4304
|
+
return useRenderElement.useRenderElement('div', componentProps, {
|
|
4305
|
+
ref: forwardedRef,
|
|
4306
|
+
state: fieldRootContext.state,
|
|
4307
|
+
props: [labelProps, elementProps],
|
|
4308
|
+
stateAttributesMapping: useLabelableId.fieldValidityMapping
|
|
4309
|
+
});
|
|
4310
|
+
});
|
|
4311
|
+
if (process.env.NODE_ENV !== "production") SelectLabel.displayName = "SelectLabel";
|
|
4312
|
+
|
|
4313
|
+
/**
|
|
4314
|
+
* An icon that indicates that the trigger button opens a select popup.
|
|
4315
|
+
* Renders a `<span>` element.
|
|
4316
|
+
*
|
|
4317
|
+
* Documentation: [Base UI Select](https://base-ui.com/react/components/select)
|
|
4318
|
+
*/
|
|
4319
|
+
const SelectIcon = /*#__PURE__*/React__namespace.forwardRef(function SelectIcon(componentProps, forwardedRef) {
|
|
4320
|
+
const {
|
|
4321
|
+
className,
|
|
4322
|
+
render,
|
|
4323
|
+
...elementProps
|
|
4324
|
+
} = componentProps;
|
|
4325
|
+
const {
|
|
4326
|
+
store
|
|
4327
|
+
} = SelectGroupLabel.useSelectRootContext();
|
|
4328
|
+
const open = InternalBackdrop.useStore(store, SelectGroupLabel.selectors.open);
|
|
4329
|
+
const state = {
|
|
4330
|
+
open
|
|
4331
|
+
};
|
|
4332
|
+
const element = useRenderElement.useRenderElement('span', componentProps, {
|
|
4333
|
+
state,
|
|
4334
|
+
ref: forwardedRef,
|
|
4335
|
+
props: [{
|
|
4336
|
+
'aria-hidden': true,
|
|
4337
|
+
children: '▼'
|
|
4338
|
+
}, elementProps],
|
|
4339
|
+
stateAttributesMapping: InternalBackdrop.triggerOpenStateMapping
|
|
4340
|
+
});
|
|
4341
|
+
return element;
|
|
4342
|
+
});
|
|
4343
|
+
if (process.env.NODE_ENV !== "production") SelectIcon.displayName = "SelectIcon";
|
|
4344
|
+
|
|
4345
|
+
const stateAttributesMapping$1 = {
|
|
4346
|
+
...InternalBackdrop.popupStateMapping,
|
|
4347
|
+
...useButton.transitionStatusMapping
|
|
4348
|
+
};
|
|
4349
|
+
|
|
4350
|
+
/**
|
|
4351
|
+
* An overlay displayed beneath the menu popup.
|
|
4352
|
+
* Renders a `<div>` element.
|
|
4353
|
+
*
|
|
4354
|
+
* Documentation: [Base UI Select](https://base-ui.com/react/components/select)
|
|
4355
|
+
*/
|
|
4356
|
+
const SelectBackdrop = /*#__PURE__*/React__namespace.forwardRef(function SelectBackdrop(componentProps, forwardedRef) {
|
|
4357
|
+
const {
|
|
4358
|
+
className,
|
|
4359
|
+
render,
|
|
4360
|
+
...elementProps
|
|
4361
|
+
} = componentProps;
|
|
4362
|
+
const {
|
|
4363
|
+
store
|
|
4364
|
+
} = SelectGroupLabel.useSelectRootContext();
|
|
4365
|
+
const open = InternalBackdrop.useStore(store, SelectGroupLabel.selectors.open);
|
|
4366
|
+
const mounted = InternalBackdrop.useStore(store, SelectGroupLabel.selectors.mounted);
|
|
4367
|
+
const transitionStatus = InternalBackdrop.useStore(store, SelectGroupLabel.selectors.transitionStatus);
|
|
4368
|
+
const state = {
|
|
4369
|
+
open,
|
|
4370
|
+
transitionStatus
|
|
4371
|
+
};
|
|
4372
|
+
const element = useRenderElement.useRenderElement('div', componentProps, {
|
|
4373
|
+
state,
|
|
4374
|
+
ref: forwardedRef,
|
|
4375
|
+
props: [{
|
|
4376
|
+
role: 'presentation',
|
|
4377
|
+
hidden: !mounted,
|
|
4378
|
+
style: {
|
|
4379
|
+
userSelect: 'none',
|
|
4380
|
+
WebkitUserSelect: 'none'
|
|
4381
|
+
}
|
|
4382
|
+
}, elementProps],
|
|
4383
|
+
stateAttributesMapping: stateAttributesMapping$1
|
|
4384
|
+
});
|
|
4385
|
+
return element;
|
|
4386
|
+
});
|
|
4387
|
+
if (process.env.NODE_ENV !== "production") SelectBackdrop.displayName = "SelectBackdrop";
|
|
4388
|
+
|
|
4389
|
+
const stateAttributesMapping = {
|
|
4390
|
+
...InternalBackdrop.popupStateMapping,
|
|
4391
|
+
...useButton.transitionStatusMapping
|
|
4392
|
+
};
|
|
4393
|
+
|
|
4394
|
+
/**
|
|
4395
|
+
* Displays an element positioned against the select popup anchor.
|
|
4396
|
+
* Renders a `<div>` element.
|
|
4397
|
+
*
|
|
4398
|
+
* Documentation: [Base UI Select](https://base-ui.com/react/components/select)
|
|
4399
|
+
*/
|
|
4400
|
+
const SelectArrow = /*#__PURE__*/React__namespace.forwardRef(function SelectArrow(componentProps, forwardedRef) {
|
|
4401
|
+
const {
|
|
4402
|
+
className,
|
|
4403
|
+
render,
|
|
4404
|
+
...elementProps
|
|
4405
|
+
} = componentProps;
|
|
4406
|
+
const {
|
|
4407
|
+
store
|
|
4408
|
+
} = SelectGroupLabel.useSelectRootContext();
|
|
4409
|
+
const {
|
|
4410
|
+
side,
|
|
4411
|
+
align,
|
|
4412
|
+
arrowRef,
|
|
4413
|
+
arrowStyles,
|
|
4414
|
+
arrowUncentered,
|
|
4415
|
+
alignItemWithTriggerActive
|
|
4416
|
+
} = SelectGroupLabel.useSelectPositionerContext();
|
|
4417
|
+
const open = InternalBackdrop.useStore(store, SelectGroupLabel.selectors.open, true);
|
|
4418
|
+
const state = {
|
|
4419
|
+
open,
|
|
4420
|
+
side,
|
|
4421
|
+
align,
|
|
4422
|
+
uncentered: arrowUncentered
|
|
4423
|
+
};
|
|
4424
|
+
const element = useRenderElement.useRenderElement('div', componentProps, {
|
|
4425
|
+
state,
|
|
4426
|
+
ref: [arrowRef, forwardedRef],
|
|
4427
|
+
props: [{
|
|
4428
|
+
style: arrowStyles,
|
|
4429
|
+
'aria-hidden': true
|
|
4430
|
+
}, elementProps],
|
|
4431
|
+
stateAttributesMapping
|
|
4432
|
+
});
|
|
4433
|
+
if (alignItemWithTriggerActive) {
|
|
4434
|
+
return null;
|
|
4435
|
+
}
|
|
4436
|
+
return element;
|
|
4437
|
+
});
|
|
4438
|
+
if (process.env.NODE_ENV !== "production") SelectArrow.displayName = "SelectArrow";
|
|
4439
|
+
|
|
4440
|
+
/**
|
|
4441
|
+
* @internal
|
|
4442
|
+
*/
|
|
4443
|
+
const SelectScrollArrow = /*#__PURE__*/React__namespace.forwardRef(function SelectScrollArrow(componentProps, forwardedRef) {
|
|
4444
|
+
const {
|
|
4445
|
+
render,
|
|
4446
|
+
className,
|
|
4447
|
+
direction,
|
|
4448
|
+
keepMounted = false,
|
|
4449
|
+
...elementProps
|
|
4450
|
+
} = componentProps;
|
|
4451
|
+
const {
|
|
4452
|
+
store,
|
|
4453
|
+
popupRef,
|
|
4454
|
+
listRef,
|
|
4455
|
+
handleScrollArrowVisibility,
|
|
4456
|
+
scrollArrowsMountedCountRef
|
|
4457
|
+
} = SelectGroupLabel.useSelectRootContext();
|
|
4458
|
+
const {
|
|
4459
|
+
side,
|
|
4460
|
+
scrollDownArrowRef,
|
|
4461
|
+
scrollUpArrowRef
|
|
4462
|
+
} = SelectGroupLabel.useSelectPositionerContext();
|
|
4463
|
+
const visibleSelector = direction === 'up' ? SelectGroupLabel.selectors.scrollUpArrowVisible : SelectGroupLabel.selectors.scrollDownArrowVisible;
|
|
4464
|
+
const stateVisible = InternalBackdrop.useStore(store, visibleSelector);
|
|
4465
|
+
const openMethod = InternalBackdrop.useStore(store, SelectGroupLabel.selectors.openMethod);
|
|
4466
|
+
|
|
4467
|
+
// Scroll arrows are disabled for touch modality as they are a hover-only element.
|
|
4468
|
+
const visible = stateVisible && openMethod !== 'touch';
|
|
4469
|
+
const timeout = useButton.useTimeout();
|
|
4470
|
+
const scrollArrowRef = direction === 'up' ? scrollUpArrowRef : scrollDownArrowRef;
|
|
4471
|
+
const {
|
|
4472
|
+
transitionStatus,
|
|
4473
|
+
setMounted
|
|
4474
|
+
} = useButton.useTransitionStatus(visible);
|
|
4475
|
+
useButton.useIsoLayoutEffect(() => {
|
|
4476
|
+
scrollArrowsMountedCountRef.current += 1;
|
|
4477
|
+
if (!store.state.hasScrollArrows) {
|
|
4478
|
+
store.set('hasScrollArrows', true);
|
|
4479
|
+
}
|
|
4480
|
+
return () => {
|
|
4481
|
+
scrollArrowsMountedCountRef.current = Math.max(0, scrollArrowsMountedCountRef.current - 1);
|
|
4482
|
+
if (scrollArrowsMountedCountRef.current === 0 && store.state.hasScrollArrows) {
|
|
4483
|
+
store.set('hasScrollArrows', false);
|
|
4484
|
+
}
|
|
4485
|
+
};
|
|
4486
|
+
}, [store, scrollArrowsMountedCountRef]);
|
|
4487
|
+
useButton.useOpenChangeComplete({
|
|
4488
|
+
open: visible,
|
|
4489
|
+
ref: scrollArrowRef,
|
|
4490
|
+
onComplete() {
|
|
4491
|
+
if (!visible) {
|
|
4492
|
+
setMounted(false);
|
|
4493
|
+
}
|
|
4494
|
+
}
|
|
4495
|
+
});
|
|
4496
|
+
const state = {
|
|
4497
|
+
direction,
|
|
4498
|
+
visible,
|
|
4499
|
+
side,
|
|
4500
|
+
transitionStatus
|
|
4501
|
+
};
|
|
4502
|
+
const defaultProps = {
|
|
4503
|
+
'aria-hidden': true,
|
|
4504
|
+
children: direction === 'up' ? '▲' : '▼',
|
|
4505
|
+
style: {
|
|
4506
|
+
position: 'absolute'
|
|
4507
|
+
},
|
|
4508
|
+
onMouseMove(event) {
|
|
4509
|
+
if (event.movementX === 0 && event.movementY === 0 || timeout.isStarted()) {
|
|
4510
|
+
return;
|
|
4511
|
+
}
|
|
4512
|
+
store.set('activeIndex', null);
|
|
4513
|
+
function scrollNextItem() {
|
|
4514
|
+
const scroller = store.state.listElement ?? popupRef.current;
|
|
4515
|
+
if (!scroller) {
|
|
4516
|
+
return;
|
|
4517
|
+
}
|
|
4518
|
+
store.set('activeIndex', null);
|
|
4519
|
+
handleScrollArrowVisibility();
|
|
4520
|
+
const isScrolledToTop = scroller.scrollTop === 0;
|
|
4521
|
+
const isScrolledToBottom = Math.round(scroller.scrollTop + scroller.clientHeight) >= scroller.scrollHeight;
|
|
4522
|
+
const list = listRef.current;
|
|
4523
|
+
|
|
4524
|
+
// Fallback when there are no items registered yet.
|
|
4525
|
+
if (list.length === 0) {
|
|
4526
|
+
if (direction === 'up') {
|
|
4527
|
+
store.set('scrollUpArrowVisible', !isScrolledToTop);
|
|
4528
|
+
} else {
|
|
4529
|
+
store.set('scrollDownArrowVisible', !isScrolledToBottom);
|
|
4530
|
+
}
|
|
4531
|
+
}
|
|
4532
|
+
if (direction === 'up' && isScrolledToTop || direction === 'down' && isScrolledToBottom) {
|
|
4533
|
+
timeout.clear();
|
|
4534
|
+
return;
|
|
4535
|
+
}
|
|
4536
|
+
if ((store.state.listElement || popupRef.current) && listRef.current && listRef.current.length > 0) {
|
|
4537
|
+
const items = listRef.current;
|
|
4538
|
+
const scrollArrowHeight = scrollArrowRef.current?.offsetHeight || 0;
|
|
4539
|
+
if (direction === 'up') {
|
|
4540
|
+
let firstVisibleIndex = 0;
|
|
4541
|
+
const scrollTop = scroller.scrollTop + scrollArrowHeight;
|
|
4542
|
+
for (let i = 0; i < items.length; i += 1) {
|
|
4543
|
+
const item = items[i];
|
|
4544
|
+
if (item) {
|
|
4545
|
+
const itemTop = item.offsetTop;
|
|
4546
|
+
if (itemTop >= scrollTop) {
|
|
4547
|
+
firstVisibleIndex = i;
|
|
4548
|
+
break;
|
|
4549
|
+
}
|
|
4550
|
+
}
|
|
4551
|
+
}
|
|
4552
|
+
const targetIndex = Math.max(0, firstVisibleIndex - 1);
|
|
4553
|
+
if (targetIndex < firstVisibleIndex) {
|
|
4554
|
+
const targetItem = items[targetIndex];
|
|
4555
|
+
if (targetItem) {
|
|
4556
|
+
scroller.scrollTop = Math.max(0, targetItem.offsetTop - scrollArrowHeight);
|
|
4557
|
+
}
|
|
4558
|
+
} else {
|
|
4559
|
+
// Already at the first item; ensure we reach the absolute top to account for group labels.
|
|
4560
|
+
scroller.scrollTop = 0;
|
|
4561
|
+
}
|
|
4562
|
+
} else {
|
|
4563
|
+
let lastVisibleIndex = items.length - 1;
|
|
4564
|
+
const scrollBottom = scroller.scrollTop + scroller.clientHeight - scrollArrowHeight;
|
|
4565
|
+
for (let i = 0; i < items.length; i += 1) {
|
|
4566
|
+
const item = items[i];
|
|
4567
|
+
if (item) {
|
|
4568
|
+
const itemBottom = item.offsetTop + item.offsetHeight;
|
|
4569
|
+
if (itemBottom > scrollBottom) {
|
|
4570
|
+
lastVisibleIndex = Math.max(0, i - 1);
|
|
4571
|
+
break;
|
|
4572
|
+
}
|
|
4573
|
+
}
|
|
4574
|
+
}
|
|
4575
|
+
const targetIndex = Math.min(items.length - 1, lastVisibleIndex + 1);
|
|
4576
|
+
if (targetIndex > lastVisibleIndex) {
|
|
4577
|
+
const targetItem = items[targetIndex];
|
|
4578
|
+
if (targetItem) {
|
|
4579
|
+
scroller.scrollTop = targetItem.offsetTop + targetItem.offsetHeight - scroller.clientHeight + scrollArrowHeight;
|
|
4580
|
+
}
|
|
4581
|
+
} else {
|
|
4582
|
+
// Already at the last item; ensure we reach the true bottom.
|
|
4583
|
+
scroller.scrollTop = scroller.scrollHeight - scroller.clientHeight;
|
|
4584
|
+
}
|
|
4585
|
+
}
|
|
4586
|
+
}
|
|
4587
|
+
timeout.start(40, scrollNextItem);
|
|
4588
|
+
}
|
|
4589
|
+
timeout.start(40, scrollNextItem);
|
|
4590
|
+
},
|
|
4591
|
+
onMouseLeave() {
|
|
4592
|
+
timeout.clear();
|
|
4593
|
+
}
|
|
4594
|
+
};
|
|
4595
|
+
const element = useRenderElement.useRenderElement('div', componentProps, {
|
|
4596
|
+
ref: [forwardedRef, scrollArrowRef],
|
|
4597
|
+
state,
|
|
4598
|
+
props: [defaultProps, elementProps]
|
|
4599
|
+
});
|
|
4600
|
+
const shouldRender = visible || keepMounted;
|
|
4601
|
+
if (!shouldRender) {
|
|
4602
|
+
return null;
|
|
4603
|
+
}
|
|
4604
|
+
return element;
|
|
4605
|
+
});
|
|
4606
|
+
if (process.env.NODE_ENV !== "production") SelectScrollArrow.displayName = "SelectScrollArrow";
|
|
4607
|
+
|
|
4608
|
+
/**
|
|
4609
|
+
* An element that scrolls the select popup down when hovered. Does not render when using touch input.
|
|
4610
|
+
* Renders a `<div>` element.
|
|
4611
|
+
*
|
|
4612
|
+
* Documentation: [Base UI Select](https://base-ui.com/react/components/select)
|
|
4613
|
+
*/
|
|
4614
|
+
const SelectScrollDownArrow = /*#__PURE__*/React__namespace.forwardRef(function SelectScrollDownArrow(props, forwardedRef) {
|
|
4615
|
+
return /*#__PURE__*/jsxRuntime.jsx(SelectScrollArrow, {
|
|
4616
|
+
...props,
|
|
4617
|
+
ref: forwardedRef,
|
|
4618
|
+
direction: "down"
|
|
4619
|
+
});
|
|
4620
|
+
});
|
|
4621
|
+
if (process.env.NODE_ENV !== "production") SelectScrollDownArrow.displayName = "SelectScrollDownArrow";
|
|
4622
|
+
|
|
4623
|
+
/**
|
|
4624
|
+
* An element that scrolls the select popup up when hovered. Does not render when using touch input.
|
|
4625
|
+
* Renders a `<div>` element.
|
|
4626
|
+
*
|
|
4627
|
+
* Documentation: [Base UI Select](https://base-ui.com/react/components/select)
|
|
4628
|
+
*/
|
|
4629
|
+
const SelectScrollUpArrow = /*#__PURE__*/React__namespace.forwardRef(function SelectScrollUpArrow(props, forwardedRef) {
|
|
4630
|
+
return /*#__PURE__*/jsxRuntime.jsx(SelectScrollArrow, {
|
|
4631
|
+
...props,
|
|
4632
|
+
ref: forwardedRef,
|
|
4633
|
+
direction: "up"
|
|
4634
|
+
});
|
|
4635
|
+
});
|
|
4636
|
+
if (process.env.NODE_ENV !== "production") SelectScrollUpArrow.displayName = "SelectScrollUpArrow";
|
|
4637
|
+
|
|
4638
|
+
var index_parts = /*#__PURE__*/Object.freeze({
|
|
4639
|
+
__proto__: null,
|
|
4640
|
+
Arrow: SelectArrow,
|
|
4641
|
+
Backdrop: SelectBackdrop,
|
|
4642
|
+
Group: SelectGroupLabel.SelectGroup,
|
|
4643
|
+
GroupLabel: SelectGroupLabel.SelectGroupLabel,
|
|
4644
|
+
Icon: SelectIcon,
|
|
4645
|
+
Item: SelectGroupLabel.SelectItem,
|
|
4646
|
+
ItemIndicator: SelectGroupLabel.SelectItemIndicator,
|
|
4647
|
+
ItemText: SelectGroupLabel.SelectItemText,
|
|
4648
|
+
Label: SelectLabel,
|
|
4649
|
+
List: SelectGroupLabel.SelectList,
|
|
4650
|
+
Popup: SelectGroupLabel.SelectPopup,
|
|
4651
|
+
Portal: SelectGroupLabel.SelectPortal,
|
|
4652
|
+
Positioner: SelectGroupLabel.SelectPositioner,
|
|
4653
|
+
Root: SelectGroupLabel.SelectRoot,
|
|
4654
|
+
ScrollDownArrow: SelectScrollDownArrow,
|
|
4655
|
+
ScrollUpArrow: SelectScrollUpArrow,
|
|
4656
|
+
Separator: Separator.Separator,
|
|
4657
|
+
Trigger: SelectGroupLabel.SelectTrigger,
|
|
4658
|
+
Value: SelectGroupLabel.SelectValue
|
|
4659
|
+
});
|
|
4660
|
+
|
|
4488
4661
|
/**
|
|
4489
4662
|
* Renders a Base UI element.
|
|
4490
4663
|
*
|
|
@@ -4495,10 +4668,12 @@ function useRender(params) {
|
|
|
4495
4668
|
}
|
|
4496
4669
|
|
|
4497
4670
|
exports.Separator = Separator.Separator;
|
|
4498
|
-
exports.Autocomplete = index_parts$
|
|
4499
|
-
exports.Combobox = index_parts$
|
|
4500
|
-
exports.
|
|
4501
|
-
exports.
|
|
4502
|
-
exports.
|
|
4503
|
-
exports.
|
|
4671
|
+
exports.Autocomplete = index_parts$7;
|
|
4672
|
+
exports.Combobox = index_parts$2;
|
|
4673
|
+
exports.Dialog = index_parts$6;
|
|
4674
|
+
exports.Drawer = index_parts$5;
|
|
4675
|
+
exports.Menu = index_parts$4;
|
|
4676
|
+
exports.NumberField = index_parts$1;
|
|
4677
|
+
exports.ScrollArea = index_parts$3;
|
|
4678
|
+
exports.Select = index_parts;
|
|
4504
4679
|
exports.useRender = useRender;
|