@wssto2/vue-core 0.9.3 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/dist/ActionRow.vue_vue_type_script_setup_true_lang-IpcP3Bjc.js +87 -0
- package/dist/Activity-CeAG0ZtJ.js +169 -0
- package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-DdJOodn8.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-D5i77H6S.js} +147 -159
- package/dist/{AsyncSection.vue_vue_type_script_setup_true_lang-BdeOKqz_.js → AsyncSection.vue_vue_type_script_setup_true_lang-DGzQ-Snp.js} +1 -1
- package/dist/BottomDockPortal.vue_vue_type_script_setup_true_lang-DmwR-2SP.js +17 -0
- package/dist/Button.vue_vue_type_script_setup_true_lang-C74hcb0N.js +123 -0
- package/dist/Changes-B9-zpDxG.js +69 -0
- package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-DHcekGNn.js → CollectionPage.vue_vue_type_script_setup_true_lang-Cn0YOWJF.js} +19 -18
- package/dist/{DataTable.vue_vue_type_script_setup_true_lang-8kBsNRuq.js → DataTable.vue_vue_type_script_setup_true_lang-BQRG8bpH.js} +1 -1
- package/dist/{DateField.vue_vue_type_script_setup_true_lang-BhKdCVFn.js → DateField.vue_vue_type_script_setup_true_lang-CeNwBbJT.js} +1 -1
- package/dist/{DeadLetters-Bb5pPlOY.js → DeadLetters-BP03yC4R.js} +5 -6
- package/dist/DrawnCheck.vue_vue_type_script_setup_true_lang-9DzDJlIA.js +38 -0
- package/dist/FormGroup.vue_vue_type_script_setup_true_lang-D6jYfNjW.js +427 -0
- package/dist/{FormView.vue_vue_type_script_setup_true_lang-aaNnMIOi.js → FormView.vue_vue_type_script_setup_true_lang-DvbPEiNQ.js} +2 -2
- package/dist/{General-BAG7S6wV.js → General-BDmCJr3H.js} +35 -38
- package/dist/{IncidentRecord-D8aOpNHo.js → IncidentRecord-DEhl6AyA.js} +14 -15
- package/dist/{IncidentsList-C0cFl0Db.js → IncidentsList-COgRPdk3.js} +3 -3
- package/dist/{Modal.vue_vue_type_script_setup_true_lang-BlHhdmMy.js → Modal.vue_vue_type_script_setup_true_lang-DDS0iEnn.js} +9 -8
- package/dist/{NewRolePage-C6Iu-EQJ.js → NewRolePage-DhGFwvk3.js} +4 -4
- package/dist/{NumberField.vue_vue_type_script_setup_true_lang-TGGAq8J-.js → NumberField.vue_vue_type_script_setup_true_lang-B3UrXNqH.js} +1 -1
- package/dist/{PersonAccess.vue_vue_type_script_setup_true_lang-qz1tmYpF.js → PersonAccess.vue_vue_type_script_setup_true_lang-DbGZSNQc.js} +56 -56
- package/dist/ProfilePage-BQCK2w8R.js +684 -0
- package/dist/ProgressTrack.vue_vue_type_script_setup_true_lang-DrOm8k--.js +30 -0
- package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-B9mN7UxZ.js → RecordHeader.vue_vue_type_script_setup_true_lang-DqGc3Jyo.js} +1 -1
- package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-Cw8mGf_B.js → ResourcePage.vue_vue_type_script_setup_true_lang-DljhsTU4.js} +3 -3
- package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-CJPvOVDV.js → RoleEditor.vue_vue_type_script_setup_true_lang-C0FIotFA.js} +11 -12
- package/dist/{RolePage-Dj_ocMnM.js → RolePage-DaNv049g.js} +10 -10
- package/dist/{RolesPage-PXrs4O-1.js → RolesPage-6hlzJes_.js} +6 -6
- package/dist/SearchInput.vue_vue_type_script_setup_true_lang-w4eAqyZ9.js +32 -0
- package/dist/{SectionList.vue_vue_type_script_setup_true_lang-CtdF1zuv.js → SectionList.vue_vue_type_script_setup_true_lang-DR0_NsqC.js} +1 -1
- package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-B5ove3rM.js → SectionNavigator.vue_vue_type_script_setup_true_lang-Dh3sXUt_.js} +2 -2
- package/dist/{SegmentedField.vue_vue_type_script_setup_true_lang-ChfDFAA2.js → SegmentedField.vue_vue_type_script_setup_true_lang-zv_AxpBn.js} +1 -1
- package/dist/{SelectField.vue_vue_type_script_setup_true_lang-BP8nAQwo.js → SelectField.vue_vue_type_script_setup_true_lang-BZwdANL3.js} +3 -3
- package/dist/{ServiceAccountDialog.vue_vue_type_script_setup_true_lang-aWkKwxNe.js → ServiceAccountDialog.vue_vue_type_script_setup_true_lang-C0OIBrSp.js} +20 -20
- package/dist/{ServiceAccountRecord-bxX9yQkC.js → ServiceAccountRecord-gtlhYaAz.js} +37 -37
- package/dist/{ServiceAccountsList-BXE6htxk.js → ServiceAccountsList-BM7GGcvw.js} +33 -33
- package/dist/{Sessions--Gvc0kxw.js → Sessions-BCDJYuV2.js} +23 -24
- package/dist/{SettingsPage-DzDC7gD-.js → SettingsPage-DUhMsYBf.js} +27 -30
- package/dist/{SignIn-CTI_699e.js → SignIn-4D7WohI8.js} +9 -10
- package/dist/{SignInPage-HKC1bm2E.js → SignInPage-B6B-34GG.js} +4 -4
- package/dist/SignIns-CFoe4hpX.js +64 -0
- package/dist/StatusLine.vue_vue_type_script_setup_true_lang-DsdQmLq6.js +56 -0
- package/dist/{SwitchField.vue_vue_type_script_setup_true_lang-BMA2YXTZ.js → SwitchField.vue_vue_type_script_setup_true_lang-Ds4q0bbl.js} +1 -1
- package/dist/{TextField.vue_vue_type_script_setup_true_lang-BFVsqcBX.js → TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js} +2 -2
- package/dist/{TextareaField.vue_vue_type_script_setup_true_lang-Dyh4Hhyl.js → TextareaField.vue_vue_type_script_setup_true_lang-D2j4s96s.js} +1 -1
- package/dist/{TimeField.vue_vue_type_script_setup_true_lang-gGFfQLuK.js → TimeField.vue_vue_type_script_setup_true_lang-D-Em4glH.js} +1 -1
- package/dist/UserRecord-Cd1TCpJZ.js +202 -0
- package/dist/UsersList-GJU5-CTG.js +74 -0
- package/dist/access/index.js +4 -4
- package/dist/app/index.js +1 -1
- package/dist/{application-BmXW6iW_.js → application-CuzT-0vW.js} +1 -1
- package/dist/button/index.js +6 -5
- package/dist/collection/PickerModal.vue.d.ts +26 -0
- package/dist/collection/definition.d.ts +6 -6
- package/dist/collection/http.d.ts +6 -6
- package/dist/collection/index.d.ts +5 -1
- package/dist/collection/index.js +144 -85
- package/dist/collection/picker.d.ts +39 -0
- package/dist/collection/types.d.ts +9 -4
- package/dist/collection/useCollection.d.ts +5 -5
- package/dist/content/ActivityStream.vue.d.ts +62 -0
- package/dist/content/CommentThread.vue.d.ts +52 -0
- package/dist/content/Composer.vue.d.ts +36 -0
- package/dist/content/index.d.ts +3 -0
- package/dist/content/index.js +321 -56
- package/dist/controls/index.js +28 -54
- package/dist/form/index.d.ts +2 -0
- package/dist/form/index.js +611 -595
- package/dist/form/storableText.d.ts +24 -0
- package/dist/format/index.d.ts +1 -0
- package/dist/format/index.js +10 -6
- package/dist/format/slug.d.ts +8 -0
- package/dist/highlight-DnYhLXnu.js +9 -0
- package/dist/http-Dm0uXY9O.js +95 -0
- package/dist/i18n/index.d.ts +14 -0
- package/dist/i18n/index.js +87 -63
- package/dist/i18n/plural.d.ts +23 -0
- package/dist/identity/embed.d.ts +39 -0
- package/dist/identity/index.d.ts +20 -0
- package/dist/identity/index.js +40 -21
- package/dist/identity/session.d.ts +9 -1
- package/dist/identity/shared/ChangeFeed.vue.d.ts +6 -3
- package/dist/identity/users/context.d.ts +8 -0
- package/dist/identity/users/dialogs.d.ts +10 -0
- package/dist/identity/users/ext.d.ts +8 -0
- package/dist/identity/users/feature.d.ts +10 -0
- package/dist/identity/users/list.d.ts +1 -1
- package/dist/identity/users/personSections.d.ts +1 -1
- package/dist/identity/users/replace.d.ts +45 -0
- package/dist/identity/users/words.d.ts +28 -0
- package/dist/incidents/api.d.ts +1 -1
- package/dist/incidents/index.js +1 -1
- package/dist/{index-Dz0LkLM8.js → index-CTkG-acm.js} +4 -4
- package/dist/{index-Dm-sdJJr.js → index-DUs7WSz-.js} +31 -32
- package/dist/index-pJ_eRg80.js +1257 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/modal/index.js +3 -3
- package/dist/modules/identity/entities.d.ts +7 -0
- package/dist/modules/identity/routes.d.ts +8 -4
- package/dist/modules/identity/schemas.d.ts +16 -0
- package/dist/{neighbors-DVfU9T0o.js → neighbors-OyvGi233.js} +2 -2
- package/dist/notifications/deadletters/list.d.ts +1 -1
- package/dist/notifications/index.js +1 -1
- package/dist/{options-QuOkMKVZ.js → options-B48UiYsG.js} +2 -2
- package/dist/page/index.js +11 -11
- package/dist/phone/index.js +1 -1
- package/dist/pwa/AndroidInstallBanner.vue.d.ts +18 -0
- package/dist/pwa/InstallQrSheet.vue.d.ts +21 -0
- package/dist/pwa/IosInstallGuide.vue.d.ts +19 -0
- package/dist/pwa/QrCode.vue.d.ts +16 -0
- package/dist/pwa/index.d.ts +4 -0
- package/dist/pwa/index.js +244 -24
- package/dist/resource/index.js +1 -1
- package/dist/{rowLayout-CT8vWYgI.js → rowLayout-Il4psyXN.js} +183 -188
- package/dist/shell/DarkModeRow.vue.d.ts +15 -0
- package/dist/shell/OfflineNotice.vue.d.ts +2 -0
- package/dist/shell/QuickSearchButton.vue.d.ts +2 -0
- package/dist/shell/QuickSearchPalette.vue.d.ts +12 -0
- package/dist/shell/darkMode.d.ts +26 -0
- package/dist/shell/index.d.ts +10 -0
- package/dist/shell/index.js +963 -580
- package/dist/shell/offlineNotice.d.ts +3 -0
- package/dist/shell/quickSearch.d.ts +14 -0
- package/dist/shell/quickSearchControl.d.ts +66 -0
- package/dist/shortcut-DUR6yPWA.js +93 -0
- package/dist/state/BackgroundTaskCapsule.vue.d.ts +18 -0
- package/dist/state/backgroundTasks.d.ts +58 -0
- package/dist/state/index.d.ts +4 -0
- package/dist/state/index.js +194 -80
- package/dist/state/useCountUp.d.ts +9 -0
- package/dist/styles.css +1 -1
- package/dist/{suggestions-BVQhoXzS.js → suggestions-q_v3M7G6.js} +1 -1
- package/dist/testing/collection.d.ts +1 -1
- package/dist/{useCommand-Dc8Lgs9h.js → useCommand-Ch_nx1AQ.js} +4 -4
- package/dist/{useGroupSheet-DQ6cVG-z.js → useGroupSheet-CPjHydQV.js} +14 -15
- package/dist/{useRecordDialog-BTsbHY38.js → useRecordDialog-DdkauXnU.js} +1 -1
- package/dist/{useResourceForm-DJ4Q75pq.js → useResourceForm-Dl6YFYyz.js} +1 -1
- package/package.json +3 -2
- package/dist/ActionRow.vue_vue_type_script_setup_true_lang-Cg1lhpcA.js +0 -45
- package/dist/Activity-29hsZ28j.js +0 -156
- package/dist/Button.vue_vue_type_script_setup_true_lang-Dp7OB-eF.js +0 -192
- package/dist/Changes-Dxjdkd_5.js +0 -129
- package/dist/FormErrors.vue_vue_type_script_setup_true_lang-CIggKPtq.js +0 -295
- package/dist/FormGroup.vue_vue_type_script_setup_true_lang-B37dixvJ.js +0 -137
- package/dist/PageBar.vue_vue_type_script_setup_true_lang-qI94fjJv.js +0 -47
- package/dist/ProfilePage-BnohZIEg.js +0 -764
- package/dist/ProgressTrack.vue_vue_type_script_setup_true_lang-B6Prw9hi.js +0 -64
- package/dist/SectionIntro.vue_vue_type_script_setup_true_lang-CZtPrmXD.js +0 -23
- package/dist/SessionList.vue_vue_type_script_setup_true_lang-Cnyt5V8T.js +0 -133
- package/dist/SignIns-BcqBgWgN.js +0 -121
- package/dist/UserRecord-CtUPpbCt.js +0 -267
- package/dist/UsersList-BMkIgIg8.js +0 -155
- package/dist/definition-C7QuyV3i.js +0 -54
- package/dist/fieldMessages-B6GHgi40.js +0 -25
- package/dist/http-nz92KjdS.js +0 -42
- package/dist/index-CdtofdcJ.js +0 -501
- package/dist/languages-BShG9LpE.js +0 -10
- package/dist/signInEvents-DWShrJox.js +0 -30
- package/dist/status-BRA14qwX.js +0 -34
- package/dist/useWaitStatus-fsacMl4W.js +0 -24
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** The version of @wssto2/vue-core (kept equal to package.json by index.test.ts). */
|
|
2
|
-
export declare const version = "0.
|
|
2
|
+
export declare const version = "0.10.0";
|
package/dist/index.js
CHANGED
package/dist/modal/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { _ as G } from "../DiscardChangesModal.vue_vue_type_script_setup_true_lang-B3WbLyNb.js";
|
|
2
|
-
import { _ as b } from "../Modal.vue_vue_type_script_setup_true_lang-
|
|
3
|
-
import { m as O } from "../Modal.vue_vue_type_script_setup_true_lang-
|
|
2
|
+
import { _ as b } from "../Modal.vue_vue_type_script_setup_true_lang-DDS0iEnn.js";
|
|
3
|
+
import { m as O } from "../Modal.vue_vue_type_script_setup_true_lang-DDS0iEnn.js";
|
|
4
4
|
import { _ as T } from "../Sheet.vue_vue_type_script_setup_true_lang-B91aRD_y.js";
|
|
5
5
|
import { defineComponent as y, ref as k, computed as v, openBlock as t, createBlock as w, unref as i, withCtx as S, createElementVNode as r, createElementBlock as o, Fragment as c, renderList as u, toDisplayString as l, createCommentVNode as C } from "vue";
|
|
6
6
|
import { useI18n as B } from "vue-i18n";
|
|
7
|
-
import { a as M, u as $ } from "../
|
|
7
|
+
import { a as M, u as $ } from "../shortcut-DUR6yPWA.js";
|
|
8
8
|
const j = {
|
|
9
9
|
class: "flex flex-col gap-5",
|
|
10
10
|
"data-test": "shortcut-help"
|
|
@@ -17,6 +17,7 @@ export type ChangeRow = {
|
|
|
17
17
|
after: Record<string, string>;
|
|
18
18
|
actor: PersonRef | null;
|
|
19
19
|
created_at: string;
|
|
20
|
+
ext?: unknown;
|
|
20
21
|
};
|
|
21
22
|
export type ChangeView = "all" | "access" | "details";
|
|
22
23
|
export type ClauseInfo = {
|
|
@@ -26,10 +27,14 @@ export type ClauseInfo = {
|
|
|
26
27
|
role?: string;
|
|
27
28
|
binding_id?: number;
|
|
28
29
|
};
|
|
30
|
+
export type DeactivateResult = {
|
|
31
|
+
ext?: unknown;
|
|
32
|
+
};
|
|
29
33
|
export type Impersonator = {
|
|
30
34
|
id: number;
|
|
31
35
|
name: string;
|
|
32
36
|
};
|
|
37
|
+
export type LastSignInFilter = "never" | "idle";
|
|
33
38
|
export type MyAccess = {
|
|
34
39
|
subject: Subject;
|
|
35
40
|
root: boolean;
|
|
@@ -129,6 +134,7 @@ export type UserDetail = {
|
|
|
129
134
|
last_sign_in: string | null;
|
|
130
135
|
locked_until: string | null;
|
|
131
136
|
created_at: string;
|
|
137
|
+
ext?: unknown;
|
|
132
138
|
};
|
|
133
139
|
export type UserRow = {
|
|
134
140
|
id: number;
|
|
@@ -142,6 +148,7 @@ export type UserRow = {
|
|
|
142
148
|
last_sign_in: string | null;
|
|
143
149
|
locked_until: string | null;
|
|
144
150
|
created_at: string;
|
|
151
|
+
ext?: unknown;
|
|
145
152
|
};
|
|
146
153
|
export type UserView = "active" | "locked" | "inactive" | "all";
|
|
147
154
|
export type ViewCount = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type ListResult } from "../../client";
|
|
2
|
-
import type { ActivityRow, ChangeRow, PendingEmail, ProfileResponse, SessionList, SessionResponse, SignInRow, UnlockResult, UserDetail, UserRow } from "./entities";
|
|
1
|
+
import { type ListResult, type QueryValue } from "../../client";
|
|
2
|
+
import type { ActivityRow, ChangeRow, DeactivateResult, PendingEmail, ProfileResponse, SessionList, SessionResponse, SignInRow, UnlockResult, UserDetail, UserRow } from "./entities";
|
|
3
3
|
export declare const identityRoutes: {
|
|
4
4
|
readonly login: import("../../client").ApiRoute<{
|
|
5
5
|
login: string;
|
|
@@ -24,7 +24,8 @@ export declare const identityRoutes: {
|
|
|
24
24
|
order_dir?: string | undefined;
|
|
25
25
|
page?: number | undefined;
|
|
26
26
|
per_page?: number | undefined;
|
|
27
|
-
|
|
27
|
+
last_sign_in?: "idle" | "never" | undefined;
|
|
28
|
+
} & Record<string, QueryValue>, ListResult<UserRow>, unknown>;
|
|
28
29
|
readonly usersShow: import("../../client").ApiRoute<{
|
|
29
30
|
id: number;
|
|
30
31
|
}, UserDetail, unknown>;
|
|
@@ -35,6 +36,7 @@ export declare const identityRoutes: {
|
|
|
35
36
|
locale: string;
|
|
36
37
|
password: string;
|
|
37
38
|
phone?: string | undefined;
|
|
39
|
+
ext?: unknown;
|
|
38
40
|
}, UserDetail, unknown>;
|
|
39
41
|
readonly usersUpdate: import("../../client").ApiRoute<{
|
|
40
42
|
id: number;
|
|
@@ -43,6 +45,7 @@ export declare const identityRoutes: {
|
|
|
43
45
|
email: string;
|
|
44
46
|
locale: string;
|
|
45
47
|
phone?: string | undefined;
|
|
48
|
+
ext?: unknown;
|
|
46
49
|
}, UserDetail, unknown>;
|
|
47
50
|
readonly usersSetPassword: import("../../client").ApiRoute<{
|
|
48
51
|
id: number;
|
|
@@ -50,7 +53,8 @@ export declare const identityRoutes: {
|
|
|
50
53
|
}, void, unknown>;
|
|
51
54
|
readonly usersDeactivate: import("../../client").ApiRoute<{
|
|
52
55
|
id: number;
|
|
53
|
-
|
|
56
|
+
details?: unknown;
|
|
57
|
+
}, DeactivateResult, unknown>;
|
|
54
58
|
readonly usersActivate: import("../../client").ApiRoute<{
|
|
55
59
|
id: number;
|
|
56
60
|
}, void, unknown>;
|
|
@@ -46,8 +46,19 @@ export declare const CreateUserInputSchema: z.ZodObject<{
|
|
|
46
46
|
phone: z.ZodOptional<z.ZodString>;
|
|
47
47
|
locale: z.ZodString;
|
|
48
48
|
password: z.ZodString;
|
|
49
|
+
ext: z.ZodOptional<z.ZodUnknown>;
|
|
49
50
|
}, z.core.$strip>;
|
|
50
51
|
export type CreateUserInput = z.infer<typeof CreateUserInputSchema>;
|
|
52
|
+
export declare const DeactivateUserInputSchema: z.ZodObject<{
|
|
53
|
+
id: z.ZodNumber;
|
|
54
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
55
|
+
}, z.core.$strip>;
|
|
56
|
+
export type DeactivateUserInput = z.infer<typeof DeactivateUserInputSchema>;
|
|
57
|
+
export declare const LastSignInFilterSchema: z.ZodEnum<{
|
|
58
|
+
idle: "idle";
|
|
59
|
+
never: "never";
|
|
60
|
+
}>;
|
|
61
|
+
export type LastSignInFilter = z.infer<typeof LastSignInFilterSchema>;
|
|
51
62
|
export declare const UserViewSchema: z.ZodEnum<{
|
|
52
63
|
inactive: "inactive";
|
|
53
64
|
all: "all";
|
|
@@ -67,6 +78,10 @@ export declare const ListUsersInputSchema: z.ZodObject<{
|
|
|
67
78
|
order_dir: z.ZodOptional<z.ZodString>;
|
|
68
79
|
page: z.ZodOptional<z.ZodNumber>;
|
|
69
80
|
per_page: z.ZodOptional<z.ZodNumber>;
|
|
81
|
+
last_sign_in: z.ZodOptional<z.ZodEnum<{
|
|
82
|
+
idle: "idle";
|
|
83
|
+
never: "never";
|
|
84
|
+
}>>;
|
|
70
85
|
}, z.core.$strip>;
|
|
71
86
|
export type ListUsersInput = z.infer<typeof ListUsersInputSchema>;
|
|
72
87
|
export declare const LoginAsInputSchema: z.ZodObject<{
|
|
@@ -132,6 +147,7 @@ export declare const UpdateUserInputSchema: z.ZodObject<{
|
|
|
132
147
|
email: z.ZodString;
|
|
133
148
|
phone: z.ZodOptional<z.ZodString>;
|
|
134
149
|
locale: z.ZodString;
|
|
150
|
+
ext: z.ZodOptional<z.ZodUnknown>;
|
|
135
151
|
}, z.core.$strip>;
|
|
136
152
|
export type UpdateUserInput = z.infer<typeof UpdateUserInputSchema>;
|
|
137
153
|
export declare const UserInputSchema: z.ZodObject<{
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { HttpClient } from "../../client";
|
|
2
2
|
/** The dead letters of every consumer of the application's event queue, as go-core's `GET /v1/events/dead-letters` pages them (newest first; only the consumer narrows it). */
|
|
3
|
-
export declare function deadLetterList(http: HttpClient): import("../../collection").CollectionDefinition<import("..").DeadLetterRow, never, "consumer", never
|
|
3
|
+
export declare function deadLetterList(http: HttpClient): import("../../collection").CollectionDefinition<import("..").DeadLetterRow, never, "consumer", never, Readonly<Record<string, unknown>>>;
|
package/dist/page/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { _ as
|
|
2
|
-
import { a as W, b as X, c as Y, d as Z, p as ee, u as te, e as ae } from "../AdaptivePageShell.vue_vue_type_script_setup_true_lang-DdJOodn8.js";
|
|
1
|
+
import { _ as W, a as X, b as Y, c as Z, p as ee, u as te, d as ae } from "../AdaptivePageShell.vue_vue_type_script_setup_true_lang-D5i77H6S.js";
|
|
3
2
|
import { _ as se } from "../BottomDock.vue_vue_type_script_setup_true_lang-CjN7xYEr.js";
|
|
4
3
|
import { b as ne, i as re, u as ie } from "../bottomDock-BZEiOPYZ.js";
|
|
5
|
-
import {
|
|
4
|
+
import { _ as x } from "../BottomDockPortal.vue_vue_type_script_setup_true_lang-DmwR-2SP.js";
|
|
5
|
+
import { defineComponent as v, openBlock as a, createBlock as b, withCtx as c, createElementVNode as s, normalizeStyle as k, createElementBlock as l, Fragment as y, renderList as B, normalizeClass as d, unref as _, createCommentVNode as p, toDisplayString as f, useModel as S, useId as C, useTemplateRef as P, computed as $, mergeProps as w, createSlots as T, renderSlot as m, mergeModels as D } from "vue";
|
|
6
6
|
import { _ as L } from "../Icon.vue_vue_type_script_lang-BhhsFYwp.js";
|
|
7
|
-
import { _ as ue } from "../RecordHeader.vue_vue_type_script_setup_true_lang-
|
|
7
|
+
import { _ as ue } from "../RecordHeader.vue_vue_type_script_setup_true_lang-DqGc3Jyo.js";
|
|
8
8
|
import { c as pe, i as fe, p as me, a as be, u as ge, b as ve } from "../chrome-nUcmVu8G.js";
|
|
9
9
|
import { s as z, u as I } from "../sectionIndex-BS0ic5W7.js";
|
|
10
|
-
import { p as
|
|
11
|
-
import { _ as ye } from "../SectionNavigator.vue_vue_type_script_setup_true_lang-
|
|
12
|
-
import { a as Se, _ as Ce } from "../SectionList.vue_vue_type_script_setup_true_lang-
|
|
10
|
+
import { p as he, a as xe } from "../sectionIndex-BS0ic5W7.js";
|
|
11
|
+
import { _ as ye } from "../SectionNavigator.vue_vue_type_script_setup_true_lang-Dh3sXUt_.js";
|
|
12
|
+
import { a as Se, _ as Ce } from "../SectionList.vue_vue_type_script_setup_true_lang-DR0_NsqC.js";
|
|
13
13
|
import { _ as A } from "../Panel.vue_vue_type_script_setup_true_lang-D_Wg42hu.js";
|
|
14
14
|
const K = ["aria-label"], M = ["aria-label"], N = ["aria-selected", "tabindex", "onClick"], R = { class: "relative" }, E = {
|
|
15
15
|
key: 2,
|
|
@@ -51,7 +51,7 @@ const K = ["aria-label"], M = ["aria-label"], N = ["aria-selected", "tabindex",
|
|
|
51
51
|
onClick: (u) => r("select", e.value)
|
|
52
52
|
}, [
|
|
53
53
|
s("span", R, [
|
|
54
|
-
e.icon ? (a(), b(
|
|
54
|
+
e.icon ? (a(), b(_(L), {
|
|
55
55
|
key: 0,
|
|
56
56
|
name: e.icon,
|
|
57
57
|
size: 22
|
|
@@ -96,8 +96,8 @@ const K = ["aria-label"], M = ["aria-label"], N = ["aria-selected", "tabindex",
|
|
|
96
96
|
ref_key: "panel",
|
|
97
97
|
ref: i,
|
|
98
98
|
collapsed: o.value,
|
|
99
|
-
"onUpdate:collapsed": u[0] || (u[0] = (
|
|
100
|
-
}, { id:
|
|
99
|
+
"onUpdate:collapsed": u[0] || (u[0] = (h) => o.value = h)
|
|
100
|
+
}, { id: _(r), tabindex: -1 }, {
|
|
101
101
|
title: t.title,
|
|
102
102
|
icon: t.icon,
|
|
103
103
|
number: t.number,
|
|
@@ -149,7 +149,7 @@ export {
|
|
|
149
149
|
fe as installPageChrome,
|
|
150
150
|
me as pageChromeKey,
|
|
151
151
|
ee as pageSectionBackKey,
|
|
152
|
-
|
|
152
|
+
he as provideSectionIndex,
|
|
153
153
|
z as sectionId,
|
|
154
154
|
ie as useBottomDockTarget,
|
|
155
155
|
te as useLargeTitle,
|
package/dist/phone/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent as fe, useModel as me, useTemplateRef as F, ref as E, computed as g, watch as ne, nextTick as A, openBlock as w, createElementBlock as $, createElementVNode as f, normalizeClass as P, unref as s, createVNode as M, toDisplayString as T, normalizeStyle as xe, Fragment as ee, renderList as le, createCommentVNode as J, withModifiers as we, withDirectives as _e, vModelText as ke, mergeModels as ae, inject as Ce, shallowRef as $e, onBeforeUnmount as De, createBlock as Me, mergeProps as Te, createSlots as Se, withCtx as ie, createTextVNode as Ne, renderSlot as Ie, mergeDefaults as Pe } from "vue";
|
|
2
2
|
import { useI18n as pe } from "vue-i18n";
|
|
3
3
|
import { b as Ve } from "../controlSurface-t7OEFESJ.js";
|
|
4
|
-
import { c as se, a as Oe, e as Re, _ as Be, f as Ee, b as ze } from "../options-
|
|
4
|
+
import { c as se, a as Oe, e as Re, _ as Be, f as Ee, b as ze } from "../options-B48UiYsG.js";
|
|
5
5
|
import { _ as q } from "../Icon.vue_vue_type_script_lang-BhhsFYwp.js";
|
|
6
6
|
import { _ as ue } from "../CountryFlag.vue_vue_type_script_setup_true_lang-Kry_vPPZ.js";
|
|
7
7
|
import { u as Fe } from "../anchored-DpuUwf-9.js";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Installing the application on Android: one tap opens the system's own install dialog. Shown by
|
|
3
|
+
* the application when `useInstallPrompt().canInstall` is true; `close` fires when the user
|
|
4
|
+
* installs or dismisses it, and the application keeps it closed.
|
|
5
|
+
*
|
|
6
|
+
* <AndroidInstallBanner v-if="canInstall && !dismissed" app-name="Helpdesk" @close="dismissed = true" />
|
|
7
|
+
*/
|
|
8
|
+
type __VLS_Props = {
|
|
9
|
+
appName: string;
|
|
10
|
+
/** The tile's letters; the first three of the name by default. */
|
|
11
|
+
badge?: string;
|
|
12
|
+
};
|
|
13
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
14
|
+
close: () => any;
|
|
15
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
16
|
+
onClose?: (() => any) | undefined;
|
|
17
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
18
|
+
export default _default;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "The application on your phone": the QR code of the address the user is signed in on and, in
|
|
3
|
+
* Chrome or Edge on this computer, installing the application here with one click. Open it with
|
|
4
|
+
* `v-model:open`; it closes itself and reports it.
|
|
5
|
+
*
|
|
6
|
+
* <InstallQrSheet v-model:open="qrOpen" app-name="Helpdesk" />
|
|
7
|
+
*/
|
|
8
|
+
type __VLS_Props = {
|
|
9
|
+
appName: string;
|
|
10
|
+
/** The address the code opens; the page's own origin by default. */
|
|
11
|
+
url?: string;
|
|
12
|
+
};
|
|
13
|
+
type __VLS_PublicProps = __VLS_Props & {
|
|
14
|
+
"open"?: boolean;
|
|
15
|
+
};
|
|
16
|
+
declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
17
|
+
"update:open": (value: boolean) => any;
|
|
18
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
19
|
+
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
20
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
21
|
+
export default _default;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Add the application to your home screen" on iPhone. Safari gives pages no install API and no
|
|
3
|
+
* view of its menus, so the card shows the three taps in turn (the more button at the bottom
|
|
4
|
+
* right, Share, Add to Home Screen), advancing on its own and on Next, with an arrow at the more
|
|
5
|
+
* button for the first. `close` fires when the user closes it; the application keeps it closed.
|
|
6
|
+
*
|
|
7
|
+
* <IosInstallGuide v-if="currentPlatform() === 'ios' && !dismissed" app-name="Helpdesk" @close="dismissed = true" />
|
|
8
|
+
*/
|
|
9
|
+
type __VLS_Props = {
|
|
10
|
+
appName: string;
|
|
11
|
+
/** The tile's letters; the first three of the name by default. */
|
|
12
|
+
badge?: string;
|
|
13
|
+
};
|
|
14
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
15
|
+
close: () => any;
|
|
16
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
17
|
+
onClose?: (() => any) | undefined;
|
|
18
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
19
|
+
export default _default;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A QR code of `value` (typically the application's own address, to open it on a phone), drawn as
|
|
3
|
+
* one SVG path from `uqr`'s module matrix: dark modules on a white quiet zone in either theme, as
|
|
4
|
+
* cameras read it. `label` is the accessible name.
|
|
5
|
+
*
|
|
6
|
+
* <QrCode :value="origin" :size="184" label="QR code of the address" />
|
|
7
|
+
*/
|
|
8
|
+
type __VLS_Props = {
|
|
9
|
+
value: string;
|
|
10
|
+
size?: number;
|
|
11
|
+
label: string;
|
|
12
|
+
};
|
|
13
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
14
|
+
size: number;
|
|
15
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
16
|
+
export default _default;
|
package/dist/pwa/index.d.ts
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
export { captureInstallPrompt, currentPlatform, isStandalone, useInstallPrompt, type AppPlatform } from "./install";
|
|
2
2
|
export { registerServiceWorker, type ServiceWorkerOptions } from "./worker";
|
|
3
|
+
export { default as AndroidInstallBanner } from "./AndroidInstallBanner.vue";
|
|
4
|
+
export { default as InstallQrSheet } from "./InstallQrSheet.vue";
|
|
5
|
+
export { default as IosInstallGuide } from "./IosInstallGuide.vue";
|
|
6
|
+
export { default as QrCode } from "./QrCode.vue";
|
package/dist/pwa/index.js
CHANGED
|
@@ -1,51 +1,271 @@
|
|
|
1
|
-
import { computed as
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { computed as m, shallowRef as D, ref as x, defineComponent as _, openBlock as f, createBlock as b, Teleport as S, createElementVNode as t, toDisplayString as c, unref as n, createVNode as g, withCtx as k, createTextVNode as q, createElementBlock as h, useModel as Q, watch as T, createCommentVNode as M, mergeModels as A, onMounted as V, onBeforeUnmount as R, Fragment as W, renderList as G, normalizeClass as j } from "vue";
|
|
2
|
+
import { useI18n as C } from "vue-i18n";
|
|
3
|
+
import { _ as P } from "../Button.vue_vue_type_script_setup_true_lang-C74hcb0N.js";
|
|
4
|
+
import { _ as z } from "../Icon.vue_vue_type_script_lang-BhhsFYwp.js";
|
|
5
|
+
import { _ as F } from "../Modal.vue_vue_type_script_setup_true_lang-DDS0iEnn.js";
|
|
6
|
+
import { encode as H } from "uqr";
|
|
7
|
+
const v = D(null), I = x(!1);
|
|
8
|
+
let B = !1;
|
|
9
|
+
function Ie() {
|
|
10
|
+
B || typeof window > "u" || (B = !0, window.addEventListener("beforeinstallprompt", (e) => {
|
|
11
|
+
e.preventDefault(), v.value = e;
|
|
7
12
|
}), window.addEventListener("appinstalled", () => {
|
|
8
|
-
|
|
13
|
+
I.value = !0, v.value = null;
|
|
9
14
|
}));
|
|
10
15
|
}
|
|
11
|
-
function
|
|
16
|
+
function Ce() {
|
|
12
17
|
if (typeof navigator > "u") return "desktop";
|
|
13
18
|
const e = navigator.userAgent;
|
|
14
19
|
return /Android/i.test(e) ? "android" : /iPad|iPhone|iPod/.test(e) || navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1 ? "ios" : "desktop";
|
|
15
20
|
}
|
|
16
|
-
function
|
|
21
|
+
function J() {
|
|
17
22
|
return typeof window > "u" ? !1 : window.matchMedia?.("(display-mode: standalone)").matches === !0 || navigator.standalone === !0;
|
|
18
23
|
}
|
|
19
|
-
function
|
|
24
|
+
function L() {
|
|
20
25
|
return {
|
|
21
|
-
canInstall:
|
|
22
|
-
installed:
|
|
26
|
+
canInstall: m(() => v.value != null),
|
|
27
|
+
installed: m(() => I.value || J()),
|
|
23
28
|
/** Opens the browser's install dialog; true when the user accepted. */
|
|
24
29
|
async install() {
|
|
25
|
-
const e =
|
|
30
|
+
const e = v.value;
|
|
26
31
|
if (!e) return !1;
|
|
27
32
|
await e.prompt();
|
|
28
|
-
const { outcome:
|
|
29
|
-
return
|
|
33
|
+
const { outcome: l } = await e.userChoice;
|
|
34
|
+
return v.value = null, l === "accepted" && (I.value = !0), l === "accepted";
|
|
30
35
|
}
|
|
31
36
|
};
|
|
32
37
|
}
|
|
33
|
-
function
|
|
38
|
+
function K() {
|
|
34
39
|
const e = document.querySelector('script[type="module"][src*="/assets/"]');
|
|
35
40
|
return e ? new URL(e.src, location.href).pathname : null;
|
|
36
41
|
}
|
|
37
|
-
function
|
|
42
|
+
function Ne(e = {}) {
|
|
38
43
|
if (e.enabled === !1 || typeof navigator > "u" || !("serviceWorker" in navigator)) return;
|
|
39
|
-
const
|
|
40
|
-
navigator.serviceWorker.register(`${
|
|
44
|
+
const l = e.url ?? "/sw.js", i = encodeURIComponent(K() ?? "unknown"), a = () => {
|
|
45
|
+
navigator.serviceWorker.register(`${l}${l.includes("?") ? "&" : "?"}build=${i}`).catch(() => {
|
|
41
46
|
});
|
|
42
47
|
};
|
|
43
48
|
document.readyState === "complete" ? a() : window.addEventListener("load", a, { once: !0 });
|
|
44
49
|
}
|
|
50
|
+
const O = {
|
|
51
|
+
class: "fixed inset-x-3 bottom-[calc(var(--bottom-dock-h,0px)+env(safe-area-inset-bottom)+0.75rem)] z-40 flex animate-reveal items-center gap-3 rounded-2xl bg-surface-cell px-4 py-3.5 shadow-dialog",
|
|
52
|
+
"data-test": "install-android-banner"
|
|
53
|
+
}, X = { class: "grid size-10 shrink-0 place-items-center rounded-xl bg-tint text-footnote font-semibold text-content-on-tint" }, Y = { class: "flex flex-1 flex-col" }, Z = { class: "text-subheadline font-semibold text-content-strong" }, ee = { class: "text-footnote text-content-muted" }, te = ["aria-label"], Ee = /* @__PURE__ */ _({
|
|
54
|
+
__name: "AndroidInstallBanner",
|
|
55
|
+
props: {
|
|
56
|
+
appName: {},
|
|
57
|
+
badge: {}
|
|
58
|
+
},
|
|
59
|
+
emits: ["close"],
|
|
60
|
+
setup(e, { emit: l }) {
|
|
61
|
+
const i = e, a = l, { t: s } = C(), o = L(), r = x(!1);
|
|
62
|
+
async function d() {
|
|
63
|
+
r.value = !0;
|
|
64
|
+
try {
|
|
65
|
+
await o.install() && a("close");
|
|
66
|
+
} finally {
|
|
67
|
+
r.value = !1;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return (u, p) => (f(), b(S, { to: "body" }, [
|
|
71
|
+
t("div", O, [
|
|
72
|
+
t("span", X, c(i.badge ?? i.appName.slice(0, 3).toUpperCase()), 1),
|
|
73
|
+
t("span", Y, [
|
|
74
|
+
t("span", Z, c(n(s)("core.pwa.android.title", { app: e.appName })), 1),
|
|
75
|
+
t("span", ee, c(n(s)("core.pwa.android.text")), 1)
|
|
76
|
+
]),
|
|
77
|
+
g(n(P), {
|
|
78
|
+
prominence: "primary",
|
|
79
|
+
size: "sm",
|
|
80
|
+
processing: r.value,
|
|
81
|
+
onClick: d
|
|
82
|
+
}, {
|
|
83
|
+
default: k(() => [
|
|
84
|
+
q(c(n(s)("core.pwa.android.install")), 1)
|
|
85
|
+
]),
|
|
86
|
+
_: 1
|
|
87
|
+
}, 8, ["processing"]),
|
|
88
|
+
t("button", {
|
|
89
|
+
type: "button",
|
|
90
|
+
class: "hit-target grid size-7 place-items-center rounded-full bg-fill text-content-muted",
|
|
91
|
+
"aria-label": n(s)("core.actions.close"),
|
|
92
|
+
onClick: p[0] || (p[0] = (N) => a("close"))
|
|
93
|
+
}, [
|
|
94
|
+
g(n(z), {
|
|
95
|
+
name: "close",
|
|
96
|
+
size: 12
|
|
97
|
+
})
|
|
98
|
+
], 8, te)
|
|
99
|
+
])
|
|
100
|
+
]));
|
|
101
|
+
}
|
|
102
|
+
}), ne = ["width", "height", "viewBox", "aria-label"], oe = ["d"], $ = 2, ae = /* @__PURE__ */ _({
|
|
103
|
+
__name: "QrCode",
|
|
104
|
+
props: {
|
|
105
|
+
value: {},
|
|
106
|
+
size: { default: 132 },
|
|
107
|
+
label: {}
|
|
108
|
+
},
|
|
109
|
+
setup(e) {
|
|
110
|
+
const l = e, i = m(() => H(l.value, { ecc: "M", border: 0 })), a = m(() => i.value.size + $ * 2), s = m(() => {
|
|
111
|
+
let o = "";
|
|
112
|
+
return i.value.data.forEach((r, d) => r.forEach((u, p) => {
|
|
113
|
+
u && (o += `M${p + $} ${d + $}h1v1h-1z`);
|
|
114
|
+
})), o;
|
|
115
|
+
});
|
|
116
|
+
return (o, r) => (f(), h("svg", {
|
|
117
|
+
width: e.size,
|
|
118
|
+
height: e.size,
|
|
119
|
+
viewBox: `0 0 ${a.value} ${a.value}`,
|
|
120
|
+
role: "img",
|
|
121
|
+
"aria-label": e.label,
|
|
122
|
+
"shape-rendering": "crispEdges",
|
|
123
|
+
class: "shrink-0 rounded-lg bg-white",
|
|
124
|
+
"data-test": "install-qr"
|
|
125
|
+
}, [
|
|
126
|
+
t("path", {
|
|
127
|
+
d: s.value,
|
|
128
|
+
fill: "#0D1714"
|
|
129
|
+
}, null, 8, oe)
|
|
130
|
+
], 8, ne));
|
|
131
|
+
}
|
|
132
|
+
}), se = {
|
|
133
|
+
class: "flex flex-col items-center gap-4 pb-2 text-center",
|
|
134
|
+
"data-test": "install-qr-sheet"
|
|
135
|
+
}, le = { class: "text-subheadline text-content-muted" }, Be = /* @__PURE__ */ _({
|
|
136
|
+
__name: "InstallQrSheet",
|
|
137
|
+
props: /* @__PURE__ */ A({
|
|
138
|
+
appName: {},
|
|
139
|
+
url: {}
|
|
140
|
+
}, {
|
|
141
|
+
open: { type: Boolean, default: !1 },
|
|
142
|
+
openModifiers: {}
|
|
143
|
+
}),
|
|
144
|
+
emits: ["update:open"],
|
|
145
|
+
setup(e) {
|
|
146
|
+
const l = e, i = Q(e, "open"), { t: a } = C(), s = L(), o = x(null), r = () => l.url ?? (typeof window > "u" ? "" : window.location.origin);
|
|
147
|
+
return T(i, (d) => {
|
|
148
|
+
d && o.value?.present();
|
|
149
|
+
}), (d, u) => (f(), b(n(F), {
|
|
150
|
+
ref_key: "dialog",
|
|
151
|
+
ref: o,
|
|
152
|
+
size: "sm",
|
|
153
|
+
title: n(a)("core.pwa.qr.title", { app: e.appName }),
|
|
154
|
+
onDismissed: u[1] || (u[1] = (p) => i.value = !1)
|
|
155
|
+
}, {
|
|
156
|
+
default: k(() => [
|
|
157
|
+
t("div", se, [
|
|
158
|
+
g(ae, {
|
|
159
|
+
value: r(),
|
|
160
|
+
size: 184,
|
|
161
|
+
label: n(a)("core.pwa.qr.label", { app: e.appName })
|
|
162
|
+
}, null, 8, ["value", "label"]),
|
|
163
|
+
t("p", le, c(n(a)("core.pwa.qr.text", { app: e.appName })), 1),
|
|
164
|
+
n(s).canInstall.value ? (f(), b(n(P), {
|
|
165
|
+
key: 0,
|
|
166
|
+
prominence: "secondary",
|
|
167
|
+
icon: "download",
|
|
168
|
+
onClick: u[0] || (u[0] = (p) => n(s).install())
|
|
169
|
+
}, {
|
|
170
|
+
default: k(() => [
|
|
171
|
+
q(c(n(a)("core.pwa.qr.install_here")), 1)
|
|
172
|
+
]),
|
|
173
|
+
_: 1
|
|
174
|
+
})) : M("", !0)
|
|
175
|
+
])
|
|
176
|
+
]),
|
|
177
|
+
_: 1
|
|
178
|
+
}, 8, ["title"]));
|
|
179
|
+
}
|
|
180
|
+
}), ie = {
|
|
181
|
+
class: "pointer-events-none fixed inset-0 z-50",
|
|
182
|
+
"data-test": "install-ios-guide"
|
|
183
|
+
}, re = { class: "pointer-events-auto absolute inset-x-3 top-[calc(env(safe-area-inset-top)+0.75rem)] flex animate-reveal flex-col gap-2.5 rounded-2xl bg-surface-cell px-4 py-3.5 shadow-dialog" }, ce = { class: "flex items-center gap-3" }, de = { class: "grid size-10 shrink-0 place-items-center rounded-xl bg-tint text-footnote font-semibold text-content-on-tint" }, ue = { class: "flex flex-1 flex-col" }, pe = { class: "text-body font-semibold text-content-strong" }, fe = { class: "text-footnote text-content-muted" }, me = ["aria-label"], ve = { class: "flex items-center gap-2.5 border-t border-border-separator pt-2.5" }, ge = { class: "grid size-6 shrink-0 place-items-center rounded-full bg-tint text-footnote font-semibold text-content-on-tint" }, he = {
|
|
184
|
+
class: "flex gap-1",
|
|
185
|
+
"aria-hidden": "true"
|
|
186
|
+
}, be = {
|
|
187
|
+
key: 0,
|
|
188
|
+
class: "absolute right-5 bottom-[calc(env(safe-area-inset-bottom)+4.5rem)] grid size-10 animate-bounce place-items-center rounded-full bg-tint text-content-on-tint shadow-dialog",
|
|
189
|
+
"aria-hidden": "true"
|
|
190
|
+
}, Se = /* @__PURE__ */ _({
|
|
191
|
+
__name: "IosInstallGuide",
|
|
192
|
+
props: {
|
|
193
|
+
appName: {},
|
|
194
|
+
badge: {}
|
|
195
|
+
},
|
|
196
|
+
emits: ["close"],
|
|
197
|
+
setup(e, { emit: l }) {
|
|
198
|
+
const i = e, a = l, { t: s } = C(), o = x(0), r = ["more", "share", "add"];
|
|
199
|
+
let d = null;
|
|
200
|
+
const u = () => {
|
|
201
|
+
d && clearInterval(d), d = null;
|
|
202
|
+
}, p = () => {
|
|
203
|
+
u(), d = setInterval(() => {
|
|
204
|
+
o.value = (o.value + 1) % r.length;
|
|
205
|
+
}, 2800);
|
|
206
|
+
}, N = () => {
|
|
207
|
+
o.value = (o.value + 1) % r.length, p();
|
|
208
|
+
}, w = m(() => r[o.value]);
|
|
209
|
+
return V(p), R(u), (xe, E) => (f(), b(S, { to: "body" }, [
|
|
210
|
+
t("div", ie, [
|
|
211
|
+
t("div", re, [
|
|
212
|
+
t("div", ce, [
|
|
213
|
+
t("span", de, c(i.badge ?? i.appName.slice(0, 3).toUpperCase()), 1),
|
|
214
|
+
t("span", ue, [
|
|
215
|
+
t("span", pe, c(n(s)("core.pwa.ios.title", { app: e.appName })), 1),
|
|
216
|
+
t("span", fe, c(n(s)("core.pwa.ios.subtitle")), 1)
|
|
217
|
+
]),
|
|
218
|
+
t("button", {
|
|
219
|
+
type: "button",
|
|
220
|
+
class: "hit-target grid size-7 place-items-center rounded-full bg-fill text-content-muted",
|
|
221
|
+
"aria-label": n(s)("core.actions.close"),
|
|
222
|
+
"data-test": "install-ios-guide-close",
|
|
223
|
+
onClick: E[0] || (E[0] = (U) => a("close"))
|
|
224
|
+
}, [
|
|
225
|
+
g(n(z), {
|
|
226
|
+
name: "close",
|
|
227
|
+
size: 12
|
|
228
|
+
})
|
|
229
|
+
], 8, me)
|
|
230
|
+
]),
|
|
231
|
+
t("div", ve, [
|
|
232
|
+
t("span", ge, c(o.value + 1), 1),
|
|
233
|
+
(f(), h("span", {
|
|
234
|
+
key: w.value,
|
|
235
|
+
class: "flex-1 animate-text-swap text-subheadline font-semibold text-content-strong",
|
|
236
|
+
"aria-live": "polite"
|
|
237
|
+
}, c(n(s)(`core.pwa.ios.steps.${w.value}`)), 1)),
|
|
238
|
+
t("span", he, [
|
|
239
|
+
(f(), h(W, null, G(r, (U, y) => t("span", {
|
|
240
|
+
key: y,
|
|
241
|
+
class: j(["h-1.5 rounded-full transition-[width,background-color] duration-motion-normal", [y === o.value ? "w-4" : "w-1.5", y <= o.value ? "bg-tint" : "bg-fill-strong"]])
|
|
242
|
+
}, null, 2)), 64))
|
|
243
|
+
]),
|
|
244
|
+
t("button", {
|
|
245
|
+
type: "button",
|
|
246
|
+
class: "text-subheadline font-semibold text-content-link",
|
|
247
|
+
onClick: N
|
|
248
|
+
}, c(n(s)("core.pwa.ios.next")), 1)
|
|
249
|
+
])
|
|
250
|
+
]),
|
|
251
|
+
w.value === "more" ? (f(), h("span", be, [
|
|
252
|
+
g(n(z), {
|
|
253
|
+
name: "arrowDownSLine",
|
|
254
|
+
class: "size-5"
|
|
255
|
+
})
|
|
256
|
+
])) : M("", !0)
|
|
257
|
+
])
|
|
258
|
+
]));
|
|
259
|
+
}
|
|
260
|
+
});
|
|
45
261
|
export {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
262
|
+
Ee as AndroidInstallBanner,
|
|
263
|
+
Be as InstallQrSheet,
|
|
264
|
+
Se as IosInstallGuide,
|
|
265
|
+
ae as QrCode,
|
|
266
|
+
Ie as captureInstallPrompt,
|
|
267
|
+
Ce as currentPlatform,
|
|
268
|
+
J as isStandalone,
|
|
269
|
+
Ne as registerServiceWorker,
|
|
270
|
+
L as useInstallPrompt
|
|
51
271
|
};
|
package/dist/resource/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { p as o, u as r, a, b as u } from "../routeResource-DlTsGTg_.js";
|
|
2
|
-
import { _ as R, a as c } from "../ResourcePage.vue_vue_type_script_setup_true_lang-
|
|
2
|
+
import { _ as R, a as c } from "../ResourcePage.vue_vue_type_script_setup_true_lang-DljhsTU4.js";
|
|
3
3
|
export {
|
|
4
4
|
R as RecordPager,
|
|
5
5
|
c as ResourcePage,
|