@wssto2/vue-core 0.5.3 → 0.6.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 (90) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +3 -1
  3. package/dist/{ActionRow.vue_vue_type_script_setup_true_lang-Bv-APkGf.js → ActionRow.vue_vue_type_script_setup_true_lang-D8NCXX4p.js} +1 -1
  4. package/dist/{Activity-DUjDaPfP.js → Activity-DGodh6BU.js} +4 -4
  5. package/dist/{Changes-B0tZO6BZ.js → Changes-38u4xY6e.js} +3 -3
  6. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-o_Pj-JcD.js → CollectionPage.vue_vue_type_script_setup_true_lang-DPcCnrjr.js} +3 -3
  7. package/dist/{DateField.vue_vue_type_script_setup_true_lang-CDg31ZU7.js → DateField.vue_vue_type_script_setup_true_lang-BxUuUypB.js} +1 -1
  8. package/dist/{DeadLetters-IgVHao84.js → DeadLetters-CeHfhFHP.js} +6 -5
  9. package/dist/{FormGroup.vue_vue_type_script_setup_true_lang-CSgT4ITL.js → FormGroup.vue_vue_type_script_setup_true_lang-CNb2CK01.js} +1 -1
  10. package/dist/{FormView.vue_vue_type_script_setup_true_lang-D31Hk3pJ.js → FormView.vue_vue_type_script_setup_true_lang-nyz8EkzM.js} +1 -1
  11. package/dist/{General-C40HxupS.js → General-BNTjPvat.js} +6 -6
  12. package/dist/{NewRolePage-Bhy8KJO1.js → NewRolePage-Btg7gzzH.js} +7 -6
  13. package/dist/{NumberField.vue_vue_type_script_setup_true_lang-BdS7BxuS.js → NumberField.vue_vue_type_script_setup_true_lang-C8um4ARi.js} +1 -1
  14. package/dist/PersonAccess.vue_vue_type_script_setup_true_lang-ClmawvYm.js +600 -0
  15. package/dist/{ProfilePage-Bf7dFzGd.js → ProfilePage-CoZyG11N.js} +9 -9
  16. package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-C6oloGIh.js → RoleEditor.vue_vue_type_script_setup_true_lang-Bs9bo0Zb.js} +30 -29
  17. package/dist/{RolePage-BjbvciTg.js → RolePage-CPlwZA6X.js} +37 -35
  18. package/dist/{RolesPage-DzVOgF4z.js → RolesPage-CdYdIHR4.js} +29 -27
  19. package/dist/{SegmentedField.vue_vue_type_script_setup_true_lang-DXe_iOS8.js → SegmentedField.vue_vue_type_script_setup_true_lang-B_hBL5f4.js} +1 -1
  20. package/dist/{SelectField.vue_vue_type_script_setup_true_lang-BN4vzvV9.js → SelectField.vue_vue_type_script_setup_true_lang-CBZhGNpm.js} +4 -4
  21. package/dist/ServiceAccountDialog.vue_vue_type_script_setup_true_lang-DuvSSBbX.js +126 -0
  22. package/dist/ServiceAccountRecord-BtaUZuWU.js +511 -0
  23. package/dist/ServiceAccountsList-CcRJvNaf.js +137 -0
  24. package/dist/{SessionList.vue_vue_type_script_setup_true_lang-PuWIK-Wa.js → SessionList.vue_vue_type_script_setup_true_lang-VvBB2EZz.js} +2 -2
  25. package/dist/{Sessions-CRUObe5G.js → Sessions-DkGNO1FO.js} +2 -2
  26. package/dist/{SettingsPage-C0qEC0uI.js → SettingsPage-D4G1HGbG.js} +8 -8
  27. package/dist/{SignIn-Uy0Jujzz.js → SignIn-DS1YymqD.js} +4 -4
  28. package/dist/{SignInPage-CpVZfrLZ.js → SignInPage-BrmL0PUw.js} +3 -3
  29. package/dist/{SignIns-Cp5Gx2dk.js → SignIns-C7l7IPHQ.js} +1 -1
  30. package/dist/{SwitchField.vue_vue_type_script_setup_true_lang-Dj5Aq8QT.js → SwitchField.vue_vue_type_script_setup_true_lang-DXZK89A3.js} +1 -1
  31. package/dist/{TextField.vue_vue_type_script_setup_true_lang-BwfNNQEz.js → TextField.vue_vue_type_script_setup_true_lang-CX3LdZLK.js} +2 -2
  32. package/dist/{TextareaField.vue_vue_type_script_setup_true_lang-aT1P8Xqr.js → TextareaField.vue_vue_type_script_setup_true_lang-BOtn_1GT.js} +1 -1
  33. package/dist/{TimeField.vue_vue_type_script_setup_true_lang-jPKPE1hc.js → TimeField.vue_vue_type_script_setup_true_lang-CbflIrq6.js} +1 -1
  34. package/dist/{UserRecord-DbSMnTbj.js → UserRecord-Du8M_kuk.js} +25 -25
  35. package/dist/{UsersList-9MicE2pG.js → UsersList-D3ydQice.js} +13 -13
  36. package/dist/access/api.d.ts +7 -8
  37. package/dist/access/context.d.ts +2 -7
  38. package/dist/access/feature.d.ts +0 -8
  39. package/dist/access/index.js +47 -15
  40. package/dist/client/client.d.ts +2 -2
  41. package/dist/client/index.d.ts +1 -1
  42. package/dist/client/route.d.ts +22 -3
  43. package/dist/collection/http.d.ts +3 -2
  44. package/dist/collection/index.js +17 -16
  45. package/dist/form/index.js +586 -611
  46. package/dist/http-nz92KjdS.js +42 -0
  47. package/dist/i18n/index.js +32 -32
  48. package/dist/identity/index.d.ts +7 -0
  49. package/dist/identity/index.js +19 -15
  50. package/dist/identity/serviceaccounts/ApiKeysPanel.vue.d.ts +17 -0
  51. package/dist/identity/serviceaccounts/CreatedApiKeyDialog.vue.d.ts +53 -0
  52. package/dist/identity/serviceaccounts/NewApiKeyDialog.vue.d.ts +24 -0
  53. package/dist/identity/serviceaccounts/ServiceAccountDialog.vue.d.ts +22 -0
  54. package/dist/identity/serviceaccounts/ServiceAccountRecord.vue.d.ts +2 -0
  55. package/dist/identity/serviceaccounts/ServiceAccountsList.vue.d.ts +2 -0
  56. package/dist/identity/serviceaccounts/access.d.ts +4 -0
  57. package/dist/identity/serviceaccounts/api.d.ts +27 -0
  58. package/dist/identity/serviceaccounts/context.d.ts +14 -0
  59. package/dist/identity/serviceaccounts/feature.d.ts +23 -0
  60. package/dist/identity/serviceaccounts/form.d.ts +4 -0
  61. package/dist/identity/serviceaccounts/messages.d.ts +11 -0
  62. package/dist/identity/serviceaccounts/routes.d.ts +22 -0
  63. package/dist/{index-Ok29ucE3.js → index-Cmj9iZmT.js} +191 -168
  64. package/dist/{index-C-oM_Mnf.js → index-DH0MoFqg.js} +2 -2
  65. package/dist/index.d.ts +1 -1
  66. package/dist/index.js +1 -1
  67. package/dist/internal/copyText.d.ts +5 -0
  68. package/dist/modules/access/routes.d.ts +13 -13
  69. package/dist/modules/events/routes.d.ts +4 -4
  70. package/dist/modules/identity/routes.d.ts +31 -31
  71. package/dist/modules/notification/routes.d.ts +16 -16
  72. package/dist/modules/serviceaccount/entities.d.ts +127 -0
  73. package/dist/modules/serviceaccount/routes.d.ts +58 -0
  74. package/dist/modules/serviceaccount/schemas.d.ts +49 -0
  75. package/dist/{neighbors-Bv6vnWlW.js → neighbors-DNZuGlQH.js} +1 -1
  76. package/dist/notifications/index.js +1 -1
  77. package/dist/{options-Bu0XbEpN.js → options-e_CAfvDQ.js} +3 -3
  78. package/dist/phone/index.js +1 -1
  79. package/dist/refusals-COPr15XZ.js +135 -0
  80. package/dist/routes-CVckt7Pj.js +19 -0
  81. package/dist/state-BC1Fc6U2.js +154 -0
  82. package/dist/{status-C78NpXyB.js → status-C8XtnK6m.js} +7 -6
  83. package/dist/styles.css +1 -1
  84. package/dist/{suggestions-ClyLexMO.js → suggestions-cPjs5gQz.js} +1 -1
  85. package/dist/{useCommand-DyuPTosF.js → useCommand-CfG727e8.js} +1 -1
  86. package/dist/{useGroupSheet-C2NyqWRp.js → useGroupSheet-BVcNDWbP.js} +2 -2
  87. package/dist/useRecordDialog-D65FF85F.js +30 -0
  88. package/package.json +2 -2
  89. package/dist/http-CdQowFlW.js +0 -194
  90. package/dist/index-BdGnA1Jh.js +0 -765
@@ -1,20 +1,21 @@
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 j, 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";
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
3
  import { u as ee } from "./FormErrors.vue_vue_type_script_setup_true_lang-D7edzNTL.js";
4
- import { _ as Q } from "./FormGroup.vue_vue_type_script_setup_true_lang-CSgT4ITL.js";
5
- import { _ as te } from "./FormView.vue_vue_type_script_setup_true_lang-D31Hk3pJ.js";
6
- import { _ as ae } from "./SelectField.vue_vue_type_script_setup_true_lang-BN4vzvV9.js";
7
- import { _ as se } from "./TextareaField.vue_vue_type_script_setup_true_lang-aT1P8Xqr.js";
8
- import { _ as oe } from "./TextField.vue_vue_type_script_setup_true_lang-BwfNNQEz.js";
4
+ import { _ as Q } from "./FormGroup.vue_vue_type_script_setup_true_lang-CNb2CK01.js";
5
+ import { _ as te } from "./FormView.vue_vue_type_script_setup_true_lang-nyz8EkzM.js";
6
+ import { _ as ae } from "./SelectField.vue_vue_type_script_setup_true_lang-CBZhGNpm.js";
7
+ import { _ as se } from "./TextareaField.vue_vue_type_script_setup_true_lang-BOtn_1GT.js";
8
+ import { _ as oe } from "./TextField.vue_vue_type_script_setup_true_lang-CX3LdZLK.js";
9
9
  import { u as ne } from "./useSaveChrome-7huA3FzR.js";
10
10
  import { t as le } from "./toast-CqSDTWRX.js";
11
11
  import { _ as E } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
12
12
  import { _ as R } from "./Banner.vue_vue_type_script_setup_true_lang-DSStj_5z.js";
13
- import { d as W, u as G, p as re, o as T, r as K, g as M, s as ie, e as ce, a as ue, f as de, b as me, h as fe } from "./index-BdGnA1Jh.js";
13
+ import { u as re } from "./PersonAccess.vue_vue_type_script_setup_true_lang-ClmawvYm.js";
14
+ 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-COPr15XZ.js";
14
15
  import { _ as pe } from "./Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js";
15
16
  import { _ as _e } from "./Tabs.vue_vue_type_script_setup_true_lang-CcMcE38r.js";
16
- import { _ as ve } from "./SegmentedField.vue_vue_type_script_setup_true_lang-DXe_iOS8.js";
17
- import { _ as be } from "./SwitchField.vue_vue_type_script_setup_true_lang-Dj5Aq8QT.js";
17
+ import { _ as ve } from "./SegmentedField.vue_vue_type_script_setup_true_lang-B_hBL5f4.js";
18
+ import { _ as be } from "./SwitchField.vue_vue_type_script_setup_true_lang-DXZK89A3.js";
18
19
  import { u as ge } from "./platform-Dx6STiwY.js";
19
20
  function ye(y, c) {
20
21
  return Object.fromEntries(
@@ -34,7 +35,7 @@ function he(y, c, d, o) {
34
35
  const ke = {
35
36
  class: "flex min-w-0 flex-col gap-4 lg:grid lg:grid-cols-[15rem_minmax(0,1fr)] lg:items-start lg:gap-8",
36
37
  "data-test": "permission-tree"
37
- }, xe = ["aria-label"], we = ["data-test", "aria-current", "onClick"], $e = { class: "min-w-0 flex-1 truncate" }, Oe = ["data-test"], Ve = ["data-test"], Le = { class: "flex min-w-0 items-center justify-between gap-3 px-row-inset" }, je = { class: "min-w-0 flex-1 text-title3 font-semibold text-content-strong" }, Ce = { class: "text-footnote tabular-nums text-content-muted" }, qe = {
38
+ }, xe = ["aria-label"], we = ["data-test", "aria-current", "onClick"], $e = { class: "min-w-0 flex-1 truncate" }, Oe = ["data-test"], Ve = ["data-test"], je = { class: "flex min-w-0 items-center justify-between gap-3 px-row-inset" }, Le = { class: "min-w-0 flex-1 text-title3 font-semibold text-content-strong" }, Ce = { class: "text-footnote tabular-nums text-content-muted" }, qe = {
38
39
  key: 0,
39
40
  class: "contents",
40
41
  "data-test": "tree-toggle-all"
@@ -45,10 +46,10 @@ const ke = {
45
46
  readonly: { type: Boolean }
46
47
  },
47
48
  setup(y) {
48
- const c = y, { t: d } = I(), { catalogue: o } = W(), u = G(), l = k(() => re(o)), v = H(l.value[0]?.key ?? ""), i = k(() => l.value.find((a) => a.key === v.value) ?? l.value[0]), b = (a) => Object.entries(o).filter(([, s]) => ce(s) === a).map(([s]) => s), w = (a) => {
49
+ const c = y, { t: d } = I(), { catalogue: o } = W(), u = G(), l = k(() => ie(o)), v = H(l.value[0]?.key ?? ""), i = k(() => l.value.find((a) => a.key === v.value) ?? l.value[0]), b = (a) => Object.entries(o).filter(([, s]) => ue(s) === a).map(([s]) => s), w = (a) => {
49
50
  const s = b(a);
50
51
  return { granted: s.filter((e) => e in c.grants).length, total: s.length };
51
- }, B = (a) => `${w(a).granted} / ${w(a).total}`, L = k(() => l.value.map((a) => ({ value: a.key, label: u.groupLabel(a.key), badge: B(a.key) }))), P = k(() => i.value !== void 0 && w(i.value.key).granted === w(i.value.key).total);
52
+ }, B = (a) => `${w(a).granted} / ${w(a).total}`, j = k(() => l.value.map((a) => ({ value: a.key, label: u.groupLabel(a.key), badge: B(a.key) }))), P = k(() => i.value !== void 0 && w(i.value.key).granted === w(i.value.key).total);
52
53
  function m() {
53
54
  if (!i.value) return;
54
55
  const a = P.value;
@@ -64,14 +65,14 @@ const ke = {
64
65
  const s = a.requires.map((e) => u.permissionLabel(e)).join(", ");
65
66
  return [u.permissionDescription(a.id), s ? d("core.access.requires", { names: s }) : ""].filter(Boolean).join(" ");
66
67
  }
67
- const A = (a, s) => ie(o, c.grants, a, s), z = (a, s) => s ? M(o, c.grants, a) : K(o, c.grants, a);
68
+ const A = (a, s) => ce(o, c.grants, a, s), z = (a, s) => s ? M(o, c.grants, a) : K(o, c.grants, a);
68
69
  return (a, s) => (r(), g("div", ke, [
69
70
  O("nav", {
70
71
  class: "hidden flex-col gap-0.5 lg:sticky lg:top-4 lg:flex",
71
72
  "aria-label": t(d)("core.access.modules"),
72
73
  "data-test": "tree-modules"
73
74
  }, [
74
- (r(!0), g(j, null, C(l.value, (e) => (r(), g("button", {
75
+ (r(!0), g(L, null, C(l.value, (e) => (r(), g("button", {
75
76
  key: e.key,
76
77
  type: "button",
77
78
  "data-test": `tree-module-${e.key}`,
@@ -89,7 +90,7 @@ const ke = {
89
90
  q(t(_e), {
90
91
  modelValue: v.value,
91
92
  "onUpdate:modelValue": s[0] || (s[0] = (e) => v.value = e),
92
- tabs: L.value,
93
+ tabs: j.value,
93
94
  presentation: "scope",
94
95
  class: "lg:hidden"
95
96
  }, null, 8, ["modelValue", "tabs"]),
@@ -98,8 +99,8 @@ const ke = {
98
99
  class: "flex min-w-0 flex-col gap-6",
99
100
  "data-test": `tree-panel-${i.value.key}`
100
101
  }, [
101
- O("div", Le, [
102
- O("h2", je, f(t(u).groupLabel(i.value.key)), 1),
102
+ O("div", je, [
103
+ O("h2", Le, f(t(u).groupLabel(i.value.key)), 1),
103
104
  O("span", Ce, f(B(i.value.key)), 1),
104
105
  c.readonly ? V("", !0) : (r(), g("span", qe, [
105
106
  q(t(pe), {
@@ -114,12 +115,12 @@ const ke = {
114
115
  })
115
116
  ]))
116
117
  ]),
117
- (r(!0), g(j, null, C(i.value.screens, (e) => (r(), _(t(Q), {
118
+ (r(!0), g(L, null, C(i.value.screens, (e) => (r(), _(t(Q), {
118
119
  key: e.key,
119
120
  header: t(u).screenLabel(e.key)
120
121
  }, {
121
122
  default: p(() => [
122
- (r(!0), g(j, null, C(U(e), (n) => (r(), _(t(ve), {
123
+ (r(!0), g(L, null, C(U(e), (n) => (r(), _(t(ve), {
123
124
  key: n,
124
125
  label: t(u).ownableLabel(n),
125
126
  hint: $(e, n),
@@ -128,7 +129,7 @@ const ke = {
128
129
  disabled: c.readonly || t(T)(t(o), c.grants, n) === null,
129
130
  "onUpdate:modelValue": (h) => A(n, h)
130
131
  }, null, 8, ["label", "hint", "model-value", "options", "disabled", "onUpdate:modelValue"]))), 128)),
131
- (r(!0), g(j, null, C(e.permissions, (n) => (r(), _(t(be), {
132
+ (r(!0), g(L, null, C(e.permissions, (n) => (r(), _(t(be), {
132
133
  key: n.id,
133
134
  label: t(u).permissionLabel(n.id),
134
135
  hint: S(n),
@@ -182,7 +183,7 @@ const ke = {
182
183
  key: 0,
183
184
  class: "flex flex-wrap gap-1.5 px-row-inset py-2",
184
185
  "data-test": "role-attrs"
185
- }, Ye = /* @__PURE__ */ D({
186
+ }, Ze = /* @__PURE__ */ D({
186
187
  __name: "RoleEditor",
187
188
  props: {
188
189
  role: {},
@@ -190,7 +191,7 @@ const ke = {
190
191
  },
191
192
  emits: ["saved"],
192
193
  setup(y, { expose: c, emit: d }) {
193
- const o = y, u = d, { t: l } = I(), v = G(), { catalogue: i, constraints: b } = W(), w = ue(), { access: B } = ge(), L = (a, s) => {
194
+ const o = y, u = d, { t: l } = I(), v = G(), { catalogue: i, constraints: b } = W(), w = re(), { access: B } = ge(), j = (a, s) => {
194
195
  const e = a ?? s ?? null;
195
196
  return {
196
197
  name: a ? a.name : s ? l("core.access.copy_name", { name: v.roleName(s) }) : "",
@@ -199,7 +200,7 @@ const ke = {
199
200
  constraints: ye(b, e?.attrs ?? [])
200
201
  };
201
202
  }, m = ee({
202
- defaults: () => L(o.role, o.source),
203
+ defaults: () => j(o.role, o.source),
203
204
  validator: {
204
205
  safeParse(a) {
205
206
  const s = a, e = [
@@ -213,7 +214,7 @@ const ke = {
213
214
  failureMessage: de()
214
215
  }), U = H([]);
215
216
  function N() {
216
- m.hydrate(L(o.role, o.source)), U.value = fe(i, m.values.grants);
217
+ m.hydrate(j(o.role, o.source)), U.value = fe(i, m.values.grants);
217
218
  }
218
219
  N(), Z(() => [o.role, o.source], N);
219
220
  const $ = k(() => o.role !== null && (o.role.predefined || o.role.computed) || !B.can(me.manageRoles)), S = k(
@@ -228,11 +229,11 @@ const ke = {
228
229
  description: e.description,
229
230
  grants: Object.entries(e.grants).map(([h, J]) => ({ permission: h, qualifier: J })),
230
231
  // The application's constraints are edited; any other attribute stays as the role has it.
231
- attrs: he(b, a?.attrs ?? [], L(o.role, o.source).constraints, e.constraints)
232
+ attrs: he(b, a?.attrs ?? [], j(o.role, o.source).constraints, e.constraints)
232
233
  };
233
234
  return o.role ? w.update({ ref: o.role.ref, ...n }) : w.create(n);
234
235
  },
235
- { hydrateFrom: (e) => L(e, null) }
236
+ { hydrateFrom: (e) => j(e, null) }
236
237
  );
237
238
  (s.status === "saved" || s.status === "saved-refresh-failed") && (le.success(l("core.access.saved")), u("saved", s.value));
238
239
  }
@@ -289,7 +290,7 @@ const ke = {
289
290
  rows: 2,
290
291
  "max-length": 255
291
292
  }), null, 16, ["label"]),
292
- (r(!0), g(j, null, C(t(b), (e) => (r(), _(t(ae), {
293
+ (r(!0), g(L, null, C(t(b), (e) => (r(), _(t(ae), {
293
294
  key: e.attribute,
294
295
  label: t(l)(e.labelKey),
295
296
  "data-test": `role-constraint-${e.attribute}`,
@@ -298,7 +299,7 @@ const ke = {
298
299
  "onUpdate:modelValue": (n) => t(m).values.constraints[e.attribute] = n
299
300
  }, null, 8, ["label", "data-test", "model-value", "options", "onUpdate:modelValue"]))), 128)),
300
301
  z.value.length ? (r(), g("div", Ae, [
301
- (r(!0), g(j, null, C(z.value, (e) => (r(), _(t(E), {
302
+ (r(!0), g(L, null, C(z.value, (e) => (r(), _(t(E), {
302
303
  key: e.attribute,
303
304
  tone: "neutral"
304
305
  }, {
@@ -322,5 +323,5 @@ const ke = {
322
323
  }
323
324
  });
324
325
  export {
325
- Ye as _
326
+ Ze as _
326
327
  };
@@ -1,9 +1,9 @@
1
- import { defineComponent as I, computed as L, openBlock as a, createBlock as b, unref as e, withCtx as c, createElementVNode as S, createVNode as f, mergeProps as Y, useTemplateRef as F, ref as P, createElementBlock as g, toDisplayString as N, Fragment as D, createCommentVNode as x, renderList as q, createTextVNode as G } from "vue";
1
+ import { defineComponent as I, computed as L, openBlock as a, createBlock as b, unref as e, withCtx as c, createElementVNode as S, createVNode as d, mergeProps as Y, useTemplateRef as F, ref as P, createElementBlock as g, toDisplayString as N, Fragment as D, createCommentVNode as x, renderList as q, createTextVNode as G } from "vue";
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-_FXvaj93.js";
5
- import { _ as C } from "./FormGroup.vue_vue_type_script_setup_true_lang-CSgT4ITL.js";
6
- import { g as z } from "./options-Bu0XbEpN.js";
5
+ import { _ as C } from "./FormGroup.vue_vue_type_script_setup_true_lang-CNb2CK01.js";
6
+ import { g as z } from "./options-e_CAfvDQ.js";
7
7
  import { _ as oe } from "./AlertDialog.vue_vue_type_script_setup_true_lang-whA4WLdl.js";
8
8
  import { t as E } from "./toast-CqSDTWRX.js";
9
9
  import { _ as te } from "./RecordHeader.vue_vue_type_script_setup_true_lang-fmx0f8xi.js";
@@ -12,11 +12,13 @@ import { a as le, u as se } from "./routeResource-CcYA75T2.js";
12
12
  import { a as re } from "./ResourcePage.vue_vue_type_script_setup_true_lang-BFBGvevP.js";
13
13
  import { _ as ce } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
14
14
  import { _ as H } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
15
- import { u as O, a as U, f as ne, i as ie, d as ue, b as M, c as T } from "./index-BdGnA1Jh.js";
16
- import { _ as J } from "./SelectField.vue_vue_type_script_setup_true_lang-BN4vzvV9.js";
17
- import { u as me, _ as pe } from "./useCommand-DyuPTosF.js";
18
- import { _ as de } from "./Modal.vue_vue_type_script_setup_true_lang-DpBb8ans.js";
19
- import { _ as fe } from "./RoleEditor.vue_vue_type_script_setup_true_lang-C6oloGIh.js";
15
+ import { u as O } from "./PersonAccess.vue_vue_type_script_setup_true_lang-ClmawvYm.js";
16
+ import { u as U, f as ne, e as ie, g as ue, a as M } from "./refusals-COPr15XZ.js";
17
+ import { _ as J } from "./SelectField.vue_vue_type_script_setup_true_lang-CBZhGNpm.js";
18
+ import { u as me, _ as pe } from "./useCommand-CfG727e8.js";
19
+ import { _ as fe } from "./Modal.vue_vue_type_script_setup_true_lang-DpBb8ans.js";
20
+ import { _ as de } from "./RoleEditor.vue_vue_type_script_setup_true_lang-Bs9bo0Zb.js";
21
+ import { accessPages as T } from "./access/index.js";
20
22
  const _e = { "data-test": "role-replace" }, ve = /* @__PURE__ */ I({
21
23
  __name: "ReplaceRoleDialog",
22
24
  props: {
@@ -25,7 +27,7 @@ const _e = { "data-test": "role-replace" }, ve = /* @__PURE__ */ I({
25
27
  },
26
28
  emits: ["replaced"],
27
29
  setup(j, { expose: s, emit: y }) {
28
- const l = j, n = y, { t: _ } = K(), w = O(), m = U(), p = me({
30
+ const l = j, n = y, { t: _ } = K(), w = U(), m = O(), p = me({
29
31
  defaults: () => ({ with: null }),
30
32
  validator: {
31
33
  safeParse: (i) => i.with ? { success: !0, data: { with: i.with } } : { success: !1, error: { issues: [{ path: ["with"], message: _("core.access.replace.choose") }] } }
@@ -46,11 +48,11 @@ const _e = { "data-test": "role-replace" }, ve = /* @__PURE__ */ I({
46
48
  }, {
47
49
  default: c(() => [
48
50
  S("div", _e, [
49
- f(e(C), {
51
+ d(e(C), {
50
52
  footer: e(_)("core.access.replace.footer")
51
53
  }, {
52
54
  default: c(() => [
53
- f(e(J), Y(e(p).form.bind("with"), {
55
+ d(e(J), Y(e(p).form.bind("with"), {
54
56
  label: e(_)("core.access.replace.with"),
55
57
  options: h.value
56
58
  }), null, 16, ["label", "options"])
@@ -85,24 +87,24 @@ const _e = { "data-test": "role-replace" }, ve = /* @__PURE__ */ I({
85
87
  others: {}
86
88
  },
87
89
  setup(j, { expose: s }) {
88
- const y = j, { t: l } = K(), n = O(), _ = U(), w = F("modal"), m = P(null), t = P(null), p = P(!1), h = P(!1), i = L(() => y.others.map((d) => ({ value: d.ref, label: n.roleName(d) }))), B = L(() => t.value !== null && !t.value.only_in_role.length && !t.value.only_in_other.length && !t.value.different.length);
89
- async function V(d) {
90
- if (m.value = d, t.value = null, h.value = !1, p.value = !1, !!d) {
90
+ const y = j, { t: l } = K(), n = U(), _ = O(), w = F("modal"), m = P(null), t = P(null), p = P(!1), h = P(!1), i = L(() => y.others.map((f) => ({ value: f.ref, label: n.roleName(f) }))), B = L(() => t.value !== null && !t.value.only_in_role.length && !t.value.only_in_other.length && !t.value.different.length);
91
+ async function V(f) {
92
+ if (m.value = f, t.value = null, h.value = !1, p.value = !1, !!f) {
91
93
  p.value = !0;
92
94
  try {
93
- const k = await _.compare(y.role.ref, d);
94
- m.value === d && (t.value = k);
95
+ const k = await _.compare(y.role.ref, f);
96
+ m.value === f && (t.value = k);
95
97
  } catch {
96
- m.value === d && (h.value = !0);
98
+ m.value === f && (h.value = !0);
97
99
  } finally {
98
- m.value === d && (p.value = !1);
100
+ m.value === f && (p.value = !1);
99
101
  }
100
102
  }
101
103
  }
102
104
  function A() {
103
105
  m.value = null, t.value = null, h.value = !1, w.value?.present();
104
106
  }
105
- return s({ present: A }), (d, k) => (a(), b(e(de), {
107
+ return s({ present: A }), (f, k) => (a(), b(e(fe), {
106
108
  ref_key: "modal",
107
109
  ref: w,
108
110
  title: e(l)("core.access.compare.title"),
@@ -113,11 +115,11 @@ const _e = { "data-test": "role-replace" }, ve = /* @__PURE__ */ I({
113
115
  }, {
114
116
  default: c(() => [
115
117
  S("div", he, [
116
- f(e(C), {
118
+ d(e(C), {
117
119
  footer: e(l)("core.access.compare.footer")
118
120
  }, {
119
121
  default: c(() => [
120
- f(e(J), {
122
+ d(e(J), {
121
123
  "model-value": m.value,
122
124
  label: e(l)("core.access.compare.with"),
123
125
  options: i.value,
@@ -174,10 +176,10 @@ const _e = { "data-test": "role-replace" }, ve = /* @__PURE__ */ I({
174
176
  _: 1
175
177
  }, 8, ["title", "subtitle"]));
176
178
  }
177
- }), we = { "data-test": "role-holders" }, xe = { class: "flex min-w-0 flex-col gap-group-gap" }, Ke = /* @__PURE__ */ I({
179
+ }), we = { "data-test": "role-holders" }, xe = { class: "flex min-w-0 flex-col gap-group-gap" }, Ue = /* @__PURE__ */ I({
178
180
  __name: "RolePage",
179
181
  setup(j) {
180
- const { t: s } = K(), y = Z(), { access: l } = ae(), n = O(), _ = ie(), { subjectRoute: w } = ue(), m = U(), t = le({ param: "ref", parse: (o) => o === "" ? null : o, identify: (o) => o.ref, load: (o, { signal: r }) => m.role(o, { signal: r }) }), p = se({ for: t, load: (o, { signal: r }) => m.holders(o, { signal: r }) }), h = P([]), i = L(() => h.value.filter((o) => o.ref !== t.data.value?.ref)), B = L(() => h.value.filter((o) => o.predefined)), V = F("compareDialog"), A = F("replaceDialog"), d = F("deleteDialog"), k = (o) => !o.predefined && !o.computed;
182
+ const { t: s } = K(), y = Z(), { access: l } = ae(), n = U(), _ = ie(), { subjectRoute: w } = ue(), m = O(), t = le({ param: "ref", parse: (o) => o === "" ? null : o, identify: (o) => o.ref, load: (o, { signal: r }) => m.role(o, { signal: r }) }), p = se({ for: t, load: (o, { signal: r }) => m.holders(o, { signal: r }) }), h = P([]), i = L(() => h.value.filter((o) => o.ref !== t.data.value?.ref)), B = L(() => h.value.filter((o) => o.predefined)), V = F("compareDialog"), A = F("replaceDialog"), f = F("deleteDialog"), k = (o) => !o.predefined && !o.computed;
181
183
  async function u(o) {
182
184
  if (h.value.length === 0)
183
185
  try {
@@ -192,7 +194,7 @@ const _e = { "data-test": "role-replace" }, ve = /* @__PURE__ */ I({
192
194
  const o = t.data.value;
193
195
  if (!o) return [];
194
196
  const r = [];
195
- return l.can(M.manageRoles) && r.push({ id: "copy", label: s("core.access.copy"), icon: "copy", placement: "secondary", onClick: () => void y.push({ ...T.newRole, query: { copy: o.ref } }) }), r.push({ id: "compare", label: s("core.access.compare.action"), icon: "swapBoxLine", placement: "overflow", onClick: () => void u(() => V.value?.present()) }), k(o) && l.can(M.manageRoles) && r.push({ id: "replace", label: s("core.access.replace.action"), icon: "refreshLine", placement: "overflow", onClick: () => void u(() => A.value?.present()) }), k(o) && l.can(M.deleteRoles) && r.push({ id: "delete", label: s("core.access.delete.action"), icon: "deleteBin2Line", placement: "overflow", tone: "critical", onClick: () => d.value?.present(o) }), r;
197
+ return l.can(M.manageRoles) && r.push({ id: "copy", label: s("core.access.copy"), icon: "copy", placement: "secondary", onClick: () => void y.push({ ...T.newRole, query: { copy: o.ref } }) }), r.push({ id: "compare", label: s("core.access.compare.action"), icon: "swapBoxLine", placement: "overflow", onClick: () => void u(() => V.value?.present()) }), k(o) && l.can(M.manageRoles) && r.push({ id: "replace", label: s("core.access.replace.action"), icon: "refreshLine", placement: "overflow", onClick: () => void u(() => A.value?.present()) }), k(o) && l.can(M.deleteRoles) && r.push({ id: "delete", label: s("core.access.delete.action"), icon: "deleteBin2Line", placement: "overflow", tone: "critical", onClick: () => f.value?.present(o) }), r;
196
198
  });
197
199
  async function W(o) {
198
200
  await m.remove(o.ref), E.success(s("core.access.deleted")), await y.replace(T.roles);
@@ -205,19 +207,19 @@ const _e = { "data-test": "role-replace" }, ve = /* @__PURE__ */ I({
205
207
  actions: Q.value
206
208
  }, {
207
209
  header: c(({ record: v }) => [
208
- f(e(te), {
210
+ d(e(te), {
209
211
  title: e(n).roleName(v),
210
212
  subtitle: v.description
211
213
  }, {
212
214
  leading: c(() => [
213
- f(e(ee), {
215
+ d(e(ee), {
214
216
  tone: v.predefined ? "anchor" : "brand",
215
217
  icon: "shieldStarFill",
216
218
  size: "lg"
217
219
  }, null, 8, ["tone"])
218
220
  ]),
219
221
  meta: c(() => [
220
- f(e(H), {
222
+ d(e(H), {
221
223
  tone: v.predefined ? "neutral" : "info"
222
224
  }, {
223
225
  default: c(() => [
@@ -232,20 +234,20 @@ const _e = { "data-test": "role-replace" }, ve = /* @__PURE__ */ I({
232
234
  ]),
233
235
  default: c(({ record: v }) => [
234
236
  S("div", xe, [
235
- f(fe, {
237
+ d(de, {
236
238
  role: v,
237
239
  onSaved: r[0] || (r[0] = ($) => {
238
240
  e(t).update($), e(p).reload();
239
241
  })
240
242
  }, null, 8, ["role"]),
241
- f(e(ce), {
243
+ d(e(ce), {
242
244
  state: e(p).state.value,
243
245
  "skeleton-rows": 3,
244
246
  "is-empty": () => !1,
245
247
  onRetry: r[1] || (r[1] = ($) => e(p).reload())
246
248
  }, {
247
249
  default: c(({ value: $ }) => [
248
- f(e(C), {
250
+ d(e(C), {
249
251
  header: e(s)("core.access.holders.title"),
250
252
  footer: $.length ? void 0 : e(s)("core.access.holders.empty")
251
253
  }, {
@@ -276,14 +278,14 @@ const _e = { "data-test": "role-replace" }, ve = /* @__PURE__ */ I({
276
278
  ]),
277
279
  _: 1
278
280
  }, 8, ["state"]),
279
- f(ke, {
281
+ d(ke, {
280
282
  ref_key: "compareDialog",
281
283
  ref: V,
282
284
  role: v,
283
285
  others: i.value
284
286
  }, null, 8, ["role", "others"]),
285
287
  k(v) ? (a(), g(D, { key: 0 }, [
286
- f(ve, {
288
+ d(ve, {
287
289
  ref_key: "replaceDialog",
288
290
  ref: A,
289
291
  role: v,
@@ -292,9 +294,9 @@ const _e = { "data-test": "role-replace" }, ve = /* @__PURE__ */ I({
292
294
  e(t).reload(), e(p).reload();
293
295
  })
294
296
  }, null, 8, ["role", "others"]),
295
- f(e(oe), {
297
+ d(e(oe), {
296
298
  ref_key: "deleteDialog",
297
- ref: d,
299
+ ref: f,
298
300
  tone: "critical",
299
301
  title: e(s)("core.access.delete.title"),
300
302
  message: e(s)("core.access.delete.body", { name: e(n).roleName(v) }),
@@ -310,5 +312,5 @@ const _e = { "data-test": "role-replace" }, ve = /* @__PURE__ */ I({
310
312
  }
311
313
  });
312
314
  export {
313
- Ke as default
315
+ Ue as default
314
316
  };
@@ -1,17 +1,19 @@
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";
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";
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-_FXvaj93.js";
5
5
  import { _ as E } from "./Tabs.vue_vue_type_script_setup_true_lang-CcMcE38r.js";
6
- import { _ as U } from "./FormGroup.vue_vue_type_script_setup_true_lang-CSgT4ITL.js";
7
- import { g as j } from "./options-Bu0XbEpN.js";
8
- import { _ as D } from "./TextField.vue_vue_type_script_setup_true_lang-BwfNNQEz.js";
6
+ import { _ as U } from "./FormGroup.vue_vue_type_script_setup_true_lang-CNb2CK01.js";
7
+ import { g as j } from "./options-e_CAfvDQ.js";
8
+ import { _ as D } from "./TextField.vue_vue_type_script_setup_true_lang-CX3LdZLK.js";
9
9
  import { a as I } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-GUTIXuNd.js";
10
10
  import { u as K } from "./platform-Dx6STiwY.js";
11
11
  import { _ as T } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.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-W4tfxmm5.js";
14
- import { u as G, a as H, b as J, c as x } from "./index-BdGnA1Jh.js";
14
+ import { u as G } from "./PersonAccess.vue_vue_type_script_setup_true_lang-ClmawvYm.js";
15
+ import { u as H, a as J } from "./refusals-COPr15XZ.js";
16
+ import { accessPages as x } from "./access/index.js";
15
17
  const M = {
16
18
  class: "flex min-w-0 flex-col gap-group-gap",
17
19
  "data-test": "roles-index"
@@ -22,24 +24,24 @@ const M = {
22
24
  }, W = {
23
25
  class: "min-w-[4.5rem] text-right text-footnote tabular-nums text-content-muted",
24
26
  "data-test": "role-holders"
25
- }, me = /* @__PURE__ */ L({
27
+ }, fe = /* @__PURE__ */ L({
26
28
  __name: "RolesPage",
27
29
  setup(X) {
28
- const { t: o } = A(), k = F(), { access: w } = K(), u = G(), y = H(), m = z(({ signal: s }) => y.roles({ signal: s })), c = b("all"), p = b(""), r = i(() => m.data.value ?? []), $ = i(() => [
29
- { value: "all", label: o("core.access.kinds.all"), badge: r.value.length },
30
- { value: "predefined", label: o("core.access.kinds.predefined"), badge: r.value.filter((s) => s.predefined).length },
31
- { value: "custom", label: o("core.access.kinds.custom"), badge: r.value.filter((s) => !s.predefined).length }
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(() => [
31
+ { value: "all", label: s("core.access.kinds.all"), badge: r.value.length },
32
+ { value: "predefined", label: s("core.access.kinds.predefined"), badge: r.value.filter((o) => o.predefined).length },
33
+ { value: "custom", label: s("core.access.kinds.custom"), badge: r.value.filter((o) => !o.predefined).length }
32
34
  ]), v = i(() => {
33
- const s = p.value.trim().toLowerCase();
35
+ const o = p.value.trim().toLowerCase();
34
36
  return r.value.filter(
35
- (a) => (c.value === "all" || c.value === "predefined" === a.predefined) && (s === "" || `${u.roleName(a)} ${a.description}`.toLowerCase().includes(s))
37
+ (a) => (c.value === "all" || c.value === "predefined" === a.predefined) && (o === "" || `${m.roleName(a)} ${a.description}`.toLowerCase().includes(o))
36
38
  );
37
39
  }), V = i(
38
- () => w.can(J.manageRoles) ? [{ id: "create", label: o("core.access.create"), icon: "addLine", placement: "primary", compact: "icon", onClick: () => void k.push(x.newRole) }] : []
39
- ), C = (s) => [s.description, o("core.access.permissions", { count: s.permission_count })].filter(Boolean).join(" · ");
40
- return (s, a) => (d(), g(e(I), {
41
- title: e(o)("core.access.title"),
42
- description: e(o)("core.access.description"),
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
+ ), C = (o) => [o.description, s("core.access.permissions", { count: o.permission_count })].filter(Boolean).join(" · ");
42
+ return (o, a) => (d(), b(e(I), {
43
+ title: e(s)("core.access.title"),
44
+ description: e(s)("core.access.description"),
43
45
  icon: "shieldStarFill",
44
46
  count: r.value.length || null,
45
47
  actions: V.value
@@ -57,25 +59,25 @@ const M = {
57
59
  modelValue: p.value,
58
60
  "onUpdate:modelValue": a[1] || (a[1] = (t) => p.value = t),
59
61
  class: "min-w-[14rem] flex-1",
60
- placeholder: e(o)("core.access.search")
62
+ placeholder: e(s)("core.access.search")
61
63
  }, null, 8, ["modelValue", "placeholder"])
62
64
  ]),
63
65
  n(e(T), {
64
- state: e(m).state.value,
66
+ state: e(u).state.value,
65
67
  "skeleton-rows": 6,
66
68
  "is-empty": () => !1,
67
- onRetry: a[2] || (a[2] = (t) => e(m).reload())
69
+ onRetry: a[2] || (a[2] = (t) => e(u).reload())
68
70
  }, {
69
71
  default: l(() => [
70
72
  n(e(U), {
71
- footer: e(o)("core.access.list_footer")
73
+ footer: e(s)("core.access.list_footer")
72
74
  }, {
73
75
  default: l(() => [
74
- v.value.length === 0 ? (d(), h("p", Q, _(e(o)("core.access.empty")), 1)) : N("", !0),
75
- (d(!0), h(R, null, B(v.value, (t) => (d(), g(e(j), {
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), {
76
78
  key: t.ref,
77
79
  layout: "setting",
78
- label: e(u).roleName(t),
80
+ label: e(m).roleName(t),
79
81
  sub: C(t),
80
82
  to: e(x).role({ ref: t.ref })
81
83
  }, {
@@ -90,11 +92,11 @@ const M = {
90
92
  tone: t.predefined ? "neutral" : "info"
91
93
  }, {
92
94
  default: l(() => [
93
- P(_(e(u).roleKind(t)), 1)
95
+ P(_(e(m).roleKind(t)), 1)
94
96
  ]),
95
97
  _: 2
96
98
  }, 1032, ["tone"]),
97
- f("span", W, _(e(o)("core.access.holders_count", { count: t.holders })), 1)
99
+ f("span", W, _(e(s)("core.access.holders_count", { count: t.holders })), 1)
98
100
  ]),
99
101
  _: 2
100
102
  }, 1032, ["label", "sub", "to"]))), 128))
@@ -111,5 +113,5 @@ const M = {
111
113
  }
112
114
  });
113
115
  export {
114
- me as default
116
+ fe as default
115
117
  };
@@ -1,5 +1,5 @@
1
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-Bu0XbEpN.js";
2
+ import { u as F, a as S, _ as T, f as D, b as N } from "./options-e_CAfvDQ.js";
3
3
  const E = ["id", "aria-label", "aria-describedby", "aria-invalid"], P = ["disabled", "aria-pressed", "onClick"], H = /* @__PURE__ */ w({
4
4
  __name: "SegmentedField",
5
5
  props: /* @__PURE__ */ L({
@@ -6,8 +6,8 @@ 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-DgOFV4fa.js";
8
8
  import { _ as de } from "./Popover.vue_vue_type_script_setup_true_lang-C70GrCP7.js";
9
- import { i as ce, m as pe, a as me, c as ve, _ as fe, f as be, b as ge } from "./options-Bu0XbEpN.js";
10
- import { a as ye } from "./suggestions-ClyLexMO.js";
9
+ import { i as ce, m as pe, a as me, e as ve, _ as fe, f as be, b as ge } from "./options-e_CAfvDQ.js";
10
+ import { a as ye } from "./suggestions-cPjs5gQz.js";
11
11
  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
12
  key: 0,
13
13
  role: "presentation"
@@ -509,6 +509,6 @@ const Ee = ["id", "disabled", "aria-expanded", "aria-required", "aria-invalid",
509
509
  export {
510
510
  et as _,
511
511
  Q as a,
512
- Ze as b,
513
- Re as u
512
+ Re as b,
513
+ Ze as u
514
514
  };