@wssto2/vue-core 0.4.25 → 0.4.27
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 +33 -0
- package/dist/{AccessGate.vue_vue_type_script_setup_true_lang-DcbZBINh.js → AccessGate.vue_vue_type_script_setup_true_lang-J5HoyGNJ.js} +1 -1
- package/dist/{Activity-CI-l_OFl.js → Activity-xtkZq4vG.js} +3 -3
- package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-CxU9aNRQ.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-GUTIXuNd.js} +58 -53
- package/dist/{AsyncSection.vue_vue_type_script_setup_true_lang-Blj6KgCr.js → AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js} +45 -40
- package/dist/Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js +50 -0
- package/dist/{Changes-BdR0R20V.js → Changes-BPB8h56i.js} +4 -4
- package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-BNM_cbXa.js → CollectionPage.vue_vue_type_script_setup_true_lang-CVEYkb26.js} +3 -3
- package/dist/{DataTable.vue_vue_type_script_setup_true_lang-DPuH84I7.js → DataTable.vue_vue_type_script_setup_true_lang-DcQQ-uQS.js} +1 -1
- package/dist/{DeadLetters-CRTeoZS1.js → DeadLetters-DeYxkTMh.js} +4 -4
- package/dist/{General-hdmVP72B.js → General-BLbn4BCc.js} +2 -2
- package/dist/{NewRolePage-BPeKasOp.js → NewRolePage-B7DwFWPk.js} +4 -4
- package/dist/{ProfilePage-Dq9lcO5O.js → ProfilePage-CQYHj9Ns.js} +5 -5
- package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-szzWzdDu.js → RecordHeader.vue_vue_type_script_setup_true_lang-fmx0f8xi.js} +1 -1
- package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-BFaaFQSm.js → ResourcePage.vue_vue_type_script_setup_true_lang-BFBGvevP.js} +2 -2
- package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-B6g2760V.js → RoleEditor.vue_vue_type_script_setup_true_lang-DRHmjA9w.js} +2 -2
- package/dist/{RolePage-BYH-0fVI.js → RolePage-ODFu68Ce.js} +6 -6
- package/dist/{RolesPage-BRm5xDw7.js → RolesPage-B5RwSZ89.js} +4 -4
- package/dist/{SectionList.vue_vue_type_script_setup_true_lang-BJnz2ROc.js → SectionList.vue_vue_type_script_setup_true_lang-wyW7n3Uq.js} +1 -1
- package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-BltrQnrQ.js → SectionNavigator.vue_vue_type_script_setup_true_lang-Dmv6TpCi.js} +3 -3
- package/dist/{Sessions-B1eKG_I2.js → Sessions-wEdUsK-U.js} +3 -3
- package/dist/{SettingsPage-0P38Ty4w.js → SettingsPage-BVrMihx0.js} +4 -4
- package/dist/{SignIn-Dp8Ji0_r.js → SignIn-CK9rq8LQ.js} +2 -2
- package/dist/{SignInPage-CiStJboK.js → SignInPage-BORsM1g4.js} +2 -2
- package/dist/{SignInTable.vue_vue_type_script_setup_true_lang-ByEAVfjv.js → SignInTable.vue_vue_type_script_setup_true_lang-AakWNvaM.js} +1 -1
- package/dist/{SignIns-Bo7R2Coi.js → SignIns-C-8kVf7I.js} +4 -4
- package/dist/Timestamp.vue_vue_type_script_setup_true_lang-DRmzPDOP.js +51 -0
- package/dist/{UserRecord-DGq_PPy1.js → UserRecord-C1SzdpKu.js} +7 -7
- package/dist/{UsersList-BulNu4aE.js → UsersList-B3hc683r.js} +5 -5
- package/dist/access/index.js +1 -1
- package/dist/app/index.js +5 -5
- package/dist/collection/index.js +5 -5
- package/dist/content/Avatar.vue.d.ts +6 -0
- package/dist/content/Timestamp.vue.d.ts +14 -0
- package/dist/content/index.js +2 -2
- package/dist/{contributions-DsfmDoRD.js → contributions-BVBZP5Jb.js} +1 -1
- package/dist/form/index.js +2 -2
- package/dist/{guards-Dve61KjR.js → guards-BJZjc3FZ.js} +1 -1
- package/dist/{http-D_D9YbLH.js → http-BFfkA7gN.js} +1 -1
- package/dist/identity/index.js +1 -1
- package/dist/{index-Yy28omu6.js → index-C3E6DcO0.js} +6 -6
- package/dist/{index-BmowiT1y.js → index-LP6NNnow.js} +12 -12
- package/dist/{index-tnSTp0cM.js → index-qUaGJ9j2.js} +3 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/{navigation-Cm3iChlR.js → navigation-DpcDF0rX.js} +1 -1
- package/dist/{neighbors-DVN_cADL.js → neighbors-RVQ4O3Qv.js} +1 -1
- package/dist/notifications/index.js +1 -1
- package/dist/overlay/MenuButton.vue.d.ts +23 -0
- package/dist/overlay/index.d.ts +1 -0
- package/dist/overlay/index.js +59 -35
- package/dist/page/index.js +5 -5
- package/dist/platform/index.d.ts +25 -1
- package/dist/platform/index.js +59 -49
- package/dist/platform/platform.d.ts +9 -5
- package/dist/platform/session.d.ts +10 -0
- package/dist/platform/sessionUser.d.ts +8 -0
- package/dist/platform-PZpUkkMS.js +268 -0
- package/dist/resource/index.js +1 -1
- package/dist/router/index.js +3 -3
- package/dist/{rowLayout-D1vrdy0s.js → rowLayout-Dh749umr.js} +1 -1
- package/dist/{sections-D-kD98vu.js → sections-CeZl-Jxg.js} +1 -1
- package/dist/shell/index.js +6 -4
- package/dist/state/async.d.ts +16 -0
- package/dist/state/index.d.ts +1 -1
- package/dist/state/index.js +38 -37
- package/dist/{status-Bh3-Cg7o.js → status-D9iQJJiz.js} +2 -2
- package/dist/styles.css +1 -1
- package/dist/testing/index.js +1 -1
- package/dist/testing/platform.d.ts +10 -7
- package/package.json +3 -2
- package/dist/Avatar.vue_vue_type_script_setup_true_lang-CFIheaSr.js +0 -35
- package/dist/Timestamp.vue_vue_type_script_setup_true_lang-CU2Y5oYl.js +0 -34
- package/dist/platform-q3cjODLx.js +0 -255
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.27 — 2026-10-12
|
|
4
|
+
|
|
5
|
+
The gaps ARV lane W found when it moved its twin components onto the library. Four items (plus `Avatar` `src`, which `Timestamp` author needs); no existing default changes.
|
|
6
|
+
|
|
7
|
+
### Requires
|
|
8
|
+
- go-core unchanged: **`v1.7.0`**; **`vue` 3.5.19 or later**.
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Page chrome spec hooks.** The toolbar root is `data-page-toolbar`, the breadcrumb `nav` `data-page-path` and the actions group `data-page-actions`, beside the existing `data-page-shell`, `-back`, `-action="<id>"`, `-overflow`, `-path-item` and `-status`. The phone nav bar now carries `data-page-back` and `data-page-overflow` on its back and "More" buttons. All are documented as stable spec hooks (testing recipe); each appears once per page. ARV: the 39 specs that select `[data-test="page-toolbar"]`, `page-back`, `page-action-overflow`, `page-shell`, `page-status`, `page-path` and `page-actions` move to `[data-page-*]` when the catalogue screens adopt the library shell.
|
|
12
|
+
- **`Timestamp` `author`** (`@wssto2/vue-core/content`): `{ name: string; avatarUrl?: string | null } | null`. With an author the calendar icon gives way to the smallest `Avatar` and the name (truncated), then the date in muted text, which never shrinks; `precision` still applies, no author is the date alone, and an empty value still reads "No data". `avatarUrl` is the photo's full URL, **built by the app** (no auth or fetching in the library); ARV joins its legacy URL and the photo path. ARV: the 22 non-deferred `Timestamp` users (`:date` becomes `:value`, `with-time` becomes `precision`).
|
|
13
|
+
- **`Avatar` `src`** (`@wssto2/vue-core/content`): `src?: string | null`, a full URL. Draws the photo (round, `object-cover`, `alt` = the name, not draggable); the initials show when `src` is empty, while it loads and if it fails to load (never a broken-image icon), and a changed `src` retries.
|
|
14
|
+
- **`asyncState({ loading, error, value })`** (`@wssto2/vue-core/state`): the `AsyncState` of a region driven by plain flags, for `AsyncSection`'s one `state` prop (no second props surface). `value` is `undefined` until there is an answer (`null` is an answer, shown as empty); loading over a value is `refreshing`, an error over a value is `stale`, loading wins over an error, an empty error is none, and nothing yet is `loading`. ARV: the offer and contract document sections.
|
|
15
|
+
- **`MenuButton`** (`@wssto2/vue-core/overlay`): the round "⋯" button for a `Menu`'s `#trigger` slot. `<MenuButton v-bind="trigger" label="…" />` (props `label` required, `icon` default `moreLine`, plus the slot scope `presented`, `toggle`, `attrs`). It carries the trigger attrs and shows a pressed look (`data-pressed`) while the menu is open. ARV: `FollowUpRow`.
|
|
16
|
+
|
|
17
|
+
### Changes to existing behaviour
|
|
18
|
+
- None. **Pinned by tests that were updated:** none.
|
|
19
|
+
|
|
20
|
+
## 0.4.26 — 2026-10-12
|
|
21
|
+
|
|
22
|
+
A typed platform declared once, and the signed-in user changed in place. From ARV cutover g (the step f map, wave 2 step 0). Three items, one commit each.
|
|
23
|
+
|
|
24
|
+
### Requires
|
|
25
|
+
- go-core unchanged: **`v1.7.0`**; **`vue` 3.5.19 or later**.
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
- **`PlatformRegistry`** (`@wssto2/vue-core/platform`): the app says once what its session user and bootstrap config are, as it does for permissions: `declare module "@wssto2/vue-core/platform" { interface PlatformRegistry { user: ArvUser; config: ArvConfig } }`. Bare `Platform` (what `usePlatform()`, `createApplication({ platform })`, `createTestPlatform()` and `createTestSession()` use) is then `Platform<ArvUser, ArvConfig>`; a key left out falls back to `SessionUser` / `BootstrapConfig` (`RegisteredUser` and `RegisteredConfig` are exported). `createPlatform<U, C>` stays generic. **Moving from explicit generics:** declare the registry once, then drop the casts at every `usePlatform()` read and `Platform<User, Config>` annotations (they still compile: the same type). Checked by `typing.test-d.ts` (not augmented) and `test-data/registry` (augmented; `npm run typecheck:registry`, part of `check`).
|
|
29
|
+
- **`useSessionUser()`**: the signed-in user as a readonly computed ref, typed from the registry, `null` unless authenticated (a held, expired session is not a signed-in user). The impersonator stays on `session.state`. No `useSession()` reader: `usePlatform().session` is enough. ARV: the 39 files reading `useAuthStore().user` can read it.
|
|
30
|
+
- **`session.update(patch)`**: `patch` is `Partial<Pick<SessionSnapshot, "user" | "access" | "navigation">>` (`SessionPatch`). It replaces those parts of a signed-in session and keeps the status, `expiresAt`, impersonator and the rest. It is not a change of who is signed in: nothing in flight is cancelled and no late answer is dropped (a `refresh()` already asked still lands with the server's version). Reactive readers (`useSessionUser`, the access client, the application's locale-from-user) see the new value. A no-op unless authenticated; a `user.id` other than the signed-in one **throws** (a programming error: a different person is `session.establish`). ARV: `useAuthStore.write()` becomes `session.update(...)`, so a language or profile save no longer re-establishes the session.
|
|
31
|
+
|
|
32
|
+
### Changes to existing behaviour
|
|
33
|
+
- **Bare `Platform` follows the registry.** Without an augmentation nothing changes. With one, a platform built with another user type no longer fits bare `Platform`. `createTestPlatform({ config })` must then give the registered config's own fields (the test has no other source for them). ARV: `frontend/tests/app/features.test.ts` and `frontend/tests/support/arvApp.ts` (`createTestPlatform`) once the registry declares `config`.
|
|
34
|
+
- **Pinned by tests that were updated:** none.
|
|
35
|
+
|
|
3
36
|
## 0.4.25 — 2026-10-12
|
|
4
37
|
|
|
5
38
|
The photo viewer's actions on a phone. From ARV cutover g (wave 1, the vehicle gallery). Two items, one commit each.
|
|
@@ -6,10 +6,10 @@ import { u as O } from "./format-D8X4zsx6.js";
|
|
|
6
6
|
import { _ as U } from "./DateField.vue_vue_type_script_setup_true_lang-CpuH0WTl.js";
|
|
7
7
|
import { _ as T } from "./FormGroup.vue_vue_type_script_setup_true_lang-DSwSRsA5.js";
|
|
8
8
|
import { e as z } from "./control-B4SdblL6.js";
|
|
9
|
-
import { P as G, c as H, i as J } from "./index-
|
|
10
|
-
import { u as K } from "./platform-
|
|
9
|
+
import { P as G, c as H, i as J } from "./index-LP6NNnow.js";
|
|
10
|
+
import { u as K } from "./platform-PZpUkkMS.js";
|
|
11
11
|
import { b as M } from "./routeResource-DlTsGTg_.js";
|
|
12
|
-
import { _ as Q } from "./AsyncSection.vue_vue_type_script_setup_true_lang-
|
|
12
|
+
import { _ as Q } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
|
|
13
13
|
import { _ as W } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
|
|
14
14
|
import { u as X } from "./useLoad-M7V-AVwR.js";
|
|
15
15
|
import { _ as Y } from "./PageBar.vue_vue_type_script_setup_true_lang-B7qdEeej.js";
|
|
@@ -12,25 +12,26 @@ import { d as ee } from "./context-Ch1r4fdN.js";
|
|
|
12
12
|
const te = /* @__PURE__ */ $({
|
|
13
13
|
__name: "BottomDockPortal",
|
|
14
14
|
setup(d) {
|
|
15
|
-
const e = D() ? F(U, null) : null,
|
|
15
|
+
const e = D() ? F(U, null) : null, a = k(() => e?.value ?? null);
|
|
16
16
|
return (c, i) => (r(), _(O, {
|
|
17
|
-
to:
|
|
18
|
-
disabled: !
|
|
17
|
+
to: a.value,
|
|
18
|
+
disabled: !a.value
|
|
19
19
|
}, [
|
|
20
20
|
v(c.$slots, "default")
|
|
21
21
|
], 8, ["to", "disabled"]));
|
|
22
22
|
}
|
|
23
|
-
}),
|
|
23
|
+
}), ae = {
|
|
24
24
|
key: 0,
|
|
25
|
+
"data-page-actions": "",
|
|
25
26
|
class: "flex min-w-0 flex-wrap items-center justify-end gap-2"
|
|
26
|
-
},
|
|
27
|
+
}, ne = ["aria-label", "onClick"], E = /* @__PURE__ */ $({
|
|
27
28
|
__name: "PageActions",
|
|
28
29
|
props: {
|
|
29
30
|
actions: {},
|
|
30
31
|
leading: {}
|
|
31
32
|
},
|
|
32
33
|
setup(d) {
|
|
33
|
-
const e = d, { t:
|
|
34
|
+
const e = d, { t: a } = P(), c = k(() => [
|
|
34
35
|
...e.leading ? [e.leading] : [],
|
|
35
36
|
...e.actions.filter((t) => t.placement !== "overflow" && t.tone !== "critical")
|
|
36
37
|
]), i = k(() => e.actions.filter((t) => t.placement === "overflow" || t.tone === "critical").map((t) => ({
|
|
@@ -45,7 +46,7 @@ const te = /* @__PURE__ */ $({
|
|
|
45
46
|
function u(t) {
|
|
46
47
|
return t === e.leading || t.prominence === "plain" ? "plain" : t.prominence === "standard" ? "standard" : t.placement === "primary" ? "primary" : "standard";
|
|
47
48
|
}
|
|
48
|
-
return (t, o) => c.value.length || i.value.length ? (r(), p("div",
|
|
49
|
+
return (t, o) => c.value.length || i.value.length ? (r(), p("div", ae, [
|
|
49
50
|
(r(!0), p(I, null, M(c.value, (s) => (r(), _(W, {
|
|
50
51
|
key: s.id,
|
|
51
52
|
prominence: u(s),
|
|
@@ -64,23 +65,26 @@ const te = /* @__PURE__ */ $({
|
|
|
64
65
|
i.value.length ? (r(), _(Y, {
|
|
65
66
|
key: 0,
|
|
66
67
|
items: i.value,
|
|
67
|
-
label: l(
|
|
68
|
+
label: l(a)("core.page.more_actions")
|
|
68
69
|
}, {
|
|
69
70
|
trigger: x(({ toggle: s, attrs: g }) => [
|
|
70
71
|
m("button", H({ type: "button" }, g, {
|
|
71
|
-
"aria-label": l(
|
|
72
|
+
"aria-label": l(a)("core.page.more_actions"),
|
|
72
73
|
"data-page-overflow": "",
|
|
73
74
|
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",
|
|
74
75
|
onClick: s
|
|
75
76
|
}), [
|
|
76
77
|
b(l(y), { name: "moreLine" })
|
|
77
|
-
], 16,
|
|
78
|
+
], 16, ne)
|
|
78
79
|
]),
|
|
79
80
|
_: 1
|
|
80
81
|
}, 8, ["items", "label"])) : f("", !0)
|
|
81
82
|
])) : f("", !0);
|
|
82
83
|
}
|
|
83
|
-
}), oe = {
|
|
84
|
+
}), oe = {
|
|
85
|
+
"data-page-toolbar": "",
|
|
86
|
+
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"
|
|
87
|
+
}, se = ["aria-label"], le = {
|
|
84
88
|
class: "flex shrink-0 text-content-link",
|
|
85
89
|
"aria-hidden": "true"
|
|
86
90
|
}, re = { class: "flex min-w-0 items-center" }, ie = {
|
|
@@ -101,11 +105,12 @@ const te = /* @__PURE__ */ $({
|
|
|
101
105
|
status: {}
|
|
102
106
|
},
|
|
103
107
|
setup(d) {
|
|
104
|
-
const e = d, { t:
|
|
108
|
+
const e = d, { t: a } = P(), c = k(() => e.path && e.path.length >= 2 ? e.path.slice(0, -1) : []), i = k(() => e.path && c.value.length ? e.path[e.path.length - 1] ?? null : e.back ?? null);
|
|
105
109
|
return (u, t) => (r(), p("div", oe, [
|
|
106
110
|
c.value.length && i.value ? (r(), p("nav", {
|
|
107
111
|
key: 0,
|
|
108
|
-
"
|
|
112
|
+
"data-page-path": "",
|
|
113
|
+
"aria-label": l(a)("core.page.breadcrumbs"),
|
|
109
114
|
class: "-ml-1 flex min-w-0 items-center"
|
|
110
115
|
}, [
|
|
111
116
|
m("span", le, [
|
|
@@ -180,9 +185,9 @@ const te = /* @__PURE__ */ $({
|
|
|
180
185
|
]));
|
|
181
186
|
}
|
|
182
187
|
});
|
|
183
|
-
function me(d, e,
|
|
188
|
+
function me(d, e, a = !0) {
|
|
184
189
|
const c = N();
|
|
185
|
-
if (!c || !z(
|
|
190
|
+
if (!c || !z(a)) return;
|
|
186
191
|
const i = c.claim();
|
|
187
192
|
let u = null;
|
|
188
193
|
T(() => z(e), (t) => i.setTitle(t), { immediate: !0 }), R(() => {
|
|
@@ -223,7 +228,7 @@ const fe = { class: "flex min-w-0 flex-wrap items-center gap-x-4 gap-y-3" }, ge
|
|
|
223
228
|
inlineActions: { type: Boolean, default: !1 }
|
|
224
229
|
},
|
|
225
230
|
setup(d) {
|
|
226
|
-
const e = d, { locale:
|
|
231
|
+
const e = d, { locale: a } = P(), c = j("(max-width: 47.999rem)"), i = k(() => e.count == null ? null : new Intl.NumberFormat(J(a.value)).format(e.count)), u = V("titleElement");
|
|
227
232
|
return me(u, () => e.title), (t, o) => (r(), p("div", fe, [
|
|
228
233
|
m("div", ge, [
|
|
229
234
|
v(t.$slots, "leading", {}, () => [
|
|
@@ -264,13 +269,13 @@ const fe = { class: "flex min-w-0 flex-wrap items-center gap-x-4 gap-y-3" }, ge
|
|
|
264
269
|
}
|
|
265
270
|
}), [$e, De] = ee("vue-core.pageSectionBack");
|
|
266
271
|
function Se(d, e) {
|
|
267
|
-
const
|
|
268
|
-
let c =
|
|
269
|
-
const i =
|
|
272
|
+
const a = G();
|
|
273
|
+
let c = a.fullPath;
|
|
274
|
+
const i = a.matched[a.matched.length - 1];
|
|
270
275
|
T(
|
|
271
|
-
() =>
|
|
276
|
+
() => a.fullPath,
|
|
272
277
|
(s) => {
|
|
273
|
-
|
|
278
|
+
a.matched[a.matched.length - 1] === i && (c = s);
|
|
274
279
|
}
|
|
275
280
|
);
|
|
276
281
|
let u, t;
|
|
@@ -282,7 +287,7 @@ function Se(d, e) {
|
|
|
282
287
|
if (!s || !d.value) return;
|
|
283
288
|
const g = () => {
|
|
284
289
|
const S = Array.from(d.value?.querySelectorAll("a[href]") ?? []).find(
|
|
285
|
-
(
|
|
290
|
+
(n) => n.getAttribute("href") === s.href
|
|
286
291
|
);
|
|
287
292
|
S && (S.focus({ preventScroll: !0 }), window.scrollTo({ top: s.top, behavior: "instant" }), o());
|
|
288
293
|
};
|
|
@@ -309,32 +314,32 @@ const Te = { key: 1 }, Le = {
|
|
|
309
314
|
width: { default: "full" }
|
|
310
315
|
},
|
|
311
316
|
setup(d) {
|
|
312
|
-
const e = d,
|
|
313
|
-
A(Z,
|
|
314
|
-
const c =
|
|
317
|
+
const e = d, a = N() ?? X();
|
|
318
|
+
A(Z, a);
|
|
319
|
+
const c = a.claimShell();
|
|
315
320
|
L(c);
|
|
316
321
|
const i = V("root");
|
|
317
|
-
Se(i,
|
|
322
|
+
Se(i, a);
|
|
318
323
|
const u = j("(max-width: 47.999rem)"), t = K(null);
|
|
319
324
|
A($e, t);
|
|
320
325
|
const o = k(() => {
|
|
321
326
|
if (t.value) return t.value;
|
|
322
327
|
if (e.back !== void 0) return e.back;
|
|
323
|
-
const
|
|
324
|
-
return
|
|
328
|
+
const n = e.path?.[e.path.length - 1];
|
|
329
|
+
return n ? { label: n.label, to: n.to } : null;
|
|
325
330
|
}), s = k(() => {
|
|
326
|
-
const
|
|
327
|
-
return
|
|
328
|
-
}), g =
|
|
331
|
+
const n = t.value;
|
|
332
|
+
return n ? n.path ? [...e.path ?? (e.back ? [e.back] : []), ...n.path] : null : e.path;
|
|
333
|
+
}), g = a.claim();
|
|
329
334
|
T(
|
|
330
335
|
() => [e.actions, e.documentTitle],
|
|
331
|
-
([
|
|
336
|
+
([n, C]) => g.setRegistration({ actions: n, leading: null, status: null, navTitle: null, documentTitle: C ?? null }),
|
|
332
337
|
{ immediate: !0 }
|
|
333
|
-
), T(o, (
|
|
338
|
+
), T(o, (n) => g.setBack(n), { immediate: !0 }), L(() => {
|
|
334
339
|
g.clearRegistration(), g.clearBack();
|
|
335
340
|
});
|
|
336
341
|
const S = { full: "", content: "max-w-content", readable: "max-w-readable" };
|
|
337
|
-
return (
|
|
342
|
+
return (n, C) => (r(), p("div", {
|
|
338
343
|
ref_key: "root",
|
|
339
344
|
ref: i,
|
|
340
345
|
class: "min-w-0 w-full flex-1 bg-surface-page",
|
|
@@ -344,14 +349,14 @@ const Te = { key: 1 }, Le = {
|
|
|
344
349
|
key: 0,
|
|
345
350
|
back: o.value,
|
|
346
351
|
path: s.value,
|
|
347
|
-
actions: l(
|
|
348
|
-
leading: l(
|
|
349
|
-
status: l(
|
|
352
|
+
actions: l(a).actions.value,
|
|
353
|
+
leading: l(a).leading.value,
|
|
354
|
+
status: l(a).status.value
|
|
350
355
|
}, q({ _: 2 }, [
|
|
351
|
-
|
|
356
|
+
n.$slots.pager ? {
|
|
352
357
|
name: "pager",
|
|
353
358
|
fn: x(() => [
|
|
354
|
-
v(
|
|
359
|
+
v(n.$slots, "pager")
|
|
355
360
|
]),
|
|
356
361
|
key: "0"
|
|
357
362
|
} : void 0
|
|
@@ -359,34 +364,34 @@ const Te = { key: 1 }, Le = {
|
|
|
359
364
|
m("div", {
|
|
360
365
|
class: Q(["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))]", S[e.width]])
|
|
361
366
|
}, [
|
|
362
|
-
v(
|
|
367
|
+
v(n.$slots, "header", {}, () => [
|
|
363
368
|
b(ye, {
|
|
364
369
|
title: e.title,
|
|
365
370
|
description: e.description,
|
|
366
371
|
icon: e.icon,
|
|
367
372
|
count: e.count,
|
|
368
|
-
actions: o.value ? [] : l(
|
|
369
|
-
leading: o.value ? null : l(
|
|
370
|
-
status: o.value ? null : l(
|
|
373
|
+
actions: o.value ? [] : l(a).actions.value,
|
|
374
|
+
leading: o.value ? null : l(a).leading.value,
|
|
375
|
+
status: o.value ? null : l(a).status.value
|
|
371
376
|
}, null, 8, ["title", "description", "icon", "count", "actions", "leading", "status"])
|
|
372
377
|
]),
|
|
373
|
-
|
|
378
|
+
n.$slots.header && !o.value && !l(u) ? (r(), _(E, {
|
|
374
379
|
key: 0,
|
|
375
|
-
actions: l(
|
|
376
|
-
leading: l(
|
|
380
|
+
actions: l(a).actions.value,
|
|
381
|
+
leading: l(a).leading.value
|
|
377
382
|
}, null, 8, ["actions", "leading"])) : f("", !0),
|
|
378
|
-
|
|
379
|
-
v(
|
|
383
|
+
n.$slots.notices ? (r(), p("div", Te, [
|
|
384
|
+
v(n.$slots, "notices")
|
|
380
385
|
])) : f("", !0),
|
|
381
|
-
v(
|
|
382
|
-
|
|
383
|
-
v(
|
|
386
|
+
v(n.$slots, "default"),
|
|
387
|
+
n.$slots.pager && l(u) ? (r(), p("div", Le, [
|
|
388
|
+
v(n.$slots, "pager")
|
|
384
389
|
])) : f("", !0)
|
|
385
390
|
], 2),
|
|
386
|
-
|
|
391
|
+
n.$slots.bottom ? (r(), _(te, { key: 1 }, {
|
|
387
392
|
default: x(() => [
|
|
388
393
|
m("div", Ce, [
|
|
389
|
-
v(
|
|
394
|
+
v(n.$slots, "bottom")
|
|
390
395
|
])
|
|
391
396
|
]),
|
|
392
397
|
_: 3
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { defineComponent as
|
|
1
|
+
import { defineComponent as k, openBlock as n, createElementBlock as o, computed as $, Fragment as _, unref as i, renderSlot as y, renderList as b, createBlock as v, createVNode as c, withCtx as d, createElementVNode as m, toDisplayString as l, createCommentVNode as f, createTextVNode as g, normalizeClass as w, createSlots as x } from "vue";
|
|
2
2
|
import { useI18n as C } from "vue-i18n";
|
|
3
|
-
import { _ as
|
|
4
|
-
import { _ as
|
|
5
|
-
import { _ as
|
|
3
|
+
import { _ as h } from "./Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js";
|
|
4
|
+
import { _ as S } from "./Icon.vue_vue_type_script_lang-D7oC-d-S.js";
|
|
5
|
+
import { _ as E } from "./Banner.vue_vue_type_script_setup_true_lang-DSStj_5z.js";
|
|
6
6
|
import { _ as V } from "./EmptyState.vue_vue_type_script_setup_true_lang-50p-Mp8I.js";
|
|
7
7
|
function K(s) {
|
|
8
8
|
return s.status === "loading" || s.status === "failed" ? void 0 : s.value;
|
|
@@ -10,13 +10,17 @@ function K(s) {
|
|
|
10
10
|
function z(s) {
|
|
11
11
|
return s == null || s === "" || Array.isArray(s) && s.length === 0;
|
|
12
12
|
}
|
|
13
|
+
function M(s) {
|
|
14
|
+
const { loading: t, error: a, value: r } = s, e = r !== void 0;
|
|
15
|
+
return t ? e ? { status: "refreshing", value: r } : { status: "loading" } : a ? e ? { status: "stale", value: r, error: a } : { status: "failed", error: a } : e ? { status: "loaded", value: r } : { status: "loading" };
|
|
16
|
+
}
|
|
13
17
|
const A = {
|
|
14
18
|
class: "skeleton-bar animate-pulse rounded-lg bg-fill-strong motion-reduce:animate-none",
|
|
15
19
|
"aria-hidden": "true"
|
|
16
|
-
}, N = /* @__PURE__ */
|
|
20
|
+
}, N = /* @__PURE__ */ k({
|
|
17
21
|
__name: "Skeleton",
|
|
18
22
|
setup(s) {
|
|
19
|
-
return (t,
|
|
23
|
+
return (t, a) => (n(), o("div", A));
|
|
20
24
|
}
|
|
21
25
|
}), B = ["aria-label"], D = {
|
|
22
26
|
key: 1,
|
|
@@ -24,7 +28,7 @@ const A = {
|
|
|
24
28
|
}, I = { class: "flex flex-wrap items-center justify-between gap-3" }, L = { key: 0 }, T = ["aria-busy"], F = { class: "min-w-0" }, R = {
|
|
25
29
|
key: 3,
|
|
26
30
|
"data-async": "empty"
|
|
27
|
-
},
|
|
31
|
+
}, P = /* @__PURE__ */ k({
|
|
28
32
|
inheritAttrs: !1,
|
|
29
33
|
__name: "AsyncSection",
|
|
30
34
|
props: {
|
|
@@ -37,40 +41,40 @@ const A = {
|
|
|
37
41
|
},
|
|
38
42
|
emits: ["retry"],
|
|
39
43
|
setup(s) {
|
|
40
|
-
const t = s, { t:
|
|
44
|
+
const t = s, { t: a } = C(), r = $(() => {
|
|
41
45
|
const e = t.state;
|
|
42
46
|
return e.status === "loading" || e.status === "failed" || e.status === "loaded" && t.isEmpty(e.value) ? null : { value: e.value };
|
|
43
47
|
});
|
|
44
|
-
return (e,
|
|
45
|
-
t.state.status === "loading" ? (
|
|
48
|
+
return (e, u) => (n(), o(_, null, [
|
|
49
|
+
t.state.status === "loading" ? (n(), o("div", {
|
|
46
50
|
key: 0,
|
|
47
51
|
class: "space-y-3",
|
|
48
52
|
"data-async": "loading",
|
|
49
53
|
role: "status",
|
|
50
54
|
"aria-busy": "true",
|
|
51
|
-
"aria-label":
|
|
55
|
+
"aria-label": i(a)("core.state.loading")
|
|
52
56
|
}, [
|
|
53
57
|
y(e.$slots, "skeleton", {}, () => [
|
|
54
|
-
(
|
|
58
|
+
(n(!0), o(_, null, b(t.skeletonRows, (p) => (n(), v(N, { key: p }))), 128))
|
|
55
59
|
])
|
|
56
|
-
], 8, B)) : t.state.status === "failed" || t.state.status === "stale" && t.state.error ? (
|
|
57
|
-
|
|
60
|
+
], 8, B)) : t.state.status === "failed" || t.state.status === "stale" && t.state.error ? (n(), o("div", D, [
|
|
61
|
+
c(E, {
|
|
58
62
|
tone: "warning",
|
|
59
63
|
role: "alert"
|
|
60
64
|
}, {
|
|
61
|
-
default:
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
t.state.status === "stale" ? (
|
|
65
|
+
default: d(() => [
|
|
66
|
+
m("div", I, [
|
|
67
|
+
m("div", null, [
|
|
68
|
+
m("p", null, l(t.state.error), 1),
|
|
69
|
+
t.state.status === "stale" ? (n(), o("p", L, l(i(a)("core.state.stale")), 1)) : f("", !0)
|
|
66
70
|
]),
|
|
67
|
-
|
|
71
|
+
c(h, {
|
|
68
72
|
prominence: "secondary",
|
|
69
73
|
size: "sm",
|
|
70
|
-
onClick:
|
|
74
|
+
onClick: u[0] || (u[0] = (p) => e.$emit("retry"))
|
|
71
75
|
}, {
|
|
72
|
-
default:
|
|
73
|
-
g(i(
|
|
76
|
+
default: d(() => [
|
|
77
|
+
g(l(i(a)("core.actions.retry")), 1)
|
|
74
78
|
]),
|
|
75
79
|
_: 1
|
|
76
80
|
})
|
|
@@ -78,54 +82,55 @@ const A = {
|
|
|
78
82
|
]),
|
|
79
83
|
_: 1
|
|
80
84
|
})
|
|
81
|
-
])) : t.state.status === "refreshing" || t.state.status === "stale" ? (
|
|
85
|
+
])) : t.state.status === "refreshing" || t.state.status === "stale" ? (n(), o("div", {
|
|
82
86
|
key: 2,
|
|
83
87
|
"data-async": "stale",
|
|
84
88
|
role: "status",
|
|
85
89
|
"aria-busy": t.state.status === "refreshing" || void 0,
|
|
86
90
|
class: "flex w-fit max-w-full flex-wrap items-center gap-2 rounded-group bg-fill py-1 pr-1 pl-3 text-footnote text-content-muted"
|
|
87
91
|
}, [
|
|
88
|
-
|
|
92
|
+
c(i(S), {
|
|
89
93
|
name: t.state.status === "refreshing" ? "loader4Line" : "refreshLine",
|
|
90
94
|
size: 14,
|
|
91
|
-
class:
|
|
95
|
+
class: w(t.state.status === "refreshing" ? "animate-spin" : "")
|
|
92
96
|
}, null, 8, ["name", "class"]),
|
|
93
|
-
|
|
94
|
-
t.state.status === "stale" ? (
|
|
97
|
+
m("p", F, l(i(a)(t.state.status === "refreshing" ? "core.state.refreshing" : "core.state.stale")), 1),
|
|
98
|
+
t.state.status === "stale" ? (n(), v(h, {
|
|
95
99
|
key: 0,
|
|
96
100
|
prominence: "plain",
|
|
97
101
|
size: "xs",
|
|
98
|
-
onClick:
|
|
102
|
+
onClick: u[1] || (u[1] = (p) => e.$emit("retry"))
|
|
99
103
|
}, {
|
|
100
|
-
default:
|
|
101
|
-
g(i(
|
|
104
|
+
default: d(() => [
|
|
105
|
+
g(l(i(a)("core.actions.retry")), 1)
|
|
102
106
|
]),
|
|
103
107
|
_: 1
|
|
104
|
-
})) :
|
|
105
|
-
], 8, T)) :
|
|
106
|
-
|
|
107
|
-
title: t.emptyTitle ??
|
|
108
|
+
})) : f("", !0)
|
|
109
|
+
], 8, T)) : r.value ? f("", !0) : (n(), o("div", R, [
|
|
110
|
+
c(V, {
|
|
111
|
+
title: t.emptyTitle ?? i(a)("core.state.empty"),
|
|
108
112
|
description: t.emptyDescription,
|
|
109
113
|
icon: t.emptyIcon
|
|
110
114
|
}, x({ _: 2 }, [
|
|
111
115
|
e.$slots["empty-actions"] ? {
|
|
112
116
|
name: "actions",
|
|
113
|
-
fn:
|
|
117
|
+
fn: d(() => [
|
|
114
118
|
y(e.$slots, "empty-actions")
|
|
115
119
|
]),
|
|
116
120
|
key: "0"
|
|
117
121
|
} : void 0
|
|
118
122
|
]), 1032, ["title", "description", "icon"])
|
|
119
123
|
])),
|
|
120
|
-
|
|
121
|
-
value:
|
|
122
|
-
}, void 0, void 0, 4) :
|
|
124
|
+
r.value ? y(e.$slots, "default", {
|
|
125
|
+
value: r.value.value
|
|
126
|
+
}, void 0, void 0, 4) : f("", !0)
|
|
123
127
|
], 64));
|
|
124
128
|
}
|
|
125
129
|
});
|
|
126
130
|
export {
|
|
127
|
-
|
|
131
|
+
P as _,
|
|
128
132
|
N as a,
|
|
133
|
+
M as b,
|
|
129
134
|
z as i,
|
|
130
135
|
K as v
|
|
131
136
|
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { defineComponent as m, computed as x, ref as n, watch as p, openBlock as r, createElementBlock as i, normalizeClass as c, createTextVNode as v, toDisplayString as g, createCommentVNode as z } from "vue";
|
|
2
|
+
function b(a) {
|
|
3
|
+
const e = (a ?? "").trim().split(/\s+/).filter(Boolean);
|
|
4
|
+
return (e.length > 1 ? [e[0]?.[0], e[e.length - 1]?.[0]] : [e[0]?.[0]]).filter(Boolean).join("").toLocaleUpperCase() || "?";
|
|
5
|
+
}
|
|
6
|
+
const h = ["src", "alt", "data-loaded"], k = /* @__PURE__ */ m({
|
|
7
|
+
__name: "Avatar",
|
|
8
|
+
props: {
|
|
9
|
+
name: { default: "" },
|
|
10
|
+
src: { default: null },
|
|
11
|
+
size: { default: "sm" },
|
|
12
|
+
tone: { default: "neutral" }
|
|
13
|
+
},
|
|
14
|
+
setup(a) {
|
|
15
|
+
const e = a, o = {
|
|
16
|
+
xs: "size-5 text-3xs",
|
|
17
|
+
sm: "size-7 text-2xs",
|
|
18
|
+
md: "size-9 text-xs",
|
|
19
|
+
lg: "size-12 text-base",
|
|
20
|
+
// Record header: 72px on wide screens, 96px on compact ones. Square by aspect ratio, so it
|
|
21
|
+
// can shrink in a very narrow column (enlarged text).
|
|
22
|
+
xl: "aspect-square w-18 max-w-full text-2xl compact:w-24 compact:text-3xl"
|
|
23
|
+
}, u = {
|
|
24
|
+
neutral: "bg-fill text-content-muted",
|
|
25
|
+
anchor: "bg-tile-anchor text-tile-anchor-foreground"
|
|
26
|
+
}, d = x(() => b(e.name)), t = n(!1), s = n(!1);
|
|
27
|
+
return p(() => e.src, () => {
|
|
28
|
+
t.value = !1, s.value = !1;
|
|
29
|
+
}), (w, l) => (r(), i("span", {
|
|
30
|
+
"aria-hidden": "true",
|
|
31
|
+
class: c(["relative inline-flex shrink-0 select-none items-center justify-center overflow-hidden rounded-full font-semibold", [o[e.size], u[e.tone]]])
|
|
32
|
+
}, [
|
|
33
|
+
v(g(d.value), 1),
|
|
34
|
+
e.src && !s.value ? (r(), i("img", {
|
|
35
|
+
key: e.src,
|
|
36
|
+
src: e.src,
|
|
37
|
+
alt: e.name ?? "",
|
|
38
|
+
draggable: "false",
|
|
39
|
+
"data-loaded": t.value || void 0,
|
|
40
|
+
class: c(["absolute inset-0 size-full rounded-full object-cover", t.value ? "" : "opacity-0"]),
|
|
41
|
+
onLoad: l[0] || (l[0] = (f) => t.value = !0),
|
|
42
|
+
onError: l[1] || (l[1] = (f) => s.value = !0)
|
|
43
|
+
}, null, 42, h)) : z("", !0)
|
|
44
|
+
], 2));
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
export {
|
|
48
|
+
k as _,
|
|
49
|
+
b as i
|
|
50
|
+
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { defineComponent as k, computed as N, openBlock as n, createBlock as u, unref as a, withCtx as g, createElementBlock as p, Fragment as _, renderList as $, createElementVNode as i, toDisplayString as h, createCommentVNode as C, ref as x, watch as b, createVNode as y } from "vue";
|
|
2
2
|
import { useI18n as E } from "vue-i18n";
|
|
3
|
-
import { P as V, i as R } from "./index-
|
|
4
|
-
import { u as S } from "./platform-
|
|
3
|
+
import { P as V, i as R } from "./index-LP6NNnow.js";
|
|
4
|
+
import { u as S } from "./platform-PZpUkkMS.js";
|
|
5
5
|
import { b as B } from "./routeResource-DlTsGTg_.js";
|
|
6
|
-
import { _ as F } from "./AsyncSection.vue_vue_type_script_setup_true_lang-
|
|
6
|
+
import { _ as F } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
|
|
7
7
|
import { u as L } from "./useLoad-M7V-AVwR.js";
|
|
8
|
-
import { _ as P } from "./Avatar.vue_vue_type_script_setup_true_lang-
|
|
8
|
+
import { _ as P } from "./Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js";
|
|
9
9
|
import { _ as I } from "./IconTile.vue_vue_type_script_setup_true_lang-_FXvaj93.js";
|
|
10
10
|
import { u as O } from "./format-D8X4zsx6.js";
|
|
11
11
|
import { _ as T } from "./FormGroup.vue_vue_type_script_setup_true_lang-DSwSRsA5.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { hasInjectionContext as lt, inject as ot, shallowRef as xe, computed as k, watch as Ve, toValue as Se, ref as ie, getCurrentScope as nt, onScopeDispose as st, defineComponent as be, openBlock as u, createElementBlock as y, createVNode as O, unref as t, createElementVNode as i, toDisplayString as g, Fragment as ee, renderList as le, createCommentVNode as F, createBlock as W, mergeProps as ve, withCtx as q, createTextVNode as G, normalizeClass as ue, useTemplateRef as fe, withModifiers as Ke, withDirectives as Le, vModelText as Fe, nextTick as at, onBeforeUnmount as rt, onMounted as it, renderSlot as ge, useSlots as We, createSlots as Qe, normalizeProps as Xe, guardReactiveProps as Je } from "vue";
|
|
2
2
|
import { routerKey as ct } from "vue-router";
|
|
3
3
|
import { i as qe, a as ut } from "./error-CD7x0Jrz.js";
|
|
4
|
-
import { a as dt, d as Re, o as ft, L as Te, e as je, w as pt, b as vt } from "./http-
|
|
5
|
-
import { a as mt } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-
|
|
4
|
+
import { a as dt, d as Re, o as ft, L as Te, e as je, w as pt, b as vt } from "./http-BFfkA7gN.js";
|
|
5
|
+
import { a as mt } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-GUTIXuNd.js";
|
|
6
6
|
import { useI18n as he } from "vue-i18n";
|
|
7
7
|
import { _ as ce, u as Ne } from "./Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js";
|
|
8
8
|
import { _ as Ge } from "./Tabs.vue_vue_type_script_setup_true_lang-CcMcE38r.js";
|
|
@@ -10,7 +10,7 @@ import { u as Pe } from "./format-D8X4zsx6.js";
|
|
|
10
10
|
import { _ as I } from "./Icon.vue_vue_type_script_lang-D7oC-d-S.js";
|
|
11
11
|
import { _ as Ae } from "./Banner.vue_vue_type_script_setup_true_lang-DSStj_5z.js";
|
|
12
12
|
import { _ as Ee } from "./EmptyState.vue_vue_type_script_setup_true_lang-50p-Mp8I.js";
|
|
13
|
-
import { u as bt, _ as gt } from "./rowLayout-
|
|
13
|
+
import { u as bt, _ as gt } from "./rowLayout-Dh749umr.js";
|
|
14
14
|
import { _ as Ye } from "./Menu.vue_vue_type_script_setup_true_lang-DsFOeCVe.js";
|
|
15
15
|
import { _ as Ze } from "./Popover.vue_vue_type_script_setup_true_lang-C70GrCP7.js";
|
|
16
16
|
import { _ as we } from "./ToneDot.vue_vue_type_script_setup_true_lang-99rNn-L5.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent as d, computed as u, useSlots as p, openBlock as w, createElementBlock as y, createVNode as f, unref as k, createSlots as b, renderList as m, withCtx as h, renderSlot as v, normalizeProps as _, guardReactiveProps as g } from "vue";
|
|
2
|
-
import { u as R, _ as L } from "./rowLayout-
|
|
2
|
+
import { u as R, _ as L } from "./rowLayout-Dh749umr.js";
|
|
3
3
|
const F = ["aria-busy"], V = /* @__PURE__ */ d({
|
|
4
4
|
__name: "DataTable",
|
|
5
5
|
props: {
|
|
@@ -1,15 +1,15 @@
|
|
|
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-CVEYkb26.js";
|
|
5
5
|
import { u as P } from "./describeError-B-NMa--w.js";
|
|
6
6
|
import { u as I } from "./format-D8X4zsx6.js";
|
|
7
|
-
import { e as a, R as O } from "./index-
|
|
7
|
+
import { e as a, R as O } from "./index-qUaGJ9j2.js";
|
|
8
8
|
import { _ as W } from "./AlertDialog.vue_vue_type_script_setup_true_lang-whA4WLdl.js";
|
|
9
9
|
import { t as i } from "./toast-CqSDTWRX.js";
|
|
10
10
|
import { u as Y } from "./useLoad-M7V-AVwR.js";
|
|
11
|
-
import { u as j } from "./platform-
|
|
12
|
-
import { a as G, r as H } from "./http-
|
|
11
|
+
import { u as j } from "./platform-PZpUkkMS.js";
|
|
12
|
+
import { a as G, r as H } from "./http-BFfkA7gN.js";
|
|
13
13
|
function J(u) {
|
|
14
14
|
return G({
|
|
15
15
|
id: "events.deadletters",
|
|
@@ -8,9 +8,9 @@ import { _ as F } from "./FormView.vue_vue_type_script_setup_true_lang-BUrYkjmF.
|
|
|
8
8
|
import { _ as L } from "./SelectField.vue_vue_type_script_setup_true_lang-C3FbRQW7.js";
|
|
9
9
|
import { _ as f } from "./TextField.vue_vue_type_script_setup_true_lang-CP2WeU36.js";
|
|
10
10
|
import { u as A } from "./useSaveChrome-7huA3FzR.js";
|
|
11
|
-
import { P as D, b as G, i as I } from "./index-
|
|
11
|
+
import { P as D, b as G, i as I } from "./index-LP6NNnow.js";
|
|
12
12
|
import { t as M } from "./toast-CqSDTWRX.js";
|
|
13
|
-
import { u as O } from "./platform-
|
|
13
|
+
import { u as O } from "./platform-PZpUkkMS.js";
|
|
14
14
|
import { b as U } from "./routeResource-DlTsGTg_.js";
|
|
15
15
|
import { u as j } from "./fieldMessages-6HVzSDqG.js";
|
|
16
16
|
import { _ as $ } from "./ActionRow.vue_vue_type_script_setup_true_lang-QPvYudWc.js";
|
|
@@ -1,11 +1,11 @@
|
|
|
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 { a as $ } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-
|
|
5
|
-
import { _ as b } from "./AsyncSection.vue_vue_type_script_setup_true_lang-
|
|
4
|
+
import { a as $ } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-GUTIXuNd.js";
|
|
5
|
+
import { _ as b } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
|
|
6
6
|
import { u as g } from "./useLoad-M7V-AVwR.js";
|
|
7
|
-
import { a as x, c as u } from "./index-
|
|
8
|
-
import { _ as P } from "./RoleEditor.vue_vue_type_script_setup_true_lang-
|
|
7
|
+
import { a as x, c as u } from "./index-C3E6DcO0.js";
|
|
8
|
+
import { _ as P } from "./RoleEditor.vue_vue_type_script_setup_true_lang-DRHmjA9w.js";
|
|
9
9
|
const V = /* @__PURE__ */ _({
|
|
10
10
|
__name: "NewRolePage",
|
|
11
11
|
setup(h) {
|