@juspay/svelte-ui-components 4.26.0 → 4.27.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Select/Select.svelte +144 -6
- package/dist/Select/dropdownPosition.d.ts +10 -2
- package/dist/Select/dropdownPosition.js +29 -4
- package/dist/Select/properties.d.ts +21 -1
- package/dist-wc/index.js +223 -189
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { onMount, tick } from 'svelte';
|
|
3
|
-
import type { SelectItem, SelectProperties } from './properties';
|
|
3
|
+
import type { SelectItem, SelectPlacement, SelectProperties } from './properties';
|
|
4
4
|
import Pill from '../Pill/Pill.svelte';
|
|
5
5
|
import Img from '../Img/Img.svelte';
|
|
6
6
|
import { computeSelectDropdownPosition } from './dropdownPosition';
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
classes,
|
|
34
34
|
open = $bindable(false),
|
|
35
35
|
dropdownAlign = 'left',
|
|
36
|
+
placement,
|
|
36
37
|
hierarchy = 'default',
|
|
37
38
|
leftIcon,
|
|
38
39
|
leftIconTestId,
|
|
@@ -62,6 +63,67 @@
|
|
|
62
63
|
// default. The in-flow panel still honours the CSS var via its margin-top.
|
|
63
64
|
const PORTAL_DROPDOWN_GAP = 4;
|
|
64
65
|
|
|
66
|
+
/** Viewport padding the `'auto'` placement keeps between the panel and the edges. */
|
|
67
|
+
const AUTO_PLACEMENT_VIEWPORT_MARGIN = 8;
|
|
68
|
+
|
|
69
|
+
/* An unset `placement` is the pre-5.0 contract, kept exactly: the in-flow panel
|
|
70
|
+
always opens downward and only the portaled one flips on fit. Setting it opts
|
|
71
|
+
both paths into one resolved corner, which is the whole point of the prop. */
|
|
72
|
+
let placementRequest: SelectPlacement = $derived(
|
|
73
|
+
placement ?? (dropdownAlign === 'right' ? 'bottom-right' : 'bottom-left')
|
|
74
|
+
);
|
|
75
|
+
let placementPinned: boolean = $derived(placement != null);
|
|
76
|
+
|
|
77
|
+
/** Corner an `'auto'` measuring pass settled on; null until it has run. */
|
|
78
|
+
let autoResolved: Exclude<SelectPlacement, 'auto'> | null = $state(null);
|
|
79
|
+
|
|
80
|
+
/* Derived rather than assigned when the dropdown opens: `open` is bindable and
|
|
81
|
+
documented as something a parent can drive, so the panel can be rendered
|
|
82
|
+
without `openDropdown` ever running. Assigning on the click path left an
|
|
83
|
+
explicitly placed Select rendering at the default corner whenever its parent
|
|
84
|
+
opened it. */
|
|
85
|
+
let resolvedPlacement: Exclude<SelectPlacement, 'auto'> = $derived(
|
|
86
|
+
placementRequest === 'auto' ? (autoResolved ?? 'bottom-left') : placementRequest
|
|
87
|
+
);
|
|
88
|
+
/** True while an `'auto'` open measures the hidden panel -- suppresses paint. */
|
|
89
|
+
let measuringPlacement: boolean = $derived(placementRequest === 'auto' && autoResolved === null);
|
|
90
|
+
|
|
91
|
+
/* `$derived.by` rather than `$derived`: a bare expression here is evaluated in
|
|
92
|
+
the declaration's control flow, where TypeScript has `resolvedPlacement`
|
|
93
|
+
still narrowed to its initialiser literal and calls the comparison
|
|
94
|
+
unreachable. The closure resets that narrowing. */
|
|
95
|
+
let placementAlign: 'left' | 'right' = $derived.by(() =>
|
|
96
|
+
resolvedPlacement === 'bottom-right' || resolvedPlacement === 'top-right' ? 'right' : 'left'
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Resolves `'auto'` against live geometry, mirroring Menu's pass: the panel is
|
|
101
|
+
* rendered hidden at the default corner first so it has real dimensions, then
|
|
102
|
+
* flips right/up only where the default overflows and the opposite side fits.
|
|
103
|
+
*/
|
|
104
|
+
function resolveAutoPlacement(panel: HTMLElement): Exclude<SelectPlacement, 'auto'> {
|
|
105
|
+
if (containerEl === null || typeof window === 'undefined') {
|
|
106
|
+
return 'bottom-left';
|
|
107
|
+
}
|
|
108
|
+
const containerRect = containerEl.getBoundingClientRect();
|
|
109
|
+
const panelRect = panel.getBoundingClientRect();
|
|
110
|
+
const viewportWidth = window.innerWidth;
|
|
111
|
+
const viewportHeight = window.innerHeight;
|
|
112
|
+
|
|
113
|
+
const overflowsRight =
|
|
114
|
+
containerRect.left + panelRect.width > viewportWidth - AUTO_PLACEMENT_VIEWPORT_MARGIN;
|
|
115
|
+
const fitsRightAnchored =
|
|
116
|
+
containerRect.right - panelRect.width >= AUTO_PLACEMENT_VIEWPORT_MARGIN;
|
|
117
|
+
const horizontal = overflowsRight && fitsRightAnchored ? 'right' : 'left';
|
|
118
|
+
|
|
119
|
+
const overflowsBottom =
|
|
120
|
+
containerRect.bottom + panelRect.height > viewportHeight - AUTO_PLACEMENT_VIEWPORT_MARGIN;
|
|
121
|
+
const fitsAbove = containerRect.top - panelRect.height >= AUTO_PLACEMENT_VIEWPORT_MARGIN;
|
|
122
|
+
const vertical = overflowsBottom && fitsAbove ? 'top' : 'bottom';
|
|
123
|
+
|
|
124
|
+
return `${vertical}-${horizontal}`;
|
|
125
|
+
}
|
|
126
|
+
|
|
65
127
|
const instanceId = $props.id();
|
|
66
128
|
const listboxId = `select-listbox-${instanceId}`;
|
|
67
129
|
const errorMessageId = `${listboxId}-error`;
|
|
@@ -195,9 +257,9 @@
|
|
|
195
257
|
return { destroy: () => node.remove() };
|
|
196
258
|
};
|
|
197
259
|
|
|
198
|
-
let
|
|
260
|
+
let portalPlacement = $derived.by(() => {
|
|
199
261
|
if (!usePortal || !open || triggerEl === null) {
|
|
200
|
-
return
|
|
262
|
+
return null;
|
|
201
263
|
}
|
|
202
264
|
void portalTick;
|
|
203
265
|
const rect = triggerEl.getBoundingClientRect();
|
|
@@ -215,13 +277,62 @@
|
|
|
215
277
|
},
|
|
216
278
|
dropdown: { width: dropdownWidth, height: dropdownHeight },
|
|
217
279
|
viewport,
|
|
218
|
-
align:
|
|
280
|
+
align: placementAlign,
|
|
281
|
+
/* Unset `placement` keeps the fit-based flip this path always had; a pinned
|
|
282
|
+
corner is honoured on both axes instead. */
|
|
283
|
+
vertical: placementPinned
|
|
284
|
+
? resolvedPlacement === 'top-left' || resolvedPlacement === 'top-right'
|
|
285
|
+
? 'top'
|
|
286
|
+
: 'bottom'
|
|
287
|
+
: 'auto',
|
|
219
288
|
gap: PORTAL_DROPDOWN_GAP
|
|
220
289
|
});
|
|
290
|
+
return placement;
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
let portalStyle: string = $derived.by(() => {
|
|
294
|
+
const placement = portalPlacement;
|
|
295
|
+
if (placement === null) {
|
|
296
|
+
return '';
|
|
297
|
+
}
|
|
221
298
|
const widthRule = placement.width === null ? '' : `width:${placement.width}px;`;
|
|
222
299
|
return `top:${placement.top}px;left:${placement.left}px;min-width:${placement.minWidth}px;${widthRule}`;
|
|
223
300
|
});
|
|
224
301
|
|
|
302
|
+
/* A portaled panel's side comes from the geometry, which still flips on fit
|
|
303
|
+
when `placement` is unset. Reporting the requested corner there would make
|
|
304
|
+
`data-placement` disagree with where the panel actually is -- the exact
|
|
305
|
+
thing the attribute exists to tell a consumer. */
|
|
306
|
+
let effectivePlacement: Exclude<SelectPlacement, 'auto'> = $derived.by(() => {
|
|
307
|
+
const placement = portalPlacement;
|
|
308
|
+
if (placement === null) {
|
|
309
|
+
return resolvedPlacement;
|
|
310
|
+
}
|
|
311
|
+
if (placement.flippedUp) {
|
|
312
|
+
return placementAlign === 'right' ? 'top-right' : 'top-left';
|
|
313
|
+
}
|
|
314
|
+
return placementAlign === 'right' ? 'bottom-right' : 'bottom-left';
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* Svelte action on the panel itself: `openDropdown` is not the only way the
|
|
319
|
+
* panel appears, so the `'auto'` measuring pass is driven by the panel's own
|
|
320
|
+
* lifecycle rather than by the open handler. Resetting on destroy is what
|
|
321
|
+
* makes a reopen re-measure against the trigger's current position.
|
|
322
|
+
*/
|
|
323
|
+
const resolveAutoPlacementOnMount = (node: HTMLElement) => {
|
|
324
|
+
if (placementRequest === 'auto') {
|
|
325
|
+
void tick().then(() => {
|
|
326
|
+
autoResolved = resolveAutoPlacement(node);
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
return {
|
|
330
|
+
destroy: () => {
|
|
331
|
+
autoResolved = null;
|
|
332
|
+
}
|
|
333
|
+
};
|
|
334
|
+
};
|
|
335
|
+
|
|
225
336
|
async function openDropdown(): Promise<void> {
|
|
226
337
|
if (disabled || open) {
|
|
227
338
|
return;
|
|
@@ -792,8 +903,13 @@
|
|
|
792
903
|
the inner element that actually holds the options. -->
|
|
793
904
|
<div
|
|
794
905
|
class="select-dropdown"
|
|
795
|
-
class:select-dropdown-right={
|
|
906
|
+
class:select-dropdown-right={placementAlign === 'right'}
|
|
907
|
+
class:select-dropdown-up={!usePortal &&
|
|
908
|
+
(effectivePlacement === 'top-left' || effectivePlacement === 'top-right')}
|
|
909
|
+
class:select-dropdown-measuring={measuringPlacement}
|
|
796
910
|
class:select-dropdown-portal={usePortal}
|
|
911
|
+
data-placement={effectivePlacement}
|
|
912
|
+
use:resolveAutoPlacementOnMount
|
|
797
913
|
bind:this={dropdownEl}
|
|
798
914
|
bind:clientWidth={dropdownWidth}
|
|
799
915
|
bind:clientHeight={dropdownHeight}
|
|
@@ -841,8 +957,13 @@
|
|
|
841
957
|
{:else}
|
|
842
958
|
<div
|
|
843
959
|
class="select-dropdown"
|
|
844
|
-
class:select-dropdown-right={
|
|
960
|
+
class:select-dropdown-right={placementAlign === 'right'}
|
|
961
|
+
class:select-dropdown-up={!usePortal &&
|
|
962
|
+
(effectivePlacement === 'top-left' || effectivePlacement === 'top-right')}
|
|
963
|
+
class:select-dropdown-measuring={measuringPlacement}
|
|
845
964
|
class:select-dropdown-portal={usePortal}
|
|
965
|
+
data-placement={effectivePlacement}
|
|
966
|
+
use:resolveAutoPlacementOnMount
|
|
846
967
|
bind:this={dropdownEl}
|
|
847
968
|
bind:clientWidth={dropdownWidth}
|
|
848
969
|
bind:clientHeight={dropdownHeight}
|
|
@@ -1045,6 +1166,23 @@
|
|
|
1045
1166
|
height: 100%;
|
|
1046
1167
|
}
|
|
1047
1168
|
|
|
1169
|
+
/* Anchors the in-flow panel above the trigger. `margin-top` is what the
|
|
1170
|
+
downward panel uses for the gap, so it has to be unset here or the panel
|
|
1171
|
+
sits a gap's width too high. */
|
|
1172
|
+
.select-dropdown.select-dropdown-up {
|
|
1173
|
+
top: auto;
|
|
1174
|
+
bottom: 100%;
|
|
1175
|
+
margin-top: 0;
|
|
1176
|
+
margin-bottom: var(--select-dropdown-gap, 4px);
|
|
1177
|
+
}
|
|
1178
|
+
|
|
1179
|
+
/* One-tick measuring pass for placement="auto": the panel needs rendered
|
|
1180
|
+
dimensions before the corner is chosen, without a visible flash at the
|
|
1181
|
+
wrong corner. */
|
|
1182
|
+
.select-dropdown.select-dropdown-measuring {
|
|
1183
|
+
visibility: hidden;
|
|
1184
|
+
}
|
|
1185
|
+
|
|
1048
1186
|
.select-dropdown {
|
|
1049
1187
|
position: absolute;
|
|
1050
1188
|
top: 100%;
|
|
@@ -9,6 +9,12 @@ type Size = {
|
|
|
9
9
|
width: number;
|
|
10
10
|
height: number;
|
|
11
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* Which side of the trigger the panel opens on. `'auto'` picks the side that
|
|
14
|
+
* fits, which is what a portaled Select did before `placement` existed and so
|
|
15
|
+
* stays the default when the option is omitted.
|
|
16
|
+
*/
|
|
17
|
+
export type SelectVerticalPlacement = 'bottom' | 'top' | 'auto';
|
|
12
18
|
export type SelectDropdownPlacement = {
|
|
13
19
|
left: number;
|
|
14
20
|
top: number;
|
|
@@ -28,14 +34,16 @@ export type SelectDropdownPlacement = {
|
|
|
28
34
|
* coordinates for a `position: fixed` panel anchored to `trigger`. Left-aligned
|
|
29
35
|
* panels match the trigger width; right-aligned panels hang leftward from the
|
|
30
36
|
* trigger's right edge using their measured content width. The panel flips above
|
|
31
|
-
* the trigger only when it cannot fit below and there is more room above
|
|
32
|
-
* clamped horizontally to a
|
|
37
|
+
* the trigger only when it cannot fit below and there is more room above — or
|
|
38
|
+
* unconditionally when `vertical` pins a side — and is clamped horizontally to a
|
|
39
|
+
* viewport margin.
|
|
33
40
|
*/
|
|
34
41
|
export declare function computeSelectDropdownPosition(opts: {
|
|
35
42
|
trigger: TriggerRect;
|
|
36
43
|
dropdown: Size;
|
|
37
44
|
viewport: Size;
|
|
38
45
|
align: 'left' | 'right';
|
|
46
|
+
vertical?: SelectVerticalPlacement;
|
|
39
47
|
gap: number;
|
|
40
48
|
margin?: number;
|
|
41
49
|
}): SelectDropdownPlacement;
|
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
* coordinates for a `position: fixed` panel anchored to `trigger`. Left-aligned
|
|
4
4
|
* panels match the trigger width; right-aligned panels hang leftward from the
|
|
5
5
|
* trigger's right edge using their measured content width. The panel flips above
|
|
6
|
-
* the trigger only when it cannot fit below and there is more room above
|
|
7
|
-
* clamped horizontally to a
|
|
6
|
+
* the trigger only when it cannot fit below and there is more room above — or
|
|
7
|
+
* unconditionally when `vertical` pins a side — and is clamped horizontally to a
|
|
8
|
+
* viewport margin.
|
|
8
9
|
*/
|
|
9
10
|
export function computeSelectDropdownPosition(opts) {
|
|
10
11
|
const margin = opts.margin ?? 8;
|
|
12
|
+
const vertical = opts.vertical ?? 'auto';
|
|
11
13
|
const { trigger, dropdown, viewport, align, gap } = opts;
|
|
12
14
|
const minWidth = trigger.width;
|
|
13
15
|
const width = align === 'left' ? trigger.width : null;
|
|
@@ -19,7 +21,30 @@ export function computeSelectDropdownPosition(opts) {
|
|
|
19
21
|
}
|
|
20
22
|
const spaceBelow = viewport.height - trigger.bottom;
|
|
21
23
|
const spaceAbove = trigger.top;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
/* A pinned side is honoured even where the panel will not fit: the caller
|
|
25
|
+
asked for that side, and silently overriding it is the behaviour
|
|
26
|
+
`placement` exists to escape. Only `'auto'` consults the geometry. */
|
|
27
|
+
const fitsBelow = !(dropdown.height > 0 && spaceBelow < dropdown.height + gap);
|
|
28
|
+
const flippedUp = vertical === 'auto' ? !fitsBelow && spaceAbove > spaceBelow : vertical === 'top';
|
|
29
|
+
const unclamped = flippedUp ? trigger.top - gap - dropdown.height : trigger.bottom + gap;
|
|
30
|
+
/* The panel is `position: fixed` when portaled, so whatever a viewport edge
|
|
31
|
+
cuts off cannot be scrolled back into view -- hence clamping at all. The two
|
|
32
|
+
edges are not symmetric, though:
|
|
33
|
+
|
|
34
|
+
The top edge is always held. A negative top is unreachable however the side
|
|
35
|
+
was chosen.
|
|
36
|
+
|
|
37
|
+
The bottom edge is held only for an auto-resolved side. `'auto'` picks the
|
|
38
|
+
side with more room and can still overflow in a short viewport, where
|
|
39
|
+
pulling the panel up is right. A *pinned* side is the caller overriding the
|
|
40
|
+
fit, and dragging it back would park the panel over the very trigger it was
|
|
41
|
+
pinned below -- the silent override `placement` exists to escape. */
|
|
42
|
+
const bottomLimit = viewport.height - dropdown.height - margin;
|
|
43
|
+
const withinViewport = vertical === 'auto' && Number.isFinite(viewport.height)
|
|
44
|
+
? Math.min(unclamped, bottomLimit)
|
|
45
|
+
: unclamped;
|
|
46
|
+
const top = Number.isFinite(viewport.height) && dropdown.height > 0
|
|
47
|
+
? Math.max(margin, withinViewport)
|
|
48
|
+
: unclamped;
|
|
24
49
|
return { left, top, minWidth, width, flippedUp };
|
|
25
50
|
}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import type { Snippet } from 'svelte';
|
|
2
|
+
/**
|
|
3
|
+
* Corner the dropdown anchors to. Mirrors `MenuPlacement` so the two components
|
|
4
|
+
* that open a panel from a trigger describe placement the same way.
|
|
5
|
+
*/
|
|
6
|
+
export type SelectPlacement = 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right' | 'auto';
|
|
2
7
|
export type SelectProperties = MandatorySelectProperties & OptionalSelectProperties & SelectEventProperties;
|
|
3
8
|
export type SelectItem = {
|
|
4
9
|
id: string;
|
|
@@ -103,8 +108,23 @@ export type OptionalSelectProperties = {
|
|
|
103
108
|
classes?: string;
|
|
104
109
|
/** Bindable. Controls whether the dropdown is open; the component writes back on open/close so parents can `bind:open` to observe or drive it. Unbound, the component manages its own state. */
|
|
105
110
|
open?: boolean;
|
|
106
|
-
/**
|
|
111
|
+
/**
|
|
112
|
+
* @deprecated Use `placement`, which controls both axes. `dropdownAlign: 'left'`
|
|
113
|
+
* is `placement: 'bottom-left'` and `'right'` is `'bottom-right'`. Still honoured
|
|
114
|
+
* when `placement` is not set; scheduled for removal in 5.0.0.
|
|
115
|
+
*/
|
|
107
116
|
dropdownAlign?: 'left' | 'right';
|
|
117
|
+
/**
|
|
118
|
+
* Corner the dropdown panel anchors to, matching `Menu`'s prop of the same name.
|
|
119
|
+
* `'auto'` resolves the best-fitting corner against the viewport on open, so a
|
|
120
|
+
* Select sitting just above a sticky footer opens upward instead of into it.
|
|
121
|
+
*
|
|
122
|
+
* Unset is the pre-5.0 contract and is what `dropdownAlign` still drives: the
|
|
123
|
+
* in-flow panel always opens downward, and a portaled one flips up only when it
|
|
124
|
+
* cannot fit below. Setting `placement` opts both paths into the same resolved
|
|
125
|
+
* corner, so an in-flow Select can finally open upward.
|
|
126
|
+
*/
|
|
127
|
+
placement?: SelectPlacement;
|
|
108
128
|
/** Snippet for rendering a compact trigger summary in multiple mode instead of one Pill per selected value. Receives `{ value, items }` so the consumer can compute e.g. "All" / "3 selected". When not provided the default Pill-per-value behaviour is used. */
|
|
109
129
|
triggerSummary?: import('svelte').Snippet<[{
|
|
110
130
|
value: string[];
|
package/dist-wc/index.js
CHANGED
|
@@ -17396,59 +17396,65 @@ customElements.define("sui-scroller", create_custom_element(Scroller_wc, {
|
|
|
17396
17396
|
//#endregion
|
|
17397
17397
|
//#region src/lib/Select/dropdownPosition.ts
|
|
17398
17398
|
function computeSelectDropdownPosition(e) {
|
|
17399
|
-
let t = e.margin ?? 8, { trigger:
|
|
17400
|
-
if (Number.isFinite(
|
|
17401
|
-
let e =
|
|
17402
|
-
|
|
17399
|
+
let t = e.margin ?? 8, n = e.vertical ?? "auto", { trigger: i, dropdown: a, viewport: o, align: s, gap: c } = e, l = i.width, u = s === "left" ? i.width : null, f = Math.max(s === "right" ? a.width : i.width, i.width), p = s === "right" ? i.right - f : i.left;
|
|
17400
|
+
if (Number.isFinite(o.width)) {
|
|
17401
|
+
let e = o.width - f - t;
|
|
17402
|
+
p = Math.max(t, Math.min(p, e));
|
|
17403
17403
|
}
|
|
17404
|
-
let
|
|
17404
|
+
let h = o.height - i.bottom, S = i.top, C = !(a.height > 0 && h < a.height + c), k = n === "auto" ? !C && S > h : n === "top", R = k ? i.top - c - a.height : i.bottom + c, te = o.height - a.height - t, ne = n === "auto" && Number.isFinite(o.height) ? Math.min(R, te) : R, re = Number.isFinite(o.height) && a.height > 0 ? Math.max(t, ne) : R;
|
|
17405
17405
|
return {
|
|
17406
|
-
left:
|
|
17407
|
-
top:
|
|
17408
|
-
minWidth:
|
|
17409
|
-
width:
|
|
17410
|
-
flippedUp:
|
|
17406
|
+
left: p,
|
|
17407
|
+
top: re,
|
|
17408
|
+
minWidth: l,
|
|
17409
|
+
width: u,
|
|
17410
|
+
flippedUp: k
|
|
17411
17411
|
};
|
|
17412
17412
|
}
|
|
17413
17413
|
//#endregion
|
|
17414
17414
|
//#region src/lib/Select/Select.svelte
|
|
17415
17415
|
var root$36 = /* @__PURE__ */ from_html("<div class=\"select-empty svelte-52lifo\">No results</div>"), root_1$33 = /* @__PURE__ */ from_html("<span class=\"select-option-check svelte-52lifo\"></span>"), root_2$26 = /* @__PURE__ */ from_html("<span class=\"select-option-dash svelte-52lifo\"></span>"), root_3$24 = /* @__PURE__ */ from_html("<span aria-hidden=\"true\"><!></span>"), root_4$19 = /* @__PURE__ */ from_html("<div><!> </div>"), root_5$17 = /* @__PURE__ */ from_html("<span class=\"select-option-tick svelte-52lifo\" aria-hidden=\"true\"></span>"), root_6$16 = /* @__PURE__ */ from_html("<div><!> <!> <span class=\"select-option-label svelte-52lifo\"> </span> <!></div>"), root_7$15 = /* @__PURE__ */ from_html("<div class=\"select-bottom-content svelte-52lifo\"><!></div>"), root_8$14 = /* @__PURE__ */ from_html("<!> <!>", 1), root_9$11 = /* @__PURE__ */ from_html("<input type=\"hidden\"/>"), root_10$10 = /* @__PURE__ */ from_html("<input class=\"select-search svelte-52lifo\" type=\"text\" autocomplete=\"off\"/>"), root_11$9 = /* @__PURE__ */ from_html("<span class=\"select-placeholder svelte-52lifo\"> </span>"), root_12$8 = /* @__PURE__ */ from_html("<span> </span>"), root_13$7 = /* @__PURE__ */ from_html("<button type=\"button\" class=\"select-clear svelte-52lifo\" aria-label=\"Clear selection\"><span aria-hidden=\"true\">×</span></button>"), root_14$7 = /* @__PURE__ */ from_html("<div role=\"alert\" class=\"select-error-message svelte-52lifo\"> </div>"), root_15$7 = /* @__PURE__ */ from_html("<div><input class=\"select-menu-search svelte-52lifo\" type=\"search\" aria-label=\"Search options\" autocomplete=\"off\"/> <div class=\"select-menu-list svelte-52lifo\" role=\"listbox\" tabindex=\"-1\"><!></div> <!></div>"), root_16$6 = /* @__PURE__ */ from_html("<div role=\"listbox\"><!></div>"), root_17$5 = /* @__PURE__ */ from_html("<div><!> <div><div><!> <!> <span class=\"select-arrow svelte-52lifo\"></span></div> <!></div> <!> <!></div>"), $$css$38 = {
|
|
17416
17416
|
hash: "svelte-52lifo",
|
|
17417
|
-
code: ".select.svelte-52lifo {position:relative;width:var(--select-width, 100%);font-family:var(--select-font-family, inherit);font-size:var(--select-font-size, 14px);color:var(--select-color, #333333);}.select.disabled.svelte-52lifo {opacity:var(--select-disabled-opacity, 0.5);cursor:var(--select-disabled-cursor, not-allowed);pointer-events:none;}.select-trigger.svelte-52lifo {display:flex;flex-wrap:wrap;align-items:center;gap:var(--select-trigger-gap, 4px);min-height:var(--select-trigger-min-height, 40px);padding:var(--select-trigger-padding, 8px 12px);background:var(--select-trigger-background, #ffffff);border:var(--select-trigger-border, 1px solid #cccccc);border-radius:var(--select-trigger-border-radius, var(--radius, 4px));cursor:pointer;outline:none;-webkit-tap-highlight-color:transparent;transition:var(--select-trigger-transition, border-color 0.15s, box-shadow 0.15s);}.select-trigger.svelte-52lifo .select-left-icon {--image-width: var(--select-left-icon-size, 16px);--image-height: var(--select-left-icon-size, 16px);--image-object-fit: contain;\n\n /* The icon inlines, so a currentColor asset resolves against this. Defaults to\n `inherit` — the trigger's text colour, which is what it already did — so this is\n a hook, not a change. Without it a consumer cannot tint the icon independently\n of the label, and an icon migrated to currentColor is forced to match its label\n exactly, flattening any deliberate muted-icon/strong-label hierarchy. */color:var(--select-left-icon-color, inherit);flex:none;}.select-trigger.svelte-52lifo:hover:not(.disabled:where(.svelte-52lifo) .select-trigger:where(.svelte-52lifo)) {border-color:var(--select-trigger-hover-border-color, #999999);}.select-trigger.svelte-52lifo:focus-within,\n .select.open.svelte-52lifo .select-trigger:where(.svelte-52lifo) {border-color:var(--select-trigger-focus-border-color, #2563eb);box-shadow:var(--select-trigger-focus-shadow, 0 0 0 2px rgba(37, 99, 235, 0.2));}\n\n /* Pressed feedback on the trigger. `:active` only, so it lasts exactly as\n long as the pointer is down and never lingers as a stuck state the way a\n class-driven one can. */.select.svelte-52lifo:not(.disabled) .select-trigger:where(.svelte-52lifo):active {background:var(--select-trigger-pressed-background, #ededed);}\n\n /* The error border has to outrank BOTH hover and focus/open, or the field\n stops reading as invalid the moment the user enters it -- which is the one\n moment they most need to see it. Listed after them, at equal or higher\n specificity, rather than reached for with !important. */.select.error.svelte-52lifo .select-trigger:where(.svelte-52lifo),\n .select.error.svelte-52lifo .select-trigger:where(.svelte-52lifo):hover,\n .select.error.svelte-52lifo .select-trigger:where(.svelte-52lifo):focus-within,\n .select.error.open.svelte-52lifo .select-trigger:where(.svelte-52lifo) {border-color:var(--select-trigger-error-border-color, #dc2626);}.select.error.svelte-52lifo .select-trigger:where(.svelte-52lifo):focus-within,\n .select.error.open.svelte-52lifo .select-trigger:where(.svelte-52lifo) {box-shadow:var(--select-trigger-error-shadow, 0 0 0 2px rgba(220, 38, 38, 0.2));}.select-error-message.svelte-52lifo {margin-top:var(--select-error-message-margin-top, 4px);font-size:var(--select-error-message-font-size, 12px);color:var(--select-error-message-color, #dc2626);}.select-control.svelte-52lifo {position:relative;}.select-control.has-clear.svelte-52lifo .select-trigger:where(.svelte-52lifo) {padding-inline-end:calc(var(--select-clear-size, 18px) + 36px);}.select-control.has-clear.svelte-52lifo .select-arrow:where(.svelte-52lifo) {position:absolute;right:12px;}.select-clear.svelte-52lifo {position:absolute;right:32px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;flex:none;width:var(--select-clear-size, 18px);height:var(--select-clear-size, 18px);margin:0;padding:0;border:none;border-radius:var(--select-clear-border-radius, var(--radius, 4px));background:var(--select-clear-background, transparent);color:var(--select-clear-color, #666666);font-size:var(--select-clear-font-size, 16px);line-height:1;cursor:pointer;}.select-clear.svelte-52lifo:focus-visible {outline:var(--select-clear-focus-outline, 2px solid currentColor);outline-offset:2px;}.select-clear.svelte-52lifo:hover {background:var(--select-clear-hover-background, #ededed);color:var(--select-clear-hover-color, #111111);}.select-clear.svelte-52lifo:active {background:var(--select-clear-pressed-background, #e0e0e0);}.select-value.svelte-52lifo {flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:var(--select-value-align, left);}.select-placeholder.svelte-52lifo {flex:1;color:var(--select-placeholder-color, #999999);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:var(--select-value-align, left);}.select-search.svelte-52lifo {flex:1;min-width:60px;border:none;outline:none;background:transparent;font-family:inherit;font-size:inherit;color:inherit;padding:0;cursor:text;}.select-search.svelte-52lifo::placeholder {color:var(--select-placeholder-color, #999999);}.select-arrow.svelte-52lifo {display:inline-flex;align-items:center;justify-content:center;width:var(--select-arrow-size, 16px);height:var(--select-arrow-size, 16px);color:var(--select-arrow-color, #666666);flex-shrink:0;transition:transform 0.15s;}.select.open.svelte-52lifo .select-arrow:where(.svelte-52lifo) {transform:rotate(180deg);}.select-arrow.svelte-52lifo svg {width:100%;height:100%;}.select-dropdown.svelte-52lifo {position:absolute;top:100%;left:var(--select-dropdown-left, 0);right:var(--select-dropdown-right, 0);min-width:var(--select-dropdown-min-width, auto);max-width:var(--select-dropdown-max-width, none);width:var(--select-dropdown-width, auto);margin-top:var(--select-dropdown-gap, 4px);background:var(--select-dropdown-background, #ffffff);border:var(--select-dropdown-border, 1px solid #cccccc);border-radius:var(--select-dropdown-border-radius, var(--radius, 4px));box-shadow:var(--select-dropdown-shadow, 0 4px 12px rgba(0, 0, 0, 0.1));max-height:var(--select-dropdown-max-height, 200px);overflow-y:auto;z-index:var(--select-dropdown-z-index, 10);}\n\n /* With the search box inside the panel, the PANEL must stop scrolling and\n the list scroll instead -- otherwise the search box scrolls away as soon\n as the user moves down the results, which is the one control they still\n need. The max-height moves down with the scrolling, so the panel keeps\n growing to fit the search box plus a list of the same height as before. */.select-dropdown.svelte-52lifo:has(> .select-menu-list:where(.svelte-52lifo)) {max-height:none;overflow-y:visible;display:flex;flex-direction:column;}.select-menu-list.svelte-52lifo {max-height:var(--select-dropdown-max-height, 200px);overflow-y:auto;}.select-menu-search.svelte-52lifo {flex:none;margin:var(--select-menu-search-margin, 6px);padding:var(--select-menu-search-padding, 6px 8px);border:var(--select-menu-search-border, 1px solid #cccccc);border-radius:var(--select-menu-search-border-radius, var(--radius, 4px));background:var(--select-menu-search-background, #ffffff);color:var(--select-menu-search-color, inherit);font-family:inherit;font-size:var(--select-menu-search-font-size, inherit);outline:none;}.select-menu-search.svelte-52lifo:focus-visible {border-color:var(--select-menu-search-focus-border-color, #2563eb);box-shadow:var(--select-menu-search-focus-shadow, 0 0 0 2px rgba(37, 99, 235, 0.2));}.select-dropdown-right.svelte-52lifo {left:auto;right:var(--select-dropdown-right, 0);min-width:var(--select-dropdown-min-width, 100%);max-width:var(--select-dropdown-max-width, none);width:var(--select-dropdown-width, max-content);}.select-dropdown.select-dropdown-portal.svelte-52lifo {\n /* Portaled to <body>: fixed positioning escapes overflow/scroll ancestors\n (e.g. a table cell). Placement (top/left/width/min-width) is set inline\n from the trigger rect, so neutralise the in-flow anchoring here. */position:fixed;right:auto;margin-top:0;\n /* In the root stacking context the panel competes with modals/sheets rather\n than painting above same-container siblings, so default it into the\n top-layer band (consumers still override via --select-dropdown-z-index). */z-index:var(--select-dropdown-z-index, 1000);}.select-option.svelte-52lifo {padding:var(--select-option-padding, 8px 12px);color:var(--select-option-color, #333333);font-size:var(--select-option-font-size, inherit);cursor:pointer;transition:background 0.1s;}\n\n /* Per-option leading icon (SelectItem.icon). Kept inline + vertically centred so\n it needs no change to the option's display and can't regress icon-less lists. */.select-option.svelte-52lifo .select-option-icon {--image-width: var(--select-option-icon-size, 16px);--image-height: var(--select-option-icon-size, 16px);--image-object-fit: contain;color:var(--select-option-icon-color, inherit);vertical-align:middle;margin-right:var(--select-option-icon-gap, 8px);}.select-option.multi.svelte-52lifo {display:flex;align-items:center;gap:var(--select-option-gap, 0);}.select-option.svelte-52lifo:hover,\n .select-option.highlighted.svelte-52lifo {background:var(--select-option-hover-background, #f0f0f0);color:var(--select-option-hover-color, var(--select-option-color, #333333));}.select-option.selected.svelte-52lifo {background:var(--select-option-selected-background, #e8f0fe);color:var(--select-option-selected-color, var(--select-option-color, #333333));}.select-option.selected.highlighted.svelte-52lifo {background:var(\n --select-option-selected-hover-background,\n var(--select-option-selected-background, #e8f0fe)\n );}\n\n /* Pressed feedback comes last, and each selector carries enough specificity\n to outrank its non-active counterpart above. An option is always hovered\n when pressed and is often selected too, so a single low-specificity rule\n earlier in the sheet would be correct in isolation and invisible in\n practice -- which is how a pressed state ends up shipping as dead CSS.\n A press on an already-selected row still has to confirm the tap landed. */.select-option.svelte-52lifo:active,\n .select-option.selected.svelte-52lifo:active,\n .select-option.selected.highlighted.svelte-52lifo:active {background:var(--select-option-pressed-background, #ededed);}.select-option-indicator.svelte-52lifo {display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;box-sizing:border-box;width:var(--select-option-indicator-size, 18px);height:var(--select-option-indicator-size, 18px);border:var(--select-option-indicator-border, 2px solid #757575);border-radius:var(--select-option-indicator-border-radius, var(--radius, 4px));background-color:var(--select-option-indicator-background, transparent);color:var(--select-option-indicator-color, currentColor);transition:background-color 0.15s,\n border-color 0.15s;}.select-option-indicator.checked.svelte-52lifo {background-color:var(--select-option-indicator-checked-background, #2196f3);border-color:var(--select-option-indicator-checked-border-color, #2196f3);}.select-option-check.svelte-52lifo {display:inline-flex;align-items:center;justify-content:center;width:var(--select-option-indicator-check-size, 12px);height:var(--select-option-indicator-check-size, 12px);color:var(--select-option-indicator-check-color, #ffffff);}.select-option-check.svelte-52lifo svg {width:100%;height:100%;}.select-option-indicator.indeterminate.svelte-52lifo {background-color:var(--select-option-indicator-checked-background, #2196f3);border-color:var(--select-option-indicator-checked-border-color, #2196f3);}.select-option-dash.svelte-52lifo {width:var(--select-option-indicator-dash-size, 10px);height:var(--select-option-indicator-dash-thickness, 2px);border-radius:1px;background-color:var(--select-option-indicator-dash-color, #ffffff);}.select-option.select-all.svelte-52lifo {border-bottom:var(--select-all-border, none);font-weight:var(--select-all-font-weight, inherit);}.select-empty.svelte-52lifo {padding:var(--select-empty-padding, 8px 12px);color:var(--select-empty-color, #999999);font-style:var(--select-empty-font-style, italic);font-size:var(--select-empty-font-size, inherit);}.select-bottom-content.svelte-52lifo {border-top:var(--select-bottom-content-border, none);padding:var(--select-bottom-content-padding, 8px 12px);}.select-trigger.svelte-52lifo .pill {--pill-background: var(--select-pill-background, #e0e0e0);--pill-color: var(--select-pill-color, #333333);--pill-border-radius: var(--select-pill-border-radius, 999px);--pill-padding: var(--select-pill-padding, 2px 8px);--pill-font-size: var(--select-pill-font-size, 13px);}\n\n /* Ghost hierarchy: transparent, borderless trigger */.select.ghost.svelte-52lifo .select-trigger:where(.svelte-52lifo) {background:var(--select-ghost-trigger-background, transparent);border-color:var(--select-ghost-trigger-border-color, transparent);box-shadow:none;}.select.ghost.svelte-52lifo .select-trigger:where(.svelte-52lifo):hover:not(.disabled:where(.svelte-52lifo) .select-trigger:where(.svelte-52lifo)) {border-color:var(--select-ghost-trigger-hover-border-color, transparent);background:var(--select-ghost-trigger-hover-background, rgba(0, 0, 0, 0.04));}.select.ghost.open.svelte-52lifo .select-trigger:where(.svelte-52lifo) {border-color:var(--select-ghost-trigger-open-border-color, transparent);background:var(--select-ghost-trigger-open-background, rgba(0, 0, 0, 0.06));box-shadow:none;}\n\n /* Single-select right-edge tick (showSelectedTick) */.select-option.tickable.svelte-52lifo {display:flex;align-items:center;gap:8px;}.select-option.tickable.svelte-52lifo .select-option-label:where(.svelte-52lifo) {flex:1 1 auto;min-width:0;}.select-option-tick.svelte-52lifo {display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--select-option-tick-size, 16px);height:var(--select-option-tick-size, 16px);color:var(--select-option-tick-color, #2563eb);}.select-option-tick.svelte-52lifo svg {width:100%;height:100%;}"
|
|
17417
|
+
code: ".select.svelte-52lifo {position:relative;width:var(--select-width, 100%);font-family:var(--select-font-family, inherit);font-size:var(--select-font-size, 14px);color:var(--select-color, #333333);}.select.disabled.svelte-52lifo {opacity:var(--select-disabled-opacity, 0.5);cursor:var(--select-disabled-cursor, not-allowed);pointer-events:none;}.select-trigger.svelte-52lifo {display:flex;flex-wrap:wrap;align-items:center;gap:var(--select-trigger-gap, 4px);min-height:var(--select-trigger-min-height, 40px);padding:var(--select-trigger-padding, 8px 12px);background:var(--select-trigger-background, #ffffff);border:var(--select-trigger-border, 1px solid #cccccc);border-radius:var(--select-trigger-border-radius, var(--radius, 4px));cursor:pointer;outline:none;-webkit-tap-highlight-color:transparent;transition:var(--select-trigger-transition, border-color 0.15s, box-shadow 0.15s);}.select-trigger.svelte-52lifo .select-left-icon {--image-width: var(--select-left-icon-size, 16px);--image-height: var(--select-left-icon-size, 16px);--image-object-fit: contain;\n\n /* The icon inlines, so a currentColor asset resolves against this. Defaults to\n `inherit` — the trigger's text colour, which is what it already did — so this is\n a hook, not a change. Without it a consumer cannot tint the icon independently\n of the label, and an icon migrated to currentColor is forced to match its label\n exactly, flattening any deliberate muted-icon/strong-label hierarchy. */color:var(--select-left-icon-color, inherit);flex:none;}.select-trigger.svelte-52lifo:hover:not(.disabled:where(.svelte-52lifo) .select-trigger:where(.svelte-52lifo)) {border-color:var(--select-trigger-hover-border-color, #999999);}.select-trigger.svelte-52lifo:focus-within,\n .select.open.svelte-52lifo .select-trigger:where(.svelte-52lifo) {border-color:var(--select-trigger-focus-border-color, #2563eb);box-shadow:var(--select-trigger-focus-shadow, 0 0 0 2px rgba(37, 99, 235, 0.2));}\n\n /* Pressed feedback on the trigger. `:active` only, so it lasts exactly as\n long as the pointer is down and never lingers as a stuck state the way a\n class-driven one can. */.select.svelte-52lifo:not(.disabled) .select-trigger:where(.svelte-52lifo):active {background:var(--select-trigger-pressed-background, #ededed);}\n\n /* The error border has to outrank BOTH hover and focus/open, or the field\n stops reading as invalid the moment the user enters it -- which is the one\n moment they most need to see it. Listed after them, at equal or higher\n specificity, rather than reached for with !important. */.select.error.svelte-52lifo .select-trigger:where(.svelte-52lifo),\n .select.error.svelte-52lifo .select-trigger:where(.svelte-52lifo):hover,\n .select.error.svelte-52lifo .select-trigger:where(.svelte-52lifo):focus-within,\n .select.error.open.svelte-52lifo .select-trigger:where(.svelte-52lifo) {border-color:var(--select-trigger-error-border-color, #dc2626);}.select.error.svelte-52lifo .select-trigger:where(.svelte-52lifo):focus-within,\n .select.error.open.svelte-52lifo .select-trigger:where(.svelte-52lifo) {box-shadow:var(--select-trigger-error-shadow, 0 0 0 2px rgba(220, 38, 38, 0.2));}.select-error-message.svelte-52lifo {margin-top:var(--select-error-message-margin-top, 4px);font-size:var(--select-error-message-font-size, 12px);color:var(--select-error-message-color, #dc2626);}.select-control.svelte-52lifo {position:relative;}.select-control.has-clear.svelte-52lifo .select-trigger:where(.svelte-52lifo) {padding-inline-end:calc(var(--select-clear-size, 18px) + 36px);}.select-control.has-clear.svelte-52lifo .select-arrow:where(.svelte-52lifo) {position:absolute;right:12px;}.select-clear.svelte-52lifo {position:absolute;right:32px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;flex:none;width:var(--select-clear-size, 18px);height:var(--select-clear-size, 18px);margin:0;padding:0;border:none;border-radius:var(--select-clear-border-radius, var(--radius, 4px));background:var(--select-clear-background, transparent);color:var(--select-clear-color, #666666);font-size:var(--select-clear-font-size, 16px);line-height:1;cursor:pointer;}.select-clear.svelte-52lifo:focus-visible {outline:var(--select-clear-focus-outline, 2px solid currentColor);outline-offset:2px;}.select-clear.svelte-52lifo:hover {background:var(--select-clear-hover-background, #ededed);color:var(--select-clear-hover-color, #111111);}.select-clear.svelte-52lifo:active {background:var(--select-clear-pressed-background, #e0e0e0);}.select-value.svelte-52lifo {flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:var(--select-value-align, left);}.select-placeholder.svelte-52lifo {flex:1;color:var(--select-placeholder-color, #999999);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:var(--select-value-align, left);}.select-search.svelte-52lifo {flex:1;min-width:60px;border:none;outline:none;background:transparent;font-family:inherit;font-size:inherit;color:inherit;padding:0;cursor:text;}.select-search.svelte-52lifo::placeholder {color:var(--select-placeholder-color, #999999);}.select-arrow.svelte-52lifo {display:inline-flex;align-items:center;justify-content:center;width:var(--select-arrow-size, 16px);height:var(--select-arrow-size, 16px);color:var(--select-arrow-color, #666666);flex-shrink:0;transition:transform 0.15s;}.select.open.svelte-52lifo .select-arrow:where(.svelte-52lifo) {transform:rotate(180deg);}.select-arrow.svelte-52lifo svg {width:100%;height:100%;}\n\n /* Anchors the in-flow panel above the trigger. `margin-top` is what the\n downward panel uses for the gap, so it has to be unset here or the panel\n sits a gap's width too high. */.select-dropdown.select-dropdown-up.svelte-52lifo {top:auto;bottom:100%;margin-top:0;margin-bottom:var(--select-dropdown-gap, 4px);}\n\n /* One-tick measuring pass for placement=\"auto\": the panel needs rendered\n dimensions before the corner is chosen, without a visible flash at the\n wrong corner. */.select-dropdown.select-dropdown-measuring.svelte-52lifo {visibility:hidden;}.select-dropdown.svelte-52lifo {position:absolute;top:100%;left:var(--select-dropdown-left, 0);right:var(--select-dropdown-right, 0);min-width:var(--select-dropdown-min-width, auto);max-width:var(--select-dropdown-max-width, none);width:var(--select-dropdown-width, auto);margin-top:var(--select-dropdown-gap, 4px);background:var(--select-dropdown-background, #ffffff);border:var(--select-dropdown-border, 1px solid #cccccc);border-radius:var(--select-dropdown-border-radius, var(--radius, 4px));box-shadow:var(--select-dropdown-shadow, 0 4px 12px rgba(0, 0, 0, 0.1));max-height:var(--select-dropdown-max-height, 200px);overflow-y:auto;z-index:var(--select-dropdown-z-index, 10);}\n\n /* With the search box inside the panel, the PANEL must stop scrolling and\n the list scroll instead -- otherwise the search box scrolls away as soon\n as the user moves down the results, which is the one control they still\n need. The max-height moves down with the scrolling, so the panel keeps\n growing to fit the search box plus a list of the same height as before. */.select-dropdown.svelte-52lifo:has(> .select-menu-list:where(.svelte-52lifo)) {max-height:none;overflow-y:visible;display:flex;flex-direction:column;}.select-menu-list.svelte-52lifo {max-height:var(--select-dropdown-max-height, 200px);overflow-y:auto;}.select-menu-search.svelte-52lifo {flex:none;margin:var(--select-menu-search-margin, 6px);padding:var(--select-menu-search-padding, 6px 8px);border:var(--select-menu-search-border, 1px solid #cccccc);border-radius:var(--select-menu-search-border-radius, var(--radius, 4px));background:var(--select-menu-search-background, #ffffff);color:var(--select-menu-search-color, inherit);font-family:inherit;font-size:var(--select-menu-search-font-size, inherit);outline:none;}.select-menu-search.svelte-52lifo:focus-visible {border-color:var(--select-menu-search-focus-border-color, #2563eb);box-shadow:var(--select-menu-search-focus-shadow, 0 0 0 2px rgba(37, 99, 235, 0.2));}.select-dropdown-right.svelte-52lifo {left:auto;right:var(--select-dropdown-right, 0);min-width:var(--select-dropdown-min-width, 100%);max-width:var(--select-dropdown-max-width, none);width:var(--select-dropdown-width, max-content);}.select-dropdown.select-dropdown-portal.svelte-52lifo {\n /* Portaled to <body>: fixed positioning escapes overflow/scroll ancestors\n (e.g. a table cell). Placement (top/left/width/min-width) is set inline\n from the trigger rect, so neutralise the in-flow anchoring here. */position:fixed;right:auto;margin-top:0;\n /* In the root stacking context the panel competes with modals/sheets rather\n than painting above same-container siblings, so default it into the\n top-layer band (consumers still override via --select-dropdown-z-index). */z-index:var(--select-dropdown-z-index, 1000);}.select-option.svelte-52lifo {padding:var(--select-option-padding, 8px 12px);color:var(--select-option-color, #333333);font-size:var(--select-option-font-size, inherit);cursor:pointer;transition:background 0.1s;}\n\n /* Per-option leading icon (SelectItem.icon). Kept inline + vertically centred so\n it needs no change to the option's display and can't regress icon-less lists. */.select-option.svelte-52lifo .select-option-icon {--image-width: var(--select-option-icon-size, 16px);--image-height: var(--select-option-icon-size, 16px);--image-object-fit: contain;color:var(--select-option-icon-color, inherit);vertical-align:middle;margin-right:var(--select-option-icon-gap, 8px);}.select-option.multi.svelte-52lifo {display:flex;align-items:center;gap:var(--select-option-gap, 0);}.select-option.svelte-52lifo:hover,\n .select-option.highlighted.svelte-52lifo {background:var(--select-option-hover-background, #f0f0f0);color:var(--select-option-hover-color, var(--select-option-color, #333333));}.select-option.selected.svelte-52lifo {background:var(--select-option-selected-background, #e8f0fe);color:var(--select-option-selected-color, var(--select-option-color, #333333));}.select-option.selected.highlighted.svelte-52lifo {background:var(\n --select-option-selected-hover-background,\n var(--select-option-selected-background, #e8f0fe)\n );}\n\n /* Pressed feedback comes last, and each selector carries enough specificity\n to outrank its non-active counterpart above. An option is always hovered\n when pressed and is often selected too, so a single low-specificity rule\n earlier in the sheet would be correct in isolation and invisible in\n practice -- which is how a pressed state ends up shipping as dead CSS.\n A press on an already-selected row still has to confirm the tap landed. */.select-option.svelte-52lifo:active,\n .select-option.selected.svelte-52lifo:active,\n .select-option.selected.highlighted.svelte-52lifo:active {background:var(--select-option-pressed-background, #ededed);}.select-option-indicator.svelte-52lifo {display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;box-sizing:border-box;width:var(--select-option-indicator-size, 18px);height:var(--select-option-indicator-size, 18px);border:var(--select-option-indicator-border, 2px solid #757575);border-radius:var(--select-option-indicator-border-radius, var(--radius, 4px));background-color:var(--select-option-indicator-background, transparent);color:var(--select-option-indicator-color, currentColor);transition:background-color 0.15s,\n border-color 0.15s;}.select-option-indicator.checked.svelte-52lifo {background-color:var(--select-option-indicator-checked-background, #2196f3);border-color:var(--select-option-indicator-checked-border-color, #2196f3);}.select-option-check.svelte-52lifo {display:inline-flex;align-items:center;justify-content:center;width:var(--select-option-indicator-check-size, 12px);height:var(--select-option-indicator-check-size, 12px);color:var(--select-option-indicator-check-color, #ffffff);}.select-option-check.svelte-52lifo svg {width:100%;height:100%;}.select-option-indicator.indeterminate.svelte-52lifo {background-color:var(--select-option-indicator-checked-background, #2196f3);border-color:var(--select-option-indicator-checked-border-color, #2196f3);}.select-option-dash.svelte-52lifo {width:var(--select-option-indicator-dash-size, 10px);height:var(--select-option-indicator-dash-thickness, 2px);border-radius:1px;background-color:var(--select-option-indicator-dash-color, #ffffff);}.select-option.select-all.svelte-52lifo {border-bottom:var(--select-all-border, none);font-weight:var(--select-all-font-weight, inherit);}.select-empty.svelte-52lifo {padding:var(--select-empty-padding, 8px 12px);color:var(--select-empty-color, #999999);font-style:var(--select-empty-font-style, italic);font-size:var(--select-empty-font-size, inherit);}.select-bottom-content.svelte-52lifo {border-top:var(--select-bottom-content-border, none);padding:var(--select-bottom-content-padding, 8px 12px);}.select-trigger.svelte-52lifo .pill {--pill-background: var(--select-pill-background, #e0e0e0);--pill-color: var(--select-pill-color, #333333);--pill-border-radius: var(--select-pill-border-radius, 999px);--pill-padding: var(--select-pill-padding, 2px 8px);--pill-font-size: var(--select-pill-font-size, 13px);}\n\n /* Ghost hierarchy: transparent, borderless trigger */.select.ghost.svelte-52lifo .select-trigger:where(.svelte-52lifo) {background:var(--select-ghost-trigger-background, transparent);border-color:var(--select-ghost-trigger-border-color, transparent);box-shadow:none;}.select.ghost.svelte-52lifo .select-trigger:where(.svelte-52lifo):hover:not(.disabled:where(.svelte-52lifo) .select-trigger:where(.svelte-52lifo)) {border-color:var(--select-ghost-trigger-hover-border-color, transparent);background:var(--select-ghost-trigger-hover-background, rgba(0, 0, 0, 0.04));}.select.ghost.open.svelte-52lifo .select-trigger:where(.svelte-52lifo) {border-color:var(--select-ghost-trigger-open-border-color, transparent);background:var(--select-ghost-trigger-open-background, rgba(0, 0, 0, 0.06));box-shadow:none;}\n\n /* Single-select right-edge tick (showSelectedTick) */.select-option.tickable.svelte-52lifo {display:flex;align-items:center;gap:8px;}.select-option.tickable.svelte-52lifo .select-option-label:where(.svelte-52lifo) {flex:1 1 auto;min-width:0;}.select-option-tick.svelte-52lifo {display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--select-option-tick-size, 16px);height:var(--select-option-tick-size, 16px);color:var(--select-option-tick-color, #2563eb);}.select-option-tick.svelte-52lifo svg {width:100%;height:100%;}"
|
|
17418
17418
|
};
|
|
17419
17419
|
function Select(e, t) {
|
|
17420
17420
|
let n = props_id();
|
|
17421
17421
|
push(t, !0), append_styles$1(e, $$css$38);
|
|
17422
|
-
let i = prop(t, "items", 7), a = prop(t, "value", 31, () => proxy([])), o = prop(t, "multiple", 7, !1), s = prop(t, "searchable", 7, !1), c = prop(t, "searchPosition", 7, "trigger"), l = prop(t, "placeholder", 7, ""), u = prop(t, "disabled", 7, !1), f = prop(t, "error", 7, !1), p = prop(t, "errorMessage", 7), h = prop(t, "clearable", 7, !1), S = prop(t, "onclear", 7), C = prop(t, "bottomContent", 7), k = prop(t, "optionIndicator", 7), R = prop(t, "showSelectAll", 7, !1), te = prop(t, "selectAllLabel", 7, "Select all"), ne = prop(t, "showSelectedTick", 7, !1), re = prop(t, "triggerSummary", 7), G = prop(t, "testId", 7), be = prop(t, "itemTestId", 7), Me = prop(t, "onchange", 7), Re = prop(t, "onopen", 7), Ue = prop(t, "onclose", 7), it = prop(t, "classes", 7), at = prop(t, "open", 15, !1), ot = prop(t, "dropdownAlign", 7, "left"), ct = prop(t, "hierarchy", 7, "default"),
|
|
17423
|
-
function
|
|
17422
|
+
let i = prop(t, "items", 7), a = prop(t, "value", 31, () => proxy([])), o = prop(t, "multiple", 7, !1), s = prop(t, "searchable", 7, !1), c = prop(t, "searchPosition", 7, "trigger"), l = prop(t, "placeholder", 7, ""), u = prop(t, "disabled", 7, !1), f = prop(t, "error", 7, !1), p = prop(t, "errorMessage", 7), h = prop(t, "clearable", 7, !1), S = prop(t, "onclear", 7), C = prop(t, "bottomContent", 7), k = prop(t, "optionIndicator", 7), R = prop(t, "showSelectAll", 7, !1), te = prop(t, "selectAllLabel", 7, "Select all"), ne = prop(t, "showSelectedTick", 7, !1), re = prop(t, "triggerSummary", 7), G = prop(t, "testId", 7), be = prop(t, "itemTestId", 7), Me = prop(t, "onchange", 7), Re = prop(t, "onopen", 7), Ue = prop(t, "onclose", 7), it = prop(t, "classes", 7), at = prop(t, "open", 15, !1), ot = prop(t, "dropdownAlign", 7, "left"), ct = prop(t, "placement", 7), lt = prop(t, "hierarchy", 7, "default"), ut = prop(t, "leftIcon", 7), dt = prop(t, "leftIconTestId", 7), ft = prop(t, "usePortal", 7, !1), pt = prop(t, "name", 7);
|
|
17423
|
+
function mt(e) {
|
|
17424
17424
|
return e.map((e) => typeof e == "string" ? {
|
|
17425
17425
|
id: e,
|
|
17426
17426
|
label: e
|
|
17427
17427
|
} : e);
|
|
17428
17428
|
}
|
|
17429
|
-
let
|
|
17430
|
-
function
|
|
17431
|
-
|
|
17429
|
+
let ht = /* @__PURE__ */ user_derived(() => mt(i())), gt = /* @__PURE__ */ state(""), _t = !1, vt = /* @__PURE__ */ state(-1), yt = /* @__PURE__ */ state(null), bt = /* @__PURE__ */ state(null), xt = /* @__PURE__ */ state(null), St = /* @__PURE__ */ state(null), Ct = /* @__PURE__ */ state(0), wt = /* @__PURE__ */ state(0), Tt = /* @__PURE__ */ state(0), Et = 4, Dt = 8, Ot = /* @__PURE__ */ user_derived(() => ct() ?? (ot() === "right" ? "bottom-right" : "bottom-left")), kt = /* @__PURE__ */ user_derived(() => ct() != null), At = /* @__PURE__ */ state(null), jt = /* @__PURE__ */ user_derived(() => get(Ot) === "auto" ? get(At) ?? "bottom-left" : get(Ot)), Mt = /* @__PURE__ */ user_derived(() => get(Ot) === "auto" && get(At) === null), Nt = /* @__PURE__ */ user_derived(() => get(jt) === "bottom-right" || get(jt) === "top-right" ? "right" : "left");
|
|
17430
|
+
function Pt(e) {
|
|
17431
|
+
if (get(yt) === null || typeof window > "u") return "bottom-left";
|
|
17432
|
+
let t = get(yt).getBoundingClientRect(), n = e.getBoundingClientRect(), i = window.innerWidth, a = window.innerHeight, o = t.left + n.width > i - 8, s = t.right - n.width >= 8, c = o && s ? "right" : "left", l = t.bottom + n.height > a - 8, u = t.top - n.height >= 8;
|
|
17433
|
+
return `${l && u ? "top" : "bottom"}-${c}`;
|
|
17432
17434
|
}
|
|
17433
|
-
|
|
17434
|
-
|
|
17435
|
+
let It = `select-listbox-${n}`, Lt = `${It}-error`, Rt = /* @__PURE__ */ user_derived(() => s() && c() !== "menu"), zt = /* @__PURE__ */ user_derived(() => s() && c() === "menu"), Bt = /* @__PURE__ */ user_derived(() => f() && typeof p() == "string" && p().trim().length > 0), Ht = /* @__PURE__ */ user_derived(() => h() && !u() && a().length > 0);
|
|
17436
|
+
function Gt(e) {
|
|
17437
|
+
e.stopPropagation(), a().length !== 0 && (a([]), Me()?.(a()), S()?.(), s() && get(bt) !== null ? (_t = !0, get(bt).focus(), _t = !1) : get(xt)?.focus());
|
|
17438
|
+
}
|
|
17439
|
+
function qt(e) {
|
|
17440
|
+
let t = get(ht).find((t) => t.id === e);
|
|
17435
17441
|
return typeof t == "object" ? t.label : e;
|
|
17436
17442
|
}
|
|
17437
|
-
let
|
|
17443
|
+
let Zt = /* @__PURE__ */ user_derived(() => s() && get(gt).length > 0 ? get(ht).filter((e) => e.label.toLowerCase().includes(get(gt).toLowerCase())) : get(ht)), Qt = /* @__PURE__ */ user_derived(() => o() && R() && get(Zt).length > 0), $t = /* @__PURE__ */ user_derived(() => get(Zt).filter((e) => a().includes(e.id)).length), en = /* @__PURE__ */ user_derived(() => get(Zt).length > 0 && get($t) === get(Zt).length), tn = /* @__PURE__ */ user_derived(() => get($t) > 0 && get($t) < get(Zt).length), nn = /* @__PURE__ */ user_derived(() => get(Qt) ? [{ kind: "select-all" }, ...get(Zt).map((e) => ({
|
|
17438
17444
|
kind: "item",
|
|
17439
17445
|
item: e
|
|
17440
|
-
}))] : get(
|
|
17446
|
+
}))] : get(Zt).map((e) => ({
|
|
17441
17447
|
kind: "item",
|
|
17442
17448
|
item: e
|
|
17443
|
-
}))),
|
|
17449
|
+
}))), rn = /* @__PURE__ */ user_derived(() => {
|
|
17444
17450
|
let e = a().at(0);
|
|
17445
|
-
return typeof e == "string" ?
|
|
17446
|
-
}),
|
|
17451
|
+
return typeof e == "string" ? qt(e) : "";
|
|
17452
|
+
}), an = /* @__PURE__ */ user_derived(() => get(vt) >= 0 ? `${It}-option-${get(vt)}` : null), on = /* @__PURE__ */ user_derived(() => at() && get(rn).length > 0 ? get(rn) : l());
|
|
17447
17453
|
user_effect(() => {
|
|
17448
|
-
if (!
|
|
17454
|
+
if (!ft() || !at() || typeof window > "u") return;
|
|
17449
17455
|
let e = null, t = () => {
|
|
17450
17456
|
e === null && (e = requestAnimationFrame(() => {
|
|
17451
|
-
e = null, set(
|
|
17457
|
+
e = null, set(Tt, get(Tt) + 1);
|
|
17452
17458
|
}));
|
|
17453
17459
|
};
|
|
17454
17460
|
return window.addEventListener("scroll", t, {
|
|
@@ -17458,18 +17464,19 @@ function Select(e, t) {
|
|
|
17458
17464
|
window.removeEventListener("scroll", t, { capture: !0 }), window.removeEventListener("resize", t), e !== null && cancelAnimationFrame(e);
|
|
17459
17465
|
};
|
|
17460
17466
|
});
|
|
17461
|
-
let
|
|
17462
|
-
if (
|
|
17463
|
-
},
|
|
17464
|
-
if (!
|
|
17465
|
-
get(
|
|
17466
|
-
let e = get(
|
|
17467
|
+
let sn = (e) => {
|
|
17468
|
+
if (ft()) return document.body.appendChild(e), { destroy: () => e.remove() };
|
|
17469
|
+
}, cn = /* @__PURE__ */ user_derived(() => {
|
|
17470
|
+
if (!ft() || !at() || get(xt) === null) return null;
|
|
17471
|
+
get(Tt);
|
|
17472
|
+
let e = get(xt).getBoundingClientRect(), t = typeof window > "u" ? {
|
|
17467
17473
|
width: Infinity,
|
|
17468
17474
|
height: Infinity
|
|
17469
17475
|
} : {
|
|
17470
17476
|
width: window.innerWidth,
|
|
17471
17477
|
height: window.innerHeight
|
|
17472
|
-
}
|
|
17478
|
+
};
|
|
17479
|
+
return computeSelectDropdownPosition({
|
|
17473
17480
|
trigger: {
|
|
17474
17481
|
left: e.left,
|
|
17475
17482
|
right: e.right,
|
|
@@ -17478,118 +17485,130 @@ function Select(e, t) {
|
|
|
17478
17485
|
width: e.width
|
|
17479
17486
|
},
|
|
17480
17487
|
dropdown: {
|
|
17481
|
-
width: get(
|
|
17482
|
-
height: get(
|
|
17488
|
+
width: get(Ct),
|
|
17489
|
+
height: get(wt)
|
|
17483
17490
|
},
|
|
17484
17491
|
viewport: t,
|
|
17485
|
-
align:
|
|
17492
|
+
align: get(Nt),
|
|
17493
|
+
vertical: get(kt) ? get(jt) === "top-left" || get(jt) === "top-right" ? "top" : "bottom" : "auto",
|
|
17486
17494
|
gap: 4
|
|
17487
|
-
})
|
|
17488
|
-
|
|
17489
|
-
|
|
17490
|
-
|
|
17491
|
-
|
|
17495
|
+
});
|
|
17496
|
+
}), ln = /* @__PURE__ */ user_derived(() => {
|
|
17497
|
+
let e = get(cn);
|
|
17498
|
+
if (e === null) return "";
|
|
17499
|
+
let t = e.width === null ? "" : `width:${e.width}px;`;
|
|
17500
|
+
return `top:${e.top}px;left:${e.left}px;min-width:${e.minWidth}px;${t}`;
|
|
17501
|
+
}), un = /* @__PURE__ */ user_derived(() => {
|
|
17502
|
+
let e = get(cn);
|
|
17503
|
+
return e === null ? get(jt) : e.flippedUp ? get(Nt) === "right" ? "top-right" : "top-left" : get(Nt) === "right" ? "bottom-right" : "bottom-left";
|
|
17504
|
+
}), dn = (e) => (get(Ot) === "auto" && tick().then(() => {
|
|
17505
|
+
set(At, Pt(e), !0);
|
|
17506
|
+
}), { destroy: () => {
|
|
17507
|
+
set(At, null);
|
|
17508
|
+
} });
|
|
17509
|
+
async function fn() {
|
|
17510
|
+
u() || at() || (at(!0), Re()?.(), set(vt, -1), set(gt, ""), get(Rt) && (await tick(), get(bt) !== null && get(bt).focus()));
|
|
17492
17511
|
}
|
|
17493
|
-
function
|
|
17494
|
-
at(!1), Ue()?.(), set(
|
|
17512
|
+
function pn() {
|
|
17513
|
+
at(!1), Ue()?.(), set(gt, ""), set(vt, -1);
|
|
17495
17514
|
}
|
|
17496
|
-
function
|
|
17497
|
-
u() || (o() ? a(a().includes(e) ? a().filter((t) => t !== e) : [...a(), e]) : (a([e]),
|
|
17515
|
+
function mn(e) {
|
|
17516
|
+
u() || (o() ? a(a().includes(e) ? a().filter((t) => t !== e) : [...a(), e]) : (a([e]), pn(), get(zt) && get(xt)?.focus()), Me()?.(a()));
|
|
17498
17517
|
}
|
|
17499
|
-
function
|
|
17518
|
+
function hn(e) {
|
|
17500
17519
|
u() || (a(a().filter((t) => t !== e)), Me()?.(a()));
|
|
17501
17520
|
}
|
|
17502
|
-
function
|
|
17503
|
-
u() || (get(
|
|
17504
|
-
}
|
|
17505
|
-
function an() {
|
|
17506
|
-
if (get(_t) < 0 || get(_t) >= get(Bt).length) return;
|
|
17507
|
-
let e = get(Bt).at(get(_t));
|
|
17508
|
-
typeof e != "object" || !e || (e.kind === "select-all" ? rn() : tn(e.item.id));
|
|
17521
|
+
function gn() {
|
|
17522
|
+
u() || (get(en) ? a(a().filter((e) => !get(Zt).some((t) => t.id === e))) : a([...new Set([...a(), ...get(Zt).map((e) => e.id)])]), Me()?.(a()));
|
|
17509
17523
|
}
|
|
17510
|
-
|
|
17511
|
-
|
|
17512
|
-
|
|
17513
|
-
|
|
17524
|
+
function _n() {
|
|
17525
|
+
if (get(vt) < 0 || get(vt) >= get(nn).length) return;
|
|
17526
|
+
let e = get(nn).at(get(vt));
|
|
17527
|
+
typeof e != "object" || !e || (e.kind === "select-all" ? gn() : mn(e.item.id));
|
|
17528
|
+
}
|
|
17529
|
+
async function vn(e) {
|
|
17530
|
+
let t = get(vt) + e;
|
|
17531
|
+
if (!(t < 0 || t >= get(nn).length) && (set(vt, t), await tick(), get(St) !== null)) {
|
|
17532
|
+
let e = get(St).querySelector(".select-option.highlighted");
|
|
17514
17533
|
e instanceof HTMLElement && e.scrollIntoView({ block: "nearest" });
|
|
17515
17534
|
}
|
|
17516
17535
|
}
|
|
17517
|
-
function
|
|
17536
|
+
function yn(e) {
|
|
17518
17537
|
if (e.target instanceof HTMLInputElement) {
|
|
17519
|
-
at() ||
|
|
17538
|
+
at() || fn();
|
|
17520
17539
|
return;
|
|
17521
17540
|
}
|
|
17522
|
-
at() ?
|
|
17541
|
+
at() ? pn() : fn();
|
|
17523
17542
|
}
|
|
17524
|
-
let
|
|
17525
|
-
function
|
|
17526
|
-
return get(
|
|
17543
|
+
let bn = "a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])";
|
|
17544
|
+
function xn() {
|
|
17545
|
+
return get(St) === null ? [] : [...get(St).querySelectorAll(bn)];
|
|
17527
17546
|
}
|
|
17528
|
-
function
|
|
17529
|
-
if (get(
|
|
17530
|
-
let e = [...document.querySelectorAll(
|
|
17531
|
-
e.at(e.indexOf(get(
|
|
17547
|
+
function Sn() {
|
|
17548
|
+
if (get(xt) === null || typeof document > "u") return;
|
|
17549
|
+
let e = [...document.querySelectorAll(bn)].filter((e) => e.closest(".select-dropdown") === null);
|
|
17550
|
+
e.at(e.indexOf(get(xt)) + 1)?.focus();
|
|
17532
17551
|
}
|
|
17533
|
-
function
|
|
17552
|
+
function Cn(e) {
|
|
17534
17553
|
if (!u()) switch (e.key) {
|
|
17535
17554
|
case "Enter":
|
|
17536
|
-
e.preventDefault(), at() ?
|
|
17555
|
+
e.preventDefault(), at() ? _n() : fn();
|
|
17537
17556
|
break;
|
|
17538
17557
|
case " ":
|
|
17539
|
-
e.target instanceof HTMLInputElement || (e.preventDefault(), at() ?
|
|
17558
|
+
e.target instanceof HTMLInputElement || (e.preventDefault(), at() ? _n() : fn());
|
|
17540
17559
|
break;
|
|
17541
17560
|
case "ArrowDown":
|
|
17542
|
-
e.preventDefault(), at() ?
|
|
17561
|
+
e.preventDefault(), at() ? vn(1) : fn();
|
|
17543
17562
|
break;
|
|
17544
17563
|
case "ArrowUp":
|
|
17545
|
-
e.preventDefault(),
|
|
17564
|
+
e.preventDefault(), vn(-1);
|
|
17546
17565
|
break;
|
|
17547
17566
|
case "Escape":
|
|
17548
|
-
at() && (
|
|
17567
|
+
at() && (pn(), !get(Rt) && get(xt) !== null && get(xt).focus());
|
|
17549
17568
|
break;
|
|
17550
17569
|
case "Backspace":
|
|
17551
|
-
if (o() && get(
|
|
17570
|
+
if (o() && get(gt) === "" && a().length > 0) {
|
|
17552
17571
|
let e = a().at(-1);
|
|
17553
|
-
typeof e == "string" &&
|
|
17572
|
+
typeof e == "string" && hn(e);
|
|
17554
17573
|
}
|
|
17555
17574
|
break;
|
|
17556
17575
|
case "Tab": {
|
|
17557
17576
|
if (!at()) break;
|
|
17558
|
-
if (!get(
|
|
17559
|
-
|
|
17577
|
+
if (!get(zt)) {
|
|
17578
|
+
pn();
|
|
17560
17579
|
break;
|
|
17561
17580
|
}
|
|
17562
17581
|
let t = document.activeElement;
|
|
17563
17582
|
if (e.shiftKey) {
|
|
17564
|
-
t === get(
|
|
17583
|
+
t === get(xt) ? pn() : t === get(bt) && (e.preventDefault(), get(xt)?.focus());
|
|
17565
17584
|
break;
|
|
17566
17585
|
}
|
|
17567
|
-
if (t === get(
|
|
17568
|
-
e.preventDefault(), get(
|
|
17586
|
+
if (t === get(xt)) {
|
|
17587
|
+
e.preventDefault(), get(bt)?.focus();
|
|
17569
17588
|
break;
|
|
17570
17589
|
}
|
|
17571
|
-
t ===
|
|
17590
|
+
t === xn().at(-1) && (e.preventDefault(), pn(), Sn());
|
|
17572
17591
|
break;
|
|
17573
17592
|
}
|
|
17574
17593
|
}
|
|
17575
17594
|
}
|
|
17576
|
-
function
|
|
17577
|
-
e.target !== get(
|
|
17595
|
+
function wn(e) {
|
|
17596
|
+
e.target !== get(bt) && Cn(e);
|
|
17578
17597
|
}
|
|
17579
|
-
let
|
|
17580
|
-
function
|
|
17581
|
-
e.target instanceof HTMLInputElement && (set(
|
|
17598
|
+
let Tn = (e) => (e.addEventListener("keydown", wn), { destroy: () => e.removeEventListener("keydown", wn) });
|
|
17599
|
+
function En(e) {
|
|
17600
|
+
e.target instanceof HTMLInputElement && (set(gt, e.target.value, !0), at() || fn(), set(vt, -1));
|
|
17582
17601
|
}
|
|
17583
|
-
function
|
|
17584
|
-
!at() && !
|
|
17602
|
+
function Dn() {
|
|
17603
|
+
!at() && !_t && fn();
|
|
17585
17604
|
}
|
|
17586
|
-
function
|
|
17587
|
-
e.target instanceof Node && get(
|
|
17605
|
+
function On(e) {
|
|
17606
|
+
e.target instanceof Node && get(yt) !== null && !get(yt).contains(e.target) && !(get(St) !== null && get(St).contains(e.target)) && pn();
|
|
17588
17607
|
}
|
|
17589
|
-
onMount(() => (document.addEventListener("click",
|
|
17590
|
-
document.removeEventListener("click",
|
|
17608
|
+
onMount(() => (document.addEventListener("click", On), () => {
|
|
17609
|
+
document.removeEventListener("click", On), at() && Ue()?.();
|
|
17591
17610
|
}));
|
|
17592
|
-
var
|
|
17611
|
+
var kn = {
|
|
17593
17612
|
get items() {
|
|
17594
17613
|
return i();
|
|
17595
17614
|
},
|
|
@@ -17740,38 +17759,44 @@ function Select(e, t) {
|
|
|
17740
17759
|
set dropdownAlign(e = "left") {
|
|
17741
17760
|
ot(e), flushSync();
|
|
17742
17761
|
},
|
|
17743
|
-
get
|
|
17762
|
+
get placement() {
|
|
17744
17763
|
return ct();
|
|
17745
17764
|
},
|
|
17746
|
-
set
|
|
17765
|
+
set placement(e) {
|
|
17747
17766
|
ct(e), flushSync();
|
|
17748
17767
|
},
|
|
17749
|
-
get
|
|
17768
|
+
get hierarchy() {
|
|
17750
17769
|
return lt();
|
|
17751
17770
|
},
|
|
17752
|
-
set
|
|
17771
|
+
set hierarchy(e = "default") {
|
|
17753
17772
|
lt(e), flushSync();
|
|
17754
17773
|
},
|
|
17755
|
-
get
|
|
17774
|
+
get leftIcon() {
|
|
17756
17775
|
return ut();
|
|
17757
17776
|
},
|
|
17758
|
-
set
|
|
17777
|
+
set leftIcon(e) {
|
|
17759
17778
|
ut(e), flushSync();
|
|
17760
17779
|
},
|
|
17761
|
-
get
|
|
17780
|
+
get leftIconTestId() {
|
|
17762
17781
|
return dt();
|
|
17763
17782
|
},
|
|
17764
|
-
set
|
|
17783
|
+
set leftIconTestId(e) {
|
|
17765
17784
|
dt(e), flushSync();
|
|
17766
17785
|
},
|
|
17767
|
-
get
|
|
17786
|
+
get usePortal() {
|
|
17768
17787
|
return ft();
|
|
17769
17788
|
},
|
|
17770
|
-
set
|
|
17789
|
+
set usePortal(e = !1) {
|
|
17771
17790
|
ft(e), flushSync();
|
|
17791
|
+
},
|
|
17792
|
+
get name() {
|
|
17793
|
+
return pt();
|
|
17794
|
+
},
|
|
17795
|
+
set name(e) {
|
|
17796
|
+
pt(e), flushSync();
|
|
17772
17797
|
}
|
|
17773
|
-
},
|
|
17774
|
-
attribute_effect(
|
|
17798
|
+
}, An = root_17$5();
|
|
17799
|
+
attribute_effect(An, () => ({
|
|
17775
17800
|
class: `select ${it() ?? "" ?? ""}`,
|
|
17776
17801
|
...typeof G() == "string" ? {
|
|
17777
17802
|
"data-pw": G(),
|
|
@@ -17781,7 +17806,7 @@ function Select(e, t) {
|
|
|
17781
17806
|
open: at(),
|
|
17782
17807
|
disabled: u(),
|
|
17783
17808
|
error: f(),
|
|
17784
|
-
ghost:
|
|
17809
|
+
ghost: lt() === "ghost"
|
|
17785
17810
|
}
|
|
17786
17811
|
}), void 0, void 0, void 0, "svelte-52lifo");
|
|
17787
17812
|
{
|
|
@@ -17790,33 +17815,33 @@ function Select(e, t) {
|
|
|
17790
17815
|
append(e, root$36());
|
|
17791
17816
|
}, s = (e) => {
|
|
17792
17817
|
var t = comment();
|
|
17793
|
-
each(first_child(t), 19, () => get(
|
|
17818
|
+
each(first_child(t), 19, () => get(nn), (e) => e.kind === "select-all" ? "select-all" : e.item.id, (e, t, n) => {
|
|
17794
17819
|
var i = comment(), s = first_child(i), c = (e) => {
|
|
17795
|
-
var t = root_4$19(), i = () => set(
|
|
17820
|
+
var t = root_4$19(), i = () => set(vt, get(n), !0);
|
|
17796
17821
|
attribute_effect(t, () => ({
|
|
17797
17822
|
class: "select-option select-all",
|
|
17798
17823
|
role: "option",
|
|
17799
|
-
id: `${
|
|
17800
|
-
"aria-selected": get(
|
|
17801
|
-
"aria-label": get(
|
|
17824
|
+
id: `${It}-option-${get(n)}`,
|
|
17825
|
+
"aria-selected": get(en),
|
|
17826
|
+
"aria-label": get(tn) ? `${te()}, ${get($t)} of ${get(Zt).length} selected` : te(),
|
|
17802
17827
|
tabindex: "-1",
|
|
17803
17828
|
...typeof G() == "string" ? {
|
|
17804
17829
|
"data-pw": `${G()}-select-all`,
|
|
17805
17830
|
testID: `${G()}-select-all`
|
|
17806
17831
|
} : {},
|
|
17807
|
-
onclick:
|
|
17832
|
+
onclick: gn,
|
|
17808
17833
|
onmouseenter: i,
|
|
17809
17834
|
[CLASS]: {
|
|
17810
17835
|
multi: o(),
|
|
17811
|
-
selected: get(
|
|
17812
|
-
highlighted: get(n) === get(
|
|
17836
|
+
selected: get(en),
|
|
17837
|
+
highlighted: get(n) === get(vt)
|
|
17813
17838
|
}
|
|
17814
17839
|
}), void 0, void 0, void 0, "svelte-52lifo");
|
|
17815
17840
|
var a = child(t), s = (e) => {
|
|
17816
17841
|
var t = comment();
|
|
17817
17842
|
snippet(first_child(t), k, () => ({
|
|
17818
|
-
checked: get(
|
|
17819
|
-
indeterminate: get(
|
|
17843
|
+
checked: get(en),
|
|
17844
|
+
indeterminate: get(tn)
|
|
17820
17845
|
})), append(e, t);
|
|
17821
17846
|
}, c = (e) => {
|
|
17822
17847
|
var t = root_3$24();
|
|
@@ -17831,12 +17856,12 @@ function Select(e, t) {
|
|
|
17831
17856
|
}), append(e, t);
|
|
17832
17857
|
};
|
|
17833
17858
|
if_block(i, (e) => {
|
|
17834
|
-
get(
|
|
17859
|
+
get(en) ? e(a) : get(tn) && e(o, 1);
|
|
17835
17860
|
}), reset(t), template_effect(() => {
|
|
17836
17861
|
n = set_class(t, 1, "select-option-indicator svelte-52lifo", null, n, {
|
|
17837
|
-
checked: get(
|
|
17838
|
-
indeterminate: get(
|
|
17839
|
-
}), set_attribute(t, "data-checked", get(
|
|
17862
|
+
checked: get(en),
|
|
17863
|
+
indeterminate: get(tn)
|
|
17864
|
+
}), set_attribute(t, "data-checked", get(en) ? "true" : "false"), set_attribute(t, "data-pw", typeof G() == "string" ? `${G()}-select-all-indicator` : null), set_attribute(t, "testid", typeof G() == "string" ? `${G()}-select-all-indicator` : null);
|
|
17840
17865
|
}), append(e, t);
|
|
17841
17866
|
};
|
|
17842
17867
|
if_block(a, (e) => {
|
|
@@ -17845,11 +17870,11 @@ function Select(e, t) {
|
|
|
17845
17870
|
var l = sibling(a);
|
|
17846
17871
|
reset(t), template_effect(() => set_text(l, ` ${te() ?? ""}`)), append(e, t);
|
|
17847
17872
|
}, l = (e) => {
|
|
17848
|
-
var i = root_6$16(), s = () =>
|
|
17873
|
+
var i = root_6$16(), s = () => mn(get(t).item.id), c = () => set(vt, get(n), !0);
|
|
17849
17874
|
attribute_effect(i, (e, i) => ({
|
|
17850
17875
|
class: "select-option",
|
|
17851
17876
|
role: "option",
|
|
17852
|
-
id: `${
|
|
17877
|
+
id: `${It}-option-${get(n)}`,
|
|
17853
17878
|
"aria-selected": e,
|
|
17854
17879
|
tabindex: "-1",
|
|
17855
17880
|
...typeof get(t).item.testId == "string" ? {
|
|
@@ -17869,7 +17894,7 @@ function Select(e, t) {
|
|
|
17869
17894
|
multi: o(),
|
|
17870
17895
|
tickable: ne() && !o(),
|
|
17871
17896
|
selected: a().includes(get(t).item.id),
|
|
17872
|
-
highlighted: get(n) === get(
|
|
17897
|
+
highlighted: get(n) === get(vt)
|
|
17873
17898
|
})], void 0, void 0, "svelte-52lifo");
|
|
17874
17899
|
var l = child(i), u = (e) => {
|
|
17875
17900
|
var n = comment(), i = first_child(n), o = (e) => {
|
|
@@ -17932,79 +17957,79 @@ function Select(e, t) {
|
|
|
17932
17957
|
}), append(e, t);
|
|
17933
17958
|
};
|
|
17934
17959
|
if_block(n, (e) => {
|
|
17935
|
-
get(
|
|
17960
|
+
get(Zt).length === 0 ? e(i) : e(s, -1);
|
|
17936
17961
|
});
|
|
17937
17962
|
var c = sibling(n, 2), l = (e) => {
|
|
17938
17963
|
var t = root_7$15();
|
|
17939
17964
|
snippet(child(t), C), reset(t), append(e, t);
|
|
17940
17965
|
};
|
|
17941
17966
|
if_block(c, (e) => {
|
|
17942
|
-
typeof C() == "function" && !get(
|
|
17967
|
+
typeof C() == "function" && !get(zt) && e(l);
|
|
17943
17968
|
}), append(e, t);
|
|
17944
17969
|
};
|
|
17945
|
-
var
|
|
17970
|
+
var jn = child(An), Mn = (e) => {
|
|
17946
17971
|
var t = comment();
|
|
17947
17972
|
each(first_child(t), 16, a, (e) => e, (e, t) => {
|
|
17948
17973
|
var n = root_9$11();
|
|
17949
17974
|
remove_input_defaults(n), template_effect(() => {
|
|
17950
|
-
set_attribute(n, "name",
|
|
17975
|
+
set_attribute(n, "name", pt()), set_value(n, t), n.disabled = u();
|
|
17951
17976
|
}), append(e, n);
|
|
17952
17977
|
}), append(e, t);
|
|
17953
17978
|
};
|
|
17954
|
-
if_block(
|
|
17955
|
-
typeof
|
|
17979
|
+
if_block(jn, (e) => {
|
|
17980
|
+
typeof pt() == "string" && pt().length > 0 && e(Mn);
|
|
17956
17981
|
});
|
|
17957
|
-
var
|
|
17982
|
+
var Nn = sibling(jn, 2);
|
|
17958
17983
|
let t;
|
|
17959
|
-
var
|
|
17960
|
-
attribute_effect(
|
|
17984
|
+
var Pn = child(Nn);
|
|
17985
|
+
attribute_effect(Pn, () => ({
|
|
17961
17986
|
class: "select-trigger",
|
|
17962
|
-
onclick:
|
|
17963
|
-
onkeydown:
|
|
17987
|
+
onclick: yn,
|
|
17988
|
+
onkeydown: Cn,
|
|
17964
17989
|
role: "combobox",
|
|
17965
17990
|
"aria-expanded": at(),
|
|
17966
17991
|
"aria-haspopup": "listbox",
|
|
17967
|
-
"aria-controls":
|
|
17992
|
+
"aria-controls": It,
|
|
17968
17993
|
"aria-invalid": f() ? "true" : null,
|
|
17969
|
-
"aria-describedby": get(
|
|
17970
|
-
...get(
|
|
17971
|
-
tabindex: u() || get(
|
|
17994
|
+
"aria-describedby": get(Bt) ? Lt : null,
|
|
17995
|
+
...get(an) === null ? {} : { "aria-activedescendant": get(an) },
|
|
17996
|
+
tabindex: u() || get(Rt) ? -1 : 0
|
|
17972
17997
|
}), void 0, void 0, void 0, "svelte-52lifo");
|
|
17973
|
-
var
|
|
17998
|
+
var Fn = child(Pn), In = (e) => {
|
|
17974
17999
|
Img(e, spread_props({
|
|
17975
18000
|
inlineSvg: !0,
|
|
17976
18001
|
get src() {
|
|
17977
|
-
return
|
|
18002
|
+
return ut();
|
|
17978
18003
|
},
|
|
17979
18004
|
alt: "",
|
|
17980
18005
|
fallback: "",
|
|
17981
18006
|
classes: "select-left-icon"
|
|
17982
|
-
}, () => typeof
|
|
18007
|
+
}, () => typeof dt() == "string" ? { testId: dt() } : {}));
|
|
17983
18008
|
};
|
|
17984
|
-
if_block(
|
|
17985
|
-
typeof
|
|
18009
|
+
if_block(Fn, (e) => {
|
|
18010
|
+
typeof ut() == "string" && ut().length > 0 && e(In);
|
|
17986
18011
|
});
|
|
17987
|
-
var
|
|
18012
|
+
var Ln = sibling(Fn, 2), Rn = (e) => {
|
|
17988
18013
|
var t = comment(), n = first_child(t), i = (e) => {
|
|
17989
18014
|
var t = root_8$14(), n = first_child(t);
|
|
17990
18015
|
snippet(n, re, () => ({
|
|
17991
18016
|
value: a(),
|
|
17992
|
-
items: get(
|
|
18017
|
+
items: get(ht)
|
|
17993
18018
|
}));
|
|
17994
18019
|
var i = sibling(n, 2), o = (e) => {
|
|
17995
18020
|
var t = root_10$10();
|
|
17996
|
-
remove_input_defaults(t), bind_this(t, (e) => set(
|
|
17997
|
-
set_value(t, get(
|
|
17998
|
-
}), delegated("input", t,
|
|
18021
|
+
remove_input_defaults(t), bind_this(t, (e) => set(bt, e), () => get(bt)), template_effect(() => {
|
|
18022
|
+
set_value(t, get(gt)), set_attribute(t, "placeholder", a().length === 0 ? l() : ""), t.disabled = u(), set_attribute(t, "aria-invalid", f() ? "true" : null), set_attribute(t, "aria-describedby", get(Bt) ? Lt : null), set_attribute(t, "tabindex", u() ? -1 : 0), set_attribute(t, "data-pw", typeof G() == "string" ? `${G()}-search` : null), set_attribute(t, "testid", typeof G() == "string" ? `${G()}-search` : null);
|
|
18023
|
+
}), delegated("input", t, En), event("focus", t, Dn), append(e, t);
|
|
17999
18024
|
};
|
|
18000
18025
|
if_block(i, (e) => {
|
|
18001
|
-
get(
|
|
18026
|
+
get(Rt) && e(o);
|
|
18002
18027
|
}), append(e, t);
|
|
18003
18028
|
}, o = (e) => {
|
|
18004
18029
|
var t = root_8$14(), n = first_child(t);
|
|
18005
18030
|
each(n, 16, a, (e) => e, (e, t) => {
|
|
18006
18031
|
{
|
|
18007
|
-
let n = /* @__PURE__ */ user_derived(() =>
|
|
18032
|
+
let n = /* @__PURE__ */ user_derived(() => qt(t));
|
|
18008
18033
|
Pill(e, spread_props({
|
|
18009
18034
|
get text() {
|
|
18010
18035
|
return get(n);
|
|
@@ -18013,68 +18038,68 @@ function Select(e, t) {
|
|
|
18013
18038
|
get disabled() {
|
|
18014
18039
|
return u();
|
|
18015
18040
|
},
|
|
18016
|
-
ondismiss: () =>
|
|
18041
|
+
ondismiss: () => hn(t)
|
|
18017
18042
|
}, () => typeof G() == "string" ? { testId: `${G()}-pill-${t}` } : {}));
|
|
18018
18043
|
}
|
|
18019
18044
|
});
|
|
18020
18045
|
var i = sibling(n, 2), o = (e) => {
|
|
18021
18046
|
var t = root_10$10();
|
|
18022
|
-
remove_input_defaults(t), bind_this(t, (e) => set(
|
|
18023
|
-
set_value(t, get(
|
|
18024
|
-
}), delegated("input", t,
|
|
18047
|
+
remove_input_defaults(t), bind_this(t, (e) => set(bt, e), () => get(bt)), template_effect(() => {
|
|
18048
|
+
set_value(t, get(gt)), set_attribute(t, "placeholder", a().length === 0 ? l() : ""), t.disabled = u(), set_attribute(t, "aria-invalid", f() ? "true" : null), set_attribute(t, "aria-describedby", get(Bt) ? Lt : null), set_attribute(t, "tabindex", u() ? -1 : 0), set_attribute(t, "data-pw", typeof G() == "string" ? `${G()}-search` : null), set_attribute(t, "testid", typeof G() == "string" ? `${G()}-search` : null);
|
|
18049
|
+
}), delegated("input", t, En), event("focus", t, Dn), append(e, t);
|
|
18025
18050
|
}, s = (e) => {
|
|
18026
18051
|
var t = root_11$9(), n = child(t, !0);
|
|
18027
18052
|
reset(t), template_effect(() => set_text(n, l())), append(e, t);
|
|
18028
18053
|
};
|
|
18029
18054
|
if_block(i, (e) => {
|
|
18030
|
-
get(
|
|
18055
|
+
get(Rt) ? e(o) : a().length === 0 && e(s, 1);
|
|
18031
18056
|
}), append(e, t);
|
|
18032
18057
|
};
|
|
18033
18058
|
if_block(n, (e) => {
|
|
18034
18059
|
typeof re() == "function" ? e(i) : e(o, -1);
|
|
18035
18060
|
}), append(e, t);
|
|
18036
|
-
},
|
|
18061
|
+
}, zn = (e) => {
|
|
18037
18062
|
var t = root_10$10();
|
|
18038
|
-
remove_input_defaults(t), bind_this(t, (e) => set(
|
|
18039
|
-
set_value(t, at() ? get(
|
|
18040
|
-
}), delegated("input", t,
|
|
18041
|
-
},
|
|
18063
|
+
remove_input_defaults(t), bind_this(t, (e) => set(bt, e), () => get(bt)), template_effect(() => {
|
|
18064
|
+
set_value(t, at() ? get(gt) : get(rn)), set_attribute(t, "placeholder", get(on)), t.disabled = u(), set_attribute(t, "aria-invalid", f() ? "true" : null), set_attribute(t, "aria-describedby", get(Bt) ? Lt : null), set_attribute(t, "tabindex", u() ? -1 : 0), set_attribute(t, "data-pw", typeof G() == "string" ? `${G()}-search` : null), set_attribute(t, "testid", typeof G() == "string" ? `${G()}-search` : null);
|
|
18065
|
+
}), delegated("input", t, En), event("focus", t, Dn), append(e, t);
|
|
18066
|
+
}, Bn = (e) => {
|
|
18042
18067
|
var t = root_12$8(), n = child(t, !0);
|
|
18043
18068
|
reset(t), template_effect(() => {
|
|
18044
|
-
set_class(t, 1, clsx(get(
|
|
18069
|
+
set_class(t, 1, clsx(get(rn).length > 0 ? "select-value" : "select-placeholder"), "svelte-52lifo"), set_text(n, get(rn).length > 0 ? get(rn) : l());
|
|
18045
18070
|
}), append(e, t);
|
|
18046
18071
|
};
|
|
18047
|
-
if_block(
|
|
18048
|
-
o() ? e(
|
|
18072
|
+
if_block(Ln, (e) => {
|
|
18073
|
+
o() ? e(Rn) : get(Rt) ? e(zn, 1) : e(Bn, -1);
|
|
18049
18074
|
});
|
|
18050
|
-
var
|
|
18051
|
-
html(
|
|
18052
|
-
var
|
|
18075
|
+
var Vn = sibling(Ln, 2);
|
|
18076
|
+
html(Vn, () => chevron_down_default, !0), reset(Vn), reset(Pn), bind_this(Pn, (e) => set(xt, e), () => get(xt));
|
|
18077
|
+
var Hn = sibling(Pn, 2), Un = (e) => {
|
|
18053
18078
|
var t = root_13$7();
|
|
18054
18079
|
template_effect(() => {
|
|
18055
18080
|
set_attribute(t, "data-pw", typeof G() == "string" ? `${G()}-clear` : null), set_attribute(t, "testid", typeof G() == "string" ? `${G()}-clear` : null);
|
|
18056
18081
|
}), delegated("keydown", t, (e) => {
|
|
18057
18082
|
(e.key === "Enter" || e.key === " ") && e.stopPropagation();
|
|
18058
|
-
}), delegated("click", t,
|
|
18083
|
+
}), delegated("click", t, Gt), append(e, t);
|
|
18059
18084
|
};
|
|
18060
|
-
if_block(
|
|
18061
|
-
get(
|
|
18062
|
-
}), reset(
|
|
18063
|
-
var
|
|
18085
|
+
if_block(Hn, (e) => {
|
|
18086
|
+
get(Ht) && e(Un);
|
|
18087
|
+
}), reset(Nn);
|
|
18088
|
+
var Wn = sibling(Nn, 2), Gn = (e) => {
|
|
18064
18089
|
var t = root_14$7(), n = child(t, !0);
|
|
18065
18090
|
reset(t), template_effect(() => {
|
|
18066
|
-
set_attribute(t, "id",
|
|
18091
|
+
set_attribute(t, "id", Lt), set_attribute(t, "data-pw", typeof G() == "string" ? `${G()}-error-message` : null), set_attribute(t, "testid", typeof G() == "string" ? `${G()}-error-message` : null), set_text(n, p());
|
|
18067
18092
|
}), append(e, t);
|
|
18068
18093
|
};
|
|
18069
|
-
if_block(
|
|
18070
|
-
get(
|
|
18094
|
+
if_block(Wn, (e) => {
|
|
18095
|
+
get(Bt) && e(Gn);
|
|
18071
18096
|
});
|
|
18072
|
-
var
|
|
18097
|
+
var Kn = sibling(Wn, 2), qn = (t) => {
|
|
18073
18098
|
var n = comment(), i = first_child(n), a = (t) => {
|
|
18074
18099
|
var n = root_15$7();
|
|
18075
18100
|
let i;
|
|
18076
18101
|
var a = child(n);
|
|
18077
|
-
remove_input_defaults(a), bind_this(a, (e) => set(
|
|
18102
|
+
remove_input_defaults(a), bind_this(a, (e) => set(bt, e), () => get(bt));
|
|
18078
18103
|
var s = sibling(a, 2);
|
|
18079
18104
|
e(child(s)), reset(s);
|
|
18080
18105
|
var c = sibling(s, 2), u = (e) => {
|
|
@@ -18083,31 +18108,35 @@ function Select(e, t) {
|
|
|
18083
18108
|
};
|
|
18084
18109
|
if_block(c, (e) => {
|
|
18085
18110
|
typeof C() == "function" && e(u);
|
|
18086
|
-
}), reset(n), bind_this(n, (e) => set(
|
|
18111
|
+
}), reset(n), action(n, (e) => dn?.(e)), bind_this(n, (e) => set(St, e), () => get(St)), effect(() => bind_element_size(n, "clientWidth", (e) => set(Ct, e))), effect(() => bind_element_size(n, "clientHeight", (e) => set(wt, e))), action(n, (e) => Tn?.(e)), action(n, (e) => sn?.(e)), template_effect(() => {
|
|
18087
18112
|
i = set_class(n, 1, "select-dropdown svelte-52lifo", null, i, {
|
|
18088
|
-
"select-dropdown-right":
|
|
18089
|
-
"select-dropdown-
|
|
18090
|
-
|
|
18091
|
-
|
|
18113
|
+
"select-dropdown-right": get(Nt) === "right",
|
|
18114
|
+
"select-dropdown-up": !ft() && (get(un) === "top-left" || get(un) === "top-right"),
|
|
18115
|
+
"select-dropdown-measuring": get(Mt),
|
|
18116
|
+
"select-dropdown-portal": ft()
|
|
18117
|
+
}), set_attribute(n, "data-placement", get(un)), set_style(n, get(ln)), set_value(a, get(gt)), set_attribute(a, "placeholder", l().length > 0 ? l() : "Search"), set_attribute(a, "aria-controls", It), set_attribute(a, "data-pw", typeof G() == "string" ? `${G()}-menu-search` : null), set_attribute(a, "testid", typeof G() == "string" ? `${G()}-menu-search` : null), set_attribute(s, "id", It), set_attribute(s, "aria-multiselectable", o());
|
|
18118
|
+
}), delegated("input", a, En), delegated("keydown", a, Cn), append(t, n);
|
|
18092
18119
|
}, s = (t) => {
|
|
18093
18120
|
var n = root_16$6();
|
|
18094
18121
|
let i;
|
|
18095
|
-
e(child(n)), reset(n), bind_this(n, (e) => set(
|
|
18122
|
+
e(child(n)), reset(n), action(n, (e) => dn?.(e)), bind_this(n, (e) => set(St, e), () => get(St)), effect(() => bind_element_size(n, "clientWidth", (e) => set(Ct, e))), effect(() => bind_element_size(n, "clientHeight", (e) => set(wt, e))), action(n, (e) => sn?.(e)), template_effect(() => {
|
|
18096
18123
|
i = set_class(n, 1, "select-dropdown svelte-52lifo", null, i, {
|
|
18097
|
-
"select-dropdown-right":
|
|
18098
|
-
"select-dropdown-
|
|
18099
|
-
|
|
18124
|
+
"select-dropdown-right": get(Nt) === "right",
|
|
18125
|
+
"select-dropdown-up": !ft() && (get(un) === "top-left" || get(un) === "top-right"),
|
|
18126
|
+
"select-dropdown-measuring": get(Mt),
|
|
18127
|
+
"select-dropdown-portal": ft()
|
|
18128
|
+
}), set_attribute(n, "data-placement", get(un)), set_attribute(n, "id", It), set_attribute(n, "aria-multiselectable", o()), set_style(n, get(ln));
|
|
18100
18129
|
}), append(t, n);
|
|
18101
18130
|
};
|
|
18102
18131
|
if_block(i, (e) => {
|
|
18103
|
-
get(
|
|
18132
|
+
get(zt) ? e(a) : e(s, -1);
|
|
18104
18133
|
}), append(t, n);
|
|
18105
18134
|
};
|
|
18106
|
-
if_block(
|
|
18107
|
-
at() && !u() && e(
|
|
18108
|
-
}), reset(
|
|
18135
|
+
if_block(Kn, (e) => {
|
|
18136
|
+
at() && !u() && e(qn);
|
|
18137
|
+
}), reset(An), bind_this(An, (e) => set(yt, e), () => get(yt)), template_effect(() => t = set_class(Nn, 1, "select-control svelte-52lifo", null, t, { "has-clear": get(Ht) }));
|
|
18109
18138
|
}
|
|
18110
|
-
return append(e,
|
|
18139
|
+
return append(e, An), pop(kn);
|
|
18111
18140
|
}
|
|
18112
18141
|
delegate([
|
|
18113
18142
|
"input",
|
|
@@ -18139,6 +18168,7 @@ delegate([
|
|
|
18139
18168
|
classes: {},
|
|
18140
18169
|
open: {},
|
|
18141
18170
|
dropdownAlign: {},
|
|
18171
|
+
placement: {},
|
|
18142
18172
|
hierarchy: {},
|
|
18143
18173
|
leftIcon: {},
|
|
18144
18174
|
leftIconTestId: {},
|
|
@@ -18216,6 +18246,10 @@ customElements.define("sui-select", create_custom_element(Select_wc, {
|
|
|
18216
18246
|
attribute: "dropdown-align",
|
|
18217
18247
|
type: "String"
|
|
18218
18248
|
},
|
|
18249
|
+
placement: {
|
|
18250
|
+
attribute: "placement",
|
|
18251
|
+
type: "String"
|
|
18252
|
+
},
|
|
18219
18253
|
showSelectAll: {
|
|
18220
18254
|
attribute: "show-select-all",
|
|
18221
18255
|
reflect: !0,
|