@wssto2/vue-core 0.4.28 → 0.5.1

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 (145) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/dist/{AccessGate.vue_vue_type_script_setup_true_lang-J5HoyGNJ.js → AccessGate.vue_vue_type_script_setup_true_lang-DZ9GcLC1.js} +1 -1
  3. package/dist/{ActionRow.vue_vue_type_script_setup_true_lang-QPvYudWc.js → ActionRow.vue_vue_type_script_setup_true_lang-BCgKzUvG.js} +1 -1
  4. package/dist/{Activity-BWkVX1Nx.js → Activity-dpY2kIs2.js} +7 -7
  5. package/dist/{Changes-MG77TDwz.js → Changes-CL8F1w8q.js} +6 -6
  6. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-Bnpv9TEj.js → CollectionPage.vue_vue_type_script_setup_true_lang-l-e-6WeS.js} +4 -4
  7. package/dist/{DateField.vue_vue_type_script_setup_true_lang-CpuH0WTl.js → DateField.vue_vue_type_script_setup_true_lang-DRuWzSaX.js} +1 -1
  8. package/dist/{DeadLetters-CkDE71B3.js → DeadLetters-BZLyL5lR.js} +7 -7
  9. package/dist/{FormErrors.vue_vue_type_script_setup_true_lang-DGOSc-PS.js → FormErrors.vue_vue_type_script_setup_true_lang-D7edzNTL.js} +2 -2
  10. package/dist/{FormGroup.vue_vue_type_script_setup_true_lang-DSwSRsA5.js → FormGroup.vue_vue_type_script_setup_true_lang-BPchlRCl.js} +2 -2
  11. package/dist/{FormView.vue_vue_type_script_setup_true_lang-BUrYkjmF.js → FormView.vue_vue_type_script_setup_true_lang-CPSYV7iQ.js} +2 -2
  12. package/dist/{General-UTBVEXbN.js → General-mrVzi-5R.js} +10 -10
  13. package/dist/MenuButton.vue_vue_type_script_setup_true_lang-AGbN9r5q.js +28 -0
  14. package/dist/{NewRolePage-B7DwFWPk.js → NewRolePage-B2DItwvf.js} +3 -3
  15. package/dist/{NumberField.vue_vue_type_script_setup_true_lang-DaE5BLm4.js → NumberField.vue_vue_type_script_setup_true_lang-ButMV_sf.js} +1 -1
  16. package/dist/ProfilePage-EiTIYzZ5.js +764 -0
  17. package/dist/RoleEditor.vue_vue_type_script_setup_true_lang-BqqilJGF.js +325 -0
  18. package/dist/RolePage-jMHAt9y8.js +314 -0
  19. package/dist/{RolesPage-B5RwSZ89.js → RolesPage-B9GaVQBx.js} +6 -6
  20. package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-Dmv6TpCi.js → SectionNavigator.vue_vue_type_script_setup_true_lang-Ci04hApd.js} +1 -1
  21. package/dist/{SegmentedField.vue_vue_type_script_setup_true_lang-Dg-_ZjgR.js → SegmentedField.vue_vue_type_script_setup_true_lang-BwyMvkis.js} +1 -1
  22. package/dist/{SelectField.vue_vue_type_script_setup_true_lang-C3FbRQW7.js → SelectField.vue_vue_type_script_setup_true_lang-BzQC1qDQ.js} +11 -12
  23. package/dist/SessionList.vue_vue_type_script_setup_true_lang-DhoTd5D7.js +133 -0
  24. package/dist/{Sessions-DWj2OGo0.js → Sessions-CHLokZ9e.js} +5 -5
  25. package/dist/SettingsPage-CudoKdXm.js +632 -0
  26. package/dist/{SignIn-COThB9XN.js → SignIn-ypRvdmjg.js} +7 -7
  27. package/dist/{SignInPage-CdzgSvRm.js → SignInPage-CbPeKlAo.js} +4 -4
  28. package/dist/SignIns-BApzbGq-.js +121 -0
  29. package/dist/{SwitchField.vue_vue_type_script_setup_true_lang-ALvJisiP.js → SwitchField.vue_vue_type_script_setup_true_lang-D_-HACqT.js} +1 -1
  30. package/dist/{TextField.vue_vue_type_script_setup_true_lang-CP2WeU36.js → TextField.vue_vue_type_script_setup_true_lang-DTAQPbW0.js} +2 -2
  31. package/dist/{TextareaField.vue_vue_type_script_setup_true_lang-BJ4__cvJ.js → TextareaField.vue_vue_type_script_setup_true_lang-DsjK2C9T.js} +1 -1
  32. package/dist/{TimeField.vue_vue_type_script_setup_true_lang-DBxKAWRo.js → TimeField.vue_vue_type_script_setup_true_lang-Cz7KhUqt.js} +1 -1
  33. package/dist/{UserRecord-BWMnXz4q.js → UserRecord-BCTaBajE.js} +13 -13
  34. package/dist/{UsersList-Chq8yM5C.js → UsersList-CqSK3cQL.js} +9 -9
  35. package/dist/access/RoleCompareDialog.vue.d.ts +1 -1
  36. package/dist/access/RoleEditor.vue.d.ts +2 -0
  37. package/dist/access/constraints.d.ts +28 -0
  38. package/dist/access/context.d.ts +5 -0
  39. package/dist/access/feature.d.ts +17 -0
  40. package/dist/access/index.d.ts +3 -1
  41. package/dist/access/index.js +11 -9
  42. package/dist/access/refusals.d.ts +20 -2
  43. package/dist/app/index.js +118 -116
  44. package/dist/app/keepAlive.d.ts +4 -8
  45. package/dist/client/index.js +19 -11
  46. package/dist/{client-k9euDWF4.js → client-BHPFfBj3.js} +20 -20
  47. package/dist/collection/index.js +3 -3
  48. package/dist/content/index.js +66 -37
  49. package/dist/{contributions-BVBZP5Jb.js → contributions-fx5q5n1u.js} +1 -1
  50. package/dist/{describeError-B-NMa--w.js → describeError-BqGAUZgX.js} +1 -1
  51. package/dist/{error-CD7x0Jrz.js → error-Bb_dr_Ay.js} +2 -2
  52. package/dist/{fieldMessages-6HVzSDqG.js → fieldMessages-DTXpWnBd.js} +7 -7
  53. package/dist/form/index.js +1235 -1412
  54. package/dist/{guards-BJZjc3FZ.js → guards-D4mXf_2X.js} +1 -1
  55. package/dist/{http-BFfkA7gN.js → http-CdQowFlW.js} +1 -1
  56. package/dist/i18n/index.d.ts +2 -2
  57. package/dist/i18n/index.js +30 -30
  58. package/dist/identity/index.d.ts +3 -1
  59. package/dist/identity/index.js +7 -6
  60. package/dist/identity/profile/DetailsFields.vue.d.ts +8 -0
  61. package/dist/identity/profile/{DetailsPanel.vue.d.ts → DetailsGroup.vue.d.ts} +4 -1
  62. package/dist/identity/profile/{EmailPanel.vue.d.ts → EmailGroup.vue.d.ts} +1 -1
  63. package/dist/identity/profile/SignInsGroup.vue.d.ts +2 -0
  64. package/dist/identity/profile/profileSections.d.ts +37 -0
  65. package/dist/identity/session.d.ts +10 -7
  66. package/dist/identity/shared/SignInList.vue.d.ts +22 -0
  67. package/dist/identity/shared/deviceLabel.d.ts +7 -0
  68. package/dist/identity/useReturnToOwnAccount.d.ts +10 -0
  69. package/dist/identity/users/context.d.ts +3 -0
  70. package/dist/identity/users/feature.d.ts +3 -0
  71. package/dist/index-BTRv8mcf.js +630 -0
  72. package/dist/index-VPzJJN6Z.js +745 -0
  73. package/dist/index-auJqVMWC.js +478 -0
  74. package/dist/index.d.ts +1 -1
  75. package/dist/index.js +1 -1
  76. package/dist/keepAlive-z3IRFkQq.js +46 -0
  77. package/dist/modules/notification/entities.d.ts +19 -0
  78. package/dist/modules/notification/routes.d.ts +25 -1
  79. package/dist/modules/notification/schemas.d.ts +24 -0
  80. package/dist/{navigation-DpcDF0rX.js → navigation-Bc5EQ_Si.js} +1 -1
  81. package/dist/{neighbors-RVQ4O3Qv.js → neighbors-Bv6vnWlW.js} +22 -22
  82. package/dist/notifications/context.d.ts +24 -1
  83. package/dist/notifications/feature.d.ts +10 -1
  84. package/dist/notifications/index.d.ts +1 -1
  85. package/dist/notifications/index.js +1 -1
  86. package/dist/notifications/push/DevicesSection.vue.d.ts +12 -0
  87. package/dist/notifications/push/ThisDeviceSection.vue.d.ts +15 -0
  88. package/dist/notifications/push/browser.d.ts +40 -0
  89. package/dist/notifications/push/devices.d.ts +15 -0
  90. package/dist/notifications/push/thisDevice.d.ts +28 -0
  91. package/dist/notifications/settings/ChannelsSection.vue.d.ts +16 -0
  92. package/dist/notifications/settings/{QuietHoursPanel.vue.d.ts → QuietHoursSection.vue.d.ts} +3 -1
  93. package/dist/notifications/settings/SettingsBody.vue.d.ts +17 -0
  94. package/dist/notifications/settings/settings.d.ts +4 -3
  95. package/dist/notifications/settings/state.d.ts +4 -2
  96. package/dist/options-g8RwEhBk.js +366 -0
  97. package/dist/overlay/index.js +37 -59
  98. package/dist/page/index.js +1 -1
  99. package/dist/phone/index.js +10 -11
  100. package/dist/platform/index.js +3 -3
  101. package/dist/platform/platform.d.ts +7 -2
  102. package/dist/platform/session.d.ts +17 -0
  103. package/dist/platform-Dx6STiwY.js +283 -0
  104. package/dist/push-worker/index.d.ts +91 -0
  105. package/dist/push-worker/index.js +54 -0
  106. package/dist/resource/index.js +1 -1
  107. package/dist/{routeResource-DlTsGTg_.js → routeResource-CcYA75T2.js} +2 -2
  108. package/dist/router/index.js +3 -3
  109. package/dist/{sections-CeZl-Jxg.js → sections-B0HxIOC2.js} +1 -1
  110. package/dist/shell/index.js +3 -3
  111. package/dist/signInEvents-DWShrJox.js +30 -0
  112. package/dist/state/index.js +1 -1
  113. package/dist/{status-dGvfh1TP.js → status-BUFELJz2.js} +2 -2
  114. package/dist/styles.css +1 -1
  115. package/dist/{suggestions-DHJFKB26.js → suggestions-CfFTHi8y.js} +2 -2
  116. package/dist/testing/index.js +1 -1
  117. package/dist/{useCommand-Cj-APj-P.js → useCommand-CtqheKUv.js} +2 -2
  118. package/dist/useGroupSheet-ATvc0IiM.js +278 -0
  119. package/dist/{useLoad-M7V-AVwR.js → useLoad-W4tfxmm5.js} +1 -1
  120. package/dist/{useResourceForm-tGYTfKhH.js → useResourceForm-CJfl8rj_.js} +1 -1
  121. package/package.json +6 -2
  122. package/dist/KeyValue.vue_vue_type_script_setup_true_lang-wcZcvnow.js +0 -35
  123. package/dist/OtpInput.vue_vue_type_script_setup_true_lang-gp4FfWAH.js +0 -95
  124. package/dist/PanelActions.vue_vue_type_script_setup_true_lang-E9VdIGkf.js +0 -46
  125. package/dist/ProfilePage-C8VhiKIh.js +0 -654
  126. package/dist/RoleEditor.vue_vue_type_script_setup_true_lang-DRHmjA9w.js +0 -300
  127. package/dist/RolePage-ODFu68Ce.js +0 -315
  128. package/dist/SessionList.vue_vue_type_script_setup_true_lang-D5qm77Zo.js +0 -111
  129. package/dist/SettingsPage-C3fPSmi7.js +0 -255
  130. package/dist/SignInTable.vue_vue_type_script_setup_true_lang-Bs0yTi2E.js +0 -79
  131. package/dist/SignIns-cztICmqt.js +0 -66
  132. package/dist/control-B4SdblL6.js +0 -350
  133. package/dist/identity/profile/PanelActions.vue.d.ts +0 -17
  134. package/dist/index-BhtJR4c_.js +0 -459
  135. package/dist/index-C3E6DcO0.js +0 -706
  136. package/dist/index-sTBBHqNG.js +0 -504
  137. package/dist/keepAlive-CDvMQlcJ.js +0 -49
  138. package/dist/notifications/settings/EmailPanel.vue.d.ts +0 -14
  139. package/dist/options-Ba_0uLWN.js +0 -18
  140. package/dist/platform-PZpUkkMS.js +0 -268
  141. package/dist/route-goWMxDUN.js +0 -13
  142. package/dist/transport-BnP7WC0Y.js +0 -4
  143. /package/dist/identity/{profile/PasswordPanel.vue.d.ts → ReturnMenuItem.vue.d.ts} +0 -0
  144. /package/dist/identity/profile/{SessionsPanel.vue.d.ts → PasswordGroup.vue.d.ts} +0 -0
  145. /package/dist/identity/profile/{SignInsPanel.vue.d.ts → SessionsGroup.vue.d.ts} +0 -0
@@ -1,111 +0,0 @@
1
- import { defineComponent as g, openBlock as n, createBlock as i, unref as t, withCtx as a, createCommentVNode as r, createElementBlock as d, Fragment as x, renderList as v, createSlots as w, createElementVNode as l, toDisplayString as s, createTextVNode as m, createVNode as u } from "vue";
2
- import { useI18n as $ } from "vue-i18n";
3
- import { _ as C } from "./Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js";
4
- import { _ as B } from "./IconTile.vue_vue_type_script_setup_true_lang-_FXvaj93.js";
5
- import { u as E } from "./format-D8X4zsx6.js";
6
- import { _ as N } from "./FormGroup.vue_vue_type_script_setup_true_lang-DSwSRsA5.js";
7
- import { e as f } from "./control-B4SdblL6.js";
8
- import { _ as y } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
9
- const V = { class: "flex flex-wrap items-center gap-x-1.5 gap-y-0.5" }, L = {
10
- key: 0,
11
- class: "font-mono"
12
- }, S = {
13
- key: 1,
14
- "aria-hidden": "true"
15
- }, T = {
16
- key: 0,
17
- class: "mt-1 flex flex-wrap gap-1"
18
- }, K = /* @__PURE__ */ g({
19
- __name: "SessionList",
20
- props: {
21
- sessions: {},
22
- canEnd: { type: Boolean },
23
- header: {},
24
- footer: {}
25
- },
26
- emits: ["end"],
27
- setup(h, { emit: k }) {
28
- const c = h, b = k, { t: o } = $(), p = E();
29
- return (F, _) => (n(), i(t(N), {
30
- header: c.header,
31
- footer: c.footer
32
- }, {
33
- default: a(() => [
34
- c.sessions.length === 0 ? (n(), i(t(f), {
35
- key: 0,
36
- layout: "setting",
37
- label: t(o)("core.account.sessions.empty")
38
- }, null, 8, ["label"])) : r("", !0),
39
- (n(!0), d(x, null, v(c.sessions, (e) => (n(), i(t(f), {
40
- key: e.id,
41
- layout: "setting",
42
- label: e.device || t(o)("core.account.sessions.unknown_device"),
43
- "data-session": e.id
44
- }, w({
45
- leading: a(() => [
46
- u(t(B), {
47
- tone: "anchor",
48
- icon: "deviceLine"
49
- })
50
- ]),
51
- sub: a(() => [
52
- l("span", V, [
53
- e.ip ? (n(), d("span", L, s(e.ip), 1)) : r("", !0),
54
- e.ip ? (n(), d("span", S, "·")) : r("", !0),
55
- l("span", null, s(t(o)("core.account.sessions.last_active", { when: t(p).dateTime(e.last_used_at) })), 1),
56
- _[0] || (_[0] = l("span", { "aria-hidden": "true" }, "·", -1)),
57
- l("span", null, s(t(o)("core.account.sessions.expires", { when: t(p).dateTime(e.expires_at) })), 1)
58
- ]),
59
- e.current || e.opened_by ? (n(), d("span", T, [
60
- e.current ? (n(), i(t(y), {
61
- key: 0,
62
- tone: "positive",
63
- dot: "",
64
- "data-session-current": ""
65
- }, {
66
- default: a(() => [
67
- m(s(t(o)("core.account.sessions.this_device")), 1)
68
- ]),
69
- _: 1
70
- })) : r("", !0),
71
- e.opened_by ? (n(), i(t(y), {
72
- key: 1,
73
- tone: "warning",
74
- "data-session-opened-by": ""
75
- }, {
76
- default: a(() => [
77
- m(s(e.opened_by.name ? t(o)("core.account.sessions.opened_by", { name: e.opened_by.name }) : t(o)("core.account.sessions.opened_by_other")), 1)
78
- ]),
79
- _: 2
80
- }, 1024)) : r("", !0)
81
- ])) : r("", !0)
82
- ]),
83
- _: 2
84
- }, [
85
- c.canEnd && !e.current ? {
86
- name: "trailing",
87
- fn: a(() => [
88
- u(t(C), {
89
- prominence: "plain",
90
- tone: "critical",
91
- size: "sm",
92
- "data-end-session": e.id,
93
- onClick: (z) => b("end", e)
94
- }, {
95
- default: a(() => [
96
- m(s(t(o)("core.account.sessions.end")), 1)
97
- ]),
98
- _: 1
99
- }, 8, ["data-end-session", "onClick"])
100
- ]),
101
- key: "0"
102
- } : void 0
103
- ]), 1032, ["label", "data-session"]))), 128))
104
- ]),
105
- _: 1
106
- }, 8, ["header", "footer"]));
107
- }
108
- });
109
- export {
110
- K as _
111
- };
@@ -1,255 +0,0 @@
1
- import { defineComponent as w, openBlock as u, createBlock as b, unref as e, withCtx as p, createElementBlock as g, toDisplayString as y, Fragment as $, renderList as Q, createElementVNode as P, createVNode as d, createTextVNode as U, createCommentVNode as S, computed as V, mergeProps as h, ref as D } from "vue";
2
- import { useI18n as v } from "vue-i18n";
3
- import { useRouter as I } from "vue-router";
4
- import { a as j } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-GUTIXuNd.js";
5
- import { t as T } from "./toast-CqSDTWRX.js";
6
- import { u as N } from "./fieldMessages-6HVzSDqG.js";
7
- import { _ as A } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
8
- import { _ as O } from "./Panel.vue_vue_type_script_setup_true_lang-BA0u_DtS.js";
9
- import { _ as R } from "./FormGroup.vue_vue_type_script_setup_true_lang-DSwSRsA5.js";
10
- import { e as G } from "./control-B4SdblL6.js";
11
- import { _ as Z } from "./SwitchField.vue_vue_type_script_setup_true_lang-ALvJisiP.js";
12
- import { _ as J } from "./Icon.vue_vue_type_script_lang-D7oC-d-S.js";
13
- import { u as K } from "./FormErrors.vue_vue_type_script_setup_true_lang-DGOSc-PS.js";
14
- import { _ as W } from "./FormView.vue_vue_type_script_setup_true_lang-BUrYkjmF.js";
15
- import { _ as E } from "./TimeField.vue_vue_type_script_setup_true_lang-DBxKAWRo.js";
16
- import { a as k, n as X } from "./useTypedEntry-C7k7Dyl-.js";
17
- import { _ as Y } from "./PanelActions.vue_vue_type_script_setup_true_lang-E9VdIGkf.js";
18
- import { n as q } from "./index-sTBBHqNG.js";
19
- import { u as ee } from "./platform-PZpUkkMS.js";
20
- import { u as te } from "./useLoad-M7V-AVwR.js";
21
- function ne() {
22
- const { t: s, te: t } = v();
23
- return (n) => {
24
- const m = `notifications.categories.${n}`, a = `${m}.description`;
25
- return { label: t(`${m}.label`) ? s(`${m}.label`) : n, ...t(a) ? { description: s(a) } : {} };
26
- };
27
- }
28
- const ae = {
29
- key: 0,
30
- class: "text-subheadline text-content-muted",
31
- "data-email-unavailable": ""
32
- }, oe = { class: "flex items-center gap-1.5 text-body text-content-muted" }, ie = ["data-category"], se = {
33
- key: 2,
34
- class: "mt-3 text-footnote text-content-muted",
35
- "data-in-app": ""
36
- }, re = /* @__PURE__ */ w({
37
- __name: "EmailPanel",
38
- props: {
39
- preferences: {}
40
- },
41
- emits: ["change"],
42
- setup(s, { emit: t }) {
43
- const n = s, m = t, { t: a } = v(), r = ne();
44
- return (f, c) => (u(), b(e(O), {
45
- title: e(a)("core.notifications.settings.email.title"),
46
- icon: "notification3Line",
47
- "data-notification-email": ""
48
- }, {
49
- default: p(() => [
50
- n.preferences.email_available ? (u(), b(e(R), {
51
- key: 1,
52
- footer: e(a)("core.notifications.settings.email.in_app"),
53
- "data-in-app": ""
54
- }, {
55
- default: p(() => [
56
- (u(!0), g($, null, Q(n.preferences.categories, (o) => (u(), g($, {
57
- key: o.category
58
- }, [
59
- o.email.source === "enforced" ? (u(), b(e(G), {
60
- key: 0,
61
- "data-category": o.category,
62
- layout: "setting",
63
- label: e(r)(o.category).label,
64
- sub: e(a)("core.notifications.settings.email.locked")
65
- }, {
66
- default: p(() => [
67
- P("span", oe, [
68
- d(e(J), {
69
- name: "lockLine",
70
- size: 14
71
- }),
72
- U(y(o.email.enabled ? e(a)("core.form.yes") : e(a)("core.form.no")), 1)
73
- ])
74
- ]),
75
- _: 2
76
- }, 1032, ["data-category", "label", "sub"])) : (u(), g("div", {
77
- key: 1,
78
- "data-category": o.category
79
- }, [
80
- d(e(Z), {
81
- "model-value": o.email.enabled,
82
- label: e(r)(o.category).label,
83
- hint: e(r)(o.category).description,
84
- "onUpdate:modelValue": (i) => m("change", o.category, i)
85
- }, null, 8, ["model-value", "label", "hint", "onUpdate:modelValue"])
86
- ], 8, ie))
87
- ], 64))), 128))
88
- ]),
89
- _: 1
90
- }, 8, ["footer"])) : (u(), g("p", ae, y(e(a)("core.notifications.settings.email.unavailable")), 1)),
91
- n.preferences.email_available ? S("", !0) : (u(), g("p", se, y(e(a)("core.notifications.settings.email.in_app")), 1))
92
- ]),
93
- _: 1
94
- }, 8, ["title"]));
95
- }
96
- });
97
- function x(s, t) {
98
- return { ...s, categories: s.categories.map((n) => n.category === t.category ? t : n) };
99
- }
100
- function ce(s, t, n) {
101
- return x(s, { category: t, email: { enabled: n, source: "person" } });
102
- }
103
- function z(s) {
104
- return X(Math.floor(s / 60), s % 60) ?? "00:00";
105
- }
106
- function H(s) {
107
- const t = k(s);
108
- return t === null ? null : t.hour * 60 + t.minute;
109
- }
110
- const L = (s) => ({ enabled: s.enabled, start: z(s.start), end: z(s.end) }), le = /* @__PURE__ */ w({
111
- __name: "QuietHoursPanel",
112
- props: {
113
- quietHours: {},
114
- timeZone: {},
115
- submit: { type: Function }
116
- },
117
- setup(s) {
118
- const t = s, { t: n } = v(), m = {
119
- safeParse(c) {
120
- const o = c, i = H(o.start), l = H(o.end), _ = [
121
- ...i === null ? [{ path: ["start"], message: n("core.notifications.settings.quiet.required") }] : [],
122
- ...l === null ? [{ path: ["end"], message: n("core.notifications.settings.quiet.required") }] : [],
123
- ...i !== null && i === l ? [{ path: ["end"], message: n("core.notifications.settings.quiet.same") }] : []
124
- ];
125
- return _.length > 0 || i === null || l === null ? { success: !1, error: { issues: _ } } : { success: !0, data: { enabled: o.enabled, start: i, end: l } };
126
- }
127
- }, a = K({ ...N(), defaults: () => L(t.quietHours), validator: m }), r = V(() => {
128
- const { enabled: c, start: o, end: i } = a.values, l = k(o), _ = k(i);
129
- if (!c) return n("core.notifications.settings.quiet.summary_off");
130
- if (!l || !_ || l.hour === _.hour && l.minute === _.minute) return "";
131
- const C = ({ hour: F, minute: M }) => `${String(F).padStart(2, "0")}:${String(M).padStart(2, "0")}`, B = t.timeZone && t.timeZone !== "Local";
132
- return n(`core.notifications.settings.quiet.${B ? "summary_on" : "summary_on_no_zone"}`, { start: C(l), end: C(_), zone: t.timeZone });
133
- });
134
- async function f() {
135
- const c = await a.submit((o) => t.submit(o));
136
- c.status === "saved" && (a.hydrate(L(c.value)), T.success(n("core.notifications.settings.quiet.saved")));
137
- }
138
- return (c, o) => (u(), b(e(O), {
139
- title: e(n)("core.notifications.settings.quiet.title"),
140
- icon: "moonLine",
141
- "data-notification-quiet-hours": ""
142
- }, {
143
- footer: p(() => [
144
- d(Y, {
145
- label: e(n)("core.notifications.settings.quiet.submit"),
146
- processing: e(a).submitting.value,
147
- dirty: e(a).dirty.value,
148
- onSubmit: f,
149
- onCancel: o[0] || (o[0] = (i) => e(a).reset())
150
- }, null, 8, ["label", "processing", "dirty"])
151
- ]),
152
- default: p(() => [
153
- d(e(W), {
154
- form: e(a),
155
- onSubmit: f
156
- }, {
157
- default: p(() => [
158
- d(e(R), {
159
- footer: r.value,
160
- "data-quiet-summary": ""
161
- }, {
162
- default: p(() => [
163
- d(e(Z), h(e(a).bind("enabled"), {
164
- label: e(n)("core.notifications.settings.quiet.enabled")
165
- }), null, 16, ["label"]),
166
- e(a).values.enabled ? (u(), g($, { key: 0 }, [
167
- d(e(E), h(e(a).bind("start"), {
168
- label: e(n)("core.notifications.settings.quiet.start")
169
- }), null, 16, ["label"]),
170
- d(e(E), h(e(a).bind("end"), {
171
- label: e(n)("core.notifications.settings.quiet.end")
172
- }), null, 16, ["label"])
173
- ], 64)) : S("", !0)
174
- ]),
175
- _: 1
176
- }, 8, ["footer"])
177
- ]),
178
- _: 1
179
- }, 8, ["form"])
180
- ]),
181
- _: 1
182
- }, 8, ["title"]));
183
- }
184
- });
185
- function ue(s = ee().http) {
186
- const t = te(async ({ signal: r }) => (await s.request(q.preferences, void 0, { signal: r })).data), n = D([]);
187
- async function m(r, f) {
188
- const c = t.data.value, o = c?.categories.find((i) => i.category === r);
189
- if (!(!c || !o || n.value.includes(r))) {
190
- t.update(ce(c, r, f)), n.value = [...n.value, r];
191
- try {
192
- const { data: i } = await s.request(q.preferencesSetEmail, { category: r, email: f }), l = t.data.value;
193
- l && t.update(x(l, i));
194
- } catch (i) {
195
- const l = t.data.value;
196
- throw l && t.update(x(l, o)), i;
197
- } finally {
198
- n.value = n.value.filter((i) => i !== r);
199
- }
200
- }
201
- }
202
- async function a(r) {
203
- const { data: f } = await s.request(q.quietHours, r), c = t.data.value;
204
- return c && t.update({ ...c, quiet_hours: f }), f;
205
- }
206
- return { loaded: t, saving: n, setEmail: m, saveQuietHours: a };
207
- }
208
- const me = { class: "grid grid-cols-1 items-start gap-4 lg:grid-cols-2" }, Pe = /* @__PURE__ */ w({
209
- __name: "SettingsPage",
210
- setup(s) {
211
- const { t } = v(), n = I(), m = N(), a = ue(), r = V(() => n.hasRoute("profile") ? { label: t("core.profile.menu"), to: { name: "profile" } } : void 0);
212
- async function f(c, o) {
213
- try {
214
- await a.setEmail(c, o);
215
- } catch (i) {
216
- T.error(m.sentence(i, t("core.notifications.settings.email.save_failed")));
217
- }
218
- }
219
- return (c, o) => (u(), b(e(j), {
220
- title: e(t)("core.notifications.settings.title"),
221
- description: e(t)("core.notifications.settings.description"),
222
- back: r.value,
223
- width: "content"
224
- }, {
225
- default: p(() => [
226
- d(e(A), {
227
- state: e(a).loaded.state.value,
228
- "skeleton-rows": 6,
229
- "is-empty": () => !1,
230
- onRetry: o[0] || (o[0] = (i) => e(a).loaded.reload())
231
- }, {
232
- default: p(({ value: i }) => [
233
- P("div", me, [
234
- d(re, {
235
- preferences: i,
236
- onChange: f
237
- }, null, 8, ["preferences"]),
238
- i.email_available ? (u(), b(le, {
239
- key: 0,
240
- "quiet-hours": i.quiet_hours,
241
- "time-zone": i.time_zone,
242
- submit: e(a).saveQuietHours
243
- }, null, 8, ["quiet-hours", "time-zone", "submit"])) : S("", !0)
244
- ])
245
- ]),
246
- _: 1
247
- }, 8, ["state"])
248
- ]),
249
- _: 1
250
- }, 8, ["title", "description", "back"]));
251
- }
252
- });
253
- export {
254
- Pe as default
255
- };
@@ -1,79 +0,0 @@
1
- import { defineComponent as _, computed as p, openBlock as y, createElementBlock as g, createVNode as l, unref as i, withCtx as s, createElementVNode as a, toDisplayString as r, createTextVNode as h } from "vue";
2
- import { useI18n as b } from "vue-i18n";
3
- import { _ as f } from "./DataTable.vue_vue_type_script_setup_true_lang-BEvz5zqo.js";
4
- import { _ as v } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
5
- const w = {
6
- signed_in: { tone: "positive", byOther: !1 },
7
- wrong_password: { tone: "critical", byOther: !1 },
8
- locked_out: { tone: "critical", byOther: !1 },
9
- refused_inactive: { tone: "critical", byOther: !1 },
10
- signed_in_as: { tone: "warning", byOther: !0 },
11
- unlocked: { tone: "neutral", byOther: !0 },
12
- signed_out_everywhere: { tone: "neutral", byOther: !0 },
13
- session_revoked: { tone: "neutral", byOther: !0 }
14
- };
15
- function d(t) {
16
- const o = w[t];
17
- return o ? { ...o, known: !0 } : { tone: "neutral", byOther: !1, known: !1 };
18
- }
19
- function k(t, o) {
20
- const n = d(t);
21
- return n.known ? n.byOther && o ? `core.account.signins.events_by.${t}` : `core.account.signins.events.${t}` : "core.account.signins.events.unknown";
22
- }
23
- const O = {
24
- class: "overflow-hidden rounded-group bg-surface-cell shadow-group",
25
- "data-signin-table": ""
26
- }, x = ["title"], E = { class: "font-mono text-footnote" }, B = {
27
- class: "px-4 py-8 text-center text-body text-content-muted",
28
- "data-signin-empty": ""
29
- }, T = /* @__PURE__ */ _({
30
- __name: "SignInTable",
31
- props: {
32
- rows: {},
33
- loading: { type: Boolean }
34
- },
35
- setup(t) {
36
- const o = t, { t: n } = b(), u = p(() => [
37
- { key: "created_at", label: n("core.account.signins.columns.time"), kind: "timestamp", width: 170, mobile: "meta" },
38
- { key: "event", label: n("core.account.signins.columns.event"), mobile: "primary" },
39
- { key: "device", label: n("core.account.signins.columns.device"), hideBelow: "md", width: 320, mobile: "hidden" },
40
- { key: "ip", label: n("core.account.signins.columns.ip"), hideBelow: "md", width: 140, mobile: "hidden" }
41
- ]), m = (c) => n(k(c.event, c.actor?.name || null), { name: c.actor?.name ?? "" });
42
- return (c, I) => (y(), g("div", O, [
43
- l(i(f), {
44
- rows: o.rows,
45
- columns: u.value,
46
- "row-key": (e) => e.id,
47
- loading: o.loading
48
- }, {
49
- "cell-event": s(({ item: e }) => [
50
- l(i(v), {
51
- tone: i(d)(e.event).tone,
52
- "data-event": e.event
53
- }, {
54
- default: s(() => [
55
- h(r(m(e)), 1)
56
- ]),
57
- _: 2
58
- }, 1032, ["tone", "data-event"])
59
- ]),
60
- "cell-device": s(({ item: e }) => [
61
- a("span", {
62
- class: "block truncate",
63
- title: e.device
64
- }, r(e.device || "—"), 9, x)
65
- ]),
66
- "cell-ip": s(({ item: e }) => [
67
- a("span", E, r(e.ip || "—"), 1)
68
- ]),
69
- empty: s(() => [
70
- a("p", B, r(i(n)("core.account.signins.empty")), 1)
71
- ]),
72
- _: 1
73
- }, 8, ["rows", "columns", "row-key", "loading"])
74
- ]));
75
- }
76
- });
77
- export {
78
- T as _
79
- };
@@ -1,66 +0,0 @@
1
- import { defineComponent as g, ref as m, watch as p, openBlock as c, createElementBlock as v, createVNode as i, unref as e, withCtx as w, createBlock as x, createCommentVNode as y, createElementVNode as V, toDisplayString as $ } from "vue";
2
- import { useI18n as N } from "vue-i18n";
3
- import { P as S, i as b } from "./index-BhtJR4c_.js";
4
- import { u as k } from "./platform-PZpUkkMS.js";
5
- import { b as I } from "./routeResource-DlTsGTg_.js";
6
- import { _ as R } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
7
- import { u as C } from "./useLoad-M7V-AVwR.js";
8
- import { _ as E } from "./PageBar.vue_vue_type_script_setup_true_lang-B7qdEeej.js";
9
- import { _ as B } from "./SectionIntro.vue_vue_type_script_setup_true_lang-CZtPrmXD.js";
10
- import { _ as P } from "./SignInTable.vue_vue_type_script_setup_true_lang-Bs0yTi2E.js";
11
- import { _ as h } from "./ViewTabs.vue_vue_type_script_setup_true_lang-BJIoZAlH.js";
12
- const U = {
13
- class: "flex min-w-0 flex-col gap-group-gap",
14
- "data-person-signins": ""
15
- }, q = { class: "px-row-inset text-footnote text-content-muted" }, M = /* @__PURE__ */ g({
16
- __name: "SignIns",
17
- setup(D) {
18
- const d = ["all", "failed"], { t: s } = N(), { http: f } = k(), l = I(S), r = m("all"), a = m(1), n = C(
19
- async ({ signal: u }) => {
20
- const t = l.id.value;
21
- return t === null ? null : (await f.request(b.usersSignins, { id: t, view: r.value, page: a.value, per_page: 20 }, { signal: u })).data;
22
- },
23
- { watch: () => l.id.value }
24
- );
25
- return p(r, () => {
26
- a.value = 1, n.reload();
27
- }), p(a, () => void n.reload()), (u, t) => (c(), v("div", U, [
28
- i(B, {
29
- title: e(s)("core.users.sections.signins"),
30
- description: e(s)("core.users.intro.signins", { name: e(l).data.value?.name ?? "" })
31
- }, null, 8, ["title", "description"]),
32
- i(h, {
33
- modelValue: r.value,
34
- "onUpdate:modelValue": t[0] || (t[0] = (o) => r.value = o),
35
- views: d,
36
- counts: e(n).data.value?.meta?.views,
37
- "label-of": (o) => e(s)(`core.account.signins.views.${o}`),
38
- label: e(s)("core.users.sections.signins")
39
- }, null, 8, ["modelValue", "counts", "label-of", "label"]),
40
- i(e(R), {
41
- state: e(n).state.value,
42
- "skeleton-rows": 5,
43
- "is-empty": () => !1,
44
- onRetry: t[2] || (t[2] = (o) => e(n).reload())
45
- }, {
46
- default: w(({ value: o }) => [
47
- i(P, {
48
- rows: o?.data ?? []
49
- }, null, 8, ["rows"]),
50
- o ? (c(), x(E, {
51
- key: 0,
52
- page: a.value,
53
- "onUpdate:page": t[1] || (t[1] = (_) => a.value = _),
54
- "last-page": o.last_page,
55
- total: o.total
56
- }, null, 8, ["page", "last-page", "total"])) : y("", !0),
57
- V("p", q, $(e(s)("core.account.signins.footer_user")), 1)
58
- ]),
59
- _: 1
60
- }, 8, ["state"])
61
- ]));
62
- }
63
- });
64
- export {
65
- M as default
66
- };