@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
@@ -1,21 +1,21 @@
1
- import { defineComponent as Y, ref as R, computed as j, watch as te, openBlock as i, createBlock as E, unref as e, withCtx as y, createElementVNode as A, createElementBlock as _, toDisplayString as w, createCommentVNode as D, createVNode as $, Fragment as B, renderList as G, createSlots as fe, renderSlot as ke, createTextVNode as M, useTemplateRef as le } from "vue";
1
+ import { defineComponent as Y, ref as R, computed as j, watch as te, openBlock as i, createBlock as E, unref as e, withCtx as y, createElementVNode as A, createElementBlock as b, toDisplayString as w, createCommentVNode as D, createVNode as $, Fragment as B, renderList as G, createSlots as fe, renderSlot as ke, createTextVNode as M, useTemplateRef as le } from "vue";
2
2
  import { useI18n as ee } from "vue-i18n";
3
3
  import { _ as I } from "./Button.vue_vue_type_script_setup_true_lang-JrqhO99l.js";
4
- import { a as K } from "./FormGroup.vue_vue_type_script_setup_true_lang-dsO1m9Mm.js";
5
- import { g as V } from "./options-B48UiYsG.js";
4
+ import { a as K } from "./FormGroup.vue_vue_type_script_setup_true_lang-lvAuBG-0.js";
5
+ import { _ as V } from "./FormRow.vue_vue_type_script_setup_true_lang-CpgNVQF4.js";
6
6
  import { _ as $e } from "./AlertDialog.vue_vue_type_script_setup_true_lang-WuGvAOrj.js";
7
7
  import { t as Z } from "./toast-CqSDTWRX.js";
8
- import { _ as ne } from "./AccessGate.vue_vue_type_script_setup_true_lang-BH3f0hda.js";
8
+ import { _ as ne } from "./AccessGate.vue_vue_type_script_setup_true_lang-Bg8JFAOT.js";
9
9
  import { a as xe } from "./error-CD7x0Jrz.js";
10
10
  import { _ as je } from "./AsyncSection.vue_vue_type_script_setup_true_lang-CX8mpXRE.js";
11
11
  import { _ as Le } from "./EmptyState.vue_vue_type_script_setup_true_lang-DbZiO2RF.js";
12
12
  import { u as qe } from "./useLoad-M7V-AVwR.js";
13
- import { _ as Ce, a as Ee } from "./SelectField.vue_vue_type_script_setup_true_lang-CLkoPbGm.js";
14
- import { _ as Ne } from "./SegmentedField.vue_vue_type_script_setup_true_lang-zv_AxpBn.js";
15
- import { u as Te, _ as Se } from "./useCommand-DAMgQ5NE.js";
13
+ import { _ as Ce, a as Ee } from "./SelectField.vue_vue_type_script_setup_true_lang-D5xYofdb.js";
14
+ import { _ as Ne } from "./SegmentedField.vue_vue_type_script_setup_true_lang-CLR6EvzO.js";
15
+ import { u as Te, _ as Se } from "./useCommand-DQKvro1n.js";
16
16
  import { r as C } from "./route-goWMxDUN.js";
17
17
  import { s as Ae } from "./routes-Beyr5NQo.js";
18
- import { u as Re } from "./platform-ORzRR3Tw.js";
18
+ import { u as Re } from "./platform-DU9QFts8.js";
19
19
  import { u as J, g as pe, f as De, j as Ue, l as Be, S as ce, e as Oe, a as re } from "./refusals-DfPzVNNY.js";
20
20
  import { _ as Pe } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js";
21
21
  import { u as Ge } from "./mediaQuery-CygcXmFW.js";
@@ -132,33 +132,33 @@ const ze = {
132
132
  done: (c) => {
133
133
  Z.success(a("core.access.added")), t("added", c);
134
134
  }
135
- }), n = x.form.values, m = R(null), h = R(!1), b = R([]), p = R([]), N = R(!1), k = R(!1), q = j(() => m.value ? Me(m.value) : []), g = j(() => q.value.find((c) => c.level === n.level) ?? null), O = j(() => q.value.length > 1), se = j(() => {
135
+ }), n = x.form.values, m = R(null), h = R(!1), _ = R([]), p = R([]), N = R(!1), k = R(!1), q = j(() => m.value ? Me(m.value) : []), g = j(() => q.value.find((c) => c.level === n.level) ?? null), O = j(() => q.value.length > 1), se = j(() => {
136
136
  const c = m.value, d = g.value;
137
- return c && d ? d.chain.map((r, P) => ({ name: r, places: ie(c, d, P, b.value) })) : [];
138
- }), be = j(() => {
139
- const c = g.value?.chain.length ?? 0, d = c ? b.value[c - 1] : null;
137
+ return c && d ? d.chain.map((r, P) => ({ name: r, places: ie(c, d, P, _.value) })) : [];
138
+ }), _e = j(() => {
139
+ const c = g.value?.chain.length ?? 0, d = c ? _.value[c - 1] : null;
140
140
  return m.value?.places.find((r) => r.level === g.value?.level && r.id === d)?.name ?? null;
141
- }), Q = j(() => g.value !== null && g.value.chain.every((c, d) => b.value[d] != null));
141
+ }), Q = j(() => g.value !== null && g.value.chain.every((c, d) => _.value[d] != null));
142
142
  function ae(c) {
143
- n.level = c, b.value = [], n.place = null;
143
+ n.level = c, _.value = [], n.place = null;
144
144
  }
145
145
  function oe(c, d) {
146
- const r = b.value.slice(0, c);
147
- r[c] = d, b.value = r;
146
+ const r = _.value.slice(0, c);
147
+ r[c] = d, _.value = r;
148
148
  }
149
- te([() => n.level, b, m], () => {
149
+ te([() => n.level, _, m], () => {
150
150
  const c = m.value, d = g.value;
151
151
  if (!(!c || !d)) {
152
152
  for (let r = 0; r < d.chain.length; r++) {
153
- if (b.value[r] != null) continue;
154
- const P = ie(c, d, r, b.value);
153
+ if (_.value[r] != null) continue;
154
+ const P = ie(c, d, r, _.value);
155
155
  P.length === 1 && P[0] && oe(r, P[0].id);
156
156
  break;
157
157
  }
158
- n.place = d.chain.length === 0 ? null : b.value[d.chain.length - 1] ?? null;
158
+ n.place = d.chain.length === 0 ? null : _.value[d.chain.length - 1] ?? null;
159
159
  }
160
160
  }, { deep: !0 });
161
- async function _e() {
161
+ async function be() {
162
162
  if (n.role = null, p.value = [], k.value = !1, !g.value || !Q.value) return;
163
163
  N.value = !0;
164
164
  const c = `${n.level}:${n.place}`;
@@ -171,7 +171,7 @@ const ze = {
171
171
  N.value = !1;
172
172
  }
173
173
  }
174
- te([() => n.level, () => n.place, Q], () => void _e());
174
+ te([() => n.level, () => n.place, Q], () => void be());
175
175
  const ge = j(() => p.value.map((c) => ({ value: c.ref, label: u.roleName(c), description: u.roleKind(c) }))), z = j(() => p.value.find((c) => c.ref === n.role) ?? null), he = j(() => {
176
176
  const c = /* @__PURE__ */ new Map();
177
177
  for (const d of z.value?.grants ?? []) {
@@ -179,9 +179,9 @@ const ze = {
179
179
  r && (!c.has(r) || d.permission.endsWith(":view")) && c.set(r, d.qualifier);
180
180
  }
181
181
  return [...c].map(([d, r]) => ({ ownable: d, qualifier: r }));
182
- }), ye = j(() => u.scopeLabel({ level: n.level ?? m.value?.root_level ?? "", name: be.value }));
182
+ }), ye = j(() => u.scopeLabel({ level: n.level ?? m.value?.root_level ?? "", name: _e.value }));
183
183
  async function we() {
184
- m.value = null, h.value = !1, b.value = [], p.value = [], x.present();
184
+ m.value = null, h.value = !1, _.value = [], p.value = [], x.present();
185
185
  try {
186
186
  m.value = L ? await L(f.subject, new AbortController().signal) : await v.scopes(f.subject);
187
187
  } catch {
@@ -200,7 +200,7 @@ const ze = {
200
200
  }, {
201
201
  default: y(() => [
202
202
  A("div", ze, [
203
- h.value ? (i(), _("p", He, w(e(a)("core.access.add.scopes_failed")), 1)) : m.value && q.value.length === 0 ? (i(), _("p", We, w(e(a)("core.access.add.no_places")), 1)) : D("", !0),
203
+ h.value ? (i(), b("p", He, w(e(a)("core.access.add.scopes_failed")), 1)) : m.value && q.value.length === 0 ? (i(), b("p", We, w(e(a)("core.access.add.no_places")), 1)) : D("", !0),
204
204
  O.value ? (i(), E(e(K), {
205
205
  key: 2,
206
206
  header: e(a)("core.access.add.scope_header")
@@ -212,9 +212,9 @@ const ze = {
212
212
  options: q.value.map((r) => ({ value: r.level, label: e(u).levelLabel(r.level) })),
213
213
  "onUpdate:modelValue": d[0] || (d[0] = (r) => ae(r))
214
214
  }, null, 8, ["model-value", "label", "options"]),
215
- (i(!0), _(B, null, G(se.value, (r, P) => (i(), E(e(Ce), {
215
+ (i(!0), b(B, null, G(se.value, (r, P) => (i(), E(e(Ce), {
216
216
  key: r.name,
217
- "model-value": b.value[P] ?? null,
217
+ "model-value": _.value[P] ?? null,
218
218
  label: e(u).levelLabel(r.name),
219
219
  options: r.places.map((H) => ({ value: H.id, label: H.name })),
220
220
  "onUpdate:modelValue": (H) => oe(P, H)
@@ -222,8 +222,8 @@ const ze = {
222
222
  ]),
223
223
  _: 1
224
224
  }, 8, ["header"])) : D("", !0),
225
- Q.value ? (i(), _(B, { key: 3 }, [
226
- N.value ? (i(), _("p", Ie, w(e(a)("core.access.add.roles_loading")), 1)) : k.value ? (i(), _("p", Ye, w(e(a)("core.access.add.roles_failed")), 1)) : p.value.length === 0 ? (i(), _("p", Je, w(e(a)("core.access.add.no_roles")), 1)) : (i(), _("div", Qe, [
225
+ Q.value ? (i(), b(B, { key: 3 }, [
226
+ N.value ? (i(), b("p", Ie, w(e(a)("core.access.add.roles_loading")), 1)) : k.value ? (i(), b("p", Ye, w(e(a)("core.access.add.roles_failed")), 1)) : p.value.length === 0 ? (i(), b("p", Je, w(e(a)("core.access.add.no_roles")), 1)) : (i(), b("div", Qe, [
227
227
  A("p", Xe, w(e(a)("core.access.add.role")), 1),
228
228
  $(e(Ee), {
229
229
  options: ge.value,
@@ -232,7 +232,7 @@ const ze = {
232
232
  }, null, 8, ["options", "model-value"])
233
233
  ]))
234
234
  ], 64)) : D("", !0),
235
- z.value ? (i(), _("div", Ze, [
235
+ z.value ? (i(), b("div", Ze, [
236
236
  $(e(K), {
237
237
  header: e(a)("core.access.add.role_gives"),
238
238
  footer: e(a)("core.access.add.role_gives_footer")
@@ -243,7 +243,7 @@ const ze = {
243
243
  label: e(u).roleName(z.value),
244
244
  sub: z.value.description
245
245
  }, null, 8, ["label", "sub"]),
246
- (i(!0), _(B, null, G(he.value, (r) => (i(), E(e(V), {
246
+ (i(!0), b(B, null, G(he.value, (r) => (i(), E(e(V), {
247
247
  key: r.ownable,
248
248
  layout: "setting",
249
249
  label: e(u).ownableLabel(r.ownable),
@@ -304,8 +304,8 @@ function os(l, s) {
304
304
  for (const m of t.grants) {
305
305
  const h = S ? m.qualifier : "all";
306
306
  n.scopes.some((p) => W(p) === W(m.scope)) || n.scopes.push(m.scope), S && (n.qualifier = n.qualifier ? de(n.qualifier, h) : h);
307
- const b = n.sources.find((p) => p.roleName === m.role_name && W(p.scope) === W(m.scope));
308
- b ? S && (n.sources[n.sources.indexOf(b)] = { ...b, qualifier: de(b.qualifier, h) }) : n.sources.push({ roleKey: m.role_key, roleName: m.role_name, qualifier: h, scope: m.scope });
307
+ const _ = n.sources.find((p) => p.roleName === m.role_name && W(p.scope) === W(m.scope));
308
+ _ ? S && (n.sources[n.sources.indexOf(_)] = { ..._, qualifier: de(_.qualifier, h) }) : n.sources.push({ roleKey: m.role_key, roleName: m.role_name, qualifier: h, scope: m.scope });
309
309
  }
310
310
  x.set(L, n), o.set(T, x);
311
311
  }
@@ -346,7 +346,7 @@ const ts = {
346
346
  key: 0,
347
347
  class: "contents",
348
348
  "data-test": "effective-show-all"
349
- }, bs = /* @__PURE__ */ Y({
349
+ }, _s = /* @__PURE__ */ Y({
350
350
  __name: "EffectiveAccess",
351
351
  props: {
352
352
  effective: {},
@@ -354,10 +354,10 @@ const ts = {
354
354
  },
355
355
  setup(l) {
356
356
  const s = l, { t: o } = ee(), { catalogue: f } = pe(), t = J(), a = Ge(), u = j(() => os(f, s.effective)), v = R(!1), T = j(() => a.value && !v.value ? u.value.slice(0, 3) : u.value), L = R({}), S = (m) => m.actions.map((h) => t.permissionLabel(h.permission)).join(" · "), x = (m) => m.sources.map((h) => {
357
- const b = t.roleName({ key: h.roleKey, name: h.roleName });
358
- return m.ownable ? `${b} (${t.qualifierNoun(h.qualifier).toLowerCase()})` : b;
357
+ const _ = t.roleName({ key: h.roleKey, name: h.roleName });
358
+ return m.ownable ? `${_} (${t.qualifierNoun(h.qualifier).toLowerCase()})` : _;
359
359
  }).join(", "), n = (m) => [m.qualifier ? t.qualifierNoun(m.qualifier) : "", m.scopes.map((h) => t.scopeLabel(h)).join(", ")].filter(Boolean).join(" · ");
360
- return (m, h) => (i(), _("section", ts, [
360
+ return (m, h) => (i(), b("section", ts, [
361
361
  A("h2", ls, w(e(o)("core.access.effective.title", { name: s.name })), 1),
362
362
  u.value.length === 0 ? (i(), E(e(K), {
363
363
  key: 0,
@@ -370,14 +370,14 @@ const ts = {
370
370
  }, null, 8, ["label"])
371
371
  ]),
372
372
  _: 1
373
- }, 8, ["footer"])) : (i(), _(B, { key: 1 }, [
374
- (i(!0), _(B, null, G(T.value, (b) => (i(), E(e(K), {
375
- key: b.key,
376
- header: e(t).groupLabel(b.key),
377
- footer: b === T.value[T.value.length - 1] ? e(o)("core.access.effective.footer") : void 0
373
+ }, 8, ["footer"])) : (i(), b(B, { key: 1 }, [
374
+ (i(!0), b(B, null, G(T.value, (_) => (i(), E(e(K), {
375
+ key: _.key,
376
+ header: e(t).groupLabel(_.key),
377
+ footer: _ === T.value[T.value.length - 1] ? e(o)("core.access.effective.footer") : void 0
378
378
  }, {
379
379
  default: y(() => [
380
- (i(!0), _(B, null, G(b.screens, (p) => (i(), E(e(V), {
380
+ (i(!0), b(B, null, G(_.screens, (p) => (i(), E(e(V), {
381
381
  key: p.key,
382
382
  layout: "setting",
383
383
  "stack-on-compact": "",
@@ -386,14 +386,14 @@ const ts = {
386
386
  sub: y(() => [
387
387
  A("span", ns, w(S(p)), 1),
388
388
  A("span", cs, w(e(o)("core.access.effective.from_roles", { roles: x(p) })), 1),
389
- L.value[p.key] ? (i(), _("ul", rs, [
390
- (i(!0), _(B, null, G(p.actions, (N) => (i(), _("li", {
389
+ L.value[p.key] ? (i(), b("ul", rs, [
390
+ (i(!0), b(B, null, G(p.actions, (N) => (i(), b("li", {
391
391
  key: N.permission,
392
392
  "data-permission": N.permission
393
393
  }, [
394
394
  A("span", us, w(e(t).permissionLabel(N.permission)), 1),
395
- N.unavailable ? (i(), _("span", ds, w(e(o)("core.access.effective.unavailable")), 1)) : D("", !0),
396
- (i(!0), _(B, null, G(N.grants, (k) => (i(), _("span", {
395
+ N.unavailable ? (i(), b("span", ds, w(e(o)("core.access.effective.unavailable")), 1)) : D("", !0),
396
+ (i(!0), b(B, null, G(N.grants, (k) => (i(), b("span", {
397
397
  key: `${k.binding_id}-${k.scope.level}-${k.scope.id ?? 0}`,
398
398
  class: "block text-content-muted"
399
399
  }, w(e(o)("core.access.effective.why_row", {
@@ -405,7 +405,7 @@ const ts = {
405
405
  ])) : D("", !0)
406
406
  ]),
407
407
  default: y(() => [
408
- p.allUnavailable ? (i(), _("span", ms, [
408
+ p.allUnavailable ? (i(), b("span", ms, [
409
409
  $(e(Ve), { tone: "warning" }, {
410
410
  default: y(() => [
411
411
  M(w(e(o)("core.access.effective.unavailable")), 1)
@@ -435,11 +435,11 @@ const ts = {
435
435
  ]),
436
436
  _: 2
437
437
  }, 1032, ["header", "footer"]))), 128)),
438
- e(a) && u.value.length > 3 ? (i(), _("span", vs, [
438
+ e(a) && u.value.length > 3 ? (i(), b("span", vs, [
439
439
  $(e(I), {
440
440
  prominence: "secondary",
441
441
  class: "self-center",
442
- onClick: h[0] || (h[0] = (b) => v.value = !v.value)
442
+ onClick: h[0] || (h[0] = (_) => v.value = !v.value)
443
443
  }, {
444
444
  default: y(() => [
445
445
  M(w(v.value ? e(o)("core.access.effective.fewer_modules") : e(o)("core.access.effective.all_modules", { count: u.value.length })), 1)
@@ -450,7 +450,7 @@ const ts = {
450
450
  ], 64))
451
451
  ]));
452
452
  }
453
- }), _s = {
453
+ }), bs = {
454
454
  class: "flex min-w-0 flex-col gap-group-gap",
455
455
  "data-test": "access-panel"
456
456
  }, gs = ["data-test"], hs = {
@@ -478,8 +478,8 @@ const ts = {
478
478
  async function h(k) {
479
479
  await T.unbind(f.subject, k.id), Z.success(a("core.access.removed")), await x.reload();
480
480
  }
481
- const b = (k) => Z.error(v(k, { fallback: a("core.access.remove_failed") })), p = R(null), N = j(() => p.value ? a("core.access.remove_body", { name: f.name, role: u.roleName(p.value.role), scope: u.scopeLabel(p.value.scope) }) : "");
482
- return s({ reload: x.reload }), (k, q) => (i(), _("div", _s, [
481
+ const _ = (k) => Z.error(v(k, { fallback: a("core.access.remove_failed") })), p = R(null), N = j(() => p.value ? a("core.access.remove_body", { name: f.name, role: u.roleName(p.value.role), scope: u.scopeLabel(p.value.scope) }) : "");
482
+ return s({ reload: x.reload }), (k, q) => (i(), b("div", bs, [
483
483
  S.value ? (i(), E(e(Le), {
484
484
  key: 0,
485
485
  title: e(a)("core.resource.not_found.title"),
@@ -505,7 +505,7 @@ const ts = {
505
505
  label: e(a)("core.access.no_roles_title"),
506
506
  sub: e(a)("core.access.no_roles_description")
507
507
  }, null, 8, ["label", "sub"])) : D("", !0),
508
- (i(!0), _(B, null, G(g.bindings, (O) => (i(), E(as, {
508
+ (i(!0), b(B, null, G(g.bindings, (O) => (i(), E(as, {
509
509
  key: O.id,
510
510
  binding: O
511
511
  }, fe({ _: 2 }, [
@@ -565,7 +565,7 @@ const ts = {
565
565
  ]),
566
566
  _: 2
567
567
  }, 1032, ["header", "footer"]),
568
- $(bs, {
568
+ $(_s, {
569
569
  effective: g.effective,
570
570
  name: f.name
571
571
  }, null, 8, ["effective", "name"])
@@ -587,7 +587,7 @@ const ts = {
587
587
  message: N.value,
588
588
  "confirm-label": e(a)("core.access.remove"),
589
589
  action: h,
590
- onFailed: b
590
+ onFailed: _
591
591
  }, null, 8, ["title", "message", "confirm-label"])
592
592
  ]));
593
593
  }
@@ -1,27 +1,27 @@
1
1
  import { defineComponent as V, openBlock as m, createBlock as U, unref as e, withCtx as _, createVNode as n, mergeProps as E, createElementVNode as z, toDisplayString as q, watch as J, createElementBlock as w, Fragment as A, useModel as ve, useId as _e, useTemplateRef as Q, ref as x, onMounted as ge, onBeforeUnmount as ye, computed as D, withModifiers as be, createCommentVNode as H, createTextVNode as j, mergeModels as re, renderList as we, resolveDynamicComponent as le } from "vue";
2
2
  import { useI18n as P } from "vue-i18n";
3
- import { _ as he } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-uO4EAmBb.js";
4
- import { u as F } from "./platform-ORzRR3Tw.js";
3
+ import { _ as he } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-oXWQTfBs.js";
4
+ import { u as F } from "./platform-DU9QFts8.js";
5
5
  import { _ as ee } from "./AsyncSection.vue_vue_type_script_setup_true_lang-CX8mpXRE.js";
6
6
  import { u as te } from "./useLoad-M7V-AVwR.js";
7
7
  import { i as S } from "./preferences-hYhrw8Uy.js";
8
- import { h as xe, q as $e, j as ke, f as qe } from "./index-DM_nWOYf.js";
9
- import { a as K, u as ne, p as Ce } from "./FormGroup.vue_vue_type_script_setup_true_lang-dsO1m9Mm.js";
10
- import { _ as de } from "./FormView.vue_vue_type_script_setup_true_lang-Bq_Qa4py.js";
11
- import { u as Se, _ as Ee, a as Ve, b as Pe } from "./useGroupSheet-B-Hs4gNO.js";
8
+ import { h as xe, q as $e, j as ke, f as qe } from "./index-BA2w8uwD.js";
9
+ import { a as K, u as ne, p as Ce } from "./FormGroup.vue_vue_type_script_setup_true_lang-lvAuBG-0.js";
10
+ import { _ as de } from "./FormView.vue_vue_type_script_setup_true_lang-D01Jr4UU.js";
11
+ import { u as Se, _ as Ee, a as Ve, b as Pe } from "./useGroupSheet-CRw3MUmX.js";
12
12
  import { t as C } from "./toast-CqSDTWRX.js";
13
- import { u as T } from "./serverMessages-Ce8-MK4e.js";
14
- import { g as Z } from "./options-B48UiYsG.js";
15
- import { _ as I } from "./TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js";
13
+ import { u as T } from "./serverMessages-C_KkDvpT.js";
14
+ import { _ as Z } from "./FormRow.vue_vue_type_script_setup_true_lang-CpgNVQF4.js";
15
+ import { _ as I } from "./TextField.vue_vue_type_script_setup_true_lang-CVGh-p3J.js";
16
16
  import { _ as Ne } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js";
17
- import { u as ce } from "./format-Cp1h0vsC.js";
18
- import { a as W } from "./ActionRow.vue_vue_type_script_setup_true_lang-DybAIOHS.js";
19
- import { i as O } from "./usePreferences-BfMXVbSO.js";
17
+ import { u as ce } from "./format-C_HXlOYQ.js";
18
+ import { a as W } from "./ActionRow.vue_vue_type_script_setup_true_lang-B5IMNnTf.js";
19
+ import { i as O } from "./usePreferences-DB29UTFD.js";
20
20
  import { a as Y } from "./error-CD7x0Jrz.js";
21
21
  import { a as Ae } from "./leaveGuard-Cc8yeLxM.js";
22
22
  import { _ as Me } from "./Modal.vue_vue_type_script_setup_true_lang-CZ7WrDwu.js";
23
23
  import { _ as X } from "./Button.vue_vue_type_script_setup_true_lang-JrqhO99l.js";
24
- import { u as Re, _ as De } from "./useCommand-DAMgQ5NE.js";
24
+ import { u as Re, _ as De } from "./useCommand-DQKvro1n.js";
25
25
  import { _ as Ue } from "./AlertDialog.vue_vue_type_script_setup_true_lang-WuGvAOrj.js";
26
26
  import { _ as Ie } from "./ViewTabs.vue_vue_type_script_setup_true_lang-BjdDXE3T.js";
27
27
  const Fe = { class: "font-mono" }, ie = /* @__PURE__ */ V({
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as p, useTemplateRef as u, openBlock as t, createElementBlock as c, renderSlot as r, createCommentVNode as s, createElementVNode as n, toDisplayString as a, Fragment as d, renderList as f, createBlock as h, resolveDynamicComponent as g, withCtx as x, createVNode as _, unref as k } from "vue";
2
2
  import { _ as b } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
3
- import { u as w } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-uO4EAmBb.js";
3
+ import { u as w } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-oXWQTfBs.js";
4
4
  const v = { class: "flex min-w-0 flex-wrap items-center gap-5 compact:flex-col compact:gap-2 compact:text-center" }, y = {
5
5
  key: 0,
6
6
  class: "min-w-0 max-w-full shrink-0"
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as S, openBlock as a, createElementBlock as v, unref as t, createBlock as d, withCtx as s, createVNode as i, normalizeClass as m, createElementVNode as R, toDisplayString as y, computed as f, createSlots as $, renderSlot as u, createCommentVNode as A } from "vue";
2
2
  import { useI18n as z } from "vue-i18n";
3
- import { _ as C } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-uO4EAmBb.js";
3
+ import { _ as C } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-oXWQTfBs.js";
4
4
  import { _ as B } from "./AsyncSection.vue_vue_type_script_setup_true_lang-CX8mpXRE.js";
5
5
  import { _ as D } from "./EmptyState.vue_vue_type_script_setup_true_lang-DbZiO2RF.js";
6
6
  import { useRouter as K, RouterLink as w } from "vue-router";
@@ -1,21 +1,21 @@
1
1
  import { defineComponent as D, computed as k, ref as H, openBlock as r, createElementBlock as g, createElementVNode as O, unref as t, Fragment as L, renderList as C, normalizeClass as X, toDisplayString as f, createVNode as q, withCtx as p, createTextVNode as x, createCommentVNode as V, createBlock as _, createSlots as Y, watch as Z, mergeProps as F } from "vue";
2
2
  import { useI18n as I } from "vue-i18n";
3
- import { a as Q, u as ee } from "./FormGroup.vue_vue_type_script_setup_true_lang-dsO1m9Mm.js";
4
- import { _ as te } from "./FormView.vue_vue_type_script_setup_true_lang-Bq_Qa4py.js";
5
- import { _ as ae } from "./SelectField.vue_vue_type_script_setup_true_lang-CLkoPbGm.js";
6
- import { _ as se } from "./TextareaField.vue_vue_type_script_setup_true_lang-D2j4s96s.js";
7
- import { _ as oe } from "./TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js";
8
- import { u as ne } from "./useSaveChrome-7huA3FzR.js";
3
+ import { a as Q, u as ee } from "./FormGroup.vue_vue_type_script_setup_true_lang-lvAuBG-0.js";
4
+ import { _ as te } from "./FormView.vue_vue_type_script_setup_true_lang-D01Jr4UU.js";
5
+ import { _ as ae } from "./SelectField.vue_vue_type_script_setup_true_lang-D5xYofdb.js";
6
+ import { _ as se } from "./TextareaField.vue_vue_type_script_setup_true_lang-YxUlNHSk.js";
7
+ import { _ as oe } from "./TextField.vue_vue_type_script_setup_true_lang-CVGh-p3J.js";
8
+ import { u as ne } from "./useSaveChrome-DB9OwIjT.js";
9
9
  import { t as le } from "./toast-CqSDTWRX.js";
10
10
  import { _ as E } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
11
11
  import { _ as R } from "./Banner.vue_vue_type_script_setup_true_lang-sv0phngk.js";
12
- import { u as re } from "./PersonAccess.vue_vue_type_script_setup_true_lang-BPDh9s2m.js";
12
+ import { u as re } from "./PersonAccess.vue_vue_type_script_setup_true_lang-mYFuG-Y3.js";
13
13
  import { g as W, u as G, p as ie, o as T, h as K, i as M, s as ce, j as ue, f as de, a as me, k as fe } from "./refusals-DfPzVNNY.js";
14
14
  import { _ as pe } from "./Button.vue_vue_type_script_setup_true_lang-JrqhO99l.js";
15
15
  import { _ as _e } from "./Tabs.vue_vue_type_script_setup_true_lang-tpkGp98F.js";
16
- import { _ as ve } from "./SegmentedField.vue_vue_type_script_setup_true_lang-zv_AxpBn.js";
17
- import { _ as be } from "./SwitchField.vue_vue_type_script_setup_true_lang-Ds4q0bbl.js";
18
- import { u as ge } from "./platform-ORzRR3Tw.js";
16
+ import { _ as ve } from "./SegmentedField.vue_vue_type_script_setup_true_lang-CLR6EvzO.js";
17
+ import { _ as be } from "./SwitchField.vue_vue_type_script_setup_true_lang-CLtcuofe.js";
18
+ import { u as ge } from "./platform-DU9QFts8.js";
19
19
  function ye(y, c) {
20
20
  return Object.fromEntries(
21
21
  y.map(({ attribute: d, options: o }) => {
@@ -2,22 +2,22 @@ import { defineComponent as I, computed as L, openBlock as a, createBlock as b,
2
2
  import { useI18n as K } from "vue-i18n";
3
3
  import { useRouter as Z } from "vue-router";
4
4
  import { _ as ee } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js";
5
- import { a as C } from "./FormGroup.vue_vue_type_script_setup_true_lang-dsO1m9Mm.js";
6
- import { g as z } from "./options-B48UiYsG.js";
5
+ import { a as C } from "./FormGroup.vue_vue_type_script_setup_true_lang-lvAuBG-0.js";
6
+ import { _ as z } from "./FormRow.vue_vue_type_script_setup_true_lang-CpgNVQF4.js";
7
7
  import { _ as oe } from "./AlertDialog.vue_vue_type_script_setup_true_lang-WuGvAOrj.js";
8
8
  import { t as E } from "./toast-CqSDTWRX.js";
9
- import { _ as te } from "./RecordHeader.vue_vue_type_script_setup_true_lang-CZtvUH5L.js";
10
- import { u as ae } from "./platform-ORzRR3Tw.js";
9
+ import { _ as te } from "./RecordHeader.vue_vue_type_script_setup_true_lang-B3BnYg1x.js";
10
+ import { u as ae } from "./platform-DU9QFts8.js";
11
11
  import { a as le, u as se } from "./routeResource-DlTsGTg_.js";
12
- import { a as re } from "./ResourcePage.vue_vue_type_script_setup_true_lang-uLrX13ab.js";
12
+ import { a as re } from "./ResourcePage.vue_vue_type_script_setup_true_lang-1iZtj3rh.js";
13
13
  import { _ as ce } from "./AsyncSection.vue_vue_type_script_setup_true_lang-CX8mpXRE.js";
14
14
  import { _ as H } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
15
- import { u as O } from "./PersonAccess.vue_vue_type_script_setup_true_lang-BPDh9s2m.js";
15
+ import { u as O } from "./PersonAccess.vue_vue_type_script_setup_true_lang-mYFuG-Y3.js";
16
16
  import { u as U, f as ne, e as ie, g as ue, a as M } from "./refusals-DfPzVNNY.js";
17
- import { _ as J } from "./SelectField.vue_vue_type_script_setup_true_lang-CLkoPbGm.js";
18
- import { u as me, _ as pe } from "./useCommand-DAMgQ5NE.js";
17
+ import { _ as J } from "./SelectField.vue_vue_type_script_setup_true_lang-D5xYofdb.js";
18
+ import { u as me, _ as pe } from "./useCommand-DQKvro1n.js";
19
19
  import { _ as fe } from "./Modal.vue_vue_type_script_setup_true_lang-CZ7WrDwu.js";
20
- import { _ as de } from "./RoleEditor.vue_vue_type_script_setup_true_lang-V2D7fhR9.js";
20
+ import { _ as de } from "./RoleEditor.vue_vue_type_script_setup_true_lang-BslSDDiM.js";
21
21
  import { accessPages as T } from "./access/index.js";
22
22
  const _e = { "data-test": "role-replace" }, ve = /* @__PURE__ */ I({
23
23
  __name: "ReplaceRoleDialog",
@@ -1,17 +1,17 @@
1
- import { defineComponent as L, ref as g, computed as i, openBlock as d, createBlock as b, unref as e, withCtx as l, createElementVNode as f, createVNode as n, createElementBlock as h, toDisplayString as _, createCommentVNode as N, Fragment as R, renderList as B, createTextVNode as P } from "vue";
1
+ import { defineComponent as L, ref as b, computed as i, openBlock as d, createBlock as g, unref as e, withCtx as l, createElementVNode as f, createVNode as n, createElementBlock as h, toDisplayString as _, createCommentVNode as N, Fragment as R, renderList as B, createTextVNode as P } from "vue";
2
2
  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-BmxCuUZ9.js";
5
5
  import { _ as E } from "./Tabs.vue_vue_type_script_setup_true_lang-tpkGp98F.js";
6
- import { a as U } from "./FormGroup.vue_vue_type_script_setup_true_lang-dsO1m9Mm.js";
7
- import { g as j } from "./options-B48UiYsG.js";
8
- import { _ as D } from "./TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js";
9
- import { _ as I } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-uO4EAmBb.js";
10
- import { u as K } from "./platform-ORzRR3Tw.js";
6
+ import { a as U } from "./FormGroup.vue_vue_type_script_setup_true_lang-lvAuBG-0.js";
7
+ import { _ as j } from "./FormRow.vue_vue_type_script_setup_true_lang-CpgNVQF4.js";
8
+ import { _ as D } from "./TextField.vue_vue_type_script_setup_true_lang-CVGh-p3J.js";
9
+ import { _ as I } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-oXWQTfBs.js";
10
+ import { u as K } from "./platform-DU9QFts8.js";
11
11
  import { _ as T } from "./AsyncSection.vue_vue_type_script_setup_true_lang-CX8mpXRE.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 } from "./PersonAccess.vue_vue_type_script_setup_true_lang-BPDh9s2m.js";
14
+ import { u as G } from "./PersonAccess.vue_vue_type_script_setup_true_lang-mYFuG-Y3.js";
15
15
  import { u as H, a as J } from "./refusals-DfPzVNNY.js";
16
16
  import { accessPages as x } from "./access/index.js";
17
17
  const M = {
@@ -27,7 +27,7 @@ const M = {
27
27
  }, fe = /* @__PURE__ */ L({
28
28
  __name: "RolesPage",
29
29
  setup(X) {
30
- const { t: s } = A(), k = F(), { access: w } = K(), m = H(), y = G(), u = z(({ signal: o }) => y.roles({ signal: o })), c = g("all"), p = g(""), r = i(() => u.data.value ?? []), $ = i(() => [
30
+ const { t: s } = A(), k = F(), { access: w } = K(), m = H(), y = G(), u = z(({ signal: o }) => y.roles({ signal: o })), c = b("all"), p = b(""), r = i(() => u.data.value ?? []), $ = i(() => [
31
31
  { value: "all", label: s("core.access.kinds.all"), badge: r.value.length },
32
32
  { value: "predefined", label: s("core.access.kinds.predefined"), badge: r.value.filter((o) => o.predefined).length },
33
33
  { value: "custom", label: s("core.access.kinds.custom"), badge: r.value.filter((o) => !o.predefined).length }
@@ -39,7 +39,7 @@ const M = {
39
39
  }), V = i(
40
40
  () => w.can(J.manageRoles) ? [{ id: "create", label: s("core.access.create"), icon: "addLine", placement: "primary", compact: "icon", onClick: () => void k.push(x.newRole) }] : []
41
41
  ), C = (o) => [o.description, s("core.access.permissions", { count: o.permission_count })].filter(Boolean).join(" · ");
42
- return (o, a) => (d(), b(e(I), {
42
+ return (o, a) => (d(), g(e(I), {
43
43
  title: e(s)("core.access.title"),
44
44
  description: e(s)("core.access.description"),
45
45
  icon: "shieldStarFill",
@@ -74,7 +74,7 @@ const M = {
74
74
  }, {
75
75
  default: l(() => [
76
76
  v.value.length === 0 ? (d(), h("p", Q, _(e(s)("core.access.empty")), 1)) : N("", !0),
77
- (d(!0), h(R, null, B(v.value, (t) => (d(), b(e(j), {
77
+ (d(!0), h(R, null, B(v.value, (t) => (d(), g(e(j), {
78
78
  key: t.ref,
79
79
  layout: "setting",
80
80
  label: e(m).roleName(t),
@@ -5,8 +5,8 @@ import { _ as q } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.
5
5
  import { _ as G } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
6
6
  import { a as re } from "./mediaQuery-CygcXmFW.js";
7
7
  import { u as ie } from "./access-DmAceEo5.js";
8
- import { u as ce, a as ue } from "./sections-DI_JhgQG.js";
9
- import { p as de } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-uO4EAmBb.js";
8
+ import { u as ce, a as ue } from "./sections-BpiRLntE.js";
9
+ import { p as de } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-oXWQTfBs.js";
10
10
  import { p as me } from "./sectionIndex-BS0ic5W7.js";
11
11
  import { _ as K, a as pe } from "./SectionList.vue_vue_type_script_setup_true_lang-CodyVezo.js";
12
12
  const fe = {
@@ -1,6 +1,7 @@
1
- import { defineComponent as w, openBlock as a, createBlock as k, mergeProps as x, unref as r, createSlots as V, withCtx as o, createElementVNode as h, normalizeClass as n, createElementBlock as s, Fragment as _, renderList as $, createTextVNode as B, toDisplayString as d, createCommentVNode as C, renderSlot as i, mergeDefaults as L } from "vue";
2
- import { u as F, a as S, _ as T, f as D, b as N } from "./options-B48UiYsG.js";
3
- const E = ["id", "aria-label", "aria-describedby", "aria-invalid"], P = ["disabled", "aria-pressed", "onClick"], H = /* @__PURE__ */ w({
1
+ import { defineComponent as w, openBlock as o, createBlock as k, mergeProps as x, unref as r, createSlots as V, withCtx as a, createElementVNode as h, normalizeClass as n, createElementBlock as s, Fragment as _, renderList as $, createTextVNode as B, toDisplayString as d, createCommentVNode as C, renderSlot as i, mergeDefaults as L } from "vue";
2
+ import { u as F, a as S, f as T, b as D } from "./FormRow.vue_vue_type_script_setup_true_lang-CpgNVQF4.js";
3
+ import { _ as N } from "./options-mOOX6JSS.js";
4
+ const E = ["id", "aria-label", "aria-describedby", "aria-invalid"], P = ["disabled", "aria-pressed", "onClick"], M = /* @__PURE__ */ w({
4
5
  __name: "SegmentedField",
5
6
  props: /* @__PURE__ */ L({
6
7
  label: {},
@@ -16,15 +17,15 @@ const E = ["id", "aria-label", "aria-describedby", "aria-invalid"], P = ["disabl
16
17
  modelValue: {},
17
18
  options: {},
18
19
  rowLayout: {}
19
- }, { ...N, modelValue: null, rowLayout: "setting" }),
20
+ }, { ...D, modelValue: null, rowLayout: "setting" }),
20
21
  emits: ["update:modelValue"],
21
22
  setup(u, { emit: m }) {
22
23
  const e = u, c = m, { editable: f } = F(e), b = !!S(), p = () => e.options.find((t) => t.value === e.modelValue)?.label ?? null;
23
- return (t, R) => (a(), k(T, x(r(D)(e), {
24
+ return (t, R) => (o(), k(N, x(r(T)(e), {
24
25
  value: p(),
25
26
  "row-layout": e.rowLayout
26
27
  }), V({
27
- default: o(({ id: y, describedby: g, invalid: v }) => [
28
+ default: a(({ id: y, describedby: g, invalid: v }) => [
28
29
  h("div", {
29
30
  id: y,
30
31
  role: "group",
@@ -34,7 +35,7 @@ const E = ["id", "aria-label", "aria-describedby", "aria-invalid"], P = ["disabl
34
35
  "data-test": "segmented",
35
36
  class: n(["max-w-full flex-wrap rounded-control bg-fill p-0.5", [b && e.rowLayout === "stacked" ? "flex w-full" : "inline-flex", e.disabled ? "opacity-45" : ""]])
36
37
  }, [
37
- (a(!0), s(_, null, $(e.options, (l) => (a(), s("button", {
38
+ (o(!0), s(_, null, $(e.options, (l) => (o(), s("button", {
38
39
  key: l.value,
39
40
  type: "button",
40
41
  disabled: e.disabled || !r(f) || l.disabled,
@@ -43,7 +44,7 @@ const E = ["id", "aria-label", "aria-describedby", "aria-invalid"], P = ["disabl
43
44
  onClick: (q) => c("update:modelValue", l.value)
44
45
  }, [
45
46
  B(d(l.label) + " ", 1),
46
- l.count !== void 0 ? (a(), s("span", {
47
+ l.count !== void 0 ? (o(), s("span", {
47
48
  key: 0,
48
49
  class: n(["ml-1.5 rounded-full px-1.5 text-caption font-semibold tabular-nums", l.value === e.modelValue ? "bg-tint-soft text-content-link" : "bg-fill-strong text-content-muted"])
49
50
  }, d(l.count), 3)) : C("", !0)
@@ -54,21 +55,21 @@ const E = ["id", "aria-label", "aria-describedby", "aria-invalid"], P = ["disabl
54
55
  }, [
55
56
  t.$slots.trailing ? {
56
57
  name: "trailing",
57
- fn: o(() => [
58
+ fn: a(() => [
58
59
  i(t.$slots, "trailing")
59
60
  ]),
60
61
  key: "0"
61
62
  } : void 0,
62
63
  t.$slots.labelTrailing ? {
63
64
  name: "labelTrailing",
64
- fn: o(() => [
65
+ fn: a(() => [
65
66
  i(t.$slots, "labelTrailing")
66
67
  ]),
67
68
  key: "1"
68
69
  } : void 0,
69
70
  t.$slots.readonly ? {
70
71
  name: "readonly",
71
- fn: o(() => [
72
+ fn: a(() => [
72
73
  i(t.$slots, "readonly")
73
74
  ]),
74
75
  key: "2"
@@ -77,5 +78,5 @@ const E = ["id", "aria-label", "aria-describedby", "aria-invalid"], P = ["disabl
77
78
  }
78
79
  });
79
80
  export {
80
- H as _
81
+ M as _
81
82
  };
@@ -6,8 +6,9 @@ import { u as ie } from "./mediaQuery-CygcXmFW.js";
6
6
  import { _ as I } from "./ToneDot.vue_vue_type_script_setup_true_lang-99rNn-L5.js";
7
7
  import { _ as ue } from "./Sheet.vue_vue_type_script_setup_true_lang-BG8HUNfs.js";
8
8
  import { _ as de } from "./Popover.vue_vue_type_script_setup_true_lang-BK8HL_V0.js";
9
- import { h as ce, m as pe, a as me, e as ve, _ as fe, f as be, b as ge } from "./options-B48UiYsG.js";
10
- import { a as ye } from "./suggestions-q_v3M7G6.js";
9
+ import { g as ce, m as pe, u as me, _ as ve } from "./options-mOOX6JSS.js";
10
+ import { a as fe, f as be, b as ge } from "./FormRow.vue_vue_type_script_setup_true_lang-CpgNVQF4.js";
11
+ import { a as ye } from "./suggestions-DeMgs_ki.js";
11
12
  const he = { class: "flex min-h-9 items-center gap-1.5 rounded-control bg-fill px-2.5 text-content-muted focus-within:outline-2 focus-within:outline-offset-2 focus-within:outline-border-focus" }, ke = ["aria-label", "placeholder"], xe = ["aria-multiselectable", "aria-busy"], we = {
12
13
  key: 0,
13
14
  role: "presentation"
@@ -215,7 +216,7 @@ const he = { class: "flex min-h-9 items-center gap-1.5 rounded-control bg-fill p
215
216
  ], 544));
216
217
  }
217
218
  });
218
- function Ze(p) {
219
+ function et(p) {
219
220
  const x = ye(), e = p.for !== void 0;
220
221
  let w = 0;
221
222
  function C() {
@@ -271,7 +272,7 @@ function Re(p, x) {
271
272
  R(l) || l.reload();
272
273
  } };
273
274
  }
274
- const Ee = ["id", "disabled", "aria-expanded", "aria-required", "aria-invalid", "aria-describedby", "aria-busy"], Ue = ["id", "disabled", "aria-required", "aria-invalid", "aria-describedby", "aria-busy", "onClick"], Ne = { class: "max-h-72 overflow-y-auto" }, He = { class: "block break-words text-body text-content-strong" }, et = /* @__PURE__ */ X({
275
+ const Ee = ["id", "disabled", "aria-expanded", "aria-required", "aria-invalid", "aria-describedby", "aria-busy"], Ue = ["id", "disabled", "aria-required", "aria-invalid", "aria-describedby", "aria-busy", "onClick"], Ne = { class: "max-h-72 overflow-y-auto" }, He = { class: "block break-words text-body text-content-strong" }, tt = /* @__PURE__ */ X({
275
276
  __name: "SelectField",
276
277
  props: /* @__PURE__ */ se({
277
278
  label: {},
@@ -301,9 +302,9 @@ const Ee = ["id", "disabled", "aria-expanded", "aria-required", "aria-invalid",
301
302
  set: (o) => {
302
303
  C.value = o, w("update:modelValue", o);
303
304
  }
304
- }), { t: f } = Z(), D = ie(), l = !!me(), _ = Y("sheet"), B = M(!1), u = Re(() => e.options, (o) => {
305
+ }), { t: f } = Z(), D = ie(), l = !!fe(), _ = Y("sheet"), B = M(!1), u = Re(() => e.options, (o) => {
305
306
  c.value !== null && !o.some((v) => v.value === c.value) && (c.value = null);
306
- }), m = g(() => u.known.value.find((o) => o.value === c.value) ?? (e.selected?.value === c.value ? e.selected : null)), F = g(() => e.placeholder ?? f("core.form.select.choose")), q = ve("popup", () => e.error ? "error" : e.disabled ? "locked" : "rest");
307
+ }), m = g(() => u.known.value.find((o) => o.value === c.value) ?? (e.selected?.value === c.value ? e.selected : null)), F = g(() => e.placeholder ?? f("core.form.select.choose")), q = me("popup", () => e.error ? "error" : e.disabled ? "locked" : "rest");
307
308
  function P(o) {
308
309
  c.value = o, _.value?.dismiss();
309
310
  }
@@ -313,7 +314,7 @@ const Ee = ["id", "disabled", "aria-expanded", "aria-required", "aria-invalid",
313
314
  l ? "compact:pl-0 compact:pr-0" : "",
314
315
  e.disabled ? "cursor-not-allowed" : "cursor-pointer"
315
316
  ]);
316
- return (o, v) => (n(), z(fe, K(t(be)(e), {
317
+ return (o, v) => (n(), z(ve, K(t(be)(e), {
317
318
  value: m.value?.label ?? null,
318
319
  "row-layout": e.rowLayout
319
320
  }), E({
@@ -507,8 +508,8 @@ const Ee = ["id", "disabled", "aria-expanded", "aria-required", "aria-invalid",
507
508
  }
508
509
  });
509
510
  export {
510
- et as _,
511
+ tt as _,
511
512
  Q as a,
512
513
  Re as b,
513
- Ze as u
514
+ et as u
514
515
  };