@wssto2/vue-core 0.15.3 → 0.17.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.
Files changed (153) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +4 -3
  3. package/bin/architecture/engine.mjs +3 -0
  4. package/bin/architecture/permissions.mjs +56 -0
  5. package/bin/architecture/rules.mjs +17 -0
  6. package/bin/commands/check-architecture.mjs +19 -0
  7. package/bin/config.mjs +2 -0
  8. package/dist/{AccessGate.vue_vue_type_script_setup_true_lang-BH3f0hda.js → AccessGate.vue_vue_type_script_setup_true_lang-Bg8JFAOT.js} +1 -1
  9. package/dist/{ActionRow.vue_vue_type_script_setup_true_lang-DybAIOHS.js → ActionRow.vue_vue_type_script_setup_true_lang-B5IMNnTf.js} +4 -4
  10. package/dist/{Activity-DM9t5d3D.js → Activity-CiYn5E6A.js} +7 -7
  11. package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-uO4EAmBb.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-oXWQTfBs.js} +170 -168
  12. package/dist/{Changes-DYpysvfX.js → Changes-Cy8STpLX.js} +3 -3
  13. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-qxeSTAKV.js → CollectionPage.vue_vue_type_script_setup_true_lang-Dr6nFNBB.js} +6 -6
  14. package/dist/{DataTable.vue_vue_type_script_setup_true_lang-DbRS37n3.js → DataTable.vue_vue_type_script_setup_true_lang-D372wlxR.js} +1 -1
  15. package/dist/{DateField.vue_vue_type_script_setup_true_lang-DzCvYHAf.js → DateField.vue_vue_type_script_setup_true_lang-D0KcfW8R.js} +17 -16
  16. package/dist/{DeadLetters-vt9vhJD7.js → DeadLetters-DhJkMpd_.js} +4 -4
  17. package/dist/{FormGroup.vue_vue_type_script_setup_true_lang-dsO1m9Mm.js → FormGroup.vue_vue_type_script_setup_true_lang-lvAuBG-0.js} +2 -2
  18. package/dist/FormRow.vue_vue_type_script_setup_true_lang-CpgNVQF4.js +160 -0
  19. package/dist/{FormView.vue_vue_type_script_setup_true_lang-Bq_Qa4py.js → FormView.vue_vue_type_script_setup_true_lang-D01Jr4UU.js} +5 -5
  20. package/dist/{General-oUI2MiwO.js → General-CwTPC5UP.js} +11 -11
  21. package/dist/{IncidentRecord-CQdv_bN5.js → IncidentRecord-hXEGuLGg.js} +14 -14
  22. package/dist/{IncidentsList-DwQ0wuM8.js → IncidentsList-C41VyDwK.js} +6 -6
  23. package/dist/{NewRolePage-C-wbA-uW.js → NewRolePage-BYYZJkK7.js} +3 -3
  24. package/dist/{NumberField.vue_vue_type_script_setup_true_lang-U-_kcnGr.js → NumberField.vue_vue_type_script_setup_true_lang-BhNZgEW6.js} +7 -6
  25. package/dist/{PersonAccess.vue_vue_type_script_setup_true_lang-BPDh9s2m.js → PersonAccess.vue_vue_type_script_setup_true_lang-mYFuG-Y3.js} +56 -56
  26. package/dist/{ProfilePage-Di77M2cX.js → ProfilePage-DGEsIycR.js} +13 -13
  27. package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-CZtvUH5L.js → RecordHeader.vue_vue_type_script_setup_true_lang-B3BnYg1x.js} +1 -1
  28. package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-uLrX13ab.js → ResourcePage.vue_vue_type_script_setup_true_lang-1iZtj3rh.js} +1 -1
  29. package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-V2D7fhR9.js → RoleEditor.vue_vue_type_script_setup_true_lang-BslSDDiM.js} +10 -10
  30. package/dist/{RolePage-Crp71rRb.js → RolePage-C08ZUqw1.js} +9 -9
  31. package/dist/{RolesPage-DKXXnnDV.js → RolesPage-FOuY1VKg.js} +10 -10
  32. package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-5ogQCj8M.js → SectionNavigator.vue_vue_type_script_setup_true_lang-DCTFxfPB.js} +2 -2
  33. package/dist/{SegmentedField.vue_vue_type_script_setup_true_lang-zv_AxpBn.js → SegmentedField.vue_vue_type_script_setup_true_lang-CLR6EvzO.js} +13 -12
  34. package/dist/{SelectField.vue_vue_type_script_setup_true_lang-CLkoPbGm.js → SelectField.vue_vue_type_script_setup_true_lang-D5xYofdb.js} +10 -9
  35. package/dist/{ServiceAccountDialog.vue_vue_type_script_setup_true_lang-C7WKxJ9i.js → ServiceAccountDialog.vue_vue_type_script_setup_true_lang-CDr4WNIb.js} +9 -9
  36. package/dist/{ServiceAccountRecord-CTU10RWy.js → ServiceAccountRecord-kWwIQGZb.js} +12 -12
  37. package/dist/{ServiceAccountsList-BVRjoswH.js → ServiceAccountsList-CKy9_YHP.js} +8 -8
  38. package/dist/{Sessions-BHwMrF7c.js → Sessions-BDc8gdYH.js} +4 -4
  39. package/dist/{SettingsPage-lRWvsMYK.js → SettingsPage-t-8kmFVT.js} +13 -13
  40. package/dist/{SignIn-HnujOMRY.js → SignIn-CqtkvtCZ.js} +7 -7
  41. package/dist/{SignInPage-c886Fvd7.js → SignInPage-DcdNKZIb.js} +4 -4
  42. package/dist/{SignIns-BsTlN2Zc.js → SignIns-D4-nGu0B.js} +3 -3
  43. package/dist/{SwitchField.vue_vue_type_script_setup_true_lang-Ds4q0bbl.js → SwitchField.vue_vue_type_script_setup_true_lang-CLtcuofe.js} +15 -14
  44. package/dist/{TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js → TextField.vue_vue_type_script_setup_true_lang-CVGh-p3J.js} +7 -6
  45. package/dist/{TextareaField.vue_vue_type_script_setup_true_lang-D2j4s96s.js → TextareaField.vue_vue_type_script_setup_true_lang-YxUlNHSk.js} +6 -5
  46. package/dist/{TimeField.vue_vue_type_script_setup_true_lang-C1mLvOkc.js → TimeField.vue_vue_type_script_setup_true_lang-DHNC_MLt.js} +30 -29
  47. package/dist/{Timestamp.vue_vue_type_script_setup_true_lang-jCXYFLtq.js → Timestamp.vue_vue_type_script_setup_true_lang-d_KuxWjH.js} +1 -1
  48. package/dist/{UserRecord-DrbpVHh9.js → UserRecord-CwZCr9Im.js} +10 -10
  49. package/dist/{UsersList-M5tBxrox.js → UsersList-Cn19sFgv.js} +4 -4
  50. package/dist/access/index.js +4 -4
  51. package/dist/app/application.d.ts +2 -0
  52. package/dist/app/index.js +2 -2
  53. package/dist/app/validate.d.ts +3 -1
  54. package/dist/{application-C900Wz0A.js → application-CDSweJb9.js} +144 -142
  55. package/dist/back-LcLlFodC.js +63 -0
  56. package/dist/{chrome-nUcmVu8G.js → chrome-kMBKIB1N.js} +2 -2
  57. package/dist/collection/authors.d.ts +27 -0
  58. package/dist/collection/index.d.ts +2 -0
  59. package/dist/collection/index.js +81 -76
  60. package/dist/config/index.d.ts +42 -0
  61. package/dist/config/index.js +12 -3
  62. package/dist/content/Panel.vue.d.ts +1 -1
  63. package/dist/content/index.js +2 -2
  64. package/dist/{contributions-9CPT-Z5v.js → contributions-B0x5x5xD.js} +1 -1
  65. package/dist/form/CommandDialog.vue.d.ts +1 -1
  66. package/dist/form/DateField.vue.d.ts +1 -1
  67. package/dist/form/DateTimeField.vue.d.ts +1 -1
  68. package/dist/form/FileField.vue.d.ts +1 -1
  69. package/dist/form/FormRow.vue.d.ts +2 -2
  70. package/dist/form/I18nField.vue.d.ts +2 -2
  71. package/dist/form/TextField.vue.d.ts +1 -1
  72. package/dist/form/TextareaField.vue.d.ts +2 -2
  73. package/dist/form/date/value.d.ts +21 -0
  74. package/dist/form/index.d.ts +1 -0
  75. package/dist/form/index.js +745 -715
  76. package/dist/format/format.d.ts +8 -2
  77. package/dist/format/index.js +1 -1
  78. package/dist/format-C_HXlOYQ.js +136 -0
  79. package/dist/{guards-6fJxfUtk.js → guards-CNJ0ATVC.js} +1 -1
  80. package/dist/i18n/index.d.ts +14 -2
  81. package/dist/i18n/index.js +84 -73
  82. package/dist/i18n/messages.d.ts +10 -1
  83. package/dist/i18n/runtime.d.ts +3 -1
  84. package/dist/identity/index.js +3 -3
  85. package/dist/identity/profile/EmailChangeDialog.vue.d.ts +2 -2
  86. package/dist/identity/users/list.d.ts +1 -1
  87. package/dist/incidents/index.js +1 -1
  88. package/dist/{index-_hDHxrt5.js → index-1HS7O2-e.js} +9 -9
  89. package/dist/{index-DM_nWOYf.js → index-BA2w8uwD.js} +86 -86
  90. package/dist/{index-vES_D5ls.js → index-SLJWm40T.js} +4 -4
  91. package/dist/index.d.ts +1 -1
  92. package/dist/index.js +1 -1
  93. package/dist/modal/DiscardChangesModal.vue.d.ts +2 -2
  94. package/dist/modal/Modal.vue.d.ts +2 -2
  95. package/dist/modal/Sheet.vue.d.ts +2 -2
  96. package/dist/modules/identity/routes.d.ts +1 -1
  97. package/dist/modules/identity/schemas.d.ts +2 -2
  98. package/dist/{navigation-DMJ6akat.js → navigation-d-JAPBGA.js} +1 -1
  99. package/dist/{neighbors-DrEahe7B.js → neighbors-Dg_LU9ry.js} +32 -31
  100. package/dist/notifications/index.js +1 -1
  101. package/dist/onboarding/index.js +1 -1
  102. package/dist/options-mOOX6JSS.js +214 -0
  103. package/dist/overlay/AlertDialog.vue.d.ts +3 -3
  104. package/dist/overlay/Menu.vue.d.ts +2 -2
  105. package/dist/overlay/PhotoViewer.vue.d.ts +2 -2
  106. package/dist/overlay/Popover.vue.d.ts +2 -2
  107. package/dist/page/SectionNavigator.vue.d.ts +1 -1
  108. package/dist/page/SectionPanel.vue.d.ts +1 -1
  109. package/dist/page/back.d.ts +37 -0
  110. package/dist/page/index.d.ts +1 -0
  111. package/dist/page/index.js +46 -42
  112. package/dist/phone/index.js +57 -56
  113. package/dist/platform/index.d.ts +10 -1
  114. package/dist/platform/index.js +16 -15
  115. package/dist/platform/platform.d.ts +4 -2
  116. package/dist/{platform-ORzRR3Tw.js → platform-DU9QFts8.js} +7 -6
  117. package/dist/playwright/config.d.ts +33 -0
  118. package/dist/playwright/index.d.ts +2 -0
  119. package/dist/playwright/index.js +192 -171
  120. package/dist/resource/index.js +1 -1
  121. package/dist/router/index.js +3 -3
  122. package/dist/router/sections.d.ts +1 -1
  123. package/dist/{rowLayout-QKfNHsML.js → rowLayout-PIuD7MGo.js} +2 -2
  124. package/dist/sections-BpiRLntE.js +54 -0
  125. package/dist/{serverMessages-Ce8-MK4e.js → serverMessages-C_KkDvpT.js} +1 -1
  126. package/dist/shell/index.js +5 -5
  127. package/dist/state/NextStepPanel.vue.d.ts +63 -0
  128. package/dist/state/PhaseTiles.vue.d.ts +20 -0
  129. package/dist/state/PhaseTrack.vue.d.ts +48 -0
  130. package/dist/state/RequirementList.vue.d.ts +10 -0
  131. package/dist/state/TodoRow.vue.d.ts +52 -0
  132. package/dist/state/index.d.ts +9 -0
  133. package/dist/state/index.js +731 -126
  134. package/dist/state/phaseStep.d.ts +7 -0
  135. package/dist/state/phaseTile.d.ts +10 -0
  136. package/dist/state/requirementItem.d.ts +16 -0
  137. package/dist/state/todoRow.d.ts +8 -0
  138. package/dist/{state-QDaxntgR.js → state-z1iPF1DT.js} +1 -1
  139. package/dist/styles.css +1 -1
  140. package/dist/{suggestions-q_v3M7G6.js → suggestions-DeMgs_ki.js} +1 -1
  141. package/dist/testing/format.d.ts +1 -1
  142. package/dist/testing/index.js +31 -31
  143. package/dist/{useCommand-DAMgQ5NE.js → useCommand-DQKvro1n.js} +2 -2
  144. package/dist/{useGroupSheet-B-Hs4gNO.js → useGroupSheet-CRw3MUmX.js} +3 -3
  145. package/dist/{usePreferences-BfMXVbSO.js → usePreferences-DB29UTFD.js} +1 -1
  146. package/dist/{useRecordDialog-QPKFH1Ww.js → useRecordDialog-0azHxxvm.js} +1 -1
  147. package/dist/{useResourceForm-Oa6bk3NI.js → useResourceForm-zVuWerSn.js} +1 -1
  148. package/dist/{useSaveChrome-7huA3FzR.js → useSaveChrome-DB9OwIjT.js} +1 -1
  149. package/dist/{useTypedEntry-CITij2C_.js → useTypedEntry-BsMV66Yc.js} +46 -45
  150. package/package.json +1 -1
  151. package/dist/format-Cp1h0vsC.js +0 -125
  152. package/dist/options-B48UiYsG.js +0 -368
  153. package/dist/sections-DI_JhgQG.js +0 -53
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- const o = "0.15.3";
1
+ const o = "0.17.0";
2
2
  export {
3
3
  o as version
4
4
  };
@@ -3,11 +3,11 @@ declare const _default: import("vue").DefineComponent<{}, {
3
3
  dismiss: () => void | undefined;
4
4
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
5
5
  cancel: () => any;
6
- dismissed: () => any;
7
6
  confirm: () => any;
7
+ dismissed: () => any;
8
8
  }, string, import("vue").PublicProps, Readonly<{}> & Readonly<{
9
9
  onCancel?: (() => any) | undefined;
10
- onDismissed?: (() => any) | undefined;
11
10
  onConfirm?: (() => any) | undefined;
11
+ onDismissed?: (() => any) | undefined;
12
12
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
13
13
  export default _default;
@@ -79,12 +79,12 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {
79
79
  dismiss: () => Promise<boolean>;
80
80
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
81
81
  primary: () => any;
82
- presented: () => any;
83
82
  dismissed: () => any;
83
+ presented: () => any;
84
84
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
85
85
  onPrimary?: (() => any) | undefined;
86
- onPresented?: (() => any) | undefined;
87
86
  onDismissed?: (() => any) | undefined;
87
+ onPresented?: (() => any) | undefined;
88
88
  }>, {
89
89
  progress: {
90
90
  value: number;
@@ -35,11 +35,11 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {
35
35
  present: typeof present;
36
36
  dismiss: typeof dismiss;
37
37
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
38
- presented: () => any;
39
38
  dismissed: () => any;
39
+ presented: () => any;
40
40
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
41
- onPresented?: (() => any) | undefined;
42
41
  onDismissed?: (() => any) | undefined;
42
+ onPresented?: (() => any) | undefined;
43
43
  }>, {
44
44
  title: string;
45
45
  grouped: boolean;
@@ -18,7 +18,7 @@ export declare const identityRoutes: {
18
18
  }, SessionResponse, unknown>;
19
19
  readonly loginAsReturn: import("../../client").ApiRoute<void, SessionResponse, unknown>;
20
20
  readonly usersList: import("../../client").ApiRoute<{
21
- view?: "inactive" | "all" | "locked" | "active" | undefined;
21
+ view?: "inactive" | "all" | "active" | "locked" | undefined;
22
22
  search?: string | undefined;
23
23
  order_col?: string | undefined;
24
24
  order_dir?: string | undefined;
@@ -62,16 +62,16 @@ export type LastSignInFilter = z.infer<typeof LastSignInFilterSchema>;
62
62
  export declare const UserViewSchema: z.ZodEnum<{
63
63
  inactive: "inactive";
64
64
  all: "all";
65
- locked: "locked";
66
65
  active: "active";
66
+ locked: "locked";
67
67
  }>;
68
68
  export type UserView = z.infer<typeof UserViewSchema>;
69
69
  export declare const ListUsersInputSchema: z.ZodObject<{
70
70
  view: z.ZodOptional<z.ZodEnum<{
71
71
  inactive: "inactive";
72
72
  all: "all";
73
- locked: "locked";
74
73
  active: "active";
74
+ locked: "locked";
75
75
  }>>;
76
76
  search: z.ZodOptional<z.ZodString>;
77
77
  order_col: z.ZodOptional<z.ZodString>;
@@ -1,6 +1,6 @@
1
1
  import { computed as k } from "vue";
2
2
  import { d as y } from "./context-Ch1r4fdN.js";
3
- import { h as N } from "./platform-ORzRR3Tw.js";
3
+ import { h as N } from "./platform-DU9QFts8.js";
4
4
  function F(l, a = {}) {
5
5
  const i = /* @__PURE__ */ new Map(), o = [];
6
6
  for (const e of l) {
@@ -1,13 +1,14 @@
1
1
  import { computed as j, ref as z, shallowRef as I, watch as F, getCurrentScope as J, onScopeDispose as Q } from "vue";
2
- import { useRoute as O } from "vue-router";
3
- import { i as N } from "./error-CD7x0Jrz.js";
4
- import { L as k, d as B, e as D, o as U, q as V } from "./state-QDaxntgR.js";
2
+ import { useRoute as N } from "vue-router";
3
+ import { i as M } from "./error-CD7x0Jrz.js";
4
+ import { w as U } from "./back-LcLlFodC.js";
5
+ import { L as k, d as O, e as D, o as V, q as W } from "./state-z1iPF1DT.js";
5
6
  function K(l, t, n, g) {
6
7
  return typeof t == "string" ? t : { ...t, query: { ...t.query, [n]: D(l, g) } };
7
8
  }
8
- function le(l, t) {
9
- const n = O(), g = t.from ?? (() => typeof n.query[k] == "string" ? n.query[k] : null), q = j(() => {
10
- const f = B(l, g());
9
+ function ae(l, t) {
10
+ const n = N(), g = t.from ?? (() => typeof n.query[k] == "string" ? n.query[k] : null), q = j(() => {
11
+ const f = O(l, g());
11
12
  return f ? K(l, t.list, t.stateKey ?? "query", f) : t.list;
12
13
  });
13
14
  return {
@@ -17,37 +18,37 @@ function le(l, t) {
17
18
  neighbors: null
18
19
  };
19
20
  }
20
- const W = 8;
21
- function re(l, t) {
22
- const n = O(), g = t.from ?? (() => typeof n.query[k] == "string" ? n.query[k] : null), q = t.stateKey ?? "query", f = z(null), p = z(0), h = I(null), m = I(null), S = z(!1), x = I(null), o = /* @__PURE__ */ new Map();
23
- let d = 0, C = new AbortController(), E = !1;
24
- function L(w, b, a) {
25
- const v = { ...w, page: b }, i = V(v);
21
+ const Y = 8;
22
+ function ne(l, t) {
23
+ const n = N(), g = t.from ?? (() => typeof n.query[k] == "string" ? n.query[k] : null), q = t.stateKey ?? "query", f = z(null), p = z(0), m = I(null), h = I(null), S = z(!1), x = I(null), o = /* @__PURE__ */ new Map();
24
+ let w = 0, C = new AbortController(), E = !1;
25
+ function L(d, b, a) {
26
+ const v = { ...d, page: b }, i = W(v);
26
27
  let u = o.get(i);
27
28
  for (u ? o.delete(i) : (u = (async () => l.load(v, { signal: a }))(), u.catch(() => {
28
29
  o.get(i) === u && o.delete(i);
29
- })), o.set(i, u); o.size > W; ) o.delete(o.keys().next().value);
30
+ })), o.set(i, u); o.size > Y; ) o.delete(o.keys().next().value);
30
31
  return u.catch((e) => {
31
- if (N(e)) throw e;
32
+ if (M(e)) throw e;
32
33
  return null;
33
34
  });
34
35
  }
35
36
  function T() {
36
- f.value = null, h.value = null, m.value = null, p.value = 0;
37
+ f.value = null, m.value = null, h.value = null, p.value = 0;
37
38
  }
38
39
  async function _() {
39
- const w = ++d, b = C.signal, a = B(l, g()), v = t.current();
40
+ const d = ++w, b = C.signal, a = O(l, g()), v = t.current();
40
41
  if (x.value = a ? K(l, t.list, q, a) : null, !a || v === null || v === void 0 || v === "") {
41
42
  T(), S.value = !1;
42
43
  return;
43
44
  }
44
- S.value = !0, h.value = null, m.value = null;
45
+ S.value = !0, m.value = null, h.value = null;
45
46
  const i = (e) => e ? e.rows.findIndex((r) => String(l.key(r)) === String(v)) : -1, u = (e, r) => {
46
47
  const s = D(l, { ...a, page: e });
47
48
  return {
48
49
  key: r,
49
50
  get to() {
50
- return { name: n.name ?? void 0, params: { ...n.params, [t.param]: String(r) }, query: { ...n.query, [k]: s }, hash: n.hash };
51
+ return { name: n.name ?? void 0, params: { ...n.params, [t.param]: String(r) }, query: { ...U(n.query), [k]: s }, hash: n.hash };
51
52
  }
52
53
  };
53
54
  };
@@ -55,10 +56,10 @@ function re(l, t) {
55
56
  let e = a.page, r = await L(a, e, b), s = i(r);
56
57
  for (const y of [e - 1, e + 1]) {
57
58
  if (s !== -1 || !r || y < 1 || y > r.lastPage) continue;
58
- const c = await L(a, y, b), M = i(c);
59
- c && M !== -1 && (e = y, r = c, s = M);
59
+ const c = await L(a, y, b), B = i(c);
60
+ c && B !== -1 && (e = y, r = c, s = B);
60
61
  }
61
- if (w !== d) return;
62
+ if (d !== w) return;
62
63
  if (!r || s === -1) {
63
64
  T();
64
65
  return;
@@ -76,30 +77,30 @@ function re(l, t) {
76
77
  const c = (await L(a, e + 1, b))?.rows[0];
77
78
  c !== void 0 && (R = u(e + 1, l.key(c)));
78
79
  }
79
- if (w !== d) return;
80
- p.value = r.total, f.value = (e - 1) * X + s + 1, h.value = P, m.value = R, x.value = K(l, t.list, q, { ...a, page: e });
80
+ if (d !== w) return;
81
+ p.value = r.total, f.value = (e - 1) * X + s + 1, m.value = P, h.value = R, x.value = K(l, t.list, q, { ...a, page: e });
81
82
  } catch (e) {
82
- if (!N(e)) throw e;
83
+ if (!M(e)) throw e;
83
84
  } finally {
84
- w === d && (S.value = !1);
85
+ d === w && (S.value = !1);
85
86
  }
86
87
  }
87
88
  const G = F([g, t.current], _, { immediate: !0 });
88
89
  function H() {
89
- E || (E = !0, d++, C.abort(), G(), o.clear());
90
+ E || (E = !0, w++, C.abort(), G(), o.clear());
90
91
  }
91
- return J() && Q(H), U(() => {
92
+ return J() && Q(H), V(() => {
92
93
  C.abort(), C = new AbortController(), o.clear(), _();
93
- }), { position: f, total: p, previous: h, next: m, loading: S, listRoute: x, context: {
94
+ }), { position: f, total: p, previous: m, next: h, loading: S, listRoute: x, context: {
94
95
  get back() {
95
96
  return { label: typeof t.backLabel == "function" ? t.backLabel() : t.backLabel, to: x.value ?? t.list };
96
97
  },
97
98
  get neighbors() {
98
- return f.value === null ? null : { position: f.value, total: p.value, previous: h.value?.to ?? null, next: m.value?.to ?? null };
99
+ return f.value === null ? null : { position: f.value, total: p.value, previous: m.value?.to ?? null, next: h.value?.to ?? null };
99
100
  }
100
101
  } };
101
102
  }
102
103
  export {
103
- le as a,
104
- re as u
104
+ ae as a,
105
+ ne as u
105
106
  };
@@ -1,4 +1,4 @@
1
- import { d as s, e as a, n as o, b as i, c as n, f as u } from "../index-vES_D5ls.js";
1
+ import { d as s, e as a, n as o, b as i, c as n, f as u } from "../index-SLJWm40T.js";
2
2
  export {
3
3
  s as deadLettersRoutes,
4
4
  a as eventsRoutes,
@@ -1,7 +1,7 @@
1
1
  import { defineComponent as L, ref as d, computed as x, watch as v, nextTick as H, onBeforeUnmount as O, openBlock as F, createBlock as j, Teleport as q, createVNode as w, Transition as U, withCtx as Y, createElementBlock as G, withKeys as J, withModifiers as Q, normalizeStyle as M, unref as n, createElementVNode as l, normalizeClass as W, toDisplayString as k, renderSlot as X, createTextVNode as Z, createCommentVNode as ee } from "vue";
2
2
  import { useI18n as te } from "vue-i18n";
3
3
  import { _ as V } from "../Icon.vue_vue_type_script_lang-BhhsFYwp.js";
4
- import { u as ne } from "../usePreferences-BfMXVbSO.js";
4
+ import { u as ne } from "../usePreferences-DB29UTFD.js";
5
5
  import { u as oe, a as h } from "../anchored-DpuUwf-9.js";
6
6
  const ie = (o) => typeof o == "object" && o !== null && !Array.isArray(o);
7
7
  function se(o, e) {
@@ -0,0 +1,214 @@
1
+ import { defineComponent as H, useSlots as R, useAttrs as V, useId as A, computed as c, onBeforeUnmount as D, unref as t, openBlock as i, createBlock as O, mergeProps as T, createSlots as j, withCtx as $, createElementVNode as q, normalizeClass as y, renderSlot as u, createElementBlock as s, createCommentVNode as n, toDisplayString as f, createTextVNode as x, createVNode as z, mergeDefaults as E } from "vue";
2
+ import { useI18n as M } from "vue-i18n";
3
+ import { _ as G } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
4
+ import { a as I, u as P, _ as U, b as J } from "./FormRow.vue_vue_type_script_setup_true_lang-CpgNVQF4.js";
5
+ import { c as K, a as Q } from "./controlSurface-t7OEFESJ.js";
6
+ const W = ["title"], X = {
7
+ key: 0,
8
+ class: "mr-1.5 inline-flex shrink-0 items-center align-middle",
9
+ "data-test": "field-prefix"
10
+ }, Y = {
11
+ key: 1,
12
+ class: "mr-1"
13
+ }, Z = {
14
+ key: 2,
15
+ class: "ml-1 text-content-muted"
16
+ }, ee = {
17
+ key: 3,
18
+ class: "block text-body text-content-disabled"
19
+ }, te = {
20
+ key: 0,
21
+ class: "sr-only"
22
+ }, oe = ["data-field-error"], le = ["for"], re = {
23
+ key: 0,
24
+ class: "text-content-destructive",
25
+ "aria-hidden": "true"
26
+ }, ae = {
27
+ key: 1,
28
+ class: "flex min-w-0 items-center gap-2"
29
+ }, ie = { class: "min-w-0 flex-1" }, se = {
30
+ key: 0,
31
+ class: "mr-1.5 inline-flex shrink-0 items-center align-middle",
32
+ "data-test": "field-prefix"
33
+ }, ne = ["id"], de = ["id"], be = /* @__PURE__ */ H({
34
+ __name: "Field",
35
+ props: /* @__PURE__ */ E({
36
+ label: {},
37
+ labelHidden: { type: Boolean },
38
+ hint: {},
39
+ error: {},
40
+ required: { type: Boolean },
41
+ editable: { type: Boolean },
42
+ disabled: { type: Boolean },
43
+ lockedReason: {},
44
+ presentation: {},
45
+ name: {},
46
+ value: { type: [String, Number, Boolean, null] },
47
+ prefix: {},
48
+ suffix: {},
49
+ valueStyle: {},
50
+ rowLayout: {},
51
+ rowLabelAlign: {}
52
+ }, { ...J, value: void 0, prefix: void 0, suffix: void 0, valueStyle: void 0, rowLayout: "entry", rowLabelAlign: "center" }),
53
+ setup(d) {
54
+ const e = d, { t: a } = M(), l = R(), g = V(), m = I(), { editable: r, locked: b } = P(e), C = A(), v = c(() => e.name ?? C), h = c(() => `${v.value}-hint`), _ = c(() => `${v.value}-error`);
55
+ if (m?.registerField) {
56
+ const o = g["data-field-key"], L = m.registerField(typeof o == "string" ? o : void 0, c(() => e.disabled));
57
+ D(L);
58
+ }
59
+ const p = c(() => {
60
+ const o = e.value;
61
+ return o == null ? !1 : typeof o == "string" ? o.length > 0 : typeof o == "number" ? !Number.isNaN(o) : !0;
62
+ }), B = c(() => typeof e.value == "boolean" ? e.value ? a("core.form.yes") : a("core.form.no") : e.value), F = c(() => !!m && !r.value && m.hideEmpty.value && !p.value && !l.readonly), w = c(() => [e.hint && r.value ? h.value : null, e.error ? _.value : null].filter(Boolean).join(" ") || void 0), k = c(() => {
63
+ const o = r.value ? e.rowLayout : e.rowLayout === "stacked" ? "stacked" : "value";
64
+ return e.labelHidden && (o === "entry" || o === "value") ? "stacked" : o;
65
+ }), N = c(
66
+ () => r.value && !b.value && e.required ? { "data-field-required": "true", "data-field-filled": p.value ? "true" : void 0 } : {}
67
+ );
68
+ return (o, L) => t(m) && !F.value ? (i(), O(U, T({ key: 0 }, N.value, {
69
+ label: e.label,
70
+ "label-hidden": e.labelHidden,
71
+ for: t(r) ? v.value : void 0,
72
+ sub: t(r) ? e.hint : void 0,
73
+ "sub-id": h.value,
74
+ required: t(r) && !t(b) && e.required,
75
+ layout: k.value,
76
+ "label-align": k.value === "entry" ? e.rowLabelAlign : void 0,
77
+ error: t(r) ? e.error : void 0,
78
+ "error-id": _.value,
79
+ "data-field-locked": t(b) ? "true" : void 0
80
+ }), j({
81
+ default: $(() => [
82
+ q("div", {
83
+ class: "relative w-full min-w-0",
84
+ title: t(b) ? e.lockedReason : void 0
85
+ }, [
86
+ q("div", {
87
+ class: y(t(r) ? k.value === "setting" ? "flex min-w-0 flex-col items-end" : k.value === "stacked" ? "flex min-w-0 flex-col items-stretch" : "flex min-w-0 flex-col items-start compact:items-end" : "")
88
+ }, [
89
+ t(r) ? u(o.$slots, "default", {
90
+ id: v.value,
91
+ describedby: w.value,
92
+ invalid: !!e.error,
93
+ required: e.required,
94
+ disabled: e.disabled
95
+ }, void 0, void 0, 0) : t(l).readonly ? u(o.$slots, "readonly", {}, void 0, void 0, 1) : p.value ? (i(), s("span", {
96
+ key: 2,
97
+ class: y(["block break-words text-body text-content-strong", e.valueStyle === "mono" ? "font-mono" : e.valueStyle === "numeric" ? "tabular-nums" : ""])
98
+ }, [
99
+ t(l).prefix ? (i(), s("span", X, [
100
+ u(o.$slots, "prefix")
101
+ ])) : n("", !0),
102
+ e.prefix ? (i(), s("span", Y, f(e.prefix), 1)) : n("", !0),
103
+ x(f(B.value), 1),
104
+ e.suffix ? (i(), s("span", Z, f(e.suffix), 1)) : n("", !0)
105
+ ], 2)) : (i(), s("span", ee, f(t(a)("core.state.no_value")), 1))
106
+ ], 2)
107
+ ], 8, W),
108
+ t(b) && e.lockedReason ? (i(), s("span", te, f(e.lockedReason), 1)) : n("", !0)
109
+ ]),
110
+ _: 2
111
+ }, [
112
+ t(r) && t(l).trailing ? {
113
+ name: "trailing",
114
+ fn: $(() => [
115
+ u(o.$slots, "trailing")
116
+ ]),
117
+ key: "0"
118
+ } : void 0,
119
+ t(r) && t(l).labelTrailing ? {
120
+ name: "label-trailing",
121
+ fn: $(() => [
122
+ u(o.$slots, "labelTrailing")
123
+ ]),
124
+ key: "1"
125
+ } : void 0
126
+ ]), 1040, ["label", "label-hidden", "for", "sub", "sub-id", "required", "layout", "label-align", "error", "error-id", "data-field-locked"])) : t(m) ? n("", !0) : (i(), s("div", T({ key: 1 }, N.value, {
127
+ "data-field-error": e.error ? "true" : void 0,
128
+ class: "flex min-w-0 flex-col gap-1"
129
+ }), [
130
+ e.label || t(r) && t(l).labelTrailing ? (i(), s("div", {
131
+ key: 0,
132
+ class: y(e.labelHidden && !(t(r) && t(l).labelTrailing) ? "contents" : "flex items-center justify-between gap-3")
133
+ }, [
134
+ e.label ? (i(), s("label", {
135
+ key: 0,
136
+ for: t(r) ? v.value : void 0,
137
+ class: y(e.labelHidden ? "sr-only" : "text-footnote font-medium text-content-muted")
138
+ }, [
139
+ x(f(e.label), 1),
140
+ t(r) && e.required ? (i(), s("span", re, " *")) : n("", !0)
141
+ ], 10, le)) : n("", !0),
142
+ t(r) ? u(o.$slots, "labelTrailing", {}, void 0, void 0, 1) : n("", !0)
143
+ ], 2)) : n("", !0),
144
+ t(r) && t(l).trailing ? (i(), s("div", ae, [
145
+ q("div", ie, [
146
+ u(o.$slots, "default", {
147
+ id: v.value,
148
+ describedby: w.value,
149
+ invalid: !!e.error,
150
+ required: e.required,
151
+ disabled: e.disabled
152
+ })
153
+ ]),
154
+ u(o.$slots, "trailing")
155
+ ])) : t(r) ? u(o.$slots, "default", {
156
+ id: v.value,
157
+ describedby: w.value,
158
+ invalid: !!e.error,
159
+ required: e.required,
160
+ disabled: e.disabled
161
+ }, void 0, void 0, 2) : t(l).readonly ? u(o.$slots, "readonly", {}, void 0, void 0, 3) : (i(), s("span", {
162
+ key: 4,
163
+ class: y(["text-body", p.value ? "text-content-strong" : "text-content-disabled"])
164
+ }, [
165
+ p.value && t(l).prefix ? (i(), s("span", se, [
166
+ u(o.$slots, "prefix")
167
+ ])) : n("", !0),
168
+ x(f(p.value ? `${e.prefix ?? ""}${B.value}${e.suffix ?? ""}` : t(a)("core.state.no_value")), 1)
169
+ ], 2)),
170
+ e.hint && t(r) ? (i(), s("p", {
171
+ key: 5,
172
+ id: h.value,
173
+ class: "text-footnote text-content-muted"
174
+ }, f(e.hint), 9, ne)) : n("", !0),
175
+ e.error ? (i(), s("p", {
176
+ key: 6,
177
+ id: _.value,
178
+ role: "alert",
179
+ class: "flex items-start gap-1.5 text-footnote text-content-destructive"
180
+ }, [
181
+ z(t(G), {
182
+ name: "alertTriangle",
183
+ size: 14,
184
+ class: "mt-px shrink-0"
185
+ }),
186
+ x(" " + f(e.error), 1)
187
+ ], 8, de)) : n("", !0)
188
+ ], 16, oe));
189
+ }
190
+ }), ue = "rounded-control transition-[background-color,box-shadow,opacity] duration-motion-fast ease-motion-standard";
191
+ function ye(d, e) {
192
+ const a = !!I();
193
+ return c(() => a ? K({ kind: d, state: e() }) : [ue, ...Q(d, e()).map(([l]) => l)].join(" "));
194
+ }
195
+ function ge(d) {
196
+ const e = /* @__PURE__ */ new Map();
197
+ for (const a of d) {
198
+ const l = a.group ?? null, g = e.get(l) ?? [];
199
+ g.push(a), e.set(l, g);
200
+ }
201
+ return [...e.entries()].sort(([a], [l]) => a === null ? -1 : l === null ? 1 : 0).map(([a, l]) => ({ title: a, options: l }));
202
+ }
203
+ function ke(d, e) {
204
+ const a = S(e.trim());
205
+ return a === "" ? d : d.filter((l) => S(l.label).includes(a) || l.description !== void 0 && S(l.description).includes(a));
206
+ }
207
+ const S = (d) => d.normalize("NFD").replace(/[̀-ͯ]/g, "").toLocaleLowerCase();
208
+ export {
209
+ be as _,
210
+ S as f,
211
+ ge as g,
212
+ ke as m,
213
+ ye as u
214
+ };
@@ -3,9 +3,9 @@ declare const _default: <Subject = undefined>(__VLS_props: NonNullable<Awaited<t
3
3
  props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
4
4
  readonly onCancel?: (() => any) | undefined;
5
5
  readonly onFailed?: ((error: unknown) => any) | undefined;
6
- readonly onDismissed?: (() => any) | undefined;
7
6
  readonly onConfirm?: ((subject: Subject) => any) | undefined;
8
- } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onCancel" | "onDismissed" | "onFailed" | "onConfirm"> & {
7
+ readonly onDismissed?: (() => any) | undefined;
8
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onCancel" | "onFailed" | "onConfirm" | "onDismissed"> & {
9
9
  title: string;
10
10
  message?: string;
11
11
  /** Says exactly what happens; by default "Confirm". */
@@ -25,7 +25,7 @@ declare const _default: <Subject = undefined>(__VLS_props: NonNullable<Awaited<t
25
25
  slots: {
26
26
  default?: () => unknown;
27
27
  };
28
- emit: ((evt: "cancel") => void) & ((evt: "failed", error: unknown) => void) & ((evt: "dismissed") => void) & ((evt: "confirm", subject: Subject) => void);
28
+ emit: ((evt: "cancel") => void) & ((evt: "failed", error: unknown) => void) & ((evt: "confirm", subject: Subject) => void) & ((evt: "dismissed") => void);
29
29
  }>) => import("vue").VNode & {
30
30
  __ctx?: Awaited<typeof __VLS_setup>;
31
31
  };
@@ -35,16 +35,16 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
35
35
  dismiss: () => void;
36
36
  toggle: () => void;
37
37
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
38
- presented: () => any;
39
38
  dismissed: () => any;
39
+ presented: () => any;
40
40
  }, string, import("vue").PublicProps, Readonly<{
41
41
  items: readonly MenuItem[];
42
42
  /** The accessible name of the menu. */
43
43
  label: string;
44
44
  placement?: Placement;
45
45
  }> & Readonly<{
46
- onPresented?: (() => any) | undefined;
47
46
  onDismissed?: (() => any) | undefined;
47
+ onPresented?: (() => any) | undefined;
48
48
  }>, {
49
49
  placement: Placement;
50
50
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
@@ -43,12 +43,12 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps,
43
43
  present: typeof present;
44
44
  dismiss: () => boolean | Promise<boolean>;
45
45
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
46
- presented: () => any;
47
46
  dismissed: () => any;
47
+ presented: () => any;
48
48
  "update:index": (value: number) => any;
49
49
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
50
- onPresented?: (() => any) | undefined;
51
50
  onDismissed?: (() => any) | undefined;
51
+ onPresented?: (() => any) | undefined;
52
52
  "onUpdate:index"?: ((value: number) => any) | undefined;
53
53
  }>, {
54
54
  title: string;
@@ -54,11 +54,11 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {
54
54
  dismiss: () => void;
55
55
  toggle: typeof toggle;
56
56
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
57
- presented: () => any;
58
57
  dismissed: () => any;
58
+ presented: () => any;
59
59
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
60
- onPresented?: (() => any) | undefined;
61
60
  onDismissed?: (() => any) | undefined;
61
+ onPresented?: (() => any) | undefined;
62
62
  }>, {
63
63
  width: "sm" | "md" | "lg" | "auto";
64
64
  placement: Placement;
@@ -53,10 +53,10 @@ type __VLS_Slots = {
53
53
  };
54
54
  declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
55
55
  compact: "segmented" | "rows" | "auto" | "hub";
56
+ steps: Readonly<Record<string, SectionStep>>;
56
57
  desktop: "sidebar" | "segments" | "hub";
57
58
  backLabel: string;
58
59
  counts: Readonly<Record<string, string | number>>;
59
- steps: Readonly<Record<string, SectionStep>>;
60
60
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
61
61
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
62
62
  export default _default;
@@ -32,8 +32,8 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps,
32
32
  id: string;
33
33
  presentation: "card" | "section";
34
34
  subtitle: string;
35
- flush: boolean;
36
35
  collapsible: boolean;
36
+ flush: boolean;
37
37
  headingLevel: 2 | 3 | 4;
38
38
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
39
39
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
@@ -0,0 +1,37 @@
1
+ import { type ComputedRef } from "vue";
2
+ import { type RouteLocationNormalizedLoaded, type RouteLocationRaw, type Router } from "vue-router";
3
+ import type { PageBack } from "./types";
4
+ /** The query parameter that makes a page lead back to the page the user came from: the origin's path with its query. */
5
+ export declare const BACK_PARAM = "back";
6
+ /** The origin's name ("Golf 1.6 TDI"), so the back link reads it even after a reload or from a copied link. */
7
+ export declare const BACK_TITLE_PARAM = "back_title";
8
+ /** A query without the origin: a different record (the pager's) is not reached from the page the user came from. */
9
+ export declare function withoutBack(query: RouteLocationNormalizedLoaded["query"]): RouteLocationNormalizedLoaded["query"];
10
+ /**
11
+ * The back the current route asks for, or null: `?back=` must be a path of this application (one leading `/`, never `//`,
12
+ * `/\` or a scheme) that resolves to a real page other than this one. The label is `?back_title=` (plain text, capped), else
13
+ * the target route's `meta.titleKey`; without either there is no usable back.
14
+ */
15
+ export declare function originBackOf(router: Router, route: RouteLocationNormalizedLoaded, translate: {
16
+ t: (key: string) => string;
17
+ te: (key: string) => boolean;
18
+ }): PageBack | null;
19
+ /** The back the current route asks for through `?back=`, reactive; the page shell puts it in place of the page's own back. */
20
+ export declare function useOriginBack(): ComputedRef<PageBack | null>;
21
+ export interface BackLinks {
22
+ /**
23
+ * `to`, opened from this page: its page leads back here, with this page's name ("‹ Golf 1.6 TDI"). Call it in the template
24
+ * (or a computed): the title is read when the page has loaded, so the link updates once the record's name is there.
25
+ */
26
+ backHere(to: RouteLocationRaw): RouteLocationRaw;
27
+ /** `to`, carrying the back this page was opened with (create, then the saved record); `to` unchanged when there is none. */
28
+ keepBack(to: RouteLocationRaw): RouteLocationRaw;
29
+ }
30
+ /**
31
+ * The two link helpers of "back to where you came from": a link that leaves a record for another module uses `backHere`, a page
32
+ * that hands the user on (a saved record) uses `keepBack`.
33
+ *
34
+ * const { backHere } = useBackLinks();
35
+ * <RouterLink :to="backHere({ name: 'contracts.create' })">New contract</RouterLink>
36
+ */
37
+ export declare function useBackLinks(): BackLinks;
@@ -1,4 +1,5 @@
1
1
  export { default as AdaptivePageShell } from "./AdaptivePageShell.vue";
2
+ export { BACK_PARAM, BACK_TITLE_PARAM, useBackLinks, type BackLinks } from "./back";
2
3
  export { default as BottomDock } from "./BottomDock.vue";
3
4
  export { bottomDockKey, installBottomDock, useBottomDockTarget } from "./bottomDock";
4
5
  export { default as BottomDockPortal } from "./BottomDockPortal.vue";