@wssto2/vue-core 0.9.3 → 0.10.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 (162) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/ActionRow.vue_vue_type_script_setup_true_lang-IpcP3Bjc.js +87 -0
  3. package/dist/Activity-CeAG0ZtJ.js +169 -0
  4. package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-DdJOodn8.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-D5i77H6S.js} +147 -159
  5. package/dist/{AsyncSection.vue_vue_type_script_setup_true_lang-BdeOKqz_.js → AsyncSection.vue_vue_type_script_setup_true_lang-DGzQ-Snp.js} +1 -1
  6. package/dist/BottomDockPortal.vue_vue_type_script_setup_true_lang-DmwR-2SP.js +17 -0
  7. package/dist/Button.vue_vue_type_script_setup_true_lang-C74hcb0N.js +123 -0
  8. package/dist/Changes-B9-zpDxG.js +69 -0
  9. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-DHcekGNn.js → CollectionPage.vue_vue_type_script_setup_true_lang-Cn0YOWJF.js} +19 -18
  10. package/dist/{DataTable.vue_vue_type_script_setup_true_lang-8kBsNRuq.js → DataTable.vue_vue_type_script_setup_true_lang-BQRG8bpH.js} +1 -1
  11. package/dist/{DateField.vue_vue_type_script_setup_true_lang-BhKdCVFn.js → DateField.vue_vue_type_script_setup_true_lang-CeNwBbJT.js} +1 -1
  12. package/dist/{DeadLetters-Bb5pPlOY.js → DeadLetters-BP03yC4R.js} +5 -6
  13. package/dist/DrawnCheck.vue_vue_type_script_setup_true_lang-9DzDJlIA.js +38 -0
  14. package/dist/FormGroup.vue_vue_type_script_setup_true_lang-D6jYfNjW.js +427 -0
  15. package/dist/{FormView.vue_vue_type_script_setup_true_lang-aaNnMIOi.js → FormView.vue_vue_type_script_setup_true_lang-DvbPEiNQ.js} +2 -2
  16. package/dist/{General-BAG7S6wV.js → General-BDmCJr3H.js} +35 -38
  17. package/dist/{IncidentRecord-D8aOpNHo.js → IncidentRecord-DEhl6AyA.js} +14 -15
  18. package/dist/{IncidentsList-C0cFl0Db.js → IncidentsList-COgRPdk3.js} +3 -3
  19. package/dist/{Modal.vue_vue_type_script_setup_true_lang-BlHhdmMy.js → Modal.vue_vue_type_script_setup_true_lang-DDS0iEnn.js} +9 -8
  20. package/dist/{NewRolePage-C6Iu-EQJ.js → NewRolePage-DhGFwvk3.js} +4 -4
  21. package/dist/{NumberField.vue_vue_type_script_setup_true_lang-TGGAq8J-.js → NumberField.vue_vue_type_script_setup_true_lang-B3UrXNqH.js} +1 -1
  22. package/dist/{PersonAccess.vue_vue_type_script_setup_true_lang-qz1tmYpF.js → PersonAccess.vue_vue_type_script_setup_true_lang-DbGZSNQc.js} +56 -56
  23. package/dist/ProfilePage-BQCK2w8R.js +684 -0
  24. package/dist/ProgressTrack.vue_vue_type_script_setup_true_lang-DrOm8k--.js +30 -0
  25. package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-B9mN7UxZ.js → RecordHeader.vue_vue_type_script_setup_true_lang-DqGc3Jyo.js} +1 -1
  26. package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-Cw8mGf_B.js → ResourcePage.vue_vue_type_script_setup_true_lang-DljhsTU4.js} +3 -3
  27. package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-CJPvOVDV.js → RoleEditor.vue_vue_type_script_setup_true_lang-C0FIotFA.js} +11 -12
  28. package/dist/{RolePage-Dj_ocMnM.js → RolePage-DaNv049g.js} +10 -10
  29. package/dist/{RolesPage-PXrs4O-1.js → RolesPage-6hlzJes_.js} +6 -6
  30. package/dist/SearchInput.vue_vue_type_script_setup_true_lang-w4eAqyZ9.js +32 -0
  31. package/dist/{SectionList.vue_vue_type_script_setup_true_lang-CtdF1zuv.js → SectionList.vue_vue_type_script_setup_true_lang-DR0_NsqC.js} +1 -1
  32. package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-B5ove3rM.js → SectionNavigator.vue_vue_type_script_setup_true_lang-Dh3sXUt_.js} +2 -2
  33. package/dist/{SegmentedField.vue_vue_type_script_setup_true_lang-ChfDFAA2.js → SegmentedField.vue_vue_type_script_setup_true_lang-zv_AxpBn.js} +1 -1
  34. package/dist/{SelectField.vue_vue_type_script_setup_true_lang-BP8nAQwo.js → SelectField.vue_vue_type_script_setup_true_lang-BZwdANL3.js} +3 -3
  35. package/dist/{ServiceAccountDialog.vue_vue_type_script_setup_true_lang-aWkKwxNe.js → ServiceAccountDialog.vue_vue_type_script_setup_true_lang-C0OIBrSp.js} +20 -20
  36. package/dist/{ServiceAccountRecord-bxX9yQkC.js → ServiceAccountRecord-gtlhYaAz.js} +37 -37
  37. package/dist/{ServiceAccountsList-BXE6htxk.js → ServiceAccountsList-BM7GGcvw.js} +33 -33
  38. package/dist/{Sessions--Gvc0kxw.js → Sessions-BCDJYuV2.js} +23 -24
  39. package/dist/{SettingsPage-DzDC7gD-.js → SettingsPage-DUhMsYBf.js} +27 -30
  40. package/dist/{SignIn-CTI_699e.js → SignIn-4D7WohI8.js} +9 -10
  41. package/dist/{SignInPage-HKC1bm2E.js → SignInPage-B6B-34GG.js} +4 -4
  42. package/dist/SignIns-CFoe4hpX.js +64 -0
  43. package/dist/StatusLine.vue_vue_type_script_setup_true_lang-DsdQmLq6.js +56 -0
  44. package/dist/{SwitchField.vue_vue_type_script_setup_true_lang-BMA2YXTZ.js → SwitchField.vue_vue_type_script_setup_true_lang-Ds4q0bbl.js} +1 -1
  45. package/dist/{TextField.vue_vue_type_script_setup_true_lang-BFVsqcBX.js → TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js} +2 -2
  46. package/dist/{TextareaField.vue_vue_type_script_setup_true_lang-Dyh4Hhyl.js → TextareaField.vue_vue_type_script_setup_true_lang-D2j4s96s.js} +1 -1
  47. package/dist/{TimeField.vue_vue_type_script_setup_true_lang-gGFfQLuK.js → TimeField.vue_vue_type_script_setup_true_lang-D-Em4glH.js} +1 -1
  48. package/dist/UserRecord-Cd1TCpJZ.js +202 -0
  49. package/dist/UsersList-GJU5-CTG.js +74 -0
  50. package/dist/access/index.js +4 -4
  51. package/dist/app/index.js +1 -1
  52. package/dist/{application-BmXW6iW_.js → application-CuzT-0vW.js} +1 -1
  53. package/dist/button/index.js +6 -5
  54. package/dist/collection/PickerModal.vue.d.ts +26 -0
  55. package/dist/collection/definition.d.ts +6 -6
  56. package/dist/collection/http.d.ts +6 -6
  57. package/dist/collection/index.d.ts +5 -1
  58. package/dist/collection/index.js +144 -85
  59. package/dist/collection/picker.d.ts +39 -0
  60. package/dist/collection/types.d.ts +9 -4
  61. package/dist/collection/useCollection.d.ts +5 -5
  62. package/dist/content/ActivityStream.vue.d.ts +62 -0
  63. package/dist/content/CommentThread.vue.d.ts +52 -0
  64. package/dist/content/Composer.vue.d.ts +36 -0
  65. package/dist/content/index.d.ts +3 -0
  66. package/dist/content/index.js +321 -56
  67. package/dist/controls/index.js +28 -54
  68. package/dist/form/index.d.ts +2 -0
  69. package/dist/form/index.js +611 -595
  70. package/dist/form/storableText.d.ts +24 -0
  71. package/dist/format/index.d.ts +1 -0
  72. package/dist/format/index.js +10 -6
  73. package/dist/format/slug.d.ts +8 -0
  74. package/dist/highlight-DnYhLXnu.js +9 -0
  75. package/dist/http-Dm0uXY9O.js +95 -0
  76. package/dist/i18n/index.d.ts +14 -0
  77. package/dist/i18n/index.js +87 -63
  78. package/dist/i18n/plural.d.ts +23 -0
  79. package/dist/identity/embed.d.ts +39 -0
  80. package/dist/identity/index.d.ts +20 -0
  81. package/dist/identity/index.js +40 -21
  82. package/dist/identity/session.d.ts +9 -1
  83. package/dist/identity/shared/ChangeFeed.vue.d.ts +6 -3
  84. package/dist/identity/users/context.d.ts +8 -0
  85. package/dist/identity/users/dialogs.d.ts +10 -0
  86. package/dist/identity/users/ext.d.ts +8 -0
  87. package/dist/identity/users/feature.d.ts +10 -0
  88. package/dist/identity/users/list.d.ts +1 -1
  89. package/dist/identity/users/personSections.d.ts +1 -1
  90. package/dist/identity/users/replace.d.ts +45 -0
  91. package/dist/identity/users/words.d.ts +28 -0
  92. package/dist/incidents/api.d.ts +1 -1
  93. package/dist/incidents/index.js +1 -1
  94. package/dist/{index-Dz0LkLM8.js → index-CTkG-acm.js} +4 -4
  95. package/dist/{index-Dm-sdJJr.js → index-DUs7WSz-.js} +31 -32
  96. package/dist/index-pJ_eRg80.js +1257 -0
  97. package/dist/index.d.ts +1 -1
  98. package/dist/index.js +1 -1
  99. package/dist/modal/index.js +3 -3
  100. package/dist/modules/identity/entities.d.ts +7 -0
  101. package/dist/modules/identity/routes.d.ts +8 -4
  102. package/dist/modules/identity/schemas.d.ts +16 -0
  103. package/dist/{neighbors-DVfU9T0o.js → neighbors-OyvGi233.js} +2 -2
  104. package/dist/notifications/deadletters/list.d.ts +1 -1
  105. package/dist/notifications/index.js +1 -1
  106. package/dist/{options-QuOkMKVZ.js → options-B48UiYsG.js} +2 -2
  107. package/dist/page/index.js +11 -11
  108. package/dist/phone/index.js +1 -1
  109. package/dist/pwa/AndroidInstallBanner.vue.d.ts +18 -0
  110. package/dist/pwa/InstallQrSheet.vue.d.ts +21 -0
  111. package/dist/pwa/IosInstallGuide.vue.d.ts +19 -0
  112. package/dist/pwa/QrCode.vue.d.ts +16 -0
  113. package/dist/pwa/index.d.ts +4 -0
  114. package/dist/pwa/index.js +244 -24
  115. package/dist/resource/index.js +1 -1
  116. package/dist/{rowLayout-CT8vWYgI.js → rowLayout-Il4psyXN.js} +183 -188
  117. package/dist/shell/DarkModeRow.vue.d.ts +15 -0
  118. package/dist/shell/OfflineNotice.vue.d.ts +2 -0
  119. package/dist/shell/QuickSearchButton.vue.d.ts +2 -0
  120. package/dist/shell/QuickSearchPalette.vue.d.ts +12 -0
  121. package/dist/shell/darkMode.d.ts +26 -0
  122. package/dist/shell/index.d.ts +10 -0
  123. package/dist/shell/index.js +963 -580
  124. package/dist/shell/offlineNotice.d.ts +3 -0
  125. package/dist/shell/quickSearch.d.ts +14 -0
  126. package/dist/shell/quickSearchControl.d.ts +66 -0
  127. package/dist/shortcut-DUR6yPWA.js +93 -0
  128. package/dist/state/BackgroundTaskCapsule.vue.d.ts +18 -0
  129. package/dist/state/backgroundTasks.d.ts +58 -0
  130. package/dist/state/index.d.ts +4 -0
  131. package/dist/state/index.js +194 -80
  132. package/dist/state/useCountUp.d.ts +9 -0
  133. package/dist/styles.css +1 -1
  134. package/dist/{suggestions-BVQhoXzS.js → suggestions-q_v3M7G6.js} +1 -1
  135. package/dist/testing/collection.d.ts +1 -1
  136. package/dist/{useCommand-Dc8Lgs9h.js → useCommand-Ch_nx1AQ.js} +4 -4
  137. package/dist/{useGroupSheet-DQ6cVG-z.js → useGroupSheet-CPjHydQV.js} +14 -15
  138. package/dist/{useRecordDialog-BTsbHY38.js → useRecordDialog-DdkauXnU.js} +1 -1
  139. package/dist/{useResourceForm-DJ4Q75pq.js → useResourceForm-Dl6YFYyz.js} +1 -1
  140. package/package.json +3 -2
  141. package/dist/ActionRow.vue_vue_type_script_setup_true_lang-Cg1lhpcA.js +0 -45
  142. package/dist/Activity-29hsZ28j.js +0 -156
  143. package/dist/Button.vue_vue_type_script_setup_true_lang-Dp7OB-eF.js +0 -192
  144. package/dist/Changes-Dxjdkd_5.js +0 -129
  145. package/dist/FormErrors.vue_vue_type_script_setup_true_lang-CIggKPtq.js +0 -295
  146. package/dist/FormGroup.vue_vue_type_script_setup_true_lang-B37dixvJ.js +0 -137
  147. package/dist/PageBar.vue_vue_type_script_setup_true_lang-qI94fjJv.js +0 -47
  148. package/dist/ProfilePage-BnohZIEg.js +0 -764
  149. package/dist/ProgressTrack.vue_vue_type_script_setup_true_lang-B6Prw9hi.js +0 -64
  150. package/dist/SectionIntro.vue_vue_type_script_setup_true_lang-CZtPrmXD.js +0 -23
  151. package/dist/SessionList.vue_vue_type_script_setup_true_lang-Cnyt5V8T.js +0 -133
  152. package/dist/SignIns-BcqBgWgN.js +0 -121
  153. package/dist/UserRecord-CtUPpbCt.js +0 -267
  154. package/dist/UsersList-BMkIgIg8.js +0 -155
  155. package/dist/definition-C7QuyV3i.js +0 -54
  156. package/dist/fieldMessages-B6GHgi40.js +0 -25
  157. package/dist/http-nz92KjdS.js +0 -42
  158. package/dist/index-CdtofdcJ.js +0 -501
  159. package/dist/languages-BShG9LpE.js +0 -10
  160. package/dist/signInEvents-DWShrJox.js +0 -30
  161. package/dist/status-BRA14qwX.js +0 -34
  162. package/dist/useWaitStatus-fsacMl4W.js +0 -24
@@ -1,64 +0,0 @@
1
- import { defineComponent as l, openBlock as t, createElementBlock as r, createCommentVNode as c, createElementVNode as d, normalizeClass as s, computed as i, normalizeStyle as u } from "vue";
2
- const h = ["width", "height", "stroke-width"], m = {
3
- key: 0,
4
- cx: "12",
5
- cy: "12",
6
- r: "10",
7
- class: "[stroke-dasharray:64] [stroke-dashoffset:64] animate-[app-draw_450ms_ease-out_forwards] motion-reduce:animate-none motion-reduce:[stroke-dashoffset:0]"
8
- }, _ = ["d"], v = /* @__PURE__ */ l({
9
- __name: "DrawnCheck",
10
- props: {
11
- size: { default: 16 },
12
- circle: { type: Boolean, default: !1 }
13
- },
14
- setup(a) {
15
- const e = a;
16
- return (o, n) => (t(), r("svg", {
17
- width: e.size,
18
- height: e.size,
19
- viewBox: "0 0 24 24",
20
- fill: "none",
21
- stroke: "currentColor",
22
- "stroke-width": e.circle ? 2 : 2.8,
23
- "stroke-linecap": "round",
24
- "stroke-linejoin": "round",
25
- "aria-hidden": "true",
26
- class: "shrink-0"
27
- }, [
28
- e.circle ? (t(), r("circle", m)) : c("", !0),
29
- d("path", {
30
- d: e.circle ? "M7.5 12.5l3 3 6-6.5" : "M5 12.5l4.5 4.5L19 7.5",
31
- class: s(["[stroke-dasharray:24] [stroke-dashoffset:24] motion-reduce:animate-none motion-reduce:[stroke-dashoffset:0]", e.circle ? "animate-[app-draw_300ms_300ms_ease-out_forwards]" : "animate-[app-draw_400ms_50ms_ease-out_forwards]"])
32
- }, null, 10, _)
33
- ], 8, h));
34
- }
35
- }), f = ["aria-label", "aria-valuenow"], y = /* @__PURE__ */ l({
36
- __name: "ProgressTrack",
37
- props: {
38
- value: {},
39
- done: { type: Boolean, default: !1 },
40
- durationMs: { default: 1e3 },
41
- hairline: { type: Boolean, default: !1 },
42
- label: { default: void 0 }
43
- },
44
- setup(a) {
45
- const e = a, o = i(() => e.done ? 100 : Math.min(Math.max(e.value, 0), 95)), n = i(() => `${e.done ? 350 : e.durationMs}ms`);
46
- return (p, w) => (t(), r("div", {
47
- class: s(["w-full overflow-hidden", e.hairline ? "h-0.5" : "h-1.5 rounded-full bg-tint-soft"]),
48
- role: "progressbar",
49
- "aria-label": e.label,
50
- "aria-valuemin": "0",
51
- "aria-valuemax": "100",
52
- "aria-valuenow": Math.round(o.value)
53
- }, [
54
- d("div", {
55
- class: s(["h-full bg-control-on ease-motion-standard motion-reduce:transition-none", e.hairline ? "" : "rounded-full"]),
56
- style: u({ width: `${o.value}%`, transitionProperty: "width", transitionDuration: n.value })
57
- }, null, 6)
58
- ], 10, f));
59
- }
60
- });
61
- export {
62
- v as _,
63
- y as a
64
- };
@@ -1,23 +0,0 @@
1
- import { defineComponent as c, openBlock as e, createElementBlock as o, createElementVNode as n, toDisplayString as s, createCommentVNode as r, renderSlot as a } from "vue";
2
- const l = { class: "flex flex-wrap items-end gap-3 px-row-inset" }, d = { class: "flex min-w-0 grow basis-56 flex-col gap-1" }, m = { class: "text-title font-semibold tracking-tight text-content-strong" }, p = {
3
- key: 0,
4
- class: "max-w-readable text-subheadline text-content-muted"
5
- }, f = /* @__PURE__ */ c({
6
- __name: "SectionIntro",
7
- props: {
8
- title: {},
9
- description: {}
10
- },
11
- setup(t) {
12
- return (i, x) => (e(), o("div", l, [
13
- n("div", d, [
14
- n("h2", m, s(t.title), 1),
15
- t.description ? (e(), o("p", p, s(t.description), 1)) : r("", !0)
16
- ]),
17
- a(i.$slots, "actions")
18
- ]));
19
- }
20
- });
21
- export {
22
- f as _
23
- };
@@ -1,133 +0,0 @@
1
- import { defineComponent as v, openBlock as t, createBlock as c, unref as n, withCtx as o, createCommentVNode as s, createElementBlock as d, Fragment as w, renderList as C, createSlots as $, createElementVNode as l, toDisplayString as r, createTextVNode as m, createVNode as f } from "vue";
2
- import { useI18n as E } from "vue-i18n";
3
- import { _ as y } from "./Button.vue_vue_type_script_setup_true_lang-Dp7OB-eF.js";
4
- import { _ as B } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js";
5
- import { u as N } from "./format-D8KUBmbS.js";
6
- import { _ as V } from "./FormGroup.vue_vue_type_script_setup_true_lang-B37dixvJ.js";
7
- import { g as h } from "./options-QuOkMKVZ.js";
8
- import { _ as k } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
9
- const L = {
10
- class: "flex flex-col gap-y-0.5 md:flex-row md:flex-wrap md:items-center md:gap-x-1.5",
11
- "data-session-facts": ""
12
- }, S = {
13
- key: 0,
14
- class: "font-mono"
15
- }, T = {
16
- key: 1,
17
- "aria-hidden": "true",
18
- class: "hidden md:inline"
19
- }, z = {
20
- key: 0,
21
- class: "mt-1 flex flex-wrap gap-1"
22
- }, K = /* @__PURE__ */ v({
23
- __name: "SessionList",
24
- props: {
25
- sessions: {},
26
- canEnd: { type: Boolean },
27
- header: {},
28
- footer: {}
29
- },
30
- emits: ["end"],
31
- setup(x, { emit: b }) {
32
- const i = x, p = b, { t: a } = E(), u = N();
33
- return (F, _) => (t(), c(n(V), {
34
- header: i.header,
35
- footer: i.footer
36
- }, {
37
- default: o(() => [
38
- i.sessions.length === 0 ? (t(), c(n(h), {
39
- key: 0,
40
- layout: "setting",
41
- label: n(a)("core.account.sessions.empty")
42
- }, null, 8, ["label"])) : s("", !0),
43
- (t(!0), d(w, null, C(i.sessions, (e) => (t(), c(n(h), {
44
- key: e.id,
45
- layout: "setting",
46
- label: e.device || n(a)("core.account.sessions.unknown_device"),
47
- "data-session": e.id
48
- }, $({
49
- leading: o(() => [
50
- f(n(B), {
51
- tone: "anchor",
52
- icon: "deviceLine"
53
- })
54
- ]),
55
- sub: o(() => [
56
- l("span", L, [
57
- e.ip ? (t(), d("span", S, r(e.ip), 1)) : s("", !0),
58
- e.ip ? (t(), d("span", T, "·")) : s("", !0),
59
- l("span", null, r(n(a)("core.account.sessions.last_active", { when: n(u).dateTime(e.last_used_at) })), 1),
60
- _[0] || (_[0] = l("span", {
61
- "aria-hidden": "true",
62
- class: "hidden md:inline"
63
- }, "·", -1)),
64
- l("span", null, r(n(a)("core.account.sessions.expires", { when: n(u).dateTime(e.expires_at) })), 1)
65
- ]),
66
- e.current || e.opened_by ? (t(), d("span", z, [
67
- e.current ? (t(), c(n(k), {
68
- key: 0,
69
- tone: "positive",
70
- dot: "",
71
- "data-session-current": ""
72
- }, {
73
- default: o(() => [
74
- m(r(n(a)("core.account.sessions.this_device")), 1)
75
- ]),
76
- _: 1
77
- })) : s("", !0),
78
- e.opened_by ? (t(), c(n(k), {
79
- key: 1,
80
- tone: "warning",
81
- "data-session-opened-by": ""
82
- }, {
83
- default: o(() => [
84
- m(r(e.opened_by.name ? n(a)("core.account.sessions.opened_by", { name: e.opened_by.name }) : n(a)("core.account.sessions.opened_by_other")), 1)
85
- ]),
86
- _: 2
87
- }, 1024)) : s("", !0)
88
- ])) : s("", !0),
89
- i.canEnd && !e.current ? (t(), c(n(y), {
90
- key: 1,
91
- prominence: "plain",
92
- tone: "critical",
93
- size: "sm",
94
- class: "mt-1 -ml-2 md:hidden",
95
- "data-end-session-inline": e.id,
96
- onClick: (g) => p("end", e)
97
- }, {
98
- default: o(() => [
99
- m(r(n(a)("core.account.sessions.end")), 1)
100
- ]),
101
- _: 1
102
- }, 8, ["data-end-session-inline", "onClick"])) : s("", !0)
103
- ]),
104
- _: 2
105
- }, [
106
- i.canEnd && !e.current ? {
107
- name: "trailing",
108
- fn: o(() => [
109
- f(n(y), {
110
- prominence: "plain",
111
- tone: "critical",
112
- size: "sm",
113
- class: "hidden md:inline-flex",
114
- "data-end-session": e.id,
115
- onClick: (g) => p("end", e)
116
- }, {
117
- default: o(() => [
118
- m(r(n(a)("core.account.sessions.end")), 1)
119
- ]),
120
- _: 1
121
- }, 8, ["data-end-session", "onClick"])
122
- ]),
123
- key: "0"
124
- } : void 0
125
- ]), 1032, ["label", "data-session"]))), 128))
126
- ]),
127
- _: 1
128
- }, 8, ["header", "footer"]));
129
- }
130
- });
131
- export {
132
- K as _
133
- };
@@ -1,121 +0,0 @@
1
- import { defineComponent as y, computed as k, openBlock as _, createElementBlock as b, createVNode as r, unref as t, withCtx as l, createElementVNode as u, toDisplayString as d, createTextVNode as $, ref as v, watch as w, createBlock as I, createCommentVNode as S } from "vue";
2
- import { useI18n as h } from "vue-i18n";
3
- import { P as V, i as N } from "./index-CdtofdcJ.js";
4
- import { u as B } from "./platform-BQOX_Ntw.js";
5
- import { b as E } from "./routeResource-DlTsGTg_.js";
6
- import { _ as R } from "./AsyncSection.vue_vue_type_script_setup_true_lang-BdeOKqz_.js";
7
- import { u as C } from "./useLoad-M7V-AVwR.js";
8
- import { _ as P } from "./PageBar.vue_vue_type_script_setup_true_lang-qI94fjJv.js";
9
- import { _ as L } from "./SectionIntro.vue_vue_type_script_setup_true_lang-CZtPrmXD.js";
10
- import { _ as T } from "./DataTable.vue_vue_type_script_setup_true_lang-8kBsNRuq.js";
11
- import { _ as U } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
12
- import { d as q, s as D, a as G } from "./signInEvents-DWShrJox.js";
13
- import { _ as K } from "./ViewTabs.vue_vue_type_script_setup_true_lang-BjdDXE3T.js";
14
- const O = {
15
- class: "overflow-hidden rounded-group bg-surface-cell shadow-group",
16
- "data-signin-table": ""
17
- }, W = ["title"], j = { class: "font-mono text-footnote" }, z = {
18
- class: "px-4 py-8 text-center text-body text-content-muted",
19
- "data-signin-empty": ""
20
- }, A = /* @__PURE__ */ y({
21
- __name: "SignInTable",
22
- props: {
23
- rows: {},
24
- loading: { type: Boolean }
25
- },
26
- setup(f) {
27
- const m = f, { t: o } = h(), p = k(() => [
28
- { key: "created_at", label: o("core.account.signins.columns.time"), kind: "timestamp", width: 170, mobile: "meta" },
29
- { key: "event", label: o("core.account.signins.columns.event"), mobile: "primary" },
30
- { key: "device", label: o("core.account.signins.columns.device"), hideBelow: "md", width: 320, mobile: "hidden" },
31
- { key: "ip", label: o("core.account.signins.columns.ip"), hideBelow: "md", width: 140, mobile: "hidden" }
32
- ]), c = (n) => o(G(n.event, n.actor?.name || null), { name: n.actor?.name ?? "" });
33
- return (n, i) => (_(), b("div", O, [
34
- r(t(T), {
35
- rows: m.rows,
36
- columns: p.value,
37
- "row-key": (e) => e.id,
38
- loading: m.loading
39
- }, {
40
- "cell-event": l(({ item: e }) => [
41
- r(t(U), {
42
- tone: t(D)(e.event).tone,
43
- "data-event": e.event
44
- }, {
45
- default: l(() => [
46
- $(d(c(e)), 1)
47
- ]),
48
- _: 2
49
- }, 1032, ["tone", "data-event"])
50
- ]),
51
- "cell-device": l(({ item: e }) => [
52
- u("span", {
53
- class: "block truncate",
54
- title: e.device
55
- }, d(t(q)(e.device) || "—"), 9, W)
56
- ]),
57
- "cell-ip": l(({ item: e }) => [
58
- u("span", j, d(e.ip || "—"), 1)
59
- ]),
60
- empty: l(() => [
61
- u("p", z, d(t(o)("core.account.signins.empty")), 1)
62
- ]),
63
- _: 1
64
- }, 8, ["rows", "columns", "row-key", "loading"])
65
- ]));
66
- }
67
- }), F = {
68
- class: "flex min-w-0 flex-col gap-group-gap",
69
- "data-person-signins": ""
70
- }, H = { class: "px-row-inset text-footnote text-content-muted" }, le = /* @__PURE__ */ y({
71
- __name: "SignIns",
72
- setup(f) {
73
- const m = ["all", "failed"], { t: o } = h(), { http: p } = B(), c = E(V), n = v("all"), i = v(1), e = C(
74
- async ({ signal: g }) => {
75
- const s = c.id.value;
76
- return s === null ? null : (await p.request(N.usersSignins, { id: s, view: n.value, page: i.value, per_page: 20 }, { signal: g })).data;
77
- },
78
- { watch: () => c.id.value }
79
- );
80
- return w(n, () => {
81
- i.value = 1, e.reload();
82
- }), w(i, () => void e.reload()), (g, s) => (_(), b("div", F, [
83
- r(L, {
84
- title: t(o)("core.users.sections.signins"),
85
- description: t(o)("core.users.intro.signins", { name: t(c).data.value?.name ?? "" })
86
- }, null, 8, ["title", "description"]),
87
- r(K, {
88
- modelValue: n.value,
89
- "onUpdate:modelValue": s[0] || (s[0] = (a) => n.value = a),
90
- views: m,
91
- counts: t(e).data.value?.meta?.views,
92
- "label-of": (a) => t(o)(`core.account.signins.views.${a}`),
93
- label: t(o)("core.users.sections.signins")
94
- }, null, 8, ["modelValue", "counts", "label-of", "label"]),
95
- r(t(R), {
96
- state: t(e).state.value,
97
- "skeleton-rows": 5,
98
- "is-empty": () => !1,
99
- onRetry: s[2] || (s[2] = (a) => t(e).reload())
100
- }, {
101
- default: l(({ value: a }) => [
102
- r(A, {
103
- rows: a?.data ?? []
104
- }, null, 8, ["rows"]),
105
- a ? (_(), I(P, {
106
- key: 0,
107
- page: i.value,
108
- "onUpdate:page": s[1] || (s[1] = (x) => i.value = x),
109
- "last-page": a.last_page,
110
- total: a.total
111
- }, null, 8, ["page", "last-page", "total"])) : S("", !0),
112
- u("p", H, d(t(o)("core.account.signins.footer_user")), 1)
113
- ]),
114
- _: 1
115
- }, 8, ["state"])
116
- ]));
117
- }
118
- });
119
- export {
120
- le as default
121
- };
@@ -1,267 +0,0 @@
1
- import { defineComponent as R, openBlock as q, createBlock as P, unref as e, withCtx as u, createVNode as t, mergeProps as L, provide as N, computed as g, useTemplateRef as $, createElementVNode as x, toDisplayString as C, createTextVNode as O } from "vue";
2
- import { useI18n as A } from "vue-i18n";
3
- import { a as F } from "./neighbors-DVfU9T0o.js";
4
- import { _ as H } from "./Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js";
5
- import { u as J } from "./describeError-B-NMa--w.js";
6
- import { i as w, P as Q, p as W, g as X, h as Y, j as Z, d as ee } from "./index-CdtofdcJ.js";
7
- import { _ as se } from "./AlertDialog.vue_vue_type_script_setup_true_lang-CrFhR9rJ.js";
8
- import { t as k } from "./toast-CqSDTWRX.js";
9
- import { _ as ae } from "./SectionNavigator.vue_vue_type_script_setup_true_lang-B5ove3rM.js";
10
- import { u as E } from "./platform-BQOX_Ntw.js";
11
- import { a as te } from "./routeResource-DlTsGTg_.js";
12
- import { a as oe } from "./ResourcePage.vue_vue_type_script_setup_true_lang-Cw8mGf_B.js";
13
- import { A as re } from "./access-DmAceEo5.js";
14
- import { _ as ne } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
15
- import { u as ie } from "./useLoad-M7V-AVwR.js";
16
- import { _ as V } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js";
17
- import { _ as z } from "./FormGroup.vue_vue_type_script_setup_true_lang-B37dixvJ.js";
18
- import { g as B } from "./options-QuOkMKVZ.js";
19
- import { u as K, _ as M } from "./useCommand-Dc8Lgs9h.js";
20
- import { u as U } from "./fieldMessages-B6GHgi40.js";
21
- import { u as ce, s as le } from "./status-BRA14qwX.js";
22
- import { _ as T } from "./TextField.vue_vue_type_script_setup_true_lang-BFVsqcBX.js";
23
- const ue = /* @__PURE__ */ R({
24
- __name: "DeactivateDialog",
25
- props: {
26
- id: {},
27
- name: {},
28
- sessionCount: {}
29
- },
30
- emits: ["done"],
31
- setup(h, { expose: a, emit: d }) {
32
- const c = h, v = d, { t: s } = A(), { http: n } = E(), l = K({
33
- ...U(),
34
- defaults: () => ({}),
35
- run: () => n.request(w.usersDeactivate, { id: c.id }),
36
- done: () => {
37
- k.success(s("core.users.deactivate.done", { name: c.name })), v("done");
38
- }
39
- });
40
- return a({ open: () => l.present() }), (f, o) => (q(), P(e(M), {
41
- command: e(l),
42
- title: e(s)("core.users.deactivate.title"),
43
- subtitle: c.name,
44
- "confirm-label": e(s)("core.users.actions.deactivate_short"),
45
- "busy-label": e(s)("core.users.deactivate.busy"),
46
- "done-label": e(s)("core.users.deactivate.done_label"),
47
- size: "md"
48
- }, {
49
- default: u(() => [
50
- t(e(z), { "data-deactivate-dialog": "" }, {
51
- default: u(() => [
52
- t(e(B), {
53
- layout: "setting",
54
- label: e(s)("core.users.deactivate.signs_out", { n: c.sessionCount ?? 0 }),
55
- sub: e(s)("core.users.deactivate.signs_out_sub")
56
- }, {
57
- leading: u(() => [
58
- t(e(V), {
59
- tone: "anchor",
60
- icon: "logoutBoxRLine"
61
- })
62
- ]),
63
- _: 1
64
- }, 8, ["label", "sub"]),
65
- t(e(B), {
66
- layout: "setting",
67
- label: e(s)("core.users.deactivate.cannot_sign_in"),
68
- sub: e(s)("core.users.deactivate.cannot_sign_in_sub")
69
- }, {
70
- leading: u(() => [
71
- t(e(V), {
72
- tone: "anchor",
73
- icon: "lockLine"
74
- })
75
- ]),
76
- _: 1
77
- }, 8, ["label", "sub"])
78
- ]),
79
- _: 1
80
- })
81
- ]),
82
- _: 1
83
- }, 8, ["command", "title", "subtitle", "confirm-label", "busy-label", "done-label"]));
84
- }
85
- }), de = /* @__PURE__ */ R({
86
- __name: "SetPasswordDialog",
87
- props: {
88
- id: {},
89
- name: {}
90
- },
91
- emits: ["saved"],
92
- setup(h, { expose: a, emit: d }) {
93
- const c = h, v = d, { t: s } = A(), { http: n } = E(), l = {
94
- safeParse(o) {
95
- const { password: m, repeat: _ } = o, b = [
96
- ...m === "" ? [{ path: ["password"], message: s("core.account.validation.required") }] : [],
97
- ...m !== "" && _ !== m ? [{ path: ["repeat"], message: s(_ === "" ? "core.account.validation.required" : "core.account.validation.mismatch") }] : []
98
- ];
99
- return b.length > 0 ? { success: !1, error: { issues: b } } : { success: !0, data: { password: m } };
100
- }
101
- }, f = K({
102
- ...U(),
103
- defaults: () => ({ password: "", repeat: "" }),
104
- validator: l,
105
- run: (o) => n.request(w.usersSetPassword, { id: c.id, password: o.password }),
106
- done: () => {
107
- k.success(s("core.users.password.done", { name: c.name })), v("saved");
108
- }
109
- });
110
- return a({ open: () => f.present() }), (o, m) => (q(), P(e(M), {
111
- command: e(f),
112
- title: e(s)("core.users.password.title"),
113
- subtitle: c.name,
114
- "confirm-label": e(s)("core.users.password.action")
115
- }, {
116
- default: u(() => [
117
- t(e(z), {
118
- footer: e(s)("core.users.password.footer"),
119
- "data-set-password-dialog": ""
120
- }, {
121
- default: u(() => [
122
- t(e(T), L(e(f).form.bind("password"), {
123
- label: e(s)("core.users.fields.password"),
124
- type: "password",
125
- required: "",
126
- autocomplete: "new-password"
127
- }), null, 16, ["label"]),
128
- t(e(T), L(e(f).form.bind("repeat"), {
129
- label: e(s)("core.users.fields.password_repeat"),
130
- type: "password",
131
- required: "",
132
- autocomplete: "new-password"
133
- }), null, 16, ["label"])
134
- ]),
135
- _: 1
136
- }, 8, ["footer"])
137
- ]),
138
- _: 1
139
- }, 8, ["command", "title", "subtitle", "confirm-label"]));
140
- }
141
- }), me = {
142
- class: "flex items-center gap-3 px-1.5",
143
- "data-person-identity": ""
144
- }, pe = { class: "flex min-w-0 flex-col items-start gap-0.5" }, fe = { class: "max-w-full truncate text-headline font-semibold text-content-strong" }, ve = { class: "max-w-full truncate text-footnote text-content-muted" }, ze = /* @__PURE__ */ R({
145
- __name: "UserRecord",
146
- setup(h) {
147
- const { t: a } = A(), { http: d, access: c, session: v } = E(), s = J(), n = te({
148
- key: Q,
149
- param: "id",
150
- load: async (r, { signal: p }) => (await d.request(w.usersShow, { id: r }, { signal: p })).data
151
- }), l = ie(
152
- async ({ signal: r }) => {
153
- const p = n.data.value?.id;
154
- return p === void 0 ? { sessions: [] } : (await d.request(w.usersSessions, { id: p }, { signal: r })).data;
155
- },
156
- { watch: () => n.data.value?.id }
157
- );
158
- N(W, l);
159
- const f = F(ce(d), { current: () => n.id.value, list: X.index, param: "id", backLabel: () => a("core.users.title") }), o = g(() => n.data.value), m = g(() => o.value !== null && v.state.value.status === "authenticated" && v.state.value.user.id === o.value.id), _ = $("deactivateDialog"), b = $("passwordDialog"), D = $("activateDialog");
160
- async function y() {
161
- await Promise.all([n.reload(), l.reload()]);
162
- }
163
- async function j() {
164
- const r = n.id.value;
165
- if (r !== null) {
166
- try {
167
- await d.request(w.usersActivate, { id: r }), k.success(a("core.users.activate.done", { name: o.value?.name ?? "" }));
168
- } catch (p) {
169
- ee(p) || k.error(s(p, { fallback: a("core.users.activate.failed") }));
170
- }
171
- await y();
172
- }
173
- }
174
- const S = g(() => {
175
- const r = c.can(Y);
176
- return { manage: r, deactivate: r && !!o.value?.active && !m.value, activate: r && o.value !== null && !o.value.active, endSessions: r && !m.value };
177
- });
178
- N(Z, {
179
- get can() {
180
- return S.value;
181
- },
182
- deactivate: () => _.value?.open(),
183
- activate: () => D.value?.present(),
184
- setPassword: () => b.value?.open(),
185
- refresh: y
186
- });
187
- const G = g(() => [
188
- ...S.value.deactivate ? [{ id: "deactivate", label: a("core.users.actions.deactivate"), icon: "lockLine", placement: "overflow", tone: "critical", onClick: () => _.value?.open() }] : [],
189
- ...S.value.activate ? [{ id: "activate", label: a("core.users.actions.activate"), icon: "checkCircle", placement: "overflow", onClick: () => D.value?.present() }] : []
190
- ]), I = g(() => ({
191
- ...l.data.value ? { "users.record.sessions": l.data.value.sessions.length } : {},
192
- ...o.value?.status === "locked" ? { "users.record.signin": a("core.users.status.locked") } : {}
193
- }));
194
- return (r, p) => (q(), P(e(oe), {
195
- resource: e(n),
196
- title: o.value?.name ?? e(a)("core.users.record"),
197
- list: e(f).context,
198
- actions: G.value
199
- }, {
200
- default: u(({ record: i }) => [
201
- t(e(ae), {
202
- label: e(a)("core.users.sections_label"),
203
- desktop: "sidebar",
204
- compact: "rows",
205
- "back-label": i.name,
206
- counts: I.value
207
- }, {
208
- summary: u(() => [
209
- x("div", me, [
210
- t(e(H), {
211
- name: i.name,
212
- size: "lg",
213
- tone: "anchor"
214
- }, null, 8, ["name"]),
215
- x("div", pe, [
216
- x("span", fe, C(i.name), 1),
217
- x("span", ve, C(i.email), 1),
218
- t(e(ne), {
219
- tone: e(le)(i.status),
220
- dot: "",
221
- "data-person-status": ""
222
- }, {
223
- default: u(() => [
224
- O(C(e(a)(`core.users.status.${i.status}`)), 1)
225
- ]),
226
- _: 2
227
- }, 1032, ["tone"])
228
- ])
229
- ])
230
- ]),
231
- default: u(() => [
232
- t(e(re))
233
- ]),
234
- _: 2
235
- }, 1032, ["label", "back-label", "counts"]),
236
- t(ue, {
237
- ref_key: "deactivateDialog",
238
- ref: _,
239
- id: i.id,
240
- name: i.name,
241
- "session-count": e(l).data.value?.sessions.length ?? null,
242
- onDone: y
243
- }, null, 8, ["id", "name", "session-count"]),
244
- t(de, {
245
- ref_key: "passwordDialog",
246
- ref: b,
247
- id: i.id,
248
- name: i.name,
249
- onSaved: y
250
- }, null, 8, ["id", "name"]),
251
- t(e(se), {
252
- ref_key: "activateDialog",
253
- ref: D,
254
- icon: "checkCircle",
255
- title: e(a)("core.users.activate.title"),
256
- message: e(a)("core.users.activate.body", { name: i.name }),
257
- "confirm-label": e(a)("core.users.actions.activate"),
258
- action: j
259
- }, null, 8, ["title", "message", "confirm-label"])
260
- ]),
261
- _: 1
262
- }, 8, ["resource", "title", "list", "actions"]));
263
- }
264
- });
265
- export {
266
- ze as default
267
- };