@wssto2/vue-core 0.16.0 → 0.18.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 (160) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +5 -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-DOUuIkZR.js → Activity-CiYn5E6A.js} +7 -7
  11. package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-d_dPurWG.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-oXWQTfBs.js} +1 -1
  12. package/dist/{Changes-BfcbVgmu.js → Changes-Cy8STpLX.js} +3 -3
  13. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-B5hSkJ2N.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-CuMvfXH8.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-B5vcSEhP.js → General-CwTPC5UP.js} +10 -10
  21. package/dist/{IncidentRecord-wmStcEag.js → IncidentRecord-hXEGuLGg.js} +13 -13
  22. package/dist/{IncidentsList-CFx5tsxP.js → IncidentsList-C41VyDwK.js} +6 -6
  23. package/dist/{NewRolePage-CZxAp7LR.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-B-T8kBcc.js → ProfilePage-DGEsIycR.js} +13 -13
  27. package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-Bt5mT19g.js → RecordHeader.vue_vue_type_script_setup_true_lang-B3BnYg1x.js} +1 -1
  28. package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-DOiFuJnH.js → ResourcePage.vue_vue_type_script_setup_true_lang-1iZtj3rh.js} +1 -1
  29. package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-CqSsNPCw.js → RoleEditor.vue_vue_type_script_setup_true_lang-BslSDDiM.js} +9 -9
  30. package/dist/{RolePage-zcUWpuDE.js → RolePage-C08ZUqw1.js} +9 -9
  31. package/dist/{RolesPage-C7_zWw-c.js → RolesPage-FOuY1VKg.js} +10 -10
  32. package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-BlCx9dVL.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-C2D_D5Hi.js → ServiceAccountDialog.vue_vue_type_script_setup_true_lang-CDr4WNIb.js} +9 -9
  36. package/dist/{ServiceAccountRecord-BYxpHzTR.js → ServiceAccountRecord-kWwIQGZb.js} +12 -12
  37. package/dist/{ServiceAccountsList-BUuK-RUj.js → ServiceAccountsList-CKy9_YHP.js} +8 -8
  38. package/dist/{Sessions-Cm-Kilwl.js → Sessions-BDc8gdYH.js} +4 -4
  39. package/dist/{SettingsPage-Bavl0K-F.js → SettingsPage-t-8kmFVT.js} +13 -13
  40. package/dist/{SignIn-SfEhFiyM.js → SignIn-CqtkvtCZ.js} +7 -7
  41. package/dist/{SignInPage-BU0n2ehq.js → SignInPage-DcdNKZIb.js} +4 -4
  42. package/dist/{SignIns-Ahbn5cO6.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-3pCKMHkq.js → UserRecord-CwZCr9Im.js} +10 -10
  49. package/dist/{UsersList-vw3aDpvo.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-CHPpOssP.js → application-CDSweJb9.js} +144 -142
  55. package/dist/collection/DynamicCollection.vue.d.ts +69 -0
  56. package/dist/collection/authors.d.ts +27 -0
  57. package/dist/collection/definition.d.ts +4 -4
  58. package/dist/collection/dynamicColumns.d.ts +13 -0
  59. package/dist/collection/index.d.ts +3 -0
  60. package/dist/collection/index.js +196 -142
  61. package/dist/config/index.d.ts +42 -0
  62. package/dist/config/index.js +12 -3
  63. package/dist/content/Panel.vue.d.ts +1 -1
  64. package/dist/content/index.js +2 -2
  65. package/dist/{contributions-9CPT-Z5v.js → contributions-B0x5x5xD.js} +1 -1
  66. package/dist/form/CommandDialog.vue.d.ts +1 -1
  67. package/dist/form/DateField.vue.d.ts +1 -1
  68. package/dist/form/DateTimeField.vue.d.ts +1 -1
  69. package/dist/form/FileField.vue.d.ts +1 -1
  70. package/dist/form/FormRow.vue.d.ts +2 -2
  71. package/dist/form/I18nField.vue.d.ts +2 -2
  72. package/dist/form/TextField.vue.d.ts +1 -1
  73. package/dist/form/TextareaField.vue.d.ts +2 -2
  74. package/dist/form/date/value.d.ts +21 -0
  75. package/dist/form/dynamic/DynamicForm.vue.d.ts +46 -0
  76. package/dist/form/dynamic/RepeatField.vue.d.ts +47 -0
  77. package/dist/form/dynamic/ResourceField.vue.d.ts +38 -0
  78. package/dist/form/dynamic/ResourcePickerList.vue.d.ts +12 -0
  79. package/dist/form/dynamic/RichTextField.vue.d.ts +40 -0
  80. package/dist/form/dynamic/localeMode.d.ts +5 -0
  81. package/dist/form/dynamic/resources.d.ts +34 -0
  82. package/dist/form/dynamic/schema.d.ts +73 -0
  83. package/dist/form/dynamic/validator.d.ts +30 -0
  84. package/dist/form/dynamic/visibility.d.ts +12 -0
  85. package/dist/form/index.d.ts +12 -0
  86. package/dist/form/index.js +2100 -1260
  87. package/dist/format/format.d.ts +8 -2
  88. package/dist/format/index.js +1 -1
  89. package/dist/format-C_HXlOYQ.js +136 -0
  90. package/dist/{guards-6fJxfUtk.js → guards-CNJ0ATVC.js} +1 -1
  91. package/dist/i18n/index.d.ts +14 -2
  92. package/dist/i18n/index.js +86 -75
  93. package/dist/i18n/messages.d.ts +10 -1
  94. package/dist/i18n/runtime.d.ts +3 -1
  95. package/dist/identity/index.js +3 -3
  96. package/dist/identity/profile/EmailChangeDialog.vue.d.ts +2 -2
  97. package/dist/identity/users/list.d.ts +1 -1
  98. package/dist/incidents/index.js +1 -1
  99. package/dist/{index-D9_xqF5g.js → index-1HS7O2-e.js} +9 -9
  100. package/dist/{index-nByFc1eL.js → index-BA2w8uwD.js} +86 -86
  101. package/dist/{index-Ct7W_gYE.js → index-SLJWm40T.js} +4 -4
  102. package/dist/index.d.ts +1 -1
  103. package/dist/index.js +1 -1
  104. package/dist/modal/DiscardChangesModal.vue.d.ts +2 -2
  105. package/dist/modal/Modal.vue.d.ts +2 -2
  106. package/dist/modal/Sheet.vue.d.ts +2 -2
  107. package/dist/modules/identity/routes.d.ts +1 -1
  108. package/dist/modules/identity/schemas.d.ts +2 -2
  109. package/dist/{navigation-DMJ6akat.js → navigation-d-JAPBGA.js} +1 -1
  110. package/dist/{neighbors-BpypL3Wb.js → neighbors-Dg_LU9ry.js} +1 -1
  111. package/dist/notifications/index.js +1 -1
  112. package/dist/onboarding/index.js +1 -1
  113. package/dist/options-mOOX6JSS.js +214 -0
  114. package/dist/overlay/AlertDialog.vue.d.ts +3 -3
  115. package/dist/overlay/Menu.vue.d.ts +2 -2
  116. package/dist/overlay/PhotoViewer.vue.d.ts +2 -2
  117. package/dist/overlay/Popover.vue.d.ts +2 -2
  118. package/dist/page/SectionNavigator.vue.d.ts +1 -1
  119. package/dist/page/SectionPanel.vue.d.ts +1 -1
  120. package/dist/page/index.js +3 -3
  121. package/dist/phone/index.js +57 -56
  122. package/dist/platform/index.d.ts +10 -1
  123. package/dist/platform/index.js +16 -15
  124. package/dist/platform/platform.d.ts +4 -2
  125. package/dist/{platform-ORzRR3Tw.js → platform-DU9QFts8.js} +7 -6
  126. package/dist/playwright/config.d.ts +33 -0
  127. package/dist/playwright/index.d.ts +2 -0
  128. package/dist/playwright/index.js +192 -171
  129. package/dist/resource/index.js +1 -1
  130. package/dist/resources-BZLlAtoS.js +62 -0
  131. package/dist/router/index.js +3 -3
  132. package/dist/{rowLayout-QKfNHsML.js → rowLayout-PIuD7MGo.js} +2 -2
  133. package/dist/{sections-CSpJN0Z7.js → sections-BpiRLntE.js} +1 -1
  134. package/dist/{serverMessages-Ce8-MK4e.js → serverMessages-C_KkDvpT.js} +1 -1
  135. package/dist/shell/index.js +4 -4
  136. package/dist/state/NextStepPanel.vue.d.ts +63 -0
  137. package/dist/state/PhaseTiles.vue.d.ts +20 -0
  138. package/dist/state/PhaseTrack.vue.d.ts +48 -0
  139. package/dist/state/RequirementList.vue.d.ts +10 -0
  140. package/dist/state/TodoRow.vue.d.ts +52 -0
  141. package/dist/state/index.d.ts +9 -0
  142. package/dist/state/index.js +731 -126
  143. package/dist/state/phaseStep.d.ts +7 -0
  144. package/dist/state/phaseTile.d.ts +10 -0
  145. package/dist/state/requirementItem.d.ts +16 -0
  146. package/dist/state/todoRow.d.ts +8 -0
  147. package/dist/{state-QDaxntgR.js → state-z1iPF1DT.js} +1 -1
  148. package/dist/styles.css +1 -1
  149. package/dist/{suggestions-q_v3M7G6.js → suggestions-DeMgs_ki.js} +1 -1
  150. package/dist/testing/format.d.ts +1 -1
  151. package/dist/testing/index.js +31 -31
  152. package/dist/{useCommand-DAMgQ5NE.js → useCommand-DQKvro1n.js} +2 -2
  153. package/dist/{useGroupSheet-B-Hs4gNO.js → useGroupSheet-CRw3MUmX.js} +3 -3
  154. package/dist/{usePreferences-BfMXVbSO.js → usePreferences-DB29UTFD.js} +1 -1
  155. package/dist/{useRecordDialog-QPKFH1Ww.js → useRecordDialog-0azHxxvm.js} +1 -1
  156. package/dist/{useResourceForm-Oa6bk3NI.js → useResourceForm-zVuWerSn.js} +1 -1
  157. package/dist/{useTypedEntry-CITij2C_.js → useTypedEntry-BsMV66Yc.js} +46 -45
  158. package/package.json +6 -1
  159. package/dist/format-Cp1h0vsC.js +0 -125
  160. package/dist/options-B48UiYsG.js +0 -368
@@ -0,0 +1,160 @@
1
+ import { inject as k, ref as I, computed as l, onBeforeUnmount as S, defineComponent as B, useSlots as R, openBlock as a, createBlock as y, resolveDynamicComponent as h, unref as g, normalizeClass as n, withCtx as w, createElementBlock as i, renderSlot as c, createCommentVNode as r, createElementVNode as m, createTextVNode as x, toDisplayString as f, createVNode as H } from "vue";
2
+ import { RouterLink as N } from "vue-router";
3
+ import { _ } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
4
+ import { u as j } from "./mediaQuery-CygcXmFW.js";
5
+ const X = {
6
+ label: void 0,
7
+ labelHidden: !1,
8
+ hint: void 0,
9
+ error: void 0,
10
+ required: !1,
11
+ editable: !0,
12
+ disabled: !1,
13
+ lockedReason: void 0,
14
+ presentation: "control",
15
+ name: void 0
16
+ }, V = Symbol("vue-core.formGroup"), $ = Symbol("vue-core.formRowIndent"), D = Symbol("vue-core.formEditable"), F = () => k(V, null), O = () => k($, 0);
17
+ function Z(t) {
18
+ const e = F(), s = k(D, I(!0)), b = j(), p = l(() => !!e && !!t.disabled && (b.value || t.presentation === "value")), u = l(() => (t.editable ?? !0) && s.value && !p.value), v = l(() => !!e && !!t.disabled && u.value);
19
+ if (e) {
20
+ const o = e.registerLocked(l(() => !!t.disabled && s.value && t.presentation !== "value"));
21
+ S(o);
22
+ }
23
+ return { editable: u, locked: v };
24
+ }
25
+ const q = ["label", "labelHidden", "hint", "error", "required", "editable", "disabled", "lockedReason", "presentation", "name"];
26
+ function ee(t) {
27
+ return Object.fromEntries(q.map((e) => [e, t[e]]));
28
+ }
29
+ const A = {
30
+ key: 0,
31
+ class: "flex shrink-0 items-center"
32
+ }, K = { class: "row-body min-h-row min-w-0 flex-1 border-t border-border-separator py-2 pr-row-inset" }, z = {
33
+ key: 0,
34
+ class: "text-content-destructive",
35
+ "aria-hidden": "true"
36
+ }, G = ["id"], T = ["data-stacked"], M = {
37
+ key: 0,
38
+ class: "break-words text-body text-content-strong"
39
+ }, P = ["id"], te = /* @__PURE__ */ B({
40
+ __name: "FormRow",
41
+ props: {
42
+ label: { default: void 0 },
43
+ labelHidden: { type: Boolean, default: !1 },
44
+ for: { default: void 0 },
45
+ sub: { default: void 0 },
46
+ subId: { default: void 0 },
47
+ required: { type: Boolean, default: !1 },
48
+ layout: { default: "entry" },
49
+ value: { default: void 0 },
50
+ to: { default: void 0 },
51
+ error: { default: void 0 },
52
+ errorId: { default: void 0 },
53
+ indent: { default: 0 },
54
+ labelLines: { default: void 0 },
55
+ labelAlign: { default: "center" },
56
+ stackOnCompact: { type: Boolean, default: !1 }
57
+ },
58
+ setup(t) {
59
+ const e = t, s = R(), b = O(), p = l(() => b + e.indent), u = ["pl-row-inset", "pl-[calc(var(--app-row-inset)+1.25rem)]", "pl-[calc(var(--app-row-inset)+2.5rem)]"], v = { 1: "line-clamp-1", 2: "line-clamp-2", 3: "line-clamp-3" }, o = l(() => e.labelHidden && (e.layout === "entry" || e.layout === "value") ? "stacked" : e.layout), C = l(() => {
60
+ switch (o.value) {
61
+ case "entry":
62
+ return "grid grid-cols-[var(--form-label-width,11rem)_minmax(0,1fr)] items-center gap-x-4 compact:grid-cols-[minmax(0,auto)_minmax(40%,1fr)]";
63
+ case "value":
64
+ return "grid grid-cols-[minmax(min-content,1fr)_minmax(0,auto)] items-center gap-x-4";
65
+ case "setting":
66
+ return e.stackOnCompact ? "flex items-center gap-4 compact:flex-col compact:items-stretch compact:gap-1" : "flex items-center gap-4";
67
+ default:
68
+ return "flex flex-col gap-1";
69
+ }
70
+ }), E = l(() => e.labelHidden ? "sr-only" : o.value === "stacked" ? "text-footnote text-content-muted" : e.layout === "value" ? "text-body text-content-muted" : "text-body text-content-strong"), L = l(() => e.value !== void 0 && e.value !== null && e.value !== "");
71
+ return (d, U) => (a(), y(h(e.to ? g(N) : "div"), {
72
+ to: e.to,
73
+ "data-test": "form-row",
74
+ "data-layout": o.value,
75
+ "data-field-error": e.error ? "true" : void 0,
76
+ class: n(["form-row flex min-w-0 items-stretch gap-3 transition-colors duration-motion-fast first:rounded-t-group last:rounded-b-group focus-within:bg-tint-soft/50 [&:first-child>.row-body]:border-t-0", [u[Math.min(p.value, 2)], e.to ? "hover:bg-fill focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-border-focus" : ""]])
77
+ }, {
78
+ default: w(() => [
79
+ s.leading ? (a(), i("div", A, [
80
+ c(d.$slots, "leading")
81
+ ])) : r("", !0),
82
+ m("div", K, [
83
+ m("div", {
84
+ class: n(["min-w-0", C.value])
85
+ }, [
86
+ e.label || e.sub || s.sub ? (a(), i("div", {
87
+ key: 0,
88
+ class: n([e.labelHidden && !e.sub && !s.sub ? "contents" : o.value === "setting" ? "min-w-min flex-1" : "min-w-0", e.labelAlign === "top" ? "self-start pt-1" : ""])
89
+ }, [
90
+ m("div", {
91
+ class: n(s["label-trailing"] ? "flex items-center justify-between gap-3" : "")
92
+ }, [
93
+ (a(), y(h(e.for ? "label" : "span"), {
94
+ for: e.for,
95
+ class: n(["break-words", [E.value, e.labelHidden ? "" : e.labelLines ? v[e.labelLines] : "block"]])
96
+ }, {
97
+ default: w(() => [
98
+ x(f(e.label), 1),
99
+ e.required ? (a(), i("span", z, " *")) : r("", !0)
100
+ ]),
101
+ _: 1
102
+ }, 8, ["for", "class"])),
103
+ c(d.$slots, "label-trailing")
104
+ ], 2),
105
+ e.sub || s.sub ? (a(), i("small", {
106
+ key: 0,
107
+ id: e.subId,
108
+ class: "mt-0.5 block text-footnote text-content-muted"
109
+ }, [
110
+ c(d.$slots, "sub", {}, () => [
111
+ x(f(e.sub), 1)
112
+ ])
113
+ ], 8, G)) : r("", !0)
114
+ ], 2)) : r("", !0),
115
+ m("div", {
116
+ class: n(["flex min-w-0 items-center gap-2", o.value === "value" ? "justify-end text-right" : o.value === "setting" ? ["flex-wrap justify-end text-right", e.stackOnCompact ? "compact:flex-col compact:items-start compact:text-left" : ""] : o.value === "entry" ? "compact:justify-end" : ""]),
117
+ "data-stacked": o.value === "setting" && e.stackOnCompact ? "compact" : void 0
118
+ }, [
119
+ c(d.$slots, "default", {}, () => [
120
+ L.value ? (a(), i("span", M, f(e.value), 1)) : r("", !0)
121
+ ]),
122
+ c(d.$slots, "trailing"),
123
+ e.to ? (a(), y(g(_), {
124
+ key: 0,
125
+ name: "arrowRightSLine",
126
+ size: 18,
127
+ class: "shrink-0 text-content-disabled"
128
+ })) : r("", !0)
129
+ ], 10, T)
130
+ ], 2),
131
+ e.error ? (a(), i("p", {
132
+ key: 0,
133
+ id: e.errorId,
134
+ class: "mt-1 flex items-start gap-1.5 text-footnote text-content-destructive",
135
+ role: "alert"
136
+ }, [
137
+ H(g(_), {
138
+ name: "alertTriangle",
139
+ size: 14,
140
+ class: "mt-px shrink-0"
141
+ }),
142
+ x(" " + f(e.error), 1)
143
+ ], 8, P)) : r("", !0)
144
+ ])
145
+ ]),
146
+ _: 3
147
+ }, 8, ["to", "data-layout", "data-field-error", "class"]));
148
+ }
149
+ });
150
+ export {
151
+ te as _,
152
+ F as a,
153
+ X as b,
154
+ D as c,
155
+ V as d,
156
+ $ as e,
157
+ ee as f,
158
+ O as g,
159
+ Z as u
160
+ };
@@ -1,6 +1,6 @@
1
- import { defineComponent as n, provide as f, computed as s, useTemplateRef as u, openBlock as t, createElementBlock as p, withModifiers as c, createBlock as d, createCommentVNode as b, renderSlot as _ } from "vue";
2
- import { d as v } from "./options-B48UiYsG.js";
3
- import { _ as k } from "./FormGroup.vue_vue_type_script_setup_true_lang-dsO1m9Mm.js";
1
+ import { defineComponent as n, provide as f, computed as s, useTemplateRef as u, openBlock as t, createElementBlock as c, withModifiers as p, createBlock as d, createCommentVNode as b, renderSlot as _ } from "vue";
2
+ import { c as v } from "./FormRow.vue_vue_type_script_setup_true_lang-CpgNVQF4.js";
3
+ import { _ as k } from "./FormGroup.vue_vue_type_script_setup_true_lang-lvAuBG-0.js";
4
4
  const x = /* @__PURE__ */ n({
5
5
  __name: "FormView",
6
6
  props: {
@@ -16,12 +16,12 @@ const x = /* @__PURE__ */ n({
16
16
  function m() {
17
17
  e.form?.submitting.value || !e.editable || l("submit");
18
18
  }
19
- return (a, y) => (t(), p("form", {
19
+ return (a, y) => (t(), c("form", {
20
20
  ref_key: "root",
21
21
  ref: o,
22
22
  class: "flex min-w-0 flex-col gap-group-gap",
23
23
  novalidate: "",
24
- onSubmit: c(m, ["prevent"])
24
+ onSubmit: p(m, ["prevent"])
25
25
  }, [
26
26
  e.form ? (t(), d(k, {
27
27
  key: 0,
@@ -1,21 +1,21 @@
1
1
  import { defineComponent as R, computed as N, openBlock as i, createElementBlock as k, createVNode as o, unref as e, withCtx as u, mergeProps as c, createBlock as v, createCommentVNode as d, createElementVNode as p, toDisplayString as b, createTextVNode as S } from "vue";
2
2
  import { useI18n as V } from "vue-i18n";
3
3
  import { RouterLink as B } from "vue-router";
4
- import { u as E } from "./format-Cp1h0vsC.js";
5
- import { u as T } from "./useResourceForm-Oa6bk3NI.js";
6
- import { a as h } from "./FormGroup.vue_vue_type_script_setup_true_lang-dsO1m9Mm.js";
7
- import { _ as F } from "./FormView.vue_vue_type_script_setup_true_lang-Bq_Qa4py.js";
8
- import { _ as L } from "./SelectField.vue_vue_type_script_setup_true_lang-CLkoPbGm.js";
9
- import { _ as f } from "./TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js";
4
+ import { u as E } from "./format-C_HXlOYQ.js";
5
+ import { u as T } from "./useResourceForm-zVuWerSn.js";
6
+ import { a as h } from "./FormGroup.vue_vue_type_script_setup_true_lang-lvAuBG-0.js";
7
+ import { _ as F } from "./FormView.vue_vue_type_script_setup_true_lang-D01Jr4UU.js";
8
+ import { _ as L } from "./SelectField.vue_vue_type_script_setup_true_lang-D5xYofdb.js";
9
+ import { _ as f } from "./TextField.vue_vue_type_script_setup_true_lang-CVGh-p3J.js";
10
10
  import { u as A } from "./useSaveChrome-DB9OwIjT.js";
11
11
  import { i as D } from "./preferences-hYhrw8Uy.js";
12
12
  import { t as G } from "./toast-CqSDTWRX.js";
13
- import { u as I } from "./platform-ORzRR3Tw.js";
13
+ import { u as I } from "./platform-DU9QFts8.js";
14
14
  import { b as M } from "./routeResource-DlTsGTg_.js";
15
- import { u as O } from "./serverMessages-Ce8-MK4e.js";
16
- import { _ as U, a as $ } from "./ActionRow.vue_vue_type_script_setup_true_lang-DybAIOHS.js";
15
+ import { u as O } from "./serverMessages-C_KkDvpT.js";
16
+ import { _ as U, a as $ } from "./ActionRow.vue_vue_type_script_setup_true_lang-B5IMNnTf.js";
17
17
  import { u as j } from "./keepAlive-ClGnsIzT.js";
18
- import { P as z, e as H } from "./index-nByFc1eL.js";
18
+ import { P as z, e as H } from "./index-BA2w8uwD.js";
19
19
  const J = {
20
20
  class: "flex min-w-0 max-w-200 flex-col gap-group-gap",
21
21
  "data-person-general": ""
@@ -2,28 +2,28 @@ import { defineComponent as G, openBlock as s, createElementBlock as m, createVN
2
2
  import { useI18n as X } from "vue-i18n";
3
3
  import { useRoute as ie } from "vue-router";
4
4
  import { _ as V } from "./Button.vue_vue_type_script_setup_true_lang-JrqhO99l.js";
5
- import { u as ae } from "./neighbors-BpypL3Wb.js";
5
+ import { u as ae } from "./neighbors-Dg_LU9ry.js";
6
6
  import { _ as v } from "./KeyValue.vue_vue_type_script_setup_true_lang-wcZcvnow.js";
7
7
  import { _ as D } from "./Panel.vue_vue_type_script_setup_true_lang-D_Wg42hu.js";
8
8
  import { _ as le } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js";
9
9
  import { a as re } from "./leaveGuard-Cc8yeLxM.js";
10
- import { u as ce } from "./useResourceForm-Oa6bk3NI.js";
11
- import { _ as de, a as ue } from "./FormGroup.vue_vue_type_script_setup_true_lang-dsO1m9Mm.js";
12
- import { _ as _e } from "./FormView.vue_vue_type_script_setup_true_lang-Bq_Qa4py.js";
13
- import { _ as O } from "./SelectField.vue_vue_type_script_setup_true_lang-CLkoPbGm.js";
14
- import { _ as H } from "./TextareaField.vue_vue_type_script_setup_true_lang-D2j4s96s.js";
15
- import { _ as K } from "./TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js";
10
+ import { u as ce } from "./useResourceForm-zVuWerSn.js";
11
+ import { _ as de, a as ue } from "./FormGroup.vue_vue_type_script_setup_true_lang-lvAuBG-0.js";
12
+ import { _ as _e } from "./FormView.vue_vue_type_script_setup_true_lang-D01Jr4UU.js";
13
+ import { _ as O } from "./SelectField.vue_vue_type_script_setup_true_lang-D5xYofdb.js";
14
+ import { _ as H } from "./TextareaField.vue_vue_type_script_setup_true_lang-YxUlNHSk.js";
15
+ import { _ as K } from "./TextField.vue_vue_type_script_setup_true_lang-CVGh-p3J.js";
16
16
  import { u as me } from "./useSaveChrome-DB9OwIjT.js";
17
- import { u as pe } from "./useCommand-DAMgQ5NE.js";
18
- import { u as Z } from "./format-Cp1h0vsC.js";
17
+ import { u as pe } from "./useCommand-DQKvro1n.js";
18
+ import { u as Z } from "./format-C_HXlOYQ.js";
19
19
  import { t as fe } from "./toast-CqSDTWRX.js";
20
- import { _ as ve } from "./RecordHeader.vue_vue_type_script_setup_true_lang-Bt5mT19g.js";
21
- import { u as be } from "./platform-ORzRR3Tw.js";
20
+ import { _ as ve } from "./RecordHeader.vue_vue_type_script_setup_true_lang-B3BnYg1x.js";
21
+ import { u as be } from "./platform-DU9QFts8.js";
22
22
  import { a as xe } from "./routeResource-DlTsGTg_.js";
23
- import { a as he } from "./ResourcePage.vue_vue_type_script_setup_true_lang-DOiFuJnH.js";
23
+ import { a as he } from "./ResourcePage.vue_vue_type_script_setup_true_lang-1iZtj3rh.js";
24
24
  import { _ as P } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
25
25
  import { _ as Q } from "./EmptyState.vue_vue_type_script_setup_true_lang-DbZiO2RF.js";
26
- import { u as ee, i as ye, a as ge, M as ke, U as we, m as $e, f as Se, g as W, r as Te, S as Ee, e as U, c as z, d as Ie, b as Ce } from "./index-D9_xqF5g.js";
26
+ import { u as ee, i as ye, a as ge, M as ke, U as we, m as $e, f as Se, g as W, r as Te, S as Ee, e as U, c as z, d as Ie, b as Ce } from "./index-1HS7O2-e.js";
27
27
  import { _ as je } from "./AsyncSection.vue_vue_type_script_setup_true_lang-CX8mpXRE.js";
28
28
  import { u as Ne } from "./useLoad-M7V-AVwR.js";
29
29
  import { _ as Le } from "./Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js";
@@ -1,15 +1,15 @@
1
1
  import { defineComponent as $, useTemplateRef as D, computed as d, openBlock as n, createBlock as m, unref as e, withCtx as i, createVNode as c, createElementBlock as p, toDisplayString as a, createElementVNode as F, createTextVNode as f, createCommentVNode as O } from "vue";
2
2
  import { useI18n as q } from "vue-i18n";
3
3
  import { useRouter as U } from "vue-router";
4
- import { u as z, _ as P } from "./CollectionPage.vue_vue_type_script_setup_true_lang-B5hSkJ2N.js";
5
- import { a as y } from "./rowLayout-QKfNHsML.js";
4
+ import { u as z, _ as P } from "./CollectionPage.vue_vue_type_script_setup_true_lang-Dr6nFNBB.js";
5
+ import { a as y } from "./rowLayout-PIuD7MGo.js";
6
6
  import { u as Y } from "./datePresets-DB13HHHd.js";
7
- import { _ as j } from "./Timestamp.vue_vue_type_script_setup_true_lang-jCXYFLtq.js";
7
+ import { _ as j } from "./Timestamp.vue_vue_type_script_setup_true_lang-d_KuxWjH.js";
8
8
  import { _ as g } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js";
9
- import { u as K } from "./format-Cp1h0vsC.js";
10
- import { u as G } from "./platform-ORzRR3Tw.js";
9
+ import { u as K } from "./format-C_HXlOYQ.js";
10
+ import { u as G } from "./platform-DU9QFts8.js";
11
11
  import { _ as k } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
12
- import { i as v, a as H, C as J, _ as M, S as T, b as Q, c as S, d as W, e as E } from "./index-D9_xqF5g.js";
12
+ import { i as v, a as H, C as J, _ as M, S as T, b as Q, c as S, d as W, e as E } from "./index-1HS7O2-e.js";
13
13
  const X = {
14
14
  key: 1,
15
15
  class: "flex min-w-0 items-center gap-3"
@@ -1,11 +1,11 @@
1
1
  import { defineComponent as _, computed as d, openBlock as y, createBlock as w, unref as e, withCtx as i, createVNode as l } from "vue";
2
2
  import { useI18n as v } from "vue-i18n";
3
3
  import { useRoute as k, useRouter as R } from "vue-router";
4
- import { _ as $ } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-d_dPurWG.js";
4
+ import { _ as $ } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-oXWQTfBs.js";
5
5
  import { _ as b } from "./AsyncSection.vue_vue_type_script_setup_true_lang-CX8mpXRE.js";
6
6
  import { u as g } from "./useLoad-M7V-AVwR.js";
7
- import { u as x } from "./PersonAccess.vue_vue_type_script_setup_true_lang-BPDh9s2m.js";
8
- import { _ as P } from "./RoleEditor.vue_vue_type_script_setup_true_lang-CqSsNPCw.js";
7
+ import { u as x } from "./PersonAccess.vue_vue_type_script_setup_true_lang-mYFuG-Y3.js";
8
+ import { _ as P } from "./RoleEditor.vue_vue_type_script_setup_true_lang-BslSDDiM.js";
9
9
  import { accessPages as u } from "./access/index.js";
10
10
  const j = /* @__PURE__ */ _({
11
11
  __name: "NewRolePage",
@@ -1,7 +1,8 @@
1
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
2
  import { b as X } from "./controlSurface-t7OEFESJ.js";
3
- import { u as Y } from "./format-Cp1h0vsC.js";
4
- import { a as ee, e as te, _ as le, f as ae, b as oe } from "./options-B48UiYsG.js";
3
+ import { u as Y } from "./format-C_HXlOYQ.js";
4
+ import { u as ee, _ as te } from "./options-mOOX6JSS.js";
5
+ import { a as le, f as ae, b as oe } from "./FormRow.vue_vue_type_script_setup_true_lang-CpgNVQF4.js";
5
6
  function ne(c) {
6
7
  const r = c.number(1234.5, { minimumFractionDigits: 1, maximumFractionDigits: 1, useGrouping: !0 }), u = /^\d(\D)\d/.exec(r)?.[1] ?? "";
7
8
  return { decimal: r.charAt(r.length - 2) || ".", group: u === "." || u === "," ? u : "" };
@@ -26,7 +27,7 @@ const se = {
26
27
  }, re = ["id", "value", "name", "placeholder", "disabled", "required", "aria-required", "aria-invalid", "aria-describedby"], ue = {
27
28
  key: 1,
28
29
  class: "shrink-0 text-footnote text-content-muted"
29
- }, pe = /* @__PURE__ */ H({
30
+ }, ge = /* @__PURE__ */ H({
30
31
  __name: "NumberField",
31
32
  props: /* @__PURE__ */ U({
32
33
  label: {},
@@ -58,7 +59,7 @@ const se = {
58
59
  function x(t) {
59
60
  p.value = t, m("update:modelValue", t);
60
61
  }
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
+ const g = Y(), v = K("input"), i = !!le(), h = ee("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
63
  R(n, (t) => {
63
64
  D.value ? M(o.value) !== t && (o.value = C(t)) : o.value = d(t);
64
65
  }), R(() => [e.decimals, e.blankZero, k.value, e.grouping, f.value.decimal], () => {
@@ -93,7 +94,7 @@ const se = {
93
94
  function z(t) {
94
95
  s = !1, D.value = !1, o.value = d(n.value), m("blur", t);
95
96
  }
96
- return r({ focus: () => v.value?.focus() }), (t, l) => (q(), J(le, L(T(ae)(e), {
97
+ return r({ focus: () => v.value?.focus() }), (t, l) => (q(), J(te, L(T(ae)(e), {
97
98
  value: b(n.value) ? null : d(n.value),
98
99
  prefix: e.prefix,
99
100
  suffix: e.suffix,
@@ -157,5 +158,5 @@ const se = {
157
158
  }
158
159
  });
159
160
  export {
160
- pe as _
161
+ ge as _
161
162
  };
@@ -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
  }