@wssto2/vue-core 0.1.0 → 0.2.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/README.md +20 -9
- package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-CKghARkW.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-CeKK8_g5.js} +2 -2
- package/dist/{AlertDialog.vue_vue_type_script_setup_true_lang-BZb4qKXo.js → AlertDialog.vue_vue_type_script_setup_true_lang-e4hzkzg3.js} +1 -1
- package/dist/{AsyncSection.vue_vue_type_script_setup_true_lang-B82bl36A.js → AsyncSection.vue_vue_type_script_setup_true_lang-CWLB3xsR.js} +1 -1
- package/dist/Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js +51 -0
- package/dist/Button.vue_vue_type_script_setup_true_lang-B1eZgLae.js +182 -0
- package/dist/CountryFlag.vue_vue_type_script_setup_true_lang-Kry_vPPZ.js +299 -0
- package/dist/{DiscardChangesModal.vue_vue_type_script_setup_true_lang-Bx5O1RZJ.js → DiscardChangesModal.vue_vue_type_script_setup_true_lang-DyhYHRyz.js} +1 -1
- package/dist/{LeaveGuardRoot.vue_vue_type_script_setup_true_lang-DH6EB8br.js → LeaveGuardRoot.vue_vue_type_script_setup_true_lang-CvwoT1JF.js} +1 -1
- package/dist/{Menu.vue_vue_type_script_setup_true_lang-D44EHXQZ.js → Menu.vue_vue_type_script_setup_true_lang-CrMj6KPD.js} +1 -1
- package/dist/{Modal.vue_vue_type_script_setup_true_lang-DYQgaUtj.js → Modal.vue_vue_type_script_setup_true_lang-BQZM49gC.js} +138 -128
- package/dist/{PhotoViewer.vue_vue_type_script_setup_true_lang-DDVQXJRB.js → PhotoViewer.vue_vue_type_script_setup_true_lang-ElDizaW2.js} +1 -1
- package/dist/{SectionList.vue_vue_type_script_setup_true_lang-DGcKX_OJ.js → SectionList.vue_vue_type_script_setup_true_lang-L9ita_Kx.js} +2 -2
- package/dist/SelectField.vue_vue_type_script_setup_true_lang-DZTrU8NJ.js +661 -0
- package/dist/{Sheet.vue_vue_type_script_setup_true_lang-BLBD5ps8.js → Sheet.vue_vue_type_script_setup_true_lang-CtkJ-4e3.js} +1 -1
- package/dist/{Tooltip.vue_vue_type_script_setup_true_lang-BJWPVyfT.js → Tooltip.vue_vue_type_script_setup_true_lang-OOD_XNWx.js} +1 -1
- package/dist/app/application.d.ts +5 -0
- package/dist/app/environment.d.ts +2 -0
- package/dist/app/index.js +75 -72
- package/dist/button/index.d.ts +1 -1
- package/dist/button/index.js +5 -3
- package/dist/button/shortcut.d.ts +28 -2
- package/dist/collection/CollectionPage.vue.d.ts +1 -0
- package/dist/collection/CollectionRows.vue.d.ts +59 -0
- package/dist/collection/CollectionTable.vue.d.ts +1 -1
- package/dist/collection/DataTable.vue.d.ts +47 -0
- package/dist/collection/RowActions.vue.d.ts +19 -0
- package/dist/collection/columns.d.ts +2 -0
- package/dist/collection/index.d.ts +4 -2
- package/dist/collection/index.js +1752 -1610
- package/dist/collection/rowLayout.d.ts +10 -0
- package/dist/collection/slots.d.ts +6 -3
- package/dist/describeError-l5T9b8Uv.js +41 -0
- package/dist/dialogStack-DZZg55w0.js +31 -0
- package/dist/form/CommandDialog.vue.d.ts +12 -1
- package/dist/form/FormGroup.vue.d.ts +1 -1
- package/dist/form/MultiSelectField.vue.d.ts +4 -1
- package/dist/form/NumberField.vue.d.ts +6 -0
- package/dist/form/OptionList.vue.d.ts +6 -2
- package/dist/form/SelectField.vue.d.ts +4 -1
- package/dist/form/index.d.ts +2 -0
- package/dist/form/index.js +1940 -2008
- package/dist/form/suggestions.d.ts +11 -0
- package/dist/form/useOptions.d.ts +60 -0
- package/dist/i18n/describeError.d.ts +31 -0
- package/dist/i18n/index.d.ts +26 -0
- package/dist/i18n/index.js +22 -20
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/CountryFlag.vue.d.ts +10 -0
- package/dist/modal/Modal.vue.d.ts +4 -0
- package/dist/modal/ShortcutHelp.vue.d.ts +2 -0
- package/dist/modal/index.d.ts +2 -0
- package/dist/modal/index.js +64 -6
- package/dist/modal/placement.d.ts +22 -0
- package/dist/{options-CjSz2dQK.js → options-DAkBtYkI.js} +3 -3
- package/dist/overlay/Popover.vue.d.ts +3 -0
- package/dist/overlay/dialogStack.d.ts +9 -0
- package/dist/overlay/index.d.ts +1 -1
- package/dist/overlay/index.js +18 -17
- package/dist/page/index.js +4 -4
- package/dist/phone/index.js +247 -540
- package/dist/platform/AccessGate.vue.d.ts +50 -0
- package/dist/platform/index.d.ts +2 -0
- package/dist/platform/index.js +86 -66
- package/dist/resource/index.js +42 -42
- package/dist/shell/AccountMenuItem.vue.d.ts +3 -0
- package/dist/shell/NavigationList.vue.d.ts +1 -1
- package/dist/shell/index.js +406 -394
- package/dist/state/Badge.vue.d.ts +17 -10
- package/dist/state/hue.d.ts +8 -0
- package/dist/state/index.d.ts +2 -0
- package/dist/state/index.js +92 -56
- package/dist/state/useLoad.d.ts +41 -0
- package/dist/styles.css +1 -1
- package/dist/testing/app.d.ts +61 -0
- package/dist/testing/async.d.ts +12 -0
- package/dist/testing/collection.d.ts +18 -0
- package/dist/testing/format.d.ts +9 -0
- package/dist/testing/i18n.d.ts +16 -0
- package/dist/testing/index.d.ts +14 -0
- package/dist/testing/index.js +178 -0
- package/dist/testing/media.d.ts +23 -0
- package/dist/testing/platform.d.ts +40 -0
- package/dist/testing/transport.d.ts +40 -0
- package/dist/{toast-BTeX0r66.js → toast-DvrHQ6Ag.js} +45 -43
- package/dist/{useDialog-wmyNx2j_.js → useDialog-CXR3hN0G.js} +1 -1
- package/package.json +5 -1
- package/src/styles/theme.css +60 -0
- package/dist/Badge.vue_vue_type_script_setup_true_lang-DKc6ugmr.js +0 -31
- package/dist/Button.vue_vue_type_script_setup_true_lang-3f0emVNU.js +0 -141
- package/dist/SelectField.vue_vue_type_script_setup_true_lang-SyFWE33A.js +0 -422
- package/dist/dialogStack-DiTG1rZc.js +0 -26
- package/dist/phone/CountryFlag.vue.d.ts +0 -10
- /package/dist/{phone → internal}/flagLoaders.d.ts +0 -0
package/README.md
CHANGED
|
@@ -10,14 +10,15 @@ Its plan and rules are in [PLAN.md](PLAN.md).
|
|
|
10
10
|
|
|
11
11
|
| Import | For |
|
|
12
12
|
|---|---|
|
|
13
|
-
| `@wssto2/vue-core/platform` | `readBootstrap`, `createPlatform` (HTTP client, session, access), typed contexts |
|
|
13
|
+
| `@wssto2/vue-core/platform` | `readBootstrap`, `createPlatform` (HTTP client, session, access), `AccessGate`, typed contexts |
|
|
14
14
|
| `@wssto2/vue-core/app` | `createApplication`, `defineFeature`, shell outlets, effects |
|
|
15
15
|
| `@wssto2/vue-core/shell` | `backofficeShell`, the shell's parts for a custom one |
|
|
16
16
|
| `@wssto2/vue-core/router` | `defineRoutes` (typed targets), guards, navigation |
|
|
17
|
-
| `@wssto2/vue-core/collection` | `defineCollection`, `useCollection`, `CollectionPage`, record neighbors |
|
|
17
|
+
| `@wssto2/vue-core/collection` | `defineCollection`, `useCollection`, `CollectionPage`, `DataTable` (a table over an array), record neighbors |
|
|
18
18
|
| `@wssto2/vue-core/resource`, `/page` | `useRouteResource`, `ResourcePage`, `SectionNavigator`, `AdaptivePageShell` |
|
|
19
19
|
| `@wssto2/vue-core/button`, `/controls`, `/content`, `/state`, `/overlay`, `/modal`, `/icon` | the primitives |
|
|
20
|
-
| `@wssto2/vue-core/i18n`, `/format`, `/client` | messages, formatting, `HttpClient` and `ApiError` |
|
|
20
|
+
| `@wssto2/vue-core/i18n`, `/format`, `/client` | messages, `useDescribeError`, formatting, `HttpClient` and `ApiError` |
|
|
21
|
+
| `@wssto2/vue-core/testing` | `createTestPlatform`, `createTestApp`, fake transports: for your tests, [testing](docs/recipes/testing.md) |
|
|
21
22
|
|
|
22
23
|
Nothing is reachable by a deep import. The peers are `vue`, `vue-router` and `vue-i18n`; the library never bundles them.
|
|
23
24
|
|
|
@@ -174,7 +175,16 @@ Its texts are JSON files under the feature, loaded the first time one of its rou
|
|
|
174
175
|
"open": "Open",
|
|
175
176
|
"closed": "Closed",
|
|
176
177
|
"record": "Ticket",
|
|
177
|
-
"details": "Details"
|
|
178
|
+
"details": "Details",
|
|
179
|
+
"history": "History",
|
|
180
|
+
"history_empty": "Nothing has happened yet.",
|
|
181
|
+
"when": "When",
|
|
182
|
+
"kind": "Kind",
|
|
183
|
+
"author": "Author",
|
|
184
|
+
"note": "Note",
|
|
185
|
+
"comment": "Comment",
|
|
186
|
+
"change": "Status change",
|
|
187
|
+
"remove": "Remove"
|
|
178
188
|
}
|
|
179
189
|
```
|
|
180
190
|
|
|
@@ -284,12 +294,13 @@ The library's own texts are under the `core` namespace in English, Croatian, Bos
|
|
|
284
294
|
|
|
285
295
|
## Recipes
|
|
286
296
|
|
|
287
|
-
- [List page](docs/recipes/list-page.md): a typed collection, columns, filters, row actions, URL state
|
|
288
|
-
- [Record page](docs/recipes/record-page.md): a simple record, a record with sections, regions that load on their own, previous / next
|
|
289
|
-
- [Shell](docs/recipes/shell.md): the default shell, contributions from features, a custom shell
|
|
290
|
-
- [App setup](docs/recipes/app-setup.md): config, session, effects, locales, errors
|
|
297
|
+
- [List page](docs/recipes/list-page.md): a typed collection, columns, filters, row actions, URL state; a table over an array
|
|
298
|
+
- [Record page](docs/recipes/record-page.md): a simple record, a record with sections, regions that load on their own (`useResource`, `useLoad`), previous / next
|
|
299
|
+
- [Shell](docs/recipes/shell.md): the default shell, contributions from features, keyboard shortcuts and their help, running inside a frame, a custom shell
|
|
300
|
+
- [App setup](docs/recipes/app-setup.md): config, session, effects, locales and flags, permissions in the UI, error sentences, startup errors
|
|
291
301
|
- [Forms](docs/recipes/forms.md): form state, fields, a record edited in group sheets, a long form, commands
|
|
292
|
-
- [Theming](docs/recipes/theming.md): brand accent, dark mode, tokens
|
|
302
|
+
- [Theming](docs/recipes/theming.md): brand accent, dark mode, tokens, status tones and category hues
|
|
303
|
+
- [Testing](docs/recipes/testing.md): the application's environment and a fake backend for your tests
|
|
293
304
|
|
|
294
305
|
Forms have their own recipe when that phase lands.
|
|
295
306
|
|
|
@@ -2,9 +2,9 @@ import { defineComponent as $, getCurrentInstance as D, inject as F, computed as
|
|
|
2
2
|
import { a as j } from "./mediaQuery-CygcXmFW.js";
|
|
3
3
|
import { b as U, f as N, c as W, p as Y } from "./chrome-D9pwD6iS.js";
|
|
4
4
|
import { useI18n as E } from "vue-i18n";
|
|
5
|
-
import { _ as G } from "./Button.vue_vue_type_script_setup_true_lang-
|
|
5
|
+
import { _ as G } from "./Button.vue_vue_type_script_setup_true_lang-B1eZgLae.js";
|
|
6
6
|
import { _ as y } from "./Icon.vue_vue_type_script_lang-DtC4_mkz.js";
|
|
7
|
-
import { _ as J } from "./Menu.vue_vue_type_script_setup_true_lang-
|
|
7
|
+
import { _ as J } from "./Menu.vue_vue_type_script_setup_true_lang-CrMj6KPD.js";
|
|
8
8
|
import { RouterLink as L, useRoute as X } from "vue-router";
|
|
9
9
|
import { d as Z } from "./context-Ch1r4fdN.js";
|
|
10
10
|
const ee = /* @__PURE__ */ $({
|
|
@@ -2,7 +2,7 @@ import { defineComponent as H, ref as L, useId as S, computed as u, watch as J,
|
|
|
2
2
|
import { useI18n as Q } from "vue-i18n";
|
|
3
3
|
import { _ as j } from "./Icon.vue_vue_type_script_lang-DtC4_mkz.js";
|
|
4
4
|
import { u as R } from "./mediaQuery-CygcXmFW.js";
|
|
5
|
-
import { u as U } from "./useDialog-
|
|
5
|
+
import { u as U } from "./useDialog-CXR3hN0G.js";
|
|
6
6
|
const X = ["aria-labelledby", "aria-describedby", "data-presentation"], Y = { class: "overflow-hidden rounded-menu bg-surface-overlay/95 backdrop-blur-xl" }, Z = { class: "flex flex-col gap-1 px-4 py-3.5 text-center" }, ee = ["id"], te = ["id"], ae = ["disabled"], ne = ["disabled"], oe = ["id"], ie = ["id"], se = ["disabled"], le = ["disabled"], pe = /* @__PURE__ */ H({
|
|
7
7
|
__name: "AlertDialog",
|
|
8
8
|
props: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent as h, openBlock as a, createElementBlock as n, computed as $, Fragment as _, unref as o, renderSlot as y, renderList as w, createBlock as v, createVNode as u, withCtx as c, createElementVNode as d, toDisplayString as i, createCommentVNode as m, createTextVNode as g, normalizeClass as b, createSlots as x } from "vue";
|
|
2
2
|
import { useI18n as C } from "vue-i18n";
|
|
3
|
-
import { _ as k } from "./Button.vue_vue_type_script_setup_true_lang-
|
|
3
|
+
import { _ as k } from "./Button.vue_vue_type_script_setup_true_lang-B1eZgLae.js";
|
|
4
4
|
import { _ as E } from "./Icon.vue_vue_type_script_lang-DtC4_mkz.js";
|
|
5
5
|
import { _ as S } from "./Banner.vue_vue_type_script_setup_true_lang-n_wGPIIu.js";
|
|
6
6
|
import { _ as V } from "./EmptyState.vue_vue_type_script_setup_true_lang-BeGpHMUP.js";
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { defineComponent as l, computed as y, openBlock as r, createElementBlock as s, normalizeClass as d, createCommentVNode as f, renderSlot as p } from "vue";
|
|
2
|
+
const x = ["data-hue"], h = /* @__PURE__ */ l({
|
|
3
|
+
__name: "Badge",
|
|
4
|
+
props: {
|
|
5
|
+
tone: {},
|
|
6
|
+
dot: { type: Boolean },
|
|
7
|
+
hue: {},
|
|
8
|
+
appearance: {}
|
|
9
|
+
},
|
|
10
|
+
setup(u) {
|
|
11
|
+
const a = u, n = {
|
|
12
|
+
neutral: { badge: "bg-status-neutral-surface text-status-neutral-content", dot: "bg-status-neutral-content" },
|
|
13
|
+
info: { badge: "bg-status-info-surface text-status-info-content", dot: "bg-status-info-content" },
|
|
14
|
+
positive: { badge: "bg-status-success-surface text-status-success-content", dot: "bg-status-success-content" },
|
|
15
|
+
warning: { badge: "bg-status-warning-surface text-status-warning-content", dot: "bg-status-warning-content" },
|
|
16
|
+
critical: { badge: "bg-status-danger-surface text-status-danger-content", dot: "bg-status-danger-content" },
|
|
17
|
+
context: { badge: "bg-surface-cell text-content", dot: "bg-content-disabled" }
|
|
18
|
+
}, o = {
|
|
19
|
+
amber: { badge: "bg-category-amber-surface text-category-amber-content", dot: "bg-category-amber-content" },
|
|
20
|
+
lime: { badge: "bg-category-lime-surface text-category-lime-content", dot: "bg-category-lime-content" },
|
|
21
|
+
teal: { badge: "bg-category-teal-surface text-category-teal-content", dot: "bg-category-teal-content" },
|
|
22
|
+
cyan: { badge: "bg-category-cyan-surface text-category-cyan-content", dot: "bg-category-cyan-content" },
|
|
23
|
+
blue: { badge: "bg-category-blue-surface text-category-blue-content", dot: "bg-category-blue-content" },
|
|
24
|
+
indigo: { badge: "bg-category-indigo-surface text-category-indigo-content", dot: "bg-category-indigo-content" },
|
|
25
|
+
violet: { badge: "bg-category-violet-surface text-category-violet-content", dot: "bg-category-violet-content" },
|
|
26
|
+
fuchsia: { badge: "bg-category-fuchsia-surface text-category-fuchsia-content", dot: "bg-category-fuchsia-content" },
|
|
27
|
+
pink: { badge: "bg-category-pink-surface text-category-pink-content", dot: "bg-category-pink-content" }
|
|
28
|
+
}, e = y(() => {
|
|
29
|
+
const { hue: t, appearance: c, tone: b, dot: i } = a;
|
|
30
|
+
if (t === void 0) {
|
|
31
|
+
const g = n[b ?? "neutral"];
|
|
32
|
+
return { badge: g.badge, dot: i ? g.dot : null };
|
|
33
|
+
}
|
|
34
|
+
return c === "dot" ? { badge: n.context.badge, dot: o[t].dot } : { badge: o[t].badge, dot: null };
|
|
35
|
+
});
|
|
36
|
+
return (t, c) => (r(), s("span", {
|
|
37
|
+
class: d(["inline-flex items-center gap-x-1.5 whitespace-nowrap rounded-md px-2 py-0.5 text-xs font-medium ring-1 ring-inset ring-current/20", e.value.badge]),
|
|
38
|
+
"data-hue": a.hue
|
|
39
|
+
}, [
|
|
40
|
+
e.value.dot ? (r(), s("span", {
|
|
41
|
+
key: 0,
|
|
42
|
+
class: d(["size-1.5 shrink-0 rounded-full", e.value.dot]),
|
|
43
|
+
"aria-hidden": "true"
|
|
44
|
+
}, null, 2)) : f("", !0),
|
|
45
|
+
p(t.$slots, "default")
|
|
46
|
+
], 10, x));
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
export {
|
|
50
|
+
h as _
|
|
51
|
+
};
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { watchEffect as R, toValue as z, computed as f, triggerRef as w, shallowRef as L, defineComponent as A, useSlots as B, useTemplateRef as I, openBlock as y, createBlock as M, unref as N, withCtx as $, createElementVNode as D, mergeProps as v, createVNode as h, createElementBlock as K, h as x } from "vue";
|
|
2
|
+
import { RouterLink as P } from "vue-router";
|
|
3
|
+
import { _ as k } from "./Icon.vue_vue_type_script_lang-DtC4_mkz.js";
|
|
4
|
+
import { u as T } from "./useWaitStatus-fsacMl4W.js";
|
|
5
|
+
import { p as j } from "./perDocument-DUuFrdGU.js";
|
|
6
|
+
function V(t, n) {
|
|
7
|
+
return t.key.toLowerCase() === n.key.toLowerCase() && t.ctrlKey === (n.ctrlKey ?? !1) && t.shiftKey === (n.shiftKey ?? !1) && t.altKey === (n.altKey ?? !1) && t.metaKey === (n.metaKey ?? !1);
|
|
8
|
+
}
|
|
9
|
+
function U(t) {
|
|
10
|
+
return t instanceof HTMLElement && (t.isContentEditable || /^(input|textarea|select)$/i.test(t.tagName));
|
|
11
|
+
}
|
|
12
|
+
function G(t, n) {
|
|
13
|
+
R((e) => {
|
|
14
|
+
const o = z(t);
|
|
15
|
+
if (!o) return;
|
|
16
|
+
if (o.label !== void 0) {
|
|
17
|
+
const i = O(o);
|
|
18
|
+
e(i.remove);
|
|
19
|
+
}
|
|
20
|
+
const a = (i) => {
|
|
21
|
+
i.repeat || !V(i, o) || !(o.ctrlKey || o.altKey || o.metaKey) && U(i.target) || n(i) !== !1 && i.preventDefault();
|
|
22
|
+
};
|
|
23
|
+
window.addEventListener("keydown", a), e(() => window.removeEventListener("keydown", a));
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
const H = Symbol("vue-core:shortcuts"), E = () => j(H, () => ({ items: [], changed: L(0) }));
|
|
27
|
+
function O(t) {
|
|
28
|
+
const n = E();
|
|
29
|
+
return n.items = [...n.items, t], w(n.changed), {
|
|
30
|
+
remove() {
|
|
31
|
+
n.items = n.items.filter((e) => e !== t), w(n.changed);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function W(t) {
|
|
36
|
+
const e = typeof navigator < "u" && /Mac|iPhone|iPad|iPod/.test(navigator.platform || navigator.userAgent) ? { ctrl: "⌃", alt: "⌥", shift: "⇧", meta: "⌘" } : { ctrl: "Ctrl", alt: "Alt", shift: "Shift", meta: "Meta" }, o = Y[t.key] ?? (t.key.length === 1 ? t.key.toUpperCase() : t.key);
|
|
37
|
+
return [
|
|
38
|
+
...t.ctrlKey ? [e.ctrl] : [],
|
|
39
|
+
...t.altKey ? [e.alt] : [],
|
|
40
|
+
...t.shiftKey ? [e.shift] : [],
|
|
41
|
+
...t.metaKey ? [e.meta] : [],
|
|
42
|
+
o
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
const Y = { ArrowLeft: "←", ArrowRight: "→", ArrowUp: "↑", ArrowDown: "↓", Escape: "Esc", " ": "Space" };
|
|
46
|
+
function ne() {
|
|
47
|
+
const t = E();
|
|
48
|
+
return f(() => {
|
|
49
|
+
t.changed.value;
|
|
50
|
+
const n = /* @__PURE__ */ new Map();
|
|
51
|
+
for (const e of t.items) {
|
|
52
|
+
const o = typeof e.label == "function" ? e.label() : e.label ?? "";
|
|
53
|
+
if (o === "") continue;
|
|
54
|
+
const a = e.group ?? null, i = n.get(`${a}\0${o}`) ?? { group: a, label: o, keys: [] }, d = W(e);
|
|
55
|
+
i.keys.some((s) => s.join("+") === d.join("+")) || i.keys.push(d), n.set(`${a}\0${o}`, i);
|
|
56
|
+
}
|
|
57
|
+
return [...n.values()];
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
const Z = ["href", "tabindex", "onClick"], q = ["href", "tabindex"], F = ["type", "disabled"], oe = /* @__PURE__ */ A({
|
|
61
|
+
__name: "Button",
|
|
62
|
+
props: {
|
|
63
|
+
prominence: { default: "standard" },
|
|
64
|
+
tone: { default: void 0 },
|
|
65
|
+
size: { default: "md" },
|
|
66
|
+
icon: { default: void 0 },
|
|
67
|
+
trailingIcon: { default: void 0 },
|
|
68
|
+
to: { default: void 0 },
|
|
69
|
+
href: { default: void 0 },
|
|
70
|
+
type: { default: "button" },
|
|
71
|
+
disabled: { type: Boolean, default: !1 },
|
|
72
|
+
processing: { type: Boolean, default: !1 },
|
|
73
|
+
keyboardShortcut: { default: void 0 }
|
|
74
|
+
},
|
|
75
|
+
emits: ["click"],
|
|
76
|
+
setup(t, { emit: n }) {
|
|
77
|
+
const e = t, o = n, a = B(), i = I("element"), d = T(() => e.processing), s = f(() => e.disabled || e.processing);
|
|
78
|
+
function p(r, l) {
|
|
79
|
+
if (s.value) {
|
|
80
|
+
r.preventDefault();
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
o("click", r), l?.(r);
|
|
84
|
+
}
|
|
85
|
+
G(() => e.keyboardShortcut, (r) => {
|
|
86
|
+
if (s.value || i.value?.closest("[inert]")) return !1;
|
|
87
|
+
o("click", r);
|
|
88
|
+
});
|
|
89
|
+
const _ = {
|
|
90
|
+
primary: {
|
|
91
|
+
default: "bg-tint text-content-on-tint hover:bg-tint/90 active:bg-tint/80",
|
|
92
|
+
critical: "bg-status-danger-solid text-white hover:brightness-110"
|
|
93
|
+
},
|
|
94
|
+
secondary: {
|
|
95
|
+
default: "bg-tint-soft text-content-link hover:brightness-95 dark:hover:brightness-125",
|
|
96
|
+
critical: "bg-status-danger-surface text-content-destructive hover:brightness-95 dark:hover:brightness-125"
|
|
97
|
+
},
|
|
98
|
+
standard: {
|
|
99
|
+
default: "bg-fill text-content-strong hover:bg-fill-strong",
|
|
100
|
+
critical: "bg-fill text-content-destructive hover:bg-fill-strong"
|
|
101
|
+
},
|
|
102
|
+
plain: {
|
|
103
|
+
default: "bg-transparent text-content-link hover:bg-tint-soft",
|
|
104
|
+
critical: "bg-transparent text-content-destructive hover:bg-status-danger-surface"
|
|
105
|
+
},
|
|
106
|
+
link: {
|
|
107
|
+
default: "bg-transparent text-content-link hover:underline",
|
|
108
|
+
critical: "bg-transparent text-content-destructive hover:underline"
|
|
109
|
+
}
|
|
110
|
+
}, u = {
|
|
111
|
+
xs: { box: "min-h-6 px-2.5 py-0.5 text-xs gap-1", icon: 12 },
|
|
112
|
+
sm: { box: "min-h-8 px-3 py-1 text-xs gap-1.5", icon: 14 },
|
|
113
|
+
md: { box: "min-h-9 px-4 py-1.5 text-sm gap-2", icon: 16 },
|
|
114
|
+
lg: { box: "min-h-11 px-5 py-2 text-base gap-2", icon: 20 },
|
|
115
|
+
xl: { box: "min-h-12 px-6 py-2.5 text-base gap-2.5", icon: 22 }
|
|
116
|
+
}, m = f(() => [
|
|
117
|
+
"hit-target flex cursor-pointer select-none items-center justify-center rounded-button text-center font-semibold",
|
|
118
|
+
"transition duration-motion-fast ease-motion-standard",
|
|
119
|
+
"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus",
|
|
120
|
+
_[e.prominence][e.tone ?? "default"],
|
|
121
|
+
u[e.size].box,
|
|
122
|
+
// aria-disabled covers links, which have no `disabled` attribute.
|
|
123
|
+
e.processing && !e.disabled ? "cursor-progress" : "disabled:cursor-not-allowed disabled:opacity-45 aria-disabled:cursor-not-allowed aria-disabled:opacity-45"
|
|
124
|
+
]), b = f(() => ({
|
|
125
|
+
"aria-disabled": s.value || void 0,
|
|
126
|
+
"aria-busy": e.processing || void 0
|
|
127
|
+
})), g = () => [
|
|
128
|
+
e.processing && d.visible.value ? x(k, { name: "loader4Line", size: u[e.size].icon, class: "animate-spin", "data-test": "button-spinner" }) : e.icon ? x(k, { name: e.icon, size: u[e.size].icon }) : null,
|
|
129
|
+
a.default?.(),
|
|
130
|
+
e.trailingIcon ? x(k, { name: e.trailingIcon, size: u[e.size].icon }) : null
|
|
131
|
+
];
|
|
132
|
+
return (r, l) => e.to !== void 0 ? (y(), M(N(P), {
|
|
133
|
+
key: 0,
|
|
134
|
+
to: e.to,
|
|
135
|
+
custom: ""
|
|
136
|
+
}, {
|
|
137
|
+
default: $(({ href: c, navigate: C }) => [
|
|
138
|
+
D("a", v({
|
|
139
|
+
ref_key: "element",
|
|
140
|
+
ref: i,
|
|
141
|
+
href: s.value ? void 0 : c,
|
|
142
|
+
class: m.value
|
|
143
|
+
}, b.value, {
|
|
144
|
+
tabindex: s.value ? -1 : void 0,
|
|
145
|
+
onClick: (S) => p(S, C)
|
|
146
|
+
}), [
|
|
147
|
+
h(g)
|
|
148
|
+
], 16, Z)
|
|
149
|
+
]),
|
|
150
|
+
_: 1
|
|
151
|
+
}, 8, ["to"])) : e.href !== void 0 ? (y(), K("a", v({
|
|
152
|
+
key: 1,
|
|
153
|
+
ref_key: "element",
|
|
154
|
+
ref: i,
|
|
155
|
+
href: s.value ? void 0 : e.href,
|
|
156
|
+
class: m.value
|
|
157
|
+
}, b.value, {
|
|
158
|
+
tabindex: s.value ? -1 : void 0,
|
|
159
|
+
onClick: l[0] || (l[0] = (c) => p(c))
|
|
160
|
+
}), [
|
|
161
|
+
h(g)
|
|
162
|
+
], 16, q)) : (y(), K("button", v({
|
|
163
|
+
key: 2,
|
|
164
|
+
ref_key: "element",
|
|
165
|
+
ref: i,
|
|
166
|
+
type: e.type,
|
|
167
|
+
class: m.value,
|
|
168
|
+
disabled: s.value
|
|
169
|
+
}, b.value, {
|
|
170
|
+
onClick: l[1] || (l[1] = (c) => p(c))
|
|
171
|
+
}), [
|
|
172
|
+
h(g)
|
|
173
|
+
], 16, F));
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
export {
|
|
177
|
+
oe as _,
|
|
178
|
+
ne as a,
|
|
179
|
+
V as m,
|
|
180
|
+
W as s,
|
|
181
|
+
G as u
|
|
182
|
+
};
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
import { defineComponent as M, useTemplateRef as u, shallowRef as C, ref as S, onMounted as G, onBeforeUnmount as A, watch as d, openBlock as n, createElementBlock as s, createCommentVNode as T } from "vue";
|
|
2
|
+
const B = {
|
|
3
|
+
AC: () => import("country-flag-icons/string/3x2/AC"),
|
|
4
|
+
AD: () => import("country-flag-icons/string/3x2/AD"),
|
|
5
|
+
AE: () => import("country-flag-icons/string/3x2/AE"),
|
|
6
|
+
AF: () => import("country-flag-icons/string/3x2/AF"),
|
|
7
|
+
AG: () => import("country-flag-icons/string/3x2/AG"),
|
|
8
|
+
AI: () => import("country-flag-icons/string/3x2/AI"),
|
|
9
|
+
AL: () => import("country-flag-icons/string/3x2/AL"),
|
|
10
|
+
AM: () => import("country-flag-icons/string/3x2/AM"),
|
|
11
|
+
AO: () => import("country-flag-icons/string/3x2/AO"),
|
|
12
|
+
AQ: () => import("country-flag-icons/string/3x2/AQ"),
|
|
13
|
+
AR: () => import("country-flag-icons/string/3x2/AR"),
|
|
14
|
+
AS: () => import("country-flag-icons/string/3x2/AS"),
|
|
15
|
+
AT: () => import("country-flag-icons/string/3x2/AT"),
|
|
16
|
+
AU: () => import("country-flag-icons/string/3x2/AU"),
|
|
17
|
+
AW: () => import("country-flag-icons/string/3x2/AW"),
|
|
18
|
+
AX: () => import("country-flag-icons/string/3x2/AX"),
|
|
19
|
+
AZ: () => import("country-flag-icons/string/3x2/AZ"),
|
|
20
|
+
BA: () => import("country-flag-icons/string/3x2/BA"),
|
|
21
|
+
BB: () => import("country-flag-icons/string/3x2/BB"),
|
|
22
|
+
BD: () => import("country-flag-icons/string/3x2/BD"),
|
|
23
|
+
BE: () => import("country-flag-icons/string/3x2/BE"),
|
|
24
|
+
BF: () => import("country-flag-icons/string/3x2/BF"),
|
|
25
|
+
BG: () => import("country-flag-icons/string/3x2/BG"),
|
|
26
|
+
BH: () => import("country-flag-icons/string/3x2/BH"),
|
|
27
|
+
BI: () => import("country-flag-icons/string/3x2/BI"),
|
|
28
|
+
BJ: () => import("country-flag-icons/string/3x2/BJ"),
|
|
29
|
+
BL: () => import("country-flag-icons/string/3x2/BL"),
|
|
30
|
+
BM: () => import("country-flag-icons/string/3x2/BM"),
|
|
31
|
+
BN: () => import("country-flag-icons/string/3x2/BN"),
|
|
32
|
+
BO: () => import("country-flag-icons/string/3x2/BO"),
|
|
33
|
+
BQ: () => import("country-flag-icons/string/3x2/BQ"),
|
|
34
|
+
BR: () => import("country-flag-icons/string/3x2/BR"),
|
|
35
|
+
BS: () => import("country-flag-icons/string/3x2/BS"),
|
|
36
|
+
BT: () => import("country-flag-icons/string/3x2/BT"),
|
|
37
|
+
BV: () => import("country-flag-icons/string/3x2/BV"),
|
|
38
|
+
BW: () => import("country-flag-icons/string/3x2/BW"),
|
|
39
|
+
BY: () => import("country-flag-icons/string/3x2/BY"),
|
|
40
|
+
BZ: () => import("country-flag-icons/string/3x2/BZ"),
|
|
41
|
+
CA: () => import("country-flag-icons/string/3x2/CA"),
|
|
42
|
+
CC: () => import("country-flag-icons/string/3x2/CC"),
|
|
43
|
+
CD: () => import("country-flag-icons/string/3x2/CD"),
|
|
44
|
+
CF: () => import("country-flag-icons/string/3x2/CF"),
|
|
45
|
+
CG: () => import("country-flag-icons/string/3x2/CG"),
|
|
46
|
+
CH: () => import("country-flag-icons/string/3x2/CH"),
|
|
47
|
+
CI: () => import("country-flag-icons/string/3x2/CI"),
|
|
48
|
+
CK: () => import("country-flag-icons/string/3x2/CK"),
|
|
49
|
+
CL: () => import("country-flag-icons/string/3x2/CL"),
|
|
50
|
+
CM: () => import("country-flag-icons/string/3x2/CM"),
|
|
51
|
+
CN: () => import("country-flag-icons/string/3x2/CN"),
|
|
52
|
+
CO: () => import("country-flag-icons/string/3x2/CO"),
|
|
53
|
+
CR: () => import("country-flag-icons/string/3x2/CR"),
|
|
54
|
+
CU: () => import("country-flag-icons/string/3x2/CU"),
|
|
55
|
+
CV: () => import("country-flag-icons/string/3x2/CV"),
|
|
56
|
+
CW: () => import("country-flag-icons/string/3x2/CW"),
|
|
57
|
+
CX: () => import("country-flag-icons/string/3x2/CX"),
|
|
58
|
+
CY: () => import("country-flag-icons/string/3x2/CY"),
|
|
59
|
+
CZ: () => import("country-flag-icons/string/3x2/CZ"),
|
|
60
|
+
DE: () => import("country-flag-icons/string/3x2/DE"),
|
|
61
|
+
DJ: () => import("country-flag-icons/string/3x2/DJ"),
|
|
62
|
+
DK: () => import("country-flag-icons/string/3x2/DK"),
|
|
63
|
+
DM: () => import("country-flag-icons/string/3x2/DM"),
|
|
64
|
+
DO: () => import("country-flag-icons/string/3x2/DO"),
|
|
65
|
+
DZ: () => import("country-flag-icons/string/3x2/DZ"),
|
|
66
|
+
EC: () => import("country-flag-icons/string/3x2/EC"),
|
|
67
|
+
EE: () => import("country-flag-icons/string/3x2/EE"),
|
|
68
|
+
EG: () => import("country-flag-icons/string/3x2/EG"),
|
|
69
|
+
EH: () => import("country-flag-icons/string/3x2/EH"),
|
|
70
|
+
ER: () => import("country-flag-icons/string/3x2/ER"),
|
|
71
|
+
ES: () => import("country-flag-icons/string/3x2/ES"),
|
|
72
|
+
ET: () => import("country-flag-icons/string/3x2/ET"),
|
|
73
|
+
EU: () => import("country-flag-icons/string/3x2/EU"),
|
|
74
|
+
FI: () => import("country-flag-icons/string/3x2/FI"),
|
|
75
|
+
FJ: () => import("country-flag-icons/string/3x2/FJ"),
|
|
76
|
+
FK: () => import("country-flag-icons/string/3x2/FK"),
|
|
77
|
+
FM: () => import("country-flag-icons/string/3x2/FM"),
|
|
78
|
+
FO: () => import("country-flag-icons/string/3x2/FO"),
|
|
79
|
+
FR: () => import("country-flag-icons/string/3x2/FR"),
|
|
80
|
+
GA: () => import("country-flag-icons/string/3x2/GA"),
|
|
81
|
+
GB: () => import("country-flag-icons/string/3x2/GB"),
|
|
82
|
+
GD: () => import("country-flag-icons/string/3x2/GD"),
|
|
83
|
+
GE: () => import("country-flag-icons/string/3x2/GE"),
|
|
84
|
+
GF: () => import("country-flag-icons/string/3x2/GF"),
|
|
85
|
+
GG: () => import("country-flag-icons/string/3x2/GG"),
|
|
86
|
+
GH: () => import("country-flag-icons/string/3x2/GH"),
|
|
87
|
+
GI: () => import("country-flag-icons/string/3x2/GI"),
|
|
88
|
+
GL: () => import("country-flag-icons/string/3x2/GL"),
|
|
89
|
+
GM: () => import("country-flag-icons/string/3x2/GM"),
|
|
90
|
+
GN: () => import("country-flag-icons/string/3x2/GN"),
|
|
91
|
+
GP: () => import("country-flag-icons/string/3x2/GP"),
|
|
92
|
+
GQ: () => import("country-flag-icons/string/3x2/GQ"),
|
|
93
|
+
GR: () => import("country-flag-icons/string/3x2/GR"),
|
|
94
|
+
GS: () => import("country-flag-icons/string/3x2/GS"),
|
|
95
|
+
GT: () => import("country-flag-icons/string/3x2/GT"),
|
|
96
|
+
GU: () => import("country-flag-icons/string/3x2/GU"),
|
|
97
|
+
GW: () => import("country-flag-icons/string/3x2/GW"),
|
|
98
|
+
GY: () => import("country-flag-icons/string/3x2/GY"),
|
|
99
|
+
HK: () => import("country-flag-icons/string/3x2/HK"),
|
|
100
|
+
HM: () => import("country-flag-icons/string/3x2/HM"),
|
|
101
|
+
HN: () => import("country-flag-icons/string/3x2/HN"),
|
|
102
|
+
HR: () => import("country-flag-icons/string/3x2/HR"),
|
|
103
|
+
HT: () => import("country-flag-icons/string/3x2/HT"),
|
|
104
|
+
HU: () => import("country-flag-icons/string/3x2/HU"),
|
|
105
|
+
IC: () => import("country-flag-icons/string/3x2/IC"),
|
|
106
|
+
ID: () => import("country-flag-icons/string/3x2/ID"),
|
|
107
|
+
IE: () => import("country-flag-icons/string/3x2/IE"),
|
|
108
|
+
IL: () => import("country-flag-icons/string/3x2/IL"),
|
|
109
|
+
IM: () => import("country-flag-icons/string/3x2/IM"),
|
|
110
|
+
IN: () => import("country-flag-icons/string/3x2/IN"),
|
|
111
|
+
IO: () => import("country-flag-icons/string/3x2/IO"),
|
|
112
|
+
IQ: () => import("country-flag-icons/string/3x2/IQ"),
|
|
113
|
+
IR: () => import("country-flag-icons/string/3x2/IR"),
|
|
114
|
+
IS: () => import("country-flag-icons/string/3x2/IS"),
|
|
115
|
+
IT: () => import("country-flag-icons/string/3x2/IT"),
|
|
116
|
+
JE: () => import("country-flag-icons/string/3x2/JE"),
|
|
117
|
+
JM: () => import("country-flag-icons/string/3x2/JM"),
|
|
118
|
+
JO: () => import("country-flag-icons/string/3x2/JO"),
|
|
119
|
+
JP: () => import("country-flag-icons/string/3x2/JP"),
|
|
120
|
+
KE: () => import("country-flag-icons/string/3x2/KE"),
|
|
121
|
+
KG: () => import("country-flag-icons/string/3x2/KG"),
|
|
122
|
+
KH: () => import("country-flag-icons/string/3x2/KH"),
|
|
123
|
+
KI: () => import("country-flag-icons/string/3x2/KI"),
|
|
124
|
+
KM: () => import("country-flag-icons/string/3x2/KM"),
|
|
125
|
+
KN: () => import("country-flag-icons/string/3x2/KN"),
|
|
126
|
+
KP: () => import("country-flag-icons/string/3x2/KP"),
|
|
127
|
+
KR: () => import("country-flag-icons/string/3x2/KR"),
|
|
128
|
+
KW: () => import("country-flag-icons/string/3x2/KW"),
|
|
129
|
+
KY: () => import("country-flag-icons/string/3x2/KY"),
|
|
130
|
+
KZ: () => import("country-flag-icons/string/3x2/KZ"),
|
|
131
|
+
LA: () => import("country-flag-icons/string/3x2/LA"),
|
|
132
|
+
LB: () => import("country-flag-icons/string/3x2/LB"),
|
|
133
|
+
LC: () => import("country-flag-icons/string/3x2/LC"),
|
|
134
|
+
LI: () => import("country-flag-icons/string/3x2/LI"),
|
|
135
|
+
LK: () => import("country-flag-icons/string/3x2/LK"),
|
|
136
|
+
LR: () => import("country-flag-icons/string/3x2/LR"),
|
|
137
|
+
LS: () => import("country-flag-icons/string/3x2/LS"),
|
|
138
|
+
LT: () => import("country-flag-icons/string/3x2/LT"),
|
|
139
|
+
LU: () => import("country-flag-icons/string/3x2/LU"),
|
|
140
|
+
LV: () => import("country-flag-icons/string/3x2/LV"),
|
|
141
|
+
LY: () => import("country-flag-icons/string/3x2/LY"),
|
|
142
|
+
MA: () => import("country-flag-icons/string/3x2/MA"),
|
|
143
|
+
MC: () => import("country-flag-icons/string/3x2/MC"),
|
|
144
|
+
MD: () => import("country-flag-icons/string/3x2/MD"),
|
|
145
|
+
ME: () => import("country-flag-icons/string/3x2/ME"),
|
|
146
|
+
MF: () => import("country-flag-icons/string/3x2/MF"),
|
|
147
|
+
MG: () => import("country-flag-icons/string/3x2/MG"),
|
|
148
|
+
MH: () => import("country-flag-icons/string/3x2/MH"),
|
|
149
|
+
MK: () => import("country-flag-icons/string/3x2/MK"),
|
|
150
|
+
ML: () => import("country-flag-icons/string/3x2/ML"),
|
|
151
|
+
MM: () => import("country-flag-icons/string/3x2/MM"),
|
|
152
|
+
MN: () => import("country-flag-icons/string/3x2/MN"),
|
|
153
|
+
MO: () => import("country-flag-icons/string/3x2/MO"),
|
|
154
|
+
MP: () => import("country-flag-icons/string/3x2/MP"),
|
|
155
|
+
MQ: () => import("country-flag-icons/string/3x2/MQ"),
|
|
156
|
+
MR: () => import("country-flag-icons/string/3x2/MR"),
|
|
157
|
+
MS: () => import("country-flag-icons/string/3x2/MS"),
|
|
158
|
+
MT: () => import("country-flag-icons/string/3x2/MT"),
|
|
159
|
+
MU: () => import("country-flag-icons/string/3x2/MU"),
|
|
160
|
+
MV: () => import("country-flag-icons/string/3x2/MV"),
|
|
161
|
+
MW: () => import("country-flag-icons/string/3x2/MW"),
|
|
162
|
+
MX: () => import("country-flag-icons/string/3x2/MX"),
|
|
163
|
+
MY: () => import("country-flag-icons/string/3x2/MY"),
|
|
164
|
+
MZ: () => import("country-flag-icons/string/3x2/MZ"),
|
|
165
|
+
NA: () => import("country-flag-icons/string/3x2/NA"),
|
|
166
|
+
NC: () => import("country-flag-icons/string/3x2/NC"),
|
|
167
|
+
NE: () => import("country-flag-icons/string/3x2/NE"),
|
|
168
|
+
NF: () => import("country-flag-icons/string/3x2/NF"),
|
|
169
|
+
NG: () => import("country-flag-icons/string/3x2/NG"),
|
|
170
|
+
NI: () => import("country-flag-icons/string/3x2/NI"),
|
|
171
|
+
NL: () => import("country-flag-icons/string/3x2/NL"),
|
|
172
|
+
NO: () => import("country-flag-icons/string/3x2/NO"),
|
|
173
|
+
NP: () => import("country-flag-icons/string/3x2/NP"),
|
|
174
|
+
NR: () => import("country-flag-icons/string/3x2/NR"),
|
|
175
|
+
NU: () => import("country-flag-icons/string/3x2/NU"),
|
|
176
|
+
NZ: () => import("country-flag-icons/string/3x2/NZ"),
|
|
177
|
+
OM: () => import("country-flag-icons/string/3x2/OM"),
|
|
178
|
+
PA: () => import("country-flag-icons/string/3x2/PA"),
|
|
179
|
+
PE: () => import("country-flag-icons/string/3x2/PE"),
|
|
180
|
+
PF: () => import("country-flag-icons/string/3x2/PF"),
|
|
181
|
+
PG: () => import("country-flag-icons/string/3x2/PG"),
|
|
182
|
+
PH: () => import("country-flag-icons/string/3x2/PH"),
|
|
183
|
+
PK: () => import("country-flag-icons/string/3x2/PK"),
|
|
184
|
+
PL: () => import("country-flag-icons/string/3x2/PL"),
|
|
185
|
+
PM: () => import("country-flag-icons/string/3x2/PM"),
|
|
186
|
+
PN: () => import("country-flag-icons/string/3x2/PN"),
|
|
187
|
+
PR: () => import("country-flag-icons/string/3x2/PR"),
|
|
188
|
+
PS: () => import("country-flag-icons/string/3x2/PS"),
|
|
189
|
+
PT: () => import("country-flag-icons/string/3x2/PT"),
|
|
190
|
+
PW: () => import("country-flag-icons/string/3x2/PW"),
|
|
191
|
+
PY: () => import("country-flag-icons/string/3x2/PY"),
|
|
192
|
+
QA: () => import("country-flag-icons/string/3x2/QA"),
|
|
193
|
+
RE: () => import("country-flag-icons/string/3x2/RE"),
|
|
194
|
+
RO: () => import("country-flag-icons/string/3x2/RO"),
|
|
195
|
+
RS: () => import("country-flag-icons/string/3x2/RS"),
|
|
196
|
+
RU: () => import("country-flag-icons/string/3x2/RU"),
|
|
197
|
+
RW: () => import("country-flag-icons/string/3x2/RW"),
|
|
198
|
+
SA: () => import("country-flag-icons/string/3x2/SA"),
|
|
199
|
+
SB: () => import("country-flag-icons/string/3x2/SB"),
|
|
200
|
+
SC: () => import("country-flag-icons/string/3x2/SC"),
|
|
201
|
+
SD: () => import("country-flag-icons/string/3x2/SD"),
|
|
202
|
+
SE: () => import("country-flag-icons/string/3x2/SE"),
|
|
203
|
+
SG: () => import("country-flag-icons/string/3x2/SG"),
|
|
204
|
+
SH: () => import("country-flag-icons/string/3x2/SH"),
|
|
205
|
+
SI: () => import("country-flag-icons/string/3x2/SI"),
|
|
206
|
+
SJ: () => import("country-flag-icons/string/3x2/SJ"),
|
|
207
|
+
SK: () => import("country-flag-icons/string/3x2/SK"),
|
|
208
|
+
SL: () => import("country-flag-icons/string/3x2/SL"),
|
|
209
|
+
SM: () => import("country-flag-icons/string/3x2/SM"),
|
|
210
|
+
SN: () => import("country-flag-icons/string/3x2/SN"),
|
|
211
|
+
SO: () => import("country-flag-icons/string/3x2/SO"),
|
|
212
|
+
SR: () => import("country-flag-icons/string/3x2/SR"),
|
|
213
|
+
SS: () => import("country-flag-icons/string/3x2/SS"),
|
|
214
|
+
ST: () => import("country-flag-icons/string/3x2/ST"),
|
|
215
|
+
SV: () => import("country-flag-icons/string/3x2/SV"),
|
|
216
|
+
SX: () => import("country-flag-icons/string/3x2/SX"),
|
|
217
|
+
SY: () => import("country-flag-icons/string/3x2/SY"),
|
|
218
|
+
SZ: () => import("country-flag-icons/string/3x2/SZ"),
|
|
219
|
+
TA: () => import("country-flag-icons/string/3x2/TA"),
|
|
220
|
+
TC: () => import("country-flag-icons/string/3x2/TC"),
|
|
221
|
+
TD: () => import("country-flag-icons/string/3x2/TD"),
|
|
222
|
+
TF: () => import("country-flag-icons/string/3x2/TF"),
|
|
223
|
+
TG: () => import("country-flag-icons/string/3x2/TG"),
|
|
224
|
+
TH: () => import("country-flag-icons/string/3x2/TH"),
|
|
225
|
+
TJ: () => import("country-flag-icons/string/3x2/TJ"),
|
|
226
|
+
TK: () => import("country-flag-icons/string/3x2/TK"),
|
|
227
|
+
TL: () => import("country-flag-icons/string/3x2/TL"),
|
|
228
|
+
TM: () => import("country-flag-icons/string/3x2/TM"),
|
|
229
|
+
TN: () => import("country-flag-icons/string/3x2/TN"),
|
|
230
|
+
TO: () => import("country-flag-icons/string/3x2/TO"),
|
|
231
|
+
TR: () => import("country-flag-icons/string/3x2/TR"),
|
|
232
|
+
TT: () => import("country-flag-icons/string/3x2/TT"),
|
|
233
|
+
TV: () => import("country-flag-icons/string/3x2/TV"),
|
|
234
|
+
TW: () => import("country-flag-icons/string/3x2/TW"),
|
|
235
|
+
TZ: () => import("country-flag-icons/string/3x2/TZ"),
|
|
236
|
+
UA: () => import("country-flag-icons/string/3x2/UA"),
|
|
237
|
+
UG: () => import("country-flag-icons/string/3x2/UG"),
|
|
238
|
+
UM: () => import("country-flag-icons/string/3x2/UM"),
|
|
239
|
+
US: () => import("country-flag-icons/string/3x2/US"),
|
|
240
|
+
UY: () => import("country-flag-icons/string/3x2/UY"),
|
|
241
|
+
UZ: () => import("country-flag-icons/string/3x2/UZ"),
|
|
242
|
+
VA: () => import("country-flag-icons/string/3x2/VA"),
|
|
243
|
+
VC: () => import("country-flag-icons/string/3x2/VC"),
|
|
244
|
+
VE: () => import("country-flag-icons/string/3x2/VE"),
|
|
245
|
+
VG: () => import("country-flag-icons/string/3x2/VG"),
|
|
246
|
+
VI: () => import("country-flag-icons/string/3x2/VI"),
|
|
247
|
+
VN: () => import("country-flag-icons/string/3x2/VN"),
|
|
248
|
+
VU: () => import("country-flag-icons/string/3x2/VU"),
|
|
249
|
+
WF: () => import("country-flag-icons/string/3x2/WF"),
|
|
250
|
+
WS: () => import("country-flag-icons/string/3x2/WS"),
|
|
251
|
+
XA: () => import("country-flag-icons/string/3x2/XA"),
|
|
252
|
+
XC: () => import("country-flag-icons/string/3x2/XC"),
|
|
253
|
+
XK: () => import("country-flag-icons/string/3x2/XK"),
|
|
254
|
+
XO: () => import("country-flag-icons/string/3x2/XO"),
|
|
255
|
+
YE: () => import("country-flag-icons/string/3x2/YE"),
|
|
256
|
+
YT: () => import("country-flag-icons/string/3x2/YT"),
|
|
257
|
+
ZA: () => import("country-flag-icons/string/3x2/ZA"),
|
|
258
|
+
ZM: () => import("country-flag-icons/string/3x2/ZM"),
|
|
259
|
+
ZW: () => import("country-flag-icons/string/3x2/ZW")
|
|
260
|
+
}, I = ["data-country"], f = ["src"], N = /* @__PURE__ */ M({
|
|
261
|
+
__name: "CountryFlag",
|
|
262
|
+
props: {
|
|
263
|
+
country: {}
|
|
264
|
+
},
|
|
265
|
+
setup(a) {
|
|
266
|
+
const m = a, p = u("holder"), r = C(null), e = S(typeof IntersectionObserver > "u");
|
|
267
|
+
let i = null;
|
|
268
|
+
async function l(o) {
|
|
269
|
+
const t = B[o];
|
|
270
|
+
if (!t) return void (r.value = null);
|
|
271
|
+
const { default: c } = await t();
|
|
272
|
+
o === m.country && (r.value = `data:image/svg+xml,${encodeURIComponent(c)}`);
|
|
273
|
+
}
|
|
274
|
+
return G(() => {
|
|
275
|
+
e.value || !p.value || (i = new IntersectionObserver((o) => {
|
|
276
|
+
o.some((t) => t.isIntersecting) && (e.value = !0, i?.disconnect());
|
|
277
|
+
}), i.observe(p.value));
|
|
278
|
+
}), A(() => i?.disconnect()), d([() => m.country, e], ([o, t]) => {
|
|
279
|
+
r.value = null, t && l(o);
|
|
280
|
+
}, { immediate: !0 }), (o, t) => (n(), s("span", {
|
|
281
|
+
ref_key: "holder",
|
|
282
|
+
ref: p,
|
|
283
|
+
class: "inline-block h-3.5 w-5 shrink-0 overflow-hidden rounded-xs bg-fill-strong ring-1 ring-border-separator",
|
|
284
|
+
"data-test": "flag",
|
|
285
|
+
"data-country": m.country
|
|
286
|
+
}, [
|
|
287
|
+
r.value ? (n(), s("img", {
|
|
288
|
+
key: 0,
|
|
289
|
+
src: r.value,
|
|
290
|
+
alt: "",
|
|
291
|
+
class: "size-full object-cover",
|
|
292
|
+
draggable: "false"
|
|
293
|
+
}, null, 8, f)) : T("", !0)
|
|
294
|
+
], 8, I));
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
export {
|
|
298
|
+
N as _
|
|
299
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent as c, useTemplateRef as l, openBlock as m, createBlock as d, unref as s } from "vue";
|
|
2
2
|
import { useI18n as f } from "vue-i18n";
|
|
3
|
-
import { _ as p } from "./AlertDialog.vue_vue_type_script_setup_true_lang-
|
|
3
|
+
import { _ as p } from "./AlertDialog.vue_vue_type_script_setup_true_lang-e4hzkzg3.js";
|
|
4
4
|
const C = /* @__PURE__ */ c({
|
|
5
5
|
__name: "DiscardChangesModal",
|
|
6
6
|
emits: ["confirm", "cancel", "dismissed"],
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent as i, onBeforeUnmount as f, useTemplateRef as l, watch as m, openBlock as u, createBlock as p } from "vue";
|
|
2
|
-
import { _ as d } from "./DiscardChangesModal.vue_vue_type_script_setup_true_lang-
|
|
2
|
+
import { _ as d } from "./DiscardChangesModal.vue_vue_type_script_setup_true_lang-DyhYHRyz.js";
|
|
3
3
|
import { u as v } from "./environment-D3nozt9a.js";
|
|
4
4
|
const $ = /* @__PURE__ */ i({
|
|
5
5
|
__name: "LeaveGuardRoot",
|