@webority/ui-elements 0.30.0 → 0.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{fileViewerPdf-C02nR-30.js → fileViewerPdf-BnIsj-J-.js} +57 -35
- package/dist/types/chatClient.d.ts +208 -0
- package/dist/types/chatCore.d.ts +4 -0
- package/dist/types/chatLabels.d.ts +69 -0
- package/dist/types/markdownParse.d.ts +77 -0
- package/dist/types/sse.d.ts +33 -0
- package/dist/ui-chat-core.js +347 -0
- package/dist/ui-chat.global.js +10 -0
- package/dist/ui-chat.js +1066 -0
- package/dist/ui-elements.global.js +16 -2
- package/dist/ui-elements.js +841 -626
- package/dist/ui-file-viewer.global.js +4 -4
- package/dist/ui-file-viewer.js +6 -2
- package/package.json +8 -2
package/dist/ui-elements.js
CHANGED
|
@@ -51,22 +51,22 @@ function S(e, { unit: t = "rupees", decimals: n } = {}) {
|
|
|
51
51
|
let r = b(e, t), i = _(p(n, 0)).format(Math.abs(r));
|
|
52
52
|
return (Number(i.replace(/,/g, "")) === 0 ? "" : y(r)) + l + i;
|
|
53
53
|
}
|
|
54
|
-
var
|
|
55
|
-
function
|
|
54
|
+
var ee = (e) => e > 0 && e < .1 ? Math.min(20, 1 - Math.floor(Math.log10(e))) : 2;
|
|
55
|
+
function C(e, { currency: t, unit: n = "rupees" } = {}) {
|
|
56
56
|
if (!v(e)) return "-";
|
|
57
57
|
let r = t ? b(e, n) : e, i = t ? l : "", a = Math.abs(r), o = f.findIndex(([e]) => a >= e);
|
|
58
58
|
if (o === -1) {
|
|
59
|
-
let e = h(
|
|
59
|
+
let e = h(ee(a)).format(a);
|
|
60
60
|
if (e !== "1,000") return (e === "0" ? "" : y(r)) + i + e;
|
|
61
61
|
o = f.length - 1;
|
|
62
62
|
}
|
|
63
63
|
let [s, c] = f[o], u = a / s, d = u >= 100 ? 0 : u >= 10 ? 1 : 2, p = Number(u.toFixed(d));
|
|
64
64
|
return p >= 100 && o > 0 && (--o, [s, c] = f[o], u = a / s, d = u >= 100 ? 0 : u >= 10 ? 1 : 2, p = Number(u.toFixed(d))), `${y(r)}${i}${h(d).format(p)} ${c}`;
|
|
65
65
|
}
|
|
66
|
-
function
|
|
66
|
+
function te(e, { decimals: t } = {}) {
|
|
67
67
|
return v(e) ? `${x(e * 100, { decimals: p(t, 1) })}%` : "-";
|
|
68
68
|
}
|
|
69
|
-
function
|
|
69
|
+
function ne(e, { unit: t = "s" } = {}) {
|
|
70
70
|
if (!v(e)) return "-";
|
|
71
71
|
let n = {
|
|
72
72
|
ms: 1,
|
|
@@ -84,7 +84,7 @@ function te(e, { unit: t = "s" } = {}) {
|
|
|
84
84
|
let l = Math.floor(c / 60);
|
|
85
85
|
return `${i}${h(0).format(l)}h ${s(c % 60)}m`;
|
|
86
86
|
}
|
|
87
|
-
function
|
|
87
|
+
function re(e) {
|
|
88
88
|
if (e instanceof Date) return e.getTime();
|
|
89
89
|
if (v(e)) return e;
|
|
90
90
|
if (typeof e != "string") return NaN;
|
|
@@ -99,7 +99,7 @@ function ne(e) {
|
|
|
99
99
|
}
|
|
100
100
|
return Date.parse(e);
|
|
101
101
|
}
|
|
102
|
-
function
|
|
102
|
+
function w(e) {
|
|
103
103
|
let t = new Date(e + u);
|
|
104
104
|
return {
|
|
105
105
|
year: t.getUTCFullYear(),
|
|
@@ -109,10 +109,10 @@ function T(e) {
|
|
|
109
109
|
minute: t.getUTCMinutes()
|
|
110
110
|
};
|
|
111
111
|
}
|
|
112
|
-
function
|
|
113
|
-
let n =
|
|
112
|
+
function T(e, { pattern: t = "day" } = {}) {
|
|
113
|
+
let n = re(e);
|
|
114
114
|
if (!Number.isFinite(n)) return "-";
|
|
115
|
-
let r =
|
|
115
|
+
let r = w(n), i = (e) => String(e).padStart(2, "0"), a = `${i(r.day)}-${d[r.month]}-${r.year}`, o = `${i(r.hour)}:${i(r.minute)}`;
|
|
116
116
|
switch (t) {
|
|
117
117
|
case "month": return `${d[r.month]}-${r.year}`;
|
|
118
118
|
case "year": return String(r.year);
|
|
@@ -121,29 +121,29 @@ function E(e, { pattern: t = "day" } = {}) {
|
|
|
121
121
|
default: return a;
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
|
-
function
|
|
124
|
+
function ie(e, t) {
|
|
125
125
|
if (e == null || e === "") return "-";
|
|
126
126
|
let n = t?.style;
|
|
127
|
-
if (n === "date") return
|
|
127
|
+
if (n === "date") return T(e, t);
|
|
128
128
|
if (typeof e != "number") return String(e);
|
|
129
129
|
switch (n) {
|
|
130
130
|
case "currency": return S(e, t);
|
|
131
|
-
case "percent": return
|
|
132
|
-
case "compact": return
|
|
133
|
-
case "duration": return
|
|
131
|
+
case "percent": return te(e, t);
|
|
132
|
+
case "compact": return C(e, t);
|
|
133
|
+
case "duration": return ne(e, t);
|
|
134
134
|
default: return x(e, t);
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
137
|
//#endregion
|
|
138
138
|
//#region src/wuiHttp.js
|
|
139
|
-
var
|
|
139
|
+
var ae = "wui-csrf", E = "RequestVerificationToken", D = Object.freeze({
|
|
140
140
|
fragment: "X-Wui-Fragment",
|
|
141
141
|
message: "X-Wui-Message",
|
|
142
142
|
redirect: "X-Wui-Redirect",
|
|
143
143
|
result: "X-Wui-Result",
|
|
144
144
|
keepOpen: "X-Wui-Keep-Open",
|
|
145
145
|
toastVariant: "X-Wui-Toast-Variant"
|
|
146
|
-
}),
|
|
146
|
+
}), oe = Object.freeze([
|
|
147
147
|
"ok",
|
|
148
148
|
"validation",
|
|
149
149
|
"forbidden",
|
|
@@ -153,33 +153,33 @@ var ie = "wui-csrf", D = "RequestVerificationToken", O = Object.freeze({
|
|
|
153
153
|
"aborted",
|
|
154
154
|
"stale",
|
|
155
155
|
"session"
|
|
156
|
-
]),
|
|
157
|
-
function
|
|
158
|
-
let t = e.querySelector(`meta[name="${
|
|
156
|
+
]), se = /* @__PURE__ */ new Set(["GET", "HEAD"]);
|
|
157
|
+
function ce(e = document) {
|
|
158
|
+
let t = e.querySelector(`meta[name="${ae}"]`), n = t?.getAttribute("content");
|
|
159
159
|
return n ? {
|
|
160
160
|
header: t.getAttribute("data-header") || "RequestVerificationToken",
|
|
161
161
|
token: n
|
|
162
162
|
} : null;
|
|
163
163
|
}
|
|
164
|
-
var
|
|
164
|
+
var le = (e) => {
|
|
165
165
|
try {
|
|
166
166
|
return new URL(e, window.location.href).origin === window.location.origin;
|
|
167
167
|
} catch {
|
|
168
168
|
return !1;
|
|
169
169
|
}
|
|
170
170
|
};
|
|
171
|
-
function
|
|
171
|
+
function ue(e) {
|
|
172
172
|
return e >= 200 && e < 300 ? "ok" : e === 401 ? "session" : e === 403 ? "forbidden" : e === 422 ? "validation" : e >= 400 && e < 500 ? "client" : "server";
|
|
173
173
|
}
|
|
174
|
-
var
|
|
175
|
-
async function
|
|
174
|
+
var de = (e) => e?.name === "AbortError";
|
|
175
|
+
async function fe(e, t = {}) {
|
|
176
176
|
let n = (t.method || "GET").toUpperCase(), r = t.navigate || ((e) => window.location.assign(e)), i = {
|
|
177
177
|
Accept: "text/html",
|
|
178
178
|
"X-Requested-With": "XMLHttpRequest",
|
|
179
179
|
...t.headers
|
|
180
180
|
};
|
|
181
|
-
if (!
|
|
182
|
-
let e =
|
|
181
|
+
if (!se.has(n) && le(e)) {
|
|
182
|
+
let e = ce();
|
|
183
183
|
e && (i[e.header] = e.token);
|
|
184
184
|
}
|
|
185
185
|
let a = (e) => {
|
|
@@ -197,12 +197,12 @@ async function A(e, t = {}) {
|
|
|
197
197
|
status: t?.status ?? 0,
|
|
198
198
|
html: n,
|
|
199
199
|
response: t,
|
|
200
|
-
message: a(r(
|
|
201
|
-
redirect: r(
|
|
202
|
-
result: r(
|
|
203
|
-
keepOpen: r(
|
|
204
|
-
toastVariant: r(
|
|
205
|
-
fragment: r(
|
|
200
|
+
message: a(r(D.message)),
|
|
201
|
+
redirect: r(D.redirect),
|
|
202
|
+
result: r(D.result),
|
|
203
|
+
keepOpen: r(D.keepOpen) === "1",
|
|
204
|
+
toastVariant: r(D.toastVariant),
|
|
205
|
+
fragment: r(D.fragment) === "1"
|
|
206
206
|
};
|
|
207
207
|
}, s;
|
|
208
208
|
try {
|
|
@@ -214,19 +214,19 @@ async function A(e, t = {}) {
|
|
|
214
214
|
credentials: "same-origin"
|
|
215
215
|
});
|
|
216
216
|
} catch (e) {
|
|
217
|
-
return o(
|
|
217
|
+
return o(de(e) || t.signal?.aborted ? "aborted" : "network");
|
|
218
218
|
}
|
|
219
|
-
let c =
|
|
220
|
-
if (c === "ok" && s.redirected && s.headers.get(
|
|
219
|
+
let c = ue(s.status);
|
|
220
|
+
if (c === "ok" && s.redirected && s.headers.get(D.fragment) !== "1" && (c = "session"), c === "session") return r(s.status === 401 ? s.headers.get("Location") || window.location.href : s.url), o(c, s);
|
|
221
221
|
let l = "";
|
|
222
222
|
if (c === "ok" || c === "validation") try {
|
|
223
223
|
l = await s.text();
|
|
224
224
|
} catch (e) {
|
|
225
|
-
return o(
|
|
225
|
+
return o(de(e) || t.signal?.aborted ? "aborted" : "network", s);
|
|
226
226
|
}
|
|
227
227
|
return o(c, s, l);
|
|
228
228
|
}
|
|
229
|
-
function
|
|
229
|
+
function pe() {
|
|
230
230
|
let e = null, t = 0;
|
|
231
231
|
return {
|
|
232
232
|
async run(n, r = {}) {
|
|
@@ -235,7 +235,7 @@ function ue() {
|
|
|
235
235
|
e = i;
|
|
236
236
|
let a = ++t, o = r.signal;
|
|
237
237
|
o && (o.aborted ? i.abort() : o.addEventListener("abort", () => i.abort(), { once: !0 }));
|
|
238
|
-
let s = await
|
|
238
|
+
let s = await fe(n, {
|
|
239
239
|
...r,
|
|
240
240
|
signal: i.signal
|
|
241
241
|
});
|
|
@@ -252,12 +252,12 @@ function ue() {
|
|
|
252
252
|
}
|
|
253
253
|
//#endregion
|
|
254
254
|
//#region src/remoteModal.js
|
|
255
|
-
var
|
|
255
|
+
var O = "wui-remote-modal", me = "wui-modal-fullscreen", he = Object.freeze({
|
|
256
256
|
sm: 380,
|
|
257
257
|
md: 440,
|
|
258
258
|
lg: 640,
|
|
259
259
|
xl: 880
|
|
260
|
-
}),
|
|
260
|
+
}), k = Object.freeze({
|
|
261
261
|
loading: "Loading",
|
|
262
262
|
close: "Close",
|
|
263
263
|
retry: "Try again",
|
|
@@ -268,38 +268,38 @@ var de = "wui-remote-modal", fe = "wui-modal-fullscreen", pe = Object.freeze({
|
|
|
268
268
|
network: "Could not reach the server. Check your connection and try again.",
|
|
269
269
|
submitFailed: "Your changes were not saved.",
|
|
270
270
|
invalid: "Some fields need attention."
|
|
271
|
-
}),
|
|
271
|
+
}), ge = "a[href],button:not([disabled]),input:not([disabled]):not([type=\"hidden\"]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex=\"-1\"])", _e = "[aria-invalid=\"true\"], .is-invalid, .input-validation-error", ve = ".wui-error-summary, [data-wui-form-errors], .validation-summary-errors, [data-valmsg-summary]", A = "[data-wui-modal-content]", ye = "<button type=\"button\" class=\"wui-modal-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M18 6 6 18M6 6l12 12\"></path></svg></button>", be = /* @__PURE__ */ new WeakMap(), xe = /* @__PURE__ */ new WeakSet(), Se = () => Object.assign(/* @__PURE__ */ Error("The remote modal load was aborted."), { name: "AbortError" }), Ce = (e) => {
|
|
272
272
|
let t = window.bootstrap?.Modal;
|
|
273
273
|
if (!t) throw Error(`WUI.modal.load(${String(e)}): Bootstrap's bundle (window.bootstrap) is not loaded on this page.`);
|
|
274
274
|
return t;
|
|
275
|
-
},
|
|
275
|
+
}, we = (e) => {
|
|
276
276
|
let t = document.createElement("span");
|
|
277
277
|
return t.textContent = e ?? "", t.innerHTML;
|
|
278
278
|
};
|
|
279
|
-
function
|
|
279
|
+
function Te(e) {
|
|
280
280
|
if (e == null || e === "") return null;
|
|
281
281
|
if (e === "fullscreen") return { fullscreen: !0 };
|
|
282
|
-
if (Object.hasOwn(
|
|
282
|
+
if (Object.hasOwn(he, e)) return { px: he[e] };
|
|
283
283
|
let t = typeof e == "number" ? e : /^\d+$/.test(String(e)) ? Number(e) : NaN;
|
|
284
284
|
if (Number.isInteger(t) && t > 0) return { px: t };
|
|
285
285
|
throw TypeError(`Unsupported modal size "${String(e)}". Use sm, md, lg, xl, fullscreen or a px number.`);
|
|
286
286
|
}
|
|
287
|
-
var
|
|
287
|
+
var Ee = (e) => {
|
|
288
288
|
if (e.classList.contains("wui-modal-fullscreen")) return { fullscreen: !0 };
|
|
289
289
|
let t = Number.parseInt(e.style.getPropertyValue("--wui-modal-max-width"), 10);
|
|
290
|
-
return { px: t > 0 ? t :
|
|
291
|
-
},
|
|
292
|
-
e.classList.toggle(
|
|
293
|
-
},
|
|
294
|
-
function
|
|
295
|
-
let e = document.getElementById(
|
|
296
|
-
return e || (e = document.createElement("div"), e.id =
|
|
297
|
-
}
|
|
298
|
-
var
|
|
290
|
+
return { px: t > 0 ? t : he.md };
|
|
291
|
+
}, De = (e, t) => {
|
|
292
|
+
e.classList.toggle(me, !!t.fullscreen), t.fullscreen ? e.style.removeProperty("--wui-modal-max-width") : e.style.setProperty("--wui-modal-max-width", `${t.px}px`);
|
|
293
|
+
}, Oe = ["center", "top"];
|
|
294
|
+
function ke() {
|
|
295
|
+
let e = document.getElementById(O);
|
|
296
|
+
return e || (e = document.createElement("div"), e.id = O, e.className = "modal fade wui-modal-shell", e.tabIndex = -1, e.setAttribute("aria-hidden", "true"), e.setAttribute("role", "dialog"), e.setAttribute("aria-modal", "true"), e.style.setProperty("--wui-modal-max-width", `${he.md}px`), e.innerHTML = "<div class=\"modal-dialog modal-dialog-centered wui-rb-dialog\"><div class=\"modal-content wui-modal\"></div></div>", document.body.appendChild(e), e);
|
|
297
|
+
}
|
|
298
|
+
var Ae = (e) => `<div class="wui-modal-header"><div class="wui-modal-heading"><div class="wui-modal-headtext"><div class="wui-modal-title">${we(e)}</div></div></div>${ye}</div>`, je = (e) => `<div class="modal-content wui-modal" aria-busy="true">${Ae(e)}<div class="wui-modal-body"><div class="wui-modal-loading" role="status"><span class="visually-hidden">${we(k.loading)}</span><div class="skeleton wui-modal-skeleton"></div><div class="skeleton wui-modal-skeleton"></div><div class="skeleton wui-modal-skeleton wui-modal-skeleton--short"></div></div></div></div>`, Me = (e, t) => `<div class="modal-content wui-modal" data-wui-modal-error="${we(t)}">${Ae(e)}<div class="wui-modal-body"><div class="wui-modal-state" role="alert"><p class="wui-modal-state-title">${we(k.errorTitle)}</p><p class="wui-modal-state-text">${we(k[t] || k.server)}</p><div class="wui-modal-state-actions"><button type="button" class="btn btn-secondary" data-bs-dismiss="modal">${we(k.close)}</button><button type="button" class="btn btn-primary" data-wui-modal-retry>${we(k.retry)}</button></div></div></div></div>`, Ne = (e) => {
|
|
299
299
|
let t = document.createElement("template");
|
|
300
300
|
return t.innerHTML = e, t.content.querySelector(".modal-content");
|
|
301
|
-
},
|
|
302
|
-
function
|
|
301
|
+
}, Pe = (e) => e.shell.querySelector(".modal-content");
|
|
302
|
+
function Fe(e) {
|
|
303
303
|
if (!e) return;
|
|
304
304
|
e.dispatchEvent(new CustomEvent("wui:teardown", { bubbles: !0 }));
|
|
305
305
|
let t = window.bootstrap, n = [
|
|
@@ -309,51 +309,51 @@ function Pe(e) {
|
|
|
309
309
|
].filter((e) => e?.getInstance);
|
|
310
310
|
for (let t of [e, ...e.querySelectorAll("*")]) for (let e of n) e.getInstance(t)?.dispose();
|
|
311
311
|
}
|
|
312
|
-
function
|
|
313
|
-
let n =
|
|
314
|
-
|
|
312
|
+
function Ie(e, t) {
|
|
313
|
+
let n = Pe(e);
|
|
314
|
+
Fe(n), n ? n.replaceWith(t) : e.shell.querySelector(".modal-dialog").appendChild(t), window.WUI?.refresh?.();
|
|
315
315
|
}
|
|
316
|
-
var
|
|
317
|
-
function
|
|
318
|
-
let n = t && e.querySelector(
|
|
316
|
+
var Le = (e) => e.shell.classList.contains("show");
|
|
317
|
+
function Re(e, t) {
|
|
318
|
+
let n = t && e.querySelector(_e), r = n ? n.matches(ge) ? n : n.querySelector(ge) || n : null;
|
|
319
319
|
if (!r) {
|
|
320
|
-
let t = [...e.querySelectorAll(
|
|
320
|
+
let t = [...e.querySelectorAll(ge)];
|
|
321
321
|
r = e.querySelector("[data-autofocus]") || t.find((e) => !e.classList.contains("wui-modal-close")) || t[0] || e;
|
|
322
322
|
}
|
|
323
323
|
r.focus?.();
|
|
324
324
|
}
|
|
325
|
-
function
|
|
325
|
+
function ze(e, t) {
|
|
326
326
|
let n = e.shell.querySelector("[data-wui-modal-live]");
|
|
327
327
|
n || (n = document.createElement("div"), n.className = "visually-hidden", n.setAttribute("aria-live", "assertive"), n.setAttribute("data-wui-modal-live", ""), e.shell.querySelector(".modal-dialog").appendChild(n)), n.textContent = "", n.textContent = t;
|
|
328
328
|
}
|
|
329
|
-
var
|
|
329
|
+
var Be = (e, t, n) => e.dispatchEvent(new CustomEvent(t, {
|
|
330
330
|
bubbles: !0,
|
|
331
331
|
detail: n
|
|
332
332
|
}));
|
|
333
|
-
function
|
|
334
|
-
let t =
|
|
333
|
+
function Ve(e) {
|
|
334
|
+
let t = be.get(e);
|
|
335
335
|
return t || (t = {
|
|
336
336
|
shell: e,
|
|
337
|
-
queue:
|
|
338
|
-
defaultSize:
|
|
337
|
+
queue: pe(),
|
|
338
|
+
defaultSize: Ee(e),
|
|
339
339
|
defaultLabel: e.getAttribute("aria-label"),
|
|
340
|
-
placeholder:
|
|
340
|
+
placeholder: Pe({ shell: e })?.outerHTML || "<div class=\"modal-content wui-modal\"></div>",
|
|
341
341
|
remoteUrl: e.getAttribute("data-wui-remote-url"),
|
|
342
342
|
cache: e.getAttribute("data-wui-remote-cache") === "true",
|
|
343
343
|
loadedUrl: null,
|
|
344
344
|
session: null
|
|
345
|
-
},
|
|
346
|
-
!e.target.closest?.("[data-wui-modal-retry]") || !t.session || (e.preventDefault(),
|
|
345
|
+
}, be.set(e, t), e.addEventListener("submit", (e) => et(t, e)), e.addEventListener("click", (e) => {
|
|
346
|
+
!e.target.closest?.("[data-wui-modal-retry]") || !t.session || (e.preventDefault(), qe(t, t.session));
|
|
347
347
|
}), e.addEventListener("hidden.bs.modal", (n) => {
|
|
348
|
-
n.target === e &&
|
|
348
|
+
n.target === e && We(t);
|
|
349
349
|
}), e.addEventListener("shown.bs.modal", (n) => {
|
|
350
|
-
let r =
|
|
351
|
-
n.target === e && t.session && r?.matches(
|
|
350
|
+
let r = Pe(t);
|
|
351
|
+
n.target === e && t.session && r?.matches(A) && !r.contains(document.activeElement) && Re(r, !1);
|
|
352
352
|
}), t.remoteUrl && e.addEventListener("show.bs.modal", (n) => {
|
|
353
|
-
n.target === e &&
|
|
353
|
+
n.target === e && Ge(t, n);
|
|
354
354
|
}), t);
|
|
355
355
|
}
|
|
356
|
-
function
|
|
356
|
+
function He(e, t, n) {
|
|
357
357
|
e.session && (e.queue.abort(), e.session.resolveClosed({
|
|
358
358
|
status: "dismissed",
|
|
359
359
|
detail: { replaced: !0 }
|
|
@@ -374,17 +374,17 @@ function Ve(e, t, n) {
|
|
|
374
374
|
return a.handle = {
|
|
375
375
|
el: e.shell,
|
|
376
376
|
closed: i,
|
|
377
|
-
close: () =>
|
|
378
|
-
reload: () =>
|
|
377
|
+
close: () => Ue(e, a, "dismissed", null),
|
|
378
|
+
reload: () => qe(e, a)
|
|
379
379
|
}, e.session = a, a;
|
|
380
380
|
}
|
|
381
|
-
function
|
|
381
|
+
function Ue(e, t, n, r) {
|
|
382
382
|
e.session === t && (t.closing = {
|
|
383
383
|
status: n,
|
|
384
384
|
detail: r
|
|
385
385
|
}, window.bootstrap?.Modal?.getOrCreateInstance(e.shell).hide());
|
|
386
386
|
}
|
|
387
|
-
function
|
|
387
|
+
function We(e) {
|
|
388
388
|
let t = e.session;
|
|
389
389
|
if (e.queue.abort(), e.session = null, t) {
|
|
390
390
|
let { status: n, detail: r } = t.closing || {
|
|
@@ -394,28 +394,28 @@ function Ue(e) {
|
|
|
394
394
|
t.resolveClosed({
|
|
395
395
|
status: n,
|
|
396
396
|
detail: r
|
|
397
|
-
}),
|
|
397
|
+
}), Be(e.shell, "wui:modal:closed", {
|
|
398
398
|
status: n,
|
|
399
399
|
url: t.url
|
|
400
400
|
});
|
|
401
401
|
let i = document.activeElement;
|
|
402
402
|
t.trigger?.isConnected && (!i || i === document.body || e.shell.contains(i)) && t.trigger.focus?.();
|
|
403
403
|
}
|
|
404
|
-
e.cache || (
|
|
404
|
+
e.cache || (Ie(e, Ne(e.placeholder)), e.loadedUrl = null, De(e.shell, e.defaultSize), e.defaultLabel ? e.shell.setAttribute("aria-label", e.defaultLabel) : e.shell.removeAttribute("aria-label"));
|
|
405
405
|
}
|
|
406
|
-
function
|
|
407
|
-
let n = t.relatedTarget instanceof Element ? t.relatedTarget : null, r = n?.getAttribute("data-wui-url") || e.remoteUrl, i =
|
|
408
|
-
i.explicitSize =
|
|
406
|
+
function Ge(e, t) {
|
|
407
|
+
let n = t.relatedTarget instanceof Element ? t.relatedTarget : null, r = n?.getAttribute("data-wui-url") || e.remoteUrl, i = He(e, r, { trigger: n });
|
|
408
|
+
i.explicitSize = Ke(n?.getAttribute("data-wui-size")), i.explicitSize && De(e.shell, i.explicitSize), !(e.cache && e.loadedUrl === r) && (e.loadedUrl && Ie(e, Ne(e.placeholder)), qe(e, i, { keepPlaceholder: !0 }));
|
|
409
409
|
}
|
|
410
|
-
function
|
|
410
|
+
function Ke(e) {
|
|
411
411
|
try {
|
|
412
|
-
return
|
|
412
|
+
return Te(e);
|
|
413
413
|
} catch (e) {
|
|
414
414
|
return console.error(e), null;
|
|
415
415
|
}
|
|
416
416
|
}
|
|
417
|
-
async function
|
|
418
|
-
n ||
|
|
417
|
+
async function qe(e, t, { keepPlaceholder: n = !1 } = {}) {
|
|
418
|
+
n || Ie(e, Ne(je(t.options.title || Je(e))));
|
|
419
419
|
let r = await e.queue.run(t.url, {
|
|
420
420
|
method: t.method,
|
|
421
421
|
body: t.body,
|
|
@@ -423,19 +423,19 @@ async function Ke(e, t, { keepPlaceholder: n = !1 } = {}) {
|
|
|
423
423
|
});
|
|
424
424
|
if (e.session !== t || r.kind === "aborted" || r.kind === "stale") return "aborted";
|
|
425
425
|
if (r.kind === "session") return "session";
|
|
426
|
-
if ((r.kind === "ok" || r.kind === "validation") &&
|
|
426
|
+
if ((r.kind === "ok" || r.kind === "validation") && Ye(e, t, r.html, !1)) return e.loadedUrl = t.url, Be(e.shell, "wui:modal:loaded", {
|
|
427
427
|
url: t.url,
|
|
428
428
|
handle: t.handle
|
|
429
429
|
}), "loaded";
|
|
430
430
|
let i = r.kind === "ok" || r.kind === "validation" ? "server" : r.kind;
|
|
431
|
-
return
|
|
431
|
+
return Ie(e, Ne(Me(t.options.title || Je(e), i))), Le(e) && Re(Pe(e), !1), Be(e.shell, "wui:modal:error", {
|
|
432
432
|
url: t.url,
|
|
433
433
|
kind: i,
|
|
434
434
|
status: r.status
|
|
435
435
|
}), "error";
|
|
436
436
|
}
|
|
437
|
-
var
|
|
438
|
-
function
|
|
437
|
+
var Je = (e) => Pe(e)?.querySelector(".wui-modal-title")?.textContent || e.shell.getAttribute("aria-label") || "";
|
|
438
|
+
function Ye(e, t, n, r) {
|
|
439
439
|
let i = document.createElement("template");
|
|
440
440
|
i.innerHTML = n;
|
|
441
441
|
let a = i.content.querySelectorAll("script");
|
|
@@ -443,15 +443,15 @@ function Je(e, t, n, r) {
|
|
|
443
443
|
console.warn(`WUI.modal: ${t.url} returned a fragment with script; it was removed. Keep page behaviour in the page.`);
|
|
444
444
|
for (let e of a) e.remove();
|
|
445
445
|
}
|
|
446
|
-
let o = i.content.querySelector(
|
|
446
|
+
let o = i.content.querySelector(A);
|
|
447
447
|
if (!o) return console.error(`WUI.modal: ${t.url} did not answer with an <app-modal-content> fragment.`), !1;
|
|
448
|
-
|
|
448
|
+
Ie(e, o), De(e.shell, t.explicitSize || Ke(o.getAttribute("data-wui-size")) || e.defaultSize);
|
|
449
449
|
let s = o.getAttribute("data-wui-title");
|
|
450
|
-
return s && e.shell.setAttribute("aria-label", s),
|
|
450
|
+
return s && e.shell.setAttribute("aria-label", s), Le(e) && Re(o, r), !0;
|
|
451
451
|
}
|
|
452
|
-
var
|
|
453
|
-
function
|
|
454
|
-
let r = [...e.elements].filter((e) => e.matches(
|
|
452
|
+
var Xe = "button[type=\"submit\"], button:not([type]), input[type=\"submit\"], input[type=\"image\"]";
|
|
453
|
+
function Ze(e, t, n) {
|
|
454
|
+
let r = [...e.elements].filter((e) => e.matches(Xe));
|
|
455
455
|
if (n) {
|
|
456
456
|
e.setAttribute("data-wui-submitting", "");
|
|
457
457
|
let n = t && r.includes(t) ? t : r[0];
|
|
@@ -462,45 +462,45 @@ function Xe(e, t, n) {
|
|
|
462
462
|
e.removeAttribute("data-wui-submitting");
|
|
463
463
|
for (let e of r) e.disabled = e.hasAttribute("data-wui-was-disabled"), e.removeAttribute("data-wui-was-disabled"), e.classList.remove("is-loading"), e.removeAttribute("aria-busy"), e.querySelector("[data-wui-submit-spinner]")?.remove();
|
|
464
464
|
}
|
|
465
|
-
function
|
|
465
|
+
function Qe(e, t, n) {
|
|
466
466
|
let r = t.closest(".wui-modal-body") || t;
|
|
467
467
|
r.querySelector("[data-wui-modal-submit-error]")?.remove();
|
|
468
468
|
let i = document.createElement("div");
|
|
469
|
-
i.className = "alert alert-danger wui-modal-submit-error", i.setAttribute("role", "alert"), i.setAttribute("data-wui-modal-submit-error", ""), i.textContent = `${
|
|
469
|
+
i.className = "alert alert-danger wui-modal-submit-error", i.setAttribute("role", "alert"), i.setAttribute("data-wui-modal-submit-error", ""), i.textContent = `${k.submitFailed} ${k[n] || k.server}`, r.prepend(i), ze(e, i.textContent);
|
|
470
470
|
}
|
|
471
|
-
var
|
|
471
|
+
var $e = (e, t) => {
|
|
472
472
|
let n = new URL(e, window.location.href);
|
|
473
473
|
for (let [e, r] of t) typeof r == "string" && n.searchParams.append(e, r);
|
|
474
474
|
return n.origin === window.location.origin ? n.pathname + n.search : n.href;
|
|
475
475
|
};
|
|
476
|
-
async function
|
|
476
|
+
async function et(e, t) {
|
|
477
477
|
let n = t.target, r = e.session;
|
|
478
|
-
if (!(n instanceof HTMLFormElement) || !r || n.hasAttribute("data-wui-native") || !n.closest(
|
|
478
|
+
if (!(n instanceof HTMLFormElement) || !r || n.hasAttribute("data-wui-native") || !n.closest(A) || (t.preventDefault(), n.hasAttribute("data-wui-submitting"))) return;
|
|
479
479
|
let i = t.submitter || null, a = i?.getAttribute("formaction") || n.getAttribute("action") || r.url, o = (i?.getAttribute("formmethod") || n.getAttribute("method") || "GET").toUpperCase(), s = new FormData(n);
|
|
480
480
|
i?.name && !s.has(i.name) && s.append(i.name, i.value);
|
|
481
481
|
let c = o === "GET";
|
|
482
|
-
|
|
483
|
-
let l = await e.queue.run(c ?
|
|
482
|
+
Ze(n, i, !0);
|
|
483
|
+
let l = await e.queue.run(c ? $e(a, s) : a, {
|
|
484
484
|
method: o,
|
|
485
485
|
body: c ? void 0 : s,
|
|
486
486
|
navigate: r.options.navigate
|
|
487
487
|
});
|
|
488
488
|
if (e.session === r) {
|
|
489
|
-
if (n.isConnected &&
|
|
490
|
-
|
|
489
|
+
if (n.isConnected && Ze(n, i, !1), l.kind === "ok" && l.result === "success") {
|
|
490
|
+
tt(e, r, l);
|
|
491
491
|
return;
|
|
492
492
|
}
|
|
493
493
|
if (!(l.kind === "aborted" || l.kind === "stale" || l.kind === "session")) {
|
|
494
|
-
if (l.kind === "validation" &&
|
|
495
|
-
let t =
|
|
496
|
-
|
|
494
|
+
if (l.kind === "validation" && Ye(e, r, l.html, !0)) {
|
|
495
|
+
let t = Pe(e).querySelector(ve)?.textContent.replace(/\s+/g, " ").trim();
|
|
496
|
+
ze(e, t || k.invalid);
|
|
497
497
|
return;
|
|
498
498
|
}
|
|
499
|
-
l.kind === "ok" && l.html &&
|
|
499
|
+
l.kind === "ok" && l.html && Ye(e, r, l.html, !1) || Qe(e, n, l.kind === "ok" || l.kind === "validation" ? "server" : l.kind);
|
|
500
500
|
}
|
|
501
501
|
}
|
|
502
502
|
}
|
|
503
|
-
function
|
|
503
|
+
function tt(e, t, n) {
|
|
504
504
|
let r = n.message, i = n.redirect || null, a = {
|
|
505
505
|
url: t.url,
|
|
506
506
|
trigger: t.trigger,
|
|
@@ -508,15 +508,15 @@ function et(e, t, n) {
|
|
|
508
508
|
message: r,
|
|
509
509
|
redirect: i
|
|
510
510
|
};
|
|
511
|
-
if (r && window.WUI?.toast?.(r, { variant: "success" }),
|
|
512
|
-
n.html &&
|
|
511
|
+
if (r && window.WUI?.toast?.(r, { variant: "success" }), Be(t.trigger?.isConnected ? t.trigger : document, "wui:modal:success", a), t.options.onSuccess?.(a, t.handle), i && (t.options.navigate || ((e) => window.location.assign(e)))(i), n.keepOpen) {
|
|
512
|
+
n.html && Ye(e, t, n.html, !1);
|
|
513
513
|
return;
|
|
514
514
|
}
|
|
515
|
-
|
|
515
|
+
Ue(e, t, "success", a);
|
|
516
516
|
}
|
|
517
|
-
function
|
|
517
|
+
function nt(e) {
|
|
518
518
|
let t = e.target.closest?.("[data-wui-modal]");
|
|
519
|
-
t && (t.matches("a[href]") && (e.ctrlKey || e.metaKey || e.shiftKey || e.button !== 0) || (e.preventDefault(),
|
|
519
|
+
t && (t.matches("a[href]") && (e.ctrlKey || e.metaKey || e.shiftKey || e.button !== 0) || (e.preventDefault(), it(t.getAttribute("data-wui-modal"), {
|
|
520
520
|
size: t.getAttribute("data-wui-size") || void 0,
|
|
521
521
|
title: t.getAttribute("data-wui-title") || void 0,
|
|
522
522
|
trigger: t
|
|
@@ -524,34 +524,34 @@ function tt(e) {
|
|
|
524
524
|
e?.name !== "AbortError" && console.error(e);
|
|
525
525
|
})));
|
|
526
526
|
}
|
|
527
|
-
function
|
|
527
|
+
function rt(e = document) {
|
|
528
528
|
let t = e.ownerDocument || e;
|
|
529
|
-
|
|
529
|
+
xe.has(t) || (xe.add(t), t.addEventListener("click", nt));
|
|
530
530
|
let n = [...e.querySelectorAll?.(".modal[data-wui-remote-url]") || []];
|
|
531
531
|
e.matches?.(".modal[data-wui-remote-url]") && n.unshift(e);
|
|
532
|
-
for (let e of n)
|
|
532
|
+
for (let e of n) Ve(e);
|
|
533
533
|
}
|
|
534
|
-
function
|
|
534
|
+
function it(e, t = {}) {
|
|
535
535
|
try {
|
|
536
536
|
if (!e) throw TypeError("WUI.modal.load: a fragment url is required.");
|
|
537
|
-
let n =
|
|
538
|
-
if (!
|
|
539
|
-
if (t.signal?.aborted) return Promise.reject(
|
|
540
|
-
let a =
|
|
541
|
-
|
|
542
|
-
let o =
|
|
543
|
-
c.explicitSize = r,
|
|
537
|
+
let n = Ce(e), r = Te(t.size), i = t.placement || "center";
|
|
538
|
+
if (!Oe.includes(i)) throw TypeError(`WUI.modal.load: unsupported placement "${i}". Use center or top.`);
|
|
539
|
+
if (t.signal?.aborted) return Promise.reject(Se());
|
|
540
|
+
let a = ke();
|
|
541
|
+
rt(document);
|
|
542
|
+
let o = Ve(a), s = Le(o), c = He(o, e, t);
|
|
543
|
+
c.explicitSize = r, De(a, r || o.defaultSize), a.querySelector(".modal-dialog").classList.toggle("modal-dialog-centered", i === "center"), t.title && a.setAttribute("aria-label", t.title), s || (n.getInstance(a)?.dispose(), n.getOrCreateInstance(a, {
|
|
544
544
|
backdrop: !t.staticBackdrop || "static",
|
|
545
545
|
keyboard: !t.staticBackdrop
|
|
546
546
|
}));
|
|
547
|
-
let l = s ? Promise.resolve() : new Promise((e) => a.addEventListener("shown.bs.modal", () => e(), { once: !0 })), u =
|
|
547
|
+
let l = s ? Promise.resolve() : new Promise((e) => a.addEventListener("shown.bs.modal", () => e(), { once: !0 })), u = qe(o, c);
|
|
548
548
|
s || n.getOrCreateInstance(a).show();
|
|
549
549
|
let d = new Promise((e, n) => {
|
|
550
550
|
t.signal?.addEventListener("abort", () => {
|
|
551
|
-
o.session === c && (o.queue.abort(),
|
|
551
|
+
o.session === c && (o.queue.abort(), Ue(o, c, "dismissed", { aborted: !0 })), n(Se());
|
|
552
552
|
}, { once: !0 });
|
|
553
553
|
}), f = Promise.all([l, u]).then(([, t]) => {
|
|
554
|
-
if (t === "aborted") throw
|
|
554
|
+
if (t === "aborted") throw Se();
|
|
555
555
|
if (t === "session") throw Error(`WUI.modal.load(${e}): the session expired; the browser is signing in again.`);
|
|
556
556
|
return c.handle;
|
|
557
557
|
});
|
|
@@ -562,18 +562,18 @@ function rt(e, t = {}) {
|
|
|
562
562
|
}
|
|
563
563
|
//#endregion
|
|
564
564
|
//#region src/kanban.js
|
|
565
|
-
var
|
|
565
|
+
var at = Object.freeze([
|
|
566
566
|
"neutral",
|
|
567
567
|
"primary",
|
|
568
568
|
"info",
|
|
569
569
|
"success",
|
|
570
570
|
"warning",
|
|
571
571
|
"danger"
|
|
572
|
-
]),
|
|
572
|
+
]), ot = Object.freeze([
|
|
573
573
|
"number",
|
|
574
574
|
"currency",
|
|
575
575
|
"compact"
|
|
576
|
-
]),
|
|
576
|
+
]), st = "wui-kanban:", ct = "(max-width: 767.98px)", lt = 400, ut = 6, j = Object.freeze({
|
|
577
577
|
help: "Press Space to pick up the card. Use the Left and Right arrow keys to choose a column, then Space to drop it, or Escape to cancel.",
|
|
578
578
|
empty: "Nothing here",
|
|
579
579
|
collapse: (e) => `Collapse ${e}`,
|
|
@@ -597,16 +597,16 @@ var it = Object.freeze([
|
|
|
597
597
|
server: "Something went wrong on our side, so the card went back. Try again in a moment.",
|
|
598
598
|
network: "Could not reach the server, so the card went back. Check your connection and try again."
|
|
599
599
|
})
|
|
600
|
-
}),
|
|
601
|
-
function
|
|
600
|
+
}), dt = "[data-wui-column]", ft = "[data-wui-body]", pt = "[data-wui-card]", mt = "[data-wui-count]", ht = "[data-wui-summary]", gt = "[data-wui-empty]", _t = "[data-wui-drop-note]", vt = "[data-wui-live]", yt = "[data-wui-help]", bt = "[data-wui-switch]", xt = "[data-wui-scroller]", St = "[data-wui-collapse]", Ct = "input, select, textarea, [contenteditable=\"\"], [contenteditable=\"true\"], [data-wui-no-drag]", wt = 48, Tt = 16, M = (e) => e.getAttribute("data-wui-column"), Et = (e) => e.getAttribute("data-wui-card"), Dt = (e) => e.hidden || e.hasAttribute("hidden");
|
|
601
|
+
function N(e) {
|
|
602
602
|
let t = (e.getAttribute("aria-label") || e.textContent || "").replace(/\s+/g, " ").trim();
|
|
603
|
-
return t.length > 80 ? `${t.slice(0, 79)}…` : t ||
|
|
603
|
+
return t.length > 80 ? `${t.slice(0, 79)}…` : t || Et(e) || "Card";
|
|
604
604
|
}
|
|
605
|
-
function
|
|
606
|
-
return e ? `${
|
|
605
|
+
function Ot(e) {
|
|
606
|
+
return e ? `${st}${e}` : null;
|
|
607
607
|
}
|
|
608
|
-
function
|
|
609
|
-
let n =
|
|
608
|
+
function kt(e, t = globalThis.localStorage) {
|
|
609
|
+
let n = Ot(e);
|
|
610
610
|
if (!n || !t) return {};
|
|
611
611
|
try {
|
|
612
612
|
let e = JSON.parse(t.getItem(n) || "null");
|
|
@@ -615,19 +615,19 @@ function Ot(e, t = globalThis.localStorage) {
|
|
|
615
615
|
return {};
|
|
616
616
|
}
|
|
617
617
|
}
|
|
618
|
-
function
|
|
619
|
-
let i =
|
|
618
|
+
function At(e, t, n, r = globalThis.localStorage) {
|
|
619
|
+
let i = Ot(e);
|
|
620
620
|
if (!i || !r) return;
|
|
621
621
|
let a = {
|
|
622
|
-
...
|
|
622
|
+
...kt(e, r),
|
|
623
623
|
[t]: !!n
|
|
624
624
|
};
|
|
625
625
|
try {
|
|
626
626
|
r.setItem(i, JSON.stringify({ collapsed: a }));
|
|
627
627
|
} catch {}
|
|
628
628
|
}
|
|
629
|
-
function
|
|
630
|
-
if (!
|
|
629
|
+
function jt(e, t) {
|
|
630
|
+
if (!ot.includes(e)) throw TypeError(`Unsupported kanban summary format "${String(e)}". Use ${ot.join(", ")}.`);
|
|
631
631
|
if (t != null && t !== "" && !r.includes(t)) throw TypeError(`Unsupported kanban summary unit "${String(t)}". Use ${r.join(", ")}.`);
|
|
632
632
|
return e === "currency" ? {
|
|
633
633
|
style: "currency",
|
|
@@ -641,7 +641,7 @@ function At(e, t) {
|
|
|
641
641
|
decimals: 0
|
|
642
642
|
};
|
|
643
643
|
}
|
|
644
|
-
function
|
|
644
|
+
function Mt(e) {
|
|
645
645
|
let t = 0;
|
|
646
646
|
for (let n of e) {
|
|
647
647
|
if (n == null || n === "") continue;
|
|
@@ -650,9 +650,9 @@ function jt(e) {
|
|
|
650
650
|
}
|
|
651
651
|
return t;
|
|
652
652
|
}
|
|
653
|
-
var
|
|
653
|
+
var Nt = (e, t) => {
|
|
654
654
|
e && window.WUI?.toast?.(e, { variant: t });
|
|
655
|
-
},
|
|
655
|
+
}, Pt = class extends e {
|
|
656
656
|
constructor() {
|
|
657
657
|
super(), this._wired = !1, this._filter = null, this._press = null, this._drag = null, this._kbd = null, this._suppressClick = !1, this._observer = null, this._refreshQueued = !1, this._scrollTimer = 0, this._onPointerMove = (e) => this._pointerMove(e), this._onPointerUp = (e) => this._pointerUp(e), this._onPointerCancel = () => this._endPointer(!1), this._onDocKeyDown = (e) => {
|
|
658
658
|
e.key === "Escape" && this._drag && (e.preventDefault(), this._endPointer(!1));
|
|
@@ -666,17 +666,17 @@ var Mt = (e, t) => {
|
|
|
666
666
|
connectedCallback() {
|
|
667
667
|
if (!this._wired) {
|
|
668
668
|
this._wired = !0, this.addEventListener("pointerdown", (e) => this._pointerDown(e)), this.addEventListener("keydown", (e) => this._keyDown(e)), this.addEventListener("click", (e) => this._click(e), !0), this.addEventListener("dragstart", (e) => {
|
|
669
|
-
e.target.closest?.(
|
|
669
|
+
e.target.closest?.(pt) && e.preventDefault();
|
|
670
670
|
}), this.addEventListener("touchmove", (e) => {
|
|
671
671
|
this._drag && e.preventDefault();
|
|
672
672
|
}, { passive: !1 }), this._scroller()?.addEventListener("scroll", this._onScroll, { passive: !0 }), this._restoreCollapsed();
|
|
673
673
|
for (let e of this._allCards()) this._prepareCard(e);
|
|
674
674
|
if (typeof MutationObserver == "function") {
|
|
675
675
|
this._observer = new MutationObserver((e) => {
|
|
676
|
-
for (let t of e) for (let e of t.addedNodes) e.nodeType === 1 && e.matches(
|
|
676
|
+
for (let t of e) for (let e of t.addedNodes) e.nodeType === 1 && e.matches(pt) && this._prepareCard(e);
|
|
677
677
|
this._queueRefresh();
|
|
678
678
|
});
|
|
679
|
-
for (let e of this.querySelectorAll(
|
|
679
|
+
for (let e of this.querySelectorAll(ft)) this._observer.observe(e, { childList: !0 });
|
|
680
680
|
}
|
|
681
681
|
this.refresh();
|
|
682
682
|
}
|
|
@@ -695,13 +695,13 @@ var Mt = (e, t) => {
|
|
|
695
695
|
let e = this._summaryFormat();
|
|
696
696
|
for (let t of this._columns()) {
|
|
697
697
|
let n = 0, r = [];
|
|
698
|
-
for (let e of this._cardsIn(t)) this._filter && (e.hidden = this._filter(e) === !1), !
|
|
698
|
+
for (let e of this._cardsIn(t)) this._filter && (e.hidden = this._filter(e) === !1), !Dt(e) && (n++, r.push(e.getAttribute("data-wui-value")));
|
|
699
699
|
let i = String(n);
|
|
700
700
|
for (let e of this._countsOf(t)) e.textContent !== i && (e.textContent = i);
|
|
701
|
-
let a = t.querySelector(
|
|
701
|
+
let a = t.querySelector(gt);
|
|
702
702
|
if (a && (a.hidden = n > 0), e) {
|
|
703
|
-
let n = t.querySelector(
|
|
704
|
-
n && (n.textContent =
|
|
703
|
+
let n = t.querySelector(ht);
|
|
704
|
+
n && (n.textContent = ie(Mt(r), e));
|
|
705
705
|
}
|
|
706
706
|
}
|
|
707
707
|
}
|
|
@@ -712,43 +712,43 @@ var Mt = (e, t) => {
|
|
|
712
712
|
return this._commit(r, t, n);
|
|
713
713
|
}
|
|
714
714
|
_columns() {
|
|
715
|
-
return [...this.querySelectorAll(
|
|
715
|
+
return [...this.querySelectorAll(dt)];
|
|
716
716
|
}
|
|
717
717
|
_columnByKey(e) {
|
|
718
|
-
return this._columns().find((t) =>
|
|
718
|
+
return this._columns().find((t) => M(t) === e) || null;
|
|
719
719
|
}
|
|
720
720
|
_columnOf(e) {
|
|
721
|
-
return e.closest(
|
|
721
|
+
return e.closest(dt);
|
|
722
722
|
}
|
|
723
723
|
_titleOf(e) {
|
|
724
|
-
return (e.querySelector(".wui-kanban-title")?.textContent ||
|
|
724
|
+
return (e.querySelector(".wui-kanban-title")?.textContent || M(e) || "").replace(/\s+/g, " ").trim();
|
|
725
725
|
}
|
|
726
726
|
_bodyOf(e) {
|
|
727
|
-
return e.querySelector(
|
|
727
|
+
return e.querySelector(ft);
|
|
728
728
|
}
|
|
729
729
|
_cardsIn(e) {
|
|
730
730
|
let t = this._bodyOf(e);
|
|
731
|
-
return t ? [...t.children].filter((e) => e.matches(
|
|
731
|
+
return t ? [...t.children].filter((e) => e.matches(pt)) : [];
|
|
732
732
|
}
|
|
733
733
|
_visibleCardsIn(e) {
|
|
734
|
-
return this._cardsIn(e).filter((e) => !
|
|
734
|
+
return this._cardsIn(e).filter((e) => !Dt(e));
|
|
735
735
|
}
|
|
736
736
|
_allCards() {
|
|
737
|
-
return [...this.querySelectorAll(`${
|
|
737
|
+
return [...this.querySelectorAll(`${ft} > ${pt}`)];
|
|
738
738
|
}
|
|
739
739
|
_cardByKey(e) {
|
|
740
|
-
return this._allCards().find((t) =>
|
|
740
|
+
return this._allCards().find((t) => Et(t) === e) || null;
|
|
741
741
|
}
|
|
742
742
|
_countsOf(e) {
|
|
743
|
-
let t =
|
|
744
|
-
return [...e.querySelectorAll(
|
|
743
|
+
let t = M(e), n = [...this.querySelectorAll(bt)].filter((e) => e.getAttribute("data-wui-switch") === t);
|
|
744
|
+
return [...e.querySelectorAll(mt), ...n.flatMap((e) => [...e.querySelectorAll(mt)])];
|
|
745
745
|
}
|
|
746
746
|
_scroller() {
|
|
747
|
-
return this.querySelector(
|
|
747
|
+
return this.querySelector(xt);
|
|
748
748
|
}
|
|
749
749
|
_summaryFormat() {
|
|
750
750
|
let e = this.getAttribute("summary-format");
|
|
751
|
-
return e ?
|
|
751
|
+
return e ? jt(e, this.getAttribute("summary-unit")) : null;
|
|
752
752
|
}
|
|
753
753
|
_queueRefresh() {
|
|
754
754
|
this._refreshQueued || (this._refreshQueued = !0, queueMicrotask(() => {
|
|
@@ -756,11 +756,11 @@ var Mt = (e, t) => {
|
|
|
756
756
|
}));
|
|
757
757
|
}
|
|
758
758
|
_prepareCard(e) {
|
|
759
|
-
let t = this.querySelector(
|
|
759
|
+
let t = this.querySelector(yt);
|
|
760
760
|
t?.id && !e.hasAttribute("aria-describedby") && e.setAttribute("aria-describedby", t.id), e.hasAttribute("tabindex") || (e.tabIndex = 0);
|
|
761
761
|
}
|
|
762
762
|
_announce(e) {
|
|
763
|
-
let t = this.querySelector(
|
|
763
|
+
let t = this.querySelector(vt);
|
|
764
764
|
!t || !e || (t.textContent = "", t.textContent = e);
|
|
765
765
|
}
|
|
766
766
|
_fire(e, t, n = !1) {
|
|
@@ -771,8 +771,8 @@ var Mt = (e, t) => {
|
|
|
771
771
|
}));
|
|
772
772
|
}
|
|
773
773
|
_canLift(e) {
|
|
774
|
-
let t =
|
|
775
|
-
return this.hasAttribute("readonly") || e.hasAttribute("data-wui-locked") ? (this._announce(
|
|
774
|
+
let t = N(e);
|
|
775
|
+
return this.hasAttribute("readonly") || e.hasAttribute("data-wui-locked") ? (this._announce(j.locked(t)), !1) : e.getAttribute("aria-busy") === "true" ? (this._announce(j.busy), Nt(j.busy, "info"), !1) : !0;
|
|
776
776
|
}
|
|
777
777
|
_check(e, t, n) {
|
|
778
778
|
if (t === n) return {
|
|
@@ -780,7 +780,7 @@ var Mt = (e, t) => {
|
|
|
780
780
|
source: !0,
|
|
781
781
|
reason: null
|
|
782
782
|
};
|
|
783
|
-
let r = this._columnByKey(t), i = this._columnByKey(n), a =
|
|
783
|
+
let r = this._columnByKey(t), i = this._columnByKey(n), a = j.refused(r ? this._titleOf(r) : t, i ? this._titleOf(i) : n), o = i?.getAttribute("data-accept-from");
|
|
784
784
|
if (o != null && !o.split(/\s+/).filter(Boolean).includes(t)) return {
|
|
785
785
|
ok: !1,
|
|
786
786
|
reason: a
|
|
@@ -802,35 +802,35 @@ var Mt = (e, t) => {
|
|
|
802
802
|
};
|
|
803
803
|
}
|
|
804
804
|
_markTargets(e, t) {
|
|
805
|
-
let n =
|
|
805
|
+
let n = N(e), r = /* @__PURE__ */ new Map();
|
|
806
806
|
for (let i of this._columns()) {
|
|
807
|
-
let a =
|
|
807
|
+
let a = M(i), o = this._check(e, t, a);
|
|
808
808
|
r.set(a, o), i.setAttribute("data-wui-drop", o.source ? "source" : o.ok ? "ok" : "refused");
|
|
809
|
-
let s = i.querySelector(
|
|
810
|
-
s && !o.source && (s.textContent = o.ok ?
|
|
809
|
+
let s = i.querySelector(_t);
|
|
810
|
+
s && !o.source && (s.textContent = o.ok ? j.dropHere(n, this._titleOf(i)) : o.reason, s.hidden = !1);
|
|
811
811
|
}
|
|
812
812
|
return r;
|
|
813
813
|
}
|
|
814
814
|
_clearTargets() {
|
|
815
815
|
for (let e of this._columns()) {
|
|
816
816
|
e.removeAttribute("data-wui-drop"), e.removeAttribute("data-wui-over"), e.removeAttribute("data-wui-target");
|
|
817
|
-
let t = e.querySelector(
|
|
817
|
+
let t = e.querySelector(_t);
|
|
818
818
|
t && (t.hidden = !0, t.textContent = "");
|
|
819
819
|
}
|
|
820
820
|
}
|
|
821
821
|
async _commit(e, t, n) {
|
|
822
|
-
let r = this._columnOf(e), i =
|
|
822
|
+
let r = this._columnOf(e), i = M(r), a = this._columnByKey(t), o = N(e);
|
|
823
823
|
if (i === t || !this._canLift(e)) return !1;
|
|
824
824
|
let s = this._check(e, i, t);
|
|
825
|
-
if (!s.ok) return this._announce(s.reason),
|
|
825
|
+
if (!s.ok) return this._announce(s.reason), Nt(s.reason, "info"), !1;
|
|
826
826
|
let c = this._cardsIn(a), l = Number.isInteger(n) ? Math.max(0, Math.min(n, c.length)) : c.length, u = {
|
|
827
|
-
key:
|
|
827
|
+
key: Et(e),
|
|
828
828
|
card: e,
|
|
829
829
|
from: i,
|
|
830
830
|
to: t,
|
|
831
831
|
index: l
|
|
832
832
|
}, d = e.contains(document.activeElement);
|
|
833
|
-
if (this._controlled()) return this._fire("wui:kanban:move", u), this._announce(
|
|
833
|
+
if (this._controlled()) return this._fire("wui:kanban:move", u), this._announce(j.moved(o, this._titleOf(a))), d && this._refocusSoon(u.key), !0;
|
|
834
834
|
if (!this._fire("wui:kanban:move", u, !0)) return !1;
|
|
835
835
|
let f = {
|
|
836
836
|
parent: e.parentNode,
|
|
@@ -841,12 +841,12 @@ var Mt = (e, t) => {
|
|
|
841
841
|
let p = a.getAttribute("data-wui-step");
|
|
842
842
|
if (p) return this._runStep(e, u, f, p, a.getAttribute("data-wui-step-size"));
|
|
843
843
|
let m = this.getAttribute("move-url");
|
|
844
|
-
if (!m) return this._announce(
|
|
844
|
+
if (!m) return this._announce(j.moved(o, this._titleOf(a))), this._fire("wui:kanban:moved", {
|
|
845
845
|
...u,
|
|
846
846
|
result: null
|
|
847
847
|
}), !0;
|
|
848
|
-
this._lock(e, !0), this._announce(
|
|
849
|
-
let h = await
|
|
848
|
+
this._lock(e, !0), this._announce(j.saving(o, this._titleOf(a)));
|
|
849
|
+
let h = await fe(m, {
|
|
850
850
|
method: "POST",
|
|
851
851
|
body: new URLSearchParams({
|
|
852
852
|
card: u.key,
|
|
@@ -858,13 +858,13 @@ var Mt = (e, t) => {
|
|
|
858
858
|
if (this._lock(e, !1), h.kind === "session") return !1;
|
|
859
859
|
if (h.ok) {
|
|
860
860
|
let t = this._applyFragment(h.html) || e;
|
|
861
|
-
return
|
|
861
|
+
return Nt(h.message, "success"), this._announce(j.moved(N(t), this._titleOf(a))), this._fire("wui:kanban:moved", {
|
|
862
862
|
...u,
|
|
863
863
|
card: t,
|
|
864
864
|
result: h
|
|
865
865
|
}), !0;
|
|
866
866
|
}
|
|
867
|
-
return this._rollback(e, f), h.kind !== "aborted" &&
|
|
867
|
+
return this._rollback(e, f), h.kind !== "aborted" && Nt(h.message || j.failed[h.kind] || j.failed.server, "danger"), this._fire("wui:kanban:failed", {
|
|
868
868
|
...u,
|
|
869
869
|
kind: h.kind,
|
|
870
870
|
status: h.status,
|
|
@@ -872,7 +872,7 @@ var Mt = (e, t) => {
|
|
|
872
872
|
}), !1;
|
|
873
873
|
}
|
|
874
874
|
async _runStep(e, t, n, r, i) {
|
|
875
|
-
let a =
|
|
875
|
+
let a = N(e), o = this._columnByKey(t.to), s = new URLSearchParams({
|
|
876
876
|
card: t.key,
|
|
877
877
|
from: t.from,
|
|
878
878
|
to: t.to
|
|
@@ -880,19 +880,19 @@ var Mt = (e, t) => {
|
|
|
880
880
|
this._lock(e, !0);
|
|
881
881
|
let l;
|
|
882
882
|
try {
|
|
883
|
-
l = await (await
|
|
883
|
+
l = await (await it(c, {
|
|
884
884
|
trigger: e,
|
|
885
885
|
size: i || void 0
|
|
886
886
|
})).closed;
|
|
887
887
|
} catch (r) {
|
|
888
|
-
return this._lock(e, !1), this._rollback(e, n), r?.name !== "AbortError" &&
|
|
888
|
+
return this._lock(e, !1), this._rollback(e, n), r?.name !== "AbortError" && Nt(j.failed.server, "danger"), this._fire("wui:kanban:failed", {
|
|
889
889
|
...t,
|
|
890
890
|
kind: "step",
|
|
891
891
|
status: 0,
|
|
892
892
|
message: r?.message ?? null
|
|
893
893
|
}), !1;
|
|
894
894
|
}
|
|
895
|
-
if (l?.status !== "success") return this._lock(e, !1), this._rollback(e, n), this._announce(
|
|
895
|
+
if (l?.status !== "success") return this._lock(e, !1), this._rollback(e, n), this._announce(j.cancelled(a)), this._fire("wui:kanban:failed", {
|
|
896
896
|
...t,
|
|
897
897
|
kind: "dismissed",
|
|
898
898
|
status: 0,
|
|
@@ -900,10 +900,10 @@ var Mt = (e, t) => {
|
|
|
900
900
|
}), !1;
|
|
901
901
|
let u = e, d = this.getAttribute("card-url");
|
|
902
902
|
if (d) {
|
|
903
|
-
let n = await
|
|
903
|
+
let n = await fe(`${d}${d.includes("?") ? "&" : "?"}${new URLSearchParams({ card: t.key })}`);
|
|
904
904
|
n.ok && (u = this._applyFragment(n.html) || e);
|
|
905
905
|
}
|
|
906
|
-
return this._lock(u, !1), this._announce(
|
|
906
|
+
return this._lock(u, !1), this._announce(j.moved(N(u), this._titleOf(o))), this._fire("wui:kanban:moved", {
|
|
907
907
|
...t,
|
|
908
908
|
card: u,
|
|
909
909
|
result: l
|
|
@@ -914,7 +914,7 @@ var Mt = (e, t) => {
|
|
|
914
914
|
}
|
|
915
915
|
_rollback(e, t) {
|
|
916
916
|
let n = e.contains(document.activeElement), r = t.next && t.next.parentNode === t.parent ? t.next : null;
|
|
917
|
-
t.parent.insertBefore(e, r), n && e.focus(), this.refresh(), this._announce(
|
|
917
|
+
t.parent.insertBefore(e, r), n && e.focus(), this.refresh(), this._announce(j.rolledBack(N(e), this._titleOf(t.column)));
|
|
918
918
|
}
|
|
919
919
|
_applyFragment(e) {
|
|
920
920
|
if (!e) return null;
|
|
@@ -922,14 +922,14 @@ var Mt = (e, t) => {
|
|
|
922
922
|
t.innerHTML = e;
|
|
923
923
|
for (let e of t.content.querySelectorAll("script")) console.warn("[@webority/ui-elements] A kanban fragment carried a script tag; it was removed, not run."), e.remove();
|
|
924
924
|
let n = null;
|
|
925
|
-
for (let e of [...t.content.querySelectorAll(
|
|
925
|
+
for (let e of [...t.content.querySelectorAll(pt)]) {
|
|
926
926
|
if (e.closest("template")) continue;
|
|
927
|
-
let t = this._cardByKey(
|
|
927
|
+
let t = this._cardByKey(Et(e));
|
|
928
928
|
if (!t) continue;
|
|
929
929
|
let r = t.contains(document.activeElement);
|
|
930
930
|
t.dispatchEvent(new CustomEvent("wui:teardown", { bubbles: !0 })), t.hidden && (e.hidden = !0), t.replaceWith(e), this._prepareCard(e), r && e.focus(), n ??= e;
|
|
931
931
|
}
|
|
932
|
-
for (let e of t.content.querySelectorAll("template[data-wui-kanban-summary]")) this._columnByKey(e.getAttribute("data-wui-kanban-summary"))?.querySelector(
|
|
932
|
+
for (let e of t.content.querySelectorAll("template[data-wui-kanban-summary]")) this._columnByKey(e.getAttribute("data-wui-kanban-summary"))?.querySelector(ht)?.replaceChildren(e.content.cloneNode(!0));
|
|
933
933
|
return this.refresh(), window.WUI?.refresh?.(), n;
|
|
934
934
|
}
|
|
935
935
|
_refocusSoon(e) {
|
|
@@ -938,8 +938,8 @@ var Mt = (e, t) => {
|
|
|
938
938
|
}
|
|
939
939
|
_pointerDown(e) {
|
|
940
940
|
if (e.button !== 0 || e.isPrimary === !1 || this._drag || this._kbd) return;
|
|
941
|
-
let t = e.target.closest?.(
|
|
942
|
-
if (!t || !this.contains(t) || e.target.closest(
|
|
941
|
+
let t = e.target.closest?.(pt);
|
|
942
|
+
if (!t || !this.contains(t) || e.target.closest(Ct)) return;
|
|
943
943
|
let n = {
|
|
944
944
|
card: t,
|
|
945
945
|
id: e.pointerId,
|
|
@@ -975,7 +975,7 @@ var Mt = (e, t) => {
|
|
|
975
975
|
this._endPointer(!1);
|
|
976
976
|
return;
|
|
977
977
|
}
|
|
978
|
-
let i =
|
|
978
|
+
let i = M(this._columnOf(r)), a = r.getBoundingClientRect(), o = r.cloneNode(!0);
|
|
979
979
|
for (let e of [o, ...o.querySelectorAll("[id]")]) e.removeAttribute("id");
|
|
980
980
|
o.removeAttribute("data-wui-card"), o.removeAttribute("tabindex"), o.setAttribute("aria-hidden", "true"), o.classList.add("wui-kanban-ghost"), o.style.width = `${a.width}px`, this.appendChild(o), r.setAttribute("data-wui-dragging", ""), this.setAttribute("data-wui-dragging", ""), this._drag = {
|
|
981
981
|
card: r,
|
|
@@ -985,7 +985,7 @@ var Mt = (e, t) => {
|
|
|
985
985
|
dy: n - a.top,
|
|
986
986
|
over: null,
|
|
987
987
|
verdicts: this._markTargets(r, i)
|
|
988
|
-
}, this._announce(
|
|
988
|
+
}, this._announce(j.lifted(N(r), this._titleOf(this._columnOf(r)))), document.addEventListener("keydown", this._onDocKeyDown), this._dragTo(t, n);
|
|
989
989
|
}
|
|
990
990
|
_dragTo(e, t) {
|
|
991
991
|
let n = this._drag;
|
|
@@ -1011,10 +1011,10 @@ var Mt = (e, t) => {
|
|
|
1011
1011
|
let n = this._scroller();
|
|
1012
1012
|
if (n) {
|
|
1013
1013
|
let t = n.getBoundingClientRect();
|
|
1014
|
-
t.width > 0 && (e < t.left +
|
|
1014
|
+
t.width > 0 && (e < t.left + wt ? n.scrollBy?.({ left: -16 }) : e > t.right - wt && n.scrollBy?.({ left: Tt }));
|
|
1015
1015
|
}
|
|
1016
1016
|
let r = window.innerHeight || 0;
|
|
1017
|
-
r > 0 && (t <
|
|
1017
|
+
r > 0 && (t < wt ? window.scrollBy?.({ top: -16 }) : t > r - wt && window.scrollBy?.({ top: Tt }));
|
|
1018
1018
|
}
|
|
1019
1019
|
_endPointer(e) {
|
|
1020
1020
|
let t = this._press, n = this._drag;
|
|
@@ -1024,32 +1024,32 @@ var Mt = (e, t) => {
|
|
|
1024
1024
|
}, 0);
|
|
1025
1025
|
let r = n.over;
|
|
1026
1026
|
if (this._clearTargets(), !e || !r) {
|
|
1027
|
-
this._announce(
|
|
1027
|
+
this._announce(j.cancelled(N(n.card)));
|
|
1028
1028
|
return;
|
|
1029
1029
|
}
|
|
1030
|
-
let i =
|
|
1030
|
+
let i = M(r), a = n.verdicts.get(i);
|
|
1031
1031
|
if (a?.source) {
|
|
1032
|
-
this._announce(
|
|
1032
|
+
this._announce(j.cancelled(N(n.card)));
|
|
1033
1033
|
return;
|
|
1034
1034
|
}
|
|
1035
1035
|
if (!a?.ok) {
|
|
1036
|
-
this._announce(a?.reason),
|
|
1036
|
+
this._announce(a?.reason), Nt(a?.reason, "info");
|
|
1037
1037
|
return;
|
|
1038
1038
|
}
|
|
1039
1039
|
this._commit(n.card, i, this._indexAt(r, n.y));
|
|
1040
1040
|
}
|
|
1041
1041
|
_click(e) {
|
|
1042
|
-
if (this._suppressClick && e.target.closest?.(
|
|
1042
|
+
if (this._suppressClick && e.target.closest?.(pt)) {
|
|
1043
1043
|
e.preventDefault(), e.stopPropagation(), this._suppressClick = !1;
|
|
1044
1044
|
return;
|
|
1045
1045
|
}
|
|
1046
|
-
let t = e.target.closest?.(
|
|
1046
|
+
let t = e.target.closest?.(St);
|
|
1047
1047
|
if (t && this.contains(t)) {
|
|
1048
|
-
let e = t.closest(
|
|
1048
|
+
let e = t.closest(dt);
|
|
1049
1049
|
e && this._setCollapsed(e, !e.hasAttribute("data-collapsed"), !0);
|
|
1050
1050
|
return;
|
|
1051
1051
|
}
|
|
1052
|
-
let n = e.target.closest?.(
|
|
1052
|
+
let n = e.target.closest?.(bt);
|
|
1053
1053
|
n && this.contains(n) && this._showColumn(n.getAttribute("data-wui-switch"));
|
|
1054
1054
|
}
|
|
1055
1055
|
_keyDown(e) {
|
|
@@ -1058,19 +1058,19 @@ var Mt = (e, t) => {
|
|
|
1058
1058
|
return;
|
|
1059
1059
|
}
|
|
1060
1060
|
let t = e.target;
|
|
1061
|
-
if (!t.matches?.(
|
|
1061
|
+
if (!t.matches?.(pt) || !this.contains(t)) return;
|
|
1062
1062
|
let n = this._columnOf(t);
|
|
1063
1063
|
switch (e.key) {
|
|
1064
1064
|
case " ":
|
|
1065
1065
|
case "Spacebar": {
|
|
1066
1066
|
if (e.preventDefault(), !this._canLift(t)) return;
|
|
1067
|
-
let r =
|
|
1067
|
+
let r = M(n), i = this._columns();
|
|
1068
1068
|
this._kbd = {
|
|
1069
1069
|
card: t,
|
|
1070
1070
|
from: r,
|
|
1071
1071
|
target: i.indexOf(n),
|
|
1072
1072
|
verdicts: this._markTargets(t, r)
|
|
1073
|
-
}, t.setAttribute("data-wui-lifted", ""), this.setAttribute("data-wui-dragging", ""), n.setAttribute("data-wui-target", ""), this._announce(
|
|
1073
|
+
}, t.setAttribute("data-wui-lifted", ""), this.setAttribute("data-wui-dragging", ""), n.setAttribute("data-wui-target", ""), this._announce(j.lifted(N(t), this._titleOf(n)));
|
|
1074
1074
|
return;
|
|
1075
1075
|
}
|
|
1076
1076
|
case "ArrowDown":
|
|
@@ -1104,26 +1104,26 @@ var Mt = (e, t) => {
|
|
|
1104
1104
|
if (r < 0 || r >= n.length) return;
|
|
1105
1105
|
n[t.target]?.removeAttribute("data-wui-target"), t.target = r;
|
|
1106
1106
|
let i = n[r];
|
|
1107
|
-
i.setAttribute("data-wui-target", ""), this._showColumn(
|
|
1108
|
-
let a = t.verdicts.get(
|
|
1109
|
-
this._announce(a.source ?
|
|
1107
|
+
i.setAttribute("data-wui-target", ""), this._showColumn(M(i), !1);
|
|
1108
|
+
let a = t.verdicts.get(M(i)), o = this._titleOf(i);
|
|
1109
|
+
this._announce(a.source ? j.overSource(o) : a.ok ? j.over(o, this._visibleCardsIn(i).length) : j.overRefused(o, a.reason));
|
|
1110
1110
|
return;
|
|
1111
1111
|
}
|
|
1112
1112
|
case " ":
|
|
1113
1113
|
case "Spacebar":
|
|
1114
1114
|
case "Enter": {
|
|
1115
1115
|
e.preventDefault();
|
|
1116
|
-
let r = n[t.target], i =
|
|
1116
|
+
let r = n[t.target], i = M(r), a = t.verdicts.get(i);
|
|
1117
1117
|
if (!a.source && !a.ok) {
|
|
1118
1118
|
this._announce(a.reason);
|
|
1119
1119
|
return;
|
|
1120
1120
|
}
|
|
1121
|
-
this._endKeyboard(), a.source ? this._announce(
|
|
1121
|
+
this._endKeyboard(), a.source ? this._announce(j.cancelled(N(t.card))) : this._commit(t.card, i);
|
|
1122
1122
|
return;
|
|
1123
1123
|
}
|
|
1124
1124
|
case "Escape":
|
|
1125
1125
|
case "Tab":
|
|
1126
|
-
e.key === "Escape" && e.preventDefault(), this._endKeyboard(), this._showColumn(t.from, !1), this._announce(
|
|
1126
|
+
e.key === "Escape" && e.preventDefault(), this._endKeyboard(), this._showColumn(t.from, !1), this._announce(j.cancelled(N(t.card)));
|
|
1127
1127
|
return;
|
|
1128
1128
|
default:
|
|
1129
1129
|
}
|
|
@@ -1133,18 +1133,18 @@ var Mt = (e, t) => {
|
|
|
1133
1133
|
this._kbd = null, e && (e.card.removeAttribute("data-wui-lifted"), this.removeAttribute("data-wui-dragging"), this._clearTargets());
|
|
1134
1134
|
}
|
|
1135
1135
|
_restoreCollapsed() {
|
|
1136
|
-
let e =
|
|
1136
|
+
let e = kt(this.getAttribute("board-id"));
|
|
1137
1137
|
for (let t of this._columns()) {
|
|
1138
|
-
let n =
|
|
1138
|
+
let n = M(t);
|
|
1139
1139
|
t.hasAttribute("data-collapsible") && Object.hasOwn(e, n) && this._setCollapsed(t, e[n], !1);
|
|
1140
1140
|
}
|
|
1141
1141
|
}
|
|
1142
1142
|
_setCollapsed(e, t, n) {
|
|
1143
|
-
let r =
|
|
1143
|
+
let r = M(e);
|
|
1144
1144
|
e.toggleAttribute("data-collapsed", t);
|
|
1145
1145
|
let i = this._titleOf(e);
|
|
1146
|
-
for (let n of e.querySelectorAll(
|
|
1147
|
-
n && (
|
|
1146
|
+
for (let n of e.querySelectorAll(St)) n.setAttribute("aria-expanded", t ? "false" : "true"), n.setAttribute("aria-label", t ? j.expand(i) : j.collapse(i));
|
|
1147
|
+
n && (At(this.getAttribute("board-id"), r, t), this._fire("wui:kanban:collapse", {
|
|
1148
1148
|
column: r,
|
|
1149
1149
|
collapsed: t
|
|
1150
1150
|
}));
|
|
@@ -1153,7 +1153,7 @@ var Mt = (e, t) => {
|
|
|
1153
1153
|
return typeof matchMedia == "function" && matchMedia("(max-width: 767.98px)").matches;
|
|
1154
1154
|
}
|
|
1155
1155
|
_showColumn(e, t = !0) {
|
|
1156
|
-
for (let t of this.querySelectorAll(
|
|
1156
|
+
for (let t of this.querySelectorAll(bt)) t.getAttribute("data-wui-switch") === e ? t.setAttribute("aria-current", "true") : t.removeAttribute("aria-current");
|
|
1157
1157
|
let n = this._columnByKey(e), r = this._scroller();
|
|
1158
1158
|
if (!n || !r || !t && !this._isPhone()) return;
|
|
1159
1159
|
let i = typeof matchMedia == "function" && matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
@@ -1166,22 +1166,22 @@ var Mt = (e, t) => {
|
|
|
1166
1166
|
let e = this._scroller();
|
|
1167
1167
|
if (!e || !this._isPhone()) return;
|
|
1168
1168
|
let t = e.clientWidth || 1, n = this._columns()[Math.round(e.scrollLeft / t)];
|
|
1169
|
-
if (n) for (let e of this.querySelectorAll(
|
|
1169
|
+
if (n) for (let e of this.querySelectorAll(bt)) e.getAttribute("data-wui-switch") === M(n) ? e.setAttribute("aria-current", "true") : e.removeAttribute("aria-current");
|
|
1170
1170
|
}
|
|
1171
|
-
},
|
|
1171
|
+
}, Ft = {
|
|
1172
1172
|
delete: "data:image/webp;base64,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",
|
|
1173
1173
|
info: "data:image/webp;base64,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",
|
|
1174
1174
|
primary: "data:image/webp;base64,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",
|
|
1175
1175
|
success: "data:image/webp;base64,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",
|
|
1176
1176
|
warning: "data:image/webp;base64,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"
|
|
1177
|
-
},
|
|
1177
|
+
}, It = { error: "<rect width=\"174\" height=\"174\" rx=\"87\" fill=\"var(--wui-danger-5)\"/>\n<rect x=\"24\" y=\"24\" width=\"126\" height=\"126\" rx=\"63\" stroke=\"var(--wui-danger-20)\" stroke-width=\"16\"/>\n<g clip-path=\"url(#wui_error_clip0)\">\n<rect x=\"32\" y=\"32\" width=\"110\" height=\"110\" rx=\"55\" fill=\"var(--wui-danger)\"/>\n<rect x=\"110.758\" y=\"62\" width=\"75.5044\" height=\"69.9535\" transform=\"rotate(45 110.758 62)\" fill=\"var(--wui-danger-active)\"/>\n<g clip-path=\"url(#wui_error_clip1)\">\n<path d=\"M95.9285 87.0037L112.943 69.9887C114.823 68.1087 114.823 65.0608 112.943 63.1838L110.675 60.9155C108.795 59.0349 105.747 59.0349 103.87 60.9155L86.8552 77.9298L69.8403 60.9119C67.9603 59.032 64.9124 59.032 63.0353 60.9119L60.7635 63.1802C58.8835 65.0608 58.8835 68.1087 60.7635 69.9858L77.7814 87.0037L60.767 104.018C58.8865 105.899 58.8865 108.947 60.767 110.824L63.0353 113.092C64.9153 114.972 67.9632 114.972 69.8403 113.092L86.8552 96.0769L103.87 113.092C105.75 114.972 108.798 114.972 110.675 113.092L112.943 110.824C114.823 108.943 114.823 105.895 112.943 104.018L95.9285 87.0037Z\" fill=\"white\"/>\n</g>\n</g>\n<defs><clipPath id=\"wui_error_clip0\"><rect x=\"32\" y=\"32\" width=\"110\" height=\"110\" rx=\"55\" fill=\"white\"/></clipPath><clipPath id=\"wui_error_clip1\"><rect width=\"55\" height=\"55\" fill=\"white\" transform=\"translate(59.3535 59.502)\"/></clipPath></defs>" }, Lt = [
|
|
1178
1178
|
"success",
|
|
1179
1179
|
"error",
|
|
1180
1180
|
"warning",
|
|
1181
1181
|
"info",
|
|
1182
1182
|
"delete",
|
|
1183
1183
|
"primary"
|
|
1184
|
-
],
|
|
1184
|
+
], Rt = class extends e {
|
|
1185
1185
|
static get observedAttributes() {
|
|
1186
1186
|
return ["tone", "size"];
|
|
1187
1187
|
}
|
|
@@ -1192,29 +1192,29 @@ var Mt = (e, t) => {
|
|
|
1192
1192
|
this.isConnected && this.render();
|
|
1193
1193
|
}
|
|
1194
1194
|
render() {
|
|
1195
|
-
let e = this.getAttribute("tone"), t = Number.parseInt(this.getAttribute("size"), 10) || 72, n =
|
|
1195
|
+
let e = this.getAttribute("tone"), t = Number.parseInt(this.getAttribute("size"), 10) || 72, n = It[e];
|
|
1196
1196
|
if (n) {
|
|
1197
1197
|
this.innerHTML = `<svg width="${t}" height="${t}" viewBox="0 0 174 174" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">${n}</svg>`;
|
|
1198
1198
|
return;
|
|
1199
1199
|
}
|
|
1200
|
-
let r =
|
|
1200
|
+
let r = Ft[e] || Ft.info;
|
|
1201
1201
|
this.innerHTML = `<img src="${r}" width="${t}" height="${t}" alt="" aria-hidden="true" draggable="false" />`;
|
|
1202
1202
|
}
|
|
1203
|
-
},
|
|
1204
|
-
function
|
|
1203
|
+
}, P = 4, zt = 300, Bt = 400;
|
|
1204
|
+
function F(e, t, n = {}) {
|
|
1205
1205
|
if (!e || !t) return;
|
|
1206
1206
|
let r = e.getBoundingClientRect(), i = n.clampHeight ? t.scrollTop : 0;
|
|
1207
1207
|
n.clampHeight && (t.style.maxHeight = "");
|
|
1208
|
-
let a = t.offsetHeight, o = window.innerHeight - r.bottom, s = o < a +
|
|
1209
|
-
if (t.classList.toggle("drop-up", s), t.style.position = "fixed", t.style.top = s ? `${Math.max(
|
|
1210
|
-
let e = s ? r.top -
|
|
1208
|
+
let a = t.offsetHeight, o = window.innerHeight - r.bottom, s = o < a + P && r.top > o;
|
|
1209
|
+
if (t.classList.toggle("drop-up", s), t.style.position = "fixed", t.style.top = s ? `${Math.max(P, r.top - a - P)}px` : `${r.bottom + P}px`, n.clampHeight) {
|
|
1210
|
+
let e = s ? r.top - P * 2 : window.innerHeight - r.bottom - P * 2;
|
|
1211
1211
|
e < a && (t.style.maxHeight = `${Math.max(e, 0)}px`), t.scrollTop = i;
|
|
1212
1212
|
}
|
|
1213
|
-
n.matchWidth && (r.width >=
|
|
1214
|
-
let c = t.offsetWidth, l = Math.min(r.left, window.innerWidth - c -
|
|
1215
|
-
t.style.left = `${Math.max(
|
|
1213
|
+
n.matchWidth && (r.width >= zt ? (t.style.minWidth = `${r.width}px`, t.style.width = `${r.width}px`, t.style.maxWidth = `${r.width}px`) : (t.style.minWidth = `${r.width}px`, t.style.width = "max-content", t.style.maxWidth = `${Math.min(Bt, window.innerWidth - P * 2)}px`));
|
|
1214
|
+
let c = t.offsetWidth, l = Math.min(r.left, window.innerWidth - c - P);
|
|
1215
|
+
t.style.left = `${Math.max(P, l)}px`;
|
|
1216
1216
|
}
|
|
1217
|
-
function
|
|
1217
|
+
function I(e, t) {
|
|
1218
1218
|
L(e), e._reanchor = t, e._reanchorScroll = (n) => {
|
|
1219
1219
|
n.target instanceof Node && typeof e.contains == "function" && e.contains(n.target) || t();
|
|
1220
1220
|
}, window.addEventListener("resize", e._reanchor), window.addEventListener("scroll", e._reanchorScroll, !0);
|
|
@@ -1685,7 +1685,7 @@ var Kt = Symbol("wui.trustedHtml"), V = (e) => String(e ?? "").replace(/&/g, "&a
|
|
|
1685
1685
|
this._teardown();
|
|
1686
1686
|
let e = this._refs();
|
|
1687
1687
|
if (!e.control || !e.input) return;
|
|
1688
|
-
let t = () =>
|
|
1688
|
+
let t = () => F(e.control, e.menu, { matchWidth: !0 }), n = () => this._optionEls().filter((e) => !e.hidden), r = (t) => {
|
|
1689
1689
|
let r = n();
|
|
1690
1690
|
this._active = t;
|
|
1691
1691
|
for (let e of this._optionEls()) e.classList.remove("is-active");
|
|
@@ -1763,7 +1763,7 @@ var Kt = Symbol("wui.trustedHtml"), V = (e) => String(e ?? "").replace(/&/g, "&a
|
|
|
1763
1763
|
}), this._bindGlobal = () => {
|
|
1764
1764
|
this._teardown(), this._onDocClick = (e) => {
|
|
1765
1765
|
i() && !this.contains(e.target) && o();
|
|
1766
|
-
}, document.addEventListener("click", this._onDocClick),
|
|
1766
|
+
}, document.addEventListener("click", this._onDocClick), I(this, () => {
|
|
1767
1767
|
i() && t();
|
|
1768
1768
|
});
|
|
1769
1769
|
}, this._bindGlobal();
|
|
@@ -2398,7 +2398,7 @@ var wn = (e) => e instanceof Element ? e : e?.parentElement ?? null, Tn = class
|
|
|
2398
2398
|
let e = document.activeElement;
|
|
2399
2399
|
this._returnFocus = e && e !== document.body && !this._inPanel(e) ? e : null;
|
|
2400
2400
|
}
|
|
2401
|
-
this._region = n, this._origin = r, xn = null, a.setAttribute(gn, ""), bn = this,
|
|
2401
|
+
this._region = n, this._origin = r, xn = null, a.setAttribute(gn, ""), bn = this, F({ getBoundingClientRect: () => ({
|
|
2402
2402
|
left: e,
|
|
2403
2403
|
right: e,
|
|
2404
2404
|
top: t,
|
|
@@ -3906,8 +3906,8 @@ var wn = (e) => e instanceof Element ? e : e?.parentElement ?? null, Tn = class
|
|
|
3906
3906
|
let t = () => {
|
|
3907
3907
|
if (this.hasAttribute("compact")) {
|
|
3908
3908
|
let t = e.control.getBoundingClientRect();
|
|
3909
|
-
e.menu.style.width = "max-content", e.menu.style.minWidth = `${t.width}px`, e.menu.style.maxWidth = "280px",
|
|
3910
|
-
} else
|
|
3909
|
+
e.menu.style.width = "max-content", e.menu.style.minWidth = `${t.width}px`, e.menu.style.maxWidth = "280px", F(e.control, e.menu);
|
|
3910
|
+
} else F(e.control, e.menu, { matchWidth: !0 });
|
|
3911
3911
|
}, n = (t) => {
|
|
3912
3912
|
let n = this._visible();
|
|
3913
3913
|
this._active = t;
|
|
@@ -3958,7 +3958,7 @@ var wn = (e) => e instanceof Element ? e : e?.parentElement ?? null, Tn = class
|
|
|
3958
3958
|
}), e.menu.addEventListener("keydown", this._navHandler.handler), this._bindGlobal = () => {
|
|
3959
3959
|
this._teardown(), this._onDocClick = (e) => {
|
|
3960
3960
|
i() && !this.contains(e.target) && o();
|
|
3961
|
-
}, document.addEventListener("click", this._onDocClick),
|
|
3961
|
+
}, document.addEventListener("click", this._onDocClick), I(this, () => {
|
|
3962
3962
|
i() && t();
|
|
3963
3963
|
});
|
|
3964
3964
|
}, this._bindGlobal();
|
|
@@ -4204,7 +4204,7 @@ var wn = (e) => e instanceof Element ? e : e?.parentElement ?? null, Tn = class
|
|
|
4204
4204
|
t && e.contains(document.activeElement) && t.focus();
|
|
4205
4205
|
}
|
|
4206
4206
|
_position(e, t) {
|
|
4207
|
-
|
|
4207
|
+
F(e, t, { clampHeight: !0 });
|
|
4208
4208
|
}
|
|
4209
4209
|
_setFocus(e, t, n, r) {
|
|
4210
4210
|
let { y: i, m: a } = K(e, t);
|
|
@@ -4333,7 +4333,7 @@ var wn = (e) => e instanceof Element ? e : e?.parentElement ?? null, Tn = class
|
|
|
4333
4333
|
this._popClick = !1, r() && !t && !this.contains(e.target) && this._close();
|
|
4334
4334
|
}, document.addEventListener("click", this._onDocClick), this._onDocKey = (e) => {
|
|
4335
4335
|
r() && e.key === "Escape" && this._close();
|
|
4336
|
-
}, document.addEventListener("keydown", this._onDocKey),
|
|
4336
|
+
}, document.addEventListener("keydown", this._onDocKey), I(this, () => {
|
|
4337
4337
|
r() && this._position(e, t);
|
|
4338
4338
|
});
|
|
4339
4339
|
}, this._bindGlobal(), this._syncFormValue();
|
|
@@ -4506,7 +4506,7 @@ var wn = (e) => e instanceof Element ? e : e?.parentElement ?? null, Tn = class
|
|
|
4506
4506
|
i && (i.textContent = this._start ? this._end ? `${Ln(this._start)} to ${Ln(this._end)}` : "Pick an end date" : "Pick a start date");
|
|
4507
4507
|
}
|
|
4508
4508
|
_position(e, t) {
|
|
4509
|
-
|
|
4509
|
+
F(e, t, { clampHeight: !0 });
|
|
4510
4510
|
}
|
|
4511
4511
|
_pick(e) {
|
|
4512
4512
|
if (!this._start || this._start && this._end) {
|
|
@@ -4557,7 +4557,7 @@ var wn = (e) => e instanceof Element ? e : e?.parentElement ?? null, Tn = class
|
|
|
4557
4557
|
this._popClick = !1, r() && !t && !this.contains(e.target) && this._close();
|
|
4558
4558
|
}, document.addEventListener("click", this._onDocClick), this._onDocKey = (e) => {
|
|
4559
4559
|
r() && e.key === "Escape" && this._close();
|
|
4560
|
-
}, document.addEventListener("keydown", this._onDocKey),
|
|
4560
|
+
}, document.addEventListener("keydown", this._onDocKey), I(this, () => {
|
|
4561
4561
|
r() && this._position(e, t);
|
|
4562
4562
|
});
|
|
4563
4563
|
}, this._bindGlobal(), this._syncMirrors();
|
|
@@ -5207,7 +5207,7 @@ var xr = (e, t) => t.some((t) => String(e ?? "").includes(t)), Sr = class extend
|
|
|
5207
5207
|
this._teardown();
|
|
5208
5208
|
let e = this.querySelector(".search-select-control"), t = this.querySelector(".search-select-menu"), n = this.querySelector(".search-select-input"), r = this.querySelector(".search-select-clear"), i = this.querySelector(".search-select-options"), a = this._allowCustom, o = a ? this.querySelector("[data-input]") : null, s = o || e;
|
|
5209
5209
|
if (!e || !t) return;
|
|
5210
|
-
let c = () => this.hasAttribute("disabled"), l = () =>
|
|
5210
|
+
let c = () => this.hasAttribute("disabled"), l = () => F(e, t, { matchWidth: !0 }), u = () => [...this.querySelectorAll(".search-select-option")], d = () => u().filter((e) => !e.hidden), f = (e) => {
|
|
5211
5211
|
let t = d();
|
|
5212
5212
|
this._active = e;
|
|
5213
5213
|
for (let e of u()) e.classList.remove("is-active");
|
|
@@ -5287,7 +5287,7 @@ var xr = (e, t) => t.some((t) => String(e ?? "").includes(t)), Sr = class extend
|
|
|
5287
5287
|
this._navHandler.clearTypeahead(), _(), o || e.focus();
|
|
5288
5288
|
}
|
|
5289
5289
|
});
|
|
5290
|
-
let
|
|
5290
|
+
let ee = (e) => {
|
|
5291
5291
|
let t = o || n;
|
|
5292
5292
|
if (e.key === "Backspace" && !t?.value && this._values.length) {
|
|
5293
5293
|
b(this._values[this._values.length - 1]);
|
|
@@ -5295,7 +5295,7 @@ var xr = (e, t) => t.some((t) => String(e ?? "").includes(t)), Sr = class extend
|
|
|
5295
5295
|
}
|
|
5296
5296
|
this._navHandler.handler(e);
|
|
5297
5297
|
};
|
|
5298
|
-
if (n?.addEventListener("keydown",
|
|
5298
|
+
if (n?.addEventListener("keydown", ee), r?.addEventListener("click", () => {
|
|
5299
5299
|
n.value = "", this._renderOptions(""), r.hidden = !0, n.focus();
|
|
5300
5300
|
}), o) {
|
|
5301
5301
|
let t = (e) => {
|
|
@@ -5313,7 +5313,7 @@ var xr = (e, t) => t.some((t) => String(e ?? "").includes(t)), Sr = class extend
|
|
|
5313
5313
|
this._navHandler.handler(e);
|
|
5314
5314
|
return;
|
|
5315
5315
|
}
|
|
5316
|
-
(e.key === "ArrowDown" || e.key === "ArrowUp") && !m() && g(),
|
|
5316
|
+
(e.key === "ArrowDown" || e.key === "ArrowUp") && !m() && g(), ee(e);
|
|
5317
5317
|
}), o.addEventListener("paste", (e) => {
|
|
5318
5318
|
let t = e.clipboardData?.getData("text/plain") ?? "";
|
|
5319
5319
|
xr(t, Cr) && (e.preventDefault(), x(`${o.value}${t}`));
|
|
@@ -5322,7 +5322,7 @@ var xr = (e, t) => t.some((t) => String(e ?? "").includes(t)), Sr = class extend
|
|
|
5322
5322
|
});
|
|
5323
5323
|
} else e.addEventListener("keydown", (e) => {
|
|
5324
5324
|
if (m()) {
|
|
5325
|
-
|
|
5325
|
+
ee(e);
|
|
5326
5326
|
return;
|
|
5327
5327
|
}
|
|
5328
5328
|
(e.key === "ArrowDown" || e.key === "Enter" || e.key === " ") && (e.preventDefault(), g());
|
|
@@ -5330,7 +5330,7 @@ var xr = (e, t) => t.some((t) => String(e ?? "").includes(t)), Sr = class extend
|
|
|
5330
5330
|
this._bindGlobal = () => {
|
|
5331
5331
|
this._teardown(), !this._ro && typeof ResizeObserver < "u" && (this._ro = new ResizeObserver(() => this._collapseChips()), this._ro.observe(this)), this._onDocClick = (e) => {
|
|
5332
5332
|
m() && !this.contains(e.target) && _();
|
|
5333
|
-
}, document.addEventListener("click", this._onDocClick),
|
|
5333
|
+
}, document.addEventListener("click", this._onDocClick), I(this, () => {
|
|
5334
5334
|
m() && l();
|
|
5335
5335
|
});
|
|
5336
5336
|
}, this._bindGlobal();
|
|
@@ -6103,7 +6103,7 @@ var Qr = class extends e {
|
|
|
6103
6103
|
this._teardown();
|
|
6104
6104
|
let e = this.querySelector(".country-toggle"), t = this.querySelector(".phone-input-wrap"), n = this.querySelector(".country-dropdown-menu"), r = this.querySelector(".dropdown-search-input"), i = this.querySelector(".country-list-scroll"), a = this.querySelector(".country-empty"), o = this.querySelector("input[type=tel]"), s = this.querySelector("[data-flag]"), c = this.querySelector("[data-dial]");
|
|
6105
6105
|
if (!e || !n) return;
|
|
6106
|
-
let l = () => !n.hidden, u = () =>
|
|
6106
|
+
let l = () => !n.hidden, u = () => F(t || e, n), d = (e) => {
|
|
6107
6107
|
let t = this._visibleItems();
|
|
6108
6108
|
this._active = e;
|
|
6109
6109
|
for (let e of this._itemEls()) e.classList.remove("is-active");
|
|
@@ -6188,7 +6188,7 @@ var Qr = class extends e {
|
|
|
6188
6188
|
}), this._bindGlobal = () => {
|
|
6189
6189
|
this._teardownGlobals?.(), this._onDocClick = (e) => {
|
|
6190
6190
|
l() && !this.contains(e.target) && p();
|
|
6191
|
-
}, document.addEventListener("click", this._onDocClick),
|
|
6191
|
+
}, document.addEventListener("click", this._onDocClick), I(this, () => {
|
|
6192
6192
|
l() && u();
|
|
6193
6193
|
});
|
|
6194
6194
|
}, this._teardownGlobals = () => {
|
|
@@ -7139,7 +7139,7 @@ var pi = class extends e {
|
|
|
7139
7139
|
}, this._format()), this._typedError = "", this._syncInvalid(), this._syncColumns();
|
|
7140
7140
|
}
|
|
7141
7141
|
_position() {
|
|
7142
|
-
|
|
7142
|
+
F(this.querySelector(".wui-timepicker-field"), this._pop());
|
|
7143
7143
|
}
|
|
7144
7144
|
_onColumnKey(e) {
|
|
7145
7145
|
let t = e.target.closest?.(".timepicker-option"), n = t?.closest(".wui-timepicker-col");
|
|
@@ -7234,7 +7234,7 @@ var pi = class extends e {
|
|
|
7234
7234
|
this._popClick = !1, i() && !t && !this.contains(e.target) && this._close({ commit: !0 });
|
|
7235
7235
|
}, document.addEventListener("click", this._onDocClick), this._onDocKey = (e) => {
|
|
7236
7236
|
i() && e.key === "Escape" && this._close({ commit: !1 });
|
|
7237
|
-
}, document.addEventListener("keydown", this._onDocKey),
|
|
7237
|
+
}, document.addEventListener("keydown", this._onDocKey), I(this, () => {
|
|
7238
7238
|
i() && this._position();
|
|
7239
7239
|
});
|
|
7240
7240
|
}, this._bindGlobal();
|
|
@@ -7245,11 +7245,207 @@ var pi = class extends e {
|
|
|
7245
7245
|
disconnectedCallback() {
|
|
7246
7246
|
this._teardown();
|
|
7247
7247
|
}
|
|
7248
|
-
}, Ci =
|
|
7248
|
+
}, Ci = "wui-tour-step", wi = "wui-tour-seen:", Ti = {
|
|
7249
|
+
back: "Back",
|
|
7250
|
+
next: "Next",
|
|
7251
|
+
skip: "Skip",
|
|
7252
|
+
done: "Done"
|
|
7253
|
+
}, Ei = {
|
|
7254
|
+
back: "back-label",
|
|
7255
|
+
next: "next-label",
|
|
7256
|
+
skip: "skip-label",
|
|
7257
|
+
done: "done-label"
|
|
7258
|
+
}, Di = 4, Oi = 0;
|
|
7259
|
+
function ki(e = wi, t = globalThis.localStorage) {
|
|
7260
|
+
return {
|
|
7261
|
+
isSeen: async (n) => t.getItem(e + n) === "1",
|
|
7262
|
+
markSeen: async (n) => {
|
|
7263
|
+
t.setItem(e + n, "1");
|
|
7264
|
+
}
|
|
7265
|
+
};
|
|
7266
|
+
}
|
|
7267
|
+
var Ai = (e) => !e?.isConnected || getComputedStyle(e).visibility === "hidden" ? !1 : e.getClientRects().length > 0, ji = class extends e {
|
|
7268
|
+
static get observedAttributes() {
|
|
7269
|
+
return ["open"];
|
|
7270
|
+
}
|
|
7271
|
+
constructor() {
|
|
7272
|
+
super(), this.seenStore = null, this.onBeforeStep = null, this._run = 0, this._running = !1, this._layer = null;
|
|
7273
|
+
}
|
|
7274
|
+
connectedCallback() {
|
|
7275
|
+
this.hasAttribute("open") && this.start();
|
|
7276
|
+
}
|
|
7277
|
+
disconnectedCallback() {
|
|
7278
|
+
this.stop();
|
|
7279
|
+
}
|
|
7280
|
+
attributeChangedCallback(e, t, n) {
|
|
7281
|
+
e !== "open" || !this.isConnected || (n === null ? this.stop() : this.start());
|
|
7282
|
+
}
|
|
7283
|
+
get tourId() {
|
|
7284
|
+
return this.getAttribute("tour-id") || "";
|
|
7285
|
+
}
|
|
7286
|
+
_stepList() {
|
|
7287
|
+
return Array.from(this.querySelectorAll(`:scope > ${Ci}`), (e) => ({
|
|
7288
|
+
target: e.getAttribute("target") || "",
|
|
7289
|
+
title: e.getAttribute("title") || void 0,
|
|
7290
|
+
description: e.textContent.trim()
|
|
7291
|
+
}));
|
|
7292
|
+
}
|
|
7293
|
+
_store() {
|
|
7294
|
+
return this.seenStore ? this.seenStore : this.getAttribute("seen-store") === "local" ? ki() : globalThis.window?.WUI?.tour?.seenStore || null;
|
|
7295
|
+
}
|
|
7296
|
+
_label(e) {
|
|
7297
|
+
return this.getAttribute(Ei[e]) || Ti[e];
|
|
7298
|
+
}
|
|
7299
|
+
async start() {
|
|
7300
|
+
if (this._running) return;
|
|
7301
|
+
this._running = !0;
|
|
7302
|
+
let e = ++this._run;
|
|
7303
|
+
this.hasAttribute("open") || this.setAttribute("open", "");
|
|
7304
|
+
try {
|
|
7305
|
+
await this._start(e);
|
|
7306
|
+
} catch (t) {
|
|
7307
|
+
throw e === this._run && (this._running = !1), t;
|
|
7308
|
+
}
|
|
7309
|
+
}
|
|
7310
|
+
async _start(e) {
|
|
7311
|
+
this._steps = this._stepList();
|
|
7312
|
+
let t = this._store();
|
|
7313
|
+
if (t && !this.tourId) throw Error("<wui-tour> needs a tour-id to use a seen store.");
|
|
7314
|
+
if (t && await t.isSeen(this.tourId)) {
|
|
7315
|
+
e === this._run && this._finish("alreadySeen");
|
|
7316
|
+
return;
|
|
7317
|
+
}
|
|
7318
|
+
this._returnFocus = document.activeElement;
|
|
7319
|
+
let n = await this._locate(0, 1, e);
|
|
7320
|
+
if (e === this._run) {
|
|
7321
|
+
if (!n) {
|
|
7322
|
+
this._finish("noTargets");
|
|
7323
|
+
return;
|
|
7324
|
+
}
|
|
7325
|
+
this._firstIndex = n.index, this._build(), this._show(n);
|
|
7326
|
+
}
|
|
7327
|
+
}
|
|
7328
|
+
stop() {
|
|
7329
|
+
this._running && (this._run++, this._teardown(), this._running = !1, this.hasAttribute("open") && this.removeAttribute("open"));
|
|
7330
|
+
}
|
|
7331
|
+
async _locate(e, t, n) {
|
|
7332
|
+
let r = this._steps;
|
|
7333
|
+
for (let i = e; i >= 0 && i < r.length; i += t) {
|
|
7334
|
+
let e = r[i];
|
|
7335
|
+
if (await this._beforeStep(e, i), n !== this._run) return null;
|
|
7336
|
+
let t = document.querySelector(e.target);
|
|
7337
|
+
if (Ai(t)) return {
|
|
7338
|
+
index: i,
|
|
7339
|
+
target: t
|
|
7340
|
+
};
|
|
7341
|
+
}
|
|
7342
|
+
return null;
|
|
7343
|
+
}
|
|
7344
|
+
async _beforeStep(e, t) {
|
|
7345
|
+
let n = [];
|
|
7346
|
+
this.dispatchEvent(new CustomEvent("wui-tour:beforestep", {
|
|
7347
|
+
bubbles: !0,
|
|
7348
|
+
detail: {
|
|
7349
|
+
step: e,
|
|
7350
|
+
index: t,
|
|
7351
|
+
wait: (e) => n.push(e)
|
|
7352
|
+
}
|
|
7353
|
+
})), await Promise.all(n), typeof this.onBeforeStep == "function" && await this.onBeforeStep(e, t);
|
|
7354
|
+
}
|
|
7355
|
+
_build() {
|
|
7356
|
+
let e = `wui-tour-${++Oi}`, t = document.createElement("div");
|
|
7357
|
+
t.className = "wui-tour-layer", t.innerHTML = `
|
|
7358
|
+
<div class="wui-tour-spot" aria-hidden="true"></div>
|
|
7359
|
+
<div class="wui-tour-card" role="dialog" aria-modal="true" tabindex="-1" aria-labelledby="${e}-title" aria-describedby="${e}-text">
|
|
7360
|
+
<p class="wui-tour-position"></p>
|
|
7361
|
+
<h2 class="wui-tour-title" id="${e}-title"></h2>
|
|
7362
|
+
<p class="wui-tour-text" id="${e}-text"></p>
|
|
7363
|
+
<div class="wui-tour-actions">
|
|
7364
|
+
<button type="button" class="btn btn-sm btn-link wui-tour-skip"></button>
|
|
7365
|
+
<div class="wui-tour-nav">
|
|
7366
|
+
<button type="button" class="btn btn-sm btn-outline-secondary wui-tour-back"></button>
|
|
7367
|
+
<button type="button" class="btn btn-sm btn-primary wui-tour-next"></button>
|
|
7368
|
+
</div>
|
|
7369
|
+
</div>
|
|
7370
|
+
</div>
|
|
7371
|
+
<div class="visually-hidden" role="status" aria-live="polite"></div>`, document.body.appendChild(t), this._layer = t, this._spot = t.querySelector(".wui-tour-spot"), this._card = t.querySelector(".wui-tour-card"), this._live = t.querySelector("[role=status]"), this._card.querySelector(".wui-tour-skip").addEventListener("click", () => this._close("skipped")), this._card.querySelector(".wui-tour-back").addEventListener("click", () => this._move(-1)), this._card.querySelector(".wui-tour-next").addEventListener("click", () => this._move(1)), this._onKey = (e) => this._key(e), this._onFocusIn = (e) => {
|
|
7372
|
+
this._layer && !this._layer.contains(e.target) && this._card.focus();
|
|
7373
|
+
}, document.addEventListener("keydown", this._onKey, !0), document.addEventListener("focusin", this._onFocusIn), I(t, () => this._place());
|
|
7374
|
+
}
|
|
7375
|
+
_show(e) {
|
|
7376
|
+
this._current = e;
|
|
7377
|
+
let { index: t, target: n } = e, r = this._steps[t], i = this._steps, a = t === i.length - 1, o = this._card;
|
|
7378
|
+
o.querySelector(".wui-tour-position").textContent = `Step ${t + 1} of ${i.length}`;
|
|
7379
|
+
let s = o.querySelector(".wui-tour-title");
|
|
7380
|
+
s.textContent = r.title || "", s.hidden = !r.title, o.querySelector(".wui-tour-text").textContent = r.description || "", o.querySelector(".wui-tour-skip").textContent = this._label("skip"), o.querySelector(".wui-tour-back").textContent = this._label("back"), o.querySelector(".wui-tour-back").hidden = t <= this._firstIndex, o.querySelector(".wui-tour-next").textContent = this._label(a ? "done" : "next"), this._live.textContent = [
|
|
7381
|
+
`Step ${t + 1} of ${i.length}`,
|
|
7382
|
+
r.title,
|
|
7383
|
+
r.description
|
|
7384
|
+
].filter(Boolean).join(". "), n.scrollIntoView?.({
|
|
7385
|
+
block: "center",
|
|
7386
|
+
inline: "nearest"
|
|
7387
|
+
}), this._place(), (!o.contains(document.activeElement) || document.activeElement.hidden) && o.focus(), this.dispatchEvent(new CustomEvent("wui-tour:step", {
|
|
7388
|
+
bubbles: !0,
|
|
7389
|
+
detail: {
|
|
7390
|
+
step: r,
|
|
7391
|
+
index: t
|
|
7392
|
+
}
|
|
7393
|
+
}));
|
|
7394
|
+
}
|
|
7395
|
+
_place() {
|
|
7396
|
+
if (!this._current || !this._layer) return;
|
|
7397
|
+
let e = this._current.target.getBoundingClientRect(), t = this._spot.style;
|
|
7398
|
+
t.top = `${e.top - Di}px`, t.left = `${e.left - Di}px`, t.width = `${e.width + Di * 2}px`, t.height = `${e.height + Di * 2}px`, F(this._spot, this._card, { clampHeight: !0 });
|
|
7399
|
+
}
|
|
7400
|
+
async _move(e) {
|
|
7401
|
+
if (!this._current || this._moving) return;
|
|
7402
|
+
this._moving = !0;
|
|
7403
|
+
let t = this._run;
|
|
7404
|
+
try {
|
|
7405
|
+
let n = await this._locate(this._current.index + e, e, t);
|
|
7406
|
+
if (t !== this._run) return;
|
|
7407
|
+
n ? this._show(n) : e > 0 && await this._close("finished");
|
|
7408
|
+
} finally {
|
|
7409
|
+
this._moving = !1;
|
|
7410
|
+
}
|
|
7411
|
+
}
|
|
7412
|
+
_key(e) {
|
|
7413
|
+
if (!(!this._layer || e.altKey || e.ctrlKey || e.metaKey)) {
|
|
7414
|
+
if (e.key === "Escape") e.preventDefault(), e.stopPropagation(), this._close("skipped");
|
|
7415
|
+
else if (e.key === "ArrowRight" || e.key === "ArrowLeft") e.preventDefault(), e.key === "ArrowRight" ? this._move(1) : this._current.index > this._firstIndex && this._move(-1);
|
|
7416
|
+
else if (e.key === "Tab") {
|
|
7417
|
+
let t = Array.from(this._card.querySelectorAll("button")).filter((e) => !e.hidden), n = t[0], r = t[t.length - 1], i = document.activeElement;
|
|
7418
|
+
!this._card.contains(i) || e.shiftKey && (i === n || i === this._card) ? (e.preventDefault(), (e.shiftKey ? r : n).focus()) : !e.shiftKey && i === r && (e.preventDefault(), n.focus());
|
|
7419
|
+
}
|
|
7420
|
+
}
|
|
7421
|
+
}
|
|
7422
|
+
_teardown() {
|
|
7423
|
+
if (!this._layer) return;
|
|
7424
|
+
document.removeEventListener("keydown", this._onKey, !0), document.removeEventListener("focusin", this._onFocusIn), L(this._layer), this._layer.remove(), this._layer = null, this._current = null;
|
|
7425
|
+
let e = this._returnFocus;
|
|
7426
|
+
this._returnFocus = null, e?.isConnected && e.focus?.();
|
|
7427
|
+
}
|
|
7428
|
+
async _close(e) {
|
|
7429
|
+
let t = this._run;
|
|
7430
|
+
this._teardown();
|
|
7431
|
+
let n = this._store();
|
|
7432
|
+
try {
|
|
7433
|
+
n && t === this._run && await n.markSeen(this.tourId);
|
|
7434
|
+
} finally {
|
|
7435
|
+
this._finish(e);
|
|
7436
|
+
}
|
|
7437
|
+
}
|
|
7438
|
+
_finish(e) {
|
|
7439
|
+
this._run++, this._running = !1, this.hasAttribute("open") && this.removeAttribute("open"), this.dispatchEvent(new CustomEvent("wui-tour:close", {
|
|
7440
|
+
bubbles: !0,
|
|
7441
|
+
detail: { reason: e }
|
|
7442
|
+
}));
|
|
7443
|
+
}
|
|
7444
|
+
}, Mi = [
|
|
7249
7445
|
"none",
|
|
7250
7446
|
"single",
|
|
7251
7447
|
"multiple"
|
|
7252
|
-
],
|
|
7448
|
+
], Ni = "parentId", Pi = "Loading", Fi = "Could not load. Try again.", Ii = ":scope > input[data-wui-mirror]", Li = [
|
|
7253
7449
|
"nodes",
|
|
7254
7450
|
"selection",
|
|
7255
7451
|
"selected",
|
|
@@ -7257,14 +7453,14 @@ var pi = class extends e {
|
|
|
7257
7453
|
"loadChildren",
|
|
7258
7454
|
"loadUrl",
|
|
7259
7455
|
"name"
|
|
7260
|
-
],
|
|
7456
|
+
], Ri = 0;
|
|
7261
7457
|
function X(e, t, n) {
|
|
7262
7458
|
let r = document.createElement(e);
|
|
7263
7459
|
t && (r.className = t);
|
|
7264
7460
|
for (let [e, t] of Object.entries(n ?? {})) t != null && r.setAttribute(e, String(t));
|
|
7265
7461
|
return r;
|
|
7266
7462
|
}
|
|
7267
|
-
var
|
|
7463
|
+
var zi = class extends e {
|
|
7268
7464
|
static get observedAttributes() {
|
|
7269
7465
|
return [
|
|
7270
7466
|
"selection",
|
|
@@ -7276,7 +7472,7 @@ var Ai = class extends e {
|
|
|
7276
7472
|
];
|
|
7277
7473
|
}
|
|
7278
7474
|
constructor() {
|
|
7279
|
-
super(), this._uid = `wui-tree-${++
|
|
7475
|
+
super(), this._uid = `wui-tree-${++Ri}`, this._seq = 0, this._roots = [], this._byId = /* @__PURE__ */ new Map(), this._prev = null, this._staged = null, this._els = /* @__PURE__ */ new Map(), this._checked = /* @__PURE__ */ new Set(), this._selected = null, this._focusId = null, this._loader = null, this._list = null, this._live = null, this._ready = !1, this._nav = Gt({
|
|
7280
7476
|
getVisibleOptions: () => this._visible().map((e) => this._els.get(e.id)?.row),
|
|
7281
7477
|
getActive: () => this._visible().findIndex((e) => e.id === this._focusId),
|
|
7282
7478
|
setActive: (e) => this._focusNode(this._visible()[e]),
|
|
@@ -7291,7 +7487,7 @@ var Ai = class extends e {
|
|
|
7291
7487
|
}
|
|
7292
7488
|
connectedCallback() {
|
|
7293
7489
|
let e = {};
|
|
7294
|
-
for (let t of
|
|
7490
|
+
for (let t of Li) Object.hasOwn(this, t) && (e[t] = this[t], delete this[t]);
|
|
7295
7491
|
if (!this._ready) {
|
|
7296
7492
|
this._ready = !0;
|
|
7297
7493
|
let e = this._readScript();
|
|
@@ -7317,7 +7513,7 @@ var Ai = class extends e {
|
|
|
7317
7513
|
}
|
|
7318
7514
|
get selection() {
|
|
7319
7515
|
let e = this.getAttribute("selection");
|
|
7320
|
-
return
|
|
7516
|
+
return Mi.includes(e) ? e : "none";
|
|
7321
7517
|
}
|
|
7322
7518
|
set selection(e) {
|
|
7323
7519
|
this.setAttribute("selection", String(e));
|
|
@@ -7361,13 +7557,13 @@ var Ai = class extends e {
|
|
|
7361
7557
|
e == null ? this.removeAttribute("name") : this.setAttribute("name", String(e));
|
|
7362
7558
|
}
|
|
7363
7559
|
get loadingText() {
|
|
7364
|
-
return this.getAttribute("loading-text") ??
|
|
7560
|
+
return this.getAttribute("loading-text") ?? Pi;
|
|
7365
7561
|
}
|
|
7366
7562
|
set loadingText(e) {
|
|
7367
7563
|
this.setAttribute("loading-text", String(e ?? ""));
|
|
7368
7564
|
}
|
|
7369
7565
|
get errorText() {
|
|
7370
|
-
return this.getAttribute("error-text") ??
|
|
7566
|
+
return this.getAttribute("error-text") ?? Fi;
|
|
7371
7567
|
}
|
|
7372
7568
|
set errorText(e) {
|
|
7373
7569
|
this.setAttribute("error-text", String(e ?? ""));
|
|
@@ -7556,8 +7752,8 @@ var Ai = class extends e {
|
|
|
7556
7752
|
let t = this.getAttribute("load-url");
|
|
7557
7753
|
if (!t) throw Error("<wui-tree> has a node with children to load but no loadChildren or load-url.");
|
|
7558
7754
|
let n = new URL(t, window.location.href);
|
|
7559
|
-
n.searchParams.set(
|
|
7560
|
-
let r = await
|
|
7755
|
+
n.searchParams.set(Ni, e.id);
|
|
7756
|
+
let r = await fe(n.href, { headers: { Accept: "application/json" } });
|
|
7561
7757
|
if (!r.ok) throw Error(`Loading children answered ${r.kind}.`);
|
|
7562
7758
|
return JSON.parse(r.html);
|
|
7563
7759
|
}
|
|
@@ -7577,7 +7773,7 @@ var Ai = class extends e {
|
|
|
7577
7773
|
let e = this.selection;
|
|
7578
7774
|
if (e === "multiple") z(this, this.values);
|
|
7579
7775
|
else if (e === "single") R(this, this._selected ?? "");
|
|
7580
|
-
else for (let e of this.querySelectorAll(
|
|
7776
|
+
else for (let e of this.querySelectorAll(Ii)) e.remove();
|
|
7581
7777
|
}
|
|
7582
7778
|
_render() {
|
|
7583
7779
|
if (!this._list) return;
|
|
@@ -7629,7 +7825,7 @@ var Ai = class extends e {
|
|
|
7629
7825
|
row: s
|
|
7630
7826
|
}), o;
|
|
7631
7827
|
}
|
|
7632
|
-
},
|
|
7828
|
+
}, Bi = "wui-wizard-step", Vi = class extends e {
|
|
7633
7829
|
static get observedAttributes() {
|
|
7634
7830
|
return [
|
|
7635
7831
|
"active",
|
|
@@ -7664,7 +7860,7 @@ var Ai = class extends e {
|
|
|
7664
7860
|
this._beforeNext = typeof e == "function" ? e : null;
|
|
7665
7861
|
}
|
|
7666
7862
|
get _steps() {
|
|
7667
|
-
return [...this.querySelectorAll(`:scope > ${
|
|
7863
|
+
return [...this.querySelectorAll(`:scope > ${Bi}`)];
|
|
7668
7864
|
}
|
|
7669
7865
|
refresh() {
|
|
7670
7866
|
this._rendered && this._renderChrome();
|
|
@@ -7703,7 +7899,7 @@ var Ai = class extends e {
|
|
|
7703
7899
|
}
|
|
7704
7900
|
_reconcileSteps() {
|
|
7705
7901
|
let e = this._steps, t = this._known;
|
|
7706
|
-
if (this._known = e,
|
|
7902
|
+
if (this._known = e, Hi(e, t)) return e;
|
|
7707
7903
|
let n = (n) => new Set([...n].map((n) => e.indexOf(t[n])).filter((e) => e >= 0));
|
|
7708
7904
|
this._skipped = n(this._skipped), this._invalid = n(this._invalid);
|
|
7709
7905
|
let r = t[this._active];
|
|
@@ -7723,7 +7919,7 @@ var Ai = class extends e {
|
|
|
7723
7919
|
_onStepsMutated() {
|
|
7724
7920
|
if (!this._rendered) return;
|
|
7725
7921
|
let e = this._steps;
|
|
7726
|
-
(!e.length || this._header.nextElementSibling === e[0] && this._footer.previousElementSibling === e[e.length - 1]) &&
|
|
7922
|
+
(!e.length || this._header.nextElementSibling === e[0] && this._footer.previousElementSibling === e[e.length - 1]) && Hi(e, this._known) || (this._renderChrome(), this._observer?.takeRecords());
|
|
7727
7923
|
}
|
|
7728
7924
|
_syncPanels(e) {
|
|
7729
7925
|
e.forEach((e, t) => {
|
|
@@ -7748,15 +7944,15 @@ var Ai = class extends e {
|
|
|
7748
7944
|
return e.map((r, o) => {
|
|
7749
7945
|
let s = this._stepStatus(r, o), c = r.getAttribute("label") || "", l = r.getAttribute("description") || "", u = r.getAttribute("icon") || "", d = o + 1, f;
|
|
7750
7946
|
f = s === "done" ? B("check") : s === "error" ? B("alert-triangle") : s === "skipped" ? B("minus") : u ? B(u) : String(d);
|
|
7751
|
-
let p = s === "pending" ? "step" : `step ${s}`, m = s === "active" ? " aria-current=\"step\"" : "", h = a || o < this._active, g = l ? `<span class="step-desc">${
|
|
7752
|
-
_ = t ? `<span class="step-circle">${f}</span><span class="step-text"><span class="step-index">Step ${d}</span><span class="step-label">${
|
|
7947
|
+
let p = s === "pending" ? "step" : `step ${s}`, m = s === "active" ? " aria-current=\"step\"" : "", h = a || o < this._active, g = l ? `<span class="step-desc">${Ui(l)}</span>` : "", _;
|
|
7948
|
+
_ = t ? `<span class="step-circle">${f}</span><span class="step-text"><span class="step-index">Step ${d}</span><span class="step-label">${Ui(c)}</span>${g}</span>` : n ? `<span class="step-circle">${f}</span><span class="step-index">Step ${d}</span><span class="step-label">${Ui(c)}</span>${g}` : `<span class="step-circle">${f}</span><span class="step-label">${Ui(c)}</span>${g}`;
|
|
7753
7949
|
let v = h ? `<button type="button" class="${p}" data-step="${o}"${m}>${_}</button>` : `<div class="${p}"${m}>${_}</div>`;
|
|
7754
7950
|
return t && i && o < e.length - 1 ? `${v}<span class="step-line${s === "done" ? " done" : ""}" aria-hidden="true"></span>` : v;
|
|
7755
7951
|
}).join("");
|
|
7756
7952
|
}
|
|
7757
7953
|
_footerHtml(e) {
|
|
7758
7954
|
let t = this._active, n = e.length - 1, r = this.hasAttribute("disabled") ? " disabled" : "", i = e[t]?.hasAttribute("optional") || this.hasAttribute("skippable"), a = this.getAttribute("back-label") || "Back", o = this.getAttribute("next-label") || "Next", s = this.getAttribute("skip-label") || "Skip", c = this.getAttribute("finish-label") || "Finish";
|
|
7759
|
-
return `${t > 0 ? `<button type="button" class="btn btn-secondary" data-nav="back"${r}>${B("arrow-left", { className: "me-2" })}${
|
|
7955
|
+
return `${t > 0 ? `<button type="button" class="btn btn-secondary" data-nav="back"${r}>${B("arrow-left", { className: "me-2" })}${Ui(a)}</button>` : "<span></span>"}<span class="wizard-footer-actions">${i && t < n ? `<button type="button" class="btn btn-subtle" data-nav="skip"${r}>${Ui(s)}</button>` : ""}${t < n ? `<button type="button" class="btn btn-primary" data-nav="next"${r}>${Ui(o)}${B("arrow-right", { className: "ms-2" })}</button>` : `<button type="button" class="btn btn-primary" data-nav="finish"${r}>${Ui(c)}</button>`}</span>`;
|
|
7760
7956
|
}
|
|
7761
7957
|
_wire() {
|
|
7762
7958
|
this._teardown(), this._onHeaderClick = (e) => {
|
|
@@ -7830,7 +8026,7 @@ var Ai = class extends e {
|
|
|
7830
8026
|
_reflectActive(e) {
|
|
7831
8027
|
this._reflecting = !0, this.setAttribute("active", String(e)), this._reflecting = !1;
|
|
7832
8028
|
}
|
|
7833
|
-
},
|
|
8029
|
+
}, Hi = (e, t) => e.length === t.length && e.every((e, n) => e === t[n]), Ui = (e) => String(e ?? "").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">"), Wi = class extends e {
|
|
7834
8030
|
static get observedAttributes() {
|
|
7835
8031
|
return [
|
|
7836
8032
|
"label",
|
|
@@ -7844,8 +8040,8 @@ var Ai = class extends e {
|
|
|
7844
8040
|
let e = this.closest("wui-wizard");
|
|
7845
8041
|
e && typeof e.refresh == "function" && e.refresh();
|
|
7846
8042
|
}
|
|
7847
|
-
},
|
|
7848
|
-
async function
|
|
8043
|
+
}, Gi = 2e3;
|
|
8044
|
+
async function Ki(e) {
|
|
7849
8045
|
try {
|
|
7850
8046
|
if (navigator.clipboard?.writeText) return await navigator.clipboard.writeText(e), !0;
|
|
7851
8047
|
} catch {}
|
|
@@ -7860,14 +8056,14 @@ async function Li(e) {
|
|
|
7860
8056
|
}
|
|
7861
8057
|
//#endregion
|
|
7862
8058
|
//#region src/fileValidation.js
|
|
7863
|
-
var
|
|
8059
|
+
var qi = "image/png,image/jpeg,image/webp", Ji = 5, Yi = {
|
|
7864
8060
|
"image/png": [".png"],
|
|
7865
8061
|
"image/jpeg": [".jpg", ".jpeg"],
|
|
7866
8062
|
"image/webp": [".webp"],
|
|
7867
8063
|
"image/gif": [".gif"],
|
|
7868
8064
|
"image/svg+xml": [".svg"],
|
|
7869
8065
|
"application/pdf": [".pdf"]
|
|
7870
|
-
},
|
|
8066
|
+
}, Xi = {
|
|
7871
8067
|
"image/png": "PNG",
|
|
7872
8068
|
"image/jpeg": "JPG",
|
|
7873
8069
|
"image/webp": "WEBP",
|
|
@@ -7881,7 +8077,7 @@ var Ri = "image/png,image/jpeg,image/webp", zi = 5, Bi = {
|
|
|
7881
8077
|
".gif": "GIF",
|
|
7882
8078
|
".svg": "SVG",
|
|
7883
8079
|
".pdf": "PDF"
|
|
7884
|
-
},
|
|
8080
|
+
}, Zi = (e) => String(e || "").split(",").map((e) => e.trim().toLowerCase()).filter(Boolean), Qi = [
|
|
7885
8081
|
".png",
|
|
7886
8082
|
".jpg",
|
|
7887
8083
|
".jpeg",
|
|
@@ -7892,64 +8088,71 @@ var Ri = "image/png,image/jpeg,image/webp", zi = 5, Bi = {
|
|
|
7892
8088
|
".avif",
|
|
7893
8089
|
".heic"
|
|
7894
8090
|
];
|
|
7895
|
-
function
|
|
8091
|
+
function $i(e) {
|
|
7896
8092
|
if (!e) return !1;
|
|
7897
8093
|
let t = typeof e == "object" && e.type ? String(e.type).toLowerCase() : "";
|
|
7898
8094
|
if (t) return t.startsWith("image/");
|
|
7899
8095
|
let n = typeof e == "string" ? e : e.name || e.url || "", r = String(n).toLowerCase();
|
|
7900
|
-
return
|
|
8096
|
+
return Qi.some((e) => r.endsWith(e));
|
|
8097
|
+
}
|
|
8098
|
+
function ea(e) {
|
|
8099
|
+
if (!e) return !1;
|
|
8100
|
+
let t = typeof e == "object" && e.type ? String(e.type).toLowerCase() : "";
|
|
8101
|
+
if (t) return t === "application/pdf";
|
|
8102
|
+
let n = typeof e == "string" ? e : e.name || e.url || "";
|
|
8103
|
+
return String(n).toLowerCase().split(/[?#]/)[0].endsWith(".pdf");
|
|
7901
8104
|
}
|
|
7902
|
-
function
|
|
7903
|
-
let t =
|
|
7904
|
-
return t.length ? t.every((e) => e.startsWith(".") ?
|
|
8105
|
+
function ta(e) {
|
|
8106
|
+
let t = Zi(e);
|
|
8107
|
+
return t.length ? t.every((e) => e.startsWith(".") ? Qi.includes(e) : e === "image/*" || e.startsWith("image/")) : !1;
|
|
7905
8108
|
}
|
|
7906
|
-
function
|
|
8109
|
+
function na(e) {
|
|
7907
8110
|
let t = [];
|
|
7908
|
-
for (let n of
|
|
7909
|
-
let e =
|
|
8111
|
+
for (let n of Zi(e)) {
|
|
8112
|
+
let e = Xi[n] || (n.startsWith(".") ? n.slice(1).toUpperCase() : n.toUpperCase());
|
|
7910
8113
|
t.includes(e) || t.push(e);
|
|
7911
8114
|
}
|
|
7912
8115
|
return t.length <= 1 ? t[0] || "supported" : `${t.slice(0, -1).join(", ")} or ${t[t.length - 1]}`;
|
|
7913
8116
|
}
|
|
7914
|
-
function
|
|
7915
|
-
let n =
|
|
8117
|
+
function ra(e, t) {
|
|
8118
|
+
let n = Zi(t);
|
|
7916
8119
|
if (!n.length) return !0;
|
|
7917
8120
|
let r = (e.type || "").toLowerCase(), i = (e.name || "").toLowerCase();
|
|
7918
|
-
return n.some((e) => e.startsWith(".") ? i.endsWith(e) : e.endsWith("/*") ? r.startsWith(e.slice(0, -1)) : r && r === e ? !0 : !r && (
|
|
8121
|
+
return n.some((e) => e.startsWith(".") ? i.endsWith(e) : e.endsWith("/*") ? r.startsWith(e.slice(0, -1)) : r && r === e ? !0 : !r && (Yi[e] || []).some((e) => i.endsWith(e)));
|
|
7919
8122
|
}
|
|
7920
|
-
function
|
|
8123
|
+
function ia(e, t = {}) {
|
|
7921
8124
|
if (!e) return null;
|
|
7922
|
-
let n = t.accept === void 0 ?
|
|
7923
|
-
return
|
|
8125
|
+
let n = t.accept === void 0 ? qi : t.accept, r = t.maxSizeMb === void 0 ? 5 : t.maxSizeMb;
|
|
8126
|
+
return ra(e, n) ? r > 0 && e.size > r * 1024 * 1024 ? `Keep the file under ${r} MB.` : null : `Choose a ${na(n)} file.`;
|
|
7924
8127
|
}
|
|
7925
8128
|
//#endregion
|
|
7926
8129
|
//#region src/inputMask.js
|
|
7927
|
-
var
|
|
7928
|
-
9:
|
|
8130
|
+
var aa = /[0-9]/, oa = {
|
|
8131
|
+
9: aa,
|
|
7929
8132
|
A: /[A-Za-z]/,
|
|
7930
8133
|
"*": /[0-9A-Za-z]/
|
|
7931
|
-
},
|
|
8134
|
+
}, sa = /[9A*]/, ca = /* @__PURE__ */ new Set([
|
|
7932
8135
|
"text",
|
|
7933
8136
|
"tel",
|
|
7934
8137
|
"search",
|
|
7935
8138
|
"url",
|
|
7936
8139
|
"password"
|
|
7937
|
-
]),
|
|
8140
|
+
]), la = (e) => {
|
|
7938
8141
|
let t = e.replace(/\D/g, "");
|
|
7939
8142
|
return t.length === 12 && t.startsWith("91") ? t.slice(2) : t.length === 11 && t.startsWith("0") ? t.slice(1) : e;
|
|
7940
|
-
},
|
|
8143
|
+
}, ua = (e) => {
|
|
7941
8144
|
let t = Number(e.slice(0, 2)), n = Number(e.slice(2, 4)), r = Number(e.slice(4, 8));
|
|
7942
8145
|
if (r < 1) return !1;
|
|
7943
8146
|
let i = new Date(Date.UTC(r, n - 1, t));
|
|
7944
8147
|
return i.getUTCFullYear() === r && i.getUTCMonth() === n - 1 && i.getUTCDate() === t;
|
|
7945
|
-
},
|
|
8148
|
+
}, da = (e) => e.length <= 3 ? e : `${e.slice(0, -3).replace(/\B(?=(\d{2})+(?!\d))/g, ",")},${e.slice(-3)}`, fa = (e) => {
|
|
7946
8149
|
let t = /^(\d{4})-(\d{2})-(\d{2})$/.exec(e.trim());
|
|
7947
8150
|
return t ? `${t[3]}-${t[2]}-${t[1]}` : e;
|
|
7948
8151
|
};
|
|
7949
|
-
function
|
|
7950
|
-
let o = [...e].map((e) =>
|
|
8152
|
+
function pa(e, { upper: t = !1, normalize: n, valid: r, post: i = (e) => e, message: a = "Enter the full value" } = {}) {
|
|
8153
|
+
let o = [...e].map((e) => oa[e] ? { re: oa[e] } : { lit: e }), s = o.filter((e) => e.re).length;
|
|
7951
8154
|
return {
|
|
7952
|
-
inputMode: o.every((e) => !e.re || e.re ===
|
|
8155
|
+
inputMode: o.every((e) => !e.re || e.re === aa) ? "numeric" : "text",
|
|
7953
8156
|
normalize: n,
|
|
7954
8157
|
post: i,
|
|
7955
8158
|
message: a,
|
|
@@ -7974,18 +8177,18 @@ function ra(e, { upper: t = !1, normalize: n, valid: r, post: i = (e) => e, mess
|
|
|
7974
8177
|
isValid: (e) => e.length === s && (!r || r(e))
|
|
7975
8178
|
};
|
|
7976
8179
|
}
|
|
7977
|
-
function
|
|
8180
|
+
function ma() {
|
|
7978
8181
|
return {
|
|
7979
8182
|
inputMode: "decimal",
|
|
7980
8183
|
post: (e) => e,
|
|
7981
8184
|
message: "Enter a valid amount",
|
|
7982
8185
|
extract(e) {
|
|
7983
8186
|
let t = "", n = !1, r = 0;
|
|
7984
|
-
for (let i of e)
|
|
8187
|
+
for (let i of e) aa.test(i) ? n ? r < 2 && (t += i, r++) : t += i : i === "." && !n && (n = !0, t += i);
|
|
7985
8188
|
return t.startsWith(".") && (t = `0${t}`), t.replace(/^0+(?=\d)/, "");
|
|
7986
8189
|
},
|
|
7987
8190
|
layout(e) {
|
|
7988
|
-
let [t, n] = e.split("."), r =
|
|
8191
|
+
let [t, n] = e.split("."), r = da(t) + (e.includes(".") ? `.${n}` : "");
|
|
7989
8192
|
return {
|
|
7990
8193
|
text: r,
|
|
7991
8194
|
isRaw: [...r].map((e) => e !== ",")
|
|
@@ -7994,75 +8197,75 @@ function ia() {
|
|
|
7994
8197
|
isValid: (e) => /^\d+(\.\d{1,2})?$/.test(e)
|
|
7995
8198
|
};
|
|
7996
8199
|
}
|
|
7997
|
-
var
|
|
7998
|
-
"phone-in": () =>
|
|
7999
|
-
normalize:
|
|
8200
|
+
var ha = {
|
|
8201
|
+
"phone-in": () => pa("99999 99999", {
|
|
8202
|
+
normalize: la,
|
|
8000
8203
|
valid: (e) => /^[6-9]/.test(e),
|
|
8001
8204
|
message: "Enter a 10-digit mobile number"
|
|
8002
8205
|
}),
|
|
8003
|
-
pan: () =>
|
|
8206
|
+
pan: () => pa("AAAAA9999A", {
|
|
8004
8207
|
upper: !0,
|
|
8005
8208
|
valid: (e) => /^[A-Z]{5}\d{4}[A-Z]$/.test(e),
|
|
8006
8209
|
message: "Enter a valid PAN"
|
|
8007
8210
|
}),
|
|
8008
|
-
gstin: () =>
|
|
8211
|
+
gstin: () => pa("99AAAAA9999A***", {
|
|
8009
8212
|
upper: !0,
|
|
8010
8213
|
valid: (e) => /^\d{2}[A-Z]{5}\d{4}[A-Z][1-9A-Z]Z[0-9A-Z]$/.test(e),
|
|
8011
8214
|
message: "Enter a valid GSTIN"
|
|
8012
8215
|
}),
|
|
8013
|
-
aadhaar: () =>
|
|
8216
|
+
aadhaar: () => pa("9999 9999 9999", {
|
|
8014
8217
|
valid: (e) => /^[2-9]/.test(e),
|
|
8015
8218
|
message: "Enter a valid 12-digit Aadhaar number"
|
|
8016
8219
|
}),
|
|
8017
|
-
ifsc: () =>
|
|
8220
|
+
ifsc: () => pa("AAAA*******", {
|
|
8018
8221
|
upper: !0,
|
|
8019
8222
|
valid: (e) => /^[A-Z]{4}0[A-Z0-9]{6}$/.test(e),
|
|
8020
8223
|
message: "Enter a valid IFSC"
|
|
8021
8224
|
}),
|
|
8022
|
-
"pin-code": () =>
|
|
8225
|
+
"pin-code": () => pa("999999", {
|
|
8023
8226
|
valid: (e) => /^[1-9]/.test(e),
|
|
8024
8227
|
message: "Enter a valid 6-digit PIN code"
|
|
8025
8228
|
}),
|
|
8026
|
-
date: () =>
|
|
8027
|
-
normalize:
|
|
8028
|
-
valid:
|
|
8029
|
-
post: (e, t) => e.length === 8 &&
|
|
8229
|
+
date: () => pa("99-99-9999", {
|
|
8230
|
+
normalize: fa,
|
|
8231
|
+
valid: ua,
|
|
8232
|
+
post: (e, t) => e.length === 8 && ua(e) ? `${e.slice(4)}-${e.slice(2, 4)}-${e.slice(0, 2)}` : t,
|
|
8030
8233
|
message: "Enter a valid date as DD-MM-YYYY"
|
|
8031
8234
|
}),
|
|
8032
|
-
amount:
|
|
8033
|
-
},
|
|
8235
|
+
amount: ma
|
|
8236
|
+
}, ga = Object.keys(ha), _a = (e) => {
|
|
8034
8237
|
let t = String(e).toLowerCase();
|
|
8035
|
-
return Object.hasOwn(
|
|
8036
|
-
},
|
|
8037
|
-
function
|
|
8238
|
+
return Object.hasOwn(ha, t) ? t : void 0;
|
|
8239
|
+
}, va = (e) => sa.test(String(e)) && _a(e) === void 0, ya = /* @__PURE__ */ new Map();
|
|
8240
|
+
function ba(e) {
|
|
8038
8241
|
if (e == null || e === "") return null;
|
|
8039
8242
|
let t = String(e);
|
|
8040
|
-
return
|
|
8243
|
+
return ya.has(t) || (va(t) ? ya.set(t, pa(t)) : ya.set(t, Object.hasOwn(ha, t) ? ha[t]() : null)), ya.get(t);
|
|
8041
8244
|
}
|
|
8042
8245
|
var Z = (e, t) => e.normalize ? e.normalize(t) : t;
|
|
8043
|
-
function
|
|
8044
|
-
let n =
|
|
8246
|
+
function xa(e, t) {
|
|
8247
|
+
let n = ba(e);
|
|
8045
8248
|
return n ? n.extract(Z(n, String(t ?? ""))) : String(t ?? "");
|
|
8046
8249
|
}
|
|
8047
|
-
function
|
|
8048
|
-
let n =
|
|
8250
|
+
function Sa(e, t) {
|
|
8251
|
+
let n = ba(e);
|
|
8049
8252
|
if (!n) return String(t ?? "");
|
|
8050
8253
|
let r = n.extract(Z(n, String(t ?? "")));
|
|
8051
8254
|
return n.post(r, n.layout(r).text);
|
|
8052
8255
|
}
|
|
8053
|
-
function
|
|
8054
|
-
let n =
|
|
8256
|
+
function Ca(e, t) {
|
|
8257
|
+
let n = ba(e);
|
|
8055
8258
|
return n ? n.layout(n.extract(Z(n, String(t ?? "")))).text : String(t ?? "");
|
|
8056
8259
|
}
|
|
8057
|
-
var
|
|
8260
|
+
var wa = (e, t) => {
|
|
8058
8261
|
if (t <= 0) return 0;
|
|
8059
8262
|
let n = 0;
|
|
8060
8263
|
for (let r = 0; r < e.length; r++) if (e[r] && ++n === t) return r + 1;
|
|
8061
8264
|
return e.length;
|
|
8062
|
-
},
|
|
8063
|
-
function
|
|
8064
|
-
let i = e.getAll(t), a =
|
|
8065
|
-
a ||
|
|
8265
|
+
}, Ta = /* @__PURE__ */ new WeakMap(), Ea = (e) => Ta.get(e)?.(), Da = /* @__PURE__ */ new WeakMap();
|
|
8266
|
+
function Oa(e, t, n, r) {
|
|
8267
|
+
let i = e.getAll(t), a = Da.get(e);
|
|
8268
|
+
a || Da.set(e, a = /* @__PURE__ */ new Set());
|
|
8066
8269
|
let o = i.findIndex((e, r) => e === n && !a.has(`${t}\u0000${r}`));
|
|
8067
8270
|
if (!(o < 0)) {
|
|
8068
8271
|
if (a.add(`${t}\u0000${o}`), i[o] = r, i.length === 1) {
|
|
@@ -8073,7 +8276,7 @@ function va(e, t, n, r) {
|
|
|
8073
8276
|
for (let n of i) e.append(t, n);
|
|
8074
8277
|
}
|
|
8075
8278
|
}
|
|
8076
|
-
function
|
|
8279
|
+
function ka(e) {
|
|
8077
8280
|
let t = null, n = null, r = !1, i = (t, n) => n === null ? e.removeAttribute(t) : e.setAttribute(t, n), a, o, s = () => {
|
|
8078
8281
|
t?.remove(), t = null, n && (n.hidden = !1), n = null, r && e.classList.remove("error"), r = !1, a !== void 0 && i("aria-invalid", a), o !== void 0 && i("aria-describedby", o), a = void 0, o = void 0;
|
|
8079
8282
|
};
|
|
@@ -8086,18 +8289,18 @@ function ya(e) {
|
|
|
8086
8289
|
l && l !== t && l.textContent.trim() || (t || (r = !e.classList.contains("error"), e.classList.add("error"), a = e.getAttribute("aria-invalid"), o = e.getAttribute("aria-describedby"), c && (t = document.createElement("div"), t.className = "field-error", e.id && (t.id = `${e.id}-error`), n = c.querySelector(".field-hint"), n && (n.hidden = !0), c.insertBefore(t, [...c.children].find((e) => e.classList.contains("field-count")) ?? null), t.id && e.setAttribute("aria-describedby", t.id)), e.setAttribute("aria-invalid", "true")), t && (t.textContent = i));
|
|
8087
8290
|
};
|
|
8088
8291
|
}
|
|
8089
|
-
function
|
|
8090
|
-
let a =
|
|
8091
|
-
if (!a || !
|
|
8292
|
+
function Aa(e, { mask: t, postFormatted: n = !1, onChange: r, onInvalidChange: i } = {}) {
|
|
8293
|
+
let a = ba(t);
|
|
8294
|
+
if (!a || !ca.has(e.type)) return () => {};
|
|
8092
8295
|
let o = Object.getPrototypeOf(e), s = Object.getOwnPropertyDescriptor(o, "value").set, c = !e.hasAttribute("inputmode");
|
|
8093
8296
|
c && e.setAttribute("inputmode", a.inputMode);
|
|
8094
|
-
let l = i ??
|
|
8297
|
+
let l = i ?? ka(e), u = null, d = !1, f = !1, p = !1, m = "", h = "", g, _ = () => {
|
|
8095
8298
|
let e = p ? m : "";
|
|
8096
8299
|
e !== h && (h = e, l(h));
|
|
8097
8300
|
}, v = (t, n, i) => {
|
|
8098
8301
|
let o = a.extract(t.slice(0, n)).length, c = a.extract(t), { text: l, isRaw: d } = a.layout(c);
|
|
8099
|
-
if (e.value !== l && (s.call(e, l), document.activeElement === e &&
|
|
8100
|
-
let t =
|
|
8302
|
+
if (e.value !== l && (s.call(e, l), document.activeElement === e && ca.has(e.type))) {
|
|
8303
|
+
let t = wa(d, o);
|
|
8101
8304
|
e.setSelectionRange(t, t);
|
|
8102
8305
|
}
|
|
8103
8306
|
e.dataset.maskRaw = c, m = c && !a.isValid(c) ? a.message : "", e.setCustomValidity(m), _(), i && c !== u && r?.(c, l), u = c;
|
|
@@ -8118,13 +8321,13 @@ function ba(e, { mask: t, postFormatted: n = !1, onChange: r, onInvalidChange: i
|
|
|
8118
8321
|
if (d || f || t.isComposing) return;
|
|
8119
8322
|
let n = t.inputType === "insertText" && (t.data?.length ?? 0) <= 1 || t.inputType?.startsWith("delete") ? e.value : Z(a, e.value);
|
|
8120
8323
|
v(n, e.selectionStart ?? n.length, !0);
|
|
8121
|
-
},
|
|
8324
|
+
}, ee = () => {
|
|
8122
8325
|
f = !0;
|
|
8123
|
-
},
|
|
8326
|
+
}, C = () => {
|
|
8124
8327
|
f = !1;
|
|
8125
8328
|
let t = Z(a, e.value);
|
|
8126
8329
|
v(t, e.selectionStart ?? t.length, !0), x();
|
|
8127
|
-
},
|
|
8330
|
+
}, te = (t) => {
|
|
8128
8331
|
let n = t.inputType === "deleteContentBackward";
|
|
8129
8332
|
if (!n && t.inputType !== "deleteContentForward" || t.isComposing) return;
|
|
8130
8333
|
let r = e.selectionStart;
|
|
@@ -8132,67 +8335,67 @@ function ba(e, { mask: t, postFormatted: n = !1, onChange: r, onInvalidChange: i
|
|
|
8132
8335
|
let { isRaw: i } = a.layout(a.extract(e.value)), o = n ? r - 1 : r;
|
|
8133
8336
|
for (; o >= 0 && o < i.length && !i[o];) o += n ? -1 : 1;
|
|
8134
8337
|
o !== (n ? r - 1 : r) && (t.preventDefault(), !(o < 0 || o >= i.length) && (v(e.value.slice(0, o) + e.value.slice(o + 1), n ? o : r, !0), x()));
|
|
8135
|
-
},
|
|
8338
|
+
}, ne = (t) => {
|
|
8136
8339
|
if (e.readOnly || e.disabled) return;
|
|
8137
8340
|
let n = t.clipboardData?.getData("text");
|
|
8138
8341
|
if (n == null) return;
|
|
8139
8342
|
t.preventDefault();
|
|
8140
8343
|
let r = Z(a, n), i = e.selectionStart ?? e.value.length, o = e.selectionEnd ?? i;
|
|
8141
8344
|
v(e.value.slice(0, i) + r + e.value.slice(o), i + r.length, !0), x();
|
|
8142
|
-
},
|
|
8345
|
+
}, re = () => {
|
|
8143
8346
|
let t = a.extract(e.value);
|
|
8144
8347
|
return a.post(t, a.layout(t).text);
|
|
8145
|
-
},
|
|
8348
|
+
}, w = () => {
|
|
8146
8349
|
p = !0, _();
|
|
8147
8350
|
};
|
|
8148
|
-
e.addEventListener("input", S), e.addEventListener("beforeinput",
|
|
8149
|
-
let
|
|
8150
|
-
e.name && !e.disabled &&
|
|
8151
|
-
},
|
|
8351
|
+
e.addEventListener("input", S), e.addEventListener("beforeinput", te), e.addEventListener("paste", ne), e.addEventListener("compositionstart", ee), e.addEventListener("compositionend", C), e.addEventListener("blur", w), e.addEventListener("invalid", w);
|
|
8352
|
+
let T = e.form, ie = (t) => {
|
|
8353
|
+
e.name && !e.disabled && Oa(t.formData, e.name, e.value, re());
|
|
8354
|
+
}, ae = () => {
|
|
8152
8355
|
clearTimeout(g), g = setTimeout(() => {
|
|
8153
8356
|
p = !1, v(Z(a, e.value), e.value.length, !0);
|
|
8154
8357
|
}, 0);
|
|
8155
8358
|
};
|
|
8156
|
-
n || (
|
|
8157
|
-
let
|
|
8158
|
-
return v(
|
|
8159
|
-
clearTimeout(g), e.removeEventListener("input", S), e.removeEventListener("beforeinput",
|
|
8359
|
+
n || (T?.addEventListener("formdata", ie), Ta.set(e, re)), T?.addEventListener("reset", ae), T?.addEventListener("submit", w);
|
|
8360
|
+
let E = Z(a, e.value);
|
|
8361
|
+
return v(E, E.length, !1), () => {
|
|
8362
|
+
clearTimeout(g), e.removeEventListener("input", S), e.removeEventListener("beforeinput", te), e.removeEventListener("paste", ne), e.removeEventListener("compositionstart", ee), e.removeEventListener("compositionend", C), e.removeEventListener("blur", w), e.removeEventListener("invalid", w), T?.removeEventListener("formdata", ie), T?.removeEventListener("reset", ae), T?.removeEventListener("submit", w), Ta.delete(e), y ? Object.defineProperty(e, "value", y) : delete e.value, p = !1, m = "", _(), e.setCustomValidity(""), delete e.dataset.maskRaw, c && e.removeAttribute("inputmode");
|
|
8160
8363
|
};
|
|
8161
8364
|
}
|
|
8162
|
-
function
|
|
8365
|
+
function ja() {
|
|
8163
8366
|
let e = typeof window > "u" ? void 0 : window.jQuery?.validator?.prototype;
|
|
8164
8367
|
if (!e || e.wuiMaskHook) return;
|
|
8165
8368
|
let t = e.elementValue;
|
|
8166
8369
|
e.elementValue = function(e) {
|
|
8167
|
-
let n =
|
|
8370
|
+
let n = Ea(e);
|
|
8168
8371
|
return n === void 0 ? t.call(this, e) : n;
|
|
8169
8372
|
}, e.wuiMaskHook = !0;
|
|
8170
8373
|
}
|
|
8171
|
-
var
|
|
8172
|
-
|
|
8374
|
+
var Ma = /* @__PURE__ */ new WeakMap(), Na, Pa = (e) => {
|
|
8375
|
+
Ma.has(e) || Ma.set(e, Aa(e, {
|
|
8173
8376
|
mask: e.dataset.appMask,
|
|
8174
8377
|
postFormatted: e.hasAttribute("data-mask-post-formatted")
|
|
8175
8378
|
}));
|
|
8176
|
-
},
|
|
8177
|
-
function
|
|
8178
|
-
|
|
8379
|
+
}, Fa = (e) => e.nodeType === 1 ? [...e.matches("input[data-app-mask]") ? [e] : [], ...e.querySelectorAll("input[data-app-mask]")] : [];
|
|
8380
|
+
function Ia() {
|
|
8381
|
+
Na || typeof MutationObserver > "u" || (Na = new MutationObserver((e) => {
|
|
8179
8382
|
for (let t of e) {
|
|
8180
|
-
for (let e of t.removedNodes) for (let t of
|
|
8181
|
-
for (let e of t.addedNodes) for (let t of
|
|
8383
|
+
for (let e of t.removedNodes) for (let t of Fa(e)) Ma.get(t)?.(), Ma.delete(t);
|
|
8384
|
+
for (let e of t.addedNodes) for (let t of Fa(e)) Pa(t);
|
|
8182
8385
|
}
|
|
8183
|
-
}),
|
|
8386
|
+
}), Na.observe(document.documentElement, {
|
|
8184
8387
|
childList: !0,
|
|
8185
8388
|
subtree: !0
|
|
8186
8389
|
}));
|
|
8187
8390
|
}
|
|
8188
|
-
function
|
|
8189
|
-
|
|
8190
|
-
for (let t of e.querySelectorAll("input[data-app-mask]"))
|
|
8191
|
-
e === document &&
|
|
8391
|
+
function La(e = document) {
|
|
8392
|
+
ja();
|
|
8393
|
+
for (let t of e.querySelectorAll("input[data-app-mask]")) Pa(t);
|
|
8394
|
+
e === document && Ia();
|
|
8192
8395
|
}
|
|
8193
8396
|
//#endregion
|
|
8194
8397
|
//#region src/passwordRules.js
|
|
8195
|
-
var
|
|
8398
|
+
var Ra = {
|
|
8196
8399
|
minLength: 10,
|
|
8197
8400
|
uppercase: !0,
|
|
8198
8401
|
lowercase: !0,
|
|
@@ -8200,15 +8403,15 @@ var Oa = {
|
|
|
8200
8403
|
special: !0,
|
|
8201
8404
|
uniqueChars: 0,
|
|
8202
8405
|
customRules: []
|
|
8203
|
-
},
|
|
8204
|
-
function
|
|
8205
|
-
return e === !0 || e == null ? { ...
|
|
8206
|
-
...
|
|
8406
|
+
}, za = "Password requirements";
|
|
8407
|
+
function Ba(e) {
|
|
8408
|
+
return e === !0 || e == null ? { ...Ra } : {
|
|
8409
|
+
...Ra,
|
|
8207
8410
|
...e
|
|
8208
8411
|
};
|
|
8209
8412
|
}
|
|
8210
|
-
function
|
|
8211
|
-
let t =
|
|
8413
|
+
function Va(e) {
|
|
8414
|
+
let t = Ba(e), n = [];
|
|
8212
8415
|
if (t.minLength > 0 && n.push({
|
|
8213
8416
|
key: "length",
|
|
8214
8417
|
label: `At least ${t.minLength} characters long`,
|
|
@@ -8247,47 +8450,47 @@ function ja(e) {
|
|
|
8247
8450
|
}
|
|
8248
8451
|
return n;
|
|
8249
8452
|
}
|
|
8250
|
-
function
|
|
8453
|
+
function Ha(e, t) {
|
|
8251
8454
|
let n = e == null ? "" : String(e);
|
|
8252
|
-
return
|
|
8455
|
+
return Va(t).map((e) => ({
|
|
8253
8456
|
key: e.key,
|
|
8254
8457
|
label: e.label,
|
|
8255
8458
|
met: e.test(n)
|
|
8256
8459
|
}));
|
|
8257
8460
|
}
|
|
8258
|
-
function
|
|
8259
|
-
return
|
|
8461
|
+
function Ua(e, t) {
|
|
8462
|
+
return Ha(e, t).every((e) => e.met);
|
|
8260
8463
|
}
|
|
8261
8464
|
//#endregion
|
|
8262
8465
|
//#region src/tableSelect.js
|
|
8263
|
-
var
|
|
8466
|
+
var Wa = "Select all rows", Ga = "Select row", Q = "wui-select-cell", Ka = (e, t) => {
|
|
8264
8467
|
let n = e.createElement("input");
|
|
8265
8468
|
return n.type = "checkbox", n.className = "wui-check", n.setAttribute("aria-label", t), n;
|
|
8266
8469
|
};
|
|
8267
|
-
function
|
|
8470
|
+
function qa(e = document) {
|
|
8268
8471
|
let t = e.createElement("th");
|
|
8269
|
-
return t.className = Q, t.appendChild(
|
|
8472
|
+
return t.className = Q, t.appendChild(Ka(e, Wa)), t;
|
|
8270
8473
|
}
|
|
8271
|
-
function
|
|
8474
|
+
function Ja(e = document) {
|
|
8272
8475
|
let t = e.createElement("td");
|
|
8273
|
-
return t.className = Q, t.appendChild(
|
|
8476
|
+
return t.className = Q, t.appendChild(Ka(e, Ga)), t;
|
|
8274
8477
|
}
|
|
8275
|
-
function
|
|
8478
|
+
function Ya(e = document) {
|
|
8276
8479
|
let t = e.createElement("td");
|
|
8277
8480
|
return t.className = Q, t;
|
|
8278
8481
|
}
|
|
8279
|
-
var
|
|
8280
|
-
function
|
|
8281
|
-
for (let t of e)
|
|
8482
|
+
var Xa = (e) => e.firstElementChild?.classList.contains(Q);
|
|
8483
|
+
function Za(e) {
|
|
8484
|
+
for (let t of e) Xa(t) || t.insertBefore(Ja(t.ownerDocument), t.firstChild);
|
|
8282
8485
|
}
|
|
8283
|
-
function
|
|
8486
|
+
function Qa(e) {
|
|
8284
8487
|
let t = e.querySelector("thead tr");
|
|
8285
8488
|
if (!t) return null;
|
|
8286
|
-
|
|
8287
|
-
for (let t of e.querySelectorAll("tfoot tr"))
|
|
8489
|
+
Xa(t) || t.insertBefore(qa(e.ownerDocument), t.firstChild), Za(e.querySelectorAll("tbody tr"));
|
|
8490
|
+
for (let t of e.querySelectorAll("tfoot tr")) Xa(t) || t.insertBefore(Ya(e.ownerDocument), t.firstChild);
|
|
8288
8491
|
return t.querySelector(`.${Q} .wui-check`);
|
|
8289
8492
|
}
|
|
8290
|
-
function
|
|
8493
|
+
function $a(e) {
|
|
8291
8494
|
let t = e.querySelector(`thead .${Q} .wui-check`), n = [...e.querySelectorAll("tbody tr .wui-check")], r = n.length, i = n.filter((e) => e.checked).length;
|
|
8292
8495
|
t && (t.checked = r > 0 && i === r, t.indeterminate = i > 0 && i < r);
|
|
8293
8496
|
for (let t of e.querySelectorAll("tbody tr")) t.classList.toggle("is-selected", !!t.querySelector(".wui-check")?.checked);
|
|
@@ -8298,12 +8501,12 @@ function Ua(e) {
|
|
|
8298
8501
|
}
|
|
8299
8502
|
//#endregion
|
|
8300
8503
|
//#region src/serverTable.js
|
|
8301
|
-
var
|
|
8504
|
+
var eo = Object.freeze([
|
|
8302
8505
|
"page",
|
|
8303
8506
|
"pageSize",
|
|
8304
8507
|
"sortBy",
|
|
8305
8508
|
"sortOrder"
|
|
8306
|
-
]),
|
|
8509
|
+
]), to = "search", no = Object.freeze({
|
|
8307
8510
|
loading: "Loading rows",
|
|
8308
8511
|
error: "These rows did not load. Try again.",
|
|
8309
8512
|
network: "The connection dropped before the rows loaded. Check it and try again.",
|
|
@@ -8312,28 +8515,28 @@ var Wa = Object.freeze([
|
|
|
8312
8515
|
actionFailed: "That did not work. Try again.",
|
|
8313
8516
|
actionForbidden: "You do not have permission to do that.",
|
|
8314
8517
|
empty: "No rows"
|
|
8315
|
-
}),
|
|
8518
|
+
}), ro = 5, io = /* @__PURE__ */ new WeakMap(), ao = (e, t) => {
|
|
8316
8519
|
let n = Number(e);
|
|
8317
8520
|
return Number.isInteger(n) ? n : t;
|
|
8318
|
-
},
|
|
8319
|
-
total:
|
|
8320
|
-
page:
|
|
8321
|
-
pageSize:
|
|
8521
|
+
}, oo = (e) => ({
|
|
8522
|
+
total: ao(e.dataset.total, 0),
|
|
8523
|
+
page: ao(e.dataset.page, 1),
|
|
8524
|
+
pageSize: ao(e.dataset.pageSize, 0),
|
|
8322
8525
|
sortBy: e.dataset.sortBy || "",
|
|
8323
8526
|
sortOrder: e.dataset.sortOrder === "desc" ? "desc" : "asc"
|
|
8324
|
-
}),
|
|
8527
|
+
}), so = (e, t) => {
|
|
8325
8528
|
e && window.WUI?.toast?.(e, { variant: t });
|
|
8326
8529
|
};
|
|
8327
|
-
function
|
|
8530
|
+
function co(e = document) {
|
|
8328
8531
|
let t = e.querySelectorAll ? [...e.querySelectorAll("[data-wui-server]")] : [];
|
|
8329
8532
|
e instanceof Element && e.matches("[data-wui-server]") && t.unshift(e);
|
|
8330
|
-
for (let e of t)
|
|
8533
|
+
for (let e of t) io.has(e) || io.set(e, uo(e));
|
|
8331
8534
|
}
|
|
8332
|
-
function
|
|
8535
|
+
function lo(e) {
|
|
8333
8536
|
let t = e instanceof Element ? e.closest("[data-wui-server]") : null;
|
|
8334
|
-
return t &&
|
|
8537
|
+
return t && io.get(t) || null;
|
|
8335
8538
|
}
|
|
8336
|
-
function
|
|
8539
|
+
function uo(e) {
|
|
8337
8540
|
let t = e.querySelector(".table-wrap"), n = t?.querySelector(":scope > table"), r = e.dataset.src;
|
|
8338
8541
|
if (!n || !r) throw Error("A server-paged table needs data-src and a .table-wrap > table: render it with <app-data-table src>.");
|
|
8339
8542
|
let i = t.querySelector(":scope > [data-wui-table-state]"), a = e.querySelector("[data-wui-table-pager]"), o = e.querySelector("[data-wui-table-status]"), s = {
|
|
@@ -8342,11 +8545,11 @@ function $a(e) {
|
|
|
8342
8545
|
filtersForm: e.dataset.filtersForm || null,
|
|
8343
8546
|
filtersRegion: e.dataset.filtersRegion || null,
|
|
8344
8547
|
searchInput: e.dataset.searchInput || null,
|
|
8345
|
-
loadingText: e.dataset.loadingText ||
|
|
8346
|
-
errorText: e.dataset.errorText ||
|
|
8347
|
-
}, c = new URL(r, window.location.href), l = new Set(c.searchParams.keys()), u = n.hasAttribute("data-app-datatable-selectable"), d = /* @__PURE__ */ new Set(), f =
|
|
8548
|
+
loadingText: e.dataset.loadingText || no.loading,
|
|
8549
|
+
errorText: e.dataset.errorText || no.error
|
|
8550
|
+
}, c = new URL(r, window.location.href), l = new Set(c.searchParams.keys()), u = n.hasAttribute("data-app-datatable-selectable"), d = /* @__PURE__ */ new Set(), f = pe(), p = new AbortController(), m = { signal: p.signal }, h = n.querySelector(":scope > tbody[data-wui-rows]");
|
|
8348
8551
|
if (!h) throw Error("A server-paged table needs its rows in <app-table-rows> (tbody[data-wui-rows]).");
|
|
8349
|
-
let g =
|
|
8552
|
+
let g = oo(h), _ = null, v = null, y = (e) => {
|
|
8350
8553
|
let t = new URLSearchParams();
|
|
8351
8554
|
for (let [n, r] of new URLSearchParams(e)) l.has(n) || t.append(n, r);
|
|
8352
8555
|
return t;
|
|
@@ -8357,33 +8560,33 @@ function $a(e) {
|
|
|
8357
8560
|
let t = new URL(c.href);
|
|
8358
8561
|
for (let [n, r] of e) l.has(n) || t.searchParams.append(n, r);
|
|
8359
8562
|
return t.origin === window.location.origin ? `${t.pathname}${t.search}` : t.href;
|
|
8360
|
-
},
|
|
8563
|
+
}, ee = (e, t) => {
|
|
8361
8564
|
let n = new URLSearchParams(e);
|
|
8362
8565
|
return n.has("page") && n.set("page", String(t.page)), n.has("pageSize") && n.set("pageSize", String(t.pageSize)), n.has("sortBy") ? t.sortBy ? (n.set("sortBy", t.sortBy), n.set("sortOrder", t.sortOrder)) : (n.delete("sortBy"), n.delete("sortOrder")) : n.delete("sortOrder"), n;
|
|
8363
|
-
},
|
|
8364
|
-
s.urlState && x(
|
|
8365
|
-
let
|
|
8566
|
+
}, C = ee(s.urlState ? y(window.location.search) : new URLSearchParams(), g);
|
|
8567
|
+
s.urlState && x(C) !== `${window.location.pathname}${window.location.search}${window.location.hash}` && window.history.replaceState(window.history.state, "", x(C));
|
|
8568
|
+
let te = (e, n) => t.dispatchEvent(new CustomEvent(e, {
|
|
8366
8569
|
bubbles: !0,
|
|
8367
8570
|
detail: n
|
|
8368
|
-
})),
|
|
8571
|
+
})), ne = (e) => {
|
|
8369
8572
|
o && (o.textContent = e);
|
|
8370
|
-
},
|
|
8371
|
-
if (e.total === 0) return
|
|
8573
|
+
}, re = (e) => {
|
|
8574
|
+
if (e.total === 0) return no.empty;
|
|
8372
8575
|
let t = e.pageSize > 0 ? Math.max(1, Math.ceil(e.total / e.pageSize)) : 1;
|
|
8373
8576
|
return `Page ${e.page} of ${t}, ${e.total} ${e.total === 1 ? "row" : "rows"}`;
|
|
8374
|
-
},
|
|
8577
|
+
}, w = () => [...n.querySelectorAll(":scope > thead > tr:first-child > th")], T = (e) => {
|
|
8375
8578
|
if (u && [...e.querySelectorAll(":scope > tr")].some((e) => !e.dataset.rowKey)) throw Error("A selectable server-paged table needs data-row-key on every row, so a selection can span pages.");
|
|
8376
|
-
},
|
|
8579
|
+
}, ie = (e) => {
|
|
8377
8580
|
let t = [...e.querySelectorAll(":scope > tr")];
|
|
8378
8581
|
if (u) {
|
|
8379
|
-
|
|
8582
|
+
Za(t);
|
|
8380
8583
|
for (let e of t) {
|
|
8381
8584
|
let t = e.querySelector(`.${Q} .wui-check`);
|
|
8382
8585
|
t && (t.checked = d.has(e.dataset.rowKey));
|
|
8383
8586
|
}
|
|
8384
|
-
|
|
8587
|
+
$a(n);
|
|
8385
8588
|
}
|
|
8386
|
-
let r =
|
|
8589
|
+
let r = w();
|
|
8387
8590
|
if (n.classList.contains("wui-table-stack")) for (let e of t) [...e.cells].forEach((e, t) => {
|
|
8388
8591
|
let n = r[t]?.textContent.trim();
|
|
8389
8592
|
n && !e.hasAttribute("data-label") && e.setAttribute("data-label", n);
|
|
@@ -8391,30 +8594,42 @@ function $a(e) {
|
|
|
8391
8594
|
r.forEach((e, n) => {
|
|
8392
8595
|
if (e.classList.contains("wui-col-hidden")) for (let e of t) e.cells[n]?.classList.add("wui-col-hidden");
|
|
8393
8596
|
});
|
|
8394
|
-
},
|
|
8597
|
+
}, ae = (e) => {
|
|
8395
8598
|
for (let t of e.querySelectorAll(":scope > template[data-wui-pager], :scope > template[data-wui-empty], :scope > template[data-wui-filters]")) t.remove();
|
|
8396
|
-
},
|
|
8599
|
+
}, E = (e) => e?.dispatchEvent(new CustomEvent("wui:teardown", { bubbles: !0 })), D = (e, t) => {
|
|
8397
8600
|
if (!i) return;
|
|
8398
8601
|
let n = e.querySelector(":scope > template[data-wui-empty]");
|
|
8399
|
-
|
|
8400
|
-
},
|
|
8401
|
-
let r =
|
|
8602
|
+
E(i), t.total === 0 && n ? (i.replaceChildren(n.content.cloneNode(!0)), i.hidden = !1) : (i.replaceChildren(), i.hidden = !0);
|
|
8603
|
+
}, oe = (e) => {
|
|
8604
|
+
let r = oo(e);
|
|
8402
8605
|
if (a) {
|
|
8403
8606
|
let t = e.querySelector(":scope > template[data-wui-pager]");
|
|
8404
|
-
|
|
8607
|
+
E(a), a.replaceChildren(...t ? [t.content.cloneNode(!0)] : []), a.hidden = !1;
|
|
8405
8608
|
}
|
|
8406
|
-
|
|
8609
|
+
D(e, r);
|
|
8407
8610
|
let i = e.querySelector(":scope > template[data-wui-filters]"), o = s.filtersRegion && i ? document.querySelector(s.filtersRegion) : null;
|
|
8408
|
-
o && (
|
|
8409
|
-
},
|
|
8611
|
+
o && (E(o), o.replaceChildren(i.content.cloneNode(!0))), ae(e), E(h), n.replaceChild(e, h), h = e, g = r, t.removeAttribute("data-wui-table-error"), ie(e), k();
|
|
8612
|
+
}, se = (e) => {
|
|
8410
8613
|
let t = document.createElement("template");
|
|
8411
8614
|
t.innerHTML = `<table>${e}</table>`;
|
|
8412
8615
|
let n = t.content.querySelector("tbody[data-wui-rows]");
|
|
8413
|
-
return n &&
|
|
8414
|
-
},
|
|
8415
|
-
|
|
8416
|
-
|
|
8417
|
-
|
|
8616
|
+
return n && T(n), n ? document.importNode(n, !0) : null;
|
|
8617
|
+
}, ce = () => {
|
|
8618
|
+
if (h.querySelector(":scope > tr:not([data-wui-skeleton])")) return;
|
|
8619
|
+
let e = Math.max(1, w().length);
|
|
8620
|
+
h.replaceChildren(...Array.from({ length: ro }, () => {
|
|
8621
|
+
let t = document.createElement("tr");
|
|
8622
|
+
t.setAttribute("data-wui-skeleton", "");
|
|
8623
|
+
for (let n = 0; n < e; n++) {
|
|
8624
|
+
let e = document.createElement("td"), r = document.createElement("span");
|
|
8625
|
+
r.className = "skeleton", r.setAttribute("aria-hidden", "true"), r.style.cssText = `display:block;width:${n === 0 ? 70 : 50}%;height:12px;border-radius:6px`, e.append(r), t.append(e);
|
|
8626
|
+
}
|
|
8627
|
+
return t;
|
|
8628
|
+
})), t.removeAttribute("data-wui-table-error"), i && (i.hidden = !0);
|
|
8629
|
+
}, le = (e) => {
|
|
8630
|
+
e ? (t.setAttribute("aria-busy", "true"), ce()) : t.removeAttribute("aria-busy");
|
|
8631
|
+
}, ue = (e) => e === "forbidden" ? no.forbidden : e === "network" ? no.network : s.errorText, de = (e) => {
|
|
8632
|
+
let n = ue(e);
|
|
8418
8633
|
if (t.setAttribute("data-wui-table-error", e), a && (a.hidden = !0), i) {
|
|
8419
8634
|
let t = document.createElement("div");
|
|
8420
8635
|
t.className = "tbl-empty wui-table-error", t.setAttribute("role", "alert");
|
|
@@ -8425,59 +8640,59 @@ function $a(e) {
|
|
|
8425
8640
|
let o = document.createElement("div");
|
|
8426
8641
|
o.className = "tbl-empty-action";
|
|
8427
8642
|
let s = document.createElement("button");
|
|
8428
|
-
s.type = "button", s.className = "btn btn-outline-primary btn-sm", s.setAttribute("data-wui-table-retry", ""), s.textContent =
|
|
8643
|
+
s.type = "button", s.className = "btn btn-outline-primary btn-sm", s.setAttribute("data-wui-table-retry", ""), s.textContent = no.retry, o.append(s), t.append(r, a, o), E(i), i.replaceChildren(t), i.hidden = !1;
|
|
8429
8644
|
}
|
|
8430
|
-
|
|
8431
|
-
},
|
|
8645
|
+
ne(n);
|
|
8646
|
+
}, O = async (e, t = "none") => {
|
|
8432
8647
|
let n = new URLSearchParams(e);
|
|
8433
8648
|
_ = {
|
|
8434
8649
|
query: n,
|
|
8435
8650
|
mode: t
|
|
8436
|
-
},
|
|
8651
|
+
}, le(!0), ne(s.loadingText), te("wui:table:loading", { query: n.toString() });
|
|
8437
8652
|
let r = await f.run(S(n));
|
|
8438
8653
|
if (r.kind === "aborted" || r.kind === "stale" || r.kind === "session") return r;
|
|
8439
|
-
|
|
8654
|
+
le(!1);
|
|
8440
8655
|
let i = null, a = r.ok ? null : r.kind;
|
|
8441
8656
|
if (r.ok) {
|
|
8442
8657
|
try {
|
|
8443
|
-
i =
|
|
8658
|
+
i = se(r.html);
|
|
8444
8659
|
} catch (e) {
|
|
8445
8660
|
console.error(e);
|
|
8446
8661
|
}
|
|
8447
8662
|
i || (a = "server");
|
|
8448
8663
|
}
|
|
8449
|
-
return a ? (
|
|
8664
|
+
return a ? (de(a), te("wui:table:error", {
|
|
8450
8665
|
status: r.status,
|
|
8451
8666
|
kind: a,
|
|
8452
|
-
message:
|
|
8453
|
-
}), r) : (
|
|
8667
|
+
message: ue(a)
|
|
8668
|
+
}), r) : (oe(i), C = ee(n, g), s.urlState && t === "push" ? window.history.pushState(window.history.state, "", x(C)) : s.urlState && t === "replace" && window.history.replaceState(window.history.state, "", x(C)), ne(re(g)), window.WUI?.refresh?.(), te("wui:table:loaded", {
|
|
8454
8669
|
...g,
|
|
8455
|
-
query:
|
|
8670
|
+
query: C.toString()
|
|
8456
8671
|
}), r);
|
|
8457
|
-
},
|
|
8458
|
-
for (let e of
|
|
8672
|
+
}, me = (e) => (e.delete("page"), e), he = () => [...n.querySelectorAll(":scope > thead th[data-sort-key]")], k = () => {
|
|
8673
|
+
for (let e of he()) {
|
|
8459
8674
|
let t = e.dataset.sortKey === g.sortBy;
|
|
8460
8675
|
e.setAttribute("aria-sort", t ? g.sortOrder === "desc" ? "descending" : "ascending" : "none");
|
|
8461
8676
|
}
|
|
8462
8677
|
};
|
|
8463
|
-
for (let e of
|
|
8678
|
+
for (let e of he()) if (e.classList.add("sortable"), e.tabIndex = 0, !e.querySelector(".sort-icon")) {
|
|
8464
8679
|
let t = e.classList.contains("num") || e.classList.contains("text-end"), n = document.createElement("span");
|
|
8465
8680
|
n.className = t ? "sort-icon wui-sort-lead" : "sort-icon", n.innerHTML = B("chevrons-up-down", { size: 14 }), t ? e.prepend(n) : e.append(n);
|
|
8466
8681
|
}
|
|
8467
|
-
let
|
|
8468
|
-
let t =
|
|
8469
|
-
return t.set("sortBy", e), t.set("sortOrder", n),
|
|
8682
|
+
let ge = (e) => {
|
|
8683
|
+
let t = me(new URLSearchParams(C)), n = g.sortBy === e && g.sortOrder === "asc" ? "desc" : "asc";
|
|
8684
|
+
return t.set("sortBy", e), t.set("sortOrder", n), O(t, "push");
|
|
8470
8685
|
};
|
|
8471
8686
|
n.addEventListener("click", (e) => {
|
|
8472
8687
|
let t = e.target.closest("th[data-sort-key]");
|
|
8473
|
-
t && n.tHead?.contains(t) &&
|
|
8688
|
+
t && n.tHead?.contains(t) && ge(t.dataset.sortKey);
|
|
8474
8689
|
}), n.addEventListener("keydown", (e) => {
|
|
8475
8690
|
if (e.key !== "Enter" && e.key !== " ") return;
|
|
8476
8691
|
let t = e.target.closest?.("th[data-sort-key]");
|
|
8477
|
-
!t || !n.tHead?.contains(t) || (e.preventDefault(),
|
|
8692
|
+
!t || !n.tHead?.contains(t) || (e.preventDefault(), ge(t.dataset.sortKey));
|
|
8478
8693
|
});
|
|
8479
|
-
let
|
|
8480
|
-
|
|
8694
|
+
let _e = () => {
|
|
8695
|
+
$a(n), n.dispatchEvent(new CustomEvent("selectionchange", {
|
|
8481
8696
|
bubbles: !0,
|
|
8482
8697
|
detail: {
|
|
8483
8698
|
selected: d.size,
|
|
@@ -8497,77 +8712,77 @@ function $a(e) {
|
|
|
8497
8712
|
if (!e) return;
|
|
8498
8713
|
t.checked ? d.add(e) : d.delete(e);
|
|
8499
8714
|
}
|
|
8500
|
-
|
|
8715
|
+
_e();
|
|
8501
8716
|
}
|
|
8502
8717
|
}), a && (a.addEventListener("click", (e) => {
|
|
8503
8718
|
let t = e.target.closest("a[href]");
|
|
8504
|
-
!t || e.defaultPrevented || e.button !== 0 || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey || (e.preventDefault(),
|
|
8719
|
+
!t || e.defaultPrevented || e.button !== 0 || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey || (e.preventDefault(), O(b(t.getAttribute("href")), "push"));
|
|
8505
8720
|
}), a.addEventListener("change", (e) => {
|
|
8506
|
-
!e.target.classList?.contains("tpg-select") || !e.target.value || (e.stopPropagation(),
|
|
8721
|
+
!e.target.classList?.contains("tpg-select") || !e.target.value || (e.stopPropagation(), O(b(e.target.value), "push"));
|
|
8507
8722
|
}));
|
|
8508
|
-
let
|
|
8723
|
+
let ve = () => {
|
|
8509
8724
|
if (!s.searchInput) return null;
|
|
8510
8725
|
let e = document.querySelector(s.searchInput);
|
|
8511
8726
|
return e && (e.matches("input, textarea") ? e : e.querySelector("input"));
|
|
8512
|
-
},
|
|
8727
|
+
}, A = () => e.isConnected ? !0 : (p.abort(), clearTimeout(v), !1), ye = (e, t) => {
|
|
8513
8728
|
let n = t?.name ? new FormData(e, t) : new FormData(e), r = new Set([...e.querySelectorAll("[name]")].map((e) => e.getAttribute("name"))), i = new URLSearchParams();
|
|
8514
|
-
for (let [e, t] of
|
|
8515
|
-
for (let [e, t] of n) typeof t != "string" || t === "" ||
|
|
8516
|
-
let a =
|
|
8729
|
+
for (let [e, t] of C) e !== "page" && (eo.includes(e) || !r.has(e)) && i.append(e, t);
|
|
8730
|
+
for (let [e, t] of n) typeof t != "string" || t === "" || eo.includes(e) || l.has(e) || i.append(e, t);
|
|
8731
|
+
let a = ve();
|
|
8517
8732
|
if (a) {
|
|
8518
|
-
i.delete(
|
|
8733
|
+
i.delete(to);
|
|
8519
8734
|
let e = a.value.trim();
|
|
8520
|
-
e && i.set(
|
|
8735
|
+
e && i.set(to, e);
|
|
8521
8736
|
}
|
|
8522
|
-
return
|
|
8523
|
-
},
|
|
8737
|
+
return O(i, "push");
|
|
8738
|
+
}, be = (e) => s.filtersForm && e.closest?.(s.filtersForm) || s.filtersRegion && e.closest?.(s.filtersRegion) || null;
|
|
8524
8739
|
document.addEventListener("submit", (e) => {
|
|
8525
|
-
!
|
|
8740
|
+
!A() || !s.filtersForm || !(e.target instanceof HTMLFormElement) || !e.target.matches(s.filtersForm) || (e.preventDefault(), ye(e.target, e.submitter));
|
|
8526
8741
|
}, m), document.addEventListener("change", (e) => {
|
|
8527
|
-
if (!
|
|
8742
|
+
if (!A() || !s.filtersForm) return;
|
|
8528
8743
|
let t = e.target.closest?.(s.filtersForm);
|
|
8529
|
-
!t || e.target ===
|
|
8744
|
+
!t || e.target === ve() || ye(t);
|
|
8530
8745
|
}, m);
|
|
8531
|
-
let
|
|
8746
|
+
let xe = (e, t) => {
|
|
8532
8747
|
for (let n of e?.querySelectorAll("input[name]:not([type=hidden], [type=checkbox], [type=radio])") ?? []) {
|
|
8533
8748
|
let e = t.get(n.name) ?? "";
|
|
8534
8749
|
n.value !== e && (n.value = e, n.dispatchEvent(new Event("input", { bubbles: !0 })));
|
|
8535
8750
|
}
|
|
8536
8751
|
};
|
|
8537
8752
|
document.addEventListener("click", (e) => {
|
|
8538
|
-
if (!
|
|
8753
|
+
if (!A()) return;
|
|
8539
8754
|
let t = e.target.closest?.("a[href]");
|
|
8540
|
-
if (!t || !
|
|
8755
|
+
if (!t || !be(t) || e.defaultPrevented || e.button !== 0 || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey) return;
|
|
8541
8756
|
let n = new URL(t.getAttribute("href"), window.location.href);
|
|
8542
8757
|
if (n.origin !== window.location.origin || n.pathname !== window.location.pathname) return;
|
|
8543
8758
|
e.preventDefault();
|
|
8544
|
-
let r =
|
|
8545
|
-
|
|
8759
|
+
let r = me(b(n.href));
|
|
8760
|
+
xe(t.closest("form"), r), O(r, "push");
|
|
8546
8761
|
}, m), document.addEventListener("input", (e) => {
|
|
8547
|
-
if (!
|
|
8548
|
-
let t =
|
|
8762
|
+
if (!A()) return;
|
|
8763
|
+
let t = ve();
|
|
8549
8764
|
!t || e.target !== t || (clearTimeout(v), v = setTimeout(() => {
|
|
8550
|
-
let e =
|
|
8551
|
-
n ? e.set(
|
|
8765
|
+
let e = me(new URLSearchParams(C)), n = t.value.trim();
|
|
8766
|
+
n ? e.set(to, n) : e.delete(to), e.toString() !== C.toString() && O(e, "replace");
|
|
8552
8767
|
}, 300));
|
|
8553
8768
|
}, m), s.urlState && window.addEventListener("popstate", () => {
|
|
8554
|
-
if (!
|
|
8555
|
-
let e = y(window.location.search), t =
|
|
8556
|
-
t && (t.value = e.get("search") ?? ""),
|
|
8769
|
+
if (!A()) return;
|
|
8770
|
+
let e = y(window.location.search), t = ve();
|
|
8771
|
+
t && (t.value = e.get("search") ?? ""), O(e, "none");
|
|
8557
8772
|
}, m), document.addEventListener("wui:modal:success", () => {
|
|
8558
|
-
|
|
8773
|
+
A() && s.refreshOnSuccess && O(C, "none");
|
|
8559
8774
|
}, m), i?.addEventListener("click", (e) => {
|
|
8560
|
-
e.target.closest("[data-wui-table-retry]") && _ &&
|
|
8775
|
+
e.target.closest("[data-wui-table-retry]") && _ && O(_.query, _.mode);
|
|
8561
8776
|
});
|
|
8562
|
-
let
|
|
8777
|
+
let Se = async (e) => {
|
|
8563
8778
|
let t = e.dataset.url;
|
|
8564
8779
|
if (!t) throw Error("A data-wui-row-action button needs data-url: the handler the action posts to.");
|
|
8565
8780
|
let n = e.closest("tr")?.dataset.rowKey ?? null, r = e.dataset.wuiRowAction || "";
|
|
8566
8781
|
e.disabled = !0, e.setAttribute("aria-busy", "true");
|
|
8567
|
-
let i = await
|
|
8782
|
+
let i = await fe(t, { method: (e.dataset.method || "post").toUpperCase() });
|
|
8568
8783
|
if (e.disabled = !1, e.removeAttribute("aria-busy"), i.kind === "session" || i.kind === "aborted") return;
|
|
8569
8784
|
let a = i.message;
|
|
8570
|
-
i.ok ? (
|
|
8785
|
+
i.ok ? (so(a, i.toastVariant || "success"), await O(C, "none")) : so(a || (i.kind === "forbidden" ? no.actionForbidden : no.actionFailed), "danger"), te("wui:table:action", {
|
|
8571
8786
|
action: r,
|
|
8572
8787
|
key: n,
|
|
8573
8788
|
ok: i.ok,
|
|
@@ -8576,18 +8791,18 @@ function $a(e) {
|
|
|
8576
8791
|
};
|
|
8577
8792
|
return n.addEventListener("click", (e) => {
|
|
8578
8793
|
let t = e.target.closest("[data-wui-row-action]");
|
|
8579
|
-
!t || !h.contains(t) || t.disabled || (e.preventDefault(),
|
|
8580
|
-
}),
|
|
8794
|
+
!t || !h.contains(t) || t.disabled || (e.preventDefault(), Se(t));
|
|
8795
|
+
}), T(h), ae(h), u && Qa(n), ie(h), k(), {
|
|
8581
8796
|
el: e,
|
|
8582
|
-
reload: () =>
|
|
8583
|
-
query: () => new URLSearchParams(
|
|
8797
|
+
reload: () => O(C, "none"),
|
|
8798
|
+
query: () => new URLSearchParams(C),
|
|
8584
8799
|
setQuery: (e) => {
|
|
8585
|
-
let t = new URLSearchParams(
|
|
8800
|
+
let t = new URLSearchParams(C);
|
|
8586
8801
|
for (let [n, r] of Object.entries(e ?? {})) {
|
|
8587
8802
|
t.delete(n);
|
|
8588
8803
|
for (let e of Array.isArray(r) ? r : [r]) e != null && e !== "" && t.append(n, String(e));
|
|
8589
8804
|
}
|
|
8590
|
-
return (!e || !("page" in e)) && t.delete("page"),
|
|
8805
|
+
return (!e || !("page" in e)) && t.delete("page"), O(t, "push");
|
|
8591
8806
|
},
|
|
8592
8807
|
selection: {
|
|
8593
8808
|
keys: () => [...d],
|
|
@@ -8595,158 +8810,158 @@ function $a(e) {
|
|
|
8595
8810
|
clear: () => {
|
|
8596
8811
|
d.clear();
|
|
8597
8812
|
for (let e of h.querySelectorAll(`:scope > tr > .${Q} .wui-check`)) e.checked = !1;
|
|
8598
|
-
|
|
8813
|
+
_e();
|
|
8599
8814
|
}
|
|
8600
8815
|
}
|
|
8601
8816
|
};
|
|
8602
8817
|
}
|
|
8603
8818
|
//#endregion
|
|
8604
8819
|
//#region src/serverActions.js
|
|
8605
|
-
var
|
|
8820
|
+
var fo = "wuiConfirm", po = Object.freeze(["danger"]), mo = Object.freeze([
|
|
8606
8821
|
"success",
|
|
8607
8822
|
"info",
|
|
8608
8823
|
"warning",
|
|
8609
8824
|
"danger"
|
|
8610
|
-
]),
|
|
8825
|
+
]), ho = "wui.flash", go = Object.freeze({
|
|
8611
8826
|
confirmTitle: "Are you sure?",
|
|
8612
8827
|
confirmLabel: "Confirm",
|
|
8613
8828
|
cancelLabel: "Cancel",
|
|
8614
8829
|
failed: "That did not work. Try again.",
|
|
8615
8830
|
forbidden: "You do not have permission to do that.",
|
|
8616
8831
|
network: "Could not reach the server. Check your connection and try again."
|
|
8617
|
-
}),
|
|
8832
|
+
}), _o = /* @__PURE__ */ new WeakSet(), vo = null, yo = null, bo = !1, xo = (e) => {
|
|
8618
8833
|
let t = document.createElement("span");
|
|
8619
8834
|
return t.textContent = e ?? "", t.innerHTML;
|
|
8620
|
-
},
|
|
8835
|
+
}, So = (e, t) => {
|
|
8621
8836
|
e && window.WUI?.toast?.(e, { variant: t });
|
|
8622
|
-
},
|
|
8837
|
+
}, Co = () => {
|
|
8623
8838
|
let e = window.bootstrap?.Modal;
|
|
8624
8839
|
if (!e) throw Error("data-wui-confirm: Bootstrap's bundle (window.bootstrap) is not loaded on this page.");
|
|
8625
8840
|
return e;
|
|
8626
8841
|
};
|
|
8627
|
-
function
|
|
8628
|
-
let e = document.getElementById(
|
|
8629
|
-
return e || (e = document.createElement("div"), e.id =
|
|
8842
|
+
function wo() {
|
|
8843
|
+
let e = document.getElementById(fo);
|
|
8844
|
+
return e || (e = document.createElement("div"), e.id = fo, e.className = "modal fade wui-modal-shell", e.tabIndex = -1, e.setAttribute("aria-hidden", "true"), e.setAttribute("role", "dialog"), e.setAttribute("aria-modal", "true"), e.style.setProperty("--wui-modal-max-width", `${he.md}px`), e.innerHTML = `<div class="modal-dialog modal-dialog-centered wui-rb-dialog"><div class="modal-content wui-modal wui-confirm"><div class="wui-modal-body"><div class="wui-confirm-content"><span class="wui-confirm-icon"><wui-status-icon tone="info" size="120"></wui-status-icon></span><h3 class="wui-confirm-title" tabindex="-1"></h3><p class="wui-confirm-msg"></p></div></div><div class="wui-modal-footer"><div class="wui-confirm-actions"><button type="button" class="btn btn-secondary" data-bs-dismiss="modal">${xo(go.cancelLabel)}</button><button type="button" class="btn btn-primary" data-app-confirm></button></div></div></div></div>`, document.body.appendChild(e), e);
|
|
8630
8845
|
}
|
|
8631
|
-
function
|
|
8846
|
+
function To(e, t) {
|
|
8632
8847
|
let n = e.getAttribute("data-wui-confirm-tone");
|
|
8633
|
-
if (n !== null && !
|
|
8634
|
-
let r =
|
|
8635
|
-
if (!a || !o) throw Error(`#${
|
|
8848
|
+
if (n !== null && !po.includes(n)) throw TypeError(`data-wui-confirm-tone="${n}" is not supported. Use danger, or leave it off.`);
|
|
8849
|
+
let r = Co(), i = wo(), a = i.querySelector(".wui-confirm-title"), o = i.querySelector("[data-app-confirm]");
|
|
8850
|
+
if (!a || !o) throw Error(`#${fo} is not a confirm dialog with a confirm button. Render <app-confirm-dialog id="${fo}"> without confirm-href, or leave the dialog to the library.`);
|
|
8636
8851
|
let s = i.querySelector(".wui-confirm-msg");
|
|
8637
8852
|
s || (s = document.createElement("p"), s.className = "wui-confirm-msg", a.after(s));
|
|
8638
8853
|
let c = n === "danger";
|
|
8639
|
-
a.textContent = e.getAttribute("data-wui-confirm-title") ||
|
|
8854
|
+
a.textContent = e.getAttribute("data-wui-confirm-title") || go.confirmTitle, s.textContent = e.getAttribute("data-wui-confirm"), o.textContent = e.getAttribute("data-wui-confirm-label") || go.confirmLabel, o.classList.toggle("btn-danger", c), o.classList.toggle("btn-primary", !c), i.querySelector("wui-status-icon")?.setAttribute("tone", c ? "delete" : "info"), i.setAttribute("aria-label", a.textContent), yo = t, bo = !1, r.getOrCreateInstance(i).show();
|
|
8640
8855
|
}
|
|
8641
|
-
var
|
|
8642
|
-
|
|
8856
|
+
var Eo = (e, t) => {
|
|
8857
|
+
vo = e;
|
|
8643
8858
|
try {
|
|
8644
8859
|
t();
|
|
8645
8860
|
} finally {
|
|
8646
|
-
|
|
8861
|
+
vo = null;
|
|
8647
8862
|
}
|
|
8648
|
-
},
|
|
8649
|
-
function
|
|
8863
|
+
}, Do = (e) => e.disabled === !0 || e.getAttribute("aria-disabled") === "true";
|
|
8864
|
+
function Oo(e) {
|
|
8650
8865
|
let t = e.target.closest?.("[data-wui-confirm]:not(form)");
|
|
8651
|
-
!t || t ===
|
|
8866
|
+
!t || t === vo || Do(t) || (e.preventDefault(), e.stopImmediatePropagation(), To(t, () => Eo(t, () => t.click())));
|
|
8652
8867
|
}
|
|
8653
|
-
function
|
|
8868
|
+
function ko(e) {
|
|
8654
8869
|
let t = e.target;
|
|
8655
|
-
if (!(t instanceof HTMLFormElement) || !t.hasAttribute("data-wui-confirm") || t ===
|
|
8870
|
+
if (!(t instanceof HTMLFormElement) || !t.hasAttribute("data-wui-confirm") || t === vo || e.submitter && e.submitter === vo) return;
|
|
8656
8871
|
e.preventDefault(), e.stopImmediatePropagation();
|
|
8657
8872
|
let n = e.submitter?.form === t ? e.submitter : void 0;
|
|
8658
|
-
|
|
8873
|
+
To(t, () => Eo(t, () => t.requestSubmit(n)));
|
|
8659
8874
|
}
|
|
8660
|
-
function
|
|
8661
|
-
let t = e.target.closest?.(`#${
|
|
8662
|
-
!t || t.disabled || !
|
|
8875
|
+
function Ao(e) {
|
|
8876
|
+
let t = e.target.closest?.(`#${fo} [data-app-confirm]`);
|
|
8877
|
+
!t || t.disabled || !yo || (bo = !0, Co().getOrCreateInstance(t.closest(`#${fo}`)).hide());
|
|
8663
8878
|
}
|
|
8664
|
-
function
|
|
8879
|
+
function jo(e) {
|
|
8665
8880
|
if (e.target.id !== "wuiConfirm") return;
|
|
8666
|
-
let t =
|
|
8667
|
-
|
|
8881
|
+
let t = bo ? yo : null;
|
|
8882
|
+
yo = null, bo = !1, t?.();
|
|
8668
8883
|
}
|
|
8669
|
-
var
|
|
8670
|
-
e && window.sessionStorage.setItem(
|
|
8884
|
+
var Mo = (e, t) => {
|
|
8885
|
+
e && window.sessionStorage.setItem(ho, JSON.stringify({
|
|
8671
8886
|
message: e,
|
|
8672
8887
|
variant: t
|
|
8673
8888
|
}));
|
|
8674
|
-
},
|
|
8675
|
-
function
|
|
8676
|
-
for (let e of document.querySelectorAll("[data-wui-server]")) e.dataset.refreshOnSuccess !== "false" &&
|
|
8889
|
+
}, No = (e) => e === "forbidden" ? go.forbidden : e === "network" ? go.network : go.failed;
|
|
8890
|
+
function Po() {
|
|
8891
|
+
for (let e of document.querySelectorAll("[data-wui-server]")) e.dataset.refreshOnSuccess !== "false" && lo(e)?.reload();
|
|
8677
8892
|
}
|
|
8678
|
-
async function
|
|
8893
|
+
async function Fo(e) {
|
|
8679
8894
|
let t = e.getAttribute("data-wui-post");
|
|
8680
8895
|
if (!t) throw Error("A data-wui-post button needs the URL the action posts to.");
|
|
8681
8896
|
let n = e.getAttribute("data-wui-post-reload");
|
|
8682
8897
|
if (n !== null && n !== "page") throw TypeError(`data-wui-post-reload="${n}" is not supported. Use page, or leave it off to reload the server tables.`);
|
|
8683
8898
|
e.disabled = !0, e.setAttribute("aria-busy", "true");
|
|
8684
|
-
let r = await
|
|
8899
|
+
let r = await fe(t, { method: "POST" });
|
|
8685
8900
|
if (r.kind === "session" || r.kind === "aborted") return;
|
|
8686
8901
|
let i = r.toastVariant || "success";
|
|
8687
8902
|
if (r.ok && (r.redirect || n === "page")) {
|
|
8688
|
-
|
|
8903
|
+
Mo(r.message, i), r.redirect ? window.location.assign(r.redirect) : window.location.reload();
|
|
8689
8904
|
return;
|
|
8690
8905
|
}
|
|
8691
8906
|
if (e.disabled = !1, e.removeAttribute("aria-busy"), r.ok) {
|
|
8692
|
-
|
|
8907
|
+
So(r.message, i), Po();
|
|
8693
8908
|
return;
|
|
8694
8909
|
}
|
|
8695
|
-
|
|
8910
|
+
So(r.message || No(r.kind), "danger");
|
|
8696
8911
|
}
|
|
8697
|
-
function
|
|
8912
|
+
function Io(e) {
|
|
8698
8913
|
let t = e.target.closest?.("[data-wui-post]");
|
|
8699
|
-
t && (e.preventDefault(), !(
|
|
8914
|
+
t && (e.preventDefault(), !(Do(t) || t.getAttribute("aria-busy") === "true") && Fo(t).catch((e) => console.error(e)));
|
|
8700
8915
|
}
|
|
8701
|
-
function
|
|
8702
|
-
let e = window.sessionStorage.getItem(
|
|
8916
|
+
function Lo() {
|
|
8917
|
+
let e = window.sessionStorage.getItem(ho);
|
|
8703
8918
|
if (!e) return;
|
|
8704
|
-
window.sessionStorage.removeItem(
|
|
8919
|
+
window.sessionStorage.removeItem(ho);
|
|
8705
8920
|
let { message: t, variant: n } = JSON.parse(e);
|
|
8706
|
-
|
|
8921
|
+
So(t, n);
|
|
8707
8922
|
}
|
|
8708
|
-
function
|
|
8923
|
+
function Ro(e) {
|
|
8709
8924
|
let t = e.querySelectorAll ? [...e.querySelectorAll("[data-wui-flash]")] : [];
|
|
8710
8925
|
e instanceof Element && e.matches("[data-wui-flash]") && t.unshift(e);
|
|
8711
8926
|
for (let e of t) {
|
|
8712
8927
|
let t = e.getAttribute("data-wui-flash-variant") || "success";
|
|
8713
|
-
if (!
|
|
8928
|
+
if (!mo.includes(t)) throw TypeError(`data-wui-flash-variant="${t}" is not supported. Use ${mo.join(", ")}.`);
|
|
8714
8929
|
let n = e.getAttribute("data-wui-flash") || e.textContent.trim();
|
|
8715
|
-
e.remove(),
|
|
8930
|
+
e.remove(), So(n, t);
|
|
8716
8931
|
}
|
|
8717
8932
|
}
|
|
8718
|
-
function
|
|
8933
|
+
function zo(e = document) {
|
|
8719
8934
|
let t = e.ownerDocument || e;
|
|
8720
|
-
|
|
8935
|
+
_o.has(t) || (_o.add(t), t.addEventListener("click", Oo, !0), t.addEventListener("submit", ko, !0), t.addEventListener("click", Ao), t.addEventListener("click", Io), t.addEventListener("hidden.bs.modal", jo), Lo()), Ro(e);
|
|
8721
8936
|
}
|
|
8722
|
-
var
|
|
8723
|
-
function
|
|
8724
|
-
n.cookie = `${e}=${t ? "1" : "0"}; Path=/; Max-Age=${
|
|
8937
|
+
var Bo = 31536e3, Vo = /* @__PURE__ */ new WeakMap(), Ho = (e) => e > 99 ? "99+" : String(e);
|
|
8938
|
+
function Uo(e, t, n = document) {
|
|
8939
|
+
n.cookie = `${e}=${t ? "1" : "0"}; Path=/; Max-Age=${Bo}; SameSite=Lax`;
|
|
8725
8940
|
}
|
|
8726
|
-
var
|
|
8941
|
+
var Wo = (e) => {
|
|
8727
8942
|
let t = document.createElement("template");
|
|
8728
8943
|
return t.innerHTML = e, t.content;
|
|
8729
|
-
},
|
|
8944
|
+
}, Go = (e, t) => {
|
|
8730
8945
|
let n = document.createElement("div");
|
|
8731
8946
|
return n.className = e, n.textContent = t, n;
|
|
8732
8947
|
};
|
|
8733
|
-
function
|
|
8734
|
-
let n = e.querySelector(".wui-bell-trigger"), r = e.querySelector(".wui-bell-count"), i = e.querySelector("[data-wui-bell-live]"), a = e.querySelector("[data-wui-bell-list]"), o = e.querySelector(".wui-bell-menu"), { src: s, readAction: c } = e.dataset, l = e.dataset.label || "Notifications", u = e.dataset.emptyText || "You are all caught up.", d = Number(e.dataset.pollSeconds ?? 60), f =
|
|
8948
|
+
function Ko(e, t) {
|
|
8949
|
+
let n = e.querySelector(".wui-bell-trigger"), r = e.querySelector(".wui-bell-count"), i = e.querySelector("[data-wui-bell-live]"), a = e.querySelector("[data-wui-bell-list]"), o = e.querySelector(".wui-bell-menu"), { src: s, readAction: c } = e.dataset, l = e.dataset.label || "Notifications", u = e.dataset.emptyText || "You are all caught up.", d = Number(e.dataset.pollSeconds ?? 60), f = pe(), p = Number(e.dataset.unread) || 0, m = (t, a = !0) => {
|
|
8735
8950
|
let o = Math.max(0, Number(t) || 0), s = o !== p;
|
|
8736
|
-
p = o, e.dataset.unread = String(o), r && (r.textContent =
|
|
8951
|
+
p = o, e.dataset.unread = String(o), r && (r.textContent = Ho(o), r.hidden = o === 0), n?.setAttribute("aria-label", o === 0 ? l : `${l}, ${Ho(o)} unread`), a && s && i && (i.textContent = o === 0 ? "No unread notifications" : `${Ho(o)} unread notifications`);
|
|
8737
8952
|
}, h = () => o?.classList.contains("show") ?? !1, g = () => {
|
|
8738
|
-
let e =
|
|
8953
|
+
let e = Go("wui-bell-state", "Could not load notifications. "), t = document.createElement("button");
|
|
8739
8954
|
t.type = "button", t.className = "btn btn-link btn-sm", t.dataset.wuiBellRetry = "", t.textContent = "Retry", e.append(t), a.replaceChildren(e);
|
|
8740
8955
|
}, _ = async (t) => {
|
|
8741
|
-
t && (a.setAttribute("aria-busy", "true"), a.querySelector(".wui-bell-item") || a.replaceChildren(
|
|
8956
|
+
t && (a.setAttribute("aria-busy", "true"), a.querySelector(".wui-bell-item") || a.replaceChildren(Go("wui-bell-state", "Loading…")));
|
|
8742
8957
|
let n = await f.run(s);
|
|
8743
8958
|
if (n.kind === "aborted" || n.kind === "stale" || n.kind === "session") return;
|
|
8744
8959
|
if (a.removeAttribute("aria-busy"), !n.ok) {
|
|
8745
8960
|
t && g();
|
|
8746
8961
|
return;
|
|
8747
8962
|
}
|
|
8748
|
-
let r =
|
|
8749
|
-
m(o), (t || h()) && (r.querySelector(".wui-bell-item") ? a.replaceChildren(r) : a.replaceChildren(
|
|
8963
|
+
let r = Wo(n.html), i = r.querySelector("[data-wui-unread]"), o = i ? Number(i.getAttribute("data-wui-unread")) : p;
|
|
8964
|
+
m(o), (t || h()) && (r.querySelector(".wui-bell-item") ? a.replaceChildren(r) : a.replaceChildren(Go("wui-bell-state", u))), e.dispatchEvent(new CustomEvent("wui:notifications:loaded", {
|
|
8750
8965
|
bubbles: !0,
|
|
8751
8966
|
detail: { unread: o }
|
|
8752
8967
|
}));
|
|
@@ -8759,7 +8974,7 @@ function Fo(e, t) {
|
|
|
8759
8974
|
let t = e.target.closest("[data-wui-bell-read]");
|
|
8760
8975
|
if (!t || !c) return;
|
|
8761
8976
|
t.disabled = !0;
|
|
8762
|
-
let n = await
|
|
8977
|
+
let n = await fe(c, { method: "POST" });
|
|
8763
8978
|
t.disabled = !1, n.ok && (m(0), _(!0));
|
|
8764
8979
|
});
|
|
8765
8980
|
let v = null, y = () => {
|
|
@@ -8776,9 +8991,9 @@ function Fo(e, t) {
|
|
|
8776
8991
|
refresh: () => _(h())
|
|
8777
8992
|
};
|
|
8778
8993
|
}
|
|
8779
|
-
var
|
|
8780
|
-
function
|
|
8781
|
-
let n = e.querySelector("input.search-input"), r = e.querySelector(".wui-topsearch-results"), i = e.querySelector(".wui-topsearch-open"), a = e.querySelector("[data-wui-topsearch-live]"), { src: o, param: s = "q", resultsHref: c } = e.dataset, l = Number(e.dataset.minChars ?? 2), u = Number(e.dataset.debounceMs ?? 250), d =
|
|
8994
|
+
var qo = (e) => !!e && (e.isContentEditable || /^(INPUT|TEXTAREA|SELECT)$/.test(e.tagName)), Jo = (e, t, n) => `${e}${e.includes("?") ? "&" : "?"}${encodeURIComponent(t)}=${encodeURIComponent(n)}`;
|
|
8995
|
+
function Yo(e, t) {
|
|
8996
|
+
let n = e.querySelector("input.search-input"), r = e.querySelector(".wui-topsearch-results"), i = e.querySelector(".wui-topsearch-open"), a = e.querySelector("[data-wui-topsearch-live]"), { src: o, param: s = "q", resultsHref: c } = e.dataset, l = Number(e.dataset.minChars ?? 2), u = Number(e.dataset.debounceMs ?? 250), d = pe(), f = null, p = -1, m = () => [...r.querySelectorAll(".wui-topsearch-hit")], h = (e) => {
|
|
8782
8997
|
let t = m();
|
|
8783
8998
|
p = t.length === 0 ? -1 : (e + t.length) % t.length, t.forEach((e, t) => {
|
|
8784
8999
|
let n = t === p;
|
|
@@ -8799,16 +9014,16 @@ function Ro(e, t) {
|
|
|
8799
9014
|
e.dispatchEvent(n) && window.location.assign(t);
|
|
8800
9015
|
}, b = async (t) => {
|
|
8801
9016
|
e.classList.add("is-loading");
|
|
8802
|
-
let n = await d.run(
|
|
9017
|
+
let n = await d.run(Jo(o, s, t));
|
|
8803
9018
|
if (!(n.kind === "aborted" || n.kind === "stale" || n.kind === "session")) {
|
|
8804
9019
|
if (e.classList.remove("is-loading"), n.ok) {
|
|
8805
|
-
let e =
|
|
9020
|
+
let e = Wo(n.html), t = e.querySelector("[data-wui-count]");
|
|
8806
9021
|
r.replaceChildren(e), m().forEach((e, t) => {
|
|
8807
9022
|
e.id = `${r.id}-opt-${t}`;
|
|
8808
9023
|
});
|
|
8809
9024
|
let i = t ? Number(t.getAttribute("data-wui-count")) : m().length;
|
|
8810
9025
|
a && (a.textContent = i === 0 ? "No results" : `${i} ${i === 1 ? "result" : "results"}`);
|
|
8811
|
-
} else r.replaceChildren(
|
|
9026
|
+
} else r.replaceChildren(Go("wui-topsearch-empty", "Search is unavailable right now."));
|
|
8812
9027
|
p = -1, _();
|
|
8813
9028
|
}
|
|
8814
9029
|
};
|
|
@@ -8826,7 +9041,7 @@ function Ro(e, t) {
|
|
|
8826
9041
|
t.preventDefault(), h(p + (t.key === "ArrowDown" ? 1 : -1));
|
|
8827
9042
|
} else if (t.key === "Enter") {
|
|
8828
9043
|
let e = m();
|
|
8829
|
-
!r.hidden && p >= 0 && e[p] ? (t.preventDefault(), y(e[p].getAttribute("href"))) : c && n.value.trim() !== "" && (t.preventDefault(), y(
|
|
9044
|
+
!r.hidden && p >= 0 && e[p] ? (t.preventDefault(), y(e[p].getAttribute("href"))) : c && n.value.trim() !== "" && (t.preventDefault(), y(Jo(c, s, n.value.trim())));
|
|
8830
9045
|
} else t.key === "Escape" && (r.hidden ? e.classList.contains("is-open") && (t.preventDefault(), v(!1), i?.focus()) : (t.preventDefault(), g()));
|
|
8831
9046
|
}), r.addEventListener("click", (e) => {
|
|
8832
9047
|
let t = e.target.closest(".wui-topsearch-hit");
|
|
@@ -8836,7 +9051,7 @@ function Ro(e, t) {
|
|
|
8836
9051
|
v(t), t && n.focus();
|
|
8837
9052
|
});
|
|
8838
9053
|
let x = (e) => {
|
|
8839
|
-
e.key !== "/" || e.ctrlKey || e.metaKey || e.altKey ||
|
|
9054
|
+
e.key !== "/" || e.ctrlKey || e.metaKey || e.altKey || qo(e.target) || (e.preventDefault(), v(!0), n.focus());
|
|
8840
9055
|
}, S = (t) => {
|
|
8841
9056
|
e.contains(t.target) || (g(), e.classList.contains("is-open") && v(!1));
|
|
8842
9057
|
};
|
|
@@ -8844,13 +9059,13 @@ function Ro(e, t) {
|
|
|
8844
9059
|
clearTimeout(f), d.abort(), document.removeEventListener("keydown", x), document.removeEventListener("pointerdown", S);
|
|
8845
9060
|
});
|
|
8846
9061
|
}
|
|
8847
|
-
function
|
|
9062
|
+
function Xo(e) {
|
|
8848
9063
|
let t = [], n = e.dataset.wuiCollapsedCookie;
|
|
8849
|
-
n && e.addEventListener("wui:shell:collapse", (e) =>
|
|
9064
|
+
n && e.addEventListener("wui:shell:collapse", (e) => Uo(n, !!e.detail?.collapsed)), e.addEventListener("click", (t) => {
|
|
8850
9065
|
t.target.closest("[data-wui-tabbar-more]") && e.querySelector("[data-app-shell-menu]")?.click();
|
|
8851
9066
|
});
|
|
8852
|
-
let r = e.querySelector("[data-wui-bell]"), i = r ?
|
|
8853
|
-
a &&
|
|
9067
|
+
let r = e.querySelector("[data-wui-bell]"), i = r ? Ko(r, t) : null, a = e.querySelector("[data-wui-topsearch]");
|
|
9068
|
+
a && Yo(a, t);
|
|
8854
9069
|
let o = {
|
|
8855
9070
|
el: e,
|
|
8856
9071
|
setUnread(e) {
|
|
@@ -8870,109 +9085,109 @@ function zo(e) {
|
|
|
8870
9085
|
n ? n.click() : e.classList.toggle("collapsed", !!t);
|
|
8871
9086
|
}
|
|
8872
9087
|
};
|
|
8873
|
-
|
|
9088
|
+
Vo.set(e, o);
|
|
8874
9089
|
let s = (n) => {
|
|
8875
9090
|
if (n.target === e || n.target.contains?.(e)) {
|
|
8876
9091
|
for (let e of t) e();
|
|
8877
|
-
|
|
9092
|
+
Vo.delete(e), delete e.dataset.wuiPartsWired, document.removeEventListener("wui:teardown", s);
|
|
8878
9093
|
}
|
|
8879
9094
|
};
|
|
8880
9095
|
return document.addEventListener("wui:teardown", s), o;
|
|
8881
9096
|
}
|
|
8882
|
-
function
|
|
9097
|
+
function Zo(e = document) {
|
|
8883
9098
|
let t = [];
|
|
8884
9099
|
e instanceof Element && e.matches("[data-app-shell]") && t.push(e), t.push(...e.querySelectorAll("[data-app-shell]"));
|
|
8885
|
-
for (let e of t) e.dataset.wuiPartsWired || (e.dataset.wuiPartsWired = "1",
|
|
9100
|
+
for (let e of t) e.dataset.wuiPartsWired || (e.dataset.wuiPartsWired = "1", Xo(e));
|
|
8886
9101
|
}
|
|
8887
|
-
function
|
|
9102
|
+
function Qo(e) {
|
|
8888
9103
|
let t = e?.closest?.("[data-app-shell]") ?? null;
|
|
8889
|
-
return t ? (
|
|
9104
|
+
return t ? (Vo.has(t) || Zo(t), Vo.get(t) ?? null) : null;
|
|
8890
9105
|
}
|
|
8891
9106
|
//#endregion
|
|
8892
9107
|
//#region src/themeTransition.js
|
|
8893
|
-
var
|
|
9108
|
+
var $o = [
|
|
8894
9109
|
"light",
|
|
8895
9110
|
"dark",
|
|
8896
9111
|
"auto"
|
|
8897
|
-
],
|
|
9112
|
+
], es = [
|
|
8898
9113
|
"wave",
|
|
8899
9114
|
"circle",
|
|
8900
9115
|
"slide",
|
|
8901
9116
|
"blinds",
|
|
8902
9117
|
"fade",
|
|
8903
9118
|
"none"
|
|
8904
|
-
],
|
|
9119
|
+
], ts = "wave", ns = "theme", rs = {
|
|
8905
9120
|
wave: 1100,
|
|
8906
9121
|
circle: 700,
|
|
8907
9122
|
slide: 600,
|
|
8908
9123
|
blinds: 900,
|
|
8909
9124
|
fade: 350,
|
|
8910
9125
|
none: 0
|
|
8911
|
-
},
|
|
8912
|
-
function
|
|
8913
|
-
return e === "dark" || e === "auto" &&
|
|
9126
|
+
}, is = "wui-theme-switching", as = "wui:theme:change", os = "wui-theme-toggle", ss = "(prefers-color-scheme: dark)", cs = (e) => typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia(e).matches, ls = (e) => $o.includes(e);
|
|
9127
|
+
function us(e) {
|
|
9128
|
+
return e === "dark" || e === "auto" && cs(ss) ? "dark" : "light";
|
|
8914
9129
|
}
|
|
8915
|
-
function
|
|
9130
|
+
function ds(e = ns, { includeAuto: t = !1 } = {}) {
|
|
8916
9131
|
let n = null;
|
|
8917
9132
|
try {
|
|
8918
9133
|
n = window.localStorage.getItem(e);
|
|
8919
9134
|
} catch {}
|
|
8920
|
-
return !
|
|
9135
|
+
return !ls(n) || n === "auto" && !t ? "light" : n;
|
|
8921
9136
|
}
|
|
8922
|
-
function
|
|
9137
|
+
function fs(e, t = ns) {
|
|
8923
9138
|
try {
|
|
8924
9139
|
window.localStorage.setItem(t, e);
|
|
8925
9140
|
} catch {}
|
|
8926
9141
|
}
|
|
8927
|
-
function
|
|
9142
|
+
function ps(e) {
|
|
8928
9143
|
let t = document.documentElement;
|
|
8929
|
-
t.setAttribute("data-theme", e), t.setAttribute("data-bs-theme",
|
|
9144
|
+
t.setAttribute("data-theme", e), t.setAttribute("data-bs-theme", us(e)), document.dispatchEvent(new CustomEvent(as, { detail: { mode: e } }));
|
|
8930
9145
|
}
|
|
8931
|
-
function
|
|
9146
|
+
function ms(e, { includeAuto: t = !1 } = {}) {
|
|
8932
9147
|
return e === "light" ? "dark" : e === "dark" && t ? "auto" : "light";
|
|
8933
9148
|
}
|
|
8934
|
-
function
|
|
9149
|
+
function hs(e) {
|
|
8935
9150
|
if (typeof window > "u" || typeof window.matchMedia != "function") return () => {};
|
|
8936
|
-
let t = window.matchMedia(
|
|
9151
|
+
let t = window.matchMedia(ss), n = () => e(t.matches ? "dark" : "light");
|
|
8937
9152
|
return t.addEventListener("change", n), () => t.removeEventListener("change", n);
|
|
8938
9153
|
}
|
|
8939
|
-
var
|
|
9154
|
+
var gs = 60, _s = (e) => e < .5 ? 4 * e * e * e : 1 - (-2 * e + 2) ** 3 / 2, vs = (e) => e.toFixed(1), ys = (e, t) => `${vs(e)}px ${vs(t)}px`, bs = {
|
|
8940
9155
|
amplitude: 22,
|
|
8941
9156
|
segments: 36,
|
|
8942
9157
|
cycles: 1.5,
|
|
8943
9158
|
ripples: 2
|
|
8944
|
-
},
|
|
8945
|
-
let { amplitude: a, segments: o, cycles: s } =
|
|
9159
|
+
}, xs = 6, Ss = (e, t, n, r, i) => {
|
|
9160
|
+
let { amplitude: a, segments: o, cycles: s } = bs, c = n * (t + 2 * a), l = i ? t + a - c : c - a, u = i ? t + 2 * a : -2 * a, d = [ys(0, u)];
|
|
8946
9161
|
for (let t = 0; t <= o; t++) {
|
|
8947
9162
|
let n = e * t / o, i = l + a * Math.sin(2 * Math.PI * s * t / o + r);
|
|
8948
|
-
d.push(
|
|
9163
|
+
d.push(ys(n, i));
|
|
8949
9164
|
}
|
|
8950
|
-
return d.push(
|
|
8951
|
-
},
|
|
8952
|
-
let i = t /
|
|
8953
|
-
for (let t = 0; t <
|
|
9165
|
+
return d.push(ys(e, u)), `polygon(${d.join(", ")})`;
|
|
9166
|
+
}, Cs = (e, t, n, r) => {
|
|
9167
|
+
let i = t / xs, a = [];
|
|
9168
|
+
for (let t = 0; t < xs; t++) {
|
|
8954
9169
|
let o = t * i, s = i * n, c = r ? o + i - s : o, l = r ? o + i : o + s;
|
|
8955
|
-
a.push(
|
|
9170
|
+
a.push(ys(0, c), ys(e, c), ys(e, l), ys(0, l));
|
|
8956
9171
|
}
|
|
8957
9172
|
return `polygon(${a.join(", ")})`;
|
|
8958
9173
|
};
|
|
8959
|
-
function
|
|
9174
|
+
function ws(e, { width: t, height: n, to: r = "dark", origin: i } = {}) {
|
|
8960
9175
|
let a = r === "dark", o = [];
|
|
8961
|
-
for (let r = 0; r <=
|
|
8962
|
-
let s = r /
|
|
9176
|
+
for (let r = 0; r <= gs; r++) {
|
|
9177
|
+
let s = r / gs, c = _s(s);
|
|
8963
9178
|
switch (e) {
|
|
8964
9179
|
case "circle": {
|
|
8965
9180
|
let e = i?.x ?? t / 2, r = i?.y ?? n / 2, a = Math.hypot(Math.max(e, t - e), Math.max(r, n - r));
|
|
8966
|
-
o.push({ clipPath: `circle(${
|
|
9181
|
+
o.push({ clipPath: `circle(${vs(a * c)}px at ${vs(e)}px ${vs(r)}px)` });
|
|
8967
9182
|
break;
|
|
8968
9183
|
}
|
|
8969
9184
|
case "slide": {
|
|
8970
9185
|
let e = n * (1 - c);
|
|
8971
|
-
o.push({ clipPath: a ? `inset(${
|
|
9186
|
+
o.push({ clipPath: a ? `inset(${vs(e)}px 0px 0px 0px)` : `inset(0px 0px ${vs(e)}px 0px)` });
|
|
8972
9187
|
break;
|
|
8973
9188
|
}
|
|
8974
9189
|
case "blinds":
|
|
8975
|
-
o.push({ clipPath:
|
|
9190
|
+
o.push({ clipPath: Cs(t, n, c, a) });
|
|
8976
9191
|
break;
|
|
8977
9192
|
case "fade":
|
|
8978
9193
|
o.push({
|
|
@@ -8981,20 +9196,20 @@ function ps(e, { width: t, height: n, to: r = "dark", origin: i } = {}) {
|
|
|
8981
9196
|
});
|
|
8982
9197
|
break;
|
|
8983
9198
|
case "none": return [];
|
|
8984
|
-
default: o.push({ clipPath:
|
|
9199
|
+
default: o.push({ clipPath: Ss(t, n, c, s * bs.ripples * 2 * Math.PI, a) });
|
|
8985
9200
|
}
|
|
8986
9201
|
}
|
|
8987
9202
|
return o;
|
|
8988
9203
|
}
|
|
8989
|
-
function
|
|
9204
|
+
function Ts(e, { effect: t = ts, to: n, origin: r, duration: i, live: a } = {}) {
|
|
8990
9205
|
let o = document.documentElement, s = n !== void 0 && o.getAttribute("data-bs-theme") === n;
|
|
8991
|
-
if (t === "none" || s ||
|
|
8992
|
-
o.classList.add(
|
|
9206
|
+
if (t === "none" || s || cs("(prefers-reduced-motion: reduce)") || typeof document.startViewTransition != "function" || typeof o.animate != "function") return e(), Promise.resolve(!1);
|
|
9207
|
+
o.classList.add(is);
|
|
8993
9208
|
let c = a instanceof Element ? a : null;
|
|
8994
|
-
c && (c.style.viewTransitionName =
|
|
8995
|
-
let l = document.startViewTransition(e), u = i ??
|
|
9209
|
+
c && (c.style.viewTransitionName = os);
|
|
9210
|
+
let l = document.startViewTransition(e), u = i ?? rs[t] ?? rs.wave;
|
|
8996
9211
|
return l.ready.then(() => {
|
|
8997
|
-
let e =
|
|
9212
|
+
let e = ws(t, {
|
|
8998
9213
|
width: window.innerWidth,
|
|
8999
9214
|
height: window.innerHeight,
|
|
9000
9215
|
to: n,
|
|
@@ -9006,16 +9221,16 @@ function ms(e, { effect: t = Wo, to: n, origin: r, duration: i, live: a } = {})
|
|
|
9006
9221
|
fill: "both",
|
|
9007
9222
|
pseudoElement: "::view-transition-new(root)"
|
|
9008
9223
|
});
|
|
9009
|
-
}).catch(() => {}), l.finished.catch(() => {}).then(() => (o.classList.remove(
|
|
9224
|
+
}).catch(() => {}), l.finished.catch(() => {}).then(() => (o.classList.remove(is), c && (c.style.viewTransitionName = ""), !0));
|
|
9010
9225
|
}
|
|
9011
9226
|
//#endregion
|
|
9012
9227
|
//#region src/index.js
|
|
9013
9228
|
var $ = (e, t) => {
|
|
9014
9229
|
typeof customElements < "u" && !customElements.get(e) && customElements.define(e, t);
|
|
9015
9230
|
};
|
|
9016
|
-
function
|
|
9017
|
-
$("wui-select", On), $("wui-country-select", Mn), $("wui-phone", Qr), $("wui-datepicker", zn), $("wui-date-range", Bn), $("wui-dock", Vn), $("wui-image-crop", hr), $("wui-kanban",
|
|
9231
|
+
function Es() {
|
|
9232
|
+
$("wui-select", On), $("wui-country-select", Mn), $("wui-phone", Qr), $("wui-datepicker", zn), $("wui-date-range", Bn), $("wui-dock", Vn), $("wui-image-crop", hr), $("wui-kanban", Pt), $("wui-consent-banner", un), $("wui-slider", ei), $("wui-sortable", ui), $("wui-timepicker", Si), $("wui-tour", ji), $("wui-tree", zi), $("wui-autocomplete", Zt), $("wui-command-palette", nn), $("wui-context-menu", Tn), $("wui-multiselect", Sr), $("wui-taginput", pi), $("wui-otp", Pr), $("wui-status-icon", Rt), $("wui-wizard-step", Wi), $("wui-wizard", Vi);
|
|
9018
9233
|
}
|
|
9019
|
-
|
|
9234
|
+
Es();
|
|
9020
9235
|
//#endregion
|
|
9021
|
-
export {
|
|
9236
|
+
export { fo as CONFIRM_DIALOG_ID, po as CONFIRM_TONES, Gi as COPY_FEEDBACK_MS, ae as CSRF_META_NAME, n as CURRENCIES, a as DATE_PATTERNS, E as DEFAULT_CSRF_HEADER, qi as DEFAULT_IMAGE_ACCEPT, Ji as DEFAULT_MAX_SIZE_MB, Ra as DEFAULT_PASSWORD_RULES, za as DEFAULT_REQUIREMENTS_TITLE, ts as DEFAULT_THEME_EFFECT, ns as DEFAULT_THEME_STORAGE_KEY, i as DURATION_UNITS, s as EMPTY_VALUE, ho as FLASH_STORAGE_KEY, mo as FLASH_VARIANTS, t as FORMAT_STYLES, oe as HTTP_KINDS, o as IST_TIME_ZONE, ut as KANBAN_DRAG_THRESHOLD_PX, lt as KANBAN_LONG_PRESS_MS, ct as KANBAN_PHONE_QUERY, st as KANBAN_STORAGE_PREFIX, ot as KANBAN_SUMMARY_FORMATS, j as KANBAN_TEXT, at as KANBAN_TONES, ca as MASK_INPUT_TYPES, ga as MASK_NAMES, r as MONEY_UNITS, Wa as SELECT_ALL_LABEL, Q as SELECT_CELL_CLASS, Ga as SELECT_ROW_LABEL, go as SERVER_ACTION_TEXT, Lt as STATUS_TONES, as as THEME_CHANGE_EVENT, es as THEME_EFFECTS, rs as THEME_EFFECT_DURATION, os as THEME_LIVE_NAME, $o as THEME_MODES, is as THEME_SWITCHING_CLASS, D as WUI_HEADERS, Zt as WuiAutocomplete, nn as WuiCommandPalette, un as WuiConsentBanner, Tn as WuiContextMenu, Mn as WuiCountrySelect, zn as WuiDatePicker, Bn as WuiDateRange, Vn as WuiDock, Pt as WuiKanban, Sr as WuiMultiSelect, Pr as WuiOtp, Qr as WuiPhone, On as WuiSelect, ei as WuiSlider, ui as WuiSortable, Rt as WuiStatusIcon, pi as WuiTagInput, Si as WuiTimePicker, ji as WuiTour, zi as WuiTree, Vi as WuiWizard, Wi as WuiWizardStep, na as acceptLabel, Za as addRowSelectCells, Qa as addSelectColumn, ps as applyTheme, Aa as attachInputMask, Va as buildPasswordRules, ue as classifyStatus, Ki as copyTextToClipboard, ki as createLocalSeenStore, pe as createRequestQueue, qa as createSelectHeaderCell, Ja as createSelectRowCell, Ya as createSelectSpacerCell, Es as defineWeborityElements, Ha as evaluatePassword, C as formatCompact, S as formatCurrency, T as formatDate, ne as formatDuration, Ca as formatMasked, x as formatNumber, te as formatPercent, ie as formatValue, lo as getServerTable, Qo as getShell, B as glyphSvg, La as initInputMasks, rt as initRemoteModals, zo as initServerActions, co as initServerTables, Zo as initShellParts, $i as isImageFile, ta as isImageOnlyAccept, va as isMaskPattern, ea as isPdfFile, N as kanbanCardLabel, Ot as kanbanStorageKey, jt as kanbanSummaryFormat, it as loadRemoteModal, Ea as maskedPostValue, $t as matchSegments, ra as matchesAccept, ms as nextTheme, Ua as passwordSatisfies, Sa as postedMasked, xa as rawMasked, ce as readCsrf, kt as readKanbanCollapsed, ds as readStoredTheme, ba as resolveMask, us as resolveTheme, fs as storeTheme, Mt as sumKanbanValues, $a as syncSelectAll, ws as themeKeyframes, re as toInstant, Ts as transitionTheme, ia as validateFile, hs as watchSystemTheme, At as writeKanbanCollapsed, fe as wuiFetch };
|