@wssto2/vue-core 0.4.19 → 0.4.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/{Activity-CLyG5Y9o.js → Activity-C0NvjIi5.js} +3 -3
  2. package/dist/{Changes-xF1VMbqD.js → Changes-hoMHeAZt.js} +2 -2
  3. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-nojILoAf.js → CollectionPage.vue_vue_type_script_setup_true_lang-BNM_cbXa.js} +2 -2
  4. package/dist/DateField.vue_vue_type_script_setup_true_lang-CpuH0WTl.js +281 -0
  5. package/dist/{DeadLetters-AbbNs69D.js → DeadLetters-O6QReswO.js} +2 -2
  6. package/dist/{FormGroup.vue_vue_type_script_setup_true_lang-C7nq7MJB.js → FormGroup.vue_vue_type_script_setup_true_lang-DSwSRsA5.js} +2 -1
  7. package/dist/{General-De4Q6Wfn.js → General-9Sgxb74n.js} +4 -4
  8. package/dist/{NewRolePage-QAv_XsT0.js → NewRolePage-D-LunWMH.js} +2 -2
  9. package/dist/NumberField.vue_vue_type_script_setup_true_lang-DaE5BLm4.js +161 -0
  10. package/dist/{ProfilePage-CjjKhkHX.js → ProfilePage-DJUDCyEr.js} +3 -3
  11. package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-FLJk6Kb2.js → RoleEditor.vue_vue_type_script_setup_true_lang-D-b-O6SG.js} +4 -4
  12. package/dist/{RolePage-De7s2sYr.js → RolePage-Ha-EgoEJ.js} +4 -4
  13. package/dist/{RolesPage-TXQKtK_J.js → RolesPage-8uWWCClN.js} +3 -3
  14. package/dist/SelectField.vue_vue_type_script_setup_true_lang-C3FbRQW7.js +515 -0
  15. package/dist/{SessionList.vue_vue_type_script_setup_true_lang-CuxVe7rm.js → SessionList.vue_vue_type_script_setup_true_lang-D5qm77Zo.js} +1 -1
  16. package/dist/{Sessions-BDLI0o-z.js → Sessions-Dz4KYMu9.js} +2 -2
  17. package/dist/{SettingsPage-Kzcqv91E.js → SettingsPage-D47NSOYW.js} +3 -3
  18. package/dist/{SignIn-DKo46hNK.js → SignIn-CNv68Tba.js} +2 -2
  19. package/dist/{SignInPage-B2v3is80.js → SignInPage-CsjC4aiV.js} +2 -2
  20. package/dist/{SignIns-D-_a_S6O.js → SignIns-CgsNf8uf.js} +1 -1
  21. package/dist/{TextField.vue_vue_type_script_setup_true_lang-BslHroDP.js → TextField.vue_vue_type_script_setup_true_lang-CP2WeU36.js} +114 -111
  22. package/dist/TextareaField.vue_vue_type_script_setup_true_lang-BJ4__cvJ.js +93 -0
  23. package/dist/TimeField.vue_vue_type_script_setup_true_lang-DBxKAWRo.js +190 -0
  24. package/dist/{UserRecord-BR70ai9q.js → UserRecord-B9r_9U1z.js} +4 -4
  25. package/dist/{UsersList-BC9S6omH.js → UsersList-BBLa3OCv.js} +6 -6
  26. package/dist/access/index.js +1 -1
  27. package/dist/collection/index.js +1 -1
  28. package/dist/form/ComboField.vue.d.ts +7 -3
  29. package/dist/form/DateField.vue.d.ts +4 -0
  30. package/dist/form/DateTimeField.vue.d.ts +4 -0
  31. package/dist/form/MoneyField.vue.d.ts +10 -5
  32. package/dist/form/NumberField.vue.d.ts +13 -5
  33. package/dist/form/SelectField.vue.d.ts +3 -1
  34. package/dist/form/TextField.vue.d.ts +4 -0
  35. package/dist/form/TextareaField.vue.d.ts +4 -0
  36. package/dist/form/TimeField.vue.d.ts +4 -0
  37. package/dist/form/index.d.ts +1 -1
  38. package/dist/form/index.js +1036 -1012
  39. package/dist/form/options.d.ts +4 -0
  40. package/dist/identity/index.js +1 -1
  41. package/dist/{index-B9KqrN-F.js → index-D-0JNiFF.js} +2 -2
  42. package/dist/{index-BrqxylSS.js → index-D6BjUQJT.js} +5 -5
  43. package/dist/{index-D8akxuKo.js → index-Dxu7ZfCC.js} +11 -11
  44. package/dist/index.d.ts +1 -1
  45. package/dist/index.js +1 -1
  46. package/dist/notifications/index.js +1 -1
  47. package/dist/{status-vMwum3Y9.js → status-BLTC7wi1.js} +1 -1
  48. package/dist/styles.css +1 -1
  49. package/package.json +1 -1
  50. package/dist/DateField.vue_vue_type_script_setup_true_lang-CfPwcEM2.js +0 -278
  51. package/dist/NumberField.vue_vue_type_script_setup_true_lang-djJvP6Og.js +0 -150
  52. package/dist/SelectField.vue_vue_type_script_setup_true_lang-ByDo_32P.js +0 -493
  53. package/dist/TextareaField.vue_vue_type_script_setup_true_lang-XZRHwx-n.js +0 -91
  54. package/dist/TimeField.vue_vue_type_script_setup_true_lang-BB7ZGpvP.js +0 -187
@@ -3,10 +3,10 @@ import { useI18n as q } from "vue-i18n";
3
3
  import { _ as D } from "./IconTile.vue_vue_type_script_setup_true_lang-_FXvaj93.js";
4
4
  import { _ as I } from "./Tabs.vue_vue_type_script_setup_true_lang-CcMcE38r.js";
5
5
  import { u as O } from "./format-D8X4zsx6.js";
6
- import { _ as U } from "./DateField.vue_vue_type_script_setup_true_lang-CfPwcEM2.js";
7
- import { _ as T } from "./FormGroup.vue_vue_type_script_setup_true_lang-C7nq7MJB.js";
6
+ import { _ as U } from "./DateField.vue_vue_type_script_setup_true_lang-CpuH0WTl.js";
7
+ import { _ as T } from "./FormGroup.vue_vue_type_script_setup_true_lang-DSwSRsA5.js";
8
8
  import { e as z } from "./control-B4SdblL6.js";
9
- import { P as G, c as H, i as J } from "./index-D8akxuKo.js";
9
+ import { P as G, c as H, i as J } from "./index-Dxu7ZfCC.js";
10
10
  import { u as K } from "./platform-q3cjODLx.js";
11
11
  import { b as M } from "./routeResource-DlTsGTg_.js";
12
12
  import { _ as Q } from "./AsyncSection.vue_vue_type_script_setup_true_lang-Blj6KgCr.js";
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as k, computed as N, openBlock as n, createBlock as u, unref as a, withCtx as g, createElementBlock as p, Fragment as _, renderList as $, createElementVNode as i, toDisplayString as h, createCommentVNode as C, ref as x, watch as b, createVNode as y } from "vue";
2
2
  import { useI18n as E } from "vue-i18n";
3
- import { P as V, i as R } from "./index-D8akxuKo.js";
3
+ import { P as V, i as R } from "./index-Dxu7ZfCC.js";
4
4
  import { u as S } from "./platform-q3cjODLx.js";
5
5
  import { b as B } from "./routeResource-DlTsGTg_.js";
6
6
  import { _ as F } from "./AsyncSection.vue_vue_type_script_setup_true_lang-Blj6KgCr.js";
@@ -8,7 +8,7 @@ import { u as L } from "./useLoad-M7V-AVwR.js";
8
8
  import { _ as P } from "./Avatar.vue_vue_type_script_setup_true_lang-CFIheaSr.js";
9
9
  import { _ as I } from "./IconTile.vue_vue_type_script_setup_true_lang-_FXvaj93.js";
10
10
  import { u as O } from "./format-D8X4zsx6.js";
11
- import { _ as T } from "./FormGroup.vue_vue_type_script_setup_true_lang-C7nq7MJB.js";
11
+ import { _ as T } from "./FormGroup.vue_vue_type_script_setup_true_lang-DSwSRsA5.js";
12
12
  import { e as U } from "./control-B4SdblL6.js";
13
13
  import { _ as q } from "./PageBar.vue_vue_type_script_setup_true_lang-B7qdEeej.js";
14
14
  import { _ as z } from "./SectionIntro.vue_vue_type_script_setup_true_lang-CZtPrmXD.js";
@@ -14,8 +14,8 @@ import { u as bt, _ as gt } from "./rowLayout-D1vrdy0s.js";
14
14
  import { _ as Ye } from "./Menu.vue_vue_type_script_setup_true_lang-DsFOeCVe.js";
15
15
  import { _ as Ze } from "./Popover.vue_vue_type_script_setup_true_lang-C70GrCP7.js";
16
16
  import { _ as we } from "./ToneDot.vue_vue_type_script_setup_true_lang-99rNn-L5.js";
17
- import { _ as ht } from "./NumberField.vue_vue_type_script_setup_true_lang-djJvP6Og.js";
18
- import { _ as yt } from "./SelectField.vue_vue_type_script_setup_true_lang-ByDo_32P.js";
17
+ import { _ as ht } from "./NumberField.vue_vue_type_script_setup_true_lang-DaE5BLm4.js";
18
+ import { _ as yt } from "./SelectField.vue_vue_type_script_setup_true_lang-C3FbRQW7.js";
19
19
  import { a as _t } from "./mediaQuery-CygcXmFW.js";
20
20
  import { _ as xt } from "./Sheet.vue_vue_type_script_setup_true_lang-DgOFV4fa.js";
21
21
  import { t as ke } from "./toast-CqSDTWRX.js";
@@ -0,0 +1,281 @@
1
+ import { computed as p, defineComponent as re, useModel as oe, useTemplateRef as T, openBlock as g, createBlock as Y, mergeProps as E, unref as s, createSlots as ae, withCtx as y, createElementBlock as C, Fragment as H, createVNode as D, createTextVNode as ne, toDisplayString as K, createCommentVNode as M, createElementVNode as O, normalizeClass as le, renderSlot as S, mergeModels as G, mergeDefaults as se, nextTick as J } from "vue";
2
+ import { useI18n as L } from "vue-i18n";
3
+ import { _ as ie } from "./DateButton.vue_vue_type_script_setup_true_lang-CovKG5lN.js";
4
+ import { u as W } from "./format-D8X4zsx6.js";
5
+ import { _ as de } from "./Icon.vue_vue_type_script_lang-D7oC-d-S.js";
6
+ import { u as ue } from "./mediaQuery-CygcXmFW.js";
7
+ import { _ as ce } from "./Popover.vue_vue_type_script_setup_true_lang-C70GrCP7.js";
8
+ import { c as me, _ as fe, f as pe, b as be } from "./control-B4SdblL6.js";
9
+ import { e as q, f as j, m as X, g as Z, h as ve, j as ye, u as ke, k as ge, _ as he, l as xe, c as we } from "./useTypedEntry-C7k7Dyl-.js";
10
+ const _e = ["d", "m", "y"];
11
+ function $e(o) {
12
+ const r = o("2033-11-22"), t = { y: r.indexOf("2033") >= 0 ? r.indexOf("2033") : r.indexOf("33"), m: r.indexOf("11"), d: r.indexOf("22") };
13
+ return t.y < 0 || t.m < 0 || t.d < 0 ? _e : ["d", "m", "y"].sort((e, a) => t[e] - t[a]);
14
+ }
15
+ const De = (o) => o.trim().toLowerCase().replace(/\.+$/, "");
16
+ function Ne(o, r) {
17
+ if (o.length === 4) return Number(o);
18
+ if (o.length > 2) return null;
19
+ const t = 2e3 + Number(o);
20
+ return t > Number(r.slice(0, 4)) + 30 ? t - 100 : t;
21
+ }
22
+ function h(o, r) {
23
+ const t = o.y === void 0 ? Number(r.slice(0, 4)) : Ne(o.y, r), e = o.m === void 0 ? Number(r.slice(5, 7)) : Number(o.m);
24
+ return t === null || o.d === void 0 ? null : X(t, e, Number(o.d));
25
+ }
26
+ function Te(o, r) {
27
+ const t = r.today ?? q(), e = De(o);
28
+ if (e === "") return null;
29
+ const { words: a } = r;
30
+ if (a.today.includes(e)) return t;
31
+ if (a.tomorrow.includes(e)) return j(t, 1);
32
+ if (a.yesterday.includes(e)) return j(t, -1);
33
+ const u = /^([+-])\s*(\d{1,4})$/.exec(e);
34
+ if (u) return j(t, Number(u[2]) * (u[1] === "-" ? -1 : 1));
35
+ const i = /^(\d{4})-(\d{1,2})-(\d{1,2})$/.exec(e);
36
+ if (i) return X(Number(i[1]), Number(i[2]), Number(i[3]));
37
+ if (!/^[\d\s./-]+$/.test(e)) return null;
38
+ const n = r.order, x = n.filter((m) => m !== "y");
39
+ if (/^\d+$/.test(e)) {
40
+ if (e.length <= 2) return h({ d: e }, t);
41
+ if (e.length === 4) return h(F(x, [e.slice(0, 2), e.slice(2)]), t);
42
+ if (e.length === 6 || e.length === 8) {
43
+ const m = n.map((k) => k === "y" ? e.length - 4 : 2);
44
+ let w = 0;
45
+ const N = n.map((k, b) => [k, e.slice(w, w += m[b])]);
46
+ return h(Object.fromEntries(N), t);
47
+ }
48
+ return null;
49
+ }
50
+ const c = e.split(/[^\d]+/).filter(Boolean);
51
+ return c.length === 3 ? h(F(n, c), t) : c.length === 2 ? h(F(x, c), t) : c.length === 1 ? h({ d: c[0] }, t) : null;
52
+ }
53
+ function F(o, r) {
54
+ return Object.fromEntries(o.map((t, e) => [t, r[e]]));
55
+ }
56
+ function Qe(o) {
57
+ const r = o.trim().replace(/^(\d{4}-\d{2}-\d{2})T/, "$1 ").split(/\s+/).filter(Boolean), t = r[r.length - 1];
58
+ if (t === void 0) return { date: null, time: null };
59
+ if (!(t.includes(":") || r.length > 1 && /^\d{1,2}\.\d{2}$/.test(t))) return { date: r.join(" "), time: null };
60
+ const a = r.slice(0, -1).join(" ");
61
+ return { date: a === "" ? null : a, time: t };
62
+ }
63
+ function Ce(o, r, t) {
64
+ const e = o(t), a = /\D+/.exec(e)?.[0].trim() ?? ".", u = /\D+$/.test(e) ? a : "", i = { d: String(Number(t.slice(8))), m: String(Number(t.slice(5, 7))), y: "" };
65
+ return r.filter((n) => n !== "y").map((n) => i[n]).join(a) + u;
66
+ }
67
+ function Oe(o) {
68
+ const { t: r } = L(), t = W(), e = (n) => t.date(n), a = p(() => $e(e)), u = p(() => ({
69
+ today: [r("core.form.date.words.today").toLowerCase(), "today"],
70
+ tomorrow: [r("core.form.date.words.tomorrow").toLowerCase(), "tomorrow"],
71
+ yesterday: [r("core.form.date.words.yesterday").toLowerCase(), "yesterday"]
72
+ }));
73
+ return {
74
+ placeholder: p(() => r("core.form.date.placeholder", { example: Ce(e, a.value, q()) })),
75
+ /** The day a text means, or null. */
76
+ parse: (n) => Te(n, { order: a.value, words: u.value }),
77
+ available: (n) => !Z(n, o()),
78
+ invalidMessage: () => r("core.form.date.invalid", { example: e(q()) }),
79
+ unavailableMessage: () => r("core.form.date.unavailable")
80
+ };
81
+ }
82
+ function qe(o, r, t) {
83
+ const { t: e } = L();
84
+ return p(() => {
85
+ const a = q();
86
+ return (o() ?? ve(r())).map((u) => {
87
+ const i = ye(u, (n) => e(`core.form.date.${n.replace(/-/g, "_")}`), a);
88
+ return { ...i, disabled: Z(i.value, t()) };
89
+ });
90
+ });
91
+ }
92
+ const Pe = ["id", "name", "value", "placeholder", "disabled", "required", "aria-required", "aria-invalid", "aria-describedby"], Ve = ["aria-label", "onClick"], Be = { class: "flex flex-col gap-2.5" }, Ee = {
93
+ key: 0,
94
+ class: "border-t border-border-separator pt-2.5"
95
+ }, Me = { class: "text-footnote text-content-muted" }, Ye = /* @__PURE__ */ re({
96
+ __name: "DateField",
97
+ props: /* @__PURE__ */ G(/* @__PURE__ */ se({
98
+ label: {},
99
+ labelHidden: { type: Boolean },
100
+ hint: {},
101
+ error: {},
102
+ required: { type: Boolean },
103
+ editable: { type: Boolean },
104
+ disabled: { type: Boolean },
105
+ lockedReason: {},
106
+ presentation: {},
107
+ name: {},
108
+ min: {},
109
+ max: {},
110
+ disabledDates: { type: [Array, Function] },
111
+ openOn: {},
112
+ quickPicks: {}
113
+ }, { ...be, min: void 0, max: void 0, disabledDates: void 0, openOn: void 0, quickPicks: void 0 }), {
114
+ modelValue: { default: null },
115
+ modelModifiers: {}
116
+ }),
117
+ emits: /* @__PURE__ */ G(["focus", "blur"], ["update:modelValue"]),
118
+ setup(o, { expose: r, emit: t }) {
119
+ const e = o, a = oe(o, "modelValue"), u = t, { t: i } = L(), n = W(), x = ue(), c = T("input"), m = T("popover"), w = T("calendar"), N = T("sheet"), k = p(() => ({ min: e.min, max: e.max, disabled: e.disabledDates })), b = Oe(() => k.value), f = ke({
120
+ model: a,
121
+ display: (l) => n.date(l),
122
+ parse: (l) => {
123
+ const d = b.parse(l);
124
+ return d ? b.available(d) ? { value: d } : { error: b.unavailableMessage() } : { error: b.invalidMessage() };
125
+ }
126
+ }), P = qe(() => e.quickPicks, () => x.value, () => k.value), z = p(() => e.error || f.message.value), V = p(() => a.value ? n.date(a.value) : null), ee = me("date", () => z.value ? "error" : e.disabled ? "locked" : "rest"), U = p(() => f.typed.value ?? (ge(a.value) ? a.value : null));
127
+ async function B(l) {
128
+ e.disabled || (m.value?.present(), l && (await J(), await J(), w.value?.focus()));
129
+ }
130
+ function te(l) {
131
+ l.key === "Enter" ? (f.commit(), m.value?.dismiss()) : l.key === "ArrowDown" && (l.preventDefault(), B(!0));
132
+ }
133
+ function R(l, d) {
134
+ f.set(l), d();
135
+ }
136
+ return r({ focus: () => c.value?.focus() }), (l, d) => (g(), Y(fe, E({ ...s(pe)(e), error: z.value }, {
137
+ value: V.value,
138
+ "value-style": "numeric"
139
+ }), ae({
140
+ default: y(({ id: A, describedby: I, invalid: Q }) => [
141
+ s(x) ? (g(), C(H, { key: 0 }, [
142
+ D(ie, E({ id: A, "aria-describedby": I }, {
143
+ disabled: e.disabled,
144
+ invalid: Q,
145
+ placeholder: s(i)("core.form.select.choose"),
146
+ onClick: d[0] || (d[0] = (_) => N.value?.present())
147
+ }), {
148
+ default: y(() => [
149
+ V.value ? (g(), C(H, { key: 0 }, [
150
+ ne(K(V.value), 1)
151
+ ], 64)) : M("", !0)
152
+ ]),
153
+ _: 1
154
+ }, 16, ["disabled", "invalid", "placeholder"]),
155
+ D(he, {
156
+ ref_key: "sheet",
157
+ ref: N,
158
+ title: e.label ?? s(i)("core.form.date.calendar"),
159
+ mode: "date",
160
+ "model-value": a.value,
161
+ min: e.min,
162
+ max: e.max,
163
+ "disabled-dates": e.disabledDates,
164
+ "open-on": e.openOn,
165
+ shortcuts: s(P),
166
+ clearable: !e.required,
167
+ "onUpdate:modelValue": s(f).set
168
+ }, null, 8, ["title", "model-value", "min", "max", "disabled-dates", "open-on", "shortcuts", "clearable", "onUpdate:modelValue"])
169
+ ], 64)) : (g(), Y(ce, {
170
+ key: 1,
171
+ ref_key: "popover",
172
+ ref: m,
173
+ label: e.label ?? s(i)("core.form.date.calendar"),
174
+ width: "lg",
175
+ placement: "bottom-start",
176
+ arrow: !1,
177
+ autofocus: !1
178
+ }, {
179
+ trigger: y(({ attrs: _, presented: $ }) => [
180
+ O("div", {
181
+ class: le(["inline-flex max-w-full items-center gap-2", s(ee)])
182
+ }, [
183
+ O("input", E({
184
+ id: A,
185
+ ref_key: "input",
186
+ ref: c
187
+ }, _, {
188
+ type: "text",
189
+ role: "combobox",
190
+ autocomplete: "off",
191
+ size: "16",
192
+ name: e.name,
193
+ value: s(f).text.value,
194
+ placeholder: s(b).placeholder.value,
195
+ disabled: e.disabled,
196
+ required: e.required,
197
+ "aria-required": e.required || void 0,
198
+ "aria-invalid": Q || void 0,
199
+ "aria-describedby": I,
200
+ class: "block min-h-7 min-w-0 border-0 bg-transparent py-1 pl-2.5 text-body tabular-nums text-content-strong placeholder:text-content-disabled focus:outline-none focus:ring-0 disabled:cursor-not-allowed",
201
+ onInput: d[1] || (d[1] = (v) => s(f).input(v.target.value)),
202
+ onFocus: d[2] || (d[2] = (v) => u("focus", v)),
203
+ onBlur: d[3] || (d[3] = (v) => {
204
+ s(f).commit(), u("blur", v);
205
+ }),
206
+ onKeydown: te,
207
+ onClick: d[4] || (d[4] = (v) => B(!1))
208
+ }), null, 16, Pe),
209
+ e.disabled ? M("", !0) : (g(), C("button", {
210
+ key: 0,
211
+ type: "button",
212
+ tabindex: "-1",
213
+ "aria-label": s(i)("core.form.date.open"),
214
+ class: "mr-2 flex shrink-0 cursor-pointer items-center text-content-link",
215
+ onClick: (v) => $ ? m.value?.dismiss() : B(!0)
216
+ }, [
217
+ D(s(de), {
218
+ name: "calendarLine",
219
+ size: 18
220
+ })
221
+ ], 8, Ve))
222
+ ], 2)
223
+ ]),
224
+ default: y(({ dismiss: _ }) => [
225
+ O("div", Be, [
226
+ D(xe, {
227
+ ref_key: "calendar",
228
+ ref: w,
229
+ "model-value": U.value,
230
+ min: e.min,
231
+ max: e.max,
232
+ "disabled-dates": e.disabledDates,
233
+ "open-on": e.openOn,
234
+ "month-picker": "",
235
+ "onUpdate:modelValue": ($) => R($, _)
236
+ }, null, 8, ["model-value", "min", "max", "disabled-dates", "open-on", "onUpdate:modelValue"]),
237
+ s(P).length > 0 ? (g(), C("div", Ee, [
238
+ D(we, {
239
+ items: s(P),
240
+ selected: U.value,
241
+ onPick: ($) => R($, _)
242
+ }, null, 8, ["items", "selected", "onPick"])
243
+ ])) : M("", !0),
244
+ O("p", Me, K(s(i)("core.form.date.keys")), 1)
245
+ ])
246
+ ]),
247
+ _: 2
248
+ }, 1032, ["label"]))
249
+ ]),
250
+ _: 2
251
+ }, [
252
+ l.$slots.trailing ? {
253
+ name: "trailing",
254
+ fn: y(() => [
255
+ S(l.$slots, "trailing")
256
+ ]),
257
+ key: "0"
258
+ } : void 0,
259
+ l.$slots.labelTrailing ? {
260
+ name: "labelTrailing",
261
+ fn: y(() => [
262
+ S(l.$slots, "labelTrailing")
263
+ ]),
264
+ key: "1"
265
+ } : void 0,
266
+ l.$slots.readonly ? {
267
+ name: "readonly",
268
+ fn: y(() => [
269
+ S(l.$slots, "readonly")
270
+ ]),
271
+ key: "2"
272
+ } : void 0
273
+ ]), 1040, ["value"]));
274
+ }
275
+ });
276
+ export {
277
+ Ye as _,
278
+ qe as a,
279
+ Qe as s,
280
+ Oe as u
281
+ };
@@ -1,10 +1,10 @@
1
1
  import { defineComponent as B, useTemplateRef as C, computed as y, ref as v, openBlock as D, createBlock as z, unref as r, withCtx as m, createVNode as F, createElementVNode as b, normalizeClass as $, toDisplayString as h } from "vue";
2
2
  import { useI18n as q } from "vue-i18n";
3
3
  import { a as k } from "./error-CD7x0Jrz.js";
4
- import { u as V, _ as N } from "./CollectionPage.vue_vue_type_script_setup_true_lang-nojILoAf.js";
4
+ import { u as V, _ as N } from "./CollectionPage.vue_vue_type_script_setup_true_lang-BNM_cbXa.js";
5
5
  import { u as P } from "./describeError-B-NMa--w.js";
6
6
  import { u as I } from "./format-D8X4zsx6.js";
7
- import { e as a, R as O } from "./index-B9KqrN-F.js";
7
+ import { e as a, R as O } from "./index-D-0JNiFF.js";
8
8
  import { _ as W } from "./AlertDialog.vue_vue_type_script_setup_true_lang-whA4WLdl.js";
9
9
  import { t as i } from "./toast-CqSDTWRX.js";
10
10
  import { u as Y } from "./useLoad-M7V-AVwR.js";
@@ -50,7 +50,7 @@ function le(s) {
50
50
  register: (t, o) => e.register(t, o)
51
51
  }), e;
52
52
  }
53
- const Q = ["id"], U = {
53
+ const Q = ["id", "data-group"], U = {
54
54
  key: 0,
55
55
  class: "flex min-w-0 items-end gap-2 px-row-inset pb-2"
56
56
  }, X = { class: "min-w-0 flex-1 text-subheadline font-semibold text-content-strong compact:text-footnote compact:font-normal compact:uppercase compact:tracking-wide compact:text-content-muted" }, Y = { class: "form-group-cell rounded-group bg-surface-cell shadow-group" }, Z = {
@@ -93,6 +93,7 @@ const Q = ["id"], U = {
93
93
  ref: _,
94
94
  id: e.section ? h(w) : void 0,
95
95
  "data-test": "form-group",
96
+ "data-group": e.group,
96
97
  class: G(["form-group flex min-w-0 flex-col has-[>.form-group-cell:empty]:hidden", { "scroll-mt-4": e.section }]),
97
98
  style: M({ "--form-label-width": e.labelWidth })
98
99
  }, [
@@ -3,12 +3,12 @@ import { useI18n as V } from "vue-i18n";
3
3
  import { RouterLink as B } from "vue-router";
4
4
  import { u as E } from "./format-D8X4zsx6.js";
5
5
  import { u as T } from "./useResourceForm-CP2lCwmD.js";
6
- import { _ as h } from "./FormGroup.vue_vue_type_script_setup_true_lang-C7nq7MJB.js";
6
+ import { _ as h } from "./FormGroup.vue_vue_type_script_setup_true_lang-DSwSRsA5.js";
7
7
  import { _ as F } from "./FormView.vue_vue_type_script_setup_true_lang-Dbfg_jGh.js";
8
- import { _ as L } from "./SelectField.vue_vue_type_script_setup_true_lang-ByDo_32P.js";
9
- import { _ as f } from "./TextField.vue_vue_type_script_setup_true_lang-BslHroDP.js";
8
+ import { _ as L } from "./SelectField.vue_vue_type_script_setup_true_lang-C3FbRQW7.js";
9
+ import { _ as f } from "./TextField.vue_vue_type_script_setup_true_lang-CP2WeU36.js";
10
10
  import { u as A } from "./useSaveChrome-7huA3FzR.js";
11
- import { P as D, b as G, i as I } from "./index-D8akxuKo.js";
11
+ import { P as D, b as G, i as I } from "./index-Dxu7ZfCC.js";
12
12
  import { t as M } from "./toast-CqSDTWRX.js";
13
13
  import { u as O } from "./platform-q3cjODLx.js";
14
14
  import { b as U } from "./routeResource-DlTsGTg_.js";
@@ -4,8 +4,8 @@ import { useRoute as k, useRouter as R } from "vue-router";
4
4
  import { a as $ } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-CxU9aNRQ.js";
5
5
  import { _ as b } from "./AsyncSection.vue_vue_type_script_setup_true_lang-Blj6KgCr.js";
6
6
  import { u as g } from "./useLoad-M7V-AVwR.js";
7
- import { a as x, c as u } from "./index-BrqxylSS.js";
8
- import { _ as P } from "./RoleEditor.vue_vue_type_script_setup_true_lang-FLJk6Kb2.js";
7
+ import { a as x, c as u } from "./index-D6BjUQJT.js";
8
+ import { _ as P } from "./RoleEditor.vue_vue_type_script_setup_true_lang-D-b-O6SG.js";
9
9
  const V = /* @__PURE__ */ _({
10
10
  __name: "NewRolePage",
11
11
  setup(h) {
@@ -0,0 +1,161 @@
1
+ import { defineComponent as H, ref as _, computed as B, useTemplateRef as K, watch as R, openBlock as q, createBlock as J, mergeProps as L, unref as T, createSlots as Q, withCtx as $, createElementVNode as Z, normalizeClass as E, createElementBlock as G, toDisplayString as I, createCommentVNode as P, isRef as W, renderSlot as N, mergeDefaults as U } from "vue";
2
+ import { b as X } from "./controlSurface-t7OEFESJ.js";
3
+ import { u as Y } from "./format-D8X4zsx6.js";
4
+ import { a as ee, c as te, _ as le, f as ae, b as oe } from "./control-B4SdblL6.js";
5
+ function ne(c) {
6
+ const r = c.number(1234.5, { minimumFractionDigits: 1, maximumFractionDigits: 1, useGrouping: !0 }), u = /^\d(\D)\d/.exec(r)?.[1] ?? "";
7
+ return { decimal: r.charAt(r.length - 2) || ".", group: u === "." || u === "," ? u : "" };
8
+ }
9
+ function ie(c, r) {
10
+ const u = c.trim().startsWith("-"), e = c.replace(/[^\d.,]/g, "");
11
+ if (e === "") return u ? void 0 : null;
12
+ const m = [...e].filter((i) => i === "." || i === ",");
13
+ let p = e, n = "";
14
+ if (r.decimals > 0 && m.length > 0) {
15
+ const i = Math.max(e.lastIndexOf("."), e.lastIndexOf(",")), h = e.charAt(i), y = e.slice(i + 1), f = e.includes(".") && e.includes(","), k = m.filter((d) => d === h).length > 1, b = !f && h === r.group && y.length === 3;
16
+ (f || !k && !b) && (p = e.slice(0, i), n = y);
17
+ }
18
+ const x = (i) => i.replace(/\D/g, ""), g = +`${x(p) || "0"}.${x(n) || "0"}`;
19
+ if (!Number.isFinite(g)) return;
20
+ const v = Number(g.toFixed(r.decimals));
21
+ return u ? -v || 0 : v;
22
+ }
23
+ const se = {
24
+ key: 0,
25
+ class: "shrink-0 text-footnote text-content-muted"
26
+ }, re = ["id", "value", "name", "placeholder", "disabled", "required", "aria-required", "aria-invalid", "aria-describedby"], ue = {
27
+ key: 1,
28
+ class: "shrink-0 text-footnote text-content-muted"
29
+ }, pe = /* @__PURE__ */ H({
30
+ __name: "NumberField",
31
+ props: /* @__PURE__ */ U({
32
+ label: {},
33
+ labelHidden: { type: Boolean },
34
+ hint: {},
35
+ error: {},
36
+ required: { type: Boolean },
37
+ editable: { type: Boolean },
38
+ disabled: { type: Boolean },
39
+ lockedReason: {},
40
+ presentation: {},
41
+ name: {},
42
+ decimals: {},
43
+ minDecimals: {},
44
+ negative: { type: Boolean },
45
+ grouping: { type: Boolean },
46
+ maxDigits: {},
47
+ blankZero: { type: Boolean },
48
+ mono: { type: Boolean },
49
+ modelValue: {},
50
+ placeholder: {},
51
+ prefix: {},
52
+ suffix: {},
53
+ width: {}
54
+ }, { ...oe, modelValue: void 0, decimals: 0, minDecimals: void 0, negative: !1, blankZero: !1, grouping: !0, maxDigits: void 0, mono: !1, placeholder: void 0, prefix: void 0, suffix: void 0, width: "sm" }),
55
+ emits: ["update:modelValue", "focus", "blur"],
56
+ setup(c, { expose: r, emit: u }) {
57
+ const e = c, m = u, p = _(null), n = B(() => e.modelValue !== void 0 ? e.modelValue : p.value);
58
+ function x(t) {
59
+ p.value = t, m("update:modelValue", t);
60
+ }
61
+ const g = Y(), v = K("input"), i = !!ee(), h = te("text", () => e.error ? "error" : e.disabled ? "locked" : "rest"), y = B(() => i ? X(e.width) : "w-full"), f = B(() => ne(g)), k = B(() => Math.min(e.minDecimals ?? e.decimals, e.decimals)), b = (t) => t === null || e.blankZero && t === 0, d = (t) => b(t) ? "" : g.number(t, { minimumFractionDigits: k.value, maximumFractionDigits: e.decimals, useGrouping: e.grouping }), C = (t) => b(t) ? "" : String(t).replace(".", f.value.decimal), M = (t) => ie(t, { decimals: e.decimals, group: e.grouping ? f.value.group : "" }), D = _(!1), o = _(d(n.value));
62
+ R(n, (t) => {
63
+ D.value ? M(o.value) !== t && (o.value = C(t)) : o.value = d(t);
64
+ }), R(() => [e.decimals, e.blankZero, k.value, e.grouping, f.value.decimal], () => {
65
+ D.value || (o.value = d(n.value));
66
+ });
67
+ function A(t) {
68
+ const l = t.target;
69
+ let a = l.value.replace(/[^\d.,\-\s]/g, "");
70
+ e.negative ? a = a.replace(/(?!^)-/g, "") : a = a.replace(/-/g, "");
71
+ const F = a.replace(/\D/g, "").length;
72
+ if (e.maxDigits !== void 0 && F > e.maxDigits) {
73
+ if (a.length === o.value.length + 1) {
74
+ const w = Math.max(0, (l.selectionStart ?? a.length) - 1);
75
+ l.value = o.value, l.setSelectionRange(w, w);
76
+ return;
77
+ }
78
+ let V = 0;
79
+ a = [...a].filter((w) => !/\d/.test(w) || ++V <= e.maxDigits).join("");
80
+ }
81
+ a !== l.value && (l.value = a), o.value = a;
82
+ const S = M(a);
83
+ x(S ?? null);
84
+ }
85
+ let s = !1;
86
+ function O(t) {
87
+ const l = t.target;
88
+ s && l.selectionStart === l.selectionEnd && l.select(), s = !1;
89
+ }
90
+ function j(t) {
91
+ D.value = !0, o.value = C(n.value), t.target.value = o.value, s = !0, m("focus", t);
92
+ }
93
+ function z(t) {
94
+ s = !1, D.value = !1, o.value = d(n.value), m("blur", t);
95
+ }
96
+ return r({ focus: () => v.value?.focus() }), (t, l) => (q(), J(le, L(T(ae)(e), {
97
+ value: b(n.value) ? null : d(n.value),
98
+ prefix: e.prefix,
99
+ suffix: e.suffix,
100
+ "value-style": e.mono ? "mono" : "numeric"
101
+ }), Q({
102
+ default: $(({ id: a, describedby: F, invalid: S }) => [
103
+ Z("div", {
104
+ class: E(["flex items-center gap-1.5", [T(h), y.value]])
105
+ }, [
106
+ e.prefix ? (q(), G("span", se, I(e.prefix), 1)) : P("", !0),
107
+ Z("input", {
108
+ id: a,
109
+ ref_key: "input",
110
+ ref: v,
111
+ value: o.value,
112
+ type: "text",
113
+ inputmode: "decimal",
114
+ autocomplete: "off",
115
+ name: e.name,
116
+ placeholder: e.placeholder,
117
+ disabled: e.disabled,
118
+ required: e.required,
119
+ "aria-required": e.required || void 0,
120
+ "aria-invalid": S || void 0,
121
+ "aria-describedby": F,
122
+ class: E(["block w-full min-w-0 border-0 bg-transparent px-0 py-1 text-right text-body tabular-nums text-content-strong placeholder:text-content-disabled focus:outline-none focus:ring-0 disabled:cursor-not-allowed", e.mono ? "font-mono" : ""]),
123
+ onInput: A,
124
+ onFocus: j,
125
+ onBlur: z,
126
+ onSelect: O,
127
+ onKeydown: l[0] || (l[0] = (V) => W(s) ? s.value = !1 : s = !1),
128
+ onPointerdown: l[1] || (l[1] = (V) => W(s) ? s.value = !1 : s = !1)
129
+ }, null, 42, re),
130
+ e.suffix ? (q(), G("span", ue, I(e.suffix), 1)) : P("", !0)
131
+ ], 2)
132
+ ]),
133
+ _: 2
134
+ }, [
135
+ t.$slots.trailing ? {
136
+ name: "trailing",
137
+ fn: $(() => [
138
+ N(t.$slots, "trailing")
139
+ ]),
140
+ key: "0"
141
+ } : void 0,
142
+ t.$slots.labelTrailing ? {
143
+ name: "labelTrailing",
144
+ fn: $(() => [
145
+ N(t.$slots, "labelTrailing")
146
+ ]),
147
+ key: "1"
148
+ } : void 0,
149
+ t.$slots.readonly ? {
150
+ name: "readonly",
151
+ fn: $(() => [
152
+ N(t.$slots, "readonly")
153
+ ]),
154
+ key: "2"
155
+ } : void 0
156
+ ]), 1040, ["value", "prefix", "suffix", "value-style"]));
157
+ }
158
+ });
159
+ export {
160
+ pe as _
161
+ };
@@ -4,10 +4,10 @@ import { a as ge } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang
4
4
  import { u as L } from "./platform-q3cjODLx.js";
5
5
  import { _ as Q } from "./AsyncSection.vue_vue_type_script_setup_true_lang-Blj6KgCr.js";
6
6
  import { u as Y } from "./useLoad-M7V-AVwR.js";
7
- import { i as k, d as G } from "./index-D8akxuKo.js";
7
+ import { i as k, d as G } from "./index-Dxu7ZfCC.js";
8
8
  import { u as Z } from "./FormErrors.vue_vue_type_script_setup_true_lang-DWcVKZM3.js";
9
9
  import { _ as ee } from "./FormView.vue_vue_type_script_setup_true_lang-Dbfg_jGh.js";
10
- import { _ as U } from "./TextField.vue_vue_type_script_setup_true_lang-BslHroDP.js";
10
+ import { _ as U } from "./TextField.vue_vue_type_script_setup_true_lang-CP2WeU36.js";
11
11
  import { _ as H } from "./Panel.vue_vue_type_script_setup_true_lang-BA0u_DtS.js";
12
12
  import { t as C } from "./toast-CqSDTWRX.js";
13
13
  import { u as O } from "./fieldMessages-6HVzSDqG.js";
@@ -21,7 +21,7 @@ import { a as be } from "./leaveGuard-Cc8yeLxM.js";
21
21
  import { _ as xe } from "./Modal.vue_vue_type_script_setup_true_lang-DpBb8ans.js";
22
22
  import { _ as he } from "./OtpInput.vue_vue_type_script_setup_true_lang-gp4FfWAH.js";
23
23
  import { _ as $e } from "./AlertDialog.vue_vue_type_script_setup_true_lang-whA4WLdl.js";
24
- import { _ as qe } from "./SessionList.vue_vue_type_script_setup_true_lang-CuxVe7rm.js";
24
+ import { _ as qe } from "./SessionList.vue_vue_type_script_setup_true_lang-D5qm77Zo.js";
25
25
  import { _ as ke } from "./PageBar.vue_vue_type_script_setup_true_lang-B7qdEeej.js";
26
26
  import { _ as Ce } from "./SignInTable.vue_vue_type_script_setup_true_lang-ByEAVfjv.js";
27
27
  import { _ as Se } from "./ViewTabs.vue_vue_type_script_setup_true_lang-BJIoZAlH.js";
@@ -1,15 +1,15 @@
1
1
  import { defineComponent as I, computed as h, ref as M, openBlock as l, createElementBlock as v, createElementVNode as w, unref as t, Fragment as B, renderList as N, normalizeClass as K, toDisplayString as d, createVNode as V, withCtx as p, createTextVNode as y, createCommentVNode as $, createBlock as _, createSlots as X, watch as Y, mergeProps as F } from "vue";
2
2
  import { useI18n as Q } from "vue-i18n";
3
3
  import { u as Z } from "./FormErrors.vue_vue_type_script_setup_true_lang-DWcVKZM3.js";
4
- import { _ as W } from "./FormGroup.vue_vue_type_script_setup_true_lang-C7nq7MJB.js";
4
+ import { _ as W } from "./FormGroup.vue_vue_type_script_setup_true_lang-DSwSRsA5.js";
5
5
  import { _ as ee } from "./FormView.vue_vue_type_script_setup_true_lang-Dbfg_jGh.js";
6
- import { _ as te } from "./TextareaField.vue_vue_type_script_setup_true_lang-XZRHwx-n.js";
7
- import { _ as se } from "./TextField.vue_vue_type_script_setup_true_lang-BslHroDP.js";
6
+ import { _ as te } from "./TextareaField.vue_vue_type_script_setup_true_lang-BJ4__cvJ.js";
7
+ import { _ as se } from "./TextField.vue_vue_type_script_setup_true_lang-CP2WeU36.js";
8
8
  import { u as ae } from "./useSaveChrome-7huA3FzR.js";
9
9
  import { t as oe } from "./toast-CqSDTWRX.js";
10
10
  import { _ as S } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
11
11
  import { _ as E } from "./Banner.vue_vue_type_script_setup_true_lang-DSStj_5z.js";
12
- import { d as G, u as J, p as ne, o as R, r as D, g as H, s as le, e as re, a as ie, f as ce, b as ue, h as de } from "./index-BrqxylSS.js";
12
+ import { d as G, u as J, p as ne, o as R, r as D, g as H, s as le, e as re, a as ie, f as ce, b as ue, h as de } from "./index-D6BjUQJT.js";
13
13
  import { _ as me } from "./Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js";
14
14
  import { _ as fe } from "./Tabs.vue_vue_type_script_setup_true_lang-CcMcE38r.js";
15
15
  import { _ as pe } from "./SegmentedField.vue_vue_type_script_setup_true_lang-Dg-_ZjgR.js";
@@ -2,7 +2,7 @@ import { defineComponent as I, computed as z, openBlock as l, createBlock as b,
2
2
  import { useI18n as K } from "vue-i18n";
3
3
  import { useRouter as X } from "vue-router";
4
4
  import { _ as Y } from "./IconTile.vue_vue_type_script_setup_true_lang-_FXvaj93.js";
5
- import { _ as C } from "./FormGroup.vue_vue_type_script_setup_true_lang-C7nq7MJB.js";
5
+ import { _ as C } from "./FormGroup.vue_vue_type_script_setup_true_lang-DSwSRsA5.js";
6
6
  import { e as F } from "./control-B4SdblL6.js";
7
7
  import { u as Z } from "./describeError-B-NMa--w.js";
8
8
  import { _ as ee } from "./AlertDialog.vue_vue_type_script_setup_true_lang-whA4WLdl.js";
@@ -13,11 +13,11 @@ import { a as ae, u as le } from "./routeResource-DlTsGTg_.js";
13
13
  import { a as se } from "./ResourcePage.vue_vue_type_script_setup_true_lang-BFaaFQSm.js";
14
14
  import { _ as re } from "./AsyncSection.vue_vue_type_script_setup_true_lang-Blj6KgCr.js";
15
15
  import { _ as H } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
16
- import { u as O, a as U, f as ce, d as ne, b as M, c as T } from "./index-BrqxylSS.js";
17
- import { _ as J } from "./SelectField.vue_vue_type_script_setup_true_lang-ByDo_32P.js";
16
+ import { u as O, a as U, f as ce, d as ne, b as M, c as T } from "./index-D6BjUQJT.js";
17
+ import { _ as J } from "./SelectField.vue_vue_type_script_setup_true_lang-C3FbRQW7.js";
18
18
  import { u as ie, _ as ue } from "./useCommand-YN9EMb7s.js";
19
19
  import { _ as me } from "./Modal.vue_vue_type_script_setup_true_lang-DpBb8ans.js";
20
- import { _ as pe } from "./RoleEditor.vue_vue_type_script_setup_true_lang-FLJk6Kb2.js";
20
+ import { _ as pe } from "./RoleEditor.vue_vue_type_script_setup_true_lang-D-b-O6SG.js";
21
21
  const de = { "data-test": "role-replace" }, fe = /* @__PURE__ */ I({
22
22
  __name: "ReplaceRoleDialog",
23
23
  props: {
@@ -3,15 +3,15 @@ import { useI18n as A } from "vue-i18n";
3
3
  import { useRouter as F } from "vue-router";
4
4
  import { _ as S } from "./IconTile.vue_vue_type_script_setup_true_lang-_FXvaj93.js";
5
5
  import { _ as E } from "./Tabs.vue_vue_type_script_setup_true_lang-CcMcE38r.js";
6
- import { _ as U } from "./FormGroup.vue_vue_type_script_setup_true_lang-C7nq7MJB.js";
6
+ import { _ as U } from "./FormGroup.vue_vue_type_script_setup_true_lang-DSwSRsA5.js";
7
7
  import { e as j } from "./control-B4SdblL6.js";
8
- import { _ as D } from "./TextField.vue_vue_type_script_setup_true_lang-BslHroDP.js";
8
+ import { _ as D } from "./TextField.vue_vue_type_script_setup_true_lang-CP2WeU36.js";
9
9
  import { a as I } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-CxU9aNRQ.js";
10
10
  import { u as K } from "./platform-q3cjODLx.js";
11
11
  import { _ as T } from "./AsyncSection.vue_vue_type_script_setup_true_lang-Blj6KgCr.js";
12
12
  import { _ as q } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
13
13
  import { u as z } from "./useLoad-M7V-AVwR.js";
14
- import { u as G, a as H, b as J, c as x } from "./index-BrqxylSS.js";
14
+ import { u as G, a as H, b as J, c as x } from "./index-D6BjUQJT.js";
15
15
  const M = {
16
16
  class: "flex min-w-0 flex-col gap-group-gap",
17
17
  "data-test": "roles-index"