@vc-shell/framework 2.5.0-pr316.99df47c → 2.5.0-pr317.07f1a32

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 (41) hide show
  1. package/dist/ai-agent/index.js +3 -3
  2. package/dist/chunks/VcAiAgentPanel.vue_vue_type_script_setup_true_lang-Cfv6Pk05.js +1363 -0
  3. package/dist/chunks/VcAiAgentPanel.vue_vue_type_script_setup_true_lang-Cfv6Pk05.js.map +1 -0
  4. package/dist/chunks/{VcAiAgentPanel.vue_vue_type_style_index_0_lang-CZdY18Hq.js → VcAiAgentPanel.vue_vue_type_style_index_0_lang-0llGMIi1.js} +74 -68
  5. package/dist/chunks/{VcAiAgentPanel.vue_vue_type_style_index_0_lang-CZdY18Hq.js.map → VcAiAgentPanel.vue_vue_type_style_index_0_lang-0llGMIi1.js.map} +1 -1
  6. package/dist/chunks/{VcScheduler.vue_vue_type_script_setup_true_lang-BJDpNlEU.js → VcScheduler.vue_vue_type_script_setup_true_lang-DAp80XnM.js} +7003 -6252
  7. package/dist/chunks/VcScheduler.vue_vue_type_script_setup_true_lang-DAp80XnM.js.map +1 -0
  8. package/dist/chunks/VcScheduler.vue_vue_type_style_index_0_lang-CX5yXw-b.js +4125 -0
  9. package/dist/chunks/VcScheduler.vue_vue_type_style_index_0_lang-CX5yXw-b.js.map +1 -0
  10. package/dist/chunks/{dashboard-feed-row.vue_vue_type_script_setup_true_lang-DiPHjugE.js → dashboard-feed-row.vue_vue_type_script_setup_true_lang-D2Kl7FBo.js} +43 -43
  11. package/dist/chunks/{dashboard-feed-row.vue_vue_type_script_setup_true_lang-DiPHjugE.js.map → dashboard-feed-row.vue_vue_type_script_setup_true_lang-D2Kl7FBo.js.map} +1 -1
  12. package/dist/chunks/{index-B7RhGTNx.js → index-rImb-nAa.js} +2 -2
  13. package/dist/chunks/{index-B7RhGTNx.js.map → index-rImb-nAa.js.map} +1 -1
  14. package/dist/core/blade-navigation/types/index.d.ts +17 -0
  15. package/dist/core/blade-navigation/types/index.d.ts.map +1 -1
  16. package/dist/core/blade-navigation/utils/urlSync.d.ts +28 -2
  17. package/dist/core/blade-navigation/utils/urlSync.d.ts.map +1 -1
  18. package/dist/core/composables/useBlade/index.d.ts.map +1 -1
  19. package/dist/core/composables/useBladeNavigationAdapter/index.d.ts.map +1 -1
  20. package/dist/dashboard/index.js +1 -1
  21. package/dist/framework.js +1113 -1117
  22. package/dist/framework.js.map +1 -1
  23. package/dist/index.css +1 -1
  24. package/dist/shell/_internal/blade-navigation/components/vc-blade-navigation/vc-blade-navigation-new.vue.d.ts.map +1 -1
  25. package/dist/shell/_internal/blade-navigation/plugin-v2.d.ts.map +1 -1
  26. package/dist/tsconfig.tsbuildinfo +1 -1
  27. package/dist/ui/components/organisms/vc-data-table/components/VcColumn.vue.d.ts +1 -1
  28. package/dist/ui/components/organisms/vc-data-table/components/VcColumn.vue.d.ts.map +1 -1
  29. package/dist/ui/components/organisms/vc-data-table/components/cells/DynamicCellRenderer.vue.d.ts +6 -30
  30. package/dist/ui/components/organisms/vc-data-table/components/cells/DynamicCellRenderer.vue.d.ts.map +1 -1
  31. package/dist/ui/components/organisms/vc-data-table/index.d.ts +0 -2
  32. package/dist/ui/components/organisms/vc-data-table/index.d.ts.map +1 -1
  33. package/dist/ui/index.js +150 -153
  34. package/package.json +4 -4
  35. package/dist/chunks/VcAiAgentPanel.vue_vue_type_script_setup_true_lang-9mBLzIi1.js +0 -1402
  36. package/dist/chunks/VcAiAgentPanel.vue_vue_type_script_setup_true_lang-9mBLzIi1.js.map +0 -1
  37. package/dist/chunks/VcScheduler.vue_vue_type_script_setup_true_lang-BJDpNlEU.js.map +0 -1
  38. package/dist/chunks/VcScheduler.vue_vue_type_style_index_0_lang-C8qaDNLM.js +0 -4829
  39. package/dist/chunks/VcScheduler.vue_vue_type_style_index_0_lang-C8qaDNLM.js.map +0 -1
  40. package/dist/ui/components/organisms/vc-data-table/composables/builtinCells.d.ts +0 -12
  41. package/dist/ui/components/organisms/vc-data-table/composables/builtinCells.d.ts.map +0 -1
@@ -1,4829 +0,0 @@
1
- import { mergeProps as ne, computed as $, toValue as ge, inject as G, useId as an, ref as S, onBeforeUnmount as lt, reactive as Ye, provide as $t, getCurrentScope as ln, onScopeDispose as on, getCurrentInstance as qe, onErrorCaptured as rn, nextTick as he, defineComponent as V, watch as Y, unref as r, openBlock as v, createElementBlock as b, normalizeClass as j, createBlock as N, createCommentVNode as w, renderSlot as C, createElementVNode as L, toDisplayString as T, Fragment as we, renderList as ot, normalizeStyle as Re, resolveDynamicComponent as it, withCtx as O, withKeys as Z, withModifiers as H, createVNode as x, watchEffect as Qe, shallowReactive as _e, markRaw as et, createSlots as ie, createTextVNode as Q, Transition as Ae, withDirectives as rt, vModelText as sn, useAttrs as wt, vModelDynamic as un, onMounted as Ue, onUnmounted as Ot, Teleport as cn, normalizeProps as xe, guardReactiveProps as Te } from "vue";
2
- import { c as de, ah as dn, K as fn, v as vn, r as gn, o as mn, I as pn, q as bn, p as yn, B as Et, b as hn, i as kn, _ as U, T as Lt, a as Bt, U as In, w as Sn, u as $n } from "./VcAiAgentPanel.vue_vue_type_style_index_0_lang-CZdY18Hq.js";
3
- import { defineRule as Oe, Field as wn } from "vee-validate";
4
- import { a as bt } from "./vendor-vee-validate-rules-4oWUZPpG.js";
5
- import { a as Ct, s as On, c as En, b as Je, e as Me } from "./vendor-lodash-es-D2n90GJy.js";
6
- import { X as Ln } from "./vendor-microsoft-applicationinsights-core-js-CR3vyuZc.js";
7
- import { d as xt, e as Bn, f as Cn, g as xn } from "./vendor-vueuse-core-BFa9je5E.js";
8
- import { c as Tn, u as Ie } from "./vendor-vue-i18n-LO-EJStU.js";
9
- import { j as Mn } from "./vendor-vueuse-shared-kZH3-Km1.js";
10
- import { k as Rn } from "./vendor-tiptap-core-CZbeo7XQ.js";
11
- import "./vendor-tiptap-extension-text-style-Bc6nvmn0.js";
12
- import { q as An } from "./vendor-vuepic-vue-datepicker-D0bvbIbh.js";
13
- import { C as Nn, u as Dn } from "./vendor-vue-currency-input-CckB4kjx.js";
14
- import { u as Vn } from "./vendor-floating-ui-vue-sCrhit51.js";
15
- import { f as Tt, s as Mt, o as tt, b as Pn } from "./vendor-floating-ui-dom-BvVXFZ4B.js";
16
- import { v as Fn } from "./vendor-vueuse-components-CoR2FSn3.js";
17
- import { p as Rt } from "./vendor-dompurify-DpIUMBYC.js";
18
- import { S as ye, h as zn, T as qn } from "./vendor-date-fns-C-55OMpS.js";
19
- import { t as Un } from "./vendor-truncate-html-ChA1T5zy.js";
20
- const ke = Tn({
21
- legacy: !1,
22
- globalInjection: !0,
23
- locale: "en",
24
- fallbackLocale: "en",
25
- formatFallbackMessages: !0
26
- });
27
- function nt() {
28
- return Math.random().toString(36).substring(2, 9);
29
- }
30
- class re extends Error {
31
- constructor(t, n, a) {
32
- super(t), this.code = n, this.context = a, this.name = "FrameworkError", Error.captureStackTrace && Error.captureStackTrace(this, re);
33
- }
34
- toJSON() {
35
- return {
36
- name: this.name,
37
- code: this.code,
38
- message: this.message,
39
- context: this.context,
40
- stack: this.stack
41
- };
42
- }
43
- }
44
- class Pi extends re {
45
- constructor(t, n) {
46
- super(t, "VALIDATION_ERROR", n), this.name = "ValidationError";
47
- }
48
- }
49
- class Fi extends re {
50
- constructor(t, n) {
51
- super(t, "SERVICE_ERROR", n), this.name = "ServiceError";
52
- }
53
- }
54
- class Kn extends re {
55
- constructor(t, n) {
56
- super(`${t} not provided. Make sure to call the corresponding 'provide' function.`, "INJECTION_ERROR", {
57
- serviceName: t,
58
- ...n
59
- }), this.name = "InjectionError";
60
- }
61
- }
62
- class zi extends re {
63
- constructor(t, n, a) {
64
- super(`Failed to register '${t}': ${n}`, "REGISTRATION_ERROR", {
65
- componentName: t,
66
- ...a
67
- }), this.name = "RegistrationError";
68
- }
69
- }
70
- class qi extends re {
71
- constructor(t, n, a) {
72
- super(t, "BLADE_ERROR", {
73
- bladeId: n,
74
- ...a
75
- }), this.name = "BladeError";
76
- }
77
- }
78
- class Ui extends re {
79
- constructor(t, n, a) {
80
- super(`Failed to load module '${t}': ${n}`, "MODULE_LOAD_ERROR", {
81
- moduleId: t,
82
- ...a
83
- }), this.name = "ModuleLoadError";
84
- }
85
- }
86
- function Wn(e) {
87
- return e instanceof re;
88
- }
89
- function Ki(e, t = "UNKNOWN_ERROR") {
90
- return Wn(e) ? e : e instanceof Error ? new re(e.message, t, {
91
- originalError: e.name,
92
- stack: e.stack
93
- }) : new re(String(e), t);
94
- }
95
- class me extends Error {
96
- details;
97
- originalError;
98
- constructor(t, n, a) {
99
- super(t), this.name = "DisplayableError", this.details = n, this.originalError = a;
100
- }
101
- }
102
- function jn(e) {
103
- return e instanceof Error && typeof e.status == "number" && typeof e.response == "string";
104
- }
105
- function Pe(e) {
106
- if (e instanceof me)
107
- return e;
108
- if (jn(e)) {
109
- const { status: t, response: n } = e;
110
- try {
111
- return Pe(JSON.parse(n));
112
- } catch {
113
- const a = `${t}: ${e.message || "Error"}`;
114
- return new me(a, n || e.message, e);
115
- }
116
- }
117
- if (e instanceof Error && "response" in e && e.response)
118
- return Pe(e.response);
119
- if (e instanceof Error)
120
- return new me(e.message, e.stack || String(e), e);
121
- if (typeof e == "string")
122
- try {
123
- const t = JSON.parse(e);
124
- return Pe(t);
125
- } catch {
126
- return new me(e, e, e);
127
- }
128
- if (typeof e == "object" && e !== null) {
129
- const t = e;
130
- if ("status" in t && "data" in t) {
131
- const o = t.status, i = t.statusText || "Error", l = `${o}: ${i}`, s = t.data;
132
- let u = "";
133
- return s ? typeof s.exceptionMessage == "string" ? u = s.exceptionMessage : typeof s.message == "string" ? u = s.message : Array.isArray(s.errors) ? u = s.errors.join(`
134
- `) : typeof s == "string" ? u = s : u = JSON.stringify(s, null, 2) : u = JSON.stringify(t, null, 2), new me(l, u, e);
135
- }
136
- const n = t.message || "An unexpected error occurred.", a = t.stack || JSON.stringify(t, null, 2);
137
- return new me(n, a, e);
138
- }
139
- return new me("An unknown error occurred.", String(e), e);
140
- }
141
- const Hn = [
142
- ["LLLL", "PPPp"],
143
- ["LLL", "PPp"],
144
- ["LTS", "pp"],
145
- ["LT", "p"],
146
- ["LL", "PP"],
147
- ["L", "P"]
148
- ], Gn = [
149
- [/YYYY/g, "yyyy"],
150
- [/YY/g, "yy"],
151
- [/dddd/g, "EEEE"],
152
- [/ddd/g, "EEE"],
153
- [/DD/g, "dd"],
154
- [/Do/g, "do"],
155
- [/D(?![\w])/g, "d"],
156
- [/A/g, "a"]
157
- ];
158
- function Yn(e) {
159
- let t = e;
160
- for (const [n, a] of Hn)
161
- t = t.split(n).join(a);
162
- for (const [n, a] of Gn)
163
- t = t.replace(n, a);
164
- return t;
165
- }
166
- const ue = /* @__PURE__ */ new Map();
167
- ue.set("en-US", ye);
168
- ue.set("en", ye);
169
- async function Jn(e) {
170
- if (ue.has(e))
171
- return ue.get(e);
172
- try {
173
- const t = await import(
174
- /* @vite-ignore */
175
- `date-fns/locale/${e}`
176
- ), n = e.replace("-", ""), a = t.default ?? t[n] ?? ye;
177
- return ue.set(e, a), a;
178
- } catch {
179
- const t = e.split("-")[0];
180
- if (t !== e)
181
- try {
182
- const n = await import(
183
- /* @vite-ignore */
184
- `date-fns/locale/${t}`
185
- ), a = n.default ?? n[t] ?? ye;
186
- return ue.set(e, a), a;
187
- } catch {
188
- }
189
- return ue.set(e, ye), ye;
190
- }
191
- }
192
- function At(e) {
193
- return ue.has(e) ? ue.get(e) : (Jn(e), ye);
194
- }
195
- function Nt(e) {
196
- if (e == null || e === "") return null;
197
- if (e instanceof Date) return isNaN(e.getTime()) ? null : e;
198
- const t = new Date(e);
199
- return isNaN(t.getTime()) ? null : t;
200
- }
201
- function Xn(e, t) {
202
- const n = Nt(e);
203
- if (!n) return "";
204
- const a = t ? At(t) : void 0;
205
- return qn(n, { addSuffix: !0, locale: a });
206
- }
207
- function Zn(e, t, n) {
208
- const a = Nt(e);
209
- if (!a) return "";
210
- const o = Yn(t), i = n ? At(n) : void 0;
211
- return zn(a, o, { locale: i });
212
- }
213
- const Qn = de("color-utils");
214
- function _n(e) {
215
- if (!e || typeof e != "string")
216
- return null;
217
- try {
218
- const t = document.createElement("canvas");
219
- t.width = 1, t.height = 1;
220
- const n = t.getContext("2d");
221
- return !n || (n.fillStyle = e.trim(), n.fillStyle === "#000000" && e.trim().toLowerCase() !== "black") ? null : n.fillStyle;
222
- } catch (t) {
223
- return Qn.warn("Error converting color name to hex:", t), null;
224
- }
225
- }
226
- function ea(e) {
227
- if (!e || typeof e != "string")
228
- return !1;
229
- const t = e.startsWith("#") ? e : `#${e}`;
230
- return /^#[0-9A-Fa-f]{6}$/.test(t);
231
- }
232
- function yt(e) {
233
- return !e || typeof e != "string" ? "" : e.startsWith("#") ? e : `#${e}`;
234
- }
235
- function ta(e, t) {
236
- if (!e || !t || e.includes(`_${t}`)) return e;
237
- const n = e.lastIndexOf("/"), a = e.indexOf("?", n), i = (a > -1 ? e.slice(n + 1, a) : e.slice(n + 1)).lastIndexOf(".");
238
- if (i <= 0)
239
- return e;
240
- const l = n + 1 + i, s = e.slice(0, l), u = e.slice(l);
241
- return `${s}_${t}${u}`;
242
- }
243
- function Wi(e) {
244
- return e <= 64 ? "64x64" : e <= 128 ? "128x128" : e <= 168 ? "168x168" : e <= 216 ? "216x216" : e <= 348 ? "348x348" : "lg";
245
- }
246
- function na(e) {
247
- let t = null;
248
- return {
249
- register(n) {
250
- t = n, e?.(t);
251
- },
252
- get() {
253
- return t;
254
- },
255
- reset() {
256
- t = null, e?.(t);
257
- }
258
- };
259
- }
260
- function ji() {
261
- const e = /* @__PURE__ */ new Map();
262
- return {
263
- register(t, n) {
264
- e.set(t, n);
265
- },
266
- get(t) {
267
- return e.get(t);
268
- },
269
- reset() {
270
- e.clear();
271
- }
272
- };
273
- }
274
- const st = () => {
275
- const e = dn();
276
- return {
277
- user: e.user,
278
- loading: e.loading,
279
- isAdministrator: e.isAdministrator,
280
- isAuthenticated: e.isAuthenticated,
281
- validateToken: e.validateToken,
282
- validatePassword: e.validatePassword,
283
- resetPasswordByToken: e.resetPasswordByToken,
284
- getLoginType: e.getLoginType,
285
- loadUser: e.loadUser,
286
- requestPasswordReset: e.requestPasswordReset,
287
- changeUserPassword: e.changeUserPassword,
288
- signIn: e.signIn,
289
- signOut: e.signOut
290
- };
291
- };
292
- function aa() {
293
- const { user: e } = st();
294
- function t(n) {
295
- const a = e.value?.permissions ?? [];
296
- if (!n || Array.isArray(n) && n.length === 0 || e.value?.isAdministrator)
297
- return !0;
298
- if (Array.isArray(n))
299
- return n.some((o) => a.includes(o));
300
- if (typeof n == "string")
301
- return a.includes(n);
302
- throw new Error("Permissions must be a string or an array of strings");
303
- }
304
- return {
305
- hasAccess: t
306
- };
307
- }
308
- const be = de("notification"), ve = na();
309
- function la(e) {
310
- ve.register(e);
311
- }
312
- function Ne(e, t) {
313
- const n = ve.get();
314
- if (!n) {
315
- be.debug("Backend not yet registered — notification call ignored.");
316
- return;
317
- }
318
- return t = ne(
319
- n.defaultOptions,
320
- t
321
- ), (!t.notificationId || typeof t.notificationId != "string" && typeof t.notificationId != "number") && (t.notificationId = nt()), t = {
322
- ...t,
323
- content: e
324
- }, n.appendInstance(t), t.notificationId;
325
- }
326
- const se = (e, t) => Ne(e, { ...t, type: "default" });
327
- se.error = (e, t) => Ne(e, { ...t, type: "error" });
328
- se.warning = (e, t) => Ne(e, { ...t, type: "warning" });
329
- se.success = (e, t) => Ne(e, { ...t, type: "success" });
330
- se.clearAll = () => {
331
- ve.get()?.actions.clear();
332
- };
333
- se.remove = (e) => {
334
- const t = ve.get();
335
- t && (e ? t.actions.dismiss(e) : t.actions.clear());
336
- };
337
- se.update = (e, t) => {
338
- const n = ve.get();
339
- if (!n) return e;
340
- if (!n.hasNotification(e))
341
- return be.warn(`Cannot update: notification with ID ${e} not found`), e;
342
- const a = n.getNotification(String(e));
343
- if (a)
344
- if (t.position && t.position !== a.position) {
345
- const o = {
346
- ...a,
347
- ...t,
348
- updateId: nt(),
349
- notificationId: e
350
- };
351
- let i;
352
- if (t.content !== void 0 ? (i = t.content, delete o.content) : a.content && (i = a.content, delete o.content), i)
353
- return n.actions.remove(e), Ne(i, o);
354
- } else {
355
- const o = {
356
- ...t,
357
- updateId: nt(),
358
- notificationId: e
359
- };
360
- return n.actions.update(o), e;
361
- }
362
- return e;
363
- };
364
- se.setPosition = (e) => {
365
- const t = ve.get();
366
- t && (t.defaultOptions.position = e);
367
- };
368
- se.clearPosition = (e) => {
369
- const t = ve.get();
370
- if (!t) return;
371
- t.getAllNotifications().filter((a) => (a.position || t.defaultOptions.position) === e).forEach((a) => {
372
- a.notificationId && t.actions.dismiss(a.notificationId);
373
- });
374
- };
375
- se.debug = () => {
376
- const e = ve.get();
377
- if (!e)
378
- return be.debug("Backend not registered"), { active: [], defaultOptions: {} };
379
- Object.entries(e.defaultOptions).forEach(([n, a]) => {
380
- be.debug(`Default option ${n}: `, a);
381
- }), Object.entries(e.actions).forEach(([n]) => {
382
- be.debug(`Available action: ${n}`);
383
- });
384
- const t = e.getAllNotifications().reduce((n, a) => {
385
- const o = a.position || e.defaultOptions.position;
386
- return n[o] || (n[o] = []), n[o].push({
387
- id: a.notificationId || "unknown",
388
- type: a.type,
389
- content: typeof a.content == "string" ? a.content : "[Component]"
390
- }), n;
391
- }, {});
392
- return Object.entries(t).forEach(([n, a]) => {
393
- be.debug(`Position ${n}: ${a.length} notifications`), a.forEach((o) => be.debug(` - ${o.id} (${o.type}): ${o.content}`));
394
- }), {
395
- active: e.getAllNotifications(),
396
- defaultOptions: e.defaultOptions
397
- };
398
- };
399
- const oa = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
400
- __proto__: null,
401
- notification: se,
402
- setNotificationBackend: la
403
- }, Symbol.toStringTag, { value: "Module" }));
404
- function ia(e, t, n = {}) {
405
- const a = $(() => ge(n.placement) ?? "bottom"), o = $(() => ge(n.strategy) ?? "absolute"), i = $(() => {
406
- const u = ge(n.middleware);
407
- if (u?.length)
408
- return u;
409
- const f = [];
410
- ge(n.enableFlip) !== !1 && f.push(Tt({ padding: n.shiftPadding ?? 8 })), ge(n.enableShift) !== !1 && f.push(Mt({ padding: n.shiftPadding ?? 8 }));
411
- const m = ge(n.offset);
412
- return typeof m == "number" ? f.push(tt(m)) : f.push(
413
- tt({
414
- mainAxis: m?.mainAxis ?? 0,
415
- crossAxis: m?.crossAxis ?? 0,
416
- alignmentAxis: m?.alignmentAxis
417
- })
418
- ), f;
419
- }), l = Vn(e, t, {
420
- placement: a,
421
- strategy: o,
422
- whileElementsMounted: ge(n.autoUpdate) === !1 ? void 0 : Pn,
423
- middleware: i
424
- }), s = $(() => ({
425
- position: o.value,
426
- top: `${l.y.value ?? 0}px`,
427
- left: `${l.x.value ?? 0}px`
428
- }));
429
- return {
430
- ...l,
431
- floatingStyle: s,
432
- resolvedPlacement: a,
433
- resolvedStrategy: o
434
- };
435
- }
436
- const ra = Symbol("vc-input-group-context");
437
- function Ke(e) {
438
- const t = G(ra, null), n = an(), a = $(() => `vc-field-${n}`), o = $(() => `${a.value}-label`), i = $(() => `${a.value}-error`), l = $(() => `${a.value}-hint`), s = $(() => !!e.error || !!e.errorMessage || !!t?.invalid.value), u = $(() => !!e.disabled || !!t?.disabled.value), f = $(() => t?.name.value || e.name), m = $(() => e.required ? !0 : void 0), g = $(() => {
439
- const c = /* @__PURE__ */ new Set();
440
- return t?.describedBy.value && t.describedBy.value.split(/\s+/).forEach((d) => c.add(d)), e.errorMessage && c.add(i.value), e.hint && c.add(l.value), c.size ? Array.from(c).join(" ") : void 0;
441
- });
442
- return {
443
- fieldId: a,
444
- labelId: o,
445
- errorId: i,
446
- hintId: l,
447
- invalid: s,
448
- resolvedDisabled: u,
449
- resolvedName: f,
450
- ariaRequired: m,
451
- ariaDescribedBy: g,
452
- groupContext: t
453
- };
454
- }
455
- function sa(e, t = {}) {
456
- const { speed: n = 2 } = t, a = S(!1), o = S(!1);
457
- let i = null;
458
- function l() {
459
- const f = e.value;
460
- if (!f) {
461
- a.value = !1, o.value = !1;
462
- return;
463
- }
464
- a.value = f.scrollTop > 0, o.value = Math.ceil(f.scrollTop) < f.scrollHeight - f.clientHeight;
465
- }
466
- function s(f) {
467
- u();
468
- const m = e.value;
469
- if (!m) return;
470
- function g() {
471
- m && (m.scrollTop += f === "up" ? -n : n, l(), i = requestAnimationFrame(g));
472
- }
473
- i = requestAnimationFrame(g);
474
- }
475
- function u() {
476
- i !== null && (cancelAnimationFrame(i), i = null);
477
- }
478
- return xt(e, l), lt(() => {
479
- u();
480
- }), {
481
- canScrollUp: a,
482
- canScrollDown: o,
483
- startScroll: s,
484
- stopScroll: u,
485
- updateScrollState: l
486
- };
487
- }
488
- function Se() {
489
- return G(fn, S(!1));
490
- }
491
- Object.keys(bt).forEach((e) => {
492
- Oe(e, bt[e]);
493
- });
494
- const ua = (e, [t, n]) => {
495
- if (!e?.files || !e.files?.length)
496
- return !0;
497
- const a = (l, s, u) => {
498
- const f = window.URL || window.webkitURL;
499
- return new Promise((m) => {
500
- const g = new Image(), c = f.createObjectURL(l);
501
- g.onerror = () => {
502
- f.revokeObjectURL(c), m(!1);
503
- }, g.onload = () => {
504
- f.revokeObjectURL(c);
505
- const d = g.width >= Number(s) && g.height >= Number(u);
506
- m(d ? !0 : ke.global.t("messages.min_dimensions.error", { width: s, height: u }));
507
- }, g.src = c;
508
- });
509
- }, o = [], i = e.files;
510
- for (let l = 0; l < i.length; l++) {
511
- if (!/\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(i[l].name))
512
- return Promise.resolve(ke.global.t("messages.min_dimensions.not_image_error"));
513
- o.push(i[l]);
514
- }
515
- return Promise.all(o.map((l) => a(l, t, n))).then((l) => {
516
- const s = l.find((u) => u !== !0);
517
- return s === !1 || typeof s == "string" ? s : !0;
518
- });
519
- };
520
- Oe("mindimensions", ua);
521
- const ca = (e, [t]) => {
522
- if (!e?.files || !e.files?.length)
523
- return !0;
524
- const n = t * 1e3, a = (s) => s.size > n, o = [];
525
- for (let s = 0; s < e.files.length; s++)
526
- o.push(e.files[s]);
527
- return o.map((s) => a(s)).find((s) => s === !0) ? ke.global.t("messages.file_weight", { size: t }) : !0;
528
- };
529
- Oe("fileWeight", ca);
530
- const Dt = (e, [t], n, a) => {
531
- if (!e || typeof e == "string" && !e.length)
532
- return !0;
533
- let o, i;
534
- return e instanceof Date && (o = e), t instanceof Date && (i = t), typeof e == "string" && (o = new Date(e)), typeof t == "string" && (i = new Date(t)), o?.getTime && o?.getTime() > 0 && i?.getTime && i?.getTime() > 0 && n(i.getTime(), o.getTime()) ? a : !0;
535
- }, da = (e, [t]) => Dt(e, [t], (n, a) => n < a, ke.global.t("messages.before"));
536
- Oe("before", da);
537
- const fa = (e, [t]) => Dt(e, [t], (n, a) => n > a, ke.global.t("messages.after"));
538
- Oe("after", fa);
539
- const va = (e) => Number.isSafeInteger(parseInt(e)) ? !0 : ke.global.t("messages.bigint");
540
- Oe("bigint", va);
541
- function Ee(e) {
542
- const t = de(`${e.name}-bus`), n = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Set();
543
- function o(c) {
544
- const d = e.getKey(c);
545
- n.set(d, c), a.size > 0 && m((y) => {
546
- try {
547
- e.registerIntoService(y, c);
548
- } catch (h) {
549
- t.warn(`Failed to live-register item (key=${d}):`, h);
550
- }
551
- });
552
- }
553
- function i(c) {
554
- n.delete(c), e.unregisterFromService && a.size > 0 && a.forEach((d) => {
555
- try {
556
- e.unregisterFromService(d, c);
557
- } catch (y) {
558
- t.warn(`Failed to live-unregister item (id=${c}):`, y);
559
- }
560
- });
561
- }
562
- function l(c) {
563
- for (const [d, y] of n)
564
- c(y) && n.delete(d);
565
- }
566
- function s() {
567
- return Array.from(n.values());
568
- }
569
- function u(c) {
570
- a.add(c), n.forEach((d, y) => {
571
- try {
572
- e.registerIntoService(c, d);
573
- } catch (h) {
574
- t.warn(`Failed to replay item (key=${y}):`, h);
575
- }
576
- });
577
- }
578
- function f(c) {
579
- a.delete(c);
580
- }
581
- function m(c) {
582
- a.forEach((d) => c(d));
583
- }
584
- function g() {
585
- return a.values().next().value;
586
- }
587
- return {
588
- preregister: o,
589
- unregister: i,
590
- removePreregistered: l,
591
- getPreregistered: s,
592
- replayInto: u,
593
- dispose: f,
594
- broadcast: m,
595
- getFirstInstance: g,
596
- get instanceCount() {
597
- return a.size;
598
- }
599
- };
600
- }
601
- function Vt(e) {
602
- const t = Ye({}), n = Ye([]), a = Ye(/* @__PURE__ */ new Map());
603
- function o(c) {
604
- a.set(c, (a.get(c) ?? 0) + 1);
605
- }
606
- function i(c) {
607
- const d = a.get(c);
608
- if (!d || d <= 1) {
609
- a.delete(c);
610
- return;
611
- }
612
- a.set(c, d - 1);
613
- }
614
- function l(c, d) {
615
- const y = d.toLowerCase();
616
- t[y] || (t[y] = []);
617
- const h = t[y].find((p) => p.id === c.id);
618
- if (h) {
619
- Object.assign(h, c, { bladeId: y });
620
- return;
621
- }
622
- const B = { ...c, bladeId: y };
623
- t[y].push(B), n.push(e.createRegistration(y, B)), o(c.id);
624
- }
625
- function s(c, d) {
626
- const y = d.toLowerCase(), h = t[y];
627
- if (h) {
628
- const p = h.findIndex((I) => I.id === c);
629
- if (p !== -1) {
630
- const [I] = h.splice(p, 1);
631
- I && i(I.id);
632
- }
633
- }
634
- const B = n.findIndex(
635
- (p) => e.getRegistrationBladeId(p) === y && e.getRegistrationItemId(p) === c
636
- );
637
- B !== -1 && n.splice(B, 1);
638
- }
639
- function u(c) {
640
- const d = c ? c.toLowerCase() : "";
641
- return [...t[d] || []];
642
- }
643
- function f(c) {
644
- const d = c.toLowerCase(), y = t[d];
645
- y && (y.forEach((B) => i(B.id)), delete t[d]), n.map((B, p) => e.getRegistrationBladeId(B) === d ? p : -1).filter((B) => B !== -1).reverse().forEach((B) => {
646
- n.splice(B, 1);
647
- });
648
- }
649
- function m(c, d, y) {
650
- const h = d.toLowerCase(), B = t[h]?.find((p) => p.id === c);
651
- B && Object.assign(B, y, { bladeId: h });
652
- }
653
- function g(c) {
654
- return a.has(c);
655
- }
656
- return {
657
- registry: t,
658
- registrations: n,
659
- register: l,
660
- unregister: s,
661
- get: u,
662
- clear: f,
663
- update: m,
664
- isRegistered: g
665
- };
666
- }
667
- function ga(e) {
668
- const t = S(/* @__PURE__ */ new Map()), n = $(() => Array.from(t.value.values()).sort((i, l) => (i.order ?? 0) - (l.order ?? 0)));
669
- function a(i) {
670
- const l = e.getId(i) || crypto.randomUUID(), s = e.createItem(i, t.value.size);
671
- return t.value.set(l, { ...s, id: l }), l;
672
- }
673
- function o(i) {
674
- t.value.delete(i);
675
- }
676
- return {
677
- itemsMap: t,
678
- sortedItems: n,
679
- register: a,
680
- unregister: o
681
- };
682
- }
683
- function Pt(e) {
684
- const t = ga({
685
- createItem: e.createItem,
686
- getId: e.getId
687
- }), n = {
688
- register: (a) => t.register(a),
689
- unregister: (a) => t.unregister(a),
690
- items: t.sortedItems
691
- };
692
- return e.bus.replayInto(n), n;
693
- }
694
- function ze(e) {
695
- return e.id !== void 0 ? `id:${String(e.id)}` : e.routeId ? `route:${e.routeId}` : e.url ? `url:${e.url}` : e.groupConfig?.id ? `gc:${e.groupConfig.id}:${e.title}` : e.group ? `g:${e.group}:${e.title}` : `hash:${JSON.stringify(Ct(e, "title"))}`;
696
- }
697
- const De = S(/* @__PURE__ */ new Map()), ce = Ee({
698
- name: "menu-service",
699
- getKey: ze,
700
- registerIntoService: (e, t) => e.addMenuItem(t)
701
- });
702
- function Hi(e) {
703
- ce.preregister(e);
704
- }
705
- function Gi(e) {
706
- ce.removePreregistered((t) => ut(t, e)), ce.broadcast((t) => t.removeMenuItem(e));
707
- }
708
- function Yi(e, t) {
709
- De.value.set(e, t), ce.broadcast((n) => {
710
- n.menuBadges.value.set(e, t);
711
- });
712
- }
713
- function Ji(e) {
714
- const t = ce.getFirstInstance();
715
- return t ? t.menuBadges.value.get(e) : De.value.get(e);
716
- }
717
- function Xi(e) {
718
- De.value.delete(e), ce.broadcast((t) => {
719
- t.menuBadges.value.delete(e);
720
- });
721
- }
722
- function Zi() {
723
- return ce.getFirstInstance()?.menuBadges ?? De;
724
- }
725
- const at = 1 / 0, ma = 1 / 0;
726
- function ut(e, t) {
727
- return ze(e) === ze(t);
728
- }
729
- function pa(e) {
730
- return e.groupConfig ? {
731
- groupId: e.groupConfig.id,
732
- groupTitle: e.groupConfig.title || e.groupConfig.id,
733
- groupIcon: e.groupConfig.icon,
734
- groupPriority: e.groupConfig.priority,
735
- groupPermissions: e.groupConfig.permissions
736
- } : {
737
- groupId: "group_" + On(e.group),
738
- groupTitle: e.group,
739
- groupIcon: e.groupIcon,
740
- groupPriority: e.priority,
741
- groupPermissions: void 0
742
- };
743
- }
744
- function ba(e, t) {
745
- return (e.priority ?? at) - (t.priority ?? at);
746
- }
747
- function ya(e, t) {
748
- const n = (a) => a.inGroupPriority ?? a.priority ?? ma;
749
- return n(e) - n(t);
750
- }
751
- function ha(e, t) {
752
- const n = pa(e), a = {
753
- ...Ct(e, ["group", "groupIcon", "groupPriority", "groupConfig"])
754
- }, o = t.get(n.groupId);
755
- if (o) {
756
- const i = [...o.children ?? []], l = i.findIndex((s) => ut(s, a));
757
- l > -1 ? i[l] = a : i.push(a), t.set(n.groupId, {
758
- ...o,
759
- children: i,
760
- ...e.groupConfig?.title && { title: e.groupConfig.title },
761
- ...e.groupConfig?.icon !== void 0 && { groupIcon: e.groupConfig.icon },
762
- ...e.groupConfig?.priority !== void 0 && { priority: e.groupConfig.priority },
763
- ...e.groupConfig?.permissions !== void 0 && { permissions: e.groupConfig.permissions }
764
- });
765
- } else
766
- t.set(n.groupId, {
767
- groupId: n.groupId,
768
- groupIcon: n.groupIcon ?? "",
769
- title: n.groupTitle,
770
- children: [a],
771
- priority: n.groupPriority ?? e.priority ?? at,
772
- permissions: n.groupPermissions
773
- });
774
- }
775
- function ht(e) {
776
- const t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map();
777
- for (const a of e)
778
- a.group || a.groupConfig ? ha(a, t) : a.title && n.set(ze(a), { ...a });
779
- return ka([...t.values(), ...n.values()]);
780
- }
781
- function ka(e) {
782
- return e.map(
783
- (t) => ({
784
- ...t,
785
- children: t.children ? [...t.children].sort(ya) : void 0
786
- })
787
- ).sort(ba);
788
- }
789
- function Ia() {
790
- const e = S([]);
791
- let t = [];
792
- const n = S(new Map(De.value));
793
- function a(l) {
794
- t.push(l), e.value = ht(t);
795
- }
796
- function o(l) {
797
- const s = t.length;
798
- t = t.filter((u) => !ut(u, l)), t.length !== s && (e.value = ht(t));
799
- }
800
- const i = {
801
- addMenuItem: a,
802
- menuItems: e,
803
- removeMenuItem: o,
804
- menuBadges: n
805
- };
806
- return ce.replayInto(i), i;
807
- }
808
- function We(e) {
809
- const { key: t, create: n, bus: a, name: o, onMissing: i } = e;
810
- function l() {
811
- const u = G(t, null);
812
- if (u)
813
- return u;
814
- const f = n();
815
- return $t(t, f), ln() && on(() => a.dispose(f)), f;
816
- }
817
- function s() {
818
- const u = G(t, null);
819
- if (!u)
820
- throw i?.(), new Kn(o);
821
- return u;
822
- }
823
- return {
824
- provide: l,
825
- use: s
826
- };
827
- }
828
- const Sa = de("use-menu-service"), Ft = We({
829
- key: vn,
830
- create: Ia,
831
- bus: ce,
832
- name: "MenuService",
833
- onMissing: () => Sa.error("Menu service not found in current context. Injection chain:", qe())
834
- });
835
- function Qi() {
836
- return Ft.provide();
837
- }
838
- function _i() {
839
- return Ft.use();
840
- }
841
- function je() {
842
- return {
843
- isMobile: G(yn, S(!1)),
844
- isDesktop: G(bn, S(!0)),
845
- isPhone: G(pn, S(!1)),
846
- isTablet: G(mn, S(!1)),
847
- isTouch: G(gn, !1)
848
- };
849
- }
850
- const $a = Symbol("AppInsightsOptions"), wa = Symbol("AppInsightsInstance");
851
- function Oa() {
852
- const e = G(wa, null), { user: t } = st(), n = G($a, void 0);
853
- function a() {
854
- const o = n?.appName ? `[${n.appName}] ` : "", i = (u) => `${o}${u.name}`;
855
- function l(u) {
856
- if (!e) return;
857
- const f = i(u);
858
- e.context.telemetryTrace.traceID = Ln(), e.context.telemetryTrace.name = u.name, e.startTrackPage(f);
859
- }
860
- function s(u) {
861
- if (!e) return;
862
- const f = i(u), m = location.protocol + "//" + location.host + u.fullPath;
863
- e.stopTrackPage(f, m, {
864
- userId: t.value?.id ?? "",
865
- userName: t.value?.userName ?? ""
866
- });
867
- }
868
- return {
869
- beforeEach: l,
870
- afterEach: s
871
- };
872
- }
873
- return {
874
- setupPageTracking: a(),
875
- appInsights: e
876
- };
877
- }
878
- const Ea = de("use-error-handler");
879
- function La(e) {
880
- const t = S(null), n = qe(), { appInsights: a } = Oa(), { user: o } = st(), i = S(!1);
881
- function l() {
882
- t.value = null, n && n.emit("reset");
883
- }
884
- return rn((s) => {
885
- if (i.value)
886
- return !e;
887
- i.value = !0;
888
- const u = Pe(s);
889
- return t.value = u, a && a.trackException({
890
- exception: u,
891
- properties: {
892
- userId: o.value?.id ?? "",
893
- userName: o.value?.userName ?? ""
894
- }
895
- }), Ea.error("Captured Error:", u.originalError), n && n.emit("error", u), he(() => {
896
- i.value = !1;
897
- }), !e;
898
- }), {
899
- error: t,
900
- reset: l
901
- };
902
- }
903
- const Fe = /* @__PURE__ */ new WeakMap();
904
- function er(e, t, n) {
905
- Fe.set(e, { timerId: t, notifId: n });
906
- }
907
- function Ba(e) {
908
- if (e && typeof e == "object") {
909
- const t = Fe.get(e), n = "originalError" in e && e.originalError && typeof e.originalError == "object" ? e.originalError : void 0, a = t ?? (n ? Fe.get(n) : void 0), o = t ? e : n;
910
- if (a && o)
911
- return clearTimeout(a.timerId), Promise.resolve().then(() => oa).then(({ notification: i }) => {
912
- i.remove(a.notifId);
913
- }), Fe.delete(o), !0;
914
- }
915
- return !1;
916
- }
917
- const tr = V({
918
- name: "ErrorInterceptor",
919
- props: {
920
- capture: {
921
- default: !1,
922
- type: Boolean
923
- }
924
- },
925
- emits: {
926
- error(e) {
927
- return e && e instanceof Error || typeof e == "string";
928
- },
929
- reset() {
930
- return !0;
931
- }
932
- },
933
- setup(e, { slots: t }) {
934
- const n = G(Et, void 0), a = G(hn, void 0), o = !!(n && a), { error: i, reset: l } = La(o || e.capture);
935
- return o && Y(i, (s) => {
936
- const u = n.value.id;
937
- if (s) {
938
- if (Ba(s), kn())
939
- return;
940
- a.setBladeError(u, s);
941
- } else
942
- a.clearBladeError(u);
943
- }), () => t.default?.({
944
- error: i.value,
945
- reset: l
946
- });
947
- }
948
- }), Ca = Symbol("vc-button-group"), xa = ["type", "disabled", "aria-label", "aria-busy", "aria-pressed"], Ta = {
949
- key: 2,
950
- class: "vc-button__title"
951
- }, Ma = /* @__PURE__ */ V({
952
- __name: "vc-button",
953
- props: {
954
- icon: {},
955
- iconClass: {},
956
- iconSize: { default: "s" },
957
- variant: { default: "primary" },
958
- disabled: { type: Boolean },
959
- size: { default: "default" },
960
- selected: { type: Boolean },
961
- text: { type: Boolean },
962
- type: { default: "button" },
963
- loading: { type: Boolean, default: !1 },
964
- ariaLabel: {}
965
- },
966
- emits: ["click"],
967
- setup(e, { emit: t }) {
968
- const n = {
969
- base: "default",
970
- xs: "sm"
971
- }, a = e, o = Se(), i = t, l = G(Ca, null), s = $(() => {
972
- const m = l?.size?.value ?? a.size;
973
- return n[m] ?? m;
974
- }), u = $(() => [
975
- "vc-button",
976
- {
977
- [`vc-button-${a.variant}`]: a.variant,
978
- [`vc-button--${s.value}`]: s.value,
979
- "vc-button--selected": a.selected,
980
- "vc-button--text": a.text,
981
- "vc-button--disabled": a.disabled || a.loading,
982
- "vc-button--loading": a.loading
983
- }
984
- ]);
985
- function f(m) {
986
- !a.disabled && !a.loading && (m.preventDefault(), i("click", m));
987
- }
988
- return (m, g) => r(o) ? w("", !0) : (v(), b("button", {
989
- key: 0,
990
- class: j(u.value),
991
- type: e.type,
992
- disabled: e.disabled || e.loading,
993
- "aria-label": e.ariaLabel,
994
- "aria-busy": e.loading || void 0,
995
- "aria-pressed": e.selected || void 0,
996
- onClick: f
997
- }, [
998
- e.loading ? (v(), N(r(U), {
999
- key: 0,
1000
- icon: "lucide-loader-2",
1001
- class: "vc-button__icon tw-animate-spin",
1002
- size: e.iconSize
1003
- }, null, 8, ["size"])) : e.icon ? (v(), N(r(U), {
1004
- key: 1,
1005
- class: j(["vc-button--icon", e.iconClass]),
1006
- icon: e.icon,
1007
- size: e.iconSize
1008
- }, null, 8, ["class", "icon", "size"])) : w("", !0),
1009
- m.$slots.default ? (v(), b("span", Ta, [
1010
- C(m.$slots, "default")
1011
- ])) : w("", !0)
1012
- ], 10, xa));
1013
- }
1014
- }), ct = Ee({
1015
- name: "toolbar-service",
1016
- getKey: (e) => `${e.bladeId.toLowerCase()}::${e.toolbarItem.id}`,
1017
- registerIntoService: (e, t) => e.registerToolbarItem(t.toolbarItem, t.bladeId)
1018
- });
1019
- function nr(e, t) {
1020
- const n = t.toLowerCase();
1021
- ct.preregister({
1022
- bladeId: n,
1023
- toolbarItem: e
1024
- });
1025
- }
1026
- function zt() {
1027
- const e = Vt({
1028
- createRegistration: (s, u) => ({ bladeId: s, toolbarItem: u }),
1029
- getRegistrationBladeId: (s) => s.bladeId,
1030
- getRegistrationItemId: (s) => s.toolbarItem.id
1031
- }), t = (s, u) => {
1032
- e.register(s, u);
1033
- }, n = (s, u) => {
1034
- e.unregister(s, u);
1035
- }, a = (s) => {
1036
- const u = s ? s.toLowerCase() : "", f = e.get(u), m = e.get("*"), g = [...f], c = new Set(g.map((d) => d.id));
1037
- return m.forEach((d) => {
1038
- c.has(d.id) || g.push(d);
1039
- }), [...g];
1040
- }, o = (s) => {
1041
- e.clear(s);
1042
- }, i = ({
1043
- id: s,
1044
- bladeId: u,
1045
- toolbarItem: f
1046
- }) => {
1047
- e.update(s, u, f);
1048
- }, l = {
1049
- registerToolbarItem: t,
1050
- unregisterToolbarItem: n,
1051
- getToolbarItems: a,
1052
- clearBladeToolbarItems: o,
1053
- registeredToolbarItems: e.registrations,
1054
- isToolbarItemRegistered: (s) => e.isRegistered(s),
1055
- updateToolbarItem: i
1056
- };
1057
- return ct.replayInto(l), l;
1058
- }
1059
- const Ra = "fallback-blade-id";
1060
- let Xe = null;
1061
- const Aa = We({
1062
- key: Lt,
1063
- create: zt,
1064
- bus: ct,
1065
- name: "ToolbarService"
1066
- });
1067
- function ar() {
1068
- return Aa.provide();
1069
- }
1070
- function lr(e = {}) {
1071
- const { autoCleanup: t = !0 } = e, n = G(Lt, null);
1072
- !n && !Xe && (Xe = zt());
1073
- const a = n || Xe;
1074
- if (!a)
1075
- throw new Error("Toolbar service is not available");
1076
- const o = G(Et, void 0), i = $(() => o?.value?.id ?? Ra), l = (d) => d ?? i.value, s = (d, y) => {
1077
- a.registerToolbarItem(d, l(y));
1078
- }, u = (d, y) => {
1079
- a.unregisterToolbarItem(d, l(y));
1080
- }, f = (d, y, h) => {
1081
- a.updateToolbarItem({ id: d, bladeId: l(h), toolbarItem: y });
1082
- }, m = (d) => a.getToolbarItems(l(d)), g = (d) => {
1083
- a.clearBladeToolbarItems(l(d));
1084
- };
1085
- return qe() && t && lt(() => {
1086
- g();
1087
- }), {
1088
- registerToolbarItem: s,
1089
- unregisterToolbarItem: u,
1090
- updateToolbarItem: f,
1091
- getToolbarItems: m,
1092
- clearBladeToolbarItems: g,
1093
- isToolbarItemRegistered: a.isToolbarItemRegistered,
1094
- registeredToolbarItems: a.registeredToolbarItems
1095
- };
1096
- }
1097
- const Na = ["aria-label"], Da = { class: "tw-sr-only" }, Va = ["aria-label"], Pa = { class: "tw-sr-only" }, le = /* @__PURE__ */ V({
1098
- __name: "vc-skeleton",
1099
- props: {
1100
- variant: { default: "text" },
1101
- rows: { default: 1 },
1102
- width: {},
1103
- height: {},
1104
- animated: { type: Boolean, default: !0 },
1105
- ariaLabel: { default: "Loading..." }
1106
- },
1107
- setup(e) {
1108
- const t = e;
1109
- function n(o) {
1110
- return o === t.rows ? "60%" : "100%";
1111
- }
1112
- function a(o) {
1113
- if (o !== void 0)
1114
- return typeof o == "number" ? `${o}px` : o;
1115
- }
1116
- return (o, i) => e.variant === "text" ? (v(), b("div", {
1117
- key: 0,
1118
- class: j(["vc-skeleton", {
1119
- "vc-skeleton--animated": e.animated
1120
- }]),
1121
- role: "status",
1122
- "aria-busy": "true",
1123
- "aria-label": e.ariaLabel
1124
- }, [
1125
- L("span", Da, T(e.ariaLabel), 1),
1126
- (v(!0), b(we, null, ot(e.rows, (l) => (v(), b("div", {
1127
- key: l,
1128
- class: "vc-skeleton__row",
1129
- style: Re({
1130
- width: n(l)
1131
- }),
1132
- "aria-hidden": "true"
1133
- }, null, 4))), 128))
1134
- ], 10, Na)) : (v(), b("div", {
1135
- key: 1,
1136
- class: j(["vc-skeleton__shape", [`vc-skeleton__shape--${e.variant}`, { "tw-animate-pulse": e.animated }]]),
1137
- style: Re({
1138
- width: a(e.width),
1139
- height: a(e.height)
1140
- }),
1141
- role: "status",
1142
- "aria-busy": "true",
1143
- "aria-label": e.ariaLabel
1144
- }, [
1145
- L("span", Pa, T(e.ariaLabel), 1)
1146
- ], 14, Va));
1147
- }
1148
- }), or = /* @__PURE__ */ V({
1149
- __name: "vc-container",
1150
- props: {
1151
- shadow: { type: Boolean },
1152
- noPadding: { type: Boolean },
1153
- ariaLabel: {}
1154
- },
1155
- emits: ["scroll"],
1156
- setup(e, { expose: t, emit: n }) {
1157
- const a = n, o = S(), i = S(!1), l = () => {
1158
- o.value && o.value.scroll(0, 0);
1159
- };
1160
- function s(u) {
1161
- a("scroll", u);
1162
- }
1163
- return xt(o, () => {
1164
- i.value = !!(o.value && o.value.clientHeight < o.value.scrollHeight);
1165
- }), t({
1166
- scrollTop: l,
1167
- component: o
1168
- }), (u, f) => (v(), N(it(e.ariaLabel ? "section" : "div"), {
1169
- class: j([
1170
- "vc-container",
1171
- {
1172
- "vc-container--shadow": e.shadow && i.value,
1173
- "vc-container--nopadding": e.noPadding
1174
- }
1175
- ]),
1176
- "aria-label": e.ariaLabel
1177
- }, {
1178
- default: O(() => [
1179
- L("div", {
1180
- ref_key: "component",
1181
- ref: o,
1182
- class: "vc-container__inner",
1183
- tabindex: "0",
1184
- onScroll: s
1185
- }, [
1186
- C(u.$slots, "default")
1187
- ], 544)
1188
- ]),
1189
- _: 3
1190
- }, 8, ["class", "aria-label"]));
1191
- }
1192
- }), Fa = ["id", "role"], za = /* @__PURE__ */ V({
1193
- __name: "vc-hint",
1194
- props: {
1195
- id: {},
1196
- error: { type: Boolean }
1197
- },
1198
- setup(e) {
1199
- return (t, n) => (v(), b("div", {
1200
- id: e.id,
1201
- class: j(["vc-hint", {
1202
- "vc-hint--error": e.error
1203
- }]),
1204
- role: e.error ? "alert" : void 0
1205
- }, [
1206
- C(t.$slots, "default")
1207
- ], 10, Fa));
1208
- }
1209
- }), fe = za, qa = ["role", "tabindex", "aria-label", "onKeydown"], Ua = {
1210
- key: 0,
1211
- class: "vc-image__placeholder",
1212
- "aria-hidden": "true"
1213
- }, Ka = /* @__PURE__ */ V({
1214
- __name: "vc-image",
1215
- props: {
1216
- aspect: { default: "1x1" },
1217
- rounded: { type: Boolean },
1218
- bordered: { type: Boolean },
1219
- clickable: { type: Boolean },
1220
- src: {},
1221
- size: { default: "auto" },
1222
- background: { default: "cover" },
1223
- emptyIcon: { default: "lucide-image" },
1224
- alt: {},
1225
- thumbnailSize: {}
1226
- },
1227
- emits: ["click"],
1228
- setup(e, { emit: t }) {
1229
- const n = de("vc-image"), a = e, o = t;
1230
- function i(g) {
1231
- if (!g) return g;
1232
- try {
1233
- const c = new URL(g);
1234
- if (c.protocol === "http:" && window.location.protocol === "https:")
1235
- return c.protocol = "https:", c.href;
1236
- } catch {
1237
- n.warn("Invalid URL:", g);
1238
- }
1239
- return g;
1240
- }
1241
- const l = $(() => ta(a.src, a.thumbnailSize) ?? a.src), s = S(!1), u = $(() => s.value ? a.src : l.value);
1242
- Y(
1243
- () => [a.src, a.thumbnailSize],
1244
- () => {
1245
- s.value = !1;
1246
- }
1247
- ), Y(
1248
- u,
1249
- (g) => {
1250
- if (!g || !a.thumbnailSize || s.value || g === a.src) return;
1251
- const c = new Image();
1252
- c.src = i(g), c.onerror = () => {
1253
- s.value = !0;
1254
- };
1255
- },
1256
- { immediate: !0 }
1257
- );
1258
- const f = $(() => {
1259
- if (u.value) {
1260
- const g = i(u.value);
1261
- return `background: url(${CSS.escape(g)}) center / ${a.background} no-repeat`;
1262
- }
1263
- });
1264
- function m() {
1265
- a.clickable && o("click");
1266
- }
1267
- return (g, c) => (v(), b("div", {
1268
- class: j(["vc-image", [`vc-image_${e.size}`]])
1269
- }, [
1270
- L("div", {
1271
- class: j([
1272
- "vc-image__container",
1273
- `vc-image_${e.aspect}`,
1274
- {
1275
- "vc-image__container--rounded": e.rounded,
1276
- "vc-image__container--bordered": e.bordered,
1277
- "vc-image__container--clickable": e.clickable
1278
- }
1279
- ]),
1280
- style: Re(f.value),
1281
- role: e.clickable ? "button" : e.src && e.alt ? "img" : void 0,
1282
- tabindex: e.clickable ? 0 : void 0,
1283
- "aria-label": e.alt || (e.clickable ? g.$t("COMPONENTS.ATOMS.VC_IMAGE.LABEL") : void 0),
1284
- onClick: m,
1285
- onKeydown: [
1286
- Z(H(m, ["prevent"]), ["enter"]),
1287
- Z(H(m, ["prevent"]), ["space"])
1288
- ]
1289
- }, [
1290
- e.src ? w("", !0) : (v(), b("div", Ua, [
1291
- x(r(U), {
1292
- icon: e.emptyIcon,
1293
- size: "xl"
1294
- }, null, 8, ["icon"])
1295
- ]))
1296
- ], 46, qa)
1297
- ], 2));
1298
- }
1299
- }), Wa = { class: "vc-label__text" }, ja = { class: "vc-label__content" }, Ha = {
1300
- key: 0,
1301
- class: "vc-label__required",
1302
- "aria-hidden": "true"
1303
- }, Ga = {
1304
- key: 0,
1305
- class: "vc-label__tooltip"
1306
- }, Ya = {
1307
- key: 1,
1308
- class: "vc-label__language"
1309
- }, He = /* @__PURE__ */ V({
1310
- __name: "vc-label",
1311
- props: {
1312
- required: { type: Boolean },
1313
- tooltipIcon: { default: "lucide-info" },
1314
- multilanguage: { type: Boolean },
1315
- currentLanguage: {},
1316
- error: { type: Boolean },
1317
- htmlFor: {}
1318
- },
1319
- setup(e) {
1320
- return (t, n) => (v(), N(it(e.htmlFor ? "label" : "div"), {
1321
- class: j(["vc-label", {
1322
- "vc-label--error": e.error
1323
- }]),
1324
- for: e.htmlFor || void 0
1325
- }, {
1326
- default: O(() => [
1327
- L("div", Wa, [
1328
- L("span", ja, [
1329
- C(t.$slots, "default")
1330
- ]),
1331
- e.required ? (v(), b("span", Ha, "*")) : w("", !0)
1332
- ]),
1333
- t.$slots.tooltip ? (v(), b("span", Ga, [
1334
- x(r(Bt), { placement: "top-start" }, {
1335
- tooltip: O(() => [
1336
- C(t.$slots, "tooltip")
1337
- ]),
1338
- default: O(() => [
1339
- x(r(U), {
1340
- class: "vc-label__tooltip-icon",
1341
- icon: e.tooltipIcon,
1342
- size: "s"
1343
- }, null, 8, ["icon"])
1344
- ]),
1345
- _: 3
1346
- })
1347
- ])) : w("", !0),
1348
- e.multilanguage ? (v(), b("div", Ya, T(e.currentLanguage), 1)) : w("", !0)
1349
- ]),
1350
- _: 3
1351
- }, 8, ["class", "for"]));
1352
- }
1353
- }), Ja = ["disabled", "aria-disabled"], Xa = { class: "vc-link__text" }, Za = /* @__PURE__ */ V({
1354
- __name: "vc-link",
1355
- props: {
1356
- active: { type: Boolean },
1357
- disabled: { type: Boolean },
1358
- onClick: { type: Function }
1359
- },
1360
- emits: ["click"],
1361
- setup(e, { emit: t }) {
1362
- const n = e, a = t;
1363
- function o() {
1364
- n.disabled || a("click");
1365
- }
1366
- return (i, l) => (v(), b("button", {
1367
- type: "button",
1368
- class: j(["vc-link", {
1369
- "vc-link--active": e.active,
1370
- "vc-link--disabled": e.disabled
1371
- }]),
1372
- disabled: e.disabled,
1373
- "aria-disabled": e.disabled,
1374
- onClick: o
1375
- }, [
1376
- L("span", Xa, [
1377
- C(i.$slots, "default")
1378
- ])
1379
- ], 10, Ja));
1380
- }
1381
- }), Qa = Za, _a = ["aria-label"], el = { class: "vc-status__content" }, tl = /* @__PURE__ */ V({
1382
- __name: "vc-status",
1383
- props: {
1384
- variant: { default: "info" },
1385
- extend: { type: Boolean },
1386
- dot: { type: Boolean, default: !1 }
1387
- },
1388
- setup(e) {
1389
- return (t, n) => (v(), b("div", {
1390
- class: j(["vc-status", [
1391
- `vc-status--${e.variant}`,
1392
- {
1393
- "vc-status--extended": e.extend,
1394
- "vc-status--dot": e.dot
1395
- }
1396
- ]]),
1397
- role: "status",
1398
- "aria-label": e.dot ? e.variant : void 0
1399
- }, [
1400
- L("div", el, [
1401
- C(t.$slots, "default")
1402
- ])
1403
- ], 10, _a));
1404
- }
1405
- }), nl = ["aria-label"], al = /* @__PURE__ */ V({
1406
- __name: "vc-status-icon",
1407
- props: {
1408
- status: { type: Boolean }
1409
- },
1410
- setup(e) {
1411
- return (t, n) => (v(), b("div", {
1412
- class: "vc-status-icon",
1413
- role: "img",
1414
- "aria-label": e.status ? "Active" : "Inactive"
1415
- }, [
1416
- e.status ? (v(), N(r(U), {
1417
- key: 0,
1418
- icon: "lucide-circle-check",
1419
- class: "vc-status-icon__icon vc-status-icon__icon--success",
1420
- "aria-hidden": "true"
1421
- })) : (v(), N(r(U), {
1422
- key: 1,
1423
- icon: "lucide-circle-x",
1424
- class: "vc-status-icon__icon vc-status-icon__icon--inactive",
1425
- "aria-hidden": "true"
1426
- }))
1427
- ], 8, nl));
1428
- }
1429
- }), ll = ["aria-label"], kt = 40, ol = /* @__PURE__ */ V({
1430
- __name: "vc-scrollable-container",
1431
- props: {
1432
- speed: { default: void 0 }
1433
- },
1434
- setup(e, { expose: t }) {
1435
- const n = e, a = S(null), o = {};
1436
- n.speed !== void 0 && (o.speed = n.speed);
1437
- const { canScrollUp: i, canScrollDown: l, startScroll: s, stopScroll: u, updateScrollState: f } = sa(
1438
- a,
1439
- o
1440
- );
1441
- function m(g) {
1442
- if (!a.value) return;
1443
- const c = g === "up" ? -kt : kt;
1444
- a.value.scrollBy({ top: c, behavior: "smooth" });
1445
- }
1446
- return t({
1447
- viewportRef: a,
1448
- updateScrollState: f
1449
- }), (g, c) => (v(), b("div", {
1450
- class: "vc-scrollable-container",
1451
- role: "region",
1452
- "aria-label": g.$t("COMPONENTS.ATOMS.VC_SCROLLABLE_CONTAINER.LABEL")
1453
- }, [
1454
- L("div", {
1455
- class: j(["vc-scrollable-container__arrow", { "vc-scrollable-container__arrow--hidden": !r(i) }]),
1456
- "aria-hidden": "true",
1457
- onPointerenter: c[0] || (c[0] = (d) => r(s)("up")),
1458
- onPointerleave: c[1] || (c[1] = //@ts-ignore
1459
- (...d) => r(u) && r(u)(...d))
1460
- }, [
1461
- C(g.$slots, "arrow-up", {}, () => [
1462
- x(r(U), {
1463
- icon: "lucide-chevron-up",
1464
- size: "xs"
1465
- })
1466
- ])
1467
- ], 34),
1468
- L("div", {
1469
- ref_key: "viewportRef",
1470
- ref: a,
1471
- class: "vc-scrollable-container__viewport",
1472
- tabindex: "0",
1473
- onScroll: c[2] || (c[2] = //@ts-ignore
1474
- (...d) => r(f) && r(f)(...d)),
1475
- onKeydown: [
1476
- c[3] || (c[3] = Z(H((d) => m("up"), ["prevent"]), ["up"])),
1477
- c[4] || (c[4] = Z(H((d) => m("down"), ["prevent"]), ["down"]))
1478
- ]
1479
- }, [
1480
- C(g.$slots, "default")
1481
- ], 544),
1482
- L("div", {
1483
- class: j(["vc-scrollable-container__arrow", { "vc-scrollable-container__arrow--hidden": !r(l) }]),
1484
- "aria-hidden": "true",
1485
- onPointerenter: c[5] || (c[5] = (d) => r(s)("down")),
1486
- onPointerleave: c[6] || (c[6] = //@ts-ignore
1487
- (...d) => r(u) && r(u)(...d))
1488
- }, [
1489
- C(g.$slots, "arrow-down", {}, () => [
1490
- x(r(U), {
1491
- icon: "lucide-chevron-down",
1492
- size: "xs"
1493
- })
1494
- ])
1495
- ], 34)
1496
- ], 8, ll));
1497
- }
1498
- }), dt = /* @__PURE__ */ new Map();
1499
- function il(e) {
1500
- return e?.map((t) => t.toLowerCase());
1501
- }
1502
- function ir(e) {
1503
- dt.set(e.id, {
1504
- ...e,
1505
- targetBlades: il(e.targetBlades)
1506
- });
1507
- }
1508
- function rl(e) {
1509
- const t = e.toLowerCase();
1510
- return Array.from(dt.values()).filter((n) => !n.targetBlades || n.targetBlades.includes(t)).map((n) => ({ ...n, targetBlades: n.targetBlades ? [...n.targetBlades] : void 0 }));
1511
- }
1512
- function sl() {
1513
- return Array.from(dt.values()).map((e) => ({
1514
- ...e,
1515
- targetBlades: e.targetBlades ? [...e.targetBlades] : void 0
1516
- }));
1517
- }
1518
- function ul(e) {
1519
- return En(e);
1520
- }
1521
- const qt = Ee({
1522
- name: "widget-service",
1523
- getKey: (e) => `${e.bladeId.toLowerCase()}::${e.widget.id}`,
1524
- registerIntoService: (e, t) => e.registerWidget(t.widget, t.bladeId)
1525
- });
1526
- function rr(e, t) {
1527
- const n = t.toLowerCase();
1528
- qt.preregister({
1529
- bladeId: n,
1530
- widget: e
1531
- });
1532
- }
1533
- function sr() {
1534
- const e = Vt({
1535
- createRegistration: (a, o) => ({ bladeId: a, widget: o }),
1536
- getRegistrationBladeId: (a) => a.bladeId,
1537
- getRegistrationItemId: (a) => a.widget.id
1538
- }), n = {
1539
- registerWidget: (a, o) => e.register(a, o),
1540
- unregisterWidget: (a, o) => e.unregister(a, o),
1541
- getWidgets: (a) => e.get(a),
1542
- updateWidget: ({ id: a, bladeId: o, widget: i }) => e.update(a, o, i),
1543
- getExternalWidgetsForBlade: (a) => rl(a.toLowerCase()),
1544
- getAllExternalWidgets: sl,
1545
- cloneWidget: ul
1546
- };
1547
- return qt.replayInto(n), n;
1548
- }
1549
- const cl = de("use-theme"), pe = S([
1550
- { key: "light", localizationKey: "CORE.THEMES.LIGHT" },
1551
- { key: "dark", localizationKey: "CORE.THEMES.DARK" }
1552
- ]), ur = Mn(() => {
1553
- const { t: e } = ke.global;
1554
- function t(f) {
1555
- (Array.isArray(f) ? f : [f]).forEach((m) => {
1556
- pe.value.some((g) => g.key === m.key) || pe.value.push(m);
1557
- });
1558
- }
1559
- function n(f) {
1560
- (Array.isArray(f) ? f : [f]).forEach((m) => {
1561
- const g = pe.value.findIndex((c) => c.key === m);
1562
- g >= 0 && pe.value.splice(g, 1);
1563
- });
1564
- }
1565
- const a = $(() => pe.value.map((f) => f.key)), o = Bn({
1566
- attribute: "data-theme",
1567
- emitAuto: !0,
1568
- initialValue: "light",
1569
- // Should align with a default theme in _themeRegistry
1570
- modes: {
1571
- // Dynamically build modes from registered theme keys
1572
- ...a.value.reduce(
1573
- (f, m) => (f[m] = m, f),
1574
- {}
1575
- )
1576
- }
1577
- }), { state: i, next: l } = Cn(a, { initialValue: o });
1578
- Qe(() => {
1579
- i.value && (o.value = i.value);
1580
- });
1581
- function s(f) {
1582
- a.value.includes(f) ? i.value = f : cl.warn(`Attempted to set an unregistered theme: ${f}`);
1583
- }
1584
- const u = $(() => {
1585
- const f = pe.value.find((m) => m.key === i.value);
1586
- return f ? f.localizationKey ? e(f.localizationKey) : Je(f.key) : i.value ? Je(i.value) : "";
1587
- });
1588
- return {
1589
- themes: $(
1590
- () => pe.value.map((f) => ({
1591
- key: f.key,
1592
- name: f.localizationKey ? e(f.localizationKey) : Je(f.key)
1593
- }))
1594
- ),
1595
- currentThemeKey: i,
1596
- currentLocalizedName: u,
1597
- next: l,
1598
- register: t,
1599
- unregister: n,
1600
- setTheme: s
1601
- };
1602
- }), ft = Ee({
1603
- name: "dashboard-service",
1604
- getKey: (e) => e.id,
1605
- registerIntoService: (e, t) => e.registerWidget(t)
1606
- });
1607
- function cr(e) {
1608
- ft.preregister(e);
1609
- }
1610
- const dl = () => ({
1611
- widgets: _e(/* @__PURE__ */ new Map()),
1612
- layout: _e(/* @__PURE__ */ new Map())
1613
- });
1614
- function fl(e = {}) {
1615
- const t = dl(), n = e.hasAccess ?? (() => !0), s = {
1616
- registerWidget: (u) => {
1617
- if (t.widgets.has(u.id))
1618
- throw new Error(`Widget with id ${u.id} already registered`);
1619
- t.widgets.set(u.id, {
1620
- ...u,
1621
- permissions: u.permissions ? [...u.permissions] : void 0,
1622
- position: u.position ? { ...u.position } : void 0,
1623
- props: u.props ? { ...u.props } : void 0
1624
- }), u.position && t.layout.set(u.id, { ...u.position });
1625
- },
1626
- getWidgets: () => Array.from(t.widgets.values()).filter((u) => !u.permissions || u.permissions.length === 0 || n(u.permissions)).map((u) => ({
1627
- ...u,
1628
- permissions: u.permissions ? [...u.permissions] : void 0,
1629
- position: u.position ? { ...u.position } : void 0,
1630
- props: u.props ? { ...u.props } : void 0
1631
- })),
1632
- updateWidgetPosition: (u, f) => {
1633
- if (!t.widgets.has(u))
1634
- throw new Error(`Widget with id ${u} not found`);
1635
- t.layout.set(u, { ...f });
1636
- },
1637
- getLayout: () => new Map(t.layout)
1638
- };
1639
- return ft.replayInto(s), s;
1640
- }
1641
- const It = de("use-dashboard"), Ut = We({
1642
- key: In,
1643
- bus: ft,
1644
- name: "DashboardService",
1645
- create: () => {
1646
- let e = () => !0;
1647
- try {
1648
- const { hasAccess: t } = aa();
1649
- e = (n) => t(n);
1650
- } catch (t) {
1651
- It.warn("Permissions composable unavailable, dashboard falls back to allow-all access check", t);
1652
- }
1653
- return fl({
1654
- hasAccess: e
1655
- });
1656
- },
1657
- onMissing: () => It.error("Dashboard service not found")
1658
- });
1659
- function dr() {
1660
- return Ut.provide();
1661
- }
1662
- function fr() {
1663
- return Ut.use();
1664
- }
1665
- const Kt = Ee({
1666
- name: "app-bar-menu-service",
1667
- getKey: (e) => e.id || crypto.randomUUID(),
1668
- registerIntoService: (e, t) => e.register(t),
1669
- unregisterFromService: (e, t) => e.unregister(t)
1670
- });
1671
- function vr(e) {
1672
- Kt.preregister(e);
1673
- }
1674
- function gr() {
1675
- return Pt({
1676
- bus: Kt,
1677
- createItem: (e, t) => ({
1678
- id: e.id || "",
1679
- order: e.order ?? t,
1680
- title: e.title,
1681
- icon: typeof e.icon == "object" ? et(e.icon) : e.icon,
1682
- component: e.component ? et(e.component) : void 0,
1683
- props: e.props,
1684
- onClick: e.onClick,
1685
- slot: e.slot,
1686
- badge: e.badge,
1687
- searchTerms: e.searchTerms
1688
- }),
1689
- getId: (e) => e.id || ""
1690
- });
1691
- }
1692
- const vt = Ee({
1693
- name: "settings-menu-service",
1694
- getKey: (e) => e.id || crypto.randomUUID(),
1695
- registerIntoService: (e, t) => e.register(t),
1696
- unregisterFromService: (e, t) => e.unregister(t)
1697
- });
1698
- function mr(e) {
1699
- vt.preregister(e);
1700
- }
1701
- function vl() {
1702
- return Pt({
1703
- bus: vt,
1704
- createItem: (e, t) => ({
1705
- id: e.id || "",
1706
- order: e.order ?? t,
1707
- group: e.group,
1708
- component: et(e.component),
1709
- props: e.props
1710
- }),
1711
- getId: (e) => e.id || ""
1712
- });
1713
- }
1714
- const gl = de("use-settings-menu"), Wt = We({
1715
- key: Sn,
1716
- create: vl,
1717
- bus: vt,
1718
- name: "SettingsMenuService",
1719
- onMissing: () => gl.error("Settings menu service not found")
1720
- });
1721
- function pr() {
1722
- return Wt.provide();
1723
- }
1724
- function br() {
1725
- return Wt.use();
1726
- }
1727
- const ml = {
1728
- key: 0,
1729
- class: "vc-date-picker vc-date-picker--skeleton"
1730
- }, pl = { class: "vc-date-picker__field-container" }, bl = { class: "vc-date-picker__field" }, yl = ["aria-label"], hl = {
1731
- key: 0,
1732
- class: "vc-date-picker__loading"
1733
- }, kl = { key: 0 }, Il = { key: 1 }, Sl = /* @__PURE__ */ V({
1734
- __name: "vc-date-picker",
1735
- props: {
1736
- modelValue: {},
1737
- type: { default: "date" },
1738
- datePickerOptions: {},
1739
- placeholder: {},
1740
- hint: {},
1741
- clearable: { type: Boolean },
1742
- loading: { type: Boolean },
1743
- autofocus: { type: Boolean },
1744
- size: { default: "default" },
1745
- multilanguage: { type: Boolean },
1746
- currentLanguage: {},
1747
- label: {},
1748
- tooltip: {},
1749
- disabled: { type: Boolean },
1750
- required: { type: Boolean },
1751
- name: { default: "Field" },
1752
- error: { type: Boolean },
1753
- errorMessage: {}
1754
- },
1755
- emits: ["update:modelValue", "blur", "focus"],
1756
- setup(e, { emit: t }) {
1757
- const n = e, a = t, o = Se(), { isMobile: i, isDesktop: l } = je(), { labelId: s, errorId: u, hintId: f, invalid: m, resolvedDisabled: g, ariaRequired: c, ariaDescribedBy: d } = Ke(n), y = S(!1), h = window.navigator.language, B = S(n.modelValue), p = S(null), I = $(() => n.type === "date" && "9999-12-31" || void 0), P = (() => {
1758
- const k = new Intl.DateTimeFormat(h, { hour: "numeric" }).format();
1759
- return Number.isInteger(Number(k));
1760
- })(), J = $(() => {
1761
- const k = n.type === "datetime-local", M = new Intl.DateTimeFormat(h, {
1762
- year: "numeric",
1763
- month: "2-digit",
1764
- day: "2-digit",
1765
- ...k ? { hour: "2-digit", minute: "2-digit", hour12: !P } : {}
1766
- }).formatToParts(new Date(2e3, 0, 15, 13, 30)), K = {
1767
- year: "yyyy",
1768
- month: "MM",
1769
- day: "dd",
1770
- hour: P ? "HH" : "hh",
1771
- minute: "mm",
1772
- dayPeriod: "aa"
1773
- };
1774
- return M.map((te) => K[te.type] ?? te.value).join("");
1775
- }), ae = $(() => {
1776
- if (!n.datePickerOptions?.textInput) return n.datePickerOptions;
1777
- const k = { ...n.datePickerOptions }, M = typeof k.textInput == "object" ? k.textInput : {};
1778
- return k.textInput = {
1779
- format: J.value,
1780
- rangeSeparator: " - ",
1781
- ...M
1782
- }, k;
1783
- }), ee = (k) => {
1784
- const M = {
1785
- year: "numeric",
1786
- month: "numeric",
1787
- day: "numeric"
1788
- };
1789
- n.type === "datetime-local" && (M.hour = "numeric", M.minute = "numeric", M.hour12 = !P);
1790
- const K = (te) => new Intl.DateTimeFormat(h, M).format(te);
1791
- return Array.isArray(k) ? k.map((te) => te != null ? K(te) : "").join(" - ") : K(k);
1792
- };
1793
- Y(
1794
- () => n.modelValue,
1795
- (k) => {
1796
- B.value !== k && (B.value = k);
1797
- }
1798
- ), Y(B, (k, M) => {
1799
- k !== M && k !== n.modelValue && (p.value = null, a("update:modelValue", k));
1800
- });
1801
- function F() {
1802
- B.value = null, a("update:modelValue", null);
1803
- }
1804
- function D(k) {
1805
- p.value = k;
1806
- }
1807
- function z() {
1808
- p.value = null;
1809
- }
1810
- function W(k) {
1811
- p.value != null && (B.value = [p.value, null], p.value = null), y.value = !1, a("blur", k);
1812
- }
1813
- function X() {
1814
- y.value = !0, a("focus");
1815
- }
1816
- return (k, M) => r(o) ? (v(), b("div", ml, [
1817
- e.label ? (v(), N(r(le), {
1818
- key: 0,
1819
- variant: "block",
1820
- width: 60 + (e.label?.length || 0) * 4,
1821
- height: 11
1822
- }, null, 8, ["width"])) : w("", !0),
1823
- x(r(le), {
1824
- variant: "block",
1825
- width: "100%",
1826
- height: 36
1827
- })
1828
- ])) : (v(), b("div", {
1829
- key: 1,
1830
- class: j(["vc-date-picker", [
1831
- {
1832
- "vc-date-picker--error": r(m),
1833
- "vc-date-picker--disabled": r(g),
1834
- "vc-date-picker--focused": y.value
1835
- }
1836
- ]])
1837
- }, [
1838
- e.label ? (v(), N(r(He), {
1839
- key: 0,
1840
- id: r(s),
1841
- class: "vc-date-picker__label",
1842
- required: e.required,
1843
- multilanguage: e.multilanguage,
1844
- "current-language": e.currentLanguage,
1845
- error: r(m)
1846
- }, ie({
1847
- default: O(() => [
1848
- L("span", null, T(e.label), 1)
1849
- ]),
1850
- _: 2
1851
- }, [
1852
- e.tooltip ? {
1853
- name: "tooltip",
1854
- fn: O(() => [
1855
- Q(T(e.tooltip), 1)
1856
- ]),
1857
- key: "0"
1858
- } : void 0
1859
- ]), 1032, ["id", "required", "multilanguage", "current-language", "error"])) : w("", !0),
1860
- L("div", {
1861
- class: j(["vc-date-picker__field-wrapper", {
1862
- "vc-date-picker__field-wrapper--default": e.size === "default",
1863
- "vc-date-picker__field-wrapper--small": e.size === "small"
1864
- }])
1865
- }, [
1866
- L("div", pl, [
1867
- L("div", bl, [
1868
- x(r(An), ne({
1869
- modelValue: B.value,
1870
- "onUpdate:modelValue": M[0] || (M[0] = (K) => B.value = K),
1871
- placeholder: e.placeholder || (e.type === "datetime-local" ? k.$t("COMPONENTS.MOLECULES.VC_INPUT.DATE_TIME_PLACEHOLDER") : k.$t("COMPONENTS.MOLECULES.VC_INPUT.DATE_PLACEHOLDER")),
1872
- disabled: r(g),
1873
- name: e.name,
1874
- autofocus: e.autofocus,
1875
- "max-date": I.value,
1876
- "time-picker-inline": "",
1877
- "enable-time-picker": e.type === "datetime-local",
1878
- format: ee,
1879
- locale: r(h),
1880
- "start-time": { hours: 0, minutes: 0 },
1881
- clearable: !1,
1882
- config: { closeOnAutoApply: !1 },
1883
- "auto-apply": "",
1884
- "teleport-center": r(i),
1885
- is24: r(P)
1886
- }, ae.value, {
1887
- teleport: r(l) ? "body" : void 0,
1888
- "aria-invalid": r(m) || void 0,
1889
- "aria-required": r(c),
1890
- "aria-describedby": r(d),
1891
- "aria-labelledby": e.label ? r(s) : void 0,
1892
- class: "vc-date-picker__input",
1893
- tabindex: "0",
1894
- onFocus: X,
1895
- onClosed: W,
1896
- onRangeStart: D,
1897
- onRangeEnd: z,
1898
- onTooltipOpen: X,
1899
- onTooltipClose: W
1900
- }), null, 16, ["modelValue", "placeholder", "disabled", "name", "autofocus", "max-date", "enable-time-picker", "locale", "teleport-center", "is24", "teleport", "aria-invalid", "aria-required", "aria-describedby", "aria-labelledby"]),
1901
- e.clearable && B.value && !e.disabled ? (v(), b("button", {
1902
- key: 0,
1903
- type: "button",
1904
- class: "vc-date-picker__clear",
1905
- "aria-label": k.$t("COMPONENTS.MOLECULES.VC_DATE_PICKER.CLEAR"),
1906
- onClick: F
1907
- }, [
1908
- x(r(U), {
1909
- size: "xs",
1910
- icon: "lucide-x"
1911
- })
1912
- ], 8, yl)) : w("", !0)
1913
- ]),
1914
- e.loading ? (v(), b("div", hl, [
1915
- x(r(U), {
1916
- icon: "lucide-loader-2",
1917
- class: "vc-date-picker__loading-icon",
1918
- size: "m"
1919
- })
1920
- ])) : w("", !0)
1921
- ])
1922
- ], 2),
1923
- x(Ae, {
1924
- name: "slide-up",
1925
- mode: "out-in"
1926
- }, {
1927
- default: O(() => [
1928
- r(m) && e.errorMessage ? (v(), b("div", kl, [
1929
- x(r(fe), {
1930
- id: r(u),
1931
- class: "vc-date-picker__hint-error",
1932
- error: !0
1933
- }, {
1934
- default: O(() => [
1935
- Q(T(e.errorMessage), 1)
1936
- ]),
1937
- _: 1
1938
- }, 8, ["id"])
1939
- ])) : (v(), b("div", Il, [
1940
- e.hint ? (v(), N(r(fe), {
1941
- key: 0,
1942
- id: r(f),
1943
- class: "vc-date-picker__desc"
1944
- }, {
1945
- default: O(() => [
1946
- Q(T(e.hint), 1)
1947
- ]),
1948
- _: 1
1949
- }, 8, ["id"])) : w("", !0)
1950
- ]))
1951
- ]),
1952
- _: 1
1953
- })
1954
- ], 2));
1955
- }
1956
- }), $l = {
1957
- key: 0,
1958
- class: "vc-color-input vc-color-input--skeleton"
1959
- }, wl = { class: "vc-color-input__field-container" }, Ol = { class: "vc-color-input__field" }, El = ["id", "placeholder", "disabled", "name", "autofocus", "aria-invalid", "aria-required", "aria-describedby", "aria-labelledby"], Ll = { class: "vc-color-input__color-container" }, Bl = ["aria-label"], Cl = ["value"], xl = ["aria-label"], Tl = {
1960
- key: 0,
1961
- class: "vc-color-input__loading"
1962
- }, Ml = { key: 0 }, Rl = { key: 1 }, Al = /* @__PURE__ */ V({
1963
- __name: "vc-color-input",
1964
- props: {
1965
- modelValue: {},
1966
- placeholder: {},
1967
- hint: {},
1968
- clearable: { type: Boolean },
1969
- loading: { type: Boolean },
1970
- autofocus: { type: Boolean },
1971
- size: { default: "default" },
1972
- multilanguage: { type: Boolean },
1973
- currentLanguage: {},
1974
- label: {},
1975
- tooltip: {},
1976
- disabled: { type: Boolean },
1977
- required: { type: Boolean },
1978
- name: { default: "Field" },
1979
- error: { type: Boolean },
1980
- errorMessage: {}
1981
- },
1982
- emits: ["update:modelValue", "blur", "focus"],
1983
- setup(e, { expose: t, emit: n }) {
1984
- const a = Se(), o = e, i = n, {
1985
- fieldId: l,
1986
- labelId: s,
1987
- errorId: u,
1988
- hintId: f,
1989
- invalid: m,
1990
- resolvedDisabled: g,
1991
- ariaRequired: c,
1992
- ariaDescribedBy: d
1993
- } = Ke(o), y = S(!1), h = S(!1), B = S(), p = S(), I = S(o.modelValue ?? ""), P = S("");
1994
- function J(k) {
1995
- if (!k || typeof k != "string") {
1996
- P.value = "";
1997
- return;
1998
- }
1999
- const M = k.trim();
2000
- if (ea(M)) {
2001
- P.value = yt(M);
2002
- return;
2003
- }
2004
- const K = _n(M);
2005
- K && (P.value = K);
2006
- }
2007
- Y(
2008
- () => o.modelValue,
2009
- (k) => {
2010
- h.value || (h.value = !0, I.value = k ?? "", he(() => {
2011
- J(k ?? ""), h.value = !1;
2012
- }));
2013
- },
2014
- { immediate: !0 }
2015
- ), Y(P, (k) => {
2016
- k && p.value && (p.value.value = k);
2017
- });
2018
- function ae() {
2019
- h.value || (h.value = !0, i("update:modelValue", I.value || null), he(() => {
2020
- J(I.value), h.value = !1;
2021
- }));
2022
- }
2023
- function ee(k) {
2024
- const M = k.target;
2025
- if (M?.value) {
2026
- const K = yt(M.value);
2027
- P.value = K, I.value = K, i("update:modelValue", K);
2028
- }
2029
- }
2030
- function F() {
2031
- p.value?.click();
2032
- }
2033
- function D() {
2034
- I.value = "", P.value = "", i("update:modelValue", null);
2035
- }
2036
- function z(k) {
2037
- y.value = !1, i("blur", k);
2038
- }
2039
- function W() {
2040
- y.value = !0, i("focus");
2041
- }
2042
- function X() {
2043
- B.value?.focus();
2044
- }
2045
- return t({ focus: X }), (k, M) => r(a) ? (v(), b("div", $l, [
2046
- e.label ? (v(), N(r(le), {
2047
- key: 0,
2048
- variant: "block",
2049
- width: 60 + (e.label?.length || 0) * 4,
2050
- height: 11
2051
- }, null, 8, ["width"])) : w("", !0),
2052
- x(r(le), {
2053
- variant: "block",
2054
- width: "100%",
2055
- height: 36
2056
- })
2057
- ])) : (v(), b("div", {
2058
- key: 1,
2059
- class: j(["vc-color-input", [
2060
- {
2061
- "vc-color-input--error": r(m),
2062
- "vc-color-input--disabled": r(g),
2063
- "vc-color-input--focused": y.value
2064
- }
2065
- ]])
2066
- }, [
2067
- e.label ? (v(), N(r(He), {
2068
- key: 0,
2069
- id: r(s),
2070
- "html-for": r(l),
2071
- class: "vc-color-input__label",
2072
- required: e.required,
2073
- multilanguage: e.multilanguage,
2074
- "current-language": e.currentLanguage,
2075
- error: r(m)
2076
- }, ie({
2077
- default: O(() => [
2078
- L("span", null, T(e.label), 1)
2079
- ]),
2080
- _: 2
2081
- }, [
2082
- e.tooltip ? {
2083
- name: "tooltip",
2084
- fn: O(() => [
2085
- Q(T(e.tooltip), 1)
2086
- ]),
2087
- key: "0"
2088
- } : void 0
2089
- ]), 1032, ["id", "html-for", "required", "multilanguage", "current-language", "error"])) : w("", !0),
2090
- L("div", {
2091
- class: j(["vc-color-input__field-wrapper", {
2092
- "vc-color-input__field-wrapper--default": e.size === "default",
2093
- "vc-color-input__field-wrapper--small": e.size === "small"
2094
- }])
2095
- }, [
2096
- L("div", wl, [
2097
- L("div", Ol, [
2098
- rt(L("input", {
2099
- id: r(l),
2100
- ref_key: "inputRef",
2101
- ref: B,
2102
- "onUpdate:modelValue": M[0] || (M[0] = (K) => I.value = K),
2103
- placeholder: e.placeholder,
2104
- type: "text",
2105
- disabled: r(g),
2106
- name: e.name,
2107
- autofocus: e.autofocus,
2108
- "aria-invalid": r(m) || void 0,
2109
- "aria-required": r(c),
2110
- "aria-describedby": r(d),
2111
- "aria-labelledby": e.label ? r(s) : void 0,
2112
- class: "vc-color-input__input",
2113
- tabindex: "0",
2114
- onBlur: z,
2115
- onFocus: W,
2116
- onInput: ae
2117
- }, null, 40, El), [
2118
- [sn, I.value]
2119
- ]),
2120
- L("div", Ll, [
2121
- L("button", {
2122
- type: "button",
2123
- class: "vc-color-input__color-square",
2124
- style: Re({ backgroundColor: P.value || "#ffffff" }),
2125
- "aria-label": `Pick color${P.value ? ": " + P.value : ""}`,
2126
- onClick: F
2127
- }, null, 12, Bl),
2128
- L("input", {
2129
- ref_key: "colorPickerRef",
2130
- ref: p,
2131
- type: "color",
2132
- value: P.value,
2133
- class: "vc-color-input__color-picker-hidden",
2134
- tabindex: "-1",
2135
- "aria-hidden": "true",
2136
- onChange: ee
2137
- }, null, 40, Cl)
2138
- ]),
2139
- e.clearable && I.value && !e.disabled ? (v(), b("button", {
2140
- key: 0,
2141
- type: "button",
2142
- class: "vc-color-input__clear",
2143
- "aria-label": k.$t("COMPONENTS.MOLECULES.VC_COLOR_INPUT.CLEAR"),
2144
- onClick: D
2145
- }, [
2146
- x(r(U), {
2147
- size: "xs",
2148
- icon: "lucide-x"
2149
- })
2150
- ], 8, xl)) : w("", !0)
2151
- ]),
2152
- e.loading ? (v(), b("div", Tl, [
2153
- x(r(U), {
2154
- icon: "lucide-loader-2",
2155
- class: "vc-color-input__loading-icon",
2156
- size: "m"
2157
- })
2158
- ])) : w("", !0)
2159
- ])
2160
- ], 2),
2161
- x(Ae, {
2162
- name: "slide-up",
2163
- mode: "out-in"
2164
- }, {
2165
- default: O(() => [
2166
- r(m) && e.errorMessage ? (v(), b("div", Ml, [
2167
- x(r(fe), {
2168
- id: r(u),
2169
- class: "vc-color-input__hint-error",
2170
- error: !0
2171
- }, {
2172
- default: O(() => [
2173
- Q(T(e.errorMessage), 1)
2174
- ]),
2175
- _: 1
2176
- }, 8, ["id"])
2177
- ])) : (v(), b("div", Rl, [
2178
- e.hint ? (v(), N(r(fe), {
2179
- key: 0,
2180
- id: r(f),
2181
- class: "vc-color-input__desc"
2182
- }, {
2183
- default: O(() => [
2184
- Q(T(e.hint), 1)
2185
- ]),
2186
- _: 1
2187
- }, 8, ["id"])) : w("", !0)
2188
- ]))
2189
- ]),
2190
- _: 1
2191
- })
2192
- ], 2));
2193
- }
2194
- }), Nl = { class: "vc-input__container" }, Dl = {
2195
- key: 0,
2196
- class: "vc-input__prepend"
2197
- }, Vl = { class: "vc-input__field-container" }, Pl = {
2198
- key: 0,
2199
- class: "vc-input__prepend-inner"
2200
- }, Fl = { class: "vc-input__field" }, zl = {
2201
- key: 0,
2202
- class: "vc-input__prefix"
2203
- }, ql = ["id", "placeholder", "type", "disabled", "name", "maxlength", "autofocus", "autocomplete", "aria-invalid", "aria-required", "aria-describedby", "aria-labelledby"], Ul = {
2204
- key: 1,
2205
- class: "vc-input__suffix"
2206
- }, Kl = ["aria-label"], Wl = ["aria-label"], jl = {
2207
- key: 1,
2208
- class: "vc-input__append-inner"
2209
- }, Hl = {
2210
- key: 2,
2211
- class: "vc-input__loading"
2212
- }, Gl = {
2213
- key: 1,
2214
- class: "vc-input__append"
2215
- }, Yl = { key: 0 }, Jl = { key: 1 }, gt = /* @__PURE__ */ V({
2216
- inheritAttrs: !1,
2217
- __name: "vc-input",
2218
- props: {
2219
- modelValue: {},
2220
- type: { default: "text" },
2221
- prefix: {},
2222
- suffix: {},
2223
- debounce: {},
2224
- maxlength: { default: "1024" },
2225
- step: { default: "1" },
2226
- autocomplete: {},
2227
- datePickerOptions: {},
2228
- placeholder: {},
2229
- hint: {},
2230
- clearable: { type: Boolean },
2231
- loading: { type: Boolean },
2232
- autofocus: { type: Boolean },
2233
- size: { default: "default" },
2234
- multilanguage: { type: Boolean },
2235
- currentLanguage: {},
2236
- label: {},
2237
- tooltip: {},
2238
- disabled: { type: Boolean },
2239
- required: { type: Boolean },
2240
- name: { default: "Field" },
2241
- error: { type: Boolean },
2242
- errorMessage: {}
2243
- },
2244
- emits: ["update:modelValue", "blur", "focus"],
2245
- setup(e, { emit: t }) {
2246
- const n = e, a = wt(), o = $(() => {
2247
- const { class: E, ...q } = a;
2248
- return q;
2249
- }), i = t, l = Se(), {
2250
- fieldId: s,
2251
- labelId: u,
2252
- errorId: f,
2253
- hintId: m,
2254
- invalid: g,
2255
- resolvedDisabled: c,
2256
- resolvedName: d,
2257
- ariaRequired: y,
2258
- ariaDescribedBy: h
2259
- } = Ke(n);
2260
- let B, p;
2261
- const I = S(), P = S(), J = S(r(n.type)), ae = S(!1), ee = S(), F = $({
2262
- get() {
2263
- return J.value === "integer" ? "number" : J.value;
2264
- },
2265
- set(E) {
2266
- J.value = E;
2267
- }
2268
- }), D = $(() => r(n.modelValue)), z = $({
2269
- get() {
2270
- return (n.type === "integer" || n.type === "number") && isNaN(I.value) ? "" : I.value;
2271
- },
2272
- set(E) {
2273
- (n.type === "number" || n.type === "integer") && E < 0 ? I.value = Math.abs(E) : I.value = E, X(I.value);
2274
- }
2275
- });
2276
- Y(
2277
- D,
2278
- (E) => {
2279
- n.type === "number" && E !== null ? ee.value = parseFloat(E) : n.type === "integer" && E !== null ? ee.value = Math.trunc(E) : ee.value = E, I.value !== ee.value && (I.value = ee.value);
2280
- },
2281
- { immediate: !0 }
2282
- );
2283
- function W(E) {
2284
- const q = ["Backspace", "Delete", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"], A = E.key;
2285
- if ((n.type === "number" || n.type === "integer") && (A === "-" || A === "e" || A === "+") && E.preventDefault(), n.type === "integer" && !/^\d$/.test(A) && !q.includes(A)) {
2286
- E.preventDefault();
2287
- return;
2288
- }
2289
- }
2290
- function X(E) {
2291
- k(E);
2292
- }
2293
- function k(E) {
2294
- p = () => {
2295
- if (ee.value !== E) {
2296
- let q;
2297
- n.type === "number" && E !== null && E !== void 0 ? q = E !== "" ? parseFloat(E) : null : n.type === "integer" && E !== null && E !== void 0 ? q = E !== "" ? Math.trunc(parseInt(E)) : null : q = E, i("update:modelValue", q);
2298
- }
2299
- p = void 0;
2300
- }, n.debounce !== void 0 ? (clearTimeout(B), B = setTimeout(p, +n.debounce)) : p();
2301
- }
2302
- function M() {
2303
- I.value = null, i("update:modelValue", null);
2304
- }
2305
- function K(E) {
2306
- ae.value = !1, i("blur", E);
2307
- }
2308
- function te() {
2309
- P.value?.focus();
2310
- }
2311
- function Ve() {
2312
- ae.value = !0, i("focus");
2313
- }
2314
- return (E, q) => r(l) ? (v(), b("div", ne({ key: 0 }, o.value, {
2315
- class: ["vc-input vc-input--skeleton", E.$attrs.class]
2316
- }), [
2317
- e.label ? (v(), N(r(le), {
2318
- key: 0,
2319
- variant: "block",
2320
- width: 60 + (e.label?.length || 0) * 4,
2321
- height: 11
2322
- }, null, 8, ["width"])) : w("", !0),
2323
- x(r(le), {
2324
- variant: "block",
2325
- width: "100%",
2326
- height: 36
2327
- })
2328
- ], 16)) : e.type === "date" || e.type === "datetime-local" ? (v(), N(r(Sl), ne({ key: 1 }, r(a), {
2329
- "model-value": e.modelValue,
2330
- type: e.type,
2331
- "date-picker-options": e.datePickerOptions,
2332
- label: e.label,
2333
- placeholder: e.placeholder,
2334
- hint: e.hint,
2335
- disabled: e.disabled,
2336
- error: e.error,
2337
- "error-message": e.errorMessage,
2338
- required: e.required,
2339
- clearable: e.clearable,
2340
- loading: e.loading,
2341
- autofocus: e.autofocus,
2342
- size: e.size,
2343
- tooltip: e.tooltip,
2344
- multilanguage: e.multilanguage,
2345
- "current-language": e.currentLanguage,
2346
- name: e.name,
2347
- "onUpdate:modelValue": q[0] || (q[0] = (A) => i("update:modelValue", A ?? null)),
2348
- onBlur: q[1] || (q[1] = (A) => i("blur", A)),
2349
- onFocus: q[2] || (q[2] = (A) => i("focus"))
2350
- }), null, 16, ["model-value", "type", "date-picker-options", "label", "placeholder", "hint", "disabled", "error", "error-message", "required", "clearable", "loading", "autofocus", "size", "tooltip", "multilanguage", "current-language", "name"])) : e.type === "color" ? (v(), N(r(Al), ne({ key: 2 }, r(a), {
2351
- "model-value": e.modelValue ?? null,
2352
- label: e.label,
2353
- placeholder: e.placeholder,
2354
- hint: e.hint,
2355
- disabled: e.disabled,
2356
- error: e.error,
2357
- "error-message": e.errorMessage,
2358
- required: e.required,
2359
- clearable: e.clearable,
2360
- loading: e.loading,
2361
- autofocus: e.autofocus,
2362
- size: e.size,
2363
- tooltip: e.tooltip,
2364
- multilanguage: e.multilanguage,
2365
- "current-language": e.currentLanguage,
2366
- name: e.name,
2367
- "onUpdate:modelValue": q[3] || (q[3] = (A) => i("update:modelValue", A)),
2368
- onBlur: q[4] || (q[4] = (A) => i("blur", A)),
2369
- onFocus: q[5] || (q[5] = (A) => i("focus"))
2370
- }), null, 16, ["model-value", "label", "placeholder", "hint", "disabled", "error", "error-message", "required", "clearable", "loading", "autofocus", "size", "tooltip", "multilanguage", "current-language", "name"])) : (v(), b("div", ne({ key: 3 }, o.value, {
2371
- class: ["vc-input", [
2372
- E.$attrs.class,
2373
- `vc-input--${e.type}`,
2374
- {
2375
- "vc-input--clearable": e.clearable,
2376
- "vc-input--error": r(g),
2377
- "vc-input--disabled": r(c),
2378
- "vc-input--focused": ae.value
2379
- }
2380
- ]]
2381
- }), [
2382
- e.label ? (v(), N(r(He), {
2383
- key: 0,
2384
- id: r(u),
2385
- "html-for": r(s),
2386
- class: "vc-input__label",
2387
- required: e.required,
2388
- multilanguage: e.multilanguage,
2389
- "current-language": e.currentLanguage,
2390
- error: r(g)
2391
- }, ie({
2392
- default: O(() => [
2393
- L("span", null, T(e.label), 1)
2394
- ]),
2395
- _: 2
2396
- }, [
2397
- e.tooltip ? {
2398
- name: "tooltip",
2399
- fn: O(() => [
2400
- Q(T(e.tooltip), 1)
2401
- ]),
2402
- key: "0"
2403
- } : void 0
2404
- ]), 1032, ["id", "html-for", "required", "multilanguage", "current-language", "error"])) : w("", !0),
2405
- L("div", Nl, [
2406
- E.$slots.prepend ? (v(), b("div", Dl, [
2407
- C(E.$slots, "prepend", { focus: te })
2408
- ])) : w("", !0),
2409
- L("div", {
2410
- class: j(["vc-input__field-wrapper", {
2411
- "vc-input__field-wrapper--default": e.size === "default",
2412
- "vc-input__field-wrapper--small": e.size === "small"
2413
- }])
2414
- }, [
2415
- L("div", Vl, [
2416
- E.$slots["prepend-inner"] ? (v(), b("div", Pl, [
2417
- C(E.$slots, "prepend-inner", { focus: te })
2418
- ])) : w("", !0),
2419
- L("div", Fl, [
2420
- e.prefix ? (v(), b("div", zl, T(e.prefix), 1)) : w("", !0),
2421
- C(E.$slots, "control", {
2422
- editable: r(c),
2423
- focused: e.autofocus,
2424
- modelValue: z.value,
2425
- emitValue: k,
2426
- placeholder: e.placeholder
2427
- }, () => [
2428
- rt(L("input", {
2429
- id: r(s),
2430
- ref_key: "inputRef",
2431
- ref: P,
2432
- "onUpdate:modelValue": q[6] || (q[6] = (A) => z.value = A),
2433
- placeholder: e.placeholder,
2434
- type: F.value,
2435
- disabled: r(c),
2436
- name: r(d),
2437
- maxlength: e.maxlength,
2438
- autofocus: e.autofocus,
2439
- autocomplete: e.autocomplete,
2440
- "aria-invalid": r(g) || void 0,
2441
- "aria-required": r(y),
2442
- "aria-describedby": r(h),
2443
- "aria-labelledby": e.label ? r(u) : void 0,
2444
- class: "vc-input__input",
2445
- tabindex: "0",
2446
- onKeydown: W,
2447
- onBlur: K,
2448
- onFocus: Ve
2449
- }, null, 40, ql), [
2450
- [un, z.value]
2451
- ])
2452
- ]),
2453
- e.suffix ? (v(), b("div", Ul, T(e.suffix), 1)) : w("", !0),
2454
- e.clearable && ee.value && !r(c) && e.type !== "password" ? (v(), b("button", {
2455
- key: 2,
2456
- type: "button",
2457
- class: "vc-input__clear",
2458
- "aria-label": E.$t("COMPONENTS.CONTROLS.CLEAR"),
2459
- onClick: M
2460
- }, [
2461
- x(r(U), {
2462
- size: "xs",
2463
- icon: "lucide-x"
2464
- })
2465
- ], 8, Kl)) : w("", !0),
2466
- e.type === "password" ? (v(), b("button", {
2467
- key: 3,
2468
- type: "button",
2469
- class: "vc-input__showhide",
2470
- "aria-label": J.value === "password" ? E.$t("COMPONENTS.CONTROLS.SHOW_PASSWORD") : E.$t("COMPONENTS.CONTROLS.HIDE_PASSWORD"),
2471
- onClick: q[7] || (q[7] = (A) => J.value = J.value === "password" ? "text" : "password")
2472
- }, [
2473
- x(r(U), {
2474
- size: "s",
2475
- icon: J.value === "password" ? "lucide-eye-off" : "lucide-eye"
2476
- }, null, 8, ["icon"])
2477
- ], 8, Wl)) : w("", !0)
2478
- ]),
2479
- E.$slots["append-inner"] ? (v(), b("div", jl, [
2480
- C(E.$slots, "append-inner", { focus: te })
2481
- ])) : w("", !0),
2482
- e.loading ? (v(), b("div", Hl, [
2483
- x(r(U), {
2484
- icon: "lucide-loader-2",
2485
- class: "vc-input__loading-icon",
2486
- size: "m"
2487
- })
2488
- ])) : w("", !0)
2489
- ])
2490
- ], 2),
2491
- E.$slots.append ? (v(), b("div", Gl, [
2492
- C(E.$slots, "append", { focus: te })
2493
- ])) : w("", !0)
2494
- ]),
2495
- x(Ae, {
2496
- name: "slide-up",
2497
- mode: "out-in"
2498
- }, {
2499
- default: O(() => [
2500
- r(g) && e.errorMessage ? (v(), b("div", Yl, [
2501
- C(E.$slots, "error", {}, () => [
2502
- x(r(fe), {
2503
- id: r(f),
2504
- class: "vc-input__hint-error",
2505
- error: !0
2506
- }, {
2507
- default: O(() => [
2508
- Q(T(e.errorMessage), 1)
2509
- ]),
2510
- _: 1
2511
- }, 8, ["id"])
2512
- ])
2513
- ])) : (v(), b("div", Jl, [
2514
- C(E.$slots, "hint", {}, () => [
2515
- e.hint ? (v(), N(r(fe), {
2516
- key: 0,
2517
- id: r(m),
2518
- class: "vc-input__desc"
2519
- }, {
2520
- default: O(() => [
2521
- Q(T(e.hint), 1)
2522
- ]),
2523
- _: 1
2524
- }, 8, ["id"])) : w("", !0)
2525
- ])
2526
- ]))
2527
- ]),
2528
- _: 3
2529
- })
2530
- ], 16));
2531
- }
2532
- }), yr = Rn.create({
2533
- name: "fontSize",
2534
- addOptions() {
2535
- return {
2536
- types: ["textStyle"]
2537
- };
2538
- },
2539
- addGlobalAttributes() {
2540
- return [
2541
- {
2542
- types: this.options.types,
2543
- attributes: {
2544
- fontSize: {
2545
- default: null,
2546
- parseHTML: (e) => e.style.fontSize?.replace(/['"]+/g, ""),
2547
- renderHTML: (e) => e.fontSize ? {
2548
- style: `font-size: ${e.fontSize}`
2549
- } : {}
2550
- }
2551
- }
2552
- }
2553
- ];
2554
- },
2555
- addCommands() {
2556
- return {
2557
- setFontSize: (e) => ({ chain: t }) => t().setMark("textStyle", { fontSize: e }).run(),
2558
- unsetFontSize: () => ({ chain: e }) => e().setMark("textStyle", { fontSize: null }).run()
2559
- };
2560
- }
2561
- });
2562
- function Xl(e = {}) {
2563
- const {
2564
- containerSelector: t = '[role="menu"]',
2565
- itemSelector: n = '[tabindex="0"]',
2566
- onEnter: a,
2567
- onEscape: o,
2568
- loop: i = !0
2569
- } = e, l = S(null), s = S(-1), u = (p) => {
2570
- (s.value >= p.length || s.value < 0) && (s.value = p.length > 0 ? 0 : -1);
2571
- }, f = (p) => {
2572
- if (!l.value) return;
2573
- const I = Array.from(l.value.querySelectorAll(n));
2574
- if (I.length)
2575
- switch (u(I), p.key) {
2576
- case "Tab":
2577
- m(p, I);
2578
- break;
2579
- case "ArrowDown":
2580
- p.preventDefault(), g(I);
2581
- break;
2582
- case "ArrowUp":
2583
- p.preventDefault(), c(I);
2584
- break;
2585
- case "Enter":
2586
- case " ":
2587
- if (s.value >= 0 && s.value < I.length) {
2588
- const P = I[s.value];
2589
- P && (p.preventDefault(), a ? a(P) : typeof P.click == "function" && P.click());
2590
- }
2591
- break;
2592
- case "Escape":
2593
- o && (p.preventDefault(), o());
2594
- break;
2595
- }
2596
- }, m = (p, I) => {
2597
- p.shiftKey ? c(I) : g(I);
2598
- }, g = (p) => {
2599
- if (!p.length) return;
2600
- if (u(p), s.value < p.length - 1)
2601
- s.value++;
2602
- else if (i)
2603
- s.value = 0;
2604
- else
2605
- return;
2606
- const I = p[s.value];
2607
- I && typeof I.focus == "function" && I.focus();
2608
- }, c = (p) => {
2609
- if (!p.length) return;
2610
- if (u(p), s.value > 0)
2611
- s.value--;
2612
- else if (i)
2613
- s.value = p.length - 1;
2614
- else
2615
- return;
2616
- const I = p[s.value];
2617
- I && typeof I.focus == "function" && I.focus();
2618
- }, d = (p) => {
2619
- if (!p.length) return;
2620
- s.value = 0;
2621
- const I = p[0];
2622
- I && typeof I.focus == "function" && I.focus();
2623
- }, y = (p) => {
2624
- if (!p.length) return;
2625
- s.value = p.length - 1;
2626
- const I = p[p.length - 1];
2627
- I && typeof I.focus == "function" && I.focus();
2628
- }, h = (p) => {
2629
- l.value && l.value.removeEventListener("keydown", f), l.value = p, p.addEventListener("keydown", f);
2630
- }, B = () => {
2631
- l.value && (l.value.removeEventListener("keydown", f), l.value = null);
2632
- };
2633
- return Ue(() => {
2634
- if (typeof document < "u" && t) {
2635
- const p = document.querySelector(t);
2636
- p && h(p);
2637
- }
2638
- }), lt(() => {
2639
- B();
2640
- }), {
2641
- initKeyboardNavigation: h,
2642
- cleanupKeyboardNavigation: B,
2643
- focusNextElement: () => {
2644
- if (l.value) {
2645
- const p = Array.from(l.value.querySelectorAll(n));
2646
- g(p);
2647
- }
2648
- },
2649
- focusPreviousElement: () => {
2650
- if (l.value) {
2651
- const p = Array.from(l.value.querySelectorAll(n));
2652
- c(p);
2653
- }
2654
- },
2655
- focusFirstElement: () => {
2656
- if (l.value) {
2657
- const p = Array.from(l.value.querySelectorAll(n));
2658
- d(p);
2659
- }
2660
- },
2661
- focusLastElement: () => {
2662
- if (l.value) {
2663
- const p = Array.from(l.value.querySelectorAll(n));
2664
- y(p);
2665
- }
2666
- },
2667
- setFocusedIndex: (p) => {
2668
- if (l.value) {
2669
- const I = Array.from(l.value.querySelectorAll(n));
2670
- p >= 0 && p < I.length && (s.value = p);
2671
- }
2672
- },
2673
- getFocusedIndex: () => s.value
2674
- };
2675
- }
2676
- function St(e, t) {
2677
- const n = e !== void 0 ? e : t;
2678
- return typeof n == "function" ? n : (a) => a === null || typeof a != "object" ? a : n && n in a ? a[n] : a;
2679
- }
2680
- function Zl(e) {
2681
- const t = $(() => St(e.optionValue(), "id")), n = $(() => St(e.optionLabel(), "title"));
2682
- function a(l, s, u, f) {
2683
- const m = (g) => Me(t.value(g), l);
2684
- return u.find(m) || f.find(m) || s.find(m) || l;
2685
- }
2686
- function o(l) {
2687
- return n.value(l);
2688
- }
2689
- function i(l) {
2690
- return l != null && ("" + l).length > 0;
2691
- }
2692
- return {
2693
- getOptionValue: t,
2694
- getOptionLabel: n,
2695
- getOption: a,
2696
- getEmittingOptionValue: o,
2697
- fieldValueIsFilled: i
2698
- };
2699
- }
2700
- function Ql() {
2701
- const e = S(null), t = S(!1);
2702
- let n = null, a = null;
2703
- function o() {
2704
- if (e.value && !t.value) {
2705
- const l = e.value.getBoundingClientRect();
2706
- l.top < window.innerHeight && l.bottom > 0 && l.left < window.innerWidth && l.right > 0 && (t.value = !0);
2707
- }
2708
- }
2709
- function i() {
2710
- if (!t.value && e.value) {
2711
- const l = e.value.getBoundingClientRect();
2712
- l.top < window.innerHeight && l.bottom > 0 && l.left < window.innerWidth && l.right > 0 && (t.value = !0);
2713
- }
2714
- }
2715
- return Ue(() => {
2716
- e.value && (n = new IntersectionObserver(
2717
- ([l]) => {
2718
- t.value = l.isIntersecting;
2719
- },
2720
- { threshold: 0.1 }
2721
- ), n.observe(e.value), a = setTimeout(o, 100));
2722
- }), Ot(() => {
2723
- a !== null && (clearTimeout(a), a = null), n && e.value && n.unobserve(e.value), n && n.disconnect();
2724
- }), {
2725
- selectRootRef: e,
2726
- isSelectVisible: t,
2727
- ensureVisibility: i
2728
- };
2729
- }
2730
- function _l(e) {
2731
- const t = S(!1), n = S(!1), a = S(null), o = S(null);
2732
- function i() {
2733
- return {
2734
- name: "sameWidth",
2735
- fn({ rects: f }) {
2736
- return {
2737
- data: {
2738
- width: e.outline() ? `${f.reference.width}px` : "max-content"
2739
- }
2740
- };
2741
- }
2742
- };
2743
- }
2744
- const l = ia(a, o, {
2745
- placement: $(() => e.placement),
2746
- middleware: $(() => [
2747
- Tt({ fallbackPlacements: ["top", "bottom"] }),
2748
- Mt({ mainAxis: !1 }),
2749
- i(),
2750
- tt({ mainAxis: 4 })
2751
- ])
2752
- }), s = $(() => ({
2753
- top: `${l.y.value ?? 0}px`,
2754
- left: `${l.x.value ?? 0}px`,
2755
- width: l.middlewareData.value.sameWidth?.width
2756
- }));
2757
- Y(
2758
- () => l.isPositioned.value,
2759
- (f) => {
2760
- f && l.update();
2761
- }
2762
- );
2763
- function u() {
2764
- e.disabled() || (!t.value && !e.isSelectVisible.value && e.ensureVisibility(), t.value = !t.value);
2765
- }
2766
- return {
2767
- isOpened: t,
2768
- isFocused: n,
2769
- dropdownToggleRef: a,
2770
- dropdownRef: o,
2771
- popper: l,
2772
- dropdownStyle: s,
2773
- toggleDropdown: u
2774
- };
2775
- }
2776
- function eo(e) {
2777
- const t = S([]), n = S(null), a = S(0), o = S(!1), i = S(!1), l = S(), s = S([]), u = S(!1), f = /* @__PURE__ */ new Map();
2778
- let m = !1, g;
2779
- const c = $(() => n.value ?? t.value), d = $(() => t.value.length < a.value);
2780
- function y(F) {
2781
- for (const D of F) {
2782
- const z = String(e.getOptionValue.value(D));
2783
- f.set(z, D);
2784
- }
2785
- }
2786
- async function h() {
2787
- if (m)
2788
- return;
2789
- const F = e.options();
2790
- if (typeof F == "function")
2791
- try {
2792
- o.value = !0;
2793
- const D = await F(void 0, 0);
2794
- t.value = D?.results ?? [], a.value = D?.totalCount ?? 0, y(t.value), m = !0;
2795
- } catch (D) {
2796
- console.error("useSelectDataSource: error loading options", D), t.value = [], a.value = 0;
2797
- } finally {
2798
- o.value = !1;
2799
- }
2800
- else Array.isArray(F) && (t.value = [...F], a.value = t.value.length, y(t.value), m = !0);
2801
- }
2802
- function B() {
2803
- n.value = null, l.value = void 0, g && (clearTimeout(g), g = void 0);
2804
- }
2805
- async function p() {
2806
- const F = e.options();
2807
- if (!(typeof F != "function" || o.value))
2808
- try {
2809
- o.value = !0;
2810
- const D = await F(l.value, t.value.length), z = new Set(t.value.map((X) => String(e.getOptionValue.value(X)))), W = (D?.results ?? []).filter(
2811
- (X) => !z.has(String(e.getOptionValue.value(X)))
2812
- );
2813
- t.value = [...t.value, ...W], a.value = D?.totalCount ?? a.value, y(W);
2814
- } catch (D) {
2815
- console.error("useSelectDataSource: error loading more", D);
2816
- } finally {
2817
- o.value = !1;
2818
- }
2819
- }
2820
- async function I(F) {
2821
- l.value = F;
2822
- const D = e.options();
2823
- if (typeof D == "function")
2824
- try {
2825
- i.value = !0;
2826
- const z = await D(F);
2827
- n.value = z?.results ?? [], a.value = z?.totalCount ?? 0, y(n.value);
2828
- } catch (z) {
2829
- console.error("useSelectDataSource: error searching", z), n.value = [];
2830
- } finally {
2831
- i.value = !1;
2832
- }
2833
- else
2834
- n.value = t.value.filter((z) => {
2835
- const W = e.getOptionLabel.value(z);
2836
- return String(W).toLowerCase().includes(F.toLowerCase());
2837
- });
2838
- }
2839
- function P(F) {
2840
- if (!F?.target) return;
2841
- const D = F.target.value, z = Number(e.debounce());
2842
- g && clearTimeout(g), z > 0 ? g = setTimeout(() => {
2843
- e.emit.search(D), I(D);
2844
- }, z) : (e.emit.search(D), I(D));
2845
- }
2846
- function J() {
2847
- n.value = null, l.value = void 0, g && (clearTimeout(g), g = void 0), a.value = t.value.length;
2848
- }
2849
- async function ae(F) {
2850
- if (F.length === 0) return [];
2851
- const z = F.filter((k) => !f.has(String(k))).filter((k) => {
2852
- const M = t.value.find((K) => Me(e.getOptionValue.value(K), k));
2853
- return M ? (f.set(String(k), M), !1) : !0;
2854
- }), W = e.options();
2855
- if (z.length > 0 && typeof W == "function") {
2856
- try {
2857
- u.value = !0;
2858
- const M = await W(void 0, void 0, z);
2859
- M?.results && y(M.results);
2860
- } catch (M) {
2861
- console.error("useSelectDataSource: error resolving", M);
2862
- } finally {
2863
- u.value = !1;
2864
- }
2865
- z.filter((M) => !f.has(String(M))).length > 0 && !m && await h();
2866
- } else if (z.length > 0 && Array.isArray(W))
2867
- for (const k of W) {
2868
- const M = String(e.getOptionValue.value(k));
2869
- z.includes(M) && f.set(M, k);
2870
- }
2871
- const X = F.map((k) => f.get(String(k))).filter(Boolean);
2872
- return s.value = X, X;
2873
- }
2874
- async function ee() {
2875
- t.value = [], n.value = null, a.value = 0, f.clear(), s.value = [], m = !1, await h();
2876
- }
2877
- return Y(
2878
- e.options,
2879
- async () => {
2880
- t.value = [], n.value = null, a.value = 0, f.clear(), m = !1;
2881
- const F = e.options();
2882
- if (Array.isArray(F) && (t.value = [...F], a.value = t.value.length, y(t.value), m = !0, s.value.length === 0)) {
2883
- const D = s.value;
2884
- (D.length === 0 ? t.value.filter((W) => {
2885
- const X = String(e.getOptionValue.value(W));
2886
- return f.has(X);
2887
- }) : D).length;
2888
- }
2889
- },
2890
- { deep: !1 }
2891
- ), {
2892
- displayItems: c,
2893
- loading: o,
2894
- searchLoading: i,
2895
- hasMore: d,
2896
- filterString: l,
2897
- resolvedDefaults: s,
2898
- defaultOptionLoading: u,
2899
- cachedItems: t,
2900
- open: h,
2901
- close: B,
2902
- onInput: P,
2903
- clearSearch: J,
2904
- loadMore: p,
2905
- resolve: ae,
2906
- refresh: ee
2907
- };
2908
- }
2909
- function to(e) {
2910
- let t = [];
2911
- const n = $(() => {
2912
- const g = e.mapOptions() === !0 && e.multiple() !== !0, c = e.modelValue() !== void 0 && (e.modelValue() !== null || g === !0) ? e.multiple() === !0 && Array.isArray(e.modelValue()) ? e.modelValue() : [e.modelValue()] : [];
2913
- if (e.mapOptions() === !0 && Array.isArray(e.displayItems.value) === !0) {
2914
- const d = e.mapOptions() === !0 && t !== void 0 ? t : [], y = c.map((h) => {
2915
- const B = e.getOption(h, d, e.resolvedDefaults.value, e.displayItems.value);
2916
- if (B === h && e.cachedItems.value.length > 0) {
2917
- const p = e.getOption(h, d, e.resolvedDefaults.value, e.cachedItems.value);
2918
- if (p !== h) return p;
2919
- }
2920
- return B;
2921
- });
2922
- return e.modelValue() === null && g === !0 ? y.filter((h) => h !== null) : y;
2923
- }
2924
- return c;
2925
- });
2926
- Y(
2927
- n,
2928
- (g) => {
2929
- t = g;
2930
- },
2931
- { immediate: !0 }
2932
- );
2933
- const a = $(() => n.value.map((g) => e.getOptionValue.value(g)));
2934
- function o(g) {
2935
- const c = e.getOptionValue.value(g);
2936
- return a.value.find((d) => Me(d, c)) !== void 0;
2937
- }
2938
- const i = $(
2939
- () => n.value.map((g, c) => ({
2940
- index: c,
2941
- opt: g,
2942
- selected: !0,
2943
- toggleOption: u,
2944
- removeAtIndex: f
2945
- }))
2946
- ), l = $(() => e.fieldValueIsFilled(n.value)), s = $(() => e.displayItems.value.map((g, c) => ({
2947
- index: c,
2948
- opt: g,
2949
- selected: o(g) === !0,
2950
- label: e.getOptionLabel.value(g),
2951
- toggleOption: u
2952
- })));
2953
- function u(g) {
2954
- if (g === void 0)
2955
- return;
2956
- const c = e.getOptionValue.value(g);
2957
- if (e.multiple() !== !0) {
2958
- (n.value.length === 0 || Me(e.getOptionValue.value(n.value[0]), c) !== !0) && e.emit.updateModelValue(e.emitValue() === !0 ? c : g), e.isOpened.value = !1, e.emit.close();
2959
- return;
2960
- }
2961
- if (n.value.length === 0) {
2962
- const h = e.emitValue() === !0 ? c : g;
2963
- e.emit.updateModelValue(e.multiple() === !0 ? [h] : h);
2964
- return;
2965
- }
2966
- const d = e.modelValue().slice(), y = a.value.findIndex((h) => Me(h, c));
2967
- if (y > -1)
2968
- d.splice(y, 1);
2969
- else {
2970
- const h = e.emitValue() === !0 ? c : g;
2971
- d.push(h);
2972
- }
2973
- e.emit.updateModelValue(d), e.isOpened.value && e.popperUpdate();
2974
- }
2975
- function f(g) {
2976
- if (g > -1 && g < n.value.length)
2977
- if (e.multiple() === !0) {
2978
- const c = e.modelValue().slice();
2979
- c.splice(g, 1), e.emit.updateModelValue(c);
2980
- } else
2981
- e.emit.updateModelValue(null);
2982
- }
2983
- function m() {
2984
- if (e.multiple()) {
2985
- e.emit.updateModelValue([]);
2986
- return;
2987
- }
2988
- e.emit.updateModelValue(null);
2989
- }
2990
- return {
2991
- innerValue: n,
2992
- selectedScope: i,
2993
- hasValue: l,
2994
- innerOptionsValue: a,
2995
- optionScope: s,
2996
- toggleOption: u,
2997
- removeAtIndex: f,
2998
- isOptionSelected: o,
2999
- onReset: m
3000
- };
3001
- }
3002
- const no = { class: "vc-select__control" }, ao = {
3003
- key: 0,
3004
- class: "vc-select__prepend"
3005
- }, lo = { class: "vc-select__field" }, oo = { class: "vc-select__field-inner" }, io = { class: "vc-select__field-content" }, ro = {
3006
- key: 0,
3007
- class: "vc-select__prepend-inner"
3008
- }, so = { class: "vc-select__field-main" }, uo = {
3009
- key: 0,
3010
- class: "vc-select__prefix"
3011
- }, co = ["aria-expanded", "aria-controls", "aria-labelledby", "aria-describedby", "aria-required", "aria-invalid"], fo = {
3012
- key: 0,
3013
- class: "vc-select__placeholder"
3014
- }, vo = {
3015
- key: 1,
3016
- class: "vc-select__selected"
3017
- }, go = { class: "vc-select__multiple-item" }, mo = {
3018
- key: 0,
3019
- class: "vc-select__loading"
3020
- }, po = { key: 1 }, bo = ["aria-label", "onClick", "onKeydown"], yo = {
3021
- key: 0,
3022
- class: "vc-select__loading"
3023
- }, ho = {
3024
- key: 1,
3025
- class: "vc-select__suffix"
3026
- }, ko = ["aria-label"], Io = {
3027
- key: 1,
3028
- class: "vc-select__append-inner"
3029
- }, So = {
3030
- key: 2,
3031
- class: "vc-select__loading-icon"
3032
- }, $o = ["aria-label"], wo = { class: "vc-select__chevron" }, Oo = { class: "vc-select__hint-error" }, Eo = { key: 0 }, Lo = { key: 1 }, Bo = {
3033
- key: 1,
3034
- class: "vc-select__append"
3035
- }, Co = /* @__PURE__ */ V({
3036
- __name: "SelectTrigger",
3037
- props: {
3038
- isOpened: { type: Boolean },
3039
- hasValue: { type: Boolean },
3040
- selectedScope: {},
3041
- multiple: { type: Boolean },
3042
- loading: { type: Boolean },
3043
- disabled: { type: Boolean },
3044
- clearable: { type: Boolean },
3045
- placeholder: {},
3046
- prefix: {},
3047
- suffix: {},
3048
- size: {},
3049
- error: { type: Boolean },
3050
- errorMessage: {},
3051
- hint: {},
3052
- listLoading: { type: Boolean },
3053
- defaultOptionLoading: { type: Boolean },
3054
- listboxId: {},
3055
- labelId: {},
3056
- label: {},
3057
- ariaDescribedBy: {},
3058
- ariaRequired: { type: Boolean },
3059
- errorId: {},
3060
- hintId: {},
3061
- toggleDropdown: { type: Function },
3062
- getOptionLabel: { type: Function },
3063
- getEmittingOptionValue: { type: Function }
3064
- },
3065
- emits: ["focus", "blur", "reset", "removeAtIndex"],
3066
- setup(e, { expose: t }) {
3067
- const { t: n } = Ie({ useScope: "global" }), a = S(null);
3068
- return t({
3069
- toggleRef: a
3070
- }), (o, i) => (v(), b("div", {
3071
- ref_key: "toggleRef",
3072
- ref: a,
3073
- class: "vc-select__dropdown-toggle"
3074
- }, [
3075
- C(o.$slots, "control", {
3076
- toggleHandler: e.toggleDropdown,
3077
- isOpened: e.isOpened
3078
- }, () => [
3079
- L("div", no, [
3080
- o.$slots.prepend ? (v(), b("div", ao, [
3081
- C(o.$slots, "prepend")
3082
- ])) : w("", !0),
3083
- L("div", {
3084
- class: j(["vc-select__field-wrapper", {
3085
- "vc-select__field-wrapper--default": e.size === "default",
3086
- "vc-select__field-wrapper--small": e.size === "small"
3087
- }])
3088
- }, [
3089
- L("div", lo, [
3090
- L("div", oo, [
3091
- L("div", io, [
3092
- o.$slots["prepend-inner"] ? (v(), b("div", ro, [
3093
- C(o.$slots, "prepend-inner")
3094
- ])) : w("", !0),
3095
- L("div", so, [
3096
- e.prefix ? (v(), b("div", uo, T(e.prefix), 1)) : w("", !0),
3097
- L("div", {
3098
- "data-test-id": "dropdown-toggle",
3099
- class: "vc-select__input",
3100
- role: "combobox",
3101
- tabindex: "0",
3102
- "aria-expanded": e.isOpened,
3103
- "aria-haspopup": "listbox",
3104
- "aria-controls": e.isOpened ? e.listboxId : void 0,
3105
- "aria-labelledby": e.label ? e.labelId : void 0,
3106
- "aria-describedby": e.ariaDescribedBy,
3107
- "aria-required": e.ariaRequired,
3108
- "aria-invalid": e.error || void 0,
3109
- onClick: i[0] || (i[0] = H(
3110
- //@ts-ignore
3111
- (...l) => e.toggleDropdown && e.toggleDropdown(...l),
3112
- ["stop"]
3113
- )),
3114
- onKeydown: [
3115
- i[1] || (i[1] = Z(H(
3116
- //@ts-ignore
3117
- (...l) => e.toggleDropdown && e.toggleDropdown(...l),
3118
- ["stop"]
3119
- ), ["enter"])),
3120
- i[2] || (i[2] = Z(H(
3121
- //@ts-ignore
3122
- (...l) => e.toggleDropdown && e.toggleDropdown(...l),
3123
- ["stop"]
3124
- ), ["space"]))
3125
- ],
3126
- onFocus: i[3] || (i[3] = (l) => o.$emit("focus")),
3127
- onBlur: i[4] || (i[4] = (l) => o.$emit("blur"))
3128
- }, [
3129
- e.hasValue ? e.selectedScope && e.selectedScope.length && e.hasValue ? (v(), b("div", vo, [
3130
- (v(!0), b(we, null, ot(e.selectedScope, (l, s) => (v(), b("div", {
3131
- key: s,
3132
- class: "vc-select__selected-item"
3133
- }, [
3134
- e.multiple ? C(o.$slots, "selected-item", ne({
3135
- key: 0,
3136
- ref_for: !0
3137
- }, l), () => [
3138
- L("div", go, [
3139
- e.loading ? (v(), b("span", mo, T(r(n)("COMPONENTS.MOLECULES.VC_SELECT.LOADING")), 1)) : (v(), b("span", po, T(e.getOptionLabel(l.opt)), 1)),
3140
- e.disabled ? w("", !0) : (v(), b("button", {
3141
- key: 2,
3142
- type: "button",
3143
- class: "vc-select__chip-remove",
3144
- "aria-label": `Remove ${e.getOptionLabel(l.opt) || ""}`,
3145
- tabindex: "0",
3146
- onClick: H((u) => o.$emit("removeAtIndex", l.index), ["stop"]),
3147
- onKeydown: Z(H((u) => o.$emit("removeAtIndex", l.index), ["stop", "prevent"]), ["enter"])
3148
- }, [
3149
- x(r(U), {
3150
- class: "vc-select__icon-remove",
3151
- icon: "lucide-x",
3152
- size: "xs"
3153
- })
3154
- ], 40, bo))
3155
- ])
3156
- ]) : e.multiple ? w("", !0) : (v(), b(we, { key: 1 }, [
3157
- e.loading ? (v(), b("span", yo, T(r(n)("COMPONENTS.MOLECULES.VC_SELECT.LOADING")), 1)) : C(o.$slots, "selected-item", ne({
3158
- key: 1,
3159
- ref_for: !0
3160
- }, l), () => [
3161
- Q(T(e.loading ? r(n)("COMPONENTS.MOLECULES.VC_SELECT.LOADING") : e.getEmittingOptionValue(l.opt)), 1)
3162
- ])
3163
- ], 64))
3164
- ]))), 128))
3165
- ])) : w("", !0) : (v(), b("div", fo, [
3166
- e.placeholder ? (v(), b(we, { key: 0 }, [
3167
- Q(T(e.placeholder), 1)
3168
- ], 64)) : (v(), b(we, { key: 1 }, [
3169
- Q(T(r(n)("COMPONENTS.MOLECULES.VC_SELECT.CLICK_TO_SELECT")), 1)
3170
- ], 64))
3171
- ]))
3172
- ], 40, co),
3173
- e.suffix ? (v(), b("div", ho, T(e.suffix), 1)) : w("", !0),
3174
- e.clearable && e.hasValue && !e.disabled ? (v(), b("div", {
3175
- key: 2,
3176
- class: "vc-select__clear",
3177
- role: "button",
3178
- "aria-label": o.$t("COMPONENTS.CONTROLS.CLEAR_SELECTION"),
3179
- tabindex: "0",
3180
- onClick: i[5] || (i[5] = (l) => o.$emit("reset")),
3181
- onKeydown: [
3182
- i[6] || (i[6] = Z((l) => o.$emit("reset"), ["enter"])),
3183
- i[7] || (i[7] = Z((l) => o.$emit("reset"), ["space"]))
3184
- ]
3185
- }, [
3186
- x(r(U), {
3187
- size: "xs",
3188
- icon: "lucide-x"
3189
- })
3190
- ], 40, ko)) : w("", !0)
3191
- ]),
3192
- o.$slots["append-inner"] ? (v(), b("div", Io, [
3193
- C(o.$slots, "append-inner")
3194
- ])) : w("", !0),
3195
- e.loading || e.listLoading || e.defaultOptionLoading ? (v(), b("div", So, [
3196
- x(r(U), {
3197
- icon: "lucide-loader-2",
3198
- class: "tw-animate-spin",
3199
- size: "m"
3200
- })
3201
- ])) : w("", !0),
3202
- e.disabled ? w("", !0) : (v(), b("div", {
3203
- key: 3,
3204
- class: "vc-select__chevron-container",
3205
- role: "button",
3206
- "aria-label": o.$t("COMPONENTS.CONTROLS.TOGGLE_DROPDOWN"),
3207
- tabindex: "0",
3208
- onClick: i[8] || (i[8] = H(
3209
- //@ts-ignore
3210
- (...l) => e.toggleDropdown && e.toggleDropdown(...l),
3211
- ["stop"]
3212
- )),
3213
- onKeydown: [
3214
- i[9] || (i[9] = Z(H(
3215
- //@ts-ignore
3216
- (...l) => e.toggleDropdown && e.toggleDropdown(...l),
3217
- ["stop"]
3218
- ), ["enter"])),
3219
- i[10] || (i[10] = Z(H(
3220
- //@ts-ignore
3221
- (...l) => e.toggleDropdown && e.toggleDropdown(...l),
3222
- ["stop"]
3223
- ), ["space"]))
3224
- ]
3225
- }, [
3226
- L("div", wo, [
3227
- x(r(U), {
3228
- size: "s",
3229
- icon: "lucide-chevron-down"
3230
- })
3231
- ])
3232
- ], 40, $o))
3233
- ])
3234
- ])
3235
- ]),
3236
- L("div", Oo, [
3237
- x(Ae, {
3238
- name: "slide-up",
3239
- mode: "out-in"
3240
- }, {
3241
- default: O(() => [
3242
- e.error && e.errorMessage ? (v(), b("div", Eo, [
3243
- C(o.$slots, "error", {}, () => [
3244
- x(r(fe), {
3245
- id: e.errorId,
3246
- class: "vc-select__error-message",
3247
- error: !0
3248
- }, {
3249
- default: O(() => [
3250
- Q(T(e.errorMessage), 1)
3251
- ]),
3252
- _: 1
3253
- }, 8, ["id"])
3254
- ])
3255
- ])) : (v(), b("div", Lo, [
3256
- C(o.$slots, "hint", {}, () => [
3257
- e.hint ? (v(), N(r(fe), {
3258
- key: 0,
3259
- id: e.hintId,
3260
- class: "vc-select__hint"
3261
- }, {
3262
- default: O(() => [
3263
- Q(T(e.hint), 1)
3264
- ]),
3265
- _: 1
3266
- }, 8, ["id"])) : w("", !0)
3267
- ])
3268
- ]))
3269
- ]),
3270
- _: 3
3271
- })
3272
- ])
3273
- ], 2),
3274
- o.$slots.append ? (v(), b("div", Bo, [
3275
- C(o.$slots, "append")
3276
- ])) : w("", !0)
3277
- ])
3278
- ])
3279
- ], 512));
3280
- }
3281
- }), xo = ["id", "aria-label"], To = ["aria-label"], Mo = ["aria-selected", "data-index", "onClick", "onKeydown"], Ro = {
3282
- key: 0,
3283
- class: "vc-select__check-icon"
3284
- }, Ao = {
3285
- key: 0,
3286
- class: "vc-select__list-loading-indicator"
3287
- }, No = { class: "tw-ml-1" }, Do = {
3288
- key: 1,
3289
- class: "vc-select__no-options"
3290
- }, Vo = { class: "vc-select__no-options-text" }, Po = /* @__PURE__ */ V({
3291
- __name: "SelectDropdown",
3292
- props: {
3293
- isOpened: { type: Boolean },
3294
- listboxId: {},
3295
- ariaLabel: {},
3296
- dropdownStyle: {},
3297
- searchable: { type: Boolean },
3298
- optionScope: {},
3299
- listLoading: { type: Boolean },
3300
- optionsListLength: {},
3301
- hasNextPage: { type: Boolean },
3302
- dropdownToggleRef: {}
3303
- },
3304
- emits: ["input", "clickOutside"],
3305
- setup(e, { expose: t, emit: n }) {
3306
- const a = e, o = n, { t: i } = Ie({ useScope: "global" }), { teleportTarget: l } = $n(), s = S(null), u = S(null), f = S(null), m = S(null), g = $(() => f.value?.viewportRef ?? null);
3307
- function c(d) {
3308
- const y = g.value;
3309
- if (!y) return;
3310
- if (y.contains(d.target)) {
3311
- const B = y.scrollTop <= 0 && d.deltaY < 0, p = Math.ceil(y.scrollTop) >= y.scrollHeight - y.clientHeight && d.deltaY > 0;
3312
- (B || p) && d.preventDefault();
3313
- } else
3314
- d.preventDefault(), y.scrollTop += d.deltaY;
3315
- f.value?.updateScrollState();
3316
- }
3317
- return Y(
3318
- () => a.isOpened,
3319
- (d) => {
3320
- d && he(() => f.value?.updateScrollState());
3321
- }
3322
- ), Y(
3323
- () => a.optionScope.length,
3324
- () => {
3325
- a.isOpened && he(() => f.value?.updateScrollState());
3326
- }
3327
- ), t({
3328
- dropdownElRef: s,
3329
- searchInputRef: u,
3330
- viewportRef: g,
3331
- loadMoreRef: m
3332
- }), (d, y) => (v(), N(cn, { to: r(l) }, [
3333
- x(Ae, { name: "select-dropdown" }, {
3334
- default: O(() => [
3335
- e.isOpened ? rt((v(), b("div", {
3336
- key: 0,
3337
- id: e.listboxId,
3338
- ref_key: "dropdownElRef",
3339
- ref: s,
3340
- "data-test-id": "dropdown",
3341
- class: "vc-select__dropdown",
3342
- role: "listbox",
3343
- "aria-label": e.ariaLabel,
3344
- style: Re(e.dropdownStyle),
3345
- onWheel: c
3346
- }, [
3347
- e.searchable ? (v(), b("input", {
3348
- key: 0,
3349
- ref_key: "searchInputRef",
3350
- ref: u,
3351
- class: "vc-select__search-input",
3352
- tabindex: "0",
3353
- "aria-label": d.$t("COMPONENTS.CONTROLS.SEARCH_OPTIONS"),
3354
- autocomplete: "off",
3355
- onInput: y[0] || (y[0] = (h) => o("input", h)),
3356
- onKeydown: [
3357
- y[1] || (y[1] = Z(H(() => {
3358
- }, ["stop"]), ["space"])),
3359
- y[2] || (y[2] = Z(H(() => {
3360
- }, ["stop"]), ["enter"]))
3361
- ]
3362
- }, null, 40, To)) : w("", !0),
3363
- x(r(ol), {
3364
- ref_key: "scrollContainerRef",
3365
- ref: f,
3366
- class: "vc-select__scroll-container"
3367
- }, {
3368
- default: O(() => [
3369
- (v(!0), b(we, null, ot(e.optionScope, (h, B) => (v(), b("div", {
3370
- key: B,
3371
- class: j(["vc-select__option", { "vc-select__option--selected": h.selected }]),
3372
- "data-test-id": "option",
3373
- role: "option",
3374
- "aria-selected": h.selected,
3375
- tabindex: "0",
3376
- "data-index": B,
3377
- onClick: (p) => h.toggleOption(h.opt),
3378
- onKeydown: [
3379
- Z((p) => h.toggleOption(h.opt), ["enter"]),
3380
- Z((p) => h.toggleOption(h.opt), ["space"])
3381
- ]
3382
- }, [
3383
- C(d.$slots, "option", ne({ ref_for: !0 }, h), () => [
3384
- Q(T(h.label), 1)
3385
- ]),
3386
- h.selected ? (v(), b("span", Ro, [
3387
- x(r(U), {
3388
- icon: "lucide-check",
3389
- size: "xs"
3390
- })
3391
- ])) : w("", !0)
3392
- ], 42, Mo))), 128)),
3393
- e.listLoading ? (v(), b("div", Ao, [
3394
- x(r(U), {
3395
- icon: "lucide-loader-2",
3396
- class: "tw-animate-spin",
3397
- size: "m"
3398
- }),
3399
- L("span", No, T(e.optionsListLength > 0 ? r(i)("COMPONENTS.MOLECULES.VC_SELECT.LOADING_MORE") : r(i)("COMPONENTS.MOLECULES.VC_SELECT.LOADING")), 1)
3400
- ])) : w("", !0),
3401
- !e.listLoading && !e.optionsListLength ? (v(), b("div", Do, [
3402
- C(d.$slots, "no-options", {}, () => [
3403
- L("span", Vo, T(r(i)("COMPONENTS.MOLECULES.VC_SELECT.NO_OPTIONS")), 1)
3404
- ])
3405
- ])) : w("", !0),
3406
- e.hasNextPage && !e.listLoading ? (v(), b("span", {
3407
- key: 2,
3408
- ref_key: "loadMoreRef",
3409
- ref: m,
3410
- class: "vc-select__load-more-trigger"
3411
- }, null, 512)) : w("", !0)
3412
- ]),
3413
- _: 3
3414
- }, 512)
3415
- ], 44, xo)), [
3416
- [r(Fn), [() => o("clickOutside"), { ignore: [e.dropdownToggleRef] }]]
3417
- ]) : w("", !0)
3418
- ]),
3419
- _: 3
3420
- })
3421
- ], 8, ["to"]));
3422
- }
3423
- }), Fo = ["innerHTML"], zo = { class: "vc-select__field-container" }, qo = /* @__PURE__ */ V({
3424
- inheritAttrs: !1,
3425
- __name: "vc-select",
3426
- props: {
3427
- label: {},
3428
- tooltip: {},
3429
- disabled: { type: Boolean },
3430
- required: { type: Boolean },
3431
- name: { default: "Field" },
3432
- error: { type: Boolean },
3433
- errorMessage: {},
3434
- mapOptions: { type: Boolean, default: !0 },
3435
- hint: {},
3436
- prefix: {},
3437
- suffix: {},
3438
- loading: { type: Boolean },
3439
- clearable: { type: Boolean, default: !0 },
3440
- multiple: { type: Boolean },
3441
- options: { type: [Function, Array], default: () => [] },
3442
- optionValue: { type: [Function, String], default: "id" },
3443
- optionLabel: { type: [Function, String], default: "title" },
3444
- debounce: { default: 500 },
3445
- placeholder: {},
3446
- searchable: { type: Boolean },
3447
- multilanguage: { type: Boolean },
3448
- currentLanguage: {},
3449
- size: { default: "default" },
3450
- outline: { type: Boolean, default: !0 },
3451
- placement: { default: "bottom" },
3452
- modelValue: {},
3453
- emitValue: { type: Boolean, default: !0 }
3454
- },
3455
- emits: ["update:modelValue", "search", "close"],
3456
- setup(e, { emit: t }) {
3457
- const n = e, a = wt(), o = $(() => {
3458
- const { class: R, ..._ } = a;
3459
- return _;
3460
- }), i = t, { t: l } = Ie({ useScope: "global" }), s = Se(), {
3461
- fieldId: u,
3462
- labelId: f,
3463
- errorId: m,
3464
- hintId: g,
3465
- invalid: c,
3466
- resolvedDisabled: d,
3467
- resolvedName: y,
3468
- ariaRequired: h,
3469
- ariaDescribedBy: B
3470
- } = Ke(n), p = $(() => `${u.value}-listbox`), I = S(null), P = S(null), { selectRootRef: J, isSelectVisible: ae, ensureVisibility: ee } = Ql(), { getOptionValue: F, getOptionLabel: D, getOption: z, getEmittingOptionValue: W, fieldValueIsFilled: X } = Zl({
3471
- optionValue: () => n.optionValue,
3472
- optionLabel: () => n.optionLabel
3473
- }), { isOpened: k, isFocused: M, dropdownToggleRef: K, dropdownRef: te, popper: Ve, dropdownStyle: E, toggleDropdown: q } = _l({
3474
- placement: n.placement,
3475
- outline: () => n.outline,
3476
- isSelectVisible: ae,
3477
- selectRootRef: J,
3478
- disabled: () => n.disabled ?? !1,
3479
- ensureVisibility: ee
3480
- });
3481
- Qe(() => {
3482
- K.value = I.value?.toggleRef ?? null;
3483
- }), Qe(() => {
3484
- te.value = P.value?.dropdownElRef ?? null;
3485
- });
3486
- const A = eo({
3487
- options: () => n.options,
3488
- getOptionValue: F,
3489
- getOptionLabel: D,
3490
- isSelectVisible: ae,
3491
- debounce: () => n.debounce ?? 500,
3492
- emit: {
3493
- search: (R) => i("search", R)
3494
- }
3495
- }), { selectedScope: Jt, hasValue: Xt, optionScope: Le, removeAtIndex: Zt, onReset: Qt } = to({
3496
- modelValue: () => n.modelValue,
3497
- multiple: () => n.multiple,
3498
- emitValue: () => n.emitValue ?? !0,
3499
- mapOptions: () => n.mapOptions ?? !0,
3500
- displayItems: A.displayItems,
3501
- resolvedDefaults: A.resolvedDefaults,
3502
- cachedItems: A.cachedItems,
3503
- getOptionValue: F,
3504
- getOptionLabel: D,
3505
- getOption: z,
3506
- fieldValueIsFilled: X,
3507
- isOpened: k,
3508
- popperUpdate: () => Ve.update(),
3509
- emit: {
3510
- updateModelValue: (R) => i("update:modelValue", R),
3511
- close: () => i("close")
3512
- }
3513
- }), _t = $(() => P.value?.loadMoreRef ?? null), en = $(() => P.value?.viewportRef ?? null);
3514
- xn(
3515
- _t,
3516
- ([{ isIntersecting: R }]) => {
3517
- R && A.hasMore.value && A.loadMore();
3518
- },
3519
- { threshold: 1, root: en }
3520
- );
3521
- const Ge = Xl({
3522
- onEnter: (R) => {
3523
- const _ = parseInt(R.getAttribute("data-index") || "0", 10);
3524
- Le.value && Le.value[_] && Le.value[_].toggleOption(Le.value[_].opt);
3525
- },
3526
- onEscape: () => {
3527
- k.value = !1, i("close"), he(() => {
3528
- I.value?.toggleRef?.querySelector('[role="combobox"]')?.focus();
3529
- });
3530
- }
3531
- });
3532
- function tn() {
3533
- k.value = !1, i("close");
3534
- }
3535
- return Y(k, async (R) => {
3536
- R ? (await A.open(), he(() => {
3537
- Ve.update();
3538
- const _ = P.value?.dropdownElRef, oe = P.value?.searchInputRef;
3539
- if (_)
3540
- if (Ge.initKeyboardNavigation(_), n.searchable && oe)
3541
- oe.focus();
3542
- else {
3543
- const Be = _.querySelector(
3544
- '.vc-select__option[tabindex="0"], .vc-select__search-input[tabindex="0"]'
3545
- );
3546
- Be ? Be.focus() : Ge.focusFirstElement();
3547
- }
3548
- })) : (Ge.cleanupKeyboardNavigation(), A.close());
3549
- }), Y(
3550
- () => n.modelValue,
3551
- async (R) => {
3552
- if (R == null || Array.isArray(R) && R.length === 0) {
3553
- A.resolvedDefaults.value = [];
3554
- return;
3555
- }
3556
- const _ = n.emitValue ?? !0;
3557
- if (n.mapOptions ?? !0) {
3558
- const Be = Array.isArray(R) ? R : [R], pt = _ ? Be : Be.filter((Ce) => Ce != null && typeof Ce != "object");
3559
- if (pt.length > 0) {
3560
- const Ce = pt.filter((nn) => nn != null).map(String);
3561
- Ce.length > 0 && await A.resolve(Ce);
3562
- }
3563
- }
3564
- },
3565
- { immediate: !0 }
3566
- ), (R, _) => r(s) ? (v(), b("div", ne({ key: 0 }, o.value, {
3567
- class: ["vc-select vc-select--skeleton", R.$attrs.class]
3568
- }), [
3569
- e.label ? (v(), N(r(le), {
3570
- key: 0,
3571
- variant: "block",
3572
- width: 60 + (e.label?.length || 0) * 4,
3573
- height: 11
3574
- }, null, 8, ["width"])) : w("", !0),
3575
- x(r(le), {
3576
- variant: "block",
3577
- width: "100%",
3578
- height: 36
3579
- })
3580
- ], 16)) : (v(), b("div", ne({
3581
- key: 1,
3582
- ref_key: "selectRootRef",
3583
- ref: J
3584
- }, o.value, {
3585
- class: ["vc-select", [
3586
- R.$attrs.class,
3587
- {
3588
- "vc-select--opened": r(k),
3589
- "vc-select--error": r(c),
3590
- "vc-select--disabled": r(d),
3591
- "vc-select--has-hint-or-error": r(c) || e.hint,
3592
- "vc-select--no-outline": !e.outline,
3593
- "vc-select--focused": r(M)
3594
- }
3595
- ]]
3596
- }), [
3597
- e.label ? (v(), N(r(He), {
3598
- key: 0,
3599
- id: r(f),
3600
- class: "vc-select__label",
3601
- required: e.required,
3602
- multilanguage: e.multilanguage,
3603
- "current-language": e.currentLanguage,
3604
- error: r(c)
3605
- }, ie({
3606
- default: O(() => [
3607
- L("span", null, T(e.label), 1)
3608
- ]),
3609
- _: 2
3610
- }, [
3611
- e.tooltip ? {
3612
- name: "tooltip",
3613
- fn: O(() => [
3614
- L("span", {
3615
- innerHTML: r(Rt).sanitize(e.tooltip)
3616
- }, null, 8, Fo)
3617
- ]),
3618
- key: "0"
3619
- } : void 0
3620
- ]), 1032, ["id", "required", "multilanguage", "current-language", "error"])) : w("", !0),
3621
- L("div", zo, [
3622
- x(Co, {
3623
- ref_key: "selectTriggerRef",
3624
- ref: I,
3625
- "is-opened": r(k),
3626
- "has-value": r(Xt),
3627
- "selected-scope": r(Jt),
3628
- multiple: e.multiple,
3629
- loading: e.loading,
3630
- disabled: r(d),
3631
- clearable: e.clearable,
3632
- placeholder: e.placeholder,
3633
- prefix: e.prefix,
3634
- suffix: e.suffix,
3635
- size: e.size,
3636
- error: r(c),
3637
- "error-message": e.errorMessage,
3638
- hint: e.hint,
3639
- "list-loading": r(A).loading.value || r(A).searchLoading.value,
3640
- "default-option-loading": r(A).defaultOptionLoading.value,
3641
- "listbox-id": p.value,
3642
- "label-id": r(f),
3643
- label: e.label,
3644
- "aria-described-by": r(B),
3645
- "aria-required": r(h),
3646
- "error-id": r(m),
3647
- "hint-id": r(g),
3648
- "toggle-dropdown": r(q),
3649
- "get-option-label": r(D),
3650
- "get-emitting-option-value": r(W),
3651
- onFocus: _[0] || (_[0] = (oe) => M.value = !0),
3652
- onBlur: _[1] || (_[1] = (oe) => M.value = !1),
3653
- onReset: r(Qt),
3654
- onRemoveAtIndex: r(Zt)
3655
- }, ie({ _: 2 }, [
3656
- R.$slots.control ? {
3657
- name: "control",
3658
- fn: O((oe) => [
3659
- C(R.$slots, "control", xe(Te(oe)))
3660
- ]),
3661
- key: "0"
3662
- } : void 0,
3663
- R.$slots.prepend ? {
3664
- name: "prepend",
3665
- fn: O(() => [
3666
- C(R.$slots, "prepend")
3667
- ]),
3668
- key: "1"
3669
- } : void 0,
3670
- R.$slots.append ? {
3671
- name: "append",
3672
- fn: O(() => [
3673
- C(R.$slots, "append")
3674
- ]),
3675
- key: "2"
3676
- } : void 0,
3677
- R.$slots["prepend-inner"] ? {
3678
- name: "prepend-inner",
3679
- fn: O(() => [
3680
- C(R.$slots, "prepend-inner")
3681
- ]),
3682
- key: "3"
3683
- } : void 0,
3684
- R.$slots["append-inner"] ? {
3685
- name: "append-inner",
3686
- fn: O(() => [
3687
- C(R.$slots, "append-inner")
3688
- ]),
3689
- key: "4"
3690
- } : void 0,
3691
- R.$slots["selected-item"] ? {
3692
- name: "selected-item",
3693
- fn: O((oe) => [
3694
- C(R.$slots, "selected-item", xe(Te(oe)))
3695
- ]),
3696
- key: "5"
3697
- } : void 0,
3698
- R.$slots.error ? {
3699
- name: "error",
3700
- fn: O(() => [
3701
- C(R.$slots, "error")
3702
- ]),
3703
- key: "6"
3704
- } : void 0,
3705
- R.$slots.hint ? {
3706
- name: "hint",
3707
- fn: O(() => [
3708
- C(R.$slots, "hint")
3709
- ]),
3710
- key: "7"
3711
- } : void 0
3712
- ]), 1032, ["is-opened", "has-value", "selected-scope", "multiple", "loading", "disabled", "clearable", "placeholder", "prefix", "suffix", "size", "error", "error-message", "hint", "list-loading", "default-option-loading", "listbox-id", "label-id", "label", "aria-described-by", "aria-required", "error-id", "hint-id", "toggle-dropdown", "get-option-label", "get-emitting-option-value", "onReset", "onRemoveAtIndex"]),
3713
- x(Po, ne({
3714
- ref_key: "selectDropdownRef",
3715
- ref: P,
3716
- "is-opened": r(k),
3717
- "listbox-id": p.value
3718
- }, { ariaLabel: e.label || e.name }, {
3719
- "dropdown-style": r(E),
3720
- searchable: e.searchable,
3721
- "option-scope": r(Le),
3722
- "list-loading": r(A).loading.value || r(A).searchLoading.value,
3723
- "options-list-length": r(A).displayItems.value.length,
3724
- "has-next-page": r(A).hasMore.value,
3725
- "dropdown-toggle-ref": I.value?.toggleRef ?? null,
3726
- onInput: r(A).onInput,
3727
- onClickOutside: tn
3728
- }), ie({ _: 2 }, [
3729
- R.$slots.option ? {
3730
- name: "option",
3731
- fn: O((oe) => [
3732
- C(R.$slots, "option", xe(Te(oe)))
3733
- ]),
3734
- key: "0"
3735
- } : void 0,
3736
- R.$slots["no-options"] ? {
3737
- name: "no-options",
3738
- fn: O(() => [
3739
- C(R.$slots, "no-options")
3740
- ]),
3741
- key: "1"
3742
- } : void 0
3743
- ]), 1040, ["is-opened", "listbox-id", "dropdown-style", "searchable", "option-scope", "list-loading", "options-list-length", "has-next-page", "dropdown-toggle-ref", "onInput"])
3744
- ])
3745
- ], 16));
3746
- }
3747
- }), Uo = {
3748
- key: 0,
3749
- class: "vc-input-dropdown vc-input-dropdown--skeleton"
3750
- }, Ko = { class: "tw-flex tw-items-center" }, Wo = ["aria-label", "aria-expanded", "onClick", "onKeydown"], jo = /* @__PURE__ */ V({
3751
- __name: "vc-input-dropdown",
3752
- props: {
3753
- modelValue: {},
3754
- prefix: {},
3755
- suffix: {},
3756
- debounce: { default: 0 },
3757
- maxlength: {},
3758
- option: {},
3759
- options: {},
3760
- optionValue: {},
3761
- optionLabel: {},
3762
- searchable: { type: Boolean, default: !1 },
3763
- inputType: { default: "text" },
3764
- placeholder: {},
3765
- hint: {},
3766
- clearable: { type: Boolean },
3767
- loading: { type: Boolean },
3768
- autofocus: { type: Boolean },
3769
- size: {},
3770
- multilanguage: { type: Boolean },
3771
- currentLanguage: {},
3772
- label: {},
3773
- tooltip: {},
3774
- disabled: { type: Boolean },
3775
- required: { type: Boolean },
3776
- name: {},
3777
- error: { type: Boolean },
3778
- errorMessage: {}
3779
- },
3780
- emits: ["update:model-value", "update:option", "change", "blur"],
3781
- setup(e) {
3782
- const t = Se();
3783
- return (n, a) => r(t) ? (v(), b("div", Uo, [
3784
- e.label ? (v(), N(r(le), {
3785
- key: 0,
3786
- variant: "block",
3787
- width: 60 + (e.label?.length || 0) * 4,
3788
- height: 11
3789
- }, null, 8, ["width"])) : w("", !0),
3790
- x(r(le), {
3791
- variant: "block",
3792
- width: "100%",
3793
- height: 36
3794
- })
3795
- ])) : (v(), N(r(qo), {
3796
- key: 1,
3797
- class: "vc-input-dropdown",
3798
- options: e.options,
3799
- "option-label": e.optionLabel,
3800
- "option-value": e.optionValue,
3801
- searchable: e.searchable,
3802
- debounce: e.debounce,
3803
- disabled: e.disabled,
3804
- label: e.label,
3805
- required: e.required,
3806
- "model-value": e.option,
3807
- tooltip: e.tooltip,
3808
- multilanguage: e.multilanguage,
3809
- "current-language": e.currentLanguage,
3810
- "onUpdate:modelValue": a[2] || (a[2] = (o) => n.$emit("update:option", o))
3811
- }, {
3812
- option: O((o) => [
3813
- C(n.$slots, "option", xe(Te(o)))
3814
- ]),
3815
- control: O(({ toggleHandler: o, isOpened: i }) => [
3816
- x(r(gt), {
3817
- placeholder: e.placeholder,
3818
- hint: e.hint,
3819
- clearable: e.clearable,
3820
- prefix: e.prefix,
3821
- suffix: e.suffix,
3822
- name: e.name,
3823
- "model-value": e.modelValue,
3824
- loading: e.loading,
3825
- disabled: e.disabled,
3826
- autofocus: e.autofocus,
3827
- error: e.error,
3828
- "error-message": e.errorMessage,
3829
- maxlength: e.maxlength,
3830
- type: e.inputType,
3831
- class: "vc-input-dropdown__input",
3832
- "onUpdate:modelValue": a[0] || (a[0] = (l) => n.$emit("update:model-value", l)),
3833
- onBlur: a[1] || (a[1] = (l) => n.$emit("blur", l))
3834
- }, ie({
3835
- "append-inner": O(() => [
3836
- L("div", Ko, [
3837
- C(n.$slots, "button", { toggleHandler: o }, () => [
3838
- e.options && e.options.length ? (v(), b("button", {
3839
- key: 0,
3840
- type: "button",
3841
- class: "vc-input-dropdown__toggle-button",
3842
- tabindex: "0",
3843
- "aria-label": n.$t("COMPONENTS.CONTROLS.SELECT_OPTION"),
3844
- "aria-expanded": i,
3845
- "aria-haspopup": "listbox",
3846
- onClick: H(o, ["stop", "prevent"]),
3847
- onKeydown: [
3848
- Z(H(o, ["stop", "prevent"]), ["enter"]),
3849
- Z(H(o, ["stop", "prevent"]), ["space"])
3850
- ]
3851
- }, T(r(e.option)), 41, Wo)) : w("", !0)
3852
- ]),
3853
- e.options && e.options.length ? (v(), N(r(Ma), {
3854
- key: 0,
3855
- icon: i ? "lucide-chevron-up" : "lucide-chevron-down",
3856
- "icon-size": "s",
3857
- text: "",
3858
- "aria-label": n.$t("COMPONENTS.CONTROLS.TOGGLE_DROPDOWN"),
3859
- "icon-class": "vc-input-dropdown__toggle-button-icon",
3860
- onClick: H(o, ["stop", "prevent"])
3861
- }, null, 8, ["icon", "aria-label", "onClick"])) : w("", !0)
3862
- ]),
3863
- n.$slots["append-inner"] ? C(n.$slots, "append-inner", { key: 0 }) : w("", !0)
3864
- ]),
3865
- _: 2
3866
- }, [
3867
- n.$slots.control ? {
3868
- name: "control",
3869
- fn: O((l) => [
3870
- C(n.$slots, "control", xe(Te(l)))
3871
- ]),
3872
- key: "0"
3873
- } : void 0,
3874
- n.$slots["prepend-inner"] ? {
3875
- name: "prepend-inner",
3876
- fn: O(() => [
3877
- C(n.$slots, "prepend-inner")
3878
- ]),
3879
- key: "1"
3880
- } : void 0,
3881
- n.$slots.append ? {
3882
- name: "append",
3883
- fn: O(() => [
3884
- C(n.$slots, "append")
3885
- ]),
3886
- key: "2"
3887
- } : void 0,
3888
- n.$slots.prepend ? {
3889
- name: "prepend",
3890
- fn: O(() => [
3891
- C(n.$slots, "prepend")
3892
- ]),
3893
- key: "3"
3894
- } : void 0
3895
- ]), 1032, ["placeholder", "hint", "clearable", "prefix", "suffix", "name", "model-value", "loading", "disabled", "autofocus", "error", "error-message", "maxlength", "type"])
3896
- ]),
3897
- _: 3
3898
- }, 8, ["options", "option-label", "option-value", "searchable", "debounce", "disabled", "label", "required", "model-value", "tooltip", "multilanguage", "current-language"]));
3899
- }
3900
- }), Ho = {
3901
- key: 0,
3902
- class: "vc-input-currency vc-input-currency--skeleton"
3903
- }, Go = ["disabled", "placeholder", "aria-label"], Yo = /* @__PURE__ */ V({
3904
- __name: "vc-input-currency",
3905
- props: {
3906
- modelValue: {},
3907
- placeholder: {},
3908
- hint: {},
3909
- clearable: { type: Boolean },
3910
- prefix: {},
3911
- suffix: {},
3912
- loading: { type: Boolean },
3913
- debounce: { default: 0 },
3914
- autofocus: { type: Boolean },
3915
- maxlength: {},
3916
- option: {},
3917
- options: {},
3918
- optionValue: {},
3919
- optionLabel: {},
3920
- currencyDisplay: { default: Nn.hidden },
3921
- precision: { default: 2 },
3922
- searchable: { type: Boolean, default: !1 },
3923
- label: {},
3924
- tooltip: {},
3925
- disabled: { type: Boolean },
3926
- required: { type: Boolean },
3927
- name: {},
3928
- error: { type: Boolean },
3929
- errorMessage: {}
3930
- },
3931
- emits: ["update:model-value", "update:option", "change", "blur"],
3932
- setup(e, { emit: t }) {
3933
- const n = e, a = t, o = Se(), { inputRef: i, setOptions: l, numberValue: s, setValue: u } = Dn(
3934
- {
3935
- locale: navigator.language,
3936
- currency: n.option || "USD",
3937
- currencyDisplay: n.currencyDisplay,
3938
- hideGroupingSeparatorOnFocus: !1,
3939
- precision: n.precision,
3940
- hideCurrencySymbolOnFocus: !1,
3941
- hideNegligibleDecimalDigitsOnFocus: !1
3942
- }
3943
- );
3944
- Y(
3945
- () => n.option,
3946
- (d) => {
3947
- d && l({
3948
- locale: navigator.language,
3949
- currency: d,
3950
- currencyDisplay: n.currencyDisplay,
3951
- hideGroupingSeparatorOnFocus: !1,
3952
- precision: n.precision,
3953
- hideCurrencySymbolOnFocus: !1,
3954
- hideNegligibleDecimalDigitsOnFocus: !1
3955
- });
3956
- }
3957
- ), Y(
3958
- () => n.modelValue,
3959
- (d) => {
3960
- u(d);
3961
- }
3962
- ), Y(s, (d) => {
3963
- a("update:model-value", d);
3964
- });
3965
- function f(d) {
3966
- i.value && (i.value.value = d), s.value = typeof d == "number" ? d : d === null ? null : parseFloat(String(d)) || null, a("update:model-value", s.value);
3967
- }
3968
- function m(d) {
3969
- a("blur", d);
3970
- }
3971
- function g(d) {
3972
- if ((d.key === "-" || d.key === "e") && d.preventDefault(), d.key !== "Tab") {
3973
- if (d.key === "Enter") {
3974
- d.target && d.target.blur();
3975
- const y = Array.from(document.querySelectorAll('[tabindex="0"]:not(:disabled)')), h = y.indexOf(d.target);
3976
- h >= 0 && h < y.length - 1 && y[h + 1].focus();
3977
- }
3978
- }
3979
- }
3980
- function c(d) {
3981
- const y = d.clipboardData?.getData("text/plain");
3982
- typeof y < "u" && parseInt(y) < 0 && d.preventDefault();
3983
- }
3984
- return (d, y) => r(o) ? (v(), b("div", Ho, [
3985
- e.label ? (v(), N(r(le), {
3986
- key: 0,
3987
- variant: "block",
3988
- width: 60 + (e.label?.length || 0) * 4,
3989
- height: 11
3990
- }, null, 8, ["width"])) : w("", !0),
3991
- x(r(le), {
3992
- variant: "block",
3993
- width: "100%",
3994
- height: 36
3995
- })
3996
- ])) : (v(), N(r(jo), {
3997
- key: 1,
3998
- class: "vc-input-currency",
3999
- options: e.options,
4000
- "option-label": e.optionLabel,
4001
- "option-value": e.optionValue,
4002
- searchable: e.searchable,
4003
- debounce: e.debounce,
4004
- disabled: e.disabled,
4005
- label: e.label,
4006
- required: e.required,
4007
- option: e.option,
4008
- "model-value": r(s),
4009
- tooltip: e.tooltip,
4010
- placeholder: e.placeholder,
4011
- hint: e.hint,
4012
- clearable: e.clearable,
4013
- prefix: e.prefix,
4014
- suffix: e.suffix,
4015
- name: e.name,
4016
- loading: e.loading,
4017
- autofocus: e.autofocus,
4018
- error: e.error,
4019
- "error-message": e.errorMessage,
4020
- maxlength: e.maxlength,
4021
- "input-type": "number",
4022
- "onUpdate:modelValue": f,
4023
- "onUpdate:option": y[0] || (y[0] = (h) => d.$emit("update:option", h)),
4024
- onBlur: m
4025
- }, {
4026
- control: O(({ placeholder: h }) => [
4027
- L("input", {
4028
- ref_key: "inputRef",
4029
- ref: i,
4030
- type: "text",
4031
- disabled: e.disabled,
4032
- placeholder: h,
4033
- "aria-label": e.label || void 0,
4034
- class: "vc-input-currency__control",
4035
- tabindex: "0",
4036
- onBlur: m,
4037
- onKeydown: g,
4038
- onPaste: c
4039
- }, null, 40, Go)
4040
- ]),
4041
- _: 1
4042
- }, 8, ["options", "option-label", "option-value", "searchable", "debounce", "disabled", "label", "required", "option", "model-value", "tooltip", "placeholder", "hint", "clearable", "prefix", "suffix", "name", "loading", "autofocus", "error", "error-message", "maxlength"]));
4043
- }
4044
- }), jt = Symbol("VcAppBarState"), Jo = {
4045
- activeWidgetId: S(null),
4046
- activeMobileActionId: S(null)
4047
- };
4048
- function hr() {
4049
- const e = {
4050
- activeWidgetId: S(null),
4051
- activeMobileActionId: S(null)
4052
- };
4053
- return $t(jt, e), e;
4054
- }
4055
- function kr() {
4056
- return G(jt, Jo);
4057
- }
4058
- const Ir = Symbol("TableContext"), Xo = Symbol("ColumnCollector"), Sr = Symbol("FillerWidth"), $r = Symbol("IsColumnReordering"), wr = Symbol("FilterContext"), Or = (e, t) => {
4059
- const n = e.__vccOpts || e;
4060
- for (const [a, o] of t)
4061
- n[a] = o;
4062
- return n;
4063
- }, Er = V({
4064
- name: "VcColumn",
4065
- inheritAttrs: !1,
4066
- props: {
4067
- // === Identity ===
4068
- /** Unique column identifier (must be unique within the table) */
4069
- id: {
4070
- type: String,
4071
- required: !0
4072
- },
4073
- /** Data field path to read from each item (default: same as `id`) */
4074
- field: {
4075
- type: String,
4076
- default: void 0
4077
- },
4078
- // === Display ===
4079
- /** Column header title text */
4080
- title: {
4081
- type: String,
4082
- default: void 0
4083
- },
4084
- /** Cell formatter type — determines how cell value is rendered */
4085
- type: {
4086
- type: String,
4087
- default: "text"
4088
- },
4089
- /** Field name to read currency code from (used with `type="money"`, default: `"currency"`) */
4090
- currencyField: {
4091
- type: String,
4092
- default: "currency"
4093
- },
4094
- /** Date/number format string (e.g. `"DD.MM.YYYY"`) */
4095
- format: {
4096
- type: String,
4097
- default: void 0
4098
- },
4099
- // === Sizing ===
4100
- /** Column width in px or CSS string (e.g. `200`, `"150px"`) */
4101
- width: {
4102
- type: [String, Number],
4103
- default: void 0
4104
- },
4105
- /** Minimum column width (default: `60px`) */
4106
- minWidth: {
4107
- type: [String, Number],
4108
- default: void 0
4109
- },
4110
- /** Maximum column width */
4111
- maxWidth: {
4112
- type: [String, Number],
4113
- default: void 0
4114
- },
4115
- // === Alignment ===
4116
- /** Cell text alignment */
4117
- align: {
4118
- type: String,
4119
- default: void 0
4120
- },
4121
- /** Header text alignment (default: same as `align`) */
4122
- headerAlign: {
4123
- type: String,
4124
- default: void 0
4125
- },
4126
- // === Sorting ===
4127
- /** Whether the column is sortable (shows sort icon on hover) */
4128
- sortable: {
4129
- type: Boolean,
4130
- default: !1
4131
- },
4132
- /** Override backend field name for sorting (default: column `id`) */
4133
- sortField: {
4134
- type: String,
4135
- default: void 0
4136
- },
4137
- // === Filtering ===
4138
- /** Declarative filter config: `true` for text, `"field"` for text with custom field, or object for select/dateRange */
4139
- filter: {
4140
- type: [Boolean, String, Object],
4141
- default: void 0
4142
- },
4143
- /** Override backend field name for filtering (default: column `id`) */
4144
- filterField: {
4145
- type: String,
4146
- default: void 0
4147
- },
4148
- /** Placeholder text for the filter input */
4149
- filterPlaceholder: {
4150
- type: String,
4151
- default: void 0
4152
- },
4153
- // === Visibility ===
4154
- /** Whether the column is visible (default: `true`). Hidden columns can be toggled via column switcher */
4155
- visible: {
4156
- type: Boolean,
4157
- default: !0
4158
- },
4159
- /** If `true`, column stays visible even when `showAllColumns=false` (e.g. when blade narrows) */
4160
- alwaysVisible: {
4161
- type: Boolean,
4162
- default: !1
4163
- },
4164
- // === Editing ===
4165
- /** Whether the cell is editable (enables inline edit on click) */
4166
- editable: {
4167
- type: Boolean,
4168
- default: !1
4169
- },
4170
- /** Validation rules for the editable cell (field name → validator) */
4171
- rules: {
4172
- type: Object,
4173
- default: void 0
4174
- },
4175
- // === Styling ===
4176
- /** Custom CSS class applied to the entire column (header + body cells) */
4177
- class: {
4178
- type: String,
4179
- default: void 0
4180
- },
4181
- /** Custom CSS class applied only to the header cell */
4182
- headerClass: {
4183
- type: String,
4184
- default: void 0
4185
- },
4186
- /** Custom CSS class applied only to body cells */
4187
- bodyClass: {
4188
- type: String,
4189
- default: void 0
4190
- },
4191
- /** Number of lines to clamp cell text to (`0` = no clamp, default: `2`) */
4192
- lineClamp: {
4193
- type: Number,
4194
- default: 2
4195
- },
4196
- // === Special modes ===
4197
- /** Renders a selection checkbox column (`"single"` = radio, `"multiple"` = checkbox) */
4198
- selectionMode: {
4199
- type: String,
4200
- default: void 0
4201
- },
4202
- /** Renders row edit save/cancel buttons in this column */
4203
- rowEditor: {
4204
- type: Boolean,
4205
- default: !1
4206
- },
4207
- /** Renders a drag handle for row reordering */
4208
- rowReorder: {
4209
- type: Boolean,
4210
- default: !1
4211
- },
4212
- /** Renders an expand/collapse toggle for row expansion */
4213
- expander: {
4214
- type: Boolean,
4215
- default: !1
4216
- },
4217
- // === Mobile ===
4218
- /**
4219
- * Mobile card role — determines how column is displayed on mobile.
4220
- * - `"title"`: Primary identifier, displayed at top (full width, bold)
4221
- * - `"image"`: Visual element, displayed on left side
4222
- * - `"field"`: Data with label, auto-distributed in 2x2 grid (max 4)
4223
- * - `"status"`: Status badge, displayed at bottom (multiple allowed)
4224
- */
4225
- mobileRole: {
4226
- type: String,
4227
- default: void 0
4228
- },
4229
- /** Explicit grid position for mobile card layout */
4230
- mobilePosition: {
4231
- type: String,
4232
- default: void 0
4233
- },
4234
- /** Whether column is visible on mobile (default: `true` — hidden unless `mobileRole` is specified) */
4235
- mobileVisible: {
4236
- type: Boolean,
4237
- default: !0
4238
- }
4239
- },
4240
- setup(e, { slots: t }) {
4241
- const n = G(Xo, null), a = qe();
4242
- return Ue(() => {
4243
- n && a && n.add({
4244
- instance: a,
4245
- props: e,
4246
- slots: t
4247
- });
4248
- }), Ot(() => {
4249
- n && a && n.delete(a);
4250
- }), () => null;
4251
- }
4252
- }), $e = _e(/* @__PURE__ */ new Map());
4253
- function Ht() {
4254
- return {
4255
- register: (l) => {
4256
- $e.set(l.type, l);
4257
- },
4258
- get: (l) => $e.get(l),
4259
- has: (l) => $e.has(l),
4260
- getRegisteredTypes: () => Array.from($e.keys()),
4261
- unregister: (l) => $e.delete(l),
4262
- clear: () => {
4263
- $e.clear();
4264
- }
4265
- };
4266
- }
4267
- const Zo = { class: "vc-table-cell-editable__error-tooltip" }, mt = /* @__PURE__ */ V({
4268
- __name: "CellEditableWrapper",
4269
- props: {
4270
- label: {},
4271
- fieldName: {},
4272
- modelValue: {},
4273
- rules: {},
4274
- validateOnMount: { type: Boolean }
4275
- },
4276
- setup(e) {
4277
- const t = e, n = S(null);
4278
- return Ue(() => {
4279
- const a = t.modelValue === void 0 || t.modelValue === null || t.modelValue === "";
4280
- (t.validateOnMount || a && t.rules) && n.value?.validate();
4281
- }), (a, o) => (v(), N(r(wn), {
4282
- ref_key: "fieldRef",
4283
- ref: n,
4284
- label: e.label,
4285
- name: e.fieldName,
4286
- "model-value": e.modelValue,
4287
- rules: e.rules
4288
- }, {
4289
- default: O(({ errors: i, errorMessage: l }) => [
4290
- x(Bt, { placement: "bottom" }, ie({
4291
- default: O(() => [
4292
- C(a.$slots, "default", {
4293
- errors: i,
4294
- errorMessage: l
4295
- })
4296
- ]),
4297
- _: 2
4298
- }, [
4299
- l ? {
4300
- name: "tooltip",
4301
- fn: O(() => [
4302
- L("div", Zo, T(l), 1)
4303
- ]),
4304
- key: "0"
4305
- } : void 0
4306
- ]), 1024)
4307
- ]),
4308
- _: 3
4309
- }, 8, ["label", "name", "model-value", "rules"]));
4310
- }
4311
- }), Qo = {
4312
- key: 1,
4313
- class: "vc-table-cell-default"
4314
- }, Gt = /* @__PURE__ */ V({
4315
- __name: "CellDefault",
4316
- props: {
4317
- value: {},
4318
- editable: { type: Boolean },
4319
- label: {},
4320
- fieldName: {},
4321
- fieldId: {},
4322
- rules: {},
4323
- rowIndex: {},
4324
- validateOnMount: { type: Boolean }
4325
- },
4326
- emits: ["update", "blur"],
4327
- setup(e, { emit: t }) {
4328
- const n = e, a = t, { isMobile: o, isDesktop: i } = je(), l = (s) => {
4329
- s && s.length > 0 || a("blur", { row: n.rowIndex, field: n.fieldId || "" });
4330
- };
4331
- return (s, u) => e.editable ? (v(), N(mt, {
4332
- key: 0,
4333
- label: e.label || "",
4334
- "field-name": e.fieldName || "",
4335
- "model-value": e.value,
4336
- rules: e.rules,
4337
- "validate-on-mount": e.validateOnMount
4338
- }, {
4339
- default: O(({ errors: f, errorMessage: m }) => [
4340
- x(gt, {
4341
- "model-value": e.value,
4342
- class: "vc-table-cell-default__input",
4343
- error: f.length > 0,
4344
- "error-message": r(o) ? m : void 0,
4345
- "onUpdate:modelValue": u[0] || (u[0] = (g) => s.$emit("update", { field: e.fieldId || "", value: g })),
4346
- onBlur: (g) => l(f)
4347
- }, ie({ _: 2 }, [
4348
- r(i) && f.length > 0 ? {
4349
- name: "append-inner",
4350
- fn: O(() => [
4351
- x(r(U), {
4352
- icon: "lucide-circle-alert",
4353
- class: "vc-table-cell-default__error-icon"
4354
- })
4355
- ]),
4356
- key: "0"
4357
- } : void 0
4358
- ]), 1032, ["model-value", "error", "error-message", "onBlur"])
4359
- ]),
4360
- _: 1
4361
- }, 8, ["label", "field-name", "model-value", "rules", "validate-on-mount"])) : (v(), b("span", Qo, T(e.value), 1));
4362
- }
4363
- }), _o = {
4364
- key: 1,
4365
- class: "vc-table-cell-money"
4366
- }, ei = {
4367
- key: 2,
4368
- class: "vc-table-cell-money vc-table-cell-money--not-set"
4369
- }, ti = /* @__PURE__ */ V({
4370
- __name: "CellMoney",
4371
- props: {
4372
- value: {},
4373
- currency: {},
4374
- editable: { type: Boolean },
4375
- label: {},
4376
- fieldName: {},
4377
- fieldId: {},
4378
- rules: {},
4379
- rowIndex: {},
4380
- validateOnMount: { type: Boolean }
4381
- },
4382
- emits: ["update", "blur"],
4383
- setup(e, { emit: t }) {
4384
- const n = e, a = t, { t: o } = Ie({ useScope: "global" }), i = window.navigator.language, { isMobile: l, isDesktop: s } = je(), u = $(() => typeof n.value > "u" || n.value === null || Number(n.value) === 0), f = $(() => {
4385
- const g = Number(n.value);
4386
- return isNaN(g) ? String(n.value) : new Intl.NumberFormat(i, {
4387
- style: "currency",
4388
- currency: n.currency || "USD"
4389
- }).format(g);
4390
- }), m = (g) => {
4391
- g && g.length > 0 || a("blur", { row: n.rowIndex, field: n.fieldId || "" });
4392
- };
4393
- return (g, c) => e.editable ? (v(), N(mt, {
4394
- key: 0,
4395
- label: e.label || "",
4396
- "field-name": e.fieldName || "",
4397
- "model-value": e.value,
4398
- rules: e.rules,
4399
- "validate-on-mount": e.validateOnMount
4400
- }, {
4401
- default: O(({ errors: d, errorMessage: y }) => [
4402
- x(Yo, {
4403
- "model-value": e.value,
4404
- options: [],
4405
- option: e.currency || "USD",
4406
- "currency-display": "symbol",
4407
- class: "vc-table-cell-money__input",
4408
- error: d.length > 0,
4409
- "error-message": r(l) ? y : void 0,
4410
- "onUpdate:modelValue": c[0] || (c[0] = (h) => g.$emit("update", { field: e.fieldId || "", value: h })),
4411
- onBlur: (h) => m(d)
4412
- }, ie({ _: 2 }, [
4413
- r(s) && d.length > 0 ? {
4414
- name: "append-inner",
4415
- fn: O(() => [
4416
- x(r(U), {
4417
- icon: "lucide-circle-alert",
4418
- class: "vc-table-cell-money__error-icon"
4419
- })
4420
- ]),
4421
- key: "0"
4422
- } : void 0
4423
- ]), 1032, ["model-value", "option", "error", "error-message", "onBlur"])
4424
- ]),
4425
- _: 1
4426
- }, 8, ["label", "field-name", "model-value", "rules", "validate-on-mount"])) : u.value ? (v(), b("span", ei, T(r(o)("COMPONENTS.ORGANISMS.VC_TABLE.NOT_SET")), 1)) : (v(), b("span", _o, T(f.value), 1));
4427
- }
4428
- }), ni = {
4429
- key: 1,
4430
- class: "vc-table-cell-number"
4431
- }, ai = {
4432
- key: 2,
4433
- class: "vc-table-cell-number vc-table-cell-number--not-set"
4434
- }, li = /* @__PURE__ */ V({
4435
- __name: "CellNumber",
4436
- props: {
4437
- value: {},
4438
- editable: { type: Boolean },
4439
- label: {},
4440
- fieldName: {},
4441
- fieldId: {},
4442
- rules: {},
4443
- rowIndex: {},
4444
- validateOnMount: { type: Boolean }
4445
- },
4446
- emits: ["update", "blur"],
4447
- setup(e, { emit: t }) {
4448
- const n = e, a = t, { t: o } = Ie({ useScope: "global" }), { isMobile: i, isDesktop: l } = je(), s = $(() => {
4449
- if (n.value === null || n.value === void 0) return !0;
4450
- const m = Number(n.value);
4451
- return isNaN(m) || m < 0;
4452
- }), u = $(() => {
4453
- const m = Number(n.value);
4454
- return isNaN(m) ? String(n.value) : m.toFixed(0);
4455
- }), f = (m) => {
4456
- m && m.length > 0 || a("blur", { row: n.rowIndex, field: n.fieldId || "" });
4457
- };
4458
- return (m, g) => e.editable ? (v(), N(mt, {
4459
- key: 0,
4460
- label: e.label || "",
4461
- "field-name": e.fieldName || "",
4462
- "model-value": e.value,
4463
- rules: e.rules,
4464
- "validate-on-mount": e.validateOnMount
4465
- }, {
4466
- default: O(({ errors: c, errorMessage: d }) => [
4467
- x(gt, {
4468
- "model-value": e.value,
4469
- class: "vc-table-cell-number__input",
4470
- type: "number",
4471
- error: c.length > 0,
4472
- "error-message": r(i) ? d : void 0,
4473
- "onUpdate:modelValue": g[0] || (g[0] = (y) => m.$emit("update", { field: e.fieldId || "", value: y })),
4474
- onBlur: (y) => f(c)
4475
- }, ie({ _: 2 }, [
4476
- r(l) && c.length > 0 ? {
4477
- name: "append-inner",
4478
- fn: O(() => [
4479
- x(r(U), {
4480
- icon: "lucide-circle-alert",
4481
- class: "vc-table-cell-number__error-icon"
4482
- })
4483
- ]),
4484
- key: "0"
4485
- } : void 0
4486
- ]), 1032, ["model-value", "error", "error-message", "onBlur"])
4487
- ]),
4488
- _: 1
4489
- }, 8, ["label", "field-name", "model-value", "rules", "validate-on-mount"])) : s.value ? (v(), b("span", ai, T(r(o)("COMPONENTS.ORGANISMS.VC_TABLE.NOT_SET")), 1)) : (v(), b("span", ni, T(u.value), 1));
4490
- }
4491
- }), oi = {
4492
- key: 0,
4493
- class: "vc-table-cell-date"
4494
- }, ii = {
4495
- key: 1,
4496
- class: "vc-table-cell-date vc-table-cell-date--not-set"
4497
- }, Ze = /* @__PURE__ */ V({
4498
- __name: "CellDate",
4499
- props: {
4500
- value: {},
4501
- variant: {},
4502
- format: {}
4503
- },
4504
- setup(e) {
4505
- const t = e, { t: n } = Ie({ useScope: "global" }), a = window.navigator.language, o = $(() => {
4506
- if (!t.value) return "";
4507
- if (t.format)
4508
- return Zn(t.value, t.format, a);
4509
- const i = t.value instanceof Date ? t.value : new Date(t.value), l = t.variant || "date";
4510
- return l === "time" ? i.toLocaleTimeString(a) : l === "date-time" ? i.toLocaleString(a) : i.toLocaleDateString(a);
4511
- });
4512
- return (i, l) => e.value ? (v(), b("span", oi, T(o.value), 1)) : (v(), b("span", ii, T(r(n)("COMPONENTS.ORGANISMS.VC_TABLE.NOT_SET")), 1));
4513
- }
4514
- }), ri = ["title"], si = {
4515
- key: 1,
4516
- class: "vc-table-cell-date-ago vc-table-cell-date-ago--not-set"
4517
- }, ui = /* @__PURE__ */ V({
4518
- __name: "CellDateAgo",
4519
- props: {
4520
- value: {}
4521
- },
4522
- setup(e) {
4523
- const t = e, { t: n } = Ie({ useScope: "global" }), a = window.navigator.language, o = $(() => t.value ? (t.value instanceof Date ? t.value : new Date(t.value)).toLocaleString(a) : ""), i = $(() => t.value ? Xn(t.value) : "");
4524
- return (l, s) => e.value ? (v(), b("span", {
4525
- key: 0,
4526
- class: "vc-table-cell-date-ago",
4527
- title: o.value
4528
- }, T(i.value), 9, ri)) : (v(), b("span", si, T(r(n)("COMPONENTS.ORGANISMS.VC_TABLE.NOT_SET")), 1));
4529
- }
4530
- }), ci = /* @__PURE__ */ V({
4531
- __name: "CellImage",
4532
- props: {
4533
- value: {},
4534
- emptyIcon: {}
4535
- },
4536
- setup(e) {
4537
- return (t, n) => (v(), N(r(Ka), {
4538
- class: "vc-table-cell-image",
4539
- bordered: !0,
4540
- size: "s",
4541
- aspect: "1x1",
4542
- src: e.value,
4543
- "empty-icon": e.emptyIcon,
4544
- background: "contain",
4545
- "thumbnail-size": "sm"
4546
- }, null, 8, ["src", "empty-icon"]));
4547
- }
4548
- }), di = /* @__PURE__ */ V({
4549
- __name: "CellStatus",
4550
- props: {
4551
- value: {}
4552
- },
4553
- setup(e) {
4554
- return (t, n) => (v(), N(r(tl), { class: "vc-table-cell-status" }, {
4555
- default: O(() => [
4556
- Q(T(e.value), 1)
4557
- ]),
4558
- _: 1
4559
- }));
4560
- }
4561
- }), fi = { class: "vc-table-cell-status-icon" }, vi = /* @__PURE__ */ V({
4562
- __name: "CellStatusIcon",
4563
- props: {
4564
- value: {}
4565
- },
4566
- setup(e) {
4567
- return (t, n) => (v(), b("div", fi, [
4568
- typeof e.value == "boolean" ? (v(), N(r(al), {
4569
- key: 0,
4570
- status: e.value
4571
- }, null, 8, ["status"])) : w("", !0)
4572
- ]));
4573
- }
4574
- }), gi = /* @__PURE__ */ V({
4575
- __name: "CellLink",
4576
- props: {
4577
- value: {}
4578
- },
4579
- setup(e) {
4580
- return (t, n) => (v(), N(r(Qa), { class: "vc-table-cell-link" }, {
4581
- default: O(() => [
4582
- Q(T(e.value), 1)
4583
- ]),
4584
- _: 1
4585
- }));
4586
- }
4587
- }), mi = ["innerHTML"], pi = 500, bi = /* @__PURE__ */ V({
4588
- __name: "CellHtml",
4589
- props: {
4590
- value: {},
4591
- maxLength: {}
4592
- },
4593
- setup(e) {
4594
- const t = e, n = /* @__PURE__ */ new Map();
4595
- function a(l) {
4596
- if (n.has(l))
4597
- return n.get(l);
4598
- const s = Rt.sanitize(l, {
4599
- ALLOWED_TAGS: [
4600
- "p",
4601
- "br",
4602
- "strong",
4603
- "em",
4604
- "u",
4605
- "s",
4606
- "h1",
4607
- "h2",
4608
- "h3",
4609
- "h4",
4610
- "h5",
4611
- "h6",
4612
- "ul",
4613
- "ol",
4614
- "li",
4615
- "blockquote",
4616
- "pre",
4617
- "code",
4618
- "a",
4619
- "img",
4620
- "table",
4621
- "thead",
4622
- "tbody",
4623
- "tr",
4624
- "th",
4625
- "td",
4626
- "hr",
4627
- "div",
4628
- "span"
4629
- ],
4630
- ALLOWED_ATTR: ["href", "src", "alt", "title", "class", "id", "colspan", "rowspan", "align", "valign"],
4631
- FORBID_TAGS: ["script", "object", "embed", "form", "input"],
4632
- FORBID_ATTR: ["onerror", "onload", "onclick", "onmouseover", "onfocus", "onblur", "style"]
4633
- });
4634
- if (n.size >= pi) {
4635
- const u = n.keys().next().value;
4636
- u !== void 0 && n.delete(u);
4637
- }
4638
- return n.set(l, s), s;
4639
- }
4640
- const o = $(() => t.value ? a(String(t.value)) : ""), i = $(() => Un(o.value, t.maxLength || 30));
4641
- return (l, s) => (v(), b("div", {
4642
- class: "vc-table-cell-html",
4643
- innerHTML: i.value
4644
- }, null, 8, mi));
4645
- }
4646
- }), Yt = [
4647
- { type: "text", component: Gt, config: { editable: !0 } },
4648
- { type: "number", component: li, config: { editable: !0 } },
4649
- { type: "money", component: ti, config: { editable: !0 } },
4650
- { type: "date", component: Ze, config: { editable: !1 } },
4651
- { type: "time", component: Ze, config: { editable: !1 } },
4652
- { type: "datetime", component: Ze, config: { editable: !1 } },
4653
- { type: "date-ago", component: ui, config: { editable: !1 } },
4654
- { type: "image", component: ci, config: { editable: !1 } },
4655
- { type: "status", component: di, config: { editable: !1 } },
4656
- { type: "status-icon", component: vi, config: { editable: !1 } },
4657
- { type: "link", component: gi, config: { editable: !1 } },
4658
- { type: "html", component: bi, config: { editable: !1 } }
4659
- ], Lr = Object.freeze(Yt.map((e) => e.type));
4660
- function yi() {
4661
- const { register: e, has: t } = Ht();
4662
- for (const n of Yt)
4663
- t(n.type) || e(n);
4664
- }
4665
- yi();
4666
- const Br = /* @__PURE__ */ V({
4667
- __name: "DynamicCellRenderer",
4668
- props: {
4669
- type: {},
4670
- value: {},
4671
- editable: { type: Boolean },
4672
- label: {},
4673
- fieldName: {},
4674
- fieldId: {},
4675
- rules: {},
4676
- rowIndex: {},
4677
- currency: {},
4678
- format: {},
4679
- variant: {},
4680
- validateOnMount: { type: Boolean }
4681
- },
4682
- emits: ["update", "blur"],
4683
- setup(e) {
4684
- const { get: t } = Ht(), n = e, a = $(() => t(n.type)?.component || Gt), o = $(() => {
4685
- const l = t(n.type)?.config?.editable ?? !1, s = {
4686
- value: n.value
4687
- };
4688
- return l && n.editable && (s.editable = n.editable, s.label = n.label, s.fieldName = n.fieldName, s.fieldId = n.fieldId, s.rules = n.rules, s.rowIndex = n.rowIndex, n.validateOnMount && (s.validateOnMount = !0)), n.type === "money" && n.currency && (s.currency = n.currency), (n.type === "date" || n.type === "time" || n.type === "datetime") && n.variant && (s.variant = n.variant), n.format && (s.format = n.format), s;
4689
- });
4690
- return (i, l) => (v(), N(it(a.value), ne(o.value, {
4691
- onUpdate: l[0] || (l[0] = (s) => i.$emit("update", s)),
4692
- onBlur: l[1] || (l[1] = (s) => i.$emit("blur", s))
4693
- }), null, 16));
4694
- }
4695
- }), Cr = V({
4696
- name: "SlotProxy",
4697
- props: {
4698
- slotFn: { type: Function, required: !0 },
4699
- scope: { type: Object, default: () => ({}) }
4700
- },
4701
- setup(e) {
4702
- return () => e.slotFn(e.scope);
4703
- }
4704
- }), xr = (e, t) => {
4705
- const n = t.arg ? parseInt(t.arg, 10) : 9e3, a = typeof t.value == "object" ? t.value : { blur: !0 };
4706
- t.value ? (e.classList.add("v-loading"), a.size && e.setAttribute("data-loading-size", a.size), a.color && e.style.setProperty("--v-loading-spinner-color", a.color), a.blur === !1 && e.classList.add("v-loading--no-blur"), a.fullscreen && e.classList.add("v-loading--fullscreen"), e.style.setProperty("--v-loading-z-index", `${n}`)) : (e.classList.remove("v-loading", "v-loading--no-blur", "v-loading--fullscreen"), e.removeAttribute("data-loading-size"), e.style.removeProperty("--v-loading-z-index"), e.style.removeProperty("--v-loading-spinner-color"));
4707
- };
4708
- export {
4709
- zt as $,
4710
- xr as A,
4711
- Lr as B,
4712
- hr as C,
4713
- yi as D,
4714
- kr as E,
4715
- Se as F,
4716
- Ht as G,
4717
- ia as H,
4718
- Ke as I,
4719
- sa as J,
4720
- Or as K,
4721
- fr as L,
4722
- or as M,
4723
- aa as N,
4724
- st as O,
4725
- se as P,
4726
- ke as Q,
4727
- Pe as R,
4728
- er as S,
4729
- Kn as T,
4730
- nt as U,
4731
- fe as V,
4732
- la as W,
4733
- je as X,
4734
- ur as Y,
4735
- sr as Z,
4736
- Ze as _,
4737
- Ca as a,
4738
- Xo as a$,
4739
- gr as a0,
4740
- Ia as a1,
4741
- vl as a2,
4742
- $a as a3,
4743
- wa as a4,
4744
- Oa as a5,
4745
- qi as a6,
4746
- me as a7,
4747
- Ra as a8,
4748
- re as a9,
4749
- Qi as aA,
4750
- pr as aB,
4751
- ar as aC,
4752
- cr as aD,
4753
- ir as aE,
4754
- nr as aF,
4755
- rr as aG,
4756
- Xi as aH,
4757
- Gi as aI,
4758
- Jn as aJ,
4759
- At as aK,
4760
- Yi as aL,
4761
- La as aM,
4762
- _i as aN,
4763
- br as aO,
4764
- lr as aP,
4765
- Ki as aQ,
4766
- tr as aR,
4767
- Kt as aS,
4768
- yr as aT,
4769
- Xl as aU,
4770
- ra as aV,
4771
- Ir as aW,
4772
- Sr as aX,
4773
- $r as aY,
4774
- Cr as aZ,
4775
- Br as a_,
4776
- Ui as aa,
4777
- zi as ab,
4778
- Fi as ac,
4779
- Pi as ad,
4780
- vr as ae,
4781
- Hi as af,
4782
- mr as ag,
4783
- fa as ah,
4784
- da as ai,
4785
- va as aj,
4786
- _n as ak,
4787
- Yn as al,
4788
- na as am,
4789
- ji as an,
4790
- ca as ao,
4791
- Xn as ap,
4792
- Zn as aq,
4793
- Wi as ar,
4794
- Ji as as,
4795
- Zi as at,
4796
- ta as au,
4797
- Wn as av,
4798
- ea as aw,
4799
- ua as ax,
4800
- yt as ay,
4801
- dr as az,
4802
- ui as b,
4803
- wr as b0,
4804
- oa as b1,
4805
- Gt as c,
4806
- mt as d,
4807
- bi as e,
4808
- ci as f,
4809
- gi as g,
4810
- ti as h,
4811
- li as i,
4812
- di as j,
4813
- vi as k,
4814
- Ma as l,
4815
- Al as m,
4816
- Er as n,
4817
- Sl as o,
4818
- Ka as p,
4819
- gt as q,
4820
- Yo as r,
4821
- jo as s,
4822
- He as t,
4823
- Qa as u,
4824
- ol as v,
4825
- qo as w,
4826
- le as x,
4827
- tl as y,
4828
- al as z
4829
- };