@wssto2/vue-core 0.13.0 → 0.14.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 (65) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/{Activity-ChfxdvXf.js → Activity-C0HUEDUz.js} +3 -3
  3. package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-lPj9hPqV.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-Bsv5j5Z8.js} +1 -1
  4. package/dist/{Changes-BCa43_mO.js → Changes-CSaHgVuz.js} +1 -1
  5. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-C1GCvyZx.js → CollectionPage.vue_vue_type_script_setup_true_lang-dIrdS_Gn.js} +4 -4
  6. package/dist/{DataTable.vue_vue_type_script_setup_true_lang-B9r9M5Gt.js → DataTable.vue_vue_type_script_setup_true_lang-J3PhyJAS.js} +1 -1
  7. package/dist/{DateField.vue_vue_type_script_setup_true_lang-B5UUY1OO.js → DateField.vue_vue_type_script_setup_true_lang-CKKG4JEg.js} +2 -2
  8. package/dist/{DeadLetters-wFTqhISU.js → DeadLetters-CHX4Ypgy.js} +3 -3
  9. package/dist/{General-jW7u4MjH.js → General-v_24-zZw.js} +3 -3
  10. package/dist/IncidentRecord-BwSBNE37.js +522 -0
  11. package/dist/{IncidentsList-D1MySyXb.js → IncidentsList-BqzRU5cZ.js} +5 -5
  12. package/dist/{NewRolePage-CQ5UVaHs.js → NewRolePage-Dt0O0VSI.js} +1 -1
  13. package/dist/{NumberField.vue_vue_type_script_setup_true_lang-YVgf5CP6.js → NumberField.vue_vue_type_script_setup_true_lang-U-_kcnGr.js} +1 -1
  14. package/dist/{ProfilePage-Ca3x3UAH.js → ProfilePage-DApTxq8C.js} +4 -4
  15. package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-Do_ATJwT.js → RecordHeader.vue_vue_type_script_setup_true_lang-SDgLjwEI.js} +1 -1
  16. package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-Coz91xht.js → ResourcePage.vue_vue_type_script_setup_true_lang-DRC3h71-.js} +1 -1
  17. package/dist/{RolePage-BUj1w1m1.js → RolePage-noy-wmNc.js} +2 -2
  18. package/dist/{RolesPage-NKzBUsrM.js → RolesPage-NRRainCw.js} +1 -1
  19. package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-DfKEhTFv.js → SectionNavigator.vue_vue_type_script_setup_true_lang-D_08MS1-.js} +1 -1
  20. package/dist/{ServiceAccountDialog.vue_vue_type_script_setup_true_lang-4nbhEpv_.js → ServiceAccountDialog.vue_vue_type_script_setup_true_lang-DDcaju7L.js} +2 -2
  21. package/dist/{ServiceAccountRecord-ClbyeLhL.js → ServiceAccountRecord-D_HduQoK.js} +6 -6
  22. package/dist/{ServiceAccountsList-B2VDnYxD.js → ServiceAccountsList-CdSsqTGt.js} +4 -4
  23. package/dist/{Sessions-BjkciyHH.js → Sessions-CTjzMfNg.js} +1 -1
  24. package/dist/{SettingsPage-Csb14qsx.js → SettingsPage-CpqASf_D.js} +6 -6
  25. package/dist/{SignIn-DPFMv4C7.js → SignIn-D6tWsKf0.js} +2 -2
  26. package/dist/{SignInPage-DukoFqkt.js → SignInPage-BCNGI871.js} +1 -1
  27. package/dist/{SignIns-DvdpNkiS.js → SignIns-BxGGA99u.js} +1 -1
  28. package/dist/{TimeField.vue_vue_type_script_setup_true_lang-DpDXHH7u.js → TimeField.vue_vue_type_script_setup_true_lang-BDlTAMsh.js} +2 -2
  29. package/dist/{Timestamp.vue_vue_type_script_setup_true_lang-DlEUKWra.js → Timestamp.vue_vue_type_script_setup_true_lang-jCXYFLtq.js} +1 -1
  30. package/dist/{UserRecord-B9SeSWQh.js → UserRecord-B0kG0-Tm.js} +4 -4
  31. package/dist/{UsersList-CREG8q3l.js → UsersList-KMgImERy.js} +3 -3
  32. package/dist/access/index.js +3 -3
  33. package/dist/app/index.js +1 -1
  34. package/dist/{application-DomS6sbx.js → application-CrXtiGdw.js} +1 -1
  35. package/dist/collection/index.js +3 -3
  36. package/dist/content/index.js +2 -2
  37. package/dist/form/index.js +8 -8
  38. package/dist/format/format.d.ts +5 -2
  39. package/dist/format/index.js +1 -1
  40. package/dist/format-Cp1h0vsC.js +125 -0
  41. package/dist/i18n/index.js +13 -13
  42. package/dist/identity/index.js +1 -1
  43. package/dist/incidents/Occurrences.vue.d.ts +9 -0
  44. package/dist/incidents/api.d.ts +11 -2
  45. package/dist/incidents/clientErrorReporter.d.ts +2 -2
  46. package/dist/incidents/index.js +1 -1
  47. package/dist/{index-CRxU_Wh2.js → index-Crz-j_Hu.js} +121 -113
  48. package/dist/{index-DZikGJ8L.js → index-D-2NNye6.js} +15 -15
  49. package/dist/{index-D_yyd4C2.js → index-DNeIZpXo.js} +3 -3
  50. package/dist/index.d.ts +1 -1
  51. package/dist/index.js +1 -1
  52. package/dist/modules/incident/entities.d.ts +19 -0
  53. package/dist/modules/incident/routes.d.ts +6 -1
  54. package/dist/modules/incident/schemas.d.ts +2 -0
  55. package/dist/notifications/index.js +1 -1
  56. package/dist/page/index.js +3 -3
  57. package/dist/phone/index.js +1 -1
  58. package/dist/resource/index.js +1 -1
  59. package/dist/{rowLayout-y1IB_h2r.js → rowLayout-Ohh5ng1u.js} +2 -2
  60. package/dist/{serverMessages-Ddghrewh.js → serverMessages-DnTqVS3h.js} +1 -1
  61. package/dist/testing/index.js +2 -2
  62. package/dist/{useTypedEntry-DKs8I1yP.js → useTypedEntry-tttjrClq.js} +1 -1
  63. package/package.json +2 -2
  64. package/dist/IncidentRecord-CXzgLKqI.js +0 -404
  65. package/dist/format-DoKs29bZ.js +0 -118
@@ -0,0 +1,522 @@
1
+ import { defineComponent as G, openBlock as s, createElementBlock as m, createVNode as c, unref as e, createElementVNode as n, toDisplayString as o, createCommentVNode as r, ref as J, computed as S, createBlock as _, withCtx as u, Fragment as F, renderList as M, createTextVNode as E, mergeProps as w } from "vue";
2
+ import { useI18n as X } from "vue-i18n";
3
+ import { useRoute as ie } from "vue-router";
4
+ import { _ as V } from "./Button.vue_vue_type_script_setup_true_lang-C74hcb0N.js";
5
+ import { u as ae } from "./neighbors-Csfan8Ho.js";
6
+ import { _ as v } from "./KeyValue.vue_vue_type_script_setup_true_lang-wcZcvnow.js";
7
+ import { _ as D } from "./Panel.vue_vue_type_script_setup_true_lang-D_Wg42hu.js";
8
+ import { _ as le } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js";
9
+ import { a as re } from "./leaveGuard-Cc8yeLxM.js";
10
+ import { u as ce } from "./useResourceForm-Dl6YFYyz.js";
11
+ import { _ as de, a as ue } from "./FormGroup.vue_vue_type_script_setup_true_lang-D6jYfNjW.js";
12
+ import { _ as _e } from "./FormView.vue_vue_type_script_setup_true_lang-DvbPEiNQ.js";
13
+ import { _ as O } from "./SelectField.vue_vue_type_script_setup_true_lang-BZwdANL3.js";
14
+ import { _ as H } from "./TextareaField.vue_vue_type_script_setup_true_lang-D2j4s96s.js";
15
+ import { _ as K } from "./TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js";
16
+ import { u as me } from "./useSaveChrome-7huA3FzR.js";
17
+ import { u as pe } from "./useCommand-Ch_nx1AQ.js";
18
+ import { u as Z } from "./format-Cp1h0vsC.js";
19
+ import { t as fe } from "./toast-CqSDTWRX.js";
20
+ import { _ as ve } from "./RecordHeader.vue_vue_type_script_setup_true_lang-SDgLjwEI.js";
21
+ import { u as be } from "./platform-DtISOEt7.js";
22
+ import { a as xe } from "./routeResource-DlTsGTg_.js";
23
+ import { a as he } from "./ResourcePage.vue_vue_type_script_setup_true_lang-DRC3h71-.js";
24
+ import { _ as P } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
25
+ import { _ as Q } from "./EmptyState.vue_vue_type_script_setup_true_lang-DbZiO2RF.js";
26
+ import { u as ee, i as ye, a as ge, M as ke, U as we, m as $e, f as Se, g as W, r as Te, S as Ee, e as U, c as z, d as Ie, b as Ce } from "./index-Crz-j_Hu.js";
27
+ import { _ as je } from "./AsyncSection.vue_vue_type_script_setup_true_lang-DGzQ-Snp.js";
28
+ import { u as Ne } from "./useLoad-M7V-AVwR.js";
29
+ import { _ as Le } from "./Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js";
30
+ const Oe = { class: "flex min-w-0 items-center gap-2" }, De = { class: "flex min-w-0 flex-col items-start" }, Re = { class: "max-w-full truncate text-xs font-semibold text-content-strong" }, Ae = {
31
+ key: 0,
32
+ class: "max-w-full truncate text-footnote text-content-muted"
33
+ }, R = /* @__PURE__ */ G({
34
+ __name: "Person",
35
+ props: {
36
+ person: {}
37
+ },
38
+ setup(T) {
39
+ return (t, h) => (s(), m("div", Oe, [
40
+ c(e(Le), {
41
+ name: T.person.name,
42
+ size: "xs"
43
+ }, null, 8, ["name"]),
44
+ n("div", De, [
45
+ n("span", Re, o(T.person.name), 1),
46
+ T.person.email ? (s(), m("span", Ae, o(T.person.email), 1)) : r("", !0)
47
+ ])
48
+ ]));
49
+ }
50
+ }), Be = { class: "mb-1 flex flex-wrap items-center justify-between gap-3" }, Ve = { class: "text-xs text-content-muted" }, qe = {
51
+ key: 0,
52
+ class: "font-mono text-xs text-content"
53
+ }, Pe = { class: "flex flex-wrap items-center justify-between gap-3" }, Ue = {
54
+ key: 1,
55
+ class: "font-mono text-footnote text-content-muted"
56
+ }, ze = {
57
+ key: 0,
58
+ class: "mt-2 font-mono text-xs text-content-strong"
59
+ }, Fe = { class: "whitespace-pre-line text-sm text-content" }, Me = {
60
+ key: 1,
61
+ class: "mt-2 flex flex-col gap-3",
62
+ "data-test": "incident-occurrence-details"
63
+ }, Ge = {
64
+ key: 0,
65
+ class: "overflow-x-auto whitespace-pre-wrap rounded-control bg-fill p-3 font-mono text-xs"
66
+ }, Ye = { key: 1 }, Je = { class: "mb-1 text-footnote font-semibold uppercase text-content-muted" }, He = { class: "overflow-x-auto whitespace-pre-wrap rounded-control bg-fill p-3 font-mono text-xs" }, Ke = { key: 2 }, Qe = { class: "mb-1 text-footnote font-semibold uppercase text-content-muted" }, We = { class: "overflow-x-auto whitespace-pre-wrap rounded-control bg-fill p-3 font-mono text-xs" }, Xe = {
67
+ key: 0,
68
+ class: "flex items-center justify-between gap-3 border-t border-border-separator p-3"
69
+ }, Ze = { class: "text-xs text-content-muted" }, et = /* @__PURE__ */ G({
70
+ __name: "Occurrences",
71
+ props: {
72
+ incidentId: {}
73
+ },
74
+ setup(T) {
75
+ const t = T, { t: h } = X(), q = Z(), A = ee(), b = J(1), $ = Ne((l) => A.occurrences(t.incidentId, b.value, l), { watch: [b, () => t.incidentId] }), g = S(() => $.data.value ? $.data.value.meta : void 0), I = S(() => g.value?.last_page ?? 1), y = J(/* @__PURE__ */ new Set()), B = (l) => (y.value.has(l) ? y.value.delete(l) : y.value.add(l), y.value = new Set(y.value)), C = (l) => JSON.stringify(l, null, 2), a = (l) => [l.method, l.route].filter(Boolean).join(" "), j = (l) => [l.error_class, l.error_code].filter(Boolean).join(" · "), N = (l) => l != null && !(typeof l == "object" && Object.keys(l).length === 0);
76
+ return (l, k) => (s(), _(e(D), {
77
+ title: e(h)("core.incidents.details.occurrences"),
78
+ flush: "",
79
+ "data-test": "incident-occurrences"
80
+ }, {
81
+ default: u(() => [
82
+ c(e(je), {
83
+ state: e($).state.value,
84
+ "empty-title": e(h)("core.incidents.details.no_occurrences"),
85
+ "empty-icon": "fileTextLine",
86
+ "is-empty": (x) => x.rows.length === 0,
87
+ onRetry: k[2] || (k[2] = (x) => e($).reload())
88
+ }, {
89
+ default: u(({ value: x }) => [
90
+ (s(!0), m(F, null, M(x.rows, (d) => (s(), m("div", {
91
+ key: d.id,
92
+ class: "p-4 not-last:border-b not-last:border-border-separator",
93
+ "data-test": "incident-occurrence-item"
94
+ }, [
95
+ n("div", Be, [
96
+ n("span", Ve, o(e(q).dateTime(d.occurred_at)), 1),
97
+ a(d) ? (s(), m("span", qe, o(a(d)), 1)) : r("", !0)
98
+ ]),
99
+ n("div", Pe, [
100
+ d.user ? (s(), _(R, {
101
+ key: 0,
102
+ person: d.user
103
+ }, null, 8, ["person"])) : r("", !0),
104
+ d.request_id ? (s(), m("span", Ue, o(d.request_id), 1)) : r("", !0)
105
+ ]),
106
+ j(d) ? (s(), m("p", ze, o(j(d)), 1)) : r("", !0),
107
+ n("p", Fe, o(d.message), 1),
108
+ c(e(V), {
109
+ prominence: "plain",
110
+ size: "xs",
111
+ onClick: (Y) => B(d.id)
112
+ }, {
113
+ default: u(() => [
114
+ E(o(e(h)(y.value.has(d.id) ? "core.incidents.details.hide_details" : "core.incidents.details.show_details")), 1)
115
+ ]),
116
+ _: 2
117
+ }, 1032, ["onClick"]),
118
+ y.value.has(d.id) ? (s(), m("div", Me, [
119
+ d.stacktrace ? (s(), m("pre", Ge, o(d.stacktrace), 1)) : r("", !0),
120
+ N(d.context) ? (s(), m("div", Ye, [
121
+ n("h6", Je, o(e(h)("core.incidents.details.context")), 1),
122
+ n("pre", He, o(C(d.context)), 1)
123
+ ])) : r("", !0),
124
+ N(d.request) ? (s(), m("div", Ke, [
125
+ n("h6", Qe, o(e(h)("core.incidents.details.request")), 1),
126
+ n("pre", We, o(C(d.request)), 1)
127
+ ])) : r("", !0)
128
+ ])) : r("", !0)
129
+ ]))), 128)),
130
+ I.value > 1 ? (s(), m("div", Xe, [
131
+ c(e(V), {
132
+ prominence: "secondary",
133
+ size: "sm",
134
+ disabled: b.value <= 1,
135
+ onClick: k[0] || (k[0] = (d) => b.value--)
136
+ }, {
137
+ default: u(() => [
138
+ E(o(e(h)("core.collection.page.previous")), 1)
139
+ ]),
140
+ _: 1
141
+ }, 8, ["disabled"]),
142
+ n("span", Ze, o(e(h)("core.collection.page.page_of", { current: b.value, total: I.value })), 1),
143
+ c(e(V), {
144
+ prominence: "secondary",
145
+ size: "sm",
146
+ disabled: b.value >= I.value,
147
+ onClick: k[1] || (k[1] = (d) => b.value++)
148
+ }, {
149
+ default: u(() => [
150
+ E(o(e(h)("core.collection.page.next")), 1)
151
+ ]),
152
+ _: 1
153
+ }, 8, ["disabled"])
154
+ ])) : r("", !0)
155
+ ]),
156
+ _: 1
157
+ }, 8, ["state", "empty-title", "is-empty"])
158
+ ]),
159
+ _: 1
160
+ }, 8, ["title"]));
161
+ }
162
+ }), tt = { class: "tabular-nums" }, st = {
163
+ class: "grid grid-cols-1 gap-6 lg:grid-cols-[1fr_300px]",
164
+ "data-test": "incident"
165
+ }, nt = { class: "flex min-w-0 flex-col gap-6" }, ot = { class: "flex flex-col gap-3 text-sm" }, it = { class: "whitespace-pre-line text-content" }, at = { class: "grid grid-cols-2 gap-x-6 gap-y-3" }, lt = { class: "font-mono" }, rt = { class: "font-mono" }, ct = { class: "flex flex-col gap-3" }, dt = { class: "whitespace-pre-line font-mono" }, ut = { class: "mt-1 overflow-x-auto whitespace-pre-wrap rounded-control bg-fill p-3 font-mono text-xs font-normal" }, _t = { class: "mb-2 flex items-center justify-between gap-3" }, mt = { class: "text-xs text-content-muted" }, pt = { class: "text-sm font-semibold text-content-strong" }, ft = { class: "whitespace-pre-line text-sm text-content" }, vt = { class: "mt-3 flex flex-col gap-2" }, bt = { class: "whitespace-pre-line font-normal" }, xt = { class: "whitespace-pre-line font-normal" }, ht = { class: "whitespace-pre-line font-normal" }, yt = { class: "mb-2 flex items-center justify-between gap-3" }, gt = { class: "text-xs text-content-muted" }, kt = { class: "whitespace-pre-line text-sm text-content-strong" }, wt = {
166
+ key: 0,
167
+ class: "mt-2 inline-flex"
168
+ }, $t = {
169
+ class: "flex flex-col gap-3 border-t border-border-separator p-4",
170
+ "data-test": "incident-comment"
171
+ }, St = { class: "flex min-w-0 flex-col gap-4" }, Tt = { class: "flex flex-col gap-3 text-xs" }, Et = { key: 0 }, It = { class: "mb-1 font-semibold uppercase text-content-muted" }, Ct = { key: 1 }, jt = { class: "mb-1 font-semibold uppercase text-content-muted" }, Nt = { key: 2 }, Lt = { class: "mb-1 font-semibold uppercase text-content-muted" }, Ot = ["href"], cs = /* @__PURE__ */ G({
172
+ __name: "IncidentRecord",
173
+ setup(T) {
174
+ const { t } = X(), h = ie(), { http: q, access: A } = be(), b = Z(), $ = ee(), g = xe({ param: "incidentID", load: (p, { signal: f }) => $.show(p, { signal: f }), identify: (p) => p.incident.id }), I = ae(ge(q), { current: () => g.id.value, list: ye.index, param: "incidentID", backLabel: () => t("core.incidents.title") }), y = Number(h.params.incidentID), B = S(() => A.can(ke)), C = S(() => A.can(we)), a = S(() => g.data.value?.incident ?? null), j = S(() => g.data.value?.reports ?? []), N = S(() => g.data.value?.comments ?? []), l = ce({
175
+ source: g,
176
+ defaults: Se,
177
+ toValues: $e,
178
+ save: async (p, f, { idempotencyKey: i }) => ({ ...f, incident: await $.update(y, p, i) })
179
+ });
180
+ async function k() {
181
+ (await l.save({ refresh: () => g.reload() })).status === "saved" && fe.success(t("core.actions.saved"));
182
+ }
183
+ me({ form: l, label: () => t("core.incidents.actions.save"), allowed: C, ready: () => !!a.value, save: () => void k() });
184
+ const x = pe({
185
+ defaults: W,
186
+ validator: Te(["body"], t("core.account.validation.required")),
187
+ run: (p, { idempotencyKey: f }) => $.comment(y, p, f),
188
+ done: async () => {
189
+ x.form.hydrate(W()), await g.reload();
190
+ }
191
+ });
192
+ re(() => x.form.values.body.trim() !== "");
193
+ const d = (p) => S(() => Object.entries(p).map(([f, i]) => ({ value: f, label: t(i) }))), Y = d(z), te = d(U), se = d({ reporter_and_staff: "core.incidents.visibilities.reporter_and_staff", staff_only: "core.incidents.visibilities.staff_only" }), ne = d({ public: "core.incidents.comment_visibilities.public", internal: "core.incidents.comment_visibilities.internal" }), oe = d({ none: "core.incidents.ticket_providers.none", github: "core.incidents.ticket_providers.github", jira: "core.incidents.ticket_providers.jira" }), L = (p, f) => t(p[f] ?? f);
194
+ return (p, f) => (s(), _(e(he), {
195
+ resource: e(g),
196
+ title: a.value?.title ?? e(t)("core.incidents.title"),
197
+ list: e(I).context
198
+ }, {
199
+ header: u(({ record: i }) => [
200
+ c(e(ve), {
201
+ title: i.incident.title,
202
+ subtitle: [i.incident.public_code, L(e(U), i.incident.severity), L(e(z), i.incident.status)].join(" · ")
203
+ }, {
204
+ leading: u(() => [
205
+ c(e(le), {
206
+ tone: "neutral",
207
+ icon: "alertTriangle",
208
+ size: "lg"
209
+ })
210
+ ]),
211
+ meta: u(() => [
212
+ n("span", tt, o(i.incident.public_code), 1),
213
+ c(e(P), {
214
+ tone: e(Ie)[i.incident.severity] ?? "neutral"
215
+ }, {
216
+ default: u(() => [
217
+ E(o(L(e(U), i.incident.severity)), 1)
218
+ ]),
219
+ _: 2
220
+ }, 1032, ["tone"]),
221
+ c(e(P), {
222
+ tone: e(Ce)[i.incident.status] ?? "neutral",
223
+ dot: ""
224
+ }, {
225
+ default: u(() => [
226
+ E(o(L(e(z), i.incident.status)), 1)
227
+ ]),
228
+ _: 2
229
+ }, 1032, ["tone"])
230
+ ]),
231
+ _: 2
232
+ }, 1032, ["title", "subtitle"])
233
+ ]),
234
+ default: u(() => [
235
+ n("div", st, [
236
+ n("div", nt, [
237
+ a.value ? (s(), _(e(D), {
238
+ key: 0,
239
+ title: e(t)("core.incidents.details.overview")
240
+ }, {
241
+ default: u(() => [
242
+ n("div", ot, [
243
+ n("p", it, o(a.value.description), 1),
244
+ n("dl", at, [
245
+ a.value.affected_module ? (s(), _(e(v), {
246
+ key: 0,
247
+ label: e(t)("core.incidents.fields.affected_module"),
248
+ value: a.value.affected_module
249
+ }, null, 8, ["label", "value"])) : r("", !0),
250
+ a.value.affected_route ? (s(), _(e(v), {
251
+ key: 1,
252
+ label: e(t)("core.incidents.fields.affected_route")
253
+ }, {
254
+ default: u(() => [
255
+ n("span", lt, o(a.value.affected_route), 1)
256
+ ]),
257
+ _: 1
258
+ }, 8, ["label"])) : r("", !0),
259
+ a.value.environment ? (s(), _(e(v), {
260
+ key: 2,
261
+ label: e(t)("core.incidents.fields.environment"),
262
+ value: a.value.environment
263
+ }, null, 8, ["label", "value"])) : r("", !0),
264
+ a.value.error_class ? (s(), _(e(v), {
265
+ key: 3,
266
+ label: e(t)("core.incidents.fields.error_class")
267
+ }, {
268
+ default: u(() => [
269
+ n("span", rt, o(a.value.error_class), 1)
270
+ ]),
271
+ _: 1
272
+ }, 8, ["label"])) : r("", !0)
273
+ ]),
274
+ n("dl", ct, [
275
+ a.value.error_message_sample ? (s(), _(e(v), {
276
+ key: 0,
277
+ label: e(t)("core.incidents.fields.error_message_sample")
278
+ }, {
279
+ default: u(() => [
280
+ n("span", dt, o(a.value.error_message_sample), 1)
281
+ ]),
282
+ _: 1
283
+ }, 8, ["label"])) : r("", !0),
284
+ a.value.stacktrace_sample ? (s(), _(e(v), {
285
+ key: 1,
286
+ label: e(t)("core.incidents.fields.stacktrace_sample")
287
+ }, {
288
+ default: u(() => [
289
+ n("pre", ut, o(a.value.stacktrace_sample), 1)
290
+ ]),
291
+ _: 1
292
+ }, 8, ["label"])) : r("", !0)
293
+ ])
294
+ ])
295
+ ]),
296
+ _: 1
297
+ }, 8, ["title"])) : r("", !0),
298
+ c(e(D), {
299
+ title: e(t)("core.incidents.details.user_reports"),
300
+ flush: ""
301
+ }, {
302
+ default: u(() => [
303
+ j.value.length === 0 ? (s(), _(e(Q), {
304
+ key: 0,
305
+ title: e(t)("core.incidents.details.no_reports"),
306
+ icon: "fileTextLine"
307
+ }, null, 8, ["title"])) : (s(!0), m(F, { key: 1 }, M(j.value, (i) => (s(), m("div", {
308
+ key: i.id,
309
+ class: "p-4 not-last:border-b not-last:border-border-separator",
310
+ "data-test": "incident-report-item"
311
+ }, [
312
+ n("div", _t, [
313
+ i.reporter ? (s(), _(R, {
314
+ key: 0,
315
+ person: i.reporter
316
+ }, null, 8, ["person"])) : r("", !0),
317
+ n("span", mt, o(e(b).dateTime(i.created_at)), 1)
318
+ ]),
319
+ n("p", pt, o(i.title), 1),
320
+ n("p", ft, o(i.description), 1),
321
+ n("dl", vt, [
322
+ i.steps_to_reproduce ? (s(), _(e(v), {
323
+ key: 0,
324
+ label: e(t)("core.incidents.fields.steps_to_reproduce")
325
+ }, {
326
+ default: u(() => [
327
+ n("span", bt, o(i.steps_to_reproduce), 1)
328
+ ]),
329
+ _: 2
330
+ }, 1032, ["label"])) : r("", !0),
331
+ i.expected_result ? (s(), _(e(v), {
332
+ key: 1,
333
+ label: e(t)("core.incidents.fields.expected_result")
334
+ }, {
335
+ default: u(() => [
336
+ n("span", xt, o(i.expected_result), 1)
337
+ ]),
338
+ _: 2
339
+ }, 1032, ["label"])) : r("", !0),
340
+ i.actual_result ? (s(), _(e(v), {
341
+ key: 2,
342
+ label: e(t)("core.incidents.fields.actual_result")
343
+ }, {
344
+ default: u(() => [
345
+ n("span", ht, o(i.actual_result), 1)
346
+ ]),
347
+ _: 2
348
+ }, 1032, ["label"])) : r("", !0)
349
+ ])
350
+ ]))), 128))
351
+ ]),
352
+ _: 1
353
+ }, 8, ["title"]),
354
+ c(e(D), {
355
+ title: e(t)("core.incidents.details.comments"),
356
+ flush: ""
357
+ }, {
358
+ default: u(() => [
359
+ N.value.length === 0 ? (s(), _(e(Q), {
360
+ key: 0,
361
+ title: e(t)("core.incidents.details.no_comments"),
362
+ icon: "chat4Fill"
363
+ }, null, 8, ["title"])) : (s(!0), m(F, { key: 1 }, M(N.value, (i) => (s(), m("div", {
364
+ key: i.id,
365
+ class: "p-4 not-last:border-b not-last:border-border-separator",
366
+ "data-test": "incident-comment-item"
367
+ }, [
368
+ n("div", yt, [
369
+ i.author ? (s(), _(R, {
370
+ key: 0,
371
+ person: i.author
372
+ }, null, 8, ["person"])) : r("", !0),
373
+ n("span", gt, o(e(b).dateTime(i.created_at)), 1)
374
+ ]),
375
+ n("p", kt, o(i.body), 1),
376
+ i.visibility === "internal" ? (s(), m("span", wt, [
377
+ c(e(P), { tone: "neutral" }, {
378
+ default: u(() => [
379
+ E(o(e(t)("core.incidents.comment_visibilities.internal")), 1)
380
+ ]),
381
+ _: 1
382
+ })
383
+ ])) : r("", !0)
384
+ ]))), 128)),
385
+ n("div", $t, [
386
+ c(e(de), {
387
+ form: e(x).form
388
+ }, null, 8, ["form"]),
389
+ c(e(H), w(e(x).form.bind("body"), {
390
+ label: e(t)("core.incidents.fields.comment_body"),
391
+ rows: 3,
392
+ stacked: ""
393
+ }), null, 16, ["label"]),
394
+ B.value ? (s(), _(e(O), w({ key: 0 }, e(x).form.bind("visibility"), {
395
+ label: e(t)("core.incidents.fields.comment_visibility"),
396
+ options: e(ne)
397
+ }), null, 16, ["label", "options"])) : r("", !0),
398
+ c(e(V), {
399
+ prominence: "primary",
400
+ processing: e(x).form.submitting.value,
401
+ onClick: f[0] || (f[0] = (i) => e(x).run())
402
+ }, {
403
+ default: u(() => [
404
+ E(o(e(t)("core.incidents.actions.add_comment")), 1)
405
+ ]),
406
+ _: 1
407
+ }, 8, ["processing"])
408
+ ])
409
+ ]),
410
+ _: 1
411
+ }, 8, ["title"]),
412
+ B.value ? (s(), _(et, {
413
+ key: 1,
414
+ "incident-id": e(y)
415
+ }, null, 8, ["incident-id"])) : r("", !0)
416
+ ]),
417
+ n("div", St, [
418
+ a.value ? (s(), _(e(D), {
419
+ key: 0,
420
+ title: e(t)("core.incidents.details.summary")
421
+ }, {
422
+ default: u(() => [
423
+ n("div", Tt, [
424
+ c(e(v), {
425
+ label: e(t)("core.incidents.fields.source"),
426
+ value: L(e(Ee), a.value.source)
427
+ }, null, 8, ["label", "value"]),
428
+ c(e(v), {
429
+ label: e(t)("core.incidents.fields.first_seen_at"),
430
+ value: e(b).dateTime(a.value.first_seen_at)
431
+ }, null, 8, ["label", "value"]),
432
+ c(e(v), {
433
+ label: e(t)("core.incidents.fields.last_seen_at"),
434
+ value: e(b).dateTime(a.value.last_seen_at)
435
+ }, null, 8, ["label", "value"]),
436
+ c(e(v), {
437
+ label: e(t)("core.incidents.fields.occurrence_count"),
438
+ value: a.value.occurrence_count
439
+ }, null, 8, ["label", "value"]),
440
+ a.value.reporter ? (s(), m("div", Et, [
441
+ n("h6", It, o(e(t)("core.incidents.fields.reporter")), 1),
442
+ c(R, {
443
+ person: a.value.reporter
444
+ }, null, 8, ["person"])
445
+ ])) : r("", !0),
446
+ a.value.assignee ? (s(), m("div", Ct, [
447
+ n("h6", jt, o(e(t)("core.incidents.fields.assignee")), 1),
448
+ c(R, {
449
+ person: a.value.assignee
450
+ }, null, 8, ["person"])
451
+ ])) : r("", !0),
452
+ a.value.external_ticket_url ? (s(), m("div", Nt, [
453
+ n("h6", Lt, o(e(t)("core.incidents.fields.external_ticket")), 1),
454
+ n("a", {
455
+ href: a.value.external_ticket_url,
456
+ target: "_blank",
457
+ rel: "noopener",
458
+ class: "text-content-link hover:underline"
459
+ }, o(a.value.external_ticket_id || a.value.external_ticket_url), 9, Ot)
460
+ ])) : r("", !0)
461
+ ])
462
+ ]),
463
+ _: 1
464
+ }, 8, ["title"])) : r("", !0),
465
+ C.value ? (s(), _(e(_e), {
466
+ key: 1,
467
+ form: e(l),
468
+ onSubmit: k
469
+ }, {
470
+ default: u(() => [
471
+ c(e(ue), {
472
+ header: e(t)("core.incidents.details.management"),
473
+ "label-width": "7rem",
474
+ "data-test": "incident-management"
475
+ }, {
476
+ default: u(() => [
477
+ c(e(O), w(e(l).bind("status"), {
478
+ label: e(t)("core.incidents.fields.status"),
479
+ options: e(Y)
480
+ }), null, 16, ["label", "options"]),
481
+ c(e(O), w(e(l).bind("severity"), {
482
+ label: e(t)("core.incidents.fields.severity"),
483
+ options: e(te)
484
+ }), null, 16, ["label", "options"]),
485
+ c(e(O), w(e(l).bind("visibility"), {
486
+ label: e(t)("core.incidents.fields.visibility"),
487
+ options: e(se)
488
+ }), null, 16, ["label", "options"]),
489
+ c(e(H), w(e(l).bind("resolution_summary"), {
490
+ label: e(t)("core.incidents.fields.resolution_summary"),
491
+ rows: 3,
492
+ "max-length": 2e3,
493
+ stacked: ""
494
+ }), null, 16, ["label"]),
495
+ c(e(O), w(e(l).bind("external_ticket_provider"), {
496
+ label: e(t)("core.incidents.fields.external_ticket_provider"),
497
+ options: e(oe)
498
+ }), null, 16, ["label", "options"]),
499
+ c(e(K), w(e(l).bind("external_ticket_id"), {
500
+ label: e(t)("core.incidents.fields.external_ticket_id"),
501
+ "max-length": 100
502
+ }), null, 16, ["label"]),
503
+ c(e(K), w(e(l).bind("external_ticket_url"), {
504
+ label: e(t)("core.incidents.fields.external_ticket_url"),
505
+ "max-length": 500
506
+ }), null, 16, ["label"])
507
+ ]),
508
+ _: 1
509
+ }, 8, ["header"])
510
+ ]),
511
+ _: 1
512
+ }, 8, ["form"])) : r("", !0)
513
+ ])
514
+ ])
515
+ ]),
516
+ _: 1
517
+ }, 8, ["resource", "title", "list"]));
518
+ }
519
+ });
520
+ export {
521
+ cs as default
522
+ };
@@ -1,15 +1,15 @@
1
1
  import { defineComponent as $, useTemplateRef as D, computed as d, openBlock as n, createBlock as m, unref as e, withCtx as i, createVNode as c, createElementBlock as p, toDisplayString as a, createElementVNode as F, createTextVNode as f, createCommentVNode as O } from "vue";
2
2
  import { useI18n as q } from "vue-i18n";
3
3
  import { useRouter as U } from "vue-router";
4
- import { u as z, _ as P } from "./CollectionPage.vue_vue_type_script_setup_true_lang-C1GCvyZx.js";
5
- import { a as y } from "./rowLayout-y1IB_h2r.js";
4
+ import { u as z, _ as P } from "./CollectionPage.vue_vue_type_script_setup_true_lang-dIrdS_Gn.js";
5
+ import { a as y } from "./rowLayout-Ohh5ng1u.js";
6
6
  import { u as Y } from "./datePresets-DB13HHHd.js";
7
- import { _ as j } from "./Timestamp.vue_vue_type_script_setup_true_lang-DlEUKWra.js";
7
+ import { _ as j } from "./Timestamp.vue_vue_type_script_setup_true_lang-jCXYFLtq.js";
8
8
  import { _ as g } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js";
9
- import { u as K } from "./format-DoKs29bZ.js";
9
+ import { u as K } from "./format-Cp1h0vsC.js";
10
10
  import { u as G } from "./platform-DtISOEt7.js";
11
11
  import { _ as k } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
12
- import { i as v, a as H, C as J, _ as M, S as T, b as Q, c as S, d as W, e as E } from "./index-CRxU_Wh2.js";
12
+ import { i as v, a as H, C as J, _ as M, S as T, b as Q, c as S, d as W, e as E } from "./index-Crz-j_Hu.js";
13
13
  const X = {
14
14
  key: 1,
15
15
  class: "flex min-w-0 items-center gap-3"
@@ -1,7 +1,7 @@
1
1
  import { defineComponent as _, computed as d, openBlock as y, createBlock as w, unref as e, withCtx as i, createVNode as l } from "vue";
2
2
  import { useI18n as v } from "vue-i18n";
3
3
  import { useRoute as k, useRouter as R } from "vue-router";
4
- import { _ as $ } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-lPj9hPqV.js";
4
+ import { _ as $ } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-Bsv5j5Z8.js";
5
5
  import { _ as b } from "./AsyncSection.vue_vue_type_script_setup_true_lang-DGzQ-Snp.js";
6
6
  import { u as g } from "./useLoad-M7V-AVwR.js";
7
7
  import { u as x } from "./PersonAccess.vue_vue_type_script_setup_true_lang-CWCt9_dM.js";
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as H, ref as _, computed as B, useTemplateRef as K, watch as R, openBlock as q, createBlock as J, mergeProps as L, unref as T, createSlots as Q, withCtx as $, createElementVNode as Z, normalizeClass as E, createElementBlock as G, toDisplayString as I, createCommentVNode as P, isRef as W, renderSlot as N, mergeDefaults as U } from "vue";
2
2
  import { b as X } from "./controlSurface-t7OEFESJ.js";
3
- import { u as Y } from "./format-DoKs29bZ.js";
3
+ import { u as Y } from "./format-Cp1h0vsC.js";
4
4
  import { a as ee, e as te, _ as le, f as ae, b as oe } from "./options-B48UiYsG.js";
5
5
  function ne(c) {
6
6
  const r = c.number(1234.5, { minimumFractionDigits: 1, maximumFractionDigits: 1, useGrouping: !0 }), u = /^\d(\D)\d/.exec(r)?.[1] ?? "";
@@ -1,20 +1,20 @@
1
1
  import { defineComponent as V, openBlock as m, createBlock as U, unref as e, withCtx as _, createVNode as n, mergeProps as E, createElementVNode as z, toDisplayString as q, watch as J, createElementBlock as w, Fragment as A, useModel as ve, useId as _e, useTemplateRef as Q, ref as x, onMounted as ge, onBeforeUnmount as ye, computed as D, withModifiers as be, createCommentVNode as H, createTextVNode as j, mergeModels as re, renderList as we, resolveDynamicComponent as le } from "vue";
2
2
  import { useI18n as P } from "vue-i18n";
3
- import { _ as he } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-lPj9hPqV.js";
3
+ import { _ as he } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-Bsv5j5Z8.js";
4
4
  import { u as F } from "./platform-DtISOEt7.js";
5
5
  import { _ as ee } from "./AsyncSection.vue_vue_type_script_setup_true_lang-DGzQ-Snp.js";
6
6
  import { u as te } from "./useLoad-M7V-AVwR.js";
7
7
  import { i as S } from "./preferences-hYhrw8Uy.js";
8
- import { h as xe, q as $e, j as ke, f as qe } from "./index-DZikGJ8L.js";
8
+ import { h as xe, q as $e, j as ke, f as qe } from "./index-D-2NNye6.js";
9
9
  import { a as K, u as ne, p as Ce } from "./FormGroup.vue_vue_type_script_setup_true_lang-D6jYfNjW.js";
10
10
  import { _ as de } from "./FormView.vue_vue_type_script_setup_true_lang-DvbPEiNQ.js";
11
11
  import { u as Se, _ as Ee, a as Ve, b as Pe } from "./useGroupSheet-CPjHydQV.js";
12
12
  import { t as C } from "./toast-CqSDTWRX.js";
13
- import { u as T } from "./serverMessages-Ddghrewh.js";
13
+ import { u as T } from "./serverMessages-DnTqVS3h.js";
14
14
  import { g as Z } from "./options-B48UiYsG.js";
15
15
  import { _ as I } from "./TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js";
16
16
  import { _ as Ne } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js";
17
- import { u as ce } from "./format-DoKs29bZ.js";
17
+ import { u as ce } from "./format-Cp1h0vsC.js";
18
18
  import { a as W } from "./ActionRow.vue_vue_type_script_setup_true_lang-DybAIOHS.js";
19
19
  import { i as O } from "./usePreferences-B8LIZp_f.js";
20
20
  import { a as Y } from "./error-CD7x0Jrz.js";
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as p, useTemplateRef as u, openBlock as t, createElementBlock as c, renderSlot as r, createCommentVNode as s, createElementVNode as n, toDisplayString as a, Fragment as d, renderList as f, createBlock as h, resolveDynamicComponent as g, withCtx as x, createVNode as _, unref as k } from "vue";
2
2
  import { _ as b } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
3
- import { u as w } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-lPj9hPqV.js";
3
+ import { u as w } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-Bsv5j5Z8.js";
4
4
  const v = { class: "flex min-w-0 flex-wrap items-center gap-5 compact:flex-col compact:gap-2 compact:text-center" }, y = {
5
5
  key: 0,
6
6
  class: "min-w-0 max-w-full shrink-0"
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as S, openBlock as a, createElementBlock as v, unref as t, createBlock as d, withCtx as s, createVNode as i, normalizeClass as m, createElementVNode as R, toDisplayString as y, computed as f, createSlots as $, renderSlot as u, createCommentVNode as A } from "vue";
2
2
  import { useI18n as z } from "vue-i18n";
3
- import { _ as C } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-lPj9hPqV.js";
3
+ import { _ as C } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-Bsv5j5Z8.js";
4
4
  import { _ as B } from "./AsyncSection.vue_vue_type_script_setup_true_lang-DGzQ-Snp.js";
5
5
  import { _ as D } from "./EmptyState.vue_vue_type_script_setup_true_lang-DbZiO2RF.js";
6
6
  import { useRouter as K, RouterLink as w } from "vue-router";
@@ -6,10 +6,10 @@ import { a as C } from "./FormGroup.vue_vue_type_script_setup_true_lang-D6jYfNjW
6
6
  import { g as z } from "./options-B48UiYsG.js";
7
7
  import { _ as oe } from "./AlertDialog.vue_vue_type_script_setup_true_lang-CrFhR9rJ.js";
8
8
  import { t as E } from "./toast-CqSDTWRX.js";
9
- import { _ as te } from "./RecordHeader.vue_vue_type_script_setup_true_lang-Do_ATJwT.js";
9
+ import { _ as te } from "./RecordHeader.vue_vue_type_script_setup_true_lang-SDgLjwEI.js";
10
10
  import { u as ae } from "./platform-DtISOEt7.js";
11
11
  import { a as le, u as se } from "./routeResource-DlTsGTg_.js";
12
- import { a as re } from "./ResourcePage.vue_vue_type_script_setup_true_lang-Coz91xht.js";
12
+ import { a as re } from "./ResourcePage.vue_vue_type_script_setup_true_lang-DRC3h71-.js";
13
13
  import { _ as ce } from "./AsyncSection.vue_vue_type_script_setup_true_lang-DGzQ-Snp.js";
14
14
  import { _ as H } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
15
15
  import { u as O } from "./PersonAccess.vue_vue_type_script_setup_true_lang-CWCt9_dM.js";
@@ -6,7 +6,7 @@ import { _ as E } from "./Tabs.vue_vue_type_script_setup_true_lang-tpkGp98F.js";
6
6
  import { a as U } from "./FormGroup.vue_vue_type_script_setup_true_lang-D6jYfNjW.js";
7
7
  import { g as j } from "./options-B48UiYsG.js";
8
8
  import { _ as D } from "./TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js";
9
- import { _ as I } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-lPj9hPqV.js";
9
+ import { _ as I } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-Bsv5j5Z8.js";
10
10
  import { u as K } from "./platform-DtISOEt7.js";
11
11
  import { _ as T } from "./AsyncSection.vue_vue_type_script_setup_true_lang-DGzQ-Snp.js";
12
12
  import { _ as q } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
@@ -6,7 +6,7 @@ import { _ as G } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
6
6
  import { a as re } from "./mediaQuery-CygcXmFW.js";
7
7
  import { u as ie } from "./access-DmAceEo5.js";
8
8
  import { u as ce, a as ue } from "./sections-fkW_IJLc.js";
9
- import { p as de } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-lPj9hPqV.js";
9
+ import { p as de } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-Bsv5j5Z8.js";
10
10
  import { p as me } from "./sectionIndex-BS0ic5W7.js";
11
11
  import { _ as K, a as pe } from "./SectionList.vue_vue_type_script_setup_true_lang-DR0_NsqC.js";
12
12
  const fe = {