@huin-core/react-select 1.0.4 → 1.0.7
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.mts +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.js +298 -323
- package/dist/index.js.map +3 -3
- package/dist/index.mjs +298 -323
- package/dist/index.mjs.map +3 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -64,7 +64,6 @@ var import_react_popper = require("@huin-core/react-popper");
|
|
|
64
64
|
var import_react_use_controllable_state = require("@huin-core/react-use-controllable-state");
|
|
65
65
|
var import_react_use_previous = require("@huin-core/react-use-previous");
|
|
66
66
|
var import_react_visually_hidden = require("@huin-core/react-visually-hidden");
|
|
67
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
|
68
67
|
var SELECT_NAME = "Select";
|
|
69
68
|
var [Collection, useCollection, createCollectionScope] = (0, import_react_collection.createCollection)(SELECT_NAME);
|
|
70
69
|
var [createSelectContext, createSelectScope] = (0, import_react_context.createContextScope)(
|
|
@@ -115,7 +114,7 @@ var Select = (props) => {
|
|
|
115
114
|
/* @__PURE__ */ new Set()
|
|
116
115
|
);
|
|
117
116
|
const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(";");
|
|
118
|
-
return /* @__PURE__ */
|
|
117
|
+
return /* @__PURE__ */ React.createElement(PopperPrimitive.Root, { ...popperScope }, /* @__PURE__ */ React.createElement(
|
|
119
118
|
SelectProvider,
|
|
120
119
|
{
|
|
121
120
|
required,
|
|
@@ -133,46 +132,42 @@ var Select = (props) => {
|
|
|
133
132
|
onOpenChange: setOpen,
|
|
134
133
|
dir: direction,
|
|
135
134
|
triggerPointerDownPosRef,
|
|
136
|
-
disabled
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
) : null
|
|
173
|
-
]
|
|
174
|
-
}
|
|
175
|
-
) });
|
|
135
|
+
disabled
|
|
136
|
+
},
|
|
137
|
+
/* @__PURE__ */ React.createElement(Collection.Provider, { scope: __scopeSelect }, /* @__PURE__ */ React.createElement(
|
|
138
|
+
SelectNativeOptionsProvider,
|
|
139
|
+
{
|
|
140
|
+
scope: props.__scopeSelect,
|
|
141
|
+
onNativeOptionAdd: React.useCallback((option) => {
|
|
142
|
+
setNativeOptionsSet((prev) => new Set(prev).add(option));
|
|
143
|
+
}, []),
|
|
144
|
+
onNativeOptionRemove: React.useCallback((option) => {
|
|
145
|
+
setNativeOptionsSet((prev) => {
|
|
146
|
+
const optionsSet = new Set(prev);
|
|
147
|
+
optionsSet.delete(option);
|
|
148
|
+
return optionsSet;
|
|
149
|
+
});
|
|
150
|
+
}, [])
|
|
151
|
+
},
|
|
152
|
+
children
|
|
153
|
+
)),
|
|
154
|
+
isFormControl ? /* @__PURE__ */ React.createElement(
|
|
155
|
+
BubbleSelect,
|
|
156
|
+
{
|
|
157
|
+
key: nativeSelectKey,
|
|
158
|
+
"aria-hidden": true,
|
|
159
|
+
required,
|
|
160
|
+
tabIndex: -1,
|
|
161
|
+
name,
|
|
162
|
+
autoComplete,
|
|
163
|
+
value,
|
|
164
|
+
onChange: (event) => setValue(event.target.value),
|
|
165
|
+
disabled
|
|
166
|
+
},
|
|
167
|
+
value === void 0 ? /* @__PURE__ */ React.createElement("option", { value: "" }) : null,
|
|
168
|
+
Array.from(nativeOptionsSet)
|
|
169
|
+
) : null
|
|
170
|
+
));
|
|
176
171
|
};
|
|
177
172
|
Select.displayName = SELECT_NAME;
|
|
178
173
|
var BubbleSelect = React.forwardRef((props, forwardedRef) => {
|
|
@@ -194,7 +189,7 @@ var BubbleSelect = React.forwardRef((props, forwardedRef) => {
|
|
|
194
189
|
select.dispatchEvent(event);
|
|
195
190
|
}
|
|
196
191
|
}, [prevValue, value]);
|
|
197
|
-
return /* @__PURE__ */
|
|
192
|
+
return /* @__PURE__ */ React.createElement(import_react_visually_hidden.VisuallyHidden, { asChild: true }, /* @__PURE__ */ React.createElement("select", { ...selectProps, ref: composedRefs, defaultValue: value }));
|
|
198
193
|
});
|
|
199
194
|
BubbleSelect.displayName = "BubbleSelect";
|
|
200
195
|
var Root2 = Select;
|
|
@@ -215,7 +210,6 @@ var import_react = __toESM(require("react"));
|
|
|
215
210
|
var import_react_primitive = require("@huin-core/react-primitive");
|
|
216
211
|
var import_react_compose_refs2 = require("@huin-core/react-compose-refs");
|
|
217
212
|
var import_primitive = require("@huin-core/primitive");
|
|
218
|
-
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
219
213
|
var CONTENT_NAME = "SelectContent";
|
|
220
214
|
var [SelectViewportProvider, useSelectViewportContext] = createSelectContext(CONTENT_NAME, {});
|
|
221
215
|
var VIEWPORT_NAME = "SelectViewport";
|
|
@@ -231,64 +225,61 @@ var SelectViewport = import_react.default.forwardRef((props, forwardedRef) => {
|
|
|
231
225
|
contentContext.onViewportChange
|
|
232
226
|
);
|
|
233
227
|
const prevScrollTopRef = import_react.default.useRef(0);
|
|
234
|
-
return /* @__PURE__ */
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
{
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
const
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
const
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;
|
|
282
|
-
contentWrapper.style.justifyContent = "flex-end";
|
|
283
|
-
}
|
|
228
|
+
return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(
|
|
229
|
+
"style",
|
|
230
|
+
{
|
|
231
|
+
dangerouslySetInnerHTML: {
|
|
232
|
+
__html: `[data-huin-core-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-huin-core-select-viewport]::-webkit-scrollbar{display:none}`
|
|
233
|
+
},
|
|
234
|
+
nonce
|
|
235
|
+
}
|
|
236
|
+
), /* @__PURE__ */ import_react.default.createElement(Collection.Slot, { scope: __scopeSelect }, /* @__PURE__ */ import_react.default.createElement(
|
|
237
|
+
import_react_primitive.Primitive.div,
|
|
238
|
+
{
|
|
239
|
+
"data-huin-core-select-viewport": "",
|
|
240
|
+
role: "presentation",
|
|
241
|
+
...viewportProps,
|
|
242
|
+
ref: composedRefs,
|
|
243
|
+
style: {
|
|
244
|
+
// we use position: 'relative' here on the `viewport` so that when we call
|
|
245
|
+
// `selectedItem.offsetTop` in calculations, the offset is relative to the viewport
|
|
246
|
+
// (independent of the scrollUpButton).
|
|
247
|
+
position: "relative",
|
|
248
|
+
flex: 1,
|
|
249
|
+
overflow: "auto",
|
|
250
|
+
...viewportProps.style
|
|
251
|
+
},
|
|
252
|
+
onScroll: (0, import_primitive.composeEventHandlers)(viewportProps.onScroll, (event) => {
|
|
253
|
+
const viewport = event.currentTarget;
|
|
254
|
+
const { contentWrapper, shouldExpandOnScrollRef } = viewportContext;
|
|
255
|
+
if (shouldExpandOnScrollRef?.current && contentWrapper) {
|
|
256
|
+
const scrolledBy = Math.abs(
|
|
257
|
+
prevScrollTopRef.current - viewport.scrollTop
|
|
258
|
+
);
|
|
259
|
+
if (scrolledBy > 0) {
|
|
260
|
+
const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;
|
|
261
|
+
const cssMinHeight = parseFloat(contentWrapper.style.minHeight);
|
|
262
|
+
const cssHeight = parseFloat(contentWrapper.style.height);
|
|
263
|
+
const prevHeight = Math.max(cssMinHeight, cssHeight);
|
|
264
|
+
if (prevHeight < availableHeight) {
|
|
265
|
+
const nextHeight = prevHeight + scrolledBy;
|
|
266
|
+
const clampedNextHeight = Math.min(
|
|
267
|
+
availableHeight,
|
|
268
|
+
nextHeight
|
|
269
|
+
);
|
|
270
|
+
const heightDiff = nextHeight - clampedNextHeight;
|
|
271
|
+
contentWrapper.style.height = clampedNextHeight + "px";
|
|
272
|
+
if (contentWrapper.style.bottom === "0px") {
|
|
273
|
+
viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;
|
|
274
|
+
contentWrapper.style.justifyContent = "flex-end";
|
|
284
275
|
}
|
|
285
276
|
}
|
|
286
277
|
}
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
|
|
278
|
+
}
|
|
279
|
+
prevScrollTopRef.current = viewport.scrollTop;
|
|
280
|
+
})
|
|
281
|
+
}
|
|
282
|
+
)));
|
|
292
283
|
});
|
|
293
284
|
SelectViewport.displayName = VIEWPORT_NAME;
|
|
294
285
|
|
|
@@ -304,7 +295,6 @@ var import_primitive2 = require("@huin-core/primitive");
|
|
|
304
295
|
var import_number = require("@huin-core/number");
|
|
305
296
|
var PopperPrimitive2 = __toESM(require("@huin-core/react-popper"));
|
|
306
297
|
var import_react_use_callback_ref = require("@huin-core/react-use-callback-ref");
|
|
307
|
-
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
308
298
|
var CONTENT_NAME2 = "SelectContent";
|
|
309
299
|
var SelectContent = import_react2.default.forwardRef(
|
|
310
300
|
(props, forwardedRef) => {
|
|
@@ -316,11 +306,11 @@ var SelectContent = import_react2.default.forwardRef(
|
|
|
316
306
|
if (!context.open) {
|
|
317
307
|
const frag = fragment;
|
|
318
308
|
return frag ? import_react_dom.default.createPortal(
|
|
319
|
-
/* @__PURE__ */
|
|
309
|
+
/* @__PURE__ */ import_react2.default.createElement(SelectContentProvider, { scope: props.__scopeSelect }, /* @__PURE__ */ import_react2.default.createElement(Collection.Slot, { scope: props.__scopeSelect }, /* @__PURE__ */ import_react2.default.createElement("div", null, props.children))),
|
|
320
310
|
frag
|
|
321
311
|
) : null;
|
|
322
312
|
}
|
|
323
|
-
return /* @__PURE__ */
|
|
313
|
+
return /* @__PURE__ */ import_react2.default.createElement(SelectContentImpl, { ...props, ref: forwardedRef });
|
|
324
314
|
}
|
|
325
315
|
);
|
|
326
316
|
SelectContent.displayName = CONTENT_NAME2;
|
|
@@ -491,7 +481,7 @@ var SelectContentImpl = import_react2.default.forwardRef((props, forwardedRef) =
|
|
|
491
481
|
hideWhenDetached,
|
|
492
482
|
avoidCollisions
|
|
493
483
|
} : {};
|
|
494
|
-
return /* @__PURE__ */
|
|
484
|
+
return /* @__PURE__ */ import_react2.default.createElement(
|
|
495
485
|
SelectContentProvider,
|
|
496
486
|
{
|
|
497
487
|
scope: __scopeSelect,
|
|
@@ -506,81 +496,81 @@ var SelectContentImpl = import_react2.default.forwardRef((props, forwardedRef) =
|
|
|
506
496
|
selectedItemText,
|
|
507
497
|
position,
|
|
508
498
|
isPositioned,
|
|
509
|
-
searchRef
|
|
510
|
-
|
|
511
|
-
|
|
499
|
+
searchRef
|
|
500
|
+
},
|
|
501
|
+
/* @__PURE__ */ import_react2.default.createElement(import_react_remove_scroll.RemoveScroll, { as: import_react_slot.Slot, allowPinchZoom: true }, /* @__PURE__ */ import_react2.default.createElement(
|
|
502
|
+
import_react_focus_scope.FocusScope,
|
|
503
|
+
{
|
|
504
|
+
asChild: true,
|
|
505
|
+
trapped: context.open,
|
|
506
|
+
onMountAutoFocus: (event) => {
|
|
507
|
+
event.preventDefault();
|
|
508
|
+
},
|
|
509
|
+
onUnmountAutoFocus: (0, import_primitive2.composeEventHandlers)(
|
|
510
|
+
onCloseAutoFocus,
|
|
511
|
+
(event) => {
|
|
512
|
+
context.trigger?.focus({ preventScroll: true });
|
|
513
|
+
event.preventDefault();
|
|
514
|
+
}
|
|
515
|
+
)
|
|
516
|
+
},
|
|
517
|
+
/* @__PURE__ */ import_react2.default.createElement(
|
|
518
|
+
import_react_dismissable_layer.DismissableLayer,
|
|
512
519
|
{
|
|
513
520
|
asChild: true,
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
(
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
handleTypeaheadSearch(event.key);
|
|
561
|
-
if (["ArrowUp", "ArrowDown", "Home", "End"].includes(event.key)) {
|
|
562
|
-
const items = getItems().filter((item) => !item.disabled);
|
|
563
|
-
let candidateNodes = items.map((item) => item.ref.current);
|
|
564
|
-
if (["ArrowUp", "End"].includes(event.key)) {
|
|
565
|
-
candidateNodes = candidateNodes.slice().reverse();
|
|
566
|
-
}
|
|
567
|
-
if (["ArrowUp", "ArrowDown"].includes(event.key)) {
|
|
568
|
-
const currentElement = event.target;
|
|
569
|
-
const currentIndex = candidateNodes.indexOf(currentElement);
|
|
570
|
-
candidateNodes = candidateNodes.slice(currentIndex + 1);
|
|
571
|
-
}
|
|
572
|
-
setTimeout(() => focusFirst(candidateNodes));
|
|
573
|
-
event.preventDefault();
|
|
574
|
-
}
|
|
575
|
-
}
|
|
576
|
-
)
|
|
521
|
+
disableOutsidePointerEvents: true,
|
|
522
|
+
onEscapeKeyDown,
|
|
523
|
+
onPointerDownOutside,
|
|
524
|
+
onFocusOutside: (event) => event.preventDefault(),
|
|
525
|
+
onDismiss: () => context.onOpenChange(false)
|
|
526
|
+
},
|
|
527
|
+
/* @__PURE__ */ import_react2.default.createElement(
|
|
528
|
+
SelectPosition,
|
|
529
|
+
{
|
|
530
|
+
role: "listbox",
|
|
531
|
+
id: context.contentId,
|
|
532
|
+
"data-state": context.open ? "open" : "closed",
|
|
533
|
+
dir: context.dir,
|
|
534
|
+
onContextMenu: (event) => event.preventDefault(),
|
|
535
|
+
...contentProps,
|
|
536
|
+
...popperContentProps,
|
|
537
|
+
onPlaced: () => setIsPositioned(true),
|
|
538
|
+
ref: composedRefs,
|
|
539
|
+
style: {
|
|
540
|
+
// flex layout so we can place the scroll buttons properly
|
|
541
|
+
display: "flex",
|
|
542
|
+
flexDirection: "column",
|
|
543
|
+
// reset the outline by default as the content MAY get focused
|
|
544
|
+
outline: "none",
|
|
545
|
+
...contentProps.style
|
|
546
|
+
},
|
|
547
|
+
onKeyDown: (0, import_primitive2.composeEventHandlers)(
|
|
548
|
+
contentProps.onKeyDown,
|
|
549
|
+
(event) => {
|
|
550
|
+
const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;
|
|
551
|
+
if (event.key === "Tab") event.preventDefault();
|
|
552
|
+
if (!isModifierKey && event.key.length === 1)
|
|
553
|
+
handleTypeaheadSearch(event.key);
|
|
554
|
+
if (["ArrowUp", "ArrowDown", "Home", "End"].includes(event.key)) {
|
|
555
|
+
const items = getItems().filter((item) => !item.disabled);
|
|
556
|
+
let candidateNodes = items.map((item) => item.ref.current);
|
|
557
|
+
if (["ArrowUp", "End"].includes(event.key)) {
|
|
558
|
+
candidateNodes = candidateNodes.slice().reverse();
|
|
559
|
+
}
|
|
560
|
+
if (["ArrowUp", "ArrowDown"].includes(event.key)) {
|
|
561
|
+
const currentElement = event.target;
|
|
562
|
+
const currentIndex = candidateNodes.indexOf(currentElement);
|
|
563
|
+
candidateNodes = candidateNodes.slice(currentIndex + 1);
|
|
564
|
+
}
|
|
565
|
+
setTimeout(() => focusFirst(candidateNodes));
|
|
566
|
+
event.preventDefault();
|
|
577
567
|
}
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
)
|
|
583
|
-
|
|
568
|
+
}
|
|
569
|
+
)
|
|
570
|
+
}
|
|
571
|
+
)
|
|
572
|
+
)
|
|
573
|
+
))
|
|
584
574
|
);
|
|
585
575
|
});
|
|
586
576
|
SelectContentImpl.displayName = CONTENT_IMPL_NAME;
|
|
@@ -714,41 +704,41 @@ var SelectItemAlignedPosition = import_react2.default.forwardRef((props, forward
|
|
|
714
704
|
},
|
|
715
705
|
[position, focusSelectedItem]
|
|
716
706
|
);
|
|
717
|
-
return /* @__PURE__ */
|
|
707
|
+
return /* @__PURE__ */ import_react2.default.createElement(
|
|
718
708
|
SelectViewportProvider,
|
|
719
709
|
{
|
|
720
710
|
scope: __scopeSelect,
|
|
721
711
|
contentWrapper,
|
|
722
712
|
shouldExpandOnScrollRef,
|
|
723
|
-
onScrollButtonChange: handleScrollButtonChange
|
|
724
|
-
|
|
725
|
-
|
|
713
|
+
onScrollButtonChange: handleScrollButtonChange
|
|
714
|
+
},
|
|
715
|
+
/* @__PURE__ */ import_react2.default.createElement(
|
|
716
|
+
"div",
|
|
717
|
+
{
|
|
718
|
+
ref: setContentWrapper,
|
|
719
|
+
style: {
|
|
720
|
+
display: "flex",
|
|
721
|
+
flexDirection: "column",
|
|
722
|
+
position: "fixed",
|
|
723
|
+
zIndex: contentZIndex
|
|
724
|
+
}
|
|
725
|
+
},
|
|
726
|
+
/* @__PURE__ */ import_react2.default.createElement(
|
|
727
|
+
import_react_primitive2.Primitive.div,
|
|
726
728
|
{
|
|
727
|
-
|
|
729
|
+
...popperProps,
|
|
730
|
+
ref: composedRefs,
|
|
728
731
|
style: {
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
{
|
|
737
|
-
...popperProps,
|
|
738
|
-
ref: composedRefs,
|
|
739
|
-
style: {
|
|
740
|
-
// When we get the height of the content, it includes borders. If we were to set
|
|
741
|
-
// the height without having `boxSizing: 'border-box'` it would be too big.
|
|
742
|
-
boxSizing: "border-box",
|
|
743
|
-
// We need to ensure the content doesn't get taller than the wrapper
|
|
744
|
-
maxHeight: "100%",
|
|
745
|
-
...popperProps.style
|
|
746
|
-
}
|
|
747
|
-
}
|
|
748
|
-
)
|
|
732
|
+
// When we get the height of the content, it includes borders. If we were to set
|
|
733
|
+
// the height without having `boxSizing: 'border-box'` it would be too big.
|
|
734
|
+
boxSizing: "border-box",
|
|
735
|
+
// We need to ensure the content doesn't get taller than the wrapper
|
|
736
|
+
maxHeight: "100%",
|
|
737
|
+
...popperProps.style
|
|
738
|
+
}
|
|
749
739
|
}
|
|
750
740
|
)
|
|
751
|
-
|
|
741
|
+
)
|
|
752
742
|
);
|
|
753
743
|
});
|
|
754
744
|
SelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;
|
|
@@ -761,7 +751,7 @@ var SelectPopperPosition = import_react2.default.forwardRef((props, forwardedRef
|
|
|
761
751
|
...popperProps
|
|
762
752
|
} = props;
|
|
763
753
|
const popperScope = usePopperScope(__scopeSelect);
|
|
764
|
-
return /* @__PURE__ */
|
|
754
|
+
return /* @__PURE__ */ import_react2.default.createElement(
|
|
765
755
|
PopperPrimitive2.Content,
|
|
766
756
|
{
|
|
767
757
|
...popperScope,
|
|
@@ -837,7 +827,6 @@ var import_react3 = __toESM(require("react"));
|
|
|
837
827
|
var import_react_primitive3 = require("@huin-core/react-primitive");
|
|
838
828
|
var import_react_compose_refs4 = require("@huin-core/react-compose-refs");
|
|
839
829
|
var import_react_use_layout_effect2 = require("@huin-core/react-use-layout-effect");
|
|
840
|
-
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
841
830
|
var VALUE_NAME = "SelectValue";
|
|
842
831
|
var SelectValue = import_react3.default.forwardRef(
|
|
843
832
|
(props, forwardedRef) => {
|
|
@@ -852,14 +841,14 @@ var SelectValue = import_react3.default.forwardRef(
|
|
|
852
841
|
(0, import_react_use_layout_effect2.useLayoutEffect)(() => {
|
|
853
842
|
onValueNodeHasChildrenChange(hasChildren);
|
|
854
843
|
}, [onValueNodeHasChildrenChange, hasChildren]);
|
|
855
|
-
return /* @__PURE__ */
|
|
844
|
+
return /* @__PURE__ */ import_react3.default.createElement(
|
|
856
845
|
import_react_primitive3.Primitive.span,
|
|
857
846
|
{
|
|
858
847
|
...valueProps,
|
|
859
848
|
ref: composedRefs,
|
|
860
|
-
style: { pointerEvents: "none" }
|
|
861
|
-
|
|
862
|
-
|
|
849
|
+
style: { pointerEvents: "none" }
|
|
850
|
+
},
|
|
851
|
+
shouldShowPlaceholder(context.value) ? /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, placeholder) : children
|
|
863
852
|
);
|
|
864
853
|
}
|
|
865
854
|
);
|
|
@@ -870,7 +859,6 @@ function shouldShowPlaceholder(value) {
|
|
|
870
859
|
|
|
871
860
|
// packages/react/select/src/SelectTrigger.tsx
|
|
872
861
|
var import_primitive3 = require("@huin-core/primitive");
|
|
873
|
-
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
874
862
|
var OPEN_KEYS = [" ", "Enter", "ArrowUp", "ArrowDown"];
|
|
875
863
|
var TRIGGER_NAME = "SelectTrigger";
|
|
876
864
|
var SelectTrigger = import_react4.default.forwardRef((props, forwardedRef) => {
|
|
@@ -905,7 +893,7 @@ var SelectTrigger = import_react4.default.forwardRef((props, forwardedRef) => {
|
|
|
905
893
|
};
|
|
906
894
|
}
|
|
907
895
|
};
|
|
908
|
-
return /* @__PURE__ */
|
|
896
|
+
return /* @__PURE__ */ import_react4.default.createElement(PopperPrimitive3.Anchor, { asChild: true, ...popperScope }, /* @__PURE__ */ import_react4.default.createElement(
|
|
909
897
|
import_react_primitive4.Primitive.button,
|
|
910
898
|
{
|
|
911
899
|
type: "button",
|
|
@@ -949,44 +937,42 @@ var SelectTrigger = import_react4.default.forwardRef((props, forwardedRef) => {
|
|
|
949
937
|
}
|
|
950
938
|
})
|
|
951
939
|
}
|
|
952
|
-
)
|
|
940
|
+
));
|
|
953
941
|
});
|
|
954
942
|
SelectTrigger.displayName = TRIGGER_NAME;
|
|
955
943
|
|
|
956
944
|
// packages/react/select/src/SelectIcon.tsx
|
|
957
945
|
var import_react5 = __toESM(require("react"));
|
|
958
946
|
var import_react_primitive5 = require("@huin-core/react-primitive");
|
|
959
|
-
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
960
947
|
var ICON_NAME = "SelectIcon";
|
|
961
948
|
var SelectIcon = import_react5.default.forwardRef(
|
|
962
949
|
(props, forwardedRef) => {
|
|
963
950
|
const { __scopeSelect, children, ...iconProps } = props;
|
|
964
|
-
return /* @__PURE__ */
|
|
951
|
+
return /* @__PURE__ */ import_react5.default.createElement(import_react_primitive5.Primitive.span, { "aria-hidden": true, ...iconProps, ref: forwardedRef }, children || "\u25BC");
|
|
965
952
|
}
|
|
966
953
|
);
|
|
967
954
|
SelectIcon.displayName = ICON_NAME;
|
|
968
955
|
|
|
969
956
|
// packages/react/select/src/SelectPortal.tsx
|
|
957
|
+
var import_react6 = __toESM(require("react"));
|
|
970
958
|
var import_react_portal = require("@huin-core/react-portal");
|
|
971
|
-
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
972
959
|
var PORTAL_NAME = "SelectPortal";
|
|
973
960
|
var SelectPortal = (props) => {
|
|
974
|
-
return /* @__PURE__ */
|
|
961
|
+
return /* @__PURE__ */ import_react6.default.createElement(import_react_portal.Portal, { asChild: true, ...props });
|
|
975
962
|
};
|
|
976
963
|
SelectPortal.displayName = PORTAL_NAME;
|
|
977
964
|
|
|
978
965
|
// packages/react/select/src/SelectGroup.tsx
|
|
979
|
-
var
|
|
966
|
+
var import_react7 = __toESM(require("react"));
|
|
980
967
|
var import_react_primitive6 = require("@huin-core/react-primitive");
|
|
981
968
|
var import_react_id2 = require("@huin-core/react-id");
|
|
982
|
-
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
983
969
|
var GROUP_NAME = "SelectGroup";
|
|
984
970
|
var [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME);
|
|
985
|
-
var SelectGroup =
|
|
971
|
+
var SelectGroup = import_react7.default.forwardRef(
|
|
986
972
|
(props, forwardedRef) => {
|
|
987
973
|
const { __scopeSelect, ...groupProps } = props;
|
|
988
974
|
const groupId = (0, import_react_id2.useId)();
|
|
989
|
-
return /* @__PURE__ */
|
|
975
|
+
return /* @__PURE__ */ import_react7.default.createElement(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId }, /* @__PURE__ */ import_react7.default.createElement(
|
|
990
976
|
import_react_primitive6.Primitive.div,
|
|
991
977
|
{
|
|
992
978
|
role: "group",
|
|
@@ -994,36 +980,34 @@ var SelectGroup = import_react6.default.forwardRef(
|
|
|
994
980
|
...groupProps,
|
|
995
981
|
ref: forwardedRef
|
|
996
982
|
}
|
|
997
|
-
)
|
|
983
|
+
));
|
|
998
984
|
}
|
|
999
985
|
);
|
|
1000
986
|
SelectGroup.displayName = GROUP_NAME;
|
|
1001
987
|
|
|
1002
988
|
// packages/react/select/src/SelectLabel.tsx
|
|
1003
|
-
var
|
|
989
|
+
var import_react8 = __toESM(require("react"));
|
|
1004
990
|
var import_react_primitive7 = require("@huin-core/react-primitive");
|
|
1005
|
-
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1006
991
|
var LABEL_NAME = "SelectLabel";
|
|
1007
|
-
var SelectLabel =
|
|
992
|
+
var SelectLabel = import_react8.default.forwardRef(
|
|
1008
993
|
(props, forwardedRef) => {
|
|
1009
994
|
const { __scopeSelect, ...labelProps } = props;
|
|
1010
995
|
const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);
|
|
1011
|
-
return /* @__PURE__ */
|
|
996
|
+
return /* @__PURE__ */ import_react8.default.createElement(import_react_primitive7.Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });
|
|
1012
997
|
}
|
|
1013
998
|
);
|
|
1014
999
|
SelectLabel.displayName = LABEL_NAME;
|
|
1015
1000
|
|
|
1016
1001
|
// packages/react/select/src/SelectItem.tsx
|
|
1017
|
-
var
|
|
1002
|
+
var import_react9 = __toESM(require("react"));
|
|
1018
1003
|
var import_react_primitive8 = require("@huin-core/react-primitive");
|
|
1019
1004
|
var import_react_compose_refs6 = require("@huin-core/react-compose-refs");
|
|
1020
1005
|
var import_react_id3 = require("@huin-core/react-id");
|
|
1021
1006
|
var import_primitive4 = require("@huin-core/primitive");
|
|
1022
|
-
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1023
1007
|
var SELECTION_KEYS = [" ", "Enter"];
|
|
1024
1008
|
var ITEM_NAME = "SelectItem";
|
|
1025
1009
|
var [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME);
|
|
1026
|
-
var SelectItem =
|
|
1010
|
+
var SelectItem = import_react9.default.forwardRef(
|
|
1027
1011
|
(props, forwardedRef) => {
|
|
1028
1012
|
const {
|
|
1029
1013
|
__scopeSelect,
|
|
@@ -1035,14 +1019,14 @@ var SelectItem = import_react8.default.forwardRef(
|
|
|
1035
1019
|
const context = useSelectContext(ITEM_NAME, __scopeSelect);
|
|
1036
1020
|
const contentContext = useSelectContentContext(ITEM_NAME, __scopeSelect);
|
|
1037
1021
|
const isSelected = context.value === value;
|
|
1038
|
-
const [textValue, setTextValue] =
|
|
1039
|
-
const [isFocused, setIsFocused] =
|
|
1022
|
+
const [textValue, setTextValue] = import_react9.default.useState(textValueProp ?? "");
|
|
1023
|
+
const [isFocused, setIsFocused] = import_react9.default.useState(false);
|
|
1040
1024
|
const composedRefs = (0, import_react_compose_refs6.useComposedRefs)(
|
|
1041
1025
|
forwardedRef,
|
|
1042
1026
|
(node) => contentContext.itemRefCallback?.(node, value, disabled)
|
|
1043
1027
|
);
|
|
1044
1028
|
const textId = (0, import_react_id3.useId)();
|
|
1045
|
-
const pointerTypeRef =
|
|
1029
|
+
const pointerTypeRef = import_react9.default.useRef("touch");
|
|
1046
1030
|
const handleSelect = () => {
|
|
1047
1031
|
if (!disabled) {
|
|
1048
1032
|
context.onValueChange(value);
|
|
@@ -1054,7 +1038,7 @@ var SelectItem = import_react8.default.forwardRef(
|
|
|
1054
1038
|
"A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder."
|
|
1055
1039
|
);
|
|
1056
1040
|
}
|
|
1057
|
-
return /* @__PURE__ */
|
|
1041
|
+
return /* @__PURE__ */ import_react9.default.createElement(
|
|
1058
1042
|
SelectItemContextProvider,
|
|
1059
1043
|
{
|
|
1060
1044
|
scope: __scopeSelect,
|
|
@@ -1062,78 +1046,77 @@ var SelectItem = import_react8.default.forwardRef(
|
|
|
1062
1046
|
disabled,
|
|
1063
1047
|
textId,
|
|
1064
1048
|
isSelected,
|
|
1065
|
-
onItemTextChange:
|
|
1049
|
+
onItemTextChange: import_react9.default.useCallback((node) => {
|
|
1066
1050
|
setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? "").trim());
|
|
1067
|
-
}, [])
|
|
1068
|
-
|
|
1069
|
-
|
|
1051
|
+
}, [])
|
|
1052
|
+
},
|
|
1053
|
+
/* @__PURE__ */ import_react9.default.createElement(
|
|
1054
|
+
Collection.ItemSlot,
|
|
1055
|
+
{
|
|
1056
|
+
scope: __scopeSelect,
|
|
1057
|
+
value,
|
|
1058
|
+
disabled,
|
|
1059
|
+
textValue
|
|
1060
|
+
},
|
|
1061
|
+
/* @__PURE__ */ import_react9.default.createElement(
|
|
1062
|
+
import_react_primitive8.Primitive.div,
|
|
1070
1063
|
{
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
}),
|
|
1099
|
-
onPointerMove: (0, import_primitive4.composeEventHandlers)(itemProps.onPointerMove, (event) => {
|
|
1100
|
-
pointerTypeRef.current = event.pointerType;
|
|
1101
|
-
if (disabled) {
|
|
1102
|
-
contentContext.onItemLeave?.();
|
|
1103
|
-
} else if (pointerTypeRef.current === "mouse") {
|
|
1104
|
-
event.currentTarget.focus({ preventScroll: true });
|
|
1105
|
-
}
|
|
1106
|
-
}),
|
|
1107
|
-
onPointerLeave: (0, import_primitive4.composeEventHandlers)(itemProps.onPointerLeave, (event) => {
|
|
1108
|
-
if (event.currentTarget === document.activeElement) {
|
|
1109
|
-
contentContext.onItemLeave?.();
|
|
1110
|
-
}
|
|
1111
|
-
}),
|
|
1112
|
-
onKeyDown: (0, import_primitive4.composeEventHandlers)(itemProps.onKeyDown, (event) => {
|
|
1113
|
-
const isTypingAhead = contentContext.searchRef?.current !== "";
|
|
1114
|
-
if (isTypingAhead && event.key === " ") return;
|
|
1115
|
-
if (SELECTION_KEYS.includes(event.key)) handleSelect();
|
|
1116
|
-
if (event.key === " ") event.preventDefault();
|
|
1117
|
-
})
|
|
1064
|
+
role: "option",
|
|
1065
|
+
"aria-labelledby": textId,
|
|
1066
|
+
"data-highlighted": isFocused ? "" : void 0,
|
|
1067
|
+
"aria-selected": isSelected && isFocused,
|
|
1068
|
+
"data-state": isSelected ? "checked" : "unchecked",
|
|
1069
|
+
"aria-disabled": disabled || void 0,
|
|
1070
|
+
"data-disabled": disabled ? "" : void 0,
|
|
1071
|
+
tabIndex: disabled ? void 0 : -1,
|
|
1072
|
+
...itemProps,
|
|
1073
|
+
ref: composedRefs,
|
|
1074
|
+
onFocus: (0, import_primitive4.composeEventHandlers)(itemProps.onFocus, () => setIsFocused(true)),
|
|
1075
|
+
onBlur: (0, import_primitive4.composeEventHandlers)(itemProps.onBlur, () => setIsFocused(false)),
|
|
1076
|
+
onClick: (0, import_primitive4.composeEventHandlers)(itemProps.onClick, () => {
|
|
1077
|
+
if (pointerTypeRef.current !== "mouse") handleSelect();
|
|
1078
|
+
}),
|
|
1079
|
+
onPointerUp: (0, import_primitive4.composeEventHandlers)(itemProps.onPointerUp, () => {
|
|
1080
|
+
if (pointerTypeRef.current === "mouse") handleSelect();
|
|
1081
|
+
}),
|
|
1082
|
+
onPointerDown: (0, import_primitive4.composeEventHandlers)(itemProps.onPointerDown, (event) => {
|
|
1083
|
+
pointerTypeRef.current = event.pointerType;
|
|
1084
|
+
}),
|
|
1085
|
+
onPointerMove: (0, import_primitive4.composeEventHandlers)(itemProps.onPointerMove, (event) => {
|
|
1086
|
+
pointerTypeRef.current = event.pointerType;
|
|
1087
|
+
if (disabled) {
|
|
1088
|
+
contentContext.onItemLeave?.();
|
|
1089
|
+
} else if (pointerTypeRef.current === "mouse") {
|
|
1090
|
+
event.currentTarget.focus({ preventScroll: true });
|
|
1118
1091
|
}
|
|
1119
|
-
)
|
|
1092
|
+
}),
|
|
1093
|
+
onPointerLeave: (0, import_primitive4.composeEventHandlers)(itemProps.onPointerLeave, (event) => {
|
|
1094
|
+
if (event.currentTarget === document.activeElement) {
|
|
1095
|
+
contentContext.onItemLeave?.();
|
|
1096
|
+
}
|
|
1097
|
+
}),
|
|
1098
|
+
onKeyDown: (0, import_primitive4.composeEventHandlers)(itemProps.onKeyDown, (event) => {
|
|
1099
|
+
const isTypingAhead = contentContext.searchRef?.current !== "";
|
|
1100
|
+
if (isTypingAhead && event.key === " ") return;
|
|
1101
|
+
if (SELECTION_KEYS.includes(event.key)) handleSelect();
|
|
1102
|
+
if (event.key === " ") event.preventDefault();
|
|
1103
|
+
})
|
|
1120
1104
|
}
|
|
1121
1105
|
)
|
|
1122
|
-
|
|
1106
|
+
)
|
|
1123
1107
|
);
|
|
1124
1108
|
}
|
|
1125
1109
|
);
|
|
1126
1110
|
SelectItem.displayName = ITEM_NAME;
|
|
1127
1111
|
|
|
1128
1112
|
// packages/react/select/src/SelectItemText.tsx
|
|
1129
|
-
var
|
|
1113
|
+
var import_react10 = __toESM(require("react"));
|
|
1130
1114
|
var import_react_primitive9 = require("@huin-core/react-primitive");
|
|
1131
1115
|
var import_react_compose_refs7 = require("@huin-core/react-compose-refs");
|
|
1132
1116
|
var import_react_use_layout_effect3 = require("@huin-core/react-use-layout-effect");
|
|
1133
1117
|
var import_react_dom2 = __toESM(require("react-dom"));
|
|
1134
|
-
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1135
1118
|
var ITEM_TEXT_NAME = "SelectItemText";
|
|
1136
|
-
var SelectItemText =
|
|
1119
|
+
var SelectItemText = import_react10.default.forwardRef((props, forwardedRef) => {
|
|
1137
1120
|
const { __scopeSelect, className, style, ...itemTextProps } = props;
|
|
1138
1121
|
const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect);
|
|
1139
1122
|
const contentContext = useSelectContentContext(ITEM_TEXT_NAME, __scopeSelect);
|
|
@@ -1142,7 +1125,7 @@ var SelectItemText = import_react9.default.forwardRef((props, forwardedRef) => {
|
|
|
1142
1125
|
ITEM_TEXT_NAME,
|
|
1143
1126
|
__scopeSelect
|
|
1144
1127
|
);
|
|
1145
|
-
const [itemTextNode, setItemTextNode] =
|
|
1128
|
+
const [itemTextNode, setItemTextNode] = import_react10.default.useState(null);
|
|
1146
1129
|
const composedRefs = (0, import_react_compose_refs7.useComposedRefs)(
|
|
1147
1130
|
forwardedRef,
|
|
1148
1131
|
(node) => setItemTextNode(node),
|
|
@@ -1154,15 +1137,15 @@ var SelectItemText = import_react9.default.forwardRef((props, forwardedRef) => {
|
|
|
1154
1137
|
)
|
|
1155
1138
|
);
|
|
1156
1139
|
const textContent = itemTextNode?.textContent;
|
|
1157
|
-
const nativeOption =
|
|
1158
|
-
() => /* @__PURE__ */
|
|
1140
|
+
const nativeOption = import_react10.default.useMemo(
|
|
1141
|
+
() => /* @__PURE__ */ import_react10.default.createElement(
|
|
1159
1142
|
"option",
|
|
1160
1143
|
{
|
|
1144
|
+
key: itemContext.value,
|
|
1161
1145
|
value: itemContext.value,
|
|
1162
|
-
disabled: itemContext.disabled
|
|
1163
|
-
children: textContent
|
|
1146
|
+
disabled: itemContext.disabled
|
|
1164
1147
|
},
|
|
1165
|
-
|
|
1148
|
+
textContent
|
|
1166
1149
|
),
|
|
1167
1150
|
[itemContext.disabled, itemContext.value, textContent]
|
|
1168
1151
|
);
|
|
@@ -1171,37 +1154,32 @@ var SelectItemText = import_react9.default.forwardRef((props, forwardedRef) => {
|
|
|
1171
1154
|
onNativeOptionAdd(nativeOption);
|
|
1172
1155
|
return () => onNativeOptionRemove(nativeOption);
|
|
1173
1156
|
}, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);
|
|
1174
|
-
return /* @__PURE__ */ (
|
|
1175
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_react_primitive9.Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),
|
|
1176
|
-
itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren ? import_react_dom2.default.createPortal(itemTextProps.children, context.valueNode) : null
|
|
1177
|
-
] });
|
|
1157
|
+
return /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement(import_react_primitive9.Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }), itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren ? import_react_dom2.default.createPortal(itemTextProps.children, context.valueNode) : null);
|
|
1178
1158
|
});
|
|
1179
1159
|
SelectItemText.displayName = ITEM_TEXT_NAME;
|
|
1180
1160
|
|
|
1181
1161
|
// packages/react/select/src/SelectItemIndicator.tsx
|
|
1182
|
-
var
|
|
1162
|
+
var import_react11 = __toESM(require("react"));
|
|
1183
1163
|
var import_react_primitive10 = require("@huin-core/react-primitive");
|
|
1184
|
-
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1185
1164
|
var ITEM_INDICATOR_NAME = "SelectItemIndicator";
|
|
1186
|
-
var SelectItemIndicator =
|
|
1165
|
+
var SelectItemIndicator = import_react11.default.forwardRef((props, forwardedRef) => {
|
|
1187
1166
|
const { __scopeSelect, ...itemIndicatorProps } = props;
|
|
1188
1167
|
const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);
|
|
1189
|
-
return itemContext.isSelected ? /* @__PURE__ */
|
|
1168
|
+
return itemContext.isSelected ? /* @__PURE__ */ import_react11.default.createElement(import_react_primitive10.Primitive.span, { "aria-hidden": true, ...itemIndicatorProps, ref: forwardedRef }) : null;
|
|
1190
1169
|
});
|
|
1191
1170
|
SelectItemIndicator.displayName = ITEM_INDICATOR_NAME;
|
|
1192
1171
|
|
|
1193
1172
|
// packages/react/select/src/SelectScrollUpButton.tsx
|
|
1194
|
-
var
|
|
1173
|
+
var import_react13 = __toESM(require("react"));
|
|
1195
1174
|
|
|
1196
1175
|
// packages/react/select/src/SelectScrollDownButton.tsx
|
|
1197
|
-
var
|
|
1176
|
+
var import_react12 = __toESM(require("react"));
|
|
1198
1177
|
var import_react_compose_refs8 = require("@huin-core/react-compose-refs");
|
|
1199
1178
|
var import_react_use_layout_effect4 = require("@huin-core/react-use-layout-effect");
|
|
1200
1179
|
var import_react_primitive11 = require("@huin-core/react-primitive");
|
|
1201
1180
|
var import_primitive5 = require("@huin-core/primitive");
|
|
1202
|
-
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1203
1181
|
var SCROLL_DOWN_BUTTON_NAME = "SelectScrollDownButton";
|
|
1204
|
-
var SelectScrollDownButton =
|
|
1182
|
+
var SelectScrollDownButton = import_react12.default.forwardRef((props, forwardedRef) => {
|
|
1205
1183
|
const contentContext = useSelectContentContext(
|
|
1206
1184
|
SCROLL_DOWN_BUTTON_NAME,
|
|
1207
1185
|
props.__scopeSelect
|
|
@@ -1210,7 +1188,7 @@ var SelectScrollDownButton = import_react11.default.forwardRef((props, forwarded
|
|
|
1210
1188
|
SCROLL_DOWN_BUTTON_NAME,
|
|
1211
1189
|
props.__scopeSelect
|
|
1212
1190
|
);
|
|
1213
|
-
const [canScrollDown, setCanScrollDown] =
|
|
1191
|
+
const [canScrollDown, setCanScrollDown] = import_react12.default.useState(false);
|
|
1214
1192
|
const composedRefs = (0, import_react_compose_refs8.useComposedRefs)(
|
|
1215
1193
|
forwardedRef,
|
|
1216
1194
|
viewportContext.onScrollButtonChange
|
|
@@ -1229,7 +1207,7 @@ var SelectScrollDownButton = import_react11.default.forwardRef((props, forwarded
|
|
|
1229
1207
|
return () => viewport.removeEventListener("scroll", handleScroll2);
|
|
1230
1208
|
}
|
|
1231
1209
|
}, [contentContext.viewport, contentContext.isPositioned]);
|
|
1232
|
-
return canScrollDown ? /* @__PURE__ */
|
|
1210
|
+
return canScrollDown ? /* @__PURE__ */ import_react12.default.createElement(
|
|
1233
1211
|
SelectScrollButtonImpl,
|
|
1234
1212
|
{
|
|
1235
1213
|
...props,
|
|
@@ -1244,21 +1222,21 @@ var SelectScrollDownButton = import_react11.default.forwardRef((props, forwarded
|
|
|
1244
1222
|
) : null;
|
|
1245
1223
|
});
|
|
1246
1224
|
SelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;
|
|
1247
|
-
var SelectScrollButtonImpl =
|
|
1225
|
+
var SelectScrollButtonImpl = import_react12.default.forwardRef((props, forwardedRef) => {
|
|
1248
1226
|
const { __scopeSelect, onAutoScroll, ...scrollIndicatorProps } = props;
|
|
1249
1227
|
const contentContext = useSelectContentContext(
|
|
1250
1228
|
"SelectScrollButton",
|
|
1251
1229
|
__scopeSelect
|
|
1252
1230
|
);
|
|
1253
|
-
const autoScrollTimerRef =
|
|
1231
|
+
const autoScrollTimerRef = import_react12.default.useRef(null);
|
|
1254
1232
|
const getItems = useCollection(__scopeSelect);
|
|
1255
|
-
const clearAutoScrollTimer =
|
|
1233
|
+
const clearAutoScrollTimer = import_react12.default.useCallback(() => {
|
|
1256
1234
|
if (autoScrollTimerRef.current !== null) {
|
|
1257
1235
|
window.clearInterval(autoScrollTimerRef.current);
|
|
1258
1236
|
autoScrollTimerRef.current = null;
|
|
1259
1237
|
}
|
|
1260
1238
|
}, []);
|
|
1261
|
-
|
|
1239
|
+
import_react12.default.useEffect(() => {
|
|
1262
1240
|
return () => clearAutoScrollTimer();
|
|
1263
1241
|
}, [clearAutoScrollTimer]);
|
|
1264
1242
|
(0, import_react_use_layout_effect4.useLayoutEffect)(() => {
|
|
@@ -1267,7 +1245,7 @@ var SelectScrollButtonImpl = import_react11.default.forwardRef((props, forwarded
|
|
|
1267
1245
|
);
|
|
1268
1246
|
activeItem?.ref.current?.scrollIntoView({ block: "nearest" });
|
|
1269
1247
|
}, [getItems]);
|
|
1270
|
-
return /* @__PURE__ */
|
|
1248
|
+
return /* @__PURE__ */ import_react12.default.createElement(
|
|
1271
1249
|
import_react_primitive11.Primitive.div,
|
|
1272
1250
|
{
|
|
1273
1251
|
"aria-hidden": true,
|
|
@@ -1304,9 +1282,8 @@ var SelectScrollButtonImpl = import_react11.default.forwardRef((props, forwarded
|
|
|
1304
1282
|
// packages/react/select/src/SelectScrollUpButton.tsx
|
|
1305
1283
|
var import_react_compose_refs9 = require("@huin-core/react-compose-refs");
|
|
1306
1284
|
var import_react_use_layout_effect5 = require("@huin-core/react-use-layout-effect");
|
|
1307
|
-
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1308
1285
|
var SCROLL_UP_BUTTON_NAME = "SelectScrollUpButton";
|
|
1309
|
-
var SelectScrollUpButton =
|
|
1286
|
+
var SelectScrollUpButton = import_react13.default.forwardRef((props, forwardedRef) => {
|
|
1310
1287
|
const contentContext = useSelectContentContext(
|
|
1311
1288
|
SCROLL_UP_BUTTON_NAME,
|
|
1312
1289
|
props.__scopeSelect
|
|
@@ -1315,7 +1292,7 @@ var SelectScrollUpButton = import_react12.default.forwardRef((props, forwardedRe
|
|
|
1315
1292
|
SCROLL_UP_BUTTON_NAME,
|
|
1316
1293
|
props.__scopeSelect
|
|
1317
1294
|
);
|
|
1318
|
-
const [canScrollUp, setCanScrollUp] =
|
|
1295
|
+
const [canScrollUp, setCanScrollUp] = import_react13.default.useState(false);
|
|
1319
1296
|
const composedRefs = (0, import_react_compose_refs9.useComposedRefs)(
|
|
1320
1297
|
forwardedRef,
|
|
1321
1298
|
viewportContext.onScrollButtonChange
|
|
@@ -1333,7 +1310,7 @@ var SelectScrollUpButton = import_react12.default.forwardRef((props, forwardedRe
|
|
|
1333
1310
|
return () => viewport.removeEventListener("scroll", handleScroll2);
|
|
1334
1311
|
}
|
|
1335
1312
|
}, [contentContext.viewport, contentContext.isPositioned]);
|
|
1336
|
-
return canScrollUp ? /* @__PURE__ */
|
|
1313
|
+
return canScrollUp ? /* @__PURE__ */ import_react13.default.createElement(
|
|
1337
1314
|
SelectScrollButtonImpl,
|
|
1338
1315
|
{
|
|
1339
1316
|
...props,
|
|
@@ -1350,28 +1327,26 @@ var SelectScrollUpButton = import_react12.default.forwardRef((props, forwardedRe
|
|
|
1350
1327
|
SelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME;
|
|
1351
1328
|
|
|
1352
1329
|
// packages/react/select/src/SelectSeparator.tsx
|
|
1353
|
-
var
|
|
1330
|
+
var import_react14 = __toESM(require("react"));
|
|
1354
1331
|
var import_react_primitive12 = require("@huin-core/react-primitive");
|
|
1355
|
-
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1356
1332
|
var SEPARATOR_NAME = "SelectSeparator";
|
|
1357
|
-
var SelectSeparator =
|
|
1333
|
+
var SelectSeparator = import_react14.default.forwardRef((props, forwardedRef) => {
|
|
1358
1334
|
const { __scopeSelect, ...separatorProps } = props;
|
|
1359
|
-
return /* @__PURE__ */
|
|
1335
|
+
return /* @__PURE__ */ import_react14.default.createElement(import_react_primitive12.Primitive.div, { "aria-hidden": true, ...separatorProps, ref: forwardedRef });
|
|
1360
1336
|
});
|
|
1361
1337
|
SelectSeparator.displayName = SEPARATOR_NAME;
|
|
1362
1338
|
|
|
1363
1339
|
// packages/react/select/src/SelectArrow.tsx
|
|
1364
1340
|
var PopperPrimitive4 = __toESM(require("@huin-core/react-popper"));
|
|
1365
|
-
var
|
|
1366
|
-
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1341
|
+
var import_react15 = __toESM(require("react"));
|
|
1367
1342
|
var ARROW_NAME = "SelectArrow";
|
|
1368
|
-
var SelectArrow =
|
|
1343
|
+
var SelectArrow = import_react15.default.forwardRef(
|
|
1369
1344
|
(props, forwardedRef) => {
|
|
1370
1345
|
const { __scopeSelect, ...arrowProps } = props;
|
|
1371
1346
|
const popperScope = usePopperScope(__scopeSelect);
|
|
1372
1347
|
const context = useSelectContext(ARROW_NAME, __scopeSelect);
|
|
1373
1348
|
const contentContext = useSelectContentContext(ARROW_NAME, __scopeSelect);
|
|
1374
|
-
return context.open && contentContext.position === "popper" ? /* @__PURE__ */
|
|
1349
|
+
return context.open && contentContext.position === "popper" ? /* @__PURE__ */ import_react15.default.createElement(
|
|
1375
1350
|
PopperPrimitive4.Arrow,
|
|
1376
1351
|
{
|
|
1377
1352
|
...popperScope,
|