@shtabapp/ui-kit 1.63.0 → 1.64.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.
Files changed (113) hide show
  1. package/CHANGELOG.md +20 -2
  2. package/dist/{SAvatar-DTG0odWX.cjs → SAvatar-ClmtSIFg.cjs} +1 -1
  3. package/dist/{SAvatar-BK8cEzGY.js → SAvatar-hWbsODUa.js} +1 -1
  4. package/dist/{SAvatarGroup-CTC_esUv.cjs → SAvatarGroup-By8oMNTe.cjs} +1 -1
  5. package/dist/{SAvatarGroup-F5w88NGf.js → SAvatarGroup-CSSCQKdH.js} +1 -1
  6. package/dist/SColorPicker-BRSi0Xhm.cjs +1 -0
  7. package/dist/{SColorPicker-BL-zrskU.js → SColorPicker-Djr-R81h.js} +2 -1
  8. package/dist/SDropdownMenu-2koPU6IG.js +38 -0
  9. package/dist/SDropdownMenu-k9SxaFVH.cjs +1 -0
  10. package/dist/SList-D0PDc8VN.cjs +1 -0
  11. package/dist/SList-D2K9dNsj.js +465 -0
  12. package/dist/SSelect-CRlkCLik.cjs +1 -0
  13. package/dist/SSelect-D6taevzT.js +650 -0
  14. package/dist/STable-NbCfen0n.cjs +1 -0
  15. package/dist/STable-aS1eGuVB.js +3445 -0
  16. package/dist/components/SList/SList.vue.d.ts.map +1 -1
  17. package/dist/components/SList/utils/resolveListItemFields.d.ts +1 -1
  18. package/dist/components/SList/utils/resolveListItemFields.d.ts.map +1 -1
  19. package/dist/components/STable/STable.types.d.ts +317 -0
  20. package/dist/components/STable/STable.types.d.ts.map +1 -0
  21. package/dist/components/STable/STable.vue.d.ts +154 -0
  22. package/dist/components/STable/STable.vue.d.ts.map +1 -0
  23. package/dist/components/STable/constants/tableSizes.d.ts +76 -0
  24. package/dist/components/STable/constants/tableSizes.d.ts.map +1 -0
  25. package/dist/components/STable/index.d.ts +4 -0
  26. package/dist/components/STable/index.d.ts.map +1 -0
  27. package/dist/components/STable/parts/STableCellText.vue.d.ts +23 -0
  28. package/dist/components/STable/parts/STableCellText.vue.d.ts.map +1 -0
  29. package/dist/components/STable/parts/STableCheckbox.vue.d.ts +17 -0
  30. package/dist/components/STable/parts/STableCheckbox.vue.d.ts.map +1 -0
  31. package/dist/components/STable/parts/STableContentRow.vue.d.ts +41 -0
  32. package/dist/components/STable/parts/STableContentRow.vue.d.ts.map +1 -0
  33. package/dist/components/STable/parts/STableGroupRow.vue.d.ts +55 -0
  34. package/dist/components/STable/parts/STableGroupRow.vue.d.ts.map +1 -0
  35. package/dist/components/STable/parts/STableHeaderCell.vue.d.ts +36 -0
  36. package/dist/components/STable/parts/STableHeaderCell.vue.d.ts.map +1 -0
  37. package/dist/components/STable/parts/STableHint.vue.d.ts +7 -0
  38. package/dist/components/STable/parts/STableHint.vue.d.ts.map +1 -0
  39. package/dist/components/STable/parts/STablePlaceholderRow.vue.d.ts +25 -0
  40. package/dist/components/STable/parts/STablePlaceholderRow.vue.d.ts.map +1 -0
  41. package/dist/components/STable/parts/STableRow.vue.d.ts +67 -0
  42. package/dist/components/STable/parts/STableRow.vue.d.ts.map +1 -0
  43. package/dist/components/STable/parts/STableSkeletonRow.vue.d.ts +27 -0
  44. package/dist/components/STable/parts/STableSkeletonRow.vue.d.ts.map +1 -0
  45. package/dist/components/STable/utils/tableDndShared.d.ts +17 -0
  46. package/dist/components/STable/utils/tableDndShared.d.ts.map +1 -0
  47. package/dist/components/STable/utils/useFlatTableRows.d.ts +62 -0
  48. package/dist/components/STable/utils/useFlatTableRows.d.ts.map +1 -0
  49. package/dist/components/STable/utils/useTableCellPlans.d.ts +48 -0
  50. package/dist/components/STable/utils/useTableCellPlans.d.ts.map +1 -0
  51. package/dist/components/STable/utils/useTableColumnDnd.d.ts +28 -0
  52. package/dist/components/STable/utils/useTableColumnDnd.d.ts.map +1 -0
  53. package/dist/components/STable/utils/useTableColumnResize.d.ts +24 -0
  54. package/dist/components/STable/utils/useTableColumnResize.d.ts.map +1 -0
  55. package/dist/components/STable/utils/useTableColumns.d.ts +86 -0
  56. package/dist/components/STable/utils/useTableColumns.d.ts.map +1 -0
  57. package/dist/components/STable/utils/useTableGridFocus.d.ts +79 -0
  58. package/dist/components/STable/utils/useTableGridFocus.d.ts.map +1 -0
  59. package/dist/components/STable/utils/useTableGridKeyboard.d.ts +36 -0
  60. package/dist/components/STable/utils/useTableGridKeyboard.d.ts.map +1 -0
  61. package/dist/components/STable/utils/useTableRenderEntries.d.ts +56 -0
  62. package/dist/components/STable/utils/useTableRenderEntries.d.ts.map +1 -0
  63. package/dist/components/STable/utils/useTableRowDnd.d.ts +37 -0
  64. package/dist/components/STable/utils/useTableRowDnd.d.ts.map +1 -0
  65. package/dist/components/STable/utils/useTableRowHydration.d.ts +29 -0
  66. package/dist/components/STable/utils/useTableRowHydration.d.ts.map +1 -0
  67. package/dist/components/STable/utils/useTableScrollScale.d.ts +34 -0
  68. package/dist/components/STable/utils/useTableScrollScale.d.ts.map +1 -0
  69. package/dist/components/STable/utils/useTableSelection.d.ts +27 -0
  70. package/dist/components/STable/utils/useTableSelection.d.ts.map +1 -0
  71. package/dist/components/STable/utils/useTableServiceRows.d.ts +57 -0
  72. package/dist/components/STable/utils/useTableServiceRows.d.ts.map +1 -0
  73. package/dist/components/STable/utils/useTableSorting.d.ts +21 -0
  74. package/dist/components/STable/utils/useTableSorting.d.ts.map +1 -0
  75. package/dist/components/STable/utils/useTableStickyRows.d.ts +38 -0
  76. package/dist/components/STable/utils/useTableStickyRows.d.ts.map +1 -0
  77. package/dist/components/STable/utils/useTableStyleVars.d.ts +22 -0
  78. package/dist/components/STable/utils/useTableStyleVars.d.ts.map +1 -0
  79. package/dist/components/STable/utils/useTableVirtualRows.d.ts +56 -0
  80. package/dist/components/STable/utils/useTableVirtualRows.d.ts.map +1 -0
  81. package/dist/composables/treeKeyboardNavigation.d.ts +26 -0
  82. package/dist/composables/treeKeyboardNavigation.d.ts.map +1 -0
  83. package/dist/composables/useFlatTreeList.d.ts +1 -0
  84. package/dist/composables/useFlatTreeList.d.ts.map +1 -1
  85. package/dist/entries/avatar-group.cjs +1 -1
  86. package/dist/entries/avatar-group.js +1 -1
  87. package/dist/entries/avatar.cjs +1 -1
  88. package/dist/entries/avatar.js +1 -1
  89. package/dist/entries/color-picker.cjs +1 -1
  90. package/dist/entries/color-picker.js +1 -1
  91. package/dist/entries/list.cjs +1 -1
  92. package/dist/entries/list.js +1 -1
  93. package/dist/entries/select.cjs +1 -1
  94. package/dist/entries/select.js +1 -1
  95. package/dist/entries/table.cjs +1 -0
  96. package/dist/entries/table.d.ts +3 -0
  97. package/dist/entries/table.d.ts.map +1 -0
  98. package/dist/entries/table.js +2 -0
  99. package/dist/index.cjs +1 -1
  100. package/dist/index.d.ts +2 -0
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +113 -110
  103. package/dist/treeKeyboardNavigation-BOz2SVus.cjs +1 -0
  104. package/dist/treeKeyboardNavigation-SmxTdnDz.js +131 -0
  105. package/dist/uikit-components.css +1 -1
  106. package/package.json +14 -3
  107. package/dist/SColorPicker-CvhpJEj1.cjs +0 -1
  108. package/dist/SList-C39LrsoS.js +0 -590
  109. package/dist/SList-Du0gqyFs.cjs +0 -1
  110. package/dist/SSelect-BkX3VuCr.js +0 -682
  111. package/dist/SSelect-CHWKMbB_.cjs +0 -1
  112. package/dist/components/SList/utils/treeKeyboardNavigation.d.ts +0 -16
  113. package/dist/components/SList/utils/treeKeyboardNavigation.d.ts.map +0 -1
@@ -0,0 +1,650 @@
1
+ import { n as e, r as t, t as n } from "./SButton.types-CpdHQtyx.js";
2
+ import { t as r } from "./SButton-6AL2ipRT.js";
3
+ import { n as i } from "./useSelectionGroup-BCAmPf3R.js";
4
+ import { t as a } from "./SDropdown-LOTCtlCX.js";
5
+ import { t as o } from "./SDropdownMenu-2koPU6IG.js";
6
+ import { n as s, t as c } from "./SInput-BLxSis1f.js";
7
+ import { t as l } from "./SListItem-C1IeCv8M.js";
8
+ import { i as u, n as d, r as f, t as ee } from "./SList-D2K9dNsj.js";
9
+ import { computed as p, createBlock as m, createCommentVNode as h, createElementBlock as g, createElementVNode as te, createSlots as _, createTextVNode as ne, createVNode as v, defineComponent as y, guardReactiveProps as b, isRef as re, mergeModels as x, mergeProps as S, nextTick as C, normalizeClass as ie, normalizeProps as w, openBlock as T, ref as E, renderSlot as D, toDisplayString as O, toValue as k, unref as A, useId as ae, useModel as oe, useSlots as se, useTemplateRef as j, vModelText as ce, watch as le, withCtx as M, withDirectives as ue, withModifiers as de } from "vue";
10
+ import { SIcon as fe, useUiKitI18n as pe } from "@shtabapp/ui-kit-primitives";
11
+ //#region src/components/SSelect/utils/buildSelectListItemProps.ts
12
+ var me = ({ listItemScope: e, itemTitle: t, itemSubtitle: n, itemDisabled: r, itemIconLeft: i, listActiveKey: a, isOptionSelected: o }) => {
13
+ let s = e.item;
14
+ return {
15
+ rowKey: e.key,
16
+ title: u(s, t),
17
+ subtitle: u(s, n),
18
+ disabled: d(s, r),
19
+ iconLeft: f(s, i),
20
+ selected: o,
21
+ active: a === e.key,
22
+ revealRight: e.revealRight,
23
+ tiny: !0
24
+ };
25
+ }, he = (e) => typeof e == "string" || typeof e == "number", N = (e, t) => {
26
+ let n = e[t];
27
+ if (he(n)) return n;
28
+ }, P = (e) => typeof e == "string" ? e : String(e), F = (e) => e == null ? !1 : typeof e == "string" ? e.length > 0 : !0, I = (e, t, n) => t.find((t) => P(N(t, n) ?? "") === e), L = (e) => typeof e == "object" && !!e, R = (e, t, n) => {
29
+ let r = I(e, t, n);
30
+ if (r) return N(r, n);
31
+ }, z = /* @__PURE__ */ function(e) {
32
+ return e.INPUT = "input", e.CONTENT = "content", e;
33
+ }({}), B = (e, t, n) => {
34
+ if (!e) return !0;
35
+ let r = e.toLocaleLowerCase(), i = u(t, n.itemTitle)?.toLocaleLowerCase() ?? "", a = P(N(t, n.itemValue) ?? "").toLocaleLowerCase();
36
+ return i.includes(r) || a.includes(r);
37
+ }, V = (e, t, n, r) => {
38
+ let i = r ?? ((e, t) => B(e, t, n));
39
+ return t ? e.filter((e) => i(t, e)) : [...e];
40
+ }, H = (e) => typeof e == "string" && F(e), U = (e) => typeof e == "number" && F(e), ge = (e, t, n) => {
41
+ if (t) {
42
+ if (!L(e)) return;
43
+ let t = N(e, n);
44
+ return H(t) || U(t) ? t : void 0;
45
+ }
46
+ let r = typeof e == "string" || typeof e == "number" ? e : void 0;
47
+ if (H(r) || U(r)) return r;
48
+ }, _e = (e, t, n) => e ? (Array.isArray(e) ? e : [e]).flatMap((e) => {
49
+ let r = ge(e, t, n);
50
+ return F(r) ? [r] : [];
51
+ }) : [], ve = (e, t) => {
52
+ if (H(t)) {
53
+ e.value = t;
54
+ return;
55
+ }
56
+ if (U(t)) {
57
+ e.value = t;
58
+ return;
59
+ }
60
+ e.value = void 0;
61
+ }, W = (e, t, n) => t.flatMap((t) => {
62
+ let r = P(t), i = e.find((e) => P(N(e, n) ?? "") === r);
63
+ return i ? [i] : [];
64
+ }), ye = ({ modelValue: e, options: t, itemFields: n, multiple: r, returnObject: a, searchable: o, filterOption: s, isDropdownOpen: c, searchQuery: l }) => {
65
+ let d = p(() => k(r)), f = p(() => k(a)), ee = p(() => k(o) === z.INPUT), m = p(() => k(o) === z.CONTENT), h = p(() => !!k(o)), g = p(() => {
66
+ let t = k(n);
67
+ return _e(e.value, f.value, t.itemValue);
68
+ }), te = p(() => {
69
+ let e = k(t), r = k(n);
70
+ return V(e, h.value ? l.value : "", r, k(s));
71
+ }), _ = p(() => d.value ? i.MULTIPLE : i.SINGLE), ne = (t, n, r) => {
72
+ if (f.value) {
73
+ e.value = W(n, t, r);
74
+ return;
75
+ }
76
+ e.value = t;
77
+ }, v = (t, n, r) => {
78
+ if (!t) {
79
+ e.value = void 0;
80
+ return;
81
+ }
82
+ if (f.value) {
83
+ e.value = I(t, n, r) ?? void 0;
84
+ return;
85
+ }
86
+ ve(e, R(t, n, r));
87
+ }, y = p({
88
+ get: () => {
89
+ if (d.value) return g.value.map((e) => P(e));
90
+ let e = g.value[0];
91
+ if (F(e)) return P(e);
92
+ },
93
+ set: (e) => {
94
+ let r = k(t), i = k(n);
95
+ if (d.value) {
96
+ ne((Array.isArray(e) ? e : []).map((e) => R(e, r, i.itemValue)).filter((e) => F(e)), r, i.itemValue);
97
+ return;
98
+ }
99
+ v(typeof e == "string" ? e : void 0, r, i.itemValue);
100
+ }
101
+ }), b = p(() => g.value.length > 0), re = (e, t, n) => {
102
+ let r = P(t);
103
+ return e.find((e) => P(N(e, n) ?? "") === r);
104
+ }, x = p(() => {
105
+ let e = g.value[0];
106
+ if (!F(e)) return "";
107
+ let r = k(n), i = re(k(t), e, r.itemValue);
108
+ return i ? u(i, r.itemTitle) ?? "" : P(e);
109
+ }), S = p(() => {
110
+ let e = k(t), r = k(n);
111
+ return g.value.map((t) => {
112
+ let n = re(e, t, r.itemValue);
113
+ return n ? u(n, r.itemTitle) ?? "" : P(t);
114
+ });
115
+ }), C = p(() => S.value.join(", ")), ie = p(() => d.value ? g.value.length === 0 : !x.value), w = p(() => ee.value && (c.value || d.value)), T = () => {
116
+ l.value = "";
117
+ };
118
+ return le(c, (e) => {
119
+ e || T();
120
+ }), le(() => k(o), () => {
121
+ T();
122
+ }), {
123
+ searchQuery: l,
124
+ selectedValues: g,
125
+ filteredOptions: te,
126
+ listSelectionMode: _,
127
+ listSelectedModel: y,
128
+ hasSelectedValues: b,
129
+ singleDisplayLabel: x,
130
+ multipleDisplayLabels: S,
131
+ multipleDisplayText: C,
132
+ showPlaceholder: ie,
133
+ showInputSearchField: w,
134
+ isSearchableMode: h,
135
+ isSearchableInputMode: ee,
136
+ isSearchableContentMode: m,
137
+ isMultipleMode: d,
138
+ isReturnObjectMode: f,
139
+ clearSelection: () => {
140
+ e.value = void 0, T();
141
+ },
142
+ removeSelectedValue: (e) => {
143
+ let r = P(e);
144
+ ne(g.value.filter((e) => P(e) !== r), k(t), k(n).itemValue);
145
+ },
146
+ resetSearchQuery: T,
147
+ formatSelectListKey: P,
148
+ resolveValueFromListKey: (e) => R(e, k(t), k(n).itemValue)
149
+ };
150
+ }, be = {
151
+ key: 1,
152
+ class: "s-ui-select__empty s-ui-typography-body-14-regular"
153
+ }, xe = [
154
+ "id",
155
+ "aria-expanded",
156
+ "aria-controls",
157
+ "aria-disabled",
158
+ "aria-readonly",
159
+ "aria-autocomplete",
160
+ "tabindex"
161
+ ], Se = {
162
+ key: 0,
163
+ class: "s-ui-select__value"
164
+ }, Ce = {
165
+ key: 1,
166
+ class: "s-ui-select__placeholder"
167
+ }, we = {
168
+ key: 1,
169
+ class: "s-ui-select__placeholder"
170
+ }, Te = {
171
+ key: 2,
172
+ class: "s-ui-select__value"
173
+ }, Ee = {
174
+ key: 3,
175
+ class: "s-ui-select__value-suffix"
176
+ }, De = [
177
+ "name",
178
+ "placeholder",
179
+ "disabled",
180
+ "readonly"
181
+ ], Oe = 20, ke = "100%", Ae = 20, G = /* @__PURE__ */ y({
182
+ __name: "SSelect",
183
+ props: /*@__PURE__*/ x({
184
+ options: {},
185
+ itemValue: { default: "value" },
186
+ itemTitle: { default: "label" },
187
+ itemSubtitle: { default: "subtitle" },
188
+ itemId: {},
189
+ itemDisabled: { default: "disabled" },
190
+ itemIconLeft: { default: "iconLeft" },
191
+ multiple: {
192
+ type: Boolean,
193
+ default: !1
194
+ },
195
+ returnObject: {
196
+ type: Boolean,
197
+ default: !1
198
+ },
199
+ clearable: {
200
+ type: Boolean,
201
+ default: !1
202
+ },
203
+ closableOptions: {
204
+ type: Boolean,
205
+ default: !1
206
+ },
207
+ searchable: {
208
+ type: [String, Boolean],
209
+ default: !1
210
+ },
211
+ closeOnSelect: {
212
+ type: Boolean,
213
+ default: !0
214
+ },
215
+ listHeight: { default: 320 },
216
+ searchPlaceholder: { default: "Search" },
217
+ filterOption: { type: Function },
218
+ fitViewport: {
219
+ type: Boolean,
220
+ default: !0
221
+ },
222
+ panelWidth: {},
223
+ surfaceClass: {},
224
+ canLoadMore: { type: Function },
225
+ endReachedDistance: { default: 0 },
226
+ label: {},
227
+ labelProps: {},
228
+ placeholder: {},
229
+ helpMessages: {},
230
+ errorMessages: {},
231
+ bordered: {
232
+ type: Boolean,
233
+ default: !0
234
+ },
235
+ disabled: {
236
+ type: Boolean,
237
+ default: !1
238
+ },
239
+ readonly: {
240
+ type: Boolean,
241
+ default: !1
242
+ },
243
+ iconLeft: {},
244
+ customize: { default: () => s.NONE },
245
+ name: {},
246
+ id: {}
247
+ }, {
248
+ modelValue: {},
249
+ modelModifiers: {},
250
+ searchQuery: { default: "" },
251
+ searchQueryModifiers: {}
252
+ }),
253
+ emits: /*@__PURE__*/ x([
254
+ "clear",
255
+ "focus",
256
+ "blur",
257
+ "open",
258
+ "close",
259
+ "endReached"
260
+ ], ["update:modelValue", "update:searchQuery"]),
261
+ setup(i, { expose: s, emit: u }) {
262
+ let d = oe(i, "modelValue"), f = oe(i, "searchQuery"), y = u, { t: x } = pe(), k = se(), he = ae(), N = ae(), P = j("triggerInputRef"), I = E(""), L = j("searchInputElementRef"), R = j("panelSearchInputElementRef"), z = j("listElementRef"), B = E(), V = E(!1), H = E(!1), U = p(() => i.panelWidth === void 0), ge = p(() => i.panelWidth ?? ke), _e = p(() => i.itemId ?? i.itemValue), ve = p(() => ({
263
+ itemValue: i.itemValue,
264
+ itemTitle: i.itemTitle,
265
+ itemSubtitle: i.itemSubtitle,
266
+ itemId: _e.value
267
+ })), { selectedValues: W, filteredOptions: G, listSelectionMode: je, listSelectedModel: K, hasSelectedValues: Me, singleDisplayLabel: Ne, multipleDisplayLabels: Pe, multipleDisplayText: Fe, showPlaceholder: q, showInputSearchField: J, isSearchableMode: Ie, isSearchableInputMode: Y, isSearchableContentMode: X, isMultipleMode: Z, clearSelection: Le, removeSelectedValue: Re, resolveValueFromListKey: ze, formatSelectListKey: Be } = ye({
268
+ modelValue: d,
269
+ options: () => i.options,
270
+ itemFields: () => ve.value,
271
+ multiple: () => i.multiple,
272
+ returnObject: () => i.returnObject,
273
+ searchable: () => i.searchable,
274
+ filterOption: () => i.filterOption,
275
+ isDropdownOpen: V,
276
+ searchQuery: f
277
+ }), Ve = p(() => ({
278
+ disabled: i.disabled,
279
+ displayLabel: Ne.value
280
+ })), He = p(() => G.value.length > Ae), Ue = p(() => X.value || He.value ? i.listHeight : "auto"), We = p(() => {
281
+ if (!(X.value || He.value)) return i.listHeight;
282
+ }), Ge = p(() => W.value.map((e) => Be(e))), Ke = (e) => Ge.value.includes(e), qe = () => ({ tiny: !0 }), Je = (e) => me({
283
+ listItemScope: e,
284
+ itemTitle: i.itemTitle,
285
+ itemSubtitle: i.itemSubtitle,
286
+ itemDisabled: i.itemDisabled,
287
+ itemIconLeft: i.itemIconLeft,
288
+ listActiveKey: B.value,
289
+ isOptionSelected: Ke(e.key)
290
+ }), Ye = (e) => {
291
+ let t = ze(e);
292
+ if (F(t)) {
293
+ if (Z.value) {
294
+ Re(t);
295
+ return;
296
+ }
297
+ d.value = void 0;
298
+ }
299
+ }, Xe = p(() => i.id ?? he), Ze = p(() => N), Qe = p(() => P.value?.fieldElementRef ?? null), $e = p(() => ({
300
+ labels: Pe.value,
301
+ values: W.value,
302
+ displayText: Fe.value,
303
+ disabled: i.disabled || i.readonly,
304
+ removeValue: Re
305
+ })), et = p(() => {
306
+ if (!i.disabled && (i.readonly && !Y.value || !Y.value)) return 0;
307
+ }), tt = p(() => ({
308
+ "s-ui-select--disabled": i.disabled,
309
+ "s-ui-select--readonly": i.readonly,
310
+ "s-ui-select--multiple": Z.value,
311
+ "s-ui-select--open": V.value
312
+ })), nt = () => {
313
+ if (X.value) {
314
+ R.value?.focus();
315
+ return;
316
+ }
317
+ L.value?.focus();
318
+ }, rt = async () => {
319
+ await C(), R.value?.focus();
320
+ }, it = async () => {
321
+ await C(), await z.value?.focusNavigation();
322
+ }, Q = async () => {
323
+ if (!(i.disabled || i.readonly) && !V.value) {
324
+ if (V.value = !0, y("open"), X.value) {
325
+ await rt();
326
+ return;
327
+ }
328
+ if (Y.value) {
329
+ await C(), L.value?.focus();
330
+ return;
331
+ }
332
+ await it();
333
+ }
334
+ }, at = async () => {
335
+ i.disabled || i.readonly || V.value || await Q();
336
+ };
337
+ le(f, async (e) => {
338
+ Y.value && (i.disabled || i.readonly || e && (V.value || await Q()));
339
+ });
340
+ let $ = () => {
341
+ V.value && (V.value = !1, B.value = void 0, y("close"));
342
+ }, ot = () => {
343
+ !i.closeOnSelect || Z.value || $();
344
+ };
345
+ le(d, (e, t) => {
346
+ !i.closeOnSelect || Z.value || !V.value || !e || e === t || $();
347
+ });
348
+ let st = (e) => {
349
+ V.value && e.target instanceof Element && e.target.closest(".s-ui-list-item") && ot();
350
+ }, ct = async (e) => {
351
+ e.key !== "Enter" && e.key !== " " && e.key !== "Spacebar" || V.value && (await C(), ot());
352
+ }, lt = async () => {
353
+ if (V.value) {
354
+ $();
355
+ return;
356
+ }
357
+ await Q();
358
+ }, ut = async (e) => {
359
+ if (!(i.disabled || i.readonly) && e.target instanceof HTMLElement) {
360
+ if (e.target.closest(".s-ui-select__search-input")) {
361
+ V.value || await Q();
362
+ return;
363
+ }
364
+ await lt();
365
+ }
366
+ }, dt = async (e) => e.key !== "ArrowDown" && e.key !== "ArrowUp" ? !1 : (e.preventDefault(), e.stopPropagation(), V.value || await Q(), await it(), await z.value?.handleKeyboardNavigation(e), !0), ft = (e) => {
367
+ let t = ze(e);
368
+ if (t) {
369
+ if (Z.value) {
370
+ W.value.some((t) => Be(t) === e) ? Re(t) : K.value = [...W.value.map((e) => Be(e)), e];
371
+ return;
372
+ }
373
+ K.value = e, ot();
374
+ }
375
+ }, pt = async (e) => {
376
+ if (!(i.disabled || i.readonly) && !await dt(e)) {
377
+ if (e.key === "Escape") {
378
+ e.preventDefault(), $();
379
+ return;
380
+ }
381
+ if (e.key === "Enter" || e.key === " ") {
382
+ if (e.preventDefault(), V.value && B.value) {
383
+ ft(B.value);
384
+ return;
385
+ }
386
+ await lt();
387
+ }
388
+ }
389
+ }, mt = async (e) => {
390
+ if (e.key === "Escape") {
391
+ e.preventDefault(), $();
392
+ return;
393
+ }
394
+ await dt(e);
395
+ }, ht = mt, gt = (e) => {
396
+ i.disabled || (H.value || y("focus", e), H.value = !0);
397
+ }, _t = (e) => {
398
+ if (!(e.currentTarget instanceof HTMLElement)) return;
399
+ let t = e.relatedTarget;
400
+ t instanceof Node && e.currentTarget.contains(t) || (H.value = !1, y("blur", e));
401
+ }, vt = () => {
402
+ Le(), y("clear");
403
+ }, yt = (e) => {
404
+ y("endReached", e);
405
+ };
406
+ return s({
407
+ open: Q,
408
+ close: $,
409
+ toggle: lt,
410
+ focusSearchInput: nt
411
+ }), (s, u) => (T(), g("div", { class: ie(["s-ui-select", tt.value]) }, [v(A(a), {
412
+ modelValue: V.value,
413
+ "onUpdate:modelValue": u[4] ||= (e) => V.value = e,
414
+ reference: Qe.value,
415
+ disabled: i.disabled,
416
+ "match-reference-width": U.value,
417
+ "fit-viewport": i.fitViewport,
418
+ "surface-class": i.surfaceClass,
419
+ "content-id": Ze.value,
420
+ "dismiss-on-click-outside": !0,
421
+ "dismiss-on-escape": !0
422
+ }, {
423
+ content: M(() => [v(A(o), {
424
+ class: "s-ui-select__menu",
425
+ width: ge.value
426
+ }, _({
427
+ default: M(() => [te("div", {
428
+ class: "s-ui-select__menu-body",
429
+ onClick: st,
430
+ onKeydown: ct
431
+ }, [A(G).length > 0 ? (T(), m(A(ee), {
432
+ key: 0,
433
+ ref_key: "listElementRef",
434
+ ref: z,
435
+ modelValue: B.value,
436
+ "onUpdate:modelValue": u[2] ||= (e) => B.value = e,
437
+ selected: A(K),
438
+ "onUpdate:selected": u[3] ||= (e) => re(K) ? K.value = e : null,
439
+ items: A(G),
440
+ "item-key": _e.value,
441
+ "title-key": i.itemTitle,
442
+ "subtitle-key": i.itemSubtitle,
443
+ "icon-left-key": i.itemIconLeft,
444
+ "disabled-key": i.itemDisabled,
445
+ "selection-mode": A(je),
446
+ mandatory: !i.multiple,
447
+ height: Ue.value,
448
+ "max-height": We.value,
449
+ virtual: He.value,
450
+ "item-props": qe,
451
+ "selected-on-top": A(Z),
452
+ "can-load-more": i.canLoadMore,
453
+ "end-reached-distance": i.endReachedDistance,
454
+ onEndReached: yt
455
+ }, _({ _: 2 }, [A(k).option || A(k)["option-icon"] || i.closableOptions || A(Z) ? {
456
+ name: "item",
457
+ fn: M((a) => [A(k).option ? D(s.$slots, "option", w(S({ key: 0 }, a))) : i.closableOptions ? (T(), m(A(l), w(S({ key: 1 }, Je(a))), _({ _: 2 }, [A(k)["option-icon"] ? {
458
+ name: "icon-left",
459
+ fn: M(() => [D(s.$slots, "option-icon", w(b(a)))]),
460
+ key: "0"
461
+ } : void 0, Ke(a.key) ? {
462
+ name: "right",
463
+ fn: M((i) => [v(A(r), {
464
+ appearance: A(n).BARE,
465
+ variant: A(t).NEUTRAL,
466
+ size: A(e).SMALL,
467
+ icon: "closeMini",
468
+ "aria-label": A(x)("select.removeOption"),
469
+ disabled: i.disabled || i.readonly,
470
+ tabindex: -1,
471
+ onClick: de((e) => Ye(a.key), ["stop"])
472
+ }, null, 8, [
473
+ "appearance",
474
+ "variant",
475
+ "size",
476
+ "aria-label",
477
+ "disabled",
478
+ "onClick"
479
+ ])]),
480
+ key: "1"
481
+ } : void 0]), 1040)) : (T(), m(A(l), w(S({ key: 2 }, Je(a))), _({ _: 2 }, [A(k)["option-icon"] ? {
482
+ name: "icon-left",
483
+ fn: M(() => [D(s.$slots, "option-icon", w(b(a)))]),
484
+ key: "0"
485
+ } : void 0]), 1040))]),
486
+ key: "0"
487
+ } : void 0]), 1032, [
488
+ "modelValue",
489
+ "selected",
490
+ "items",
491
+ "item-key",
492
+ "title-key",
493
+ "subtitle-key",
494
+ "icon-left-key",
495
+ "disabled-key",
496
+ "selection-mode",
497
+ "mandatory",
498
+ "height",
499
+ "max-height",
500
+ "virtual",
501
+ "selected-on-top",
502
+ "can-load-more",
503
+ "end-reached-distance"
504
+ ])) : (T(), g("div", be, [D(s.$slots, "empty", {}, () => [ne(O(A(x)("select.noOptions")), 1)])]))], 32)]),
505
+ _: 2
506
+ }, [A(X) || A(k)["panel-header"] ? {
507
+ name: "header",
508
+ fn: M(() => [D(s.$slots, "panel-header"), A(X) ? (T(), m(A(c), {
509
+ key: 0,
510
+ ref_key: "panelSearchInputElementRef",
511
+ ref: R,
512
+ modelValue: f.value,
513
+ "onUpdate:modelValue": u[0] ||= (e) => f.value = e,
514
+ placeholder: i.searchPlaceholder,
515
+ disabled: i.disabled,
516
+ clearable: !1,
517
+ "icon-left": "search",
518
+ onClick: u[1] ||= de(() => {}, ["stop"]),
519
+ onKeydown: A(ht)
520
+ }, null, 8, [
521
+ "modelValue",
522
+ "placeholder",
523
+ "disabled",
524
+ "onKeydown"
525
+ ])) : h("", !0)]),
526
+ key: "0"
527
+ } : void 0, A(k)["panel-footer"] ? {
528
+ name: "footer",
529
+ fn: M(() => [D(s.$slots, "panel-footer")]),
530
+ key: "1"
531
+ } : void 0]), 1032, ["width"])]),
532
+ _: 3
533
+ }, 8, [
534
+ "modelValue",
535
+ "reference",
536
+ "disabled",
537
+ "match-reference-width",
538
+ "fit-viewport",
539
+ "surface-class",
540
+ "content-id"
541
+ ]), v(A(c), {
542
+ ref_key: "triggerInputRef",
543
+ ref: P,
544
+ modelValue: I.value,
545
+ "onUpdate:modelValue": u[7] ||= (e) => I.value = e,
546
+ label: i.label,
547
+ "label-props": i.labelProps,
548
+ placeholder: i.placeholder,
549
+ "help-messages": i.helpMessages,
550
+ "error-messages": i.errorMessages,
551
+ bordered: i.bordered,
552
+ disabled: i.disabled,
553
+ readonly: i.readonly,
554
+ clearable: i.clearable,
555
+ "has-value": A(Me),
556
+ focused: H.value || V.value,
557
+ "icon-left": i.iconLeft,
558
+ customize: i.customize,
559
+ name: i.name,
560
+ id: Xe.value,
561
+ onClear: vt,
562
+ onFocus: gt,
563
+ onBlur: _t
564
+ }, _({
565
+ control: M(() => [te("div", {
566
+ id: Xe.value,
567
+ class: ie(["s-ui-select__control s-ui-typography-body-14-regular", {
568
+ "s-ui-select__control--multiple": A(Z),
569
+ "s-ui-select__control--empty": A(Z) && !A(Me) && !A(J),
570
+ "s-ui-select__control--with-value-suffix": A(k)["value-suffix"] && !A(Z) && !A(J) && !A(q)
571
+ }]),
572
+ role: "combobox",
573
+ "aria-expanded": V.value,
574
+ "aria-controls": Ze.value,
575
+ "aria-haspopup": "listbox",
576
+ "aria-disabled": i.disabled ? !0 : void 0,
577
+ "aria-readonly": i.readonly ? !0 : void 0,
578
+ "aria-autocomplete": A(Ie) ? "list" : void 0,
579
+ tabindex: et.value,
580
+ onClick: ut,
581
+ onKeydown: pt
582
+ }, [
583
+ A(Z) ? D(s.$slots, "selection", w(S({ key: 0 }, $e.value)), () => [A(Fe) ? (T(), g("span", Se, O(A(Fe)), 1)) : A(q) && !A(J) ? (T(), g("span", Ce, O(i.placeholder), 1)) : h("", !0)]) : A(q) && !A(J) ? (T(), g("span", we, O(i.placeholder), 1)) : A(J) ? h("", !0) : (T(), g("span", Te, O(A(Ne)), 1)),
584
+ A(k)["value-suffix"] && !A(Z) && !A(J) && !A(q) ? (T(), g("div", Ee, [D(s.$slots, "value-suffix", w(b(Ve.value)))])) : h("", !0),
585
+ A(J) ? ue((T(), g("input", {
586
+ key: 4,
587
+ ref_key: "searchInputElementRef",
588
+ ref: L,
589
+ "onUpdate:modelValue": u[5] ||= (e) => f.value = e,
590
+ class: "s-ui-select__search-input",
591
+ type: "text",
592
+ name: i.name,
593
+ placeholder: i.placeholder,
594
+ disabled: i.disabled,
595
+ readonly: i.readonly,
596
+ autocomplete: "off",
597
+ onClick: u[6] ||= de(() => {}, ["stop"]),
598
+ onFocus: at,
599
+ onKeydown: mt
600
+ }, null, 40, De)), [[ce, f.value]]) : h("", !0)
601
+ ], 42, xe)]),
602
+ action: M(() => [v(A(fe), {
603
+ name: "chevronMiniDown",
604
+ size: Oe,
605
+ class: "s-ui-select__chevron"
606
+ })]),
607
+ _: 2
608
+ }, [
609
+ A(k).label ? {
610
+ name: "label",
611
+ fn: M(() => [D(s.$slots, "label")]),
612
+ key: "0"
613
+ } : void 0,
614
+ A(k).prefix ? {
615
+ name: "prefix",
616
+ fn: M((e) => [D(s.$slots, "prefix", w(b(e)))]),
617
+ key: "1"
618
+ } : void 0,
619
+ A(k).prepend ? {
620
+ name: "prepend",
621
+ fn: M((e) => [D(s.$slots, "prepend", w(b(e)))]),
622
+ key: "2"
623
+ } : void 0,
624
+ A(k).message ? {
625
+ name: "message",
626
+ fn: M(() => [D(s.$slots, "message")]),
627
+ key: "3"
628
+ } : void 0
629
+ ]), 1032, [
630
+ "modelValue",
631
+ "label",
632
+ "label-props",
633
+ "placeholder",
634
+ "help-messages",
635
+ "error-messages",
636
+ "bordered",
637
+ "disabled",
638
+ "readonly",
639
+ "clearable",
640
+ "has-value",
641
+ "focused",
642
+ "icon-left",
643
+ "customize",
644
+ "name",
645
+ "id"
646
+ ])], 2));
647
+ }
648
+ });
649
+ //#endregion
650
+ export { z as n, G as t };