@wssto2/vue-core 0.15.2 → 0.16.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.
- package/CHANGELOG.md +19 -0
- package/dist/{Activity-RAk3h7Aa.js → Activity-DOUuIkZR.js} +1 -1
- package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-uO4EAmBb.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-d_dPurWG.js} +170 -168
- package/dist/{Changes-Dsar4rXS.js → Changes-BfcbVgmu.js} +1 -1
- package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-qxeSTAKV.js → CollectionPage.vue_vue_type_script_setup_true_lang-B5hSkJ2N.js} +1 -1
- package/dist/{DeadLetters-vt9vhJD7.js → DeadLetters-CuMvfXH8.js} +2 -2
- package/dist/{General-Bu_ZIVbk.js → General-B5vcSEhP.js} +2 -2
- package/dist/{IncidentRecord-CQdv_bN5.js → IncidentRecord-wmStcEag.js} +5 -5
- package/dist/{IncidentsList-DwQ0wuM8.js → IncidentsList-CFx5tsxP.js} +2 -2
- package/dist/{NewRolePage-C-wbA-uW.js → NewRolePage-CZxAp7LR.js} +2 -2
- package/dist/{ProfilePage-7Xk2hsNL.js → ProfilePage-B-T8kBcc.js} +3 -3
- package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-CZtvUH5L.js → RecordHeader.vue_vue_type_script_setup_true_lang-Bt5mT19g.js} +1 -1
- package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-uLrX13ab.js → ResourcePage.vue_vue_type_script_setup_true_lang-DOiFuJnH.js} +1 -1
- package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-V2D7fhR9.js → RoleEditor.vue_vue_type_script_setup_true_lang-CqSsNPCw.js} +1 -1
- package/dist/{RolePage-Crp71rRb.js → RolePage-zcUWpuDE.js} +3 -3
- package/dist/{RolesPage-DKXXnnDV.js → RolesPage-C7_zWw-c.js} +1 -1
- package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-5ogQCj8M.js → SectionNavigator.vue_vue_type_script_setup_true_lang-BlCx9dVL.js} +2 -2
- package/dist/{ServiceAccountDialog.vue_vue_type_script_setup_true_lang-CGvJW3bi.js → ServiceAccountDialog.vue_vue_type_script_setup_true_lang-C2D_D5Hi.js} +1 -1
- package/dist/{ServiceAccountRecord-Caj7mo3A.js → ServiceAccountRecord-BYxpHzTR.js} +4 -4
- package/dist/{ServiceAccountsList-D-YqPi_h.js → ServiceAccountsList-BUuK-RUj.js} +3 -3
- package/dist/{Sessions-Bv5GU5Oi.js → Sessions-Cm-Kilwl.js} +1 -1
- package/dist/{SettingsPage-lRWvsMYK.js → SettingsPage-Bavl0K-F.js} +2 -2
- package/dist/{SignIn-m6PANavm.js → SignIn-SfEhFiyM.js} +1 -1
- package/dist/{SignInPage-C9--4P11.js → SignInPage-BU0n2ehq.js} +1 -1
- package/dist/{SignIns-BhLnkY08.js → SignIns-Ahbn5cO6.js} +1 -1
- package/dist/{UserRecord-L3ahHNjb.js → UserRecord-3pCKMHkq.js} +4 -4
- package/dist/{UsersList-C6u3YCCp.js → UsersList-vw3aDpvo.js} +2 -2
- package/dist/access/index.js +3 -3
- package/dist/app/index.js +1 -1
- package/dist/{application-C900Wz0A.js → application-CHPpOssP.js} +1 -1
- package/dist/back-LcLlFodC.js +63 -0
- package/dist/{chrome-nUcmVu8G.js → chrome-kMBKIB1N.js} +2 -2
- package/dist/collection/index.js +2 -2
- package/dist/form/GroupSheet.vue.d.ts +3 -1
- package/dist/form/index.js +3 -3
- package/dist/identity/index.js +1 -1
- package/dist/incidents/index.js +1 -1
- package/dist/{index-vES_D5ls.js → index-Ct7W_gYE.js} +2 -2
- package/dist/{index-_hDHxrt5.js → index-D9_xqF5g.js} +3 -3
- package/dist/{index-D5DuvKP1.js → index-nByFc1eL.js} +12 -12
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/{neighbors-DrEahe7B.js → neighbors-BpypL3Wb.js} +32 -31
- package/dist/notifications/index.js +1 -1
- package/dist/page/back.d.ts +37 -0
- package/dist/page/index.d.ts +1 -0
- package/dist/page/index.js +46 -42
- package/dist/resource/index.js +1 -1
- package/dist/router/index.js +1 -1
- package/dist/router/sections.d.ts +1 -1
- package/dist/sections-CSpJN0Z7.js +54 -0
- package/dist/shell/index.js +1 -1
- package/dist/testing/index.js +1 -1
- package/dist/{useGroupSheet-Qqo3ywsS.js → useGroupSheet-B-Hs4gNO.js} +104 -97
- package/dist/{useSaveChrome-7huA3FzR.js → useSaveChrome-DB9OwIjT.js} +1 -1
- package/package.json +1 -1
- package/dist/sections-DI_JhgQG.js +0 -53
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.16.0 — 2026-10-22
|
|
4
|
+
|
|
5
|
+
Back to the page a record was opened from.
|
|
6
|
+
|
|
7
|
+
### New
|
|
8
|
+
- **page:** `useBackLinks()` returns `backHere(to)` and `keepBack(to)`. `backHere` adds `?back=<current path>&back_title=<the page's title>` (the title is the page chrome's, so a caller passes nothing and the link updates once the record has loaded); `keepBack` carries the page's own `back` and `back_title`. `BACK_PARAM` and `BACK_TITLE_PARAM` are exported.
|
|
9
|
+
- **page:** `AdaptivePageShell` (so `EditorPage`, `ResourcePage` and list pages) replaces the page's back with the valid `?back=`, on the desktop toolbar and the phone bar alike. The label is `back_title` (text, trimmed, 80 characters), else the target route's `meta.titleKey`. A back that is not a single-slash path of this app, resolves to no route (the catch-all does not count), is the current page, or has no label is ignored and the page keeps its own.
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
- **router:** `useRouteSections` keeps `back` and `back_title` in a sub-page's section links (the rest of a sub-page's query is still left behind); sections already kept the whole query.
|
|
13
|
+
- **collection:** the previous / next links of `useCollectionNeighbors` drop `back` and `back_title`: another record is not reached from the page the user came from.
|
|
14
|
+
|
|
15
|
+
## 0.15.3 — 2026-10-21
|
|
16
|
+
|
|
17
|
+
A group sheet focuses its first error.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
- **form:** `GroupSheet` calls `focusFirstError` on its body once it has opened and after a refused Save, so a sheet opened with errors already set (`form.errors.add(field, message)` before `present()`) lands on the first flagged field in page order instead of the first control. No new API and no option: with no errors nothing changes. An application that focused the field itself after `present()` can drop that code.
|
|
21
|
+
|
|
3
22
|
## 0.15.2 — 2026-10-20
|
|
4
23
|
|
|
5
24
|
A hand-built `Idempotency-Key` header is now a lint error.
|
|
@@ -13,7 +13,7 @@ import { b as W } from "./routeResource-DlTsGTg_.js";
|
|
|
13
13
|
import { _ as X } from "./AsyncSection.vue_vue_type_script_setup_true_lang-CX8mpXRE.js";
|
|
14
14
|
import { _ as Y } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
|
|
15
15
|
import { u as Z } from "./useLoad-M7V-AVwR.js";
|
|
16
|
-
import { P as tt, f as et, j as at } from "./index-
|
|
16
|
+
import { P as tt, f as et, j as at } from "./index-nByFc1eL.js";
|
|
17
17
|
import { _ as st } from "./ActionRow.vue_vue_type_script_setup_true_lang-DybAIOHS.js";
|
|
18
18
|
const ot = {
|
|
19
19
|
class: "flex min-w-0 flex-col gap-group-gap",
|
|
@@ -1,29 +1,30 @@
|
|
|
1
|
-
import { defineComponent as L, computed as
|
|
2
|
-
import { a as
|
|
3
|
-
import { _ as
|
|
1
|
+
import { defineComponent as L, computed as x, openBlock as l, createElementBlock as d, Fragment as M, renderList as R, createBlock as w, withCtx as _, createTextVNode as y, toDisplayString as h, unref as s, createElementVNode as m, mergeProps as N, createVNode as g, createCommentVNode as f, renderSlot as v, toValue as z, watch as S, onMounted as I, onBeforeUnmount as T, useTemplateRef as V, provide as A, ref as H, createSlots as D, normalizeClass as K } from "vue";
|
|
2
|
+
import { a as O } from "./mediaQuery-CygcXmFW.js";
|
|
3
|
+
import { _ as q } from "./BottomDockPortal.vue_vue_type_script_setup_true_lang-DmwR-2SP.js";
|
|
4
4
|
import { useI18n as j } from "vue-i18n";
|
|
5
|
-
import { _ as
|
|
6
|
-
import { _ as
|
|
7
|
-
import { _ as
|
|
8
|
-
import { RouterLink as
|
|
9
|
-
import { u as
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
|
|
5
|
+
import { _ as Q } from "./Button.vue_vue_type_script_setup_true_lang-JrqhO99l.js";
|
|
6
|
+
import { _ as $ } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
|
|
7
|
+
import { _ as U } from "./Menu.vue_vue_type_script_setup_true_lang-Cqu4Ebsb.js";
|
|
8
|
+
import { RouterLink as E, useRoute as W } from "vue-router";
|
|
9
|
+
import { u as Y } from "./format-Cp1h0vsC.js";
|
|
10
|
+
import { u as F, c as G, p as J } from "./chrome-kMBKIB1N.js";
|
|
11
|
+
import { b as X } from "./back-LcLlFodC.js";
|
|
12
|
+
import { d as Z } from "./context-Ch1r4fdN.js";
|
|
13
|
+
const ee = {
|
|
13
14
|
key: 0,
|
|
14
15
|
"data-page-actions": "",
|
|
15
16
|
class: "flex min-w-0 flex-wrap items-center justify-end gap-2"
|
|
16
|
-
},
|
|
17
|
+
}, te = ["aria-label", "onClick"], P = /* @__PURE__ */ L({
|
|
17
18
|
__name: "PageActions",
|
|
18
19
|
props: {
|
|
19
20
|
actions: {},
|
|
20
21
|
leading: {}
|
|
21
22
|
},
|
|
22
23
|
setup(p) {
|
|
23
|
-
const e = p, { t:
|
|
24
|
+
const e = p, { t: n } = j(), u = x(() => [
|
|
24
25
|
...e.leading ? [e.leading] : [],
|
|
25
26
|
...e.actions.filter((t) => t.placement !== "overflow" && t.tone !== "critical")
|
|
26
|
-
]), r =
|
|
27
|
+
]), r = x(() => e.actions.filter((t) => t.placement === "overflow" || t.tone === "critical").map((t) => ({
|
|
27
28
|
id: t.id,
|
|
28
29
|
label: t.label,
|
|
29
30
|
icon: t.icon,
|
|
@@ -35,56 +36,56 @@ const X = {
|
|
|
35
36
|
function c(t) {
|
|
36
37
|
return t === e.leading || t.prominence === "plain" ? "plain" : t.prominence === "standard" ? "standard" : t.placement === "primary" ? "primary" : "standard";
|
|
37
38
|
}
|
|
38
|
-
return (t,
|
|
39
|
-
(
|
|
40
|
-
key:
|
|
41
|
-
prominence: c(
|
|
42
|
-
icon:
|
|
43
|
-
disabled:
|
|
44
|
-
processing:
|
|
45
|
-
"keyboard-shortcut":
|
|
46
|
-
"data-page-action":
|
|
47
|
-
onClick: (
|
|
39
|
+
return (t, i) => u.value.length || r.value.length ? (l(), d("div", ee, [
|
|
40
|
+
(l(!0), d(M, null, R(u.value, (a) => (l(), w(Q, {
|
|
41
|
+
key: a.id,
|
|
42
|
+
prominence: c(a),
|
|
43
|
+
icon: a.icon,
|
|
44
|
+
disabled: a.disabled,
|
|
45
|
+
processing: a.processing,
|
|
46
|
+
"keyboard-shortcut": a.keyboardShortcut,
|
|
47
|
+
"data-page-action": a.id,
|
|
48
|
+
onClick: (b) => a.onClick()
|
|
48
49
|
}, {
|
|
49
|
-
default:
|
|
50
|
-
|
|
50
|
+
default: _(() => [
|
|
51
|
+
y(h(a.label), 1)
|
|
51
52
|
]),
|
|
52
53
|
_: 2
|
|
53
54
|
}, 1032, ["prominence", "icon", "disabled", "processing", "keyboard-shortcut", "data-page-action", "onClick"]))), 128)),
|
|
54
|
-
r.value.length ? (
|
|
55
|
+
r.value.length ? (l(), w(U, {
|
|
55
56
|
key: 0,
|
|
56
57
|
items: r.value,
|
|
57
|
-
label:
|
|
58
|
+
label: s(n)("core.page.more_actions")
|
|
58
59
|
}, {
|
|
59
|
-
trigger:
|
|
60
|
-
m("button", N({ type: "button" },
|
|
61
|
-
"aria-label":
|
|
60
|
+
trigger: _(({ toggle: a, attrs: b }) => [
|
|
61
|
+
m("button", N({ type: "button" }, b, {
|
|
62
|
+
"aria-label": s(n)("core.page.more_actions"),
|
|
62
63
|
"data-page-overflow": "",
|
|
63
64
|
class: "hit-target flex size-9 cursor-pointer items-center justify-center rounded-button bg-fill text-content-strong transition-colors duration-motion-fast hover:bg-fill-strong focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus",
|
|
64
|
-
onClick:
|
|
65
|
+
onClick: a
|
|
65
66
|
}), [
|
|
66
|
-
|
|
67
|
-
], 16,
|
|
67
|
+
g(s($), { name: "moreLine" })
|
|
68
|
+
], 16, te)
|
|
68
69
|
]),
|
|
69
70
|
_: 1
|
|
70
71
|
}, 8, ["items", "label"])) : f("", !0)
|
|
71
72
|
])) : f("", !0);
|
|
72
73
|
}
|
|
73
|
-
}),
|
|
74
|
+
}), ae = {
|
|
74
75
|
"data-page-toolbar": "",
|
|
75
76
|
class: "sticky top-[var(--shell-banner-h,0px)] z-20 flex min-h-bar-height min-w-0 flex-wrap items-center gap-2.5 border-b border-border-separator bg-surface-page/85 py-2 pr-6 pl-4 backdrop-blur-xl"
|
|
76
|
-
},
|
|
77
|
+
}, ne = ["aria-label"], oe = {
|
|
77
78
|
class: "flex shrink-0 text-content-link",
|
|
78
79
|
"aria-hidden": "true"
|
|
79
|
-
},
|
|
80
|
+
}, se = { class: "flex min-w-0 items-center" }, le = {
|
|
80
81
|
class: "flex shrink-0 text-content-disabled",
|
|
81
82
|
"aria-hidden": "true"
|
|
82
|
-
},
|
|
83
|
+
}, ie = { class: "flex min-w-0 shrink-0 items-center" }, re = { class: "truncate" }, ce = {
|
|
83
84
|
key: 2,
|
|
84
85
|
class: "flex shrink-0 items-center gap-1.5 text-footnote text-content-muted",
|
|
85
86
|
role: "status",
|
|
86
87
|
"data-page-status": ""
|
|
87
|
-
},
|
|
88
|
+
}, ue = /* @__PURE__ */ L({
|
|
88
89
|
__name: "PageToolbar",
|
|
89
90
|
props: {
|
|
90
91
|
back: {},
|
|
@@ -94,117 +95,117 @@ const X = {
|
|
|
94
95
|
status: {}
|
|
95
96
|
},
|
|
96
97
|
setup(p) {
|
|
97
|
-
const e = p, { t:
|
|
98
|
-
return (c, t) => (
|
|
99
|
-
u.value.length && r.value ? (
|
|
98
|
+
const e = p, { t: n } = j(), u = x(() => e.path && e.path.length >= 2 ? e.path.slice(0, -1) : []), r = x(() => e.path && u.value.length ? e.path[e.path.length - 1] ?? null : e.back ?? null);
|
|
99
|
+
return (c, t) => (l(), d("div", ae, [
|
|
100
|
+
u.value.length && r.value ? (l(), d("nav", {
|
|
100
101
|
key: 0,
|
|
101
102
|
"data-page-path": "",
|
|
102
|
-
"aria-label":
|
|
103
|
+
"aria-label": s(n)("core.page.breadcrumbs"),
|
|
103
104
|
class: "-ml-1 flex min-w-0 items-center"
|
|
104
105
|
}, [
|
|
105
|
-
m("span",
|
|
106
|
-
|
|
106
|
+
m("span", oe, [
|
|
107
|
+
g(s($), {
|
|
107
108
|
name: "arrowLeftSLine",
|
|
108
109
|
size: 20
|
|
109
110
|
})
|
|
110
111
|
]),
|
|
111
|
-
m("ol",
|
|
112
|
-
(
|
|
113
|
-
key:
|
|
112
|
+
m("ol", se, [
|
|
113
|
+
(l(!0), d(M, null, R(u.value, (i) => (l(), d("li", {
|
|
114
|
+
key: i.label,
|
|
114
115
|
class: "flex min-w-0 max-w-48 shrink items-center max-lg:hidden"
|
|
115
116
|
}, [
|
|
116
|
-
|
|
117
|
-
to:
|
|
117
|
+
g(s(E), {
|
|
118
|
+
to: i.to,
|
|
118
119
|
"data-page-path-item": "",
|
|
119
120
|
class: "min-w-0 truncate rounded-control px-1 py-1 text-subheadline text-content-muted hover:bg-tint-soft hover:text-content-link focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus"
|
|
120
121
|
}, {
|
|
121
|
-
default:
|
|
122
|
-
|
|
122
|
+
default: _(() => [
|
|
123
|
+
y(h(i.label), 1)
|
|
123
124
|
]),
|
|
124
125
|
_: 2
|
|
125
126
|
}, 1032, ["to"]),
|
|
126
|
-
m("span",
|
|
127
|
-
|
|
127
|
+
m("span", le, [
|
|
128
|
+
g(s($), {
|
|
128
129
|
name: "arrowRightSLine",
|
|
129
130
|
size: 14
|
|
130
131
|
})
|
|
131
132
|
])
|
|
132
133
|
]))), 128)),
|
|
133
|
-
m("li",
|
|
134
|
-
|
|
134
|
+
m("li", ie, [
|
|
135
|
+
g(s(E), {
|
|
135
136
|
to: r.value.to,
|
|
136
137
|
"data-page-back": "",
|
|
137
138
|
class: "min-w-0 truncate rounded-control px-1 py-1 text-subheadline font-medium text-content-link hover:bg-tint-soft focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus"
|
|
138
139
|
}, {
|
|
139
|
-
default:
|
|
140
|
-
|
|
140
|
+
default: _(() => [
|
|
141
|
+
y(h(r.value.label), 1)
|
|
141
142
|
]),
|
|
142
143
|
_: 1
|
|
143
144
|
}, 8, ["to"])
|
|
144
145
|
])
|
|
145
146
|
])
|
|
146
|
-
], 8,
|
|
147
|
+
], 8, ne)) : e.back ? (l(), w(s(E), {
|
|
147
148
|
key: 1,
|
|
148
149
|
to: e.back.to,
|
|
149
150
|
"data-page-back": "",
|
|
150
151
|
class: "-ml-1 flex min-w-0 items-center gap-0.5 rounded-control py-1 pr-2 pl-0.5 text-subheadline font-medium text-content-link hover:bg-tint-soft focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus"
|
|
151
152
|
}, {
|
|
152
|
-
default:
|
|
153
|
-
|
|
153
|
+
default: _(() => [
|
|
154
|
+
g(s($), {
|
|
154
155
|
name: "arrowLeftSLine",
|
|
155
156
|
size: 20
|
|
156
157
|
}),
|
|
157
|
-
m("span",
|
|
158
|
+
m("span", re, h(e.back.label), 1)
|
|
158
159
|
]),
|
|
159
160
|
_: 1
|
|
160
161
|
}, 8, ["to"])) : f("", !0),
|
|
161
162
|
t[1] || (t[1] = m("div", { class: "min-w-0 flex-1" }, null, -1)),
|
|
162
|
-
|
|
163
|
-
e.status ? (
|
|
163
|
+
v(c.$slots, "pager"),
|
|
164
|
+
e.status ? (l(), d("span", ce, [
|
|
164
165
|
t[0] || (t[0] = m("span", {
|
|
165
166
|
class: "size-1.75 rounded-full bg-tint",
|
|
166
167
|
"aria-hidden": "true"
|
|
167
168
|
}, null, -1)),
|
|
168
|
-
|
|
169
|
+
y(h(e.status), 1)
|
|
169
170
|
])) : f("", !0),
|
|
170
|
-
|
|
171
|
+
g(P, {
|
|
171
172
|
actions: e.actions,
|
|
172
173
|
leading: e.leading
|
|
173
174
|
}, null, 8, ["actions", "leading"])
|
|
174
175
|
]));
|
|
175
176
|
}
|
|
176
177
|
});
|
|
177
|
-
function
|
|
178
|
+
function de(p, e, n = !0) {
|
|
178
179
|
const u = F();
|
|
179
|
-
if (!u || !
|
|
180
|
+
if (!u || !z(n)) return;
|
|
180
181
|
const r = u.claim();
|
|
181
182
|
let c = null;
|
|
182
|
-
S(() =>
|
|
183
|
+
S(() => z(e), (t) => r.setTitle(t), { immediate: !0 }), I(() => {
|
|
183
184
|
!p.value || typeof IntersectionObserver > "u" || (c = new IntersectionObserver(([t]) => r.setTitleInView(t?.isIntersecting ?? !0), { rootMargin: "-52px 0px 0px 0px" }), c.observe(p.value));
|
|
184
185
|
}), T(() => {
|
|
185
186
|
c?.disconnect(), r.clearTitle();
|
|
186
187
|
});
|
|
187
188
|
}
|
|
188
|
-
const
|
|
189
|
+
const pe = { class: "flex min-w-0 flex-wrap items-center gap-x-4 gap-y-3" }, me = { class: "flex min-w-0 flex-[1_1_16rem] items-center gap-3.5" }, fe = {
|
|
189
190
|
key: 0,
|
|
190
191
|
"aria-hidden": "true",
|
|
191
192
|
class: "flex size-10 shrink-0 items-center justify-center rounded-group bg-tile-brand text-tile-brand-foreground compact:hidden"
|
|
192
|
-
},
|
|
193
|
+
}, ge = { class: "flex min-w-0 flex-col gap-0.5" }, ve = { class: "flex min-w-0 flex-wrap items-baseline gap-2.5" }, he = {
|
|
193
194
|
key: 0,
|
|
194
195
|
"data-resource-count": "",
|
|
195
196
|
class: "rounded-full bg-fill px-2.5 py-0.5 text-subheadline font-semibold tabular-nums text-content-muted compact:bg-transparent compact:px-0 compact:font-normal"
|
|
196
|
-
},
|
|
197
|
+
}, be = {
|
|
197
198
|
key: 0,
|
|
198
199
|
class: "text-subheadline text-content-muted max-md:hidden"
|
|
199
|
-
},
|
|
200
|
+
}, ke = {
|
|
200
201
|
key: 0,
|
|
201
202
|
class: "ml-auto flex items-center gap-3"
|
|
202
|
-
},
|
|
203
|
+
}, _e = {
|
|
203
204
|
key: 0,
|
|
204
205
|
class: "flex shrink-0 items-center gap-1.5 text-footnote text-content-muted",
|
|
205
206
|
role: "status",
|
|
206
207
|
"data-page-status": ""
|
|
207
|
-
},
|
|
208
|
+
}, xe = /* @__PURE__ */ L({
|
|
208
209
|
__name: "ResourceHeader",
|
|
209
210
|
props: {
|
|
210
211
|
title: {},
|
|
@@ -217,79 +218,79 @@ const ue = { class: "flex min-w-0 flex-wrap items-center gap-x-4 gap-y-3" }, de
|
|
|
217
218
|
inlineActions: { type: Boolean, default: !1 }
|
|
218
219
|
},
|
|
219
220
|
setup(p) {
|
|
220
|
-
const e = p,
|
|
221
|
-
return
|
|
222
|
-
m("div",
|
|
223
|
-
|
|
224
|
-
e.icon ? (
|
|
225
|
-
|
|
221
|
+
const e = p, n = Y(), u = O("(max-width: 47.999rem)"), r = x(() => e.count == null ? null : n.number(e.count)), c = V("titleElement");
|
|
222
|
+
return de(c, () => e.title), (t, i) => (l(), d("div", pe, [
|
|
223
|
+
m("div", me, [
|
|
224
|
+
v(t.$slots, "leading", {}, () => [
|
|
225
|
+
e.icon ? (l(), d("span", fe, [
|
|
226
|
+
g(s($), {
|
|
226
227
|
name: e.icon,
|
|
227
228
|
size: 20
|
|
228
229
|
}, null, 8, ["name"])
|
|
229
230
|
])) : f("", !0)
|
|
230
231
|
]),
|
|
231
|
-
m("div",
|
|
232
|
-
m("div",
|
|
232
|
+
m("div", ge, [
|
|
233
|
+
m("div", ve, [
|
|
233
234
|
m("h1", {
|
|
234
235
|
ref_key: "titleElement",
|
|
235
236
|
ref: c,
|
|
236
237
|
class: "min-w-0 text-large-title font-semibold tracking-tight break-words text-content-strong"
|
|
237
|
-
},
|
|
238
|
-
r.value !== null ? (
|
|
238
|
+
}, h(e.title), 513),
|
|
239
|
+
r.value !== null ? (l(), d("span", he, h(r.value), 1)) : f("", !0)
|
|
239
240
|
]),
|
|
240
|
-
e.description ? (
|
|
241
|
-
|
|
241
|
+
e.description ? (l(), d("p", be, h(e.description), 1)) : f("", !0),
|
|
242
|
+
v(t.$slots, "description")
|
|
242
243
|
])
|
|
243
244
|
]),
|
|
244
|
-
e.inlineActions || !
|
|
245
|
-
e.status ? (
|
|
246
|
-
|
|
245
|
+
e.inlineActions || !s(u) ? (l(), d("div", ke, [
|
|
246
|
+
e.status ? (l(), d("span", _e, [
|
|
247
|
+
i[0] || (i[0] = m("span", {
|
|
247
248
|
class: "size-1.75 rounded-full bg-tint",
|
|
248
249
|
"aria-hidden": "true"
|
|
249
250
|
}, null, -1)),
|
|
250
|
-
|
|
251
|
+
y(h(e.status), 1)
|
|
251
252
|
])) : f("", !0),
|
|
252
|
-
|
|
253
|
+
g(P, {
|
|
253
254
|
actions: e.actions,
|
|
254
255
|
leading: e.leading
|
|
255
256
|
}, null, 8, ["actions", "leading"])
|
|
256
257
|
])) : f("", !0)
|
|
257
258
|
]));
|
|
258
259
|
}
|
|
259
|
-
}), [
|
|
260
|
-
function
|
|
261
|
-
const
|
|
262
|
-
let u =
|
|
263
|
-
const r =
|
|
260
|
+
}), [we, je] = Z("vue-core.pageSectionBack");
|
|
261
|
+
function ye(p, e) {
|
|
262
|
+
const n = W();
|
|
263
|
+
let u = n.fullPath;
|
|
264
|
+
const r = n.matched[n.matched.length - 1];
|
|
264
265
|
S(
|
|
265
|
-
() =>
|
|
266
|
-
(
|
|
267
|
-
|
|
266
|
+
() => n.fullPath,
|
|
267
|
+
(a) => {
|
|
268
|
+
n.matched[n.matched.length - 1] === r && (u = a);
|
|
268
269
|
}
|
|
269
270
|
);
|
|
270
271
|
let c, t;
|
|
271
|
-
function
|
|
272
|
-
c?.disconnect(), clearTimeout(t), document.removeEventListener("pointerdown",
|
|
272
|
+
function i() {
|
|
273
|
+
c?.disconnect(), clearTimeout(t), document.removeEventListener("pointerdown", i, !0), document.removeEventListener("keydown", i, !0);
|
|
273
274
|
}
|
|
274
|
-
|
|
275
|
-
const
|
|
276
|
-
if (!
|
|
277
|
-
const
|
|
278
|
-
const
|
|
279
|
-
(
|
|
275
|
+
I(() => {
|
|
276
|
+
const a = e.focusMemory.take(u);
|
|
277
|
+
if (!a || !p.value) return;
|
|
278
|
+
const b = () => {
|
|
279
|
+
const k = Array.from(p.value?.querySelectorAll("a[href]") ?? []).find(
|
|
280
|
+
(C) => C.getAttribute("href") === a.href
|
|
280
281
|
);
|
|
281
|
-
|
|
282
|
+
k && (k.focus({ preventScroll: !0 }), window.scrollTo({ top: a.top, behavior: "instant" }), i());
|
|
282
283
|
};
|
|
283
|
-
c = new MutationObserver(
|
|
284
|
+
c = new MutationObserver(b), c.observe(p.value, { subtree: !0, childList: !0 }), document.addEventListener("pointerdown", i, !0), document.addEventListener("keydown", i, !0), t = setTimeout(i, 1e4), b();
|
|
284
285
|
}), T(() => {
|
|
285
|
-
const
|
|
286
|
-
|
|
286
|
+
const a = document.activeElement;
|
|
287
|
+
a instanceof HTMLAnchorElement && p.value?.contains(a) && e.focusMemory.put(u, { href: a.getAttribute("href") ?? "", top: window.scrollY }), i();
|
|
287
288
|
});
|
|
288
289
|
}
|
|
289
|
-
const
|
|
290
|
+
const $e = { key: 1 }, Se = {
|
|
290
291
|
key: 2,
|
|
291
292
|
class: "flex justify-center pt-2"
|
|
292
|
-
},
|
|
293
|
+
}, Te = { class: "dock-safe-area pointer-events-auto order-1 border-t border-border-separator bg-surface-cell pt-screen-padding pr-[max(var(--app-screen-padding),var(--app-safe-right))] pb-screen-padding pl-[max(var(--app-screen-padding),var(--app-safe-left))]" }, Fe = /* @__PURE__ */ L({
|
|
293
294
|
__name: "AdaptivePageShell",
|
|
294
295
|
props: {
|
|
295
296
|
title: {},
|
|
@@ -303,84 +304,85 @@ const we = { key: 1 }, ye = {
|
|
|
303
304
|
width: { default: "full" }
|
|
304
305
|
},
|
|
305
306
|
setup(p) {
|
|
306
|
-
const e = p,
|
|
307
|
-
|
|
308
|
-
const u =
|
|
307
|
+
const e = p, n = F() ?? G();
|
|
308
|
+
A(J, n);
|
|
309
|
+
const u = n.claimShell();
|
|
309
310
|
T(u);
|
|
310
|
-
const r =
|
|
311
|
-
|
|
312
|
-
const c =
|
|
313
|
-
|
|
314
|
-
const
|
|
311
|
+
const r = V("root");
|
|
312
|
+
ye(r, n);
|
|
313
|
+
const c = O("(max-width: 47.999rem)"), t = H(null);
|
|
314
|
+
A(we, t);
|
|
315
|
+
const i = X(), a = x(() => {
|
|
315
316
|
if (t.value) return t.value;
|
|
317
|
+
if (i.value) return i.value;
|
|
316
318
|
if (e.back !== void 0) return e.back;
|
|
317
|
-
const
|
|
318
|
-
return
|
|
319
|
-
}),
|
|
320
|
-
const
|
|
321
|
-
return
|
|
322
|
-
}),
|
|
319
|
+
const o = e.path?.[e.path.length - 1];
|
|
320
|
+
return o ? { label: o.label, to: o.to } : null;
|
|
321
|
+
}), b = x(() => {
|
|
322
|
+
const o = t.value;
|
|
323
|
+
return o ? o.path ? [...i.value ? [i.value] : e.path ?? (e.back ? [e.back] : []), ...o.path] : null : i.value ? null : e.path;
|
|
324
|
+
}), k = n.claim();
|
|
323
325
|
S(
|
|
324
326
|
() => [e.actions, e.documentTitle],
|
|
325
|
-
([
|
|
327
|
+
([o, B]) => k.setRegistration({ actions: o, leading: null, status: null, navTitle: null, documentTitle: B ?? null }),
|
|
326
328
|
{ immediate: !0 }
|
|
327
|
-
), S(
|
|
328
|
-
|
|
329
|
+
), S(a, (o) => k.setBack(o), { immediate: !0 }), T(() => {
|
|
330
|
+
k.clearRegistration(), k.clearBack();
|
|
329
331
|
});
|
|
330
|
-
const
|
|
331
|
-
return (
|
|
332
|
+
const C = { full: "", content: "max-w-content", readable: "max-w-readable" };
|
|
333
|
+
return (o, B) => (l(), d("div", {
|
|
332
334
|
ref_key: "root",
|
|
333
335
|
ref: r,
|
|
334
336
|
class: "min-w-0 w-full flex-1 bg-surface-page",
|
|
335
337
|
"data-page-shell": ""
|
|
336
338
|
}, [
|
|
337
|
-
|
|
339
|
+
a.value && !s(c) ? (l(), w(ue, {
|
|
338
340
|
key: 0,
|
|
339
|
-
back:
|
|
340
|
-
path:
|
|
341
|
-
actions:
|
|
342
|
-
leading:
|
|
343
|
-
status:
|
|
344
|
-
},
|
|
345
|
-
|
|
341
|
+
back: a.value,
|
|
342
|
+
path: b.value,
|
|
343
|
+
actions: s(n).actions.value,
|
|
344
|
+
leading: s(n).leading.value,
|
|
345
|
+
status: s(n).status.value
|
|
346
|
+
}, D({ _: 2 }, [
|
|
347
|
+
o.$slots.pager ? {
|
|
346
348
|
name: "pager",
|
|
347
|
-
fn:
|
|
348
|
-
|
|
349
|
+
fn: _(() => [
|
|
350
|
+
v(o.$slots, "pager")
|
|
349
351
|
]),
|
|
350
352
|
key: "0"
|
|
351
353
|
} : void 0
|
|
352
354
|
]), 1032, ["back", "path", "actions", "leading", "status"])) : f("", !0),
|
|
353
355
|
m("div", {
|
|
354
|
-
class:
|
|
356
|
+
class: K(["mx-auto flex min-w-0 flex-col gap-section-gap pt-section-gap pr-[max(var(--app-screen-padding),var(--app-safe-right))] pb-[max(var(--app-screen-padding),var(--app-safe-bottom),calc(var(--bottom-dock-h,0px)+var(--app-screen-padding)))] pl-[max(var(--app-screen-padding),var(--app-safe-left))] lg:pt-[calc(var(--app-section-gap)*1.5)] lg:pr-[max(2.5rem,var(--app-safe-right))] lg:pl-[max(2.5rem,var(--app-safe-left))]", C[e.width]])
|
|
355
357
|
}, [
|
|
356
|
-
|
|
357
|
-
|
|
358
|
+
v(o.$slots, "header", {}, () => [
|
|
359
|
+
g(xe, {
|
|
358
360
|
title: e.title,
|
|
359
361
|
description: e.description,
|
|
360
362
|
icon: e.icon,
|
|
361
363
|
count: e.count,
|
|
362
|
-
actions:
|
|
363
|
-
leading:
|
|
364
|
-
status:
|
|
364
|
+
actions: a.value ? [] : s(n).actions.value,
|
|
365
|
+
leading: a.value ? null : s(n).leading.value,
|
|
366
|
+
status: a.value ? null : s(n).status.value
|
|
365
367
|
}, null, 8, ["title", "description", "icon", "count", "actions", "leading", "status"])
|
|
366
368
|
]),
|
|
367
|
-
|
|
369
|
+
o.$slots.header && !a.value && !s(c) ? (l(), w(P, {
|
|
368
370
|
key: 0,
|
|
369
|
-
actions:
|
|
370
|
-
leading:
|
|
371
|
+
actions: s(n).actions.value,
|
|
372
|
+
leading: s(n).leading.value
|
|
371
373
|
}, null, 8, ["actions", "leading"])) : f("", !0),
|
|
372
|
-
|
|
373
|
-
|
|
374
|
+
o.$slots.notices ? (l(), d("div", $e, [
|
|
375
|
+
v(o.$slots, "notices")
|
|
374
376
|
])) : f("", !0),
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
377
|
+
v(o.$slots, "default"),
|
|
378
|
+
o.$slots.pager && s(c) ? (l(), d("div", Se, [
|
|
379
|
+
v(o.$slots, "pager")
|
|
378
380
|
])) : f("", !0)
|
|
379
381
|
], 2),
|
|
380
|
-
|
|
381
|
-
default:
|
|
382
|
-
m("div",
|
|
383
|
-
|
|
382
|
+
o.$slots.bottom ? (l(), w(q, { key: 1 }, {
|
|
383
|
+
default: _(() => [
|
|
384
|
+
m("div", Te, [
|
|
385
|
+
v(o.$slots, "bottom")
|
|
384
386
|
])
|
|
385
387
|
]),
|
|
386
388
|
_: 3
|
|
@@ -389,11 +391,11 @@ const we = { key: 1 }, ye = {
|
|
|
389
391
|
}
|
|
390
392
|
});
|
|
391
393
|
export {
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
394
|
+
Fe as _,
|
|
395
|
+
P as a,
|
|
396
|
+
ue as b,
|
|
397
|
+
xe as c,
|
|
398
|
+
je as d,
|
|
399
|
+
we as p,
|
|
400
|
+
de as u
|
|
399
401
|
};
|
|
@@ -5,7 +5,7 @@ import { u as b } from "./platform-ORzRR3Tw.js";
|
|
|
5
5
|
import { b as V } from "./routeResource-DlTsGTg_.js";
|
|
6
6
|
import { _ as R } from "./AsyncSection.vue_vue_type_script_setup_true_lang-CX8mpXRE.js";
|
|
7
7
|
import { u as E } from "./useLoad-M7V-AVwR.js";
|
|
8
|
-
import { P as N, f as B, k as P, j as S } from "./index-
|
|
8
|
+
import { P as N, f as B, k as P, j as S } from "./index-nByFc1eL.js";
|
|
9
9
|
import { _ as U } from "./ActionRow.vue_vue_type_script_setup_true_lang-DybAIOHS.js";
|
|
10
10
|
import { _ as I } from "./ViewTabs.vue_vue_type_script_setup_true_lang-BjdDXE3T.js";
|
|
11
11
|
const W = {
|
|
@@ -3,7 +3,7 @@ import { routerKey as ct } from "vue-router";
|
|
|
3
3
|
import { i as qe, a as ut } from "./error-CD7x0Jrz.js";
|
|
4
4
|
import { d as dt } from "./http-D6qOS6xs.js";
|
|
5
5
|
import { d as Re, o as ft, L as Te, e as je, w as pt, r as vt } from "./state-QDaxntgR.js";
|
|
6
|
-
import { _ as mt } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-
|
|
6
|
+
import { _ as mt } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-d_dPurWG.js";
|
|
7
7
|
import { useI18n as he } from "vue-i18n";
|
|
8
8
|
import { _ as ce } from "./Button.vue_vue_type_script_setup_true_lang-JrqhO99l.js";
|
|
9
9
|
import { _ as Ge } from "./Tabs.vue_vue_type_script_setup_true_lang-tpkGp98F.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { defineComponent as B, useTemplateRef as C, computed as y, ref as v, openBlock as D, createBlock as z, unref as r, withCtx as m, createVNode as F, createElementVNode as b, normalizeClass as $, toDisplayString as h } from "vue";
|
|
2
2
|
import { useI18n as q } from "vue-i18n";
|
|
3
3
|
import { a as k } from "./error-CD7x0Jrz.js";
|
|
4
|
-
import { u as V, _ as N } from "./CollectionPage.vue_vue_type_script_setup_true_lang-
|
|
4
|
+
import { u as V, _ as N } from "./CollectionPage.vue_vue_type_script_setup_true_lang-B5hSkJ2N.js";
|
|
5
5
|
import { u as P } from "./describeError-B-NMa--w.js";
|
|
6
6
|
import { u as I } from "./format-Cp1h0vsC.js";
|
|
7
|
-
import { e as a, R as O } from "./index-
|
|
7
|
+
import { e as a, R as O } from "./index-Ct7W_gYE.js";
|
|
8
8
|
import { _ as W } from "./AlertDialog.vue_vue_type_script_setup_true_lang-WuGvAOrj.js";
|
|
9
9
|
import { t as i } from "./toast-CqSDTWRX.js";
|
|
10
10
|
import { u as Y } from "./useLoad-M7V-AVwR.js";
|