@vuetify/v0 0.1.8 → 0.1.10
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/SKILL.md +95 -0
- package/dist/adapter-D3dUnE__.d.mts +17 -0
- package/dist/{adapter-DIx4Rntl.d.mts → adapter-hDuQ9aNN.d.mts} +4 -4
- package/dist/browser/index.js +2029 -704
- package/dist/components/index.d.mts +2 -2
- package/dist/components/index.mjs +23 -23
- package/dist/{components-BbxKYAXs.mjs → components-TiigKVsl.mjs} +816 -237
- package/dist/composables/index.d.mts +16 -15
- package/dist/composables/index.mjs +22 -22
- package/dist/{consola-BVzYzeLH.d.mts → consola-C1OjyZVf.d.mts} +1 -1
- package/dist/constants/index.d.mts +1 -1
- package/dist/constants/index.mjs +1 -1
- package/dist/{createDataTable-DZouEhvH.mjs → createDataTable-DoqbfLt0.mjs} +5 -5
- package/dist/{createGroup-BpJFi41X.mjs → createGroup-DpbGTwFy.mjs} +1 -1
- package/dist/{createPagination-Bu8vE0JW.mjs → createPagination-DZSJ8aO5.mjs} +5 -5
- package/dist/{createSelection-8MX0OHXR.mjs → createSelection-B6bQNyuF.mjs} +1 -1
- package/dist/{createSingle-CbuOBb-E.mjs → createSingle-fWHREEJO.mjs} +6 -6
- package/dist/{createTokens-CXlT0Vc6.mjs → createTokens-N8QIWw_D.mjs} +26 -5
- package/dist/data-table/adapters/client/index.d.mts +1 -1
- package/dist/data-table/adapters/client/index.mjs +3 -3
- package/dist/data-table/adapters/index.d.mts +4 -4
- package/dist/data-table/adapters/index.mjs +5 -5
- package/dist/data-table/adapters/server/index.d.mts +1 -1
- package/dist/data-table/adapters/server/index.mjs +3 -3
- package/dist/data-table/adapters/virtual/index.d.mts +1 -1
- package/dist/data-table/adapters/virtual/index.mjs +3 -3
- package/dist/data-table/index.d.mts +5 -5
- package/dist/data-table/index.mjs +14 -14
- package/dist/date/index.mjs +1 -1
- package/dist/features/adapters/posthog/index.mjs +2 -2
- package/dist/features/index.d.mts +1 -1
- package/dist/features/index.mjs +8 -8
- package/dist/{globals-ClSU6mqC.mjs → globals-F7fiJVG1.mjs} +1 -1
- package/dist/{index-CmCMrlt3.d.mts → index-CLDBngUs.d.mts} +1 -1
- package/dist/{index-MHkcqY_y.d.mts → index-Cv1XUHyA.d.mts} +1 -21
- package/dist/{index-B5NU2uB7.d.mts → index-DXdQb5BV.d.mts} +1057 -217
- package/dist/{index-63-0oJS8.d.mts → index-Dfa5Wb4T.d.mts} +430 -186
- package/dist/{index-CxW4itj1.d.mts → index-YyqYAay2.d.mts} +10 -2
- package/dist/index.d.mts +19 -18
- package/dist/index.mjs +24 -24
- package/dist/json/attributes.json +196 -0
- package/dist/json/importMap.json +52 -0
- package/dist/json/tags.json +104 -0
- package/dist/json/web-types.json +617 -1
- package/dist/locale/adapters/index.d.mts +3 -2
- package/dist/locale/adapters/index.mjs +2 -2
- package/dist/locale/adapters/v0/index.d.mts +1 -1
- package/dist/locale/adapters/v0/index.mjs +2 -2
- package/dist/locale/adapters/vue-i18n/index.d.mts +22 -0
- package/dist/locale/adapters/vue-i18n/index.mjs +26 -0
- package/dist/locale/index.d.mts +4 -3
- package/dist/locale/index.mjs +8 -9
- package/dist/logger/adapters/consola/index.d.mts +1 -1
- package/dist/logger/adapters/index.d.mts +4 -4
- package/dist/logger/adapters/index.mjs +2 -2
- package/dist/logger/adapters/pino/index.d.mts +1 -1
- package/dist/logger/adapters/pino/index.mjs +1 -1
- package/dist/logger/adapters/v0/index.d.mts +1 -1
- package/dist/logger/adapters/v0/index.mjs +2 -2
- package/dist/logger/index.d.mts +5 -5
- package/dist/logger/index.mjs +3 -3
- package/dist/notifications/index.d.mts +78 -0
- package/dist/notifications/index.mjs +215 -0
- package/dist/palettes/ant/index.d.mts +1 -1
- package/dist/palettes/index.d.mts +2 -2
- package/dist/palettes/material/index.d.mts +1 -1
- package/dist/palettes/md1/index.d.mts +1 -1
- package/dist/palettes/md2/index.d.mts +1 -1
- package/dist/palettes/radix/index.d.mts +1 -1
- package/dist/palettes/tailwind/index.d.mts +1 -1
- package/dist/permissions/adapters/index.d.mts +2 -2
- package/dist/permissions/adapters/index.mjs +1 -1
- package/dist/permissions/adapters/v0/index.d.mts +1 -1
- package/dist/permissions/adapters/v0/index.mjs +1 -1
- package/dist/permissions/index.d.mts +1 -1
- package/dist/permissions/index.mjs +5 -5
- package/dist/{pino-Bzighnkd.d.mts → pino-CM1iLXmi.d.mts} +1 -1
- package/dist/{posthog-BE7-t7cV.mjs → posthog-CdcdfMYS.mjs} +1 -1
- package/dist/rules/index.d.mts +1 -1
- package/dist/rules/index.mjs +9 -10
- package/dist/{server-Ch9J86tb.d.mts → server-Ct-h4-OA.d.mts} +1 -1
- package/dist/{server-CZ6ahbEH.mjs → server-DHET3KNW.mjs} +1 -1
- package/dist/storage/adapters/index.d.mts +2 -2
- package/dist/storage/adapters/memory/index.d.mts +1 -1
- package/dist/storage/index.d.mts +3 -3
- package/dist/storage/index.mjs +21 -21
- package/dist/theme/adapters/index.d.mts +1 -1
- package/dist/theme/adapters/index.mjs +2 -2
- package/dist/theme/adapters/v0/index.d.mts +1 -1
- package/dist/theme/adapters/v0/index.mjs +2 -2
- package/dist/theme/index.d.mts +1 -1
- package/dist/theme/index.mjs +8 -8
- package/dist/{useClickOutside-W0Sur1rC.mjs → useClickOutside-DNuJQ9EG.mjs} +860 -126
- package/dist/{useFeatures-CUicSI-E.mjs → useFeatures-CWNXTIXk.mjs} +3 -3
- package/dist/useLocale-Dzl6lCCF.mjs +75 -0
- package/dist/{useLogger-DY1Hbcy1.mjs → useLogger-Bw836Jbg.mjs} +2 -2
- package/dist/{usePermissions-BSW59R4q.mjs → usePermissions-DrRVDeVy.mjs} +2 -2
- package/dist/{useRules-BbA6_gvs.mjs → useRules-TMGuA8al.mjs} +2 -2
- package/dist/{useTheme-Bdx2Lj5c.mjs → useTheme-qMpg3Ti6.mjs} +9 -6
- package/dist/utilities/index.d.mts +2 -2
- package/dist/utilities/index.mjs +3 -32
- package/dist/v0-3zDdS4II.d.mts +19 -0
- package/dist/{v0-BZINNGoC.d.mts → v0-BBRwZ3at.d.mts} +1 -1
- package/dist/{v0-YAqbXudL.mjs → v0-BoWQ8RK0.mjs} +1 -1
- package/dist/{v0-BFseIsBi.mjs → v0-BsuBuBSa.mjs} +1 -1
- package/dist/{v0-2G2476h-.mjs → v0-CIEQpOK2.mjs} +1 -1
- package/dist/{v0-CdUL2eOn.d.mts → v0-CMeh39LQ.d.mts} +1 -1
- package/dist/v0-DgaVf3xM.mjs +62 -0
- package/dist/{v0-1xxC39wf.d.mts → v0-JPf99NKg.d.mts} +1 -1
- package/dist/{virtual-DwBiFA25.d.mts → virtual-B1lRbO7Q.d.mts} +1 -1
- package/dist/{virtual-eDNVH1fz.mjs → virtual-D0_D5gkh.mjs} +1 -1
- package/package.json +11 -4
- package/dist/useLocale-cQlPxbpV.mjs +0 -87
- package/dist/v0-CAKa6tzG.d.mts +0 -22
- package/dist/v0-CHBrvw49.mjs +0 -35
- /package/dist/{adapter-JTFG3Jn8.d.mts → adapter-CJQav2JB.d.mts} +0 -0
- /package/dist/{index-B5ZDDkXv.d.mts → index-BvTD7kU8.d.mts} +0 -0
- /package/dist/{index-NsE5nARK.d.mts → index-DSao7i57.d.mts} +0 -0
- /package/dist/{memory-BTtRdnNn.d.mts → memory-DyBabFV1.d.mts} +0 -0
package/dist/browser/index.js
CHANGED
|
@@ -81,7 +81,7 @@ const SUPPORTS_MATCH_MEDIA = IN_BROWSER && "matchMedia" in window && typeof wind
|
|
|
81
81
|
const SUPPORTS_OBSERVER = IN_BROWSER && "ResizeObserver" in window;
|
|
82
82
|
const SUPPORTS_INTERSECTION_OBSERVER = IN_BROWSER && "IntersectionObserver" in window;
|
|
83
83
|
const SUPPORTS_MUTATION_OBSERVER = IN_BROWSER && "MutationObserver" in window;
|
|
84
|
-
const version = "0.1.
|
|
84
|
+
const version = "0.1.10";
|
|
85
85
|
/* v8 ignore next -- build-time constant, __DEV__ short-circuits in tests */
|
|
86
86
|
const __LOGGER_ENABLED__ = false;
|
|
87
87
|
//#endregion
|
|
@@ -397,6 +397,7 @@ function mergeDeep(target, ...sources) {
|
|
|
397
397
|
if (UNSAFE_KEYS.has(key)) continue;
|
|
398
398
|
if (!Object.prototype.hasOwnProperty.call(source, key)) continue;
|
|
399
399
|
const sourceValue = source[key];
|
|
400
|
+
if (/* @__PURE__ */ isUndefined(sourceValue)) continue;
|
|
400
401
|
const targetValue = target[key];
|
|
401
402
|
if (/* @__PURE__ */ isObject(sourceValue)) {
|
|
402
403
|
if (!/* @__PURE__ */ isObject(targetValue)) Object.assign(target, { [key]: {} });
|
|
@@ -468,36 +469,6 @@ function clamp(value, min = 0, max = 1) {
|
|
|
468
469
|
function range(length, start = 0) {
|
|
469
470
|
return Array.from({ length }, (_, index) => start + index);
|
|
470
471
|
}
|
|
471
|
-
/**
|
|
472
|
-
* Debounces a function call by the specified delay
|
|
473
|
-
*
|
|
474
|
-
* @param fn The function to debounce
|
|
475
|
-
* @param delay The delay in milliseconds
|
|
476
|
-
* @returns A debounced function with clear and immediate methods
|
|
477
|
-
*
|
|
478
|
-
* @example
|
|
479
|
-
* ```ts
|
|
480
|
-
* const debouncedFn = debounce(() => console.log('called'), 500)
|
|
481
|
-
* debouncedFn() // Will call after 500ms
|
|
482
|
-
* debouncedFn.clear() // Cancel pending call
|
|
483
|
-
* debouncedFn.immediate() // Call immediately
|
|
484
|
-
* ```
|
|
485
|
-
*/
|
|
486
|
-
function debounce(fn, delay) {
|
|
487
|
-
let timeoutId;
|
|
488
|
-
function debounced(...args) {
|
|
489
|
-
if (!/* @__PURE__ */ isUndefined(timeoutId)) clearTimeout(timeoutId);
|
|
490
|
-
timeoutId = setTimeout(() => fn(...args), delay);
|
|
491
|
-
}
|
|
492
|
-
debounced.clear = () => {
|
|
493
|
-
if (!/* @__PURE__ */ isUndefined(timeoutId)) clearTimeout(timeoutId);
|
|
494
|
-
};
|
|
495
|
-
debounced.immediate = (...args) => {
|
|
496
|
-
debounced.clear();
|
|
497
|
-
fn(...args);
|
|
498
|
-
};
|
|
499
|
-
return debounced;
|
|
500
|
-
}
|
|
501
472
|
//#endregion
|
|
502
473
|
//#region src/components/Atom/Atom.vue
|
|
503
474
|
/**
|
|
@@ -1203,7 +1174,7 @@ function createRegistry(options) {
|
|
|
1203
1174
|
function get(id) {
|
|
1204
1175
|
return collection.get(id);
|
|
1205
1176
|
}
|
|
1206
|
-
function upsert(id, patch = {}) {
|
|
1177
|
+
function upsert(id, patch = {}, event) {
|
|
1207
1178
|
const existing = get(id);
|
|
1208
1179
|
if (!existing) return register({
|
|
1209
1180
|
...patch,
|
|
@@ -1238,6 +1209,7 @@ function createRegistry(options) {
|
|
|
1238
1209
|
collection.set(id, updated);
|
|
1239
1210
|
invalidate();
|
|
1240
1211
|
emit("update:ticket", updated);
|
|
1212
|
+
if (event) emit(event, id);
|
|
1241
1213
|
return updated;
|
|
1242
1214
|
}
|
|
1243
1215
|
function browse(value) {
|
|
@@ -1377,10 +1349,10 @@ function createRegistry(options) {
|
|
|
1377
1349
|
unassign(ticket.value, ticket.id);
|
|
1378
1350
|
const willReindex = indexDependentCount > 0 && ticket.index < collection.size;
|
|
1379
1351
|
if (!willReindex) invalidate();
|
|
1380
|
-
emit("unregister:ticket", ticket);
|
|
1381
1352
|
minDirtyIndex = Math.min(minDirtyIndex, ticket.index);
|
|
1382
1353
|
if (willReindex) reindex();
|
|
1383
1354
|
else needsReindex = true;
|
|
1355
|
+
emit("unregister:ticket", ticket);
|
|
1384
1356
|
}
|
|
1385
1357
|
function offboard(ids) {
|
|
1386
1358
|
batch(() => {
|
|
@@ -2153,10 +2125,10 @@ function createSingle(_options = {}) {
|
|
|
2153
2125
|
mandatory,
|
|
2154
2126
|
multiple
|
|
2155
2127
|
});
|
|
2156
|
-
const selectedId =
|
|
2157
|
-
const selectedItem =
|
|
2158
|
-
const selectedIndex =
|
|
2159
|
-
const selectedValue =
|
|
2128
|
+
const selectedId = toRef(() => registry.selectedIds.values().next().value);
|
|
2129
|
+
const selectedItem = toRef(() => registry.selectedItems.value.values().next().value);
|
|
2130
|
+
const selectedIndex = toRef(() => selectedItem.value?.index ?? -1);
|
|
2131
|
+
const selectedValue = toRef(() => selectedItem.value?.value);
|
|
2160
2132
|
function unselect(id) {
|
|
2161
2133
|
registry.unselect(id);
|
|
2162
2134
|
}
|
|
@@ -3428,7 +3400,7 @@ function createTokens(tokens = {}, options = {}) {
|
|
|
3428
3400
|
cache.set(cacheKey, result);
|
|
3429
3401
|
return result;
|
|
3430
3402
|
}
|
|
3431
|
-
const { register: _register, upsert: _upsert, unregister: _unregister } = registry;
|
|
3403
|
+
const { register: _register, upsert: _upsert, unregister: _unregister, onboard: _onboard, offboard: _offboard, move: _move, clear: _clear } = registry;
|
|
3432
3404
|
function register(registration) {
|
|
3433
3405
|
cache.clear();
|
|
3434
3406
|
return _register(registration);
|
|
@@ -3441,11 +3413,31 @@ function createTokens(tokens = {}, options = {}) {
|
|
|
3441
3413
|
cache.clear();
|
|
3442
3414
|
return _unregister(id);
|
|
3443
3415
|
}
|
|
3416
|
+
function onboard(registrations) {
|
|
3417
|
+
cache.clear();
|
|
3418
|
+
return _onboard(registrations);
|
|
3419
|
+
}
|
|
3420
|
+
function offboard(ids) {
|
|
3421
|
+
cache.clear();
|
|
3422
|
+
return _offboard(ids);
|
|
3423
|
+
}
|
|
3424
|
+
function move(id, index) {
|
|
3425
|
+
cache.clear();
|
|
3426
|
+
return _move(id, index);
|
|
3427
|
+
}
|
|
3428
|
+
function clear() {
|
|
3429
|
+
cache.clear();
|
|
3430
|
+
return _clear();
|
|
3431
|
+
}
|
|
3444
3432
|
return {
|
|
3445
3433
|
...registry,
|
|
3446
3434
|
register,
|
|
3447
3435
|
upsert,
|
|
3448
3436
|
unregister,
|
|
3437
|
+
onboard,
|
|
3438
|
+
offboard,
|
|
3439
|
+
move,
|
|
3440
|
+
clear,
|
|
3449
3441
|
resolve,
|
|
3450
3442
|
isAlias,
|
|
3451
3443
|
get size() {
|
|
@@ -3586,33 +3578,60 @@ function flatten(tokens, prefix = "", flat = false) {
|
|
|
3586
3578
|
//#endregion
|
|
3587
3579
|
//#region src/composables/useLocale/adapters/v0.ts
|
|
3588
3580
|
/**
|
|
3589
|
-
*
|
|
3581
|
+
* Default locale adapter for @vuetify/v0.
|
|
3590
3582
|
*
|
|
3591
|
-
*
|
|
3592
|
-
*
|
|
3593
|
-
* numbered ({0}, {1}) and named ({name}) variables in translation strings.
|
|
3583
|
+
* Handles the full translation pipeline: key lookup via tokens,
|
|
3584
|
+
* fallback chain, token reference resolution, and placeholder interpolation.
|
|
3594
3585
|
*/
|
|
3595
3586
|
var Vuetify0LocaleAdapter = class {
|
|
3596
|
-
|
|
3597
|
-
|
|
3598
|
-
|
|
3599
|
-
|
|
3600
|
-
|
|
3587
|
+
context;
|
|
3588
|
+
constructor(context) {
|
|
3589
|
+
this.context = context;
|
|
3590
|
+
}
|
|
3591
|
+
t(key, ...params) {
|
|
3592
|
+
const locale = this.context.selectedId.value;
|
|
3593
|
+
if (!locale) return this.interpolate(key, params);
|
|
3594
|
+
const message = this.context.tokens.get(`${locale}.${key}`)?.value;
|
|
3595
|
+
if (/* @__PURE__ */ isString(message)) return this.interpolate(this.resolve(locale, message), params);
|
|
3596
|
+
if (this.context.fallbackLocale) {
|
|
3597
|
+
const fbMessage = this.context.tokens.get(`${this.context.fallbackLocale}.${key}`)?.value;
|
|
3598
|
+
if (/* @__PURE__ */ isString(fbMessage)) return this.interpolate(this.resolve(this.context.fallbackLocale, fbMessage), params);
|
|
3599
|
+
}
|
|
3600
|
+
return this.interpolate(key, params);
|
|
3601
|
+
}
|
|
3602
|
+
n(value) {
|
|
3603
|
+
const locale = this.context.selectedId.value;
|
|
3604
|
+
if (!IN_BROWSER || !locale) return value.toString();
|
|
3605
|
+
return new Intl.NumberFormat(String(locale)).format(value);
|
|
3606
|
+
}
|
|
3607
|
+
resolve(locale, str, visited = /* @__PURE__ */ new Set()) {
|
|
3608
|
+
return str.replace(/{([a-zA-Z0-9.\-_]+)}/g, (match, key) => {
|
|
3609
|
+
const [prefix, ...rest] = key.split(".");
|
|
3610
|
+
const target = this.context.has(prefix) ? prefix : locale;
|
|
3611
|
+
const path = `${target}.${this.context.has(prefix) ? rest.join(".") : key}`;
|
|
3612
|
+
if (visited.has(path)) return match;
|
|
3613
|
+
visited.add(path);
|
|
3614
|
+
const resolved = this.context.tokens.get(path)?.value;
|
|
3615
|
+
if (/* @__PURE__ */ isString(resolved)) return this.resolve(target, resolved, visited);
|
|
3616
|
+
return match;
|
|
3617
|
+
});
|
|
3618
|
+
}
|
|
3619
|
+
interpolate(message, args) {
|
|
3620
|
+
let result = message;
|
|
3621
|
+
let rest = args;
|
|
3622
|
+
if (rest.length > 0 && /* @__PURE__ */ isObject(rest[0])) {
|
|
3623
|
+
const variables = rest[0];
|
|
3624
|
+
result = result.replace(/{([a-zA-Z][a-zA-Z0-9_]*)}/g, (match, name) => {
|
|
3601
3625
|
return /* @__PURE__ */ isUndefined(variables[name]) ? match : String(variables[name]);
|
|
3602
3626
|
});
|
|
3603
|
-
|
|
3627
|
+
rest = rest.slice(1);
|
|
3604
3628
|
}
|
|
3605
|
-
|
|
3606
|
-
const
|
|
3607
|
-
if (!/* @__PURE__ */ isUndefined(
|
|
3629
|
+
result = result.replace(/\{(\d+)\}/g, (match, index) => {
|
|
3630
|
+
const i = Number.parseInt(index, 10);
|
|
3631
|
+
if (!/* @__PURE__ */ isUndefined(rest[i])) return String(rest[i]);
|
|
3608
3632
|
return match;
|
|
3609
3633
|
});
|
|
3610
|
-
return
|
|
3611
|
-
}
|
|
3612
|
-
n(value, locale, ...params) {
|
|
3613
|
-
if (!IN_BROWSER || !locale) return value.toString();
|
|
3614
|
-
const options = params[0];
|
|
3615
|
-
return new Intl.NumberFormat(String(locale), options).format(value);
|
|
3634
|
+
return result;
|
|
3616
3635
|
}
|
|
3617
3636
|
};
|
|
3618
3637
|
//#endregion
|
|
@@ -3643,45 +3662,35 @@ var Vuetify0LocaleAdapter = class {
|
|
|
3643
3662
|
* @see https://0.vuetifyjs.com/composables/plugins/use-locale
|
|
3644
3663
|
*/
|
|
3645
3664
|
function createLocale(_options = {}) {
|
|
3646
|
-
const { adapter
|
|
3665
|
+
const { adapter: externalAdapter, messages = {}, fallback: fallbackLocale, ...options } = _options;
|
|
3647
3666
|
const tokens = createTokens(messages);
|
|
3648
3667
|
const registry = createSingle(options);
|
|
3649
3668
|
for (const id in messages) {
|
|
3650
3669
|
registry.register({ id });
|
|
3651
3670
|
if (id === options.default && !registry.selectedId.value) registry.select(id);
|
|
3652
3671
|
}
|
|
3653
|
-
|
|
3654
|
-
|
|
3655
|
-
|
|
3656
|
-
|
|
3657
|
-
|
|
3658
|
-
|
|
3659
|
-
|
|
3660
|
-
|
|
3661
|
-
const fbMessage = tokens.get(`${fallbackLocale}.${key}`)?.value;
|
|
3662
|
-
if (/* @__PURE__ */ isString(fbMessage)) return adapter.t(resolve(fallbackLocale, fbMessage), ...args);
|
|
3663
|
-
}
|
|
3664
|
-
return adapter.t(fallback ?? key, ...args);
|
|
3672
|
+
const adapter = externalAdapter ?? new Vuetify0LocaleAdapter({
|
|
3673
|
+
tokens,
|
|
3674
|
+
selectedId: registry.selectedId,
|
|
3675
|
+
fallbackLocale,
|
|
3676
|
+
has: (id) => registry.has(id)
|
|
3677
|
+
});
|
|
3678
|
+
function t(key, ...params) {
|
|
3679
|
+
return adapter.t(key, ...params);
|
|
3665
3680
|
}
|
|
3666
|
-
function n(value
|
|
3667
|
-
return adapter.n(value
|
|
3681
|
+
function n(value) {
|
|
3682
|
+
return adapter.n(value);
|
|
3668
3683
|
}
|
|
3669
|
-
function
|
|
3670
|
-
|
|
3671
|
-
|
|
3672
|
-
|
|
3673
|
-
const path = `${target}.${registry.has(prefix) ? rest.join(".") : key}`;
|
|
3674
|
-
if (visited.has(path)) return match;
|
|
3675
|
-
visited.add(path);
|
|
3676
|
-
const resolved = tokens.get(path)?.value;
|
|
3677
|
-
if (/* @__PURE__ */ isString(resolved)) return resolve(target, resolved, visited);
|
|
3678
|
-
return match;
|
|
3679
|
-
});
|
|
3684
|
+
function register(registration = {}) {
|
|
3685
|
+
const { messages: msgs, ...rest } = registration;
|
|
3686
|
+
if (msgs && rest.id && !registry.has(rest.id)) tokens.onboard(flatten({ [rest.id]: msgs }));
|
|
3687
|
+
return registry.register(rest);
|
|
3680
3688
|
}
|
|
3681
3689
|
return {
|
|
3682
3690
|
...registry,
|
|
3683
3691
|
t,
|
|
3684
3692
|
n,
|
|
3693
|
+
register,
|
|
3685
3694
|
get size() {
|
|
3686
3695
|
return registry.size;
|
|
3687
3696
|
}
|
|
@@ -3690,7 +3699,7 @@ function createLocale(_options = {}) {
|
|
|
3690
3699
|
function createLocaleFallback() {
|
|
3691
3700
|
return {
|
|
3692
3701
|
size: 0,
|
|
3693
|
-
t: (key
|
|
3702
|
+
t: (key) => key,
|
|
3694
3703
|
n: String
|
|
3695
3704
|
};
|
|
3696
3705
|
}
|
|
@@ -3821,7 +3830,7 @@ const _sfc_main$10 = /* @__PURE__ */ defineComponent({
|
|
|
3821
3830
|
prev: breadcrumbs.prev,
|
|
3822
3831
|
select: breadcrumbs.select,
|
|
3823
3832
|
attrs: {
|
|
3824
|
-
"aria-label": __props.label ?? locale.t("Breadcrumbs.label"
|
|
3833
|
+
"aria-label": __props.label ?? locale.t("Breadcrumbs.label"),
|
|
3825
3834
|
"role": __props.as === "nav" ? void 0 : "navigation"
|
|
3826
3835
|
}
|
|
3827
3836
|
}));
|
|
@@ -4131,7 +4140,8 @@ function useProxyModel(context, model, options) {
|
|
|
4131
4140
|
const modelAsArray = transformIn(model);
|
|
4132
4141
|
const pending = new Set(modelAsArray);
|
|
4133
4142
|
context.apply(modelAsArray, applyOptions);
|
|
4134
|
-
|
|
4143
|
+
const selected = new Set(context.selectedValues.value);
|
|
4144
|
+
for (const value of modelAsArray) if (selected.has(value)) pending.delete(value);
|
|
4135
4145
|
const contextWatch = watch(context.selectedValues, (val) => {
|
|
4136
4146
|
modelWatch.pause();
|
|
4137
4147
|
model.value = transformOut(Array.from(toValue(val)));
|
|
@@ -4165,18 +4175,18 @@ function useProxyModel(context, model, options) {
|
|
|
4165
4175
|
return stop;
|
|
4166
4176
|
}
|
|
4167
4177
|
//#endregion
|
|
4168
|
-
//#region src/components/
|
|
4169
|
-
const [
|
|
4170
|
-
const _sfc_main$
|
|
4171
|
-
name: "
|
|
4172
|
-
__name: "
|
|
4178
|
+
//#region src/components/Button/ButtonGroup.vue
|
|
4179
|
+
const [useButtonGroup, provideButtonGroup] = createContext();
|
|
4180
|
+
const _sfc_main$12 = /* @__PURE__ */ defineComponent({
|
|
4181
|
+
name: "ButtonGroup",
|
|
4182
|
+
__name: "ButtonGroup",
|
|
4173
4183
|
props: /* @__PURE__ */ mergeModels({
|
|
4174
|
-
namespace: { default: "v0:
|
|
4184
|
+
namespace: { default: "v0:button:group" },
|
|
4175
4185
|
disabled: {
|
|
4176
4186
|
type: Boolean,
|
|
4177
4187
|
default: false
|
|
4178
4188
|
},
|
|
4179
|
-
|
|
4189
|
+
multiple: {
|
|
4180
4190
|
type: Boolean,
|
|
4181
4191
|
default: false
|
|
4182
4192
|
},
|
|
@@ -4196,25 +4206,16 @@ const _sfc_main$11 = /* @__PURE__ */ defineComponent({
|
|
|
4196
4206
|
emits: /* @__PURE__ */ mergeModels(["update:model-value"], ["update:modelValue"]),
|
|
4197
4207
|
setup(__props) {
|
|
4198
4208
|
const model = useModel(__props, "modelValue");
|
|
4199
|
-
const
|
|
4209
|
+
const selection = createSelection({
|
|
4200
4210
|
disabled: toRef(() => __props.disabled),
|
|
4201
|
-
|
|
4211
|
+
multiple: toRef(() => __props.multiple),
|
|
4202
4212
|
mandatory: __props.mandatory,
|
|
4203
4213
|
events: true
|
|
4204
4214
|
});
|
|
4205
|
-
useProxyModel(
|
|
4206
|
-
|
|
4215
|
+
useProxyModel(selection, model, { multiple: toRef(() => __props.multiple) });
|
|
4216
|
+
provideButtonGroup(__props.namespace, selection);
|
|
4207
4217
|
const slotProps = toRef(() => ({
|
|
4208
|
-
isDisabled: toValue(
|
|
4209
|
-
isNoneSelected: group.isNoneSelected.value,
|
|
4210
|
-
isAllSelected: group.isAllSelected.value,
|
|
4211
|
-
isMixed: group.isMixed.value,
|
|
4212
|
-
select: group.select,
|
|
4213
|
-
unselect: group.unselect,
|
|
4214
|
-
toggle: group.toggle,
|
|
4215
|
-
selectAll: group.selectAll,
|
|
4216
|
-
unselectAll: group.unselectAll,
|
|
4217
|
-
toggleAll: group.toggleAll,
|
|
4218
|
+
isDisabled: toValue(selection.disabled),
|
|
4218
4219
|
attrs: {
|
|
4219
4220
|
"role": "group",
|
|
4220
4221
|
"aria-label": __props.label || void 0,
|
|
@@ -4234,152 +4235,15 @@ const _sfc_main$11 = /* @__PURE__ */ defineComponent({
|
|
|
4234
4235
|
}
|
|
4235
4236
|
});
|
|
4236
4237
|
//#endregion
|
|
4237
|
-
//#region src/components/
|
|
4238
|
-
const
|
|
4239
|
-
const _sfc_main$14 = /* @__PURE__ */ defineComponent({
|
|
4240
|
-
name: "CheckboxRoot",
|
|
4241
|
-
inheritAttrs: false,
|
|
4242
|
-
__name: "CheckboxRoot",
|
|
4243
|
-
props: /* @__PURE__ */ mergeModels({
|
|
4244
|
-
id: { default: () => useId$1() },
|
|
4245
|
-
label: {},
|
|
4246
|
-
value: {},
|
|
4247
|
-
name: {},
|
|
4248
|
-
form: {},
|
|
4249
|
-
disabled: { default: false },
|
|
4250
|
-
indeterminate: { default: false },
|
|
4251
|
-
namespace: { default: "v0:checkbox:root" },
|
|
4252
|
-
groupNamespace: { default: "v0:checkbox:group" },
|
|
4253
|
-
ariaLabelledby: {},
|
|
4254
|
-
ariaDescribedby: {},
|
|
4255
|
-
ariaInvalid: { type: Boolean },
|
|
4256
|
-
as: { default: "button" },
|
|
4257
|
-
renderless: { type: Boolean }
|
|
4258
|
-
}, {
|
|
4259
|
-
"modelValue": { type: Boolean },
|
|
4260
|
-
"modelModifiers": {}
|
|
4261
|
-
}),
|
|
4262
|
-
emits: /* @__PURE__ */ mergeModels(["update:model-value"], ["update:modelValue"]),
|
|
4263
|
-
setup(__props) {
|
|
4264
|
-
const attrs = useAttrs();
|
|
4265
|
-
let group = null;
|
|
4266
|
-
try {
|
|
4267
|
-
group = useCheckboxGroup(__props.groupNamespace);
|
|
4268
|
-
} catch {}
|
|
4269
|
-
const model = useModel(__props, "modelValue");
|
|
4270
|
-
const ticket = group?.register({
|
|
4271
|
-
id: __props.id,
|
|
4272
|
-
value: __props.value,
|
|
4273
|
-
disabled: __props.disabled,
|
|
4274
|
-
indeterminate: __props.indeterminate
|
|
4275
|
-
});
|
|
4276
|
-
const isChecked = toRef(() => ticket ? toValue(ticket.isSelected) : model.value ?? false);
|
|
4277
|
-
const isMixed = toRef(() => ticket ? toValue(ticket.isMixed) : toValue(__props.indeterminate) ?? false);
|
|
4278
|
-
const isDisabled = toRef(() => group && ticket ? toValue(ticket.disabled) || toValue(group.disabled) : toValue(__props.disabled) ?? false);
|
|
4279
|
-
const dataState = toRef(() => isMixed.value ? "indeterminate" : isChecked.value ? "checked" : "unchecked");
|
|
4280
|
-
function toggle() {
|
|
4281
|
-
if (isDisabled.value) return;
|
|
4282
|
-
if (ticket) ticket.toggle();
|
|
4283
|
-
else model.value = !model.value;
|
|
4284
|
-
}
|
|
4285
|
-
function select() {
|
|
4286
|
-
if (isDisabled.value) return;
|
|
4287
|
-
if (ticket) ticket.select();
|
|
4288
|
-
else model.value = true;
|
|
4289
|
-
}
|
|
4290
|
-
function unselect() {
|
|
4291
|
-
if (isDisabled.value) return;
|
|
4292
|
-
if (ticket) ticket.unselect();
|
|
4293
|
-
else model.value = false;
|
|
4294
|
-
}
|
|
4295
|
-
function mix() {
|
|
4296
|
-
if (isDisabled.value || !ticket) return;
|
|
4297
|
-
ticket.mix();
|
|
4298
|
-
}
|
|
4299
|
-
function unmix() {
|
|
4300
|
-
if (isDisabled.value || !ticket) return;
|
|
4301
|
-
ticket.unmix();
|
|
4302
|
-
}
|
|
4303
|
-
function onClick() {
|
|
4304
|
-
toggle();
|
|
4305
|
-
}
|
|
4306
|
-
function onKeydown(e) {
|
|
4307
|
-
if (e.key !== " ") return;
|
|
4308
|
-
e.preventDefault();
|
|
4309
|
-
toggle();
|
|
4310
|
-
}
|
|
4311
|
-
onUnmounted(() => {
|
|
4312
|
-
if (!ticket || !group) return;
|
|
4313
|
-
group.unregister(ticket.id);
|
|
4314
|
-
});
|
|
4315
|
-
const context = {
|
|
4316
|
-
id: __props.id,
|
|
4317
|
-
label: __props.label,
|
|
4318
|
-
value: __props.value,
|
|
4319
|
-
name: __props.name,
|
|
4320
|
-
form: __props.form,
|
|
4321
|
-
isChecked,
|
|
4322
|
-
isMixed,
|
|
4323
|
-
isDisabled,
|
|
4324
|
-
select,
|
|
4325
|
-
unselect,
|
|
4326
|
-
toggle,
|
|
4327
|
-
mix,
|
|
4328
|
-
unmix
|
|
4329
|
-
};
|
|
4330
|
-
provideCheckboxRoot(__props.namespace, context);
|
|
4331
|
-
const slotProps = toRef(() => ({
|
|
4332
|
-
id: __props.id,
|
|
4333
|
-
label: __props.label,
|
|
4334
|
-
value: __props.value,
|
|
4335
|
-
isChecked: isChecked.value,
|
|
4336
|
-
isMixed: isMixed.value,
|
|
4337
|
-
isDisabled: isDisabled.value,
|
|
4338
|
-
select,
|
|
4339
|
-
unselect,
|
|
4340
|
-
toggle,
|
|
4341
|
-
mix,
|
|
4342
|
-
unmix,
|
|
4343
|
-
attrs: {
|
|
4344
|
-
"type": __props.as === "button" ? "button" : void 0,
|
|
4345
|
-
"role": "checkbox",
|
|
4346
|
-
"aria-checked": isMixed.value ? "mixed" : isChecked.value,
|
|
4347
|
-
"aria-disabled": isDisabled.value || void 0,
|
|
4348
|
-
"aria-label": __props.label || void 0,
|
|
4349
|
-
"aria-labelledby": __props.ariaLabelledby || void 0,
|
|
4350
|
-
"aria-describedby": __props.ariaDescribedby || void 0,
|
|
4351
|
-
"aria-invalid": __props.ariaInvalid || void 0,
|
|
4352
|
-
"tabindex": isDisabled.value ? void 0 : 0,
|
|
4353
|
-
"data-state": dataState.value,
|
|
4354
|
-
"data-disabled": isDisabled.value ? true : void 0
|
|
4355
|
-
}
|
|
4356
|
-
}));
|
|
4357
|
-
return (_ctx, _cache) => {
|
|
4358
|
-
return openBlock(), createElementBlock(Fragment, null, [createVNode(unref(_sfc_main), mergeProps({
|
|
4359
|
-
...unref(attrs),
|
|
4360
|
-
...slotProps.value.attrs
|
|
4361
|
-
}, {
|
|
4362
|
-
as: __props.as,
|
|
4363
|
-
renderless: __props.renderless,
|
|
4364
|
-
onClick,
|
|
4365
|
-
onKeydown
|
|
4366
|
-
}), {
|
|
4367
|
-
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
4368
|
-
_: 3
|
|
4369
|
-
}, 16, ["as", "renderless"]), __props.name ? (openBlock(), createBlock(_sfc_main$12, { key: 0 })) : createCommentVNode("v-if", true)], 64);
|
|
4370
|
-
};
|
|
4371
|
-
}
|
|
4372
|
-
});
|
|
4373
|
-
//#endregion
|
|
4374
|
-
//#region src/components/Checkbox/CheckboxHiddenInput.vue
|
|
4375
|
-
const _hoisted_1$4 = [
|
|
4238
|
+
//#region src/components/Button/ButtonHiddenInput.vue
|
|
4239
|
+
const _hoisted_1$5 = [
|
|
4376
4240
|
"checked",
|
|
4377
4241
|
"disabled",
|
|
4378
4242
|
"form",
|
|
4379
4243
|
"name",
|
|
4380
4244
|
"value"
|
|
4381
4245
|
];
|
|
4382
|
-
const visuallyHiddenStyle$
|
|
4246
|
+
const visuallyHiddenStyle$4 = {
|
|
4383
4247
|
position: "absolute",
|
|
4384
4248
|
width: "1px",
|
|
4385
4249
|
height: "1px",
|
|
@@ -4390,80 +4254,698 @@ const visuallyHiddenStyle$3 = {
|
|
|
4390
4254
|
whiteSpace: "nowrap",
|
|
4391
4255
|
border: "0"
|
|
4392
4256
|
};
|
|
4393
|
-
const _sfc_main$
|
|
4394
|
-
name: "
|
|
4395
|
-
__name: "
|
|
4257
|
+
const _sfc_main$13 = /* @__PURE__ */ defineComponent({
|
|
4258
|
+
name: "ButtonHiddenInput",
|
|
4259
|
+
__name: "ButtonHiddenInput",
|
|
4396
4260
|
props: {
|
|
4397
|
-
namespace: { default: "v0:
|
|
4261
|
+
namespace: { default: "v0:button:root" },
|
|
4398
4262
|
name: {},
|
|
4399
4263
|
value: {},
|
|
4400
4264
|
form: {}
|
|
4401
4265
|
},
|
|
4402
4266
|
setup(__props) {
|
|
4403
|
-
const root =
|
|
4267
|
+
const root = useButtonRoot(__props.namespace);
|
|
4404
4268
|
const name = toRef(() => __props.name ?? root.name);
|
|
4405
4269
|
const form = toRef(() => __props.form ?? root.form);
|
|
4406
4270
|
const value = toRef(() => {
|
|
4407
4271
|
const v = __props.value ?? root.value ?? "on";
|
|
4408
|
-
if (/* @__PURE__ */ isNullOrUndefined(v)) return "on";
|
|
4409
4272
|
if (/* @__PURE__ */ isObject(v)) return JSON.stringify(v);
|
|
4410
4273
|
return String(v);
|
|
4411
4274
|
});
|
|
4412
|
-
const
|
|
4275
|
+
const isSelected = root.isSelected;
|
|
4413
4276
|
const isDisabled = root.isDisabled;
|
|
4414
4277
|
return (_ctx, _cache) => {
|
|
4415
4278
|
return openBlock(), createElementBlock("input", {
|
|
4416
|
-
checked: unref(
|
|
4279
|
+
checked: unref(isSelected),
|
|
4417
4280
|
disabled: unref(isDisabled),
|
|
4418
4281
|
form: form.value,
|
|
4419
4282
|
inert: "",
|
|
4420
4283
|
name: name.value,
|
|
4421
|
-
style: visuallyHiddenStyle$
|
|
4284
|
+
style: visuallyHiddenStyle$4,
|
|
4422
4285
|
tabindex: "-1",
|
|
4423
4286
|
type: "checkbox",
|
|
4424
4287
|
value: value.value
|
|
4425
|
-
}, null, 8, _hoisted_1$
|
|
4288
|
+
}, null, 8, _hoisted_1$5);
|
|
4426
4289
|
};
|
|
4427
4290
|
}
|
|
4428
4291
|
});
|
|
4429
4292
|
//#endregion
|
|
4430
|
-
//#region src/
|
|
4431
|
-
|
|
4432
|
-
|
|
4433
|
-
|
|
4434
|
-
|
|
4435
|
-
|
|
4436
|
-
|
|
4437
|
-
|
|
4438
|
-
|
|
4439
|
-
|
|
4440
|
-
|
|
4441
|
-
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
|
|
4446
|
-
|
|
4447
|
-
|
|
4448
|
-
|
|
4449
|
-
|
|
4450
|
-
|
|
4451
|
-
|
|
4452
|
-
|
|
4453
|
-
|
|
4454
|
-
|
|
4455
|
-
|
|
4456
|
-
|
|
4457
|
-
|
|
4458
|
-
|
|
4293
|
+
//#region src/composables/useTimer/index.ts
|
|
4294
|
+
/**
|
|
4295
|
+
* @module useTimer
|
|
4296
|
+
*
|
|
4297
|
+
* @remarks
|
|
4298
|
+
* A reactive timer composable with pause/resume support.
|
|
4299
|
+
*
|
|
4300
|
+
* Key features:
|
|
4301
|
+
* - Start/stop/pause/resume controls
|
|
4302
|
+
* - Reactive remaining time tracking
|
|
4303
|
+
* - One-shot (default) or repeating mode
|
|
4304
|
+
* - Automatic cleanup on scope disposal
|
|
4305
|
+
* - SSR-safe
|
|
4306
|
+
*/
|
|
4307
|
+
/**
|
|
4308
|
+
* Creates a reactive timer with pause/resume support.
|
|
4309
|
+
*
|
|
4310
|
+
* @param handler Callback invoked when the timer fires.
|
|
4311
|
+
* @param options Timer configuration.
|
|
4312
|
+
* @returns Timer controls and reactive state.
|
|
4313
|
+
*
|
|
4314
|
+
* @see https://0.vuetifyjs.com/composables/system/use-timer
|
|
4315
|
+
*
|
|
4316
|
+
* @example
|
|
4317
|
+
* ```ts
|
|
4318
|
+
* const timer = useTimer(() => console.log('fired'), { duration: 5000 })
|
|
4319
|
+
*
|
|
4320
|
+
* timer.start()
|
|
4321
|
+
* timer.pause()
|
|
4322
|
+
* timer.resume()
|
|
4323
|
+
* timer.stop()
|
|
4324
|
+
* ```
|
|
4325
|
+
*/
|
|
4326
|
+
function useTimer(handler, options = {}) {
|
|
4327
|
+
const { duration = 1e3, repeat = false } = options;
|
|
4328
|
+
const remaining = shallowRef(duration);
|
|
4329
|
+
const isActive = shallowRef(false);
|
|
4330
|
+
const isPaused = shallowRef(false);
|
|
4331
|
+
let timeoutId;
|
|
4332
|
+
let trackingId;
|
|
4333
|
+
let startedAt = 0;
|
|
4334
|
+
let budget = duration;
|
|
4335
|
+
function clearTimer() {
|
|
4336
|
+
if (!/* @__PURE__ */ isUndefined(timeoutId)) {
|
|
4337
|
+
globalThis.clearTimeout(timeoutId);
|
|
4338
|
+
timeoutId = void 0;
|
|
4339
|
+
}
|
|
4340
|
+
}
|
|
4341
|
+
function startTracking() {
|
|
4342
|
+
stopTracking();
|
|
4343
|
+
if (!IN_BROWSER) return;
|
|
4344
|
+
trackingId = globalThis.setInterval(() => {
|
|
4345
|
+
if (!isActive.value || isPaused.value) return;
|
|
4346
|
+
const elapsed = Date.now() - startedAt;
|
|
4347
|
+
remaining.value = Math.max(0, budget - elapsed);
|
|
4348
|
+
}, 100);
|
|
4349
|
+
}
|
|
4350
|
+
function stopTracking() {
|
|
4351
|
+
if (!/* @__PURE__ */ isUndefined(trackingId)) {
|
|
4352
|
+
globalThis.clearInterval(trackingId);
|
|
4353
|
+
trackingId = void 0;
|
|
4354
|
+
}
|
|
4355
|
+
}
|
|
4356
|
+
function fire() {
|
|
4357
|
+
clearTimer();
|
|
4358
|
+
stopTracking();
|
|
4359
|
+
handler();
|
|
4360
|
+
if (repeat) begin(duration);
|
|
4361
|
+
else {
|
|
4362
|
+
isActive.value = false;
|
|
4363
|
+
remaining.value = 0;
|
|
4364
|
+
}
|
|
4365
|
+
}
|
|
4366
|
+
function begin(ms) {
|
|
4367
|
+
clearTimer();
|
|
4368
|
+
stopTracking();
|
|
4369
|
+
budget = ms;
|
|
4370
|
+
startedAt = Date.now();
|
|
4371
|
+
remaining.value = ms;
|
|
4372
|
+
isActive.value = true;
|
|
4373
|
+
isPaused.value = false;
|
|
4374
|
+
timeoutId = globalThis.setTimeout(fire, ms);
|
|
4375
|
+
startTracking();
|
|
4376
|
+
}
|
|
4377
|
+
function start() {
|
|
4378
|
+
if (duration < 0) return;
|
|
4379
|
+
begin(duration);
|
|
4380
|
+
}
|
|
4381
|
+
function stop() {
|
|
4382
|
+
clearTimer();
|
|
4383
|
+
stopTracking();
|
|
4384
|
+
isActive.value = false;
|
|
4385
|
+
isPaused.value = false;
|
|
4386
|
+
remaining.value = duration;
|
|
4387
|
+
}
|
|
4388
|
+
function pause() {
|
|
4389
|
+
if (!isActive.value || isPaused.value) return;
|
|
4390
|
+
const elapsed = Date.now() - startedAt;
|
|
4391
|
+
budget = Math.max(0, budget - elapsed);
|
|
4392
|
+
remaining.value = budget;
|
|
4393
|
+
clearTimer();
|
|
4394
|
+
stopTracking();
|
|
4395
|
+
isPaused.value = true;
|
|
4396
|
+
}
|
|
4397
|
+
function resume() {
|
|
4398
|
+
if (!isPaused.value) return;
|
|
4399
|
+
isPaused.value = false;
|
|
4400
|
+
startedAt = Date.now();
|
|
4401
|
+
timeoutId = globalThis.setTimeout(fire, budget);
|
|
4402
|
+
startTracking();
|
|
4403
|
+
}
|
|
4404
|
+
onScopeDispose(() => {
|
|
4405
|
+
clearTimer();
|
|
4406
|
+
stopTracking();
|
|
4407
|
+
}, true);
|
|
4408
|
+
return {
|
|
4409
|
+
start,
|
|
4410
|
+
stop,
|
|
4411
|
+
pause,
|
|
4412
|
+
resume,
|
|
4413
|
+
remaining,
|
|
4414
|
+
isActive,
|
|
4415
|
+
isPaused
|
|
4416
|
+
};
|
|
4417
|
+
}
|
|
4418
|
+
//#endregion
|
|
4419
|
+
//#region src/components/Button/ButtonRoot.vue
|
|
4420
|
+
const [useButtonRoot, provideButtonRoot] = createContext();
|
|
4421
|
+
const _sfc_main$16 = /* @__PURE__ */ defineComponent({
|
|
4422
|
+
name: "ButtonRoot",
|
|
4423
|
+
inheritAttrs: false,
|
|
4424
|
+
__name: "ButtonRoot",
|
|
4425
|
+
props: {
|
|
4426
|
+
disabled: {
|
|
4427
|
+
type: Boolean,
|
|
4428
|
+
default: false
|
|
4429
|
+
},
|
|
4430
|
+
readonly: {
|
|
4431
|
+
type: Boolean,
|
|
4432
|
+
default: false
|
|
4433
|
+
},
|
|
4434
|
+
passive: {
|
|
4435
|
+
type: Boolean,
|
|
4436
|
+
default: false
|
|
4437
|
+
},
|
|
4438
|
+
loading: {
|
|
4439
|
+
type: Boolean,
|
|
4440
|
+
default: false
|
|
4441
|
+
},
|
|
4442
|
+
grace: { default: 0 },
|
|
4443
|
+
value: {},
|
|
4444
|
+
namespace: { default: "v0:button:root" },
|
|
4445
|
+
groupNamespace: { default: "v0:button:group" },
|
|
4446
|
+
name: {},
|
|
4447
|
+
form: {},
|
|
4448
|
+
ariaLabel: {},
|
|
4449
|
+
as: { default: "button" },
|
|
4450
|
+
renderless: { type: Boolean }
|
|
4451
|
+
},
|
|
4452
|
+
setup(__props) {
|
|
4453
|
+
const attrs = useAttrs();
|
|
4454
|
+
let group = null;
|
|
4455
|
+
try {
|
|
4456
|
+
group = useButtonGroup(__props.groupNamespace);
|
|
4457
|
+
} catch {}
|
|
4458
|
+
const ticket = group?.register({
|
|
4459
|
+
value: __props.value,
|
|
4460
|
+
disabled: __props.disabled
|
|
4461
|
+
});
|
|
4462
|
+
const isDisabled = toRef(() => group && ticket ? toValue(ticket.disabled) || toValue(group.disabled) : __props.disabled);
|
|
4463
|
+
const isReadonly = toRef(() => __props.readonly);
|
|
4464
|
+
const isPassive = toRef(() => __props.passive);
|
|
4465
|
+
const isSelected = toRef(() => ticket ? toValue(ticket.isSelected) : false);
|
|
4466
|
+
const isLoading = shallowRef(false);
|
|
4467
|
+
const timer = useTimer(() => {
|
|
4468
|
+
isLoading.value = true;
|
|
4469
|
+
}, { duration: __props.grace });
|
|
4470
|
+
watch(() => __props.loading, (active) => {
|
|
4471
|
+
if (!active) {
|
|
4472
|
+
timer.stop();
|
|
4473
|
+
isLoading.value = false;
|
|
4474
|
+
} else if (__props.grace > 0) timer.start();
|
|
4475
|
+
else isLoading.value = true;
|
|
4476
|
+
}, { immediate: true });
|
|
4477
|
+
const single = createSingle({ mandatory: "force" });
|
|
4478
|
+
const isSolo = shallowRef(false);
|
|
4479
|
+
const locale = useLocale();
|
|
4480
|
+
function onClick() {
|
|
4481
|
+
if (isDisabled.value || isReadonly.value || isPassive.value || __props.loading || !ticket) return;
|
|
4482
|
+
ticket.toggle();
|
|
4483
|
+
}
|
|
4484
|
+
onUnmounted(() => {
|
|
4485
|
+
timer.stop();
|
|
4486
|
+
ticket?.unregister();
|
|
4487
|
+
});
|
|
4488
|
+
const context = {
|
|
4489
|
+
value: __props.value,
|
|
4490
|
+
name: __props.name,
|
|
4491
|
+
form: __props.form,
|
|
4492
|
+
isLoading: toRef(() => isLoading.value),
|
|
4493
|
+
isDisabled,
|
|
4494
|
+
isReadonly,
|
|
4495
|
+
isPassive,
|
|
4496
|
+
isSelected,
|
|
4497
|
+
isSolo,
|
|
4498
|
+
single
|
|
4499
|
+
};
|
|
4500
|
+
provideButtonRoot(__props.namespace, context);
|
|
4501
|
+
const elementAttrs = toRef(() => ({
|
|
4502
|
+
"type": __props.as === "button" ? "button" : void 0,
|
|
4503
|
+
"role": "button",
|
|
4504
|
+
"disabled": isDisabled.value ? true : void 0,
|
|
4505
|
+
"aria-disabled": isPassive.value ? true : void 0,
|
|
4506
|
+
"aria-busy": isLoading.value ? true : void 0,
|
|
4507
|
+
"aria-pressed": group ? isSelected.value : void 0,
|
|
4508
|
+
"aria-label": __props.ariaLabel || (isSolo.value ? locale.t("Button.label") : void 0),
|
|
4509
|
+
"tabindex": isDisabled.value ? -1 : 0,
|
|
4510
|
+
"data-loading": isLoading.value ? true : void 0,
|
|
4511
|
+
"data-passive": isPassive.value ? true : void 0,
|
|
4512
|
+
"data-readonly": isReadonly.value ? true : void 0,
|
|
4513
|
+
"data-disabled": isDisabled.value ? true : void 0,
|
|
4514
|
+
"data-selected": group && isSelected.value ? true : void 0,
|
|
4515
|
+
"data-solo": isSolo.value ? true : void 0,
|
|
4516
|
+
"onClick": onClick
|
|
4517
|
+
}));
|
|
4518
|
+
const slotProps = toRef(() => ({
|
|
4519
|
+
isLoading: isLoading.value,
|
|
4520
|
+
isDisabled: isDisabled.value,
|
|
4521
|
+
isReadonly: isReadonly.value,
|
|
4522
|
+
isPassive: isPassive.value,
|
|
4523
|
+
isSelected: isSelected.value,
|
|
4524
|
+
attrs: elementAttrs.value
|
|
4525
|
+
}));
|
|
4526
|
+
return (_ctx, _cache) => {
|
|
4527
|
+
return openBlock(), createElementBlock(Fragment, null, [createVNode(unref(_sfc_main), mergeProps({
|
|
4528
|
+
...unref(attrs),
|
|
4529
|
+
...slotProps.value.attrs
|
|
4530
|
+
}, {
|
|
4531
|
+
as: __props.as,
|
|
4532
|
+
renderless: __props.renderless
|
|
4533
|
+
}), {
|
|
4534
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
4535
|
+
_: 3
|
|
4536
|
+
}, 16, ["as", "renderless"]), __props.name ? (openBlock(), createBlock(_sfc_main$13, { key: 0 })) : createCommentVNode("v-if", true)], 64);
|
|
4537
|
+
};
|
|
4538
|
+
}
|
|
4539
|
+
});
|
|
4540
|
+
//#endregion
|
|
4541
|
+
//#region src/components/Button/ButtonContent.vue
|
|
4542
|
+
const _sfc_main$11 = /* @__PURE__ */ defineComponent({
|
|
4543
|
+
name: "ButtonContent",
|
|
4544
|
+
__name: "ButtonContent",
|
|
4545
|
+
props: {
|
|
4546
|
+
id: { default: () => useId$1() },
|
|
4547
|
+
namespace: { default: "v0:button:root" }
|
|
4548
|
+
},
|
|
4549
|
+
setup(__props) {
|
|
4550
|
+
const ticket = useButtonRoot(__props.namespace).single.register({ id: __props.id });
|
|
4551
|
+
onUnmounted(() => ticket.unregister());
|
|
4552
|
+
const slotProps = toRef(() => ({ isSelected: ticket.isSelected.value }));
|
|
4553
|
+
return (_ctx, _cache) => {
|
|
4554
|
+
return renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)));
|
|
4555
|
+
};
|
|
4556
|
+
}
|
|
4557
|
+
});
|
|
4558
|
+
//#endregion
|
|
4559
|
+
//#region src/components/Button/ButtonIcon.vue
|
|
4560
|
+
const _sfc_main$14 = /* @__PURE__ */ defineComponent({
|
|
4561
|
+
name: "ButtonIcon",
|
|
4562
|
+
__name: "ButtonIcon",
|
|
4563
|
+
props: {
|
|
4564
|
+
namespace: { default: "v0:button:root" },
|
|
4565
|
+
as: { default: "span" },
|
|
4566
|
+
renderless: { type: Boolean }
|
|
4567
|
+
},
|
|
4568
|
+
setup(__props) {
|
|
4569
|
+
const root = useButtonRoot(__props.namespace);
|
|
4570
|
+
onMounted(() => {
|
|
4571
|
+
if (root.single.size > 0) return;
|
|
4572
|
+
root.isSolo.value = true;
|
|
4573
|
+
});
|
|
4574
|
+
const slotProps = toRef(() => ({
|
|
4575
|
+
isSolo: root.isSolo.value,
|
|
4576
|
+
attrs: { "aria-hidden": true }
|
|
4577
|
+
}));
|
|
4578
|
+
return (_ctx, _cache) => {
|
|
4579
|
+
return openBlock(), createBlock(unref(_sfc_main), mergeProps(slotProps.value.attrs, {
|
|
4580
|
+
as: __props.as,
|
|
4581
|
+
renderless: __props.renderless
|
|
4582
|
+
}), {
|
|
4583
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
4459
4584
|
_: 3
|
|
4460
4585
|
}, 16, ["as", "renderless"]);
|
|
4461
4586
|
};
|
|
4462
4587
|
}
|
|
4463
4588
|
});
|
|
4464
4589
|
//#endregion
|
|
4465
|
-
//#region src/components/
|
|
4590
|
+
//#region src/components/Button/ButtonLoading.vue
|
|
4466
4591
|
const _sfc_main$15 = /* @__PURE__ */ defineComponent({
|
|
4592
|
+
name: "ButtonLoading",
|
|
4593
|
+
__name: "ButtonLoading",
|
|
4594
|
+
props: {
|
|
4595
|
+
id: { default: () => useId$1() },
|
|
4596
|
+
namespace: { default: "v0:button:root" }
|
|
4597
|
+
},
|
|
4598
|
+
setup(__props) {
|
|
4599
|
+
const root = useButtonRoot(__props.namespace);
|
|
4600
|
+
const ticket = root.single.register({
|
|
4601
|
+
id: __props.id,
|
|
4602
|
+
disabled: true
|
|
4603
|
+
});
|
|
4604
|
+
watch(root.isLoading, (active) => {
|
|
4605
|
+
if (active) {
|
|
4606
|
+
ticket.disabled = false;
|
|
4607
|
+
ticket.select();
|
|
4608
|
+
} else {
|
|
4609
|
+
ticket.disabled = true;
|
|
4610
|
+
const fallback = root.single.seek("first");
|
|
4611
|
+
if (fallback) fallback.select();
|
|
4612
|
+
}
|
|
4613
|
+
}, { immediate: true });
|
|
4614
|
+
onUnmounted(() => ticket.unregister());
|
|
4615
|
+
const slotProps = toRef(() => ({ isSelected: ticket.isSelected.value }));
|
|
4616
|
+
return (_ctx, _cache) => {
|
|
4617
|
+
return renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)));
|
|
4618
|
+
};
|
|
4619
|
+
}
|
|
4620
|
+
});
|
|
4621
|
+
//#endregion
|
|
4622
|
+
//#region src/components/Button/index.ts
|
|
4623
|
+
/**
|
|
4624
|
+
* Button component with sub-components for interactive button controls.
|
|
4625
|
+
*
|
|
4626
|
+
* @see https://0.vuetifyjs.com/components/actions/button
|
|
4627
|
+
*
|
|
4628
|
+
* @example
|
|
4629
|
+
* ```vue
|
|
4630
|
+
* <script setup lang="ts">
|
|
4631
|
+
* import { Button } from '@vuetify/v0'
|
|
4632
|
+
* <\/script>
|
|
4633
|
+
*
|
|
4634
|
+
* <template>
|
|
4635
|
+
* <Button.Root>
|
|
4636
|
+
* <Button.Content>Click me</Button.Content>
|
|
4637
|
+
* </Button.Root>
|
|
4638
|
+
* </template>
|
|
4639
|
+
* ```
|
|
4640
|
+
*/
|
|
4641
|
+
const Button = {
|
|
4642
|
+
Content: _sfc_main$11,
|
|
4643
|
+
Group: _sfc_main$12,
|
|
4644
|
+
HiddenInput: _sfc_main$13,
|
|
4645
|
+
Icon: _sfc_main$14,
|
|
4646
|
+
Loading: _sfc_main$15,
|
|
4647
|
+
Root: _sfc_main$16
|
|
4648
|
+
};
|
|
4649
|
+
//#endregion
|
|
4650
|
+
//#region src/components/Checkbox/CheckboxGroup.vue
|
|
4651
|
+
const [useCheckboxGroup, provideCheckboxGroup] = createContext();
|
|
4652
|
+
const _sfc_main$17 = /* @__PURE__ */ defineComponent({
|
|
4653
|
+
name: "CheckboxGroup",
|
|
4654
|
+
__name: "CheckboxGroup",
|
|
4655
|
+
props: /* @__PURE__ */ mergeModels({
|
|
4656
|
+
namespace: { default: "v0:checkbox:group" },
|
|
4657
|
+
disabled: {
|
|
4658
|
+
type: Boolean,
|
|
4659
|
+
default: false
|
|
4660
|
+
},
|
|
4661
|
+
enroll: {
|
|
4662
|
+
type: Boolean,
|
|
4663
|
+
default: false
|
|
4664
|
+
},
|
|
4665
|
+
mandatory: {
|
|
4666
|
+
type: [Boolean, String],
|
|
4667
|
+
default: false
|
|
4668
|
+
},
|
|
4669
|
+
label: {},
|
|
4670
|
+
ariaLabelledby: {},
|
|
4671
|
+
ariaDescribedby: {},
|
|
4672
|
+
as: { default: "div" },
|
|
4673
|
+
renderless: { type: Boolean }
|
|
4674
|
+
}, {
|
|
4675
|
+
"modelValue": {},
|
|
4676
|
+
"modelModifiers": {}
|
|
4677
|
+
}),
|
|
4678
|
+
emits: /* @__PURE__ */ mergeModels(["update:model-value"], ["update:modelValue"]),
|
|
4679
|
+
setup(__props) {
|
|
4680
|
+
const model = useModel(__props, "modelValue");
|
|
4681
|
+
const group = createGroup({
|
|
4682
|
+
disabled: toRef(() => __props.disabled),
|
|
4683
|
+
enroll: __props.enroll,
|
|
4684
|
+
mandatory: __props.mandatory,
|
|
4685
|
+
events: true
|
|
4686
|
+
});
|
|
4687
|
+
useProxyModel(group, model, { multiple: true });
|
|
4688
|
+
provideCheckboxGroup(__props.namespace, group);
|
|
4689
|
+
const slotProps = toRef(() => ({
|
|
4690
|
+
isDisabled: toValue(group.disabled),
|
|
4691
|
+
isNoneSelected: group.isNoneSelected.value,
|
|
4692
|
+
isAllSelected: group.isAllSelected.value,
|
|
4693
|
+
isMixed: group.isMixed.value,
|
|
4694
|
+
select: group.select,
|
|
4695
|
+
unselect: group.unselect,
|
|
4696
|
+
toggle: group.toggle,
|
|
4697
|
+
selectAll: group.selectAll,
|
|
4698
|
+
unselectAll: group.unselectAll,
|
|
4699
|
+
toggleAll: group.toggleAll,
|
|
4700
|
+
attrs: {
|
|
4701
|
+
"role": "group",
|
|
4702
|
+
"aria-label": __props.label || void 0,
|
|
4703
|
+
"aria-labelledby": __props.ariaLabelledby || void 0,
|
|
4704
|
+
"aria-describedby": __props.ariaDescribedby || void 0
|
|
4705
|
+
}
|
|
4706
|
+
}));
|
|
4707
|
+
return (_ctx, _cache) => {
|
|
4708
|
+
return openBlock(), createBlock(unref(_sfc_main), mergeProps(slotProps.value.attrs, {
|
|
4709
|
+
as: __props.as,
|
|
4710
|
+
renderless: __props.renderless
|
|
4711
|
+
}), {
|
|
4712
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
4713
|
+
_: 3
|
|
4714
|
+
}, 16, ["as", "renderless"]);
|
|
4715
|
+
};
|
|
4716
|
+
}
|
|
4717
|
+
});
|
|
4718
|
+
//#endregion
|
|
4719
|
+
//#region src/components/Checkbox/CheckboxRoot.vue
|
|
4720
|
+
const [useCheckboxRoot, provideCheckboxRoot] = createContext();
|
|
4721
|
+
const _sfc_main$20 = /* @__PURE__ */ defineComponent({
|
|
4722
|
+
name: "CheckboxRoot",
|
|
4723
|
+
inheritAttrs: false,
|
|
4724
|
+
__name: "CheckboxRoot",
|
|
4725
|
+
props: /* @__PURE__ */ mergeModels({
|
|
4726
|
+
id: { default: () => useId$1() },
|
|
4727
|
+
label: {},
|
|
4728
|
+
value: {},
|
|
4729
|
+
name: {},
|
|
4730
|
+
form: {},
|
|
4731
|
+
disabled: { default: false },
|
|
4732
|
+
indeterminate: { default: false },
|
|
4733
|
+
namespace: { default: "v0:checkbox:root" },
|
|
4734
|
+
groupNamespace: { default: "v0:checkbox:group" },
|
|
4735
|
+
ariaLabelledby: {},
|
|
4736
|
+
ariaDescribedby: {},
|
|
4737
|
+
ariaInvalid: { type: Boolean },
|
|
4738
|
+
as: { default: "button" },
|
|
4739
|
+
renderless: { type: Boolean }
|
|
4740
|
+
}, {
|
|
4741
|
+
"modelValue": { type: Boolean },
|
|
4742
|
+
"modelModifiers": {}
|
|
4743
|
+
}),
|
|
4744
|
+
emits: /* @__PURE__ */ mergeModels(["update:model-value"], ["update:modelValue"]),
|
|
4745
|
+
setup(__props) {
|
|
4746
|
+
const attrs = useAttrs();
|
|
4747
|
+
let group = null;
|
|
4748
|
+
try {
|
|
4749
|
+
group = useCheckboxGroup(__props.groupNamespace);
|
|
4750
|
+
} catch {}
|
|
4751
|
+
const model = useModel(__props, "modelValue");
|
|
4752
|
+
const ticket = group?.register({
|
|
4753
|
+
id: __props.id,
|
|
4754
|
+
value: __props.value,
|
|
4755
|
+
disabled: __props.disabled,
|
|
4756
|
+
indeterminate: __props.indeterminate
|
|
4757
|
+
});
|
|
4758
|
+
const isChecked = toRef(() => ticket ? toValue(ticket.isSelected) : model.value ?? false);
|
|
4759
|
+
const isMixed = toRef(() => ticket ? toValue(ticket.isMixed) : toValue(__props.indeterminate) ?? false);
|
|
4760
|
+
const isDisabled = toRef(() => group && ticket ? toValue(ticket.disabled) || toValue(group.disabled) : toValue(__props.disabled) ?? false);
|
|
4761
|
+
const dataState = toRef(() => isMixed.value ? "indeterminate" : isChecked.value ? "checked" : "unchecked");
|
|
4762
|
+
function toggle() {
|
|
4763
|
+
if (isDisabled.value) return;
|
|
4764
|
+
if (ticket) ticket.toggle();
|
|
4765
|
+
else model.value = !model.value;
|
|
4766
|
+
}
|
|
4767
|
+
function select() {
|
|
4768
|
+
if (isDisabled.value) return;
|
|
4769
|
+
if (ticket) ticket.select();
|
|
4770
|
+
else model.value = true;
|
|
4771
|
+
}
|
|
4772
|
+
function unselect() {
|
|
4773
|
+
if (isDisabled.value) return;
|
|
4774
|
+
if (ticket) ticket.unselect();
|
|
4775
|
+
else model.value = false;
|
|
4776
|
+
}
|
|
4777
|
+
function mix() {
|
|
4778
|
+
if (isDisabled.value || !ticket) return;
|
|
4779
|
+
ticket.mix();
|
|
4780
|
+
}
|
|
4781
|
+
function unmix() {
|
|
4782
|
+
if (isDisabled.value || !ticket) return;
|
|
4783
|
+
ticket.unmix();
|
|
4784
|
+
}
|
|
4785
|
+
function onClick() {
|
|
4786
|
+
toggle();
|
|
4787
|
+
}
|
|
4788
|
+
function onKeydown(e) {
|
|
4789
|
+
if (e.key !== " ") return;
|
|
4790
|
+
e.preventDefault();
|
|
4791
|
+
toggle();
|
|
4792
|
+
}
|
|
4793
|
+
onUnmounted(() => {
|
|
4794
|
+
if (!ticket || !group) return;
|
|
4795
|
+
group.unregister(ticket.id);
|
|
4796
|
+
});
|
|
4797
|
+
const context = {
|
|
4798
|
+
id: __props.id,
|
|
4799
|
+
label: __props.label,
|
|
4800
|
+
value: __props.value,
|
|
4801
|
+
name: __props.name,
|
|
4802
|
+
form: __props.form,
|
|
4803
|
+
isChecked,
|
|
4804
|
+
isMixed,
|
|
4805
|
+
isDisabled,
|
|
4806
|
+
select,
|
|
4807
|
+
unselect,
|
|
4808
|
+
toggle,
|
|
4809
|
+
mix,
|
|
4810
|
+
unmix
|
|
4811
|
+
};
|
|
4812
|
+
provideCheckboxRoot(__props.namespace, context);
|
|
4813
|
+
const slotProps = toRef(() => ({
|
|
4814
|
+
id: __props.id,
|
|
4815
|
+
label: __props.label,
|
|
4816
|
+
value: __props.value,
|
|
4817
|
+
isChecked: isChecked.value,
|
|
4818
|
+
isMixed: isMixed.value,
|
|
4819
|
+
isDisabled: isDisabled.value,
|
|
4820
|
+
select,
|
|
4821
|
+
unselect,
|
|
4822
|
+
toggle,
|
|
4823
|
+
mix,
|
|
4824
|
+
unmix,
|
|
4825
|
+
attrs: {
|
|
4826
|
+
"type": __props.as === "button" ? "button" : void 0,
|
|
4827
|
+
"role": "checkbox",
|
|
4828
|
+
"aria-checked": isMixed.value ? "mixed" : isChecked.value,
|
|
4829
|
+
"aria-disabled": isDisabled.value || void 0,
|
|
4830
|
+
"aria-label": __props.label || void 0,
|
|
4831
|
+
"aria-labelledby": __props.ariaLabelledby || void 0,
|
|
4832
|
+
"aria-describedby": __props.ariaDescribedby || void 0,
|
|
4833
|
+
"aria-invalid": __props.ariaInvalid || void 0,
|
|
4834
|
+
"tabindex": isDisabled.value ? void 0 : 0,
|
|
4835
|
+
"data-state": dataState.value,
|
|
4836
|
+
"data-disabled": isDisabled.value ? true : void 0
|
|
4837
|
+
}
|
|
4838
|
+
}));
|
|
4839
|
+
return (_ctx, _cache) => {
|
|
4840
|
+
return openBlock(), createElementBlock(Fragment, null, [createVNode(unref(_sfc_main), mergeProps({
|
|
4841
|
+
...unref(attrs),
|
|
4842
|
+
...slotProps.value.attrs
|
|
4843
|
+
}, {
|
|
4844
|
+
as: __props.as,
|
|
4845
|
+
renderless: __props.renderless,
|
|
4846
|
+
onClick,
|
|
4847
|
+
onKeydown
|
|
4848
|
+
}), {
|
|
4849
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
4850
|
+
_: 3
|
|
4851
|
+
}, 16, ["as", "renderless"]), __props.name ? (openBlock(), createBlock(_sfc_main$18, { key: 0 })) : createCommentVNode("v-if", true)], 64);
|
|
4852
|
+
};
|
|
4853
|
+
}
|
|
4854
|
+
});
|
|
4855
|
+
//#endregion
|
|
4856
|
+
//#region src/components/Checkbox/CheckboxHiddenInput.vue
|
|
4857
|
+
const _hoisted_1$4 = [
|
|
4858
|
+
"checked",
|
|
4859
|
+
"disabled",
|
|
4860
|
+
"form",
|
|
4861
|
+
"name",
|
|
4862
|
+
"value"
|
|
4863
|
+
];
|
|
4864
|
+
const visuallyHiddenStyle$3 = {
|
|
4865
|
+
position: "absolute",
|
|
4866
|
+
width: "1px",
|
|
4867
|
+
height: "1px",
|
|
4868
|
+
padding: "0",
|
|
4869
|
+
margin: "-1px",
|
|
4870
|
+
overflow: "hidden",
|
|
4871
|
+
clip: "rect(0, 0, 0, 0)",
|
|
4872
|
+
whiteSpace: "nowrap",
|
|
4873
|
+
border: "0"
|
|
4874
|
+
};
|
|
4875
|
+
const _sfc_main$18 = /* @__PURE__ */ defineComponent({
|
|
4876
|
+
name: "CheckboxHiddenInput",
|
|
4877
|
+
__name: "CheckboxHiddenInput",
|
|
4878
|
+
props: {
|
|
4879
|
+
namespace: { default: "v0:checkbox:root" },
|
|
4880
|
+
name: {},
|
|
4881
|
+
value: {},
|
|
4882
|
+
form: {}
|
|
4883
|
+
},
|
|
4884
|
+
setup(__props) {
|
|
4885
|
+
const root = useCheckboxRoot(__props.namespace);
|
|
4886
|
+
const name = toRef(() => __props.name ?? root.name);
|
|
4887
|
+
const form = toRef(() => __props.form ?? root.form);
|
|
4888
|
+
const value = toRef(() => {
|
|
4889
|
+
const v = __props.value ?? root.value ?? "on";
|
|
4890
|
+
if (/* @__PURE__ */ isNullOrUndefined(v)) return "on";
|
|
4891
|
+
if (/* @__PURE__ */ isObject(v)) return JSON.stringify(v);
|
|
4892
|
+
return String(v);
|
|
4893
|
+
});
|
|
4894
|
+
const isChecked = root.isChecked;
|
|
4895
|
+
const isDisabled = root.isDisabled;
|
|
4896
|
+
return (_ctx, _cache) => {
|
|
4897
|
+
return openBlock(), createElementBlock("input", {
|
|
4898
|
+
checked: unref(isChecked),
|
|
4899
|
+
disabled: unref(isDisabled),
|
|
4900
|
+
form: form.value,
|
|
4901
|
+
inert: "",
|
|
4902
|
+
name: name.value,
|
|
4903
|
+
style: visuallyHiddenStyle$3,
|
|
4904
|
+
tabindex: "-1",
|
|
4905
|
+
type: "checkbox",
|
|
4906
|
+
value: value.value
|
|
4907
|
+
}, null, 8, _hoisted_1$4);
|
|
4908
|
+
};
|
|
4909
|
+
}
|
|
4910
|
+
});
|
|
4911
|
+
//#endregion
|
|
4912
|
+
//#region src/components/Checkbox/CheckboxIndicator.vue
|
|
4913
|
+
const _sfc_main$19 = /* @__PURE__ */ defineComponent({
|
|
4914
|
+
name: "CheckboxIndicator",
|
|
4915
|
+
__name: "CheckboxIndicator",
|
|
4916
|
+
props: {
|
|
4917
|
+
namespace: { default: "v0:checkbox:root" },
|
|
4918
|
+
as: { default: "span" },
|
|
4919
|
+
renderless: { type: Boolean }
|
|
4920
|
+
},
|
|
4921
|
+
setup(__props) {
|
|
4922
|
+
const root = useCheckboxRoot(__props.namespace);
|
|
4923
|
+
const isChecked = toRef(() => toValue(root.isChecked));
|
|
4924
|
+
const isMixed = toRef(() => toValue(root.isMixed));
|
|
4925
|
+
const isVisible = toRef(() => isChecked.value || isMixed.value);
|
|
4926
|
+
const dataState = toRef(() => isMixed.value ? "indeterminate" : isChecked.value ? "checked" : "unchecked");
|
|
4927
|
+
const slotProps = toRef(() => ({
|
|
4928
|
+
isChecked: isChecked.value,
|
|
4929
|
+
isMixed: isMixed.value,
|
|
4930
|
+
attrs: {
|
|
4931
|
+
"data-state": dataState.value,
|
|
4932
|
+
"style": { visibility: isVisible.value ? "visible" : "hidden" }
|
|
4933
|
+
}
|
|
4934
|
+
}));
|
|
4935
|
+
return (_ctx, _cache) => {
|
|
4936
|
+
return openBlock(), createBlock(unref(_sfc_main), mergeProps(slotProps.value.attrs, {
|
|
4937
|
+
as: __props.as,
|
|
4938
|
+
renderless: __props.renderless
|
|
4939
|
+
}), {
|
|
4940
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
4941
|
+
_: 3
|
|
4942
|
+
}, 16, ["as", "renderless"]);
|
|
4943
|
+
};
|
|
4944
|
+
}
|
|
4945
|
+
});
|
|
4946
|
+
//#endregion
|
|
4947
|
+
//#region src/components/Checkbox/CheckboxSelectAll.vue
|
|
4948
|
+
const _sfc_main$21 = /* @__PURE__ */ defineComponent({
|
|
4467
4949
|
name: "CheckboxSelectAll",
|
|
4468
4950
|
inheritAttrs: false,
|
|
4469
4951
|
__name: "CheckboxSelectAll",
|
|
@@ -4573,16 +5055,16 @@ const _sfc_main$15 = /* @__PURE__ */ defineComponent({
|
|
|
4573
5055
|
* ```
|
|
4574
5056
|
*/
|
|
4575
5057
|
const Checkbox = {
|
|
4576
|
-
Group: _sfc_main$
|
|
4577
|
-
HiddenInput: _sfc_main$
|
|
4578
|
-
Indicator: _sfc_main$
|
|
4579
|
-
Root: _sfc_main$
|
|
4580
|
-
SelectAll: _sfc_main$
|
|
5058
|
+
Group: _sfc_main$17,
|
|
5059
|
+
HiddenInput: _sfc_main$18,
|
|
5060
|
+
Indicator: _sfc_main$19,
|
|
5061
|
+
Root: _sfc_main$20,
|
|
5062
|
+
SelectAll: _sfc_main$21
|
|
4581
5063
|
};
|
|
4582
5064
|
//#endregion
|
|
4583
5065
|
//#region src/components/Dialog/DialogRoot.vue
|
|
4584
5066
|
const [useDialogContext, provideDialogContext] = createContext();
|
|
4585
|
-
const _sfc_main$
|
|
5067
|
+
const _sfc_main$26 = /* @__PURE__ */ defineComponent({
|
|
4586
5068
|
name: "DialogRoot",
|
|
4587
5069
|
__name: "DialogRoot",
|
|
4588
5070
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -4636,7 +5118,7 @@ const _sfc_main$20 = /* @__PURE__ */ defineComponent({
|
|
|
4636
5118
|
});
|
|
4637
5119
|
//#endregion
|
|
4638
5120
|
//#region src/components/Dialog/DialogClose.vue
|
|
4639
|
-
const _sfc_main$
|
|
5121
|
+
const _sfc_main$23 = /* @__PURE__ */ defineComponent({
|
|
4640
5122
|
name: "DialogClose",
|
|
4641
5123
|
__name: "DialogClose",
|
|
4642
5124
|
props: {
|
|
@@ -4729,10 +5211,10 @@ function createPagination(_options = {}) {
|
|
|
4729
5211
|
else if (value > pages.value) page.value = Math.max(1, pages.value);
|
|
4730
5212
|
else page.value = value;
|
|
4731
5213
|
}
|
|
4732
|
-
const isFirst =
|
|
4733
|
-
const isLast =
|
|
4734
|
-
const pageStart =
|
|
4735
|
-
const pageStop =
|
|
5214
|
+
const isFirst = toRef(() => page.value <= 1);
|
|
5215
|
+
const isLast = toRef(() => page.value >= pages.value);
|
|
5216
|
+
const pageStart = toRef(() => (page.value - 1) * toValue(_itemsPerPage));
|
|
5217
|
+
const pageStop = toRef(() => Math.min(pageStart.value + toValue(_itemsPerPage), toValue(_size)));
|
|
4736
5218
|
function toPage(value) {
|
|
4737
5219
|
return {
|
|
4738
5220
|
type: "page",
|
|
@@ -5323,8 +5805,8 @@ function createDataTable(options) {
|
|
|
5323
5805
|
function setNone() {
|
|
5324
5806
|
group.unselect(key);
|
|
5325
5807
|
group.unmix(key);
|
|
5326
|
-
const
|
|
5327
|
-
if (
|
|
5808
|
+
const index = order.indexOf(key);
|
|
5809
|
+
if (index !== -1) order.splice(index, 1);
|
|
5328
5810
|
}
|
|
5329
5811
|
if (!isAsc && !isDesc) {
|
|
5330
5812
|
clearOthers();
|
|
@@ -5832,24 +6314,22 @@ function createBreakpoints(_options = {}) {
|
|
|
5832
6314
|
const mdAndUp = shallowRef(initialIndex >= 2);
|
|
5833
6315
|
const lgAndUp = shallowRef(initialIndex >= 3);
|
|
5834
6316
|
const xlAndUp = shallowRef(initialIndex >= 4);
|
|
5835
|
-
const xxlAndUp = shallowRef(initialIndex >= 5);
|
|
5836
6317
|
const smAndDown = shallowRef(initialIndex <= 1);
|
|
5837
6318
|
const mdAndDown = shallowRef(initialIndex <= 2);
|
|
5838
6319
|
const lgAndDown = shallowRef(initialIndex <= 3);
|
|
5839
6320
|
const xlAndDown = shallowRef(initialIndex <= 4);
|
|
5840
|
-
const xxlAndDown = shallowRef(initialIndex <= 5);
|
|
5841
6321
|
function update() {
|
|
5842
6322
|
if (!IN_BROWSER) return;
|
|
5843
6323
|
width.value = window.innerWidth;
|
|
5844
6324
|
height.value = window.innerHeight;
|
|
5845
6325
|
let current = "xs";
|
|
5846
|
-
for (let i = sorted.length - 1; i >= 0; i--) if (width
|
|
6326
|
+
for (let i = sorted.length - 1; i >= 0; i--) if (window.matchMedia(`(min-width: ${sorted[i][1]}px)`).matches) {
|
|
5847
6327
|
current = sorted[i][0];
|
|
5848
6328
|
break;
|
|
5849
6329
|
}
|
|
5850
6330
|
name.value = current;
|
|
5851
6331
|
const index = names.indexOf(current);
|
|
5852
|
-
isMobile.value = width.
|
|
6332
|
+
isMobile.value = /* @__PURE__ */ isNumber(mb) ? !window.matchMedia(`(min-width: ${mb}px)`).matches : index < names.indexOf(mobileBreakpoint);
|
|
5853
6333
|
xs.value = index === 0;
|
|
5854
6334
|
sm.value = index === 1;
|
|
5855
6335
|
md.value = index === 2;
|
|
@@ -5860,12 +6340,10 @@ function createBreakpoints(_options = {}) {
|
|
|
5860
6340
|
mdAndUp.value = index >= 2;
|
|
5861
6341
|
lgAndUp.value = index >= 3;
|
|
5862
6342
|
xlAndUp.value = index >= 4;
|
|
5863
|
-
xxlAndUp.value = index >= 5;
|
|
5864
6343
|
smAndDown.value = index <= 1;
|
|
5865
6344
|
mdAndDown.value = index <= 2;
|
|
5866
6345
|
lgAndDown.value = index <= 3;
|
|
5867
6346
|
xlAndDown.value = index <= 4;
|
|
5868
|
-
xxlAndDown.value = index <= 5;
|
|
5869
6347
|
}
|
|
5870
6348
|
return {
|
|
5871
6349
|
breakpoints,
|
|
@@ -5884,12 +6362,10 @@ function createBreakpoints(_options = {}) {
|
|
|
5884
6362
|
mdAndUp: readonly(mdAndUp),
|
|
5885
6363
|
lgAndUp: readonly(lgAndUp),
|
|
5886
6364
|
xlAndUp: readonly(xlAndUp),
|
|
5887
|
-
xxlAndUp: readonly(xxlAndUp),
|
|
5888
6365
|
smAndDown: readonly(smAndDown),
|
|
5889
6366
|
mdAndDown: readonly(mdAndDown),
|
|
5890
6367
|
lgAndDown: readonly(lgAndDown),
|
|
5891
6368
|
xlAndDown: readonly(xlAndDown),
|
|
5892
|
-
xxlAndDown: readonly(xxlAndDown),
|
|
5893
6369
|
ssr: isSSR,
|
|
5894
6370
|
update
|
|
5895
6371
|
};
|
|
@@ -5903,8 +6379,8 @@ function createBreakpointsFallback(options = {}) {
|
|
|
5903
6379
|
name: readonly(shallowRef("xs")),
|
|
5904
6380
|
width: readonly(shallowRef(0)),
|
|
5905
6381
|
height: readonly(shallowRef(0)),
|
|
5906
|
-
isMobile: readonly(shallowRef(
|
|
5907
|
-
xs: readonly(shallowRef(
|
|
6382
|
+
isMobile: readonly(shallowRef(true)),
|
|
6383
|
+
xs: readonly(shallowRef(true)),
|
|
5908
6384
|
sm: readonly(shallowRef(false)),
|
|
5909
6385
|
md: readonly(shallowRef(false)),
|
|
5910
6386
|
lg: readonly(shallowRef(false)),
|
|
@@ -5914,12 +6390,10 @@ function createBreakpointsFallback(options = {}) {
|
|
|
5914
6390
|
mdAndUp: readonly(shallowRef(false)),
|
|
5915
6391
|
lgAndUp: readonly(shallowRef(false)),
|
|
5916
6392
|
xlAndUp: readonly(shallowRef(false)),
|
|
5917
|
-
|
|
5918
|
-
|
|
5919
|
-
|
|
5920
|
-
|
|
5921
|
-
xlAndDown: readonly(shallowRef(false)),
|
|
5922
|
-
xxlAndDown: readonly(shallowRef(false)),
|
|
6393
|
+
smAndDown: readonly(shallowRef(true)),
|
|
6394
|
+
mdAndDown: readonly(shallowRef(true)),
|
|
6395
|
+
lgAndDown: readonly(shallowRef(true)),
|
|
6396
|
+
xlAndDown: readonly(shallowRef(true)),
|
|
5923
6397
|
ssr: false,
|
|
5924
6398
|
update: () => {}
|
|
5925
6399
|
};
|
|
@@ -7014,11 +7488,16 @@ function useElementIntersection(target, options = {}) {
|
|
|
7014
7488
|
* ```
|
|
7015
7489
|
*/
|
|
7016
7490
|
function useLazy(active, options = {}) {
|
|
7017
|
-
const { eager = false } = options;
|
|
7491
|
+
const { eager = false, delay = 0 } = options;
|
|
7018
7492
|
const isBooted = shallowRef(false);
|
|
7019
7493
|
const hasContent = toRef(() => isBooted.value || toValue(eager) || toValue(active));
|
|
7494
|
+
const timer = delay > 0 ? useTimer(() => {
|
|
7495
|
+
isBooted.value = true;
|
|
7496
|
+
}, { duration: delay }) : void 0;
|
|
7020
7497
|
const stop = watch(() => toValue(active), (value) => {
|
|
7021
|
-
if (value)
|
|
7498
|
+
if (value) if (timer) timer.start();
|
|
7499
|
+
else isBooted.value = true;
|
|
7500
|
+
else timer?.stop();
|
|
7022
7501
|
}, { immediate: true });
|
|
7023
7502
|
function reset() {
|
|
7024
7503
|
isBooted.value = false;
|
|
@@ -7079,7 +7558,7 @@ function useLazy(active, options = {}) {
|
|
|
7079
7558
|
function useMediaQuery(query) {
|
|
7080
7559
|
const matches = shallowRef(false);
|
|
7081
7560
|
const mediaQueryList = shallowRef(null);
|
|
7082
|
-
const resolvedQuery =
|
|
7561
|
+
const resolvedQuery = toRef(() => toValue(query));
|
|
7083
7562
|
const hydration = useHydration();
|
|
7084
7563
|
let cleanup = null;
|
|
7085
7564
|
function update() {
|
|
@@ -7821,55 +8300,771 @@ function createNested(_options = {}) {
|
|
|
7821
8300
|
unselect,
|
|
7822
8301
|
toggle,
|
|
7823
8302
|
register,
|
|
7824
|
-
unregister,
|
|
7825
|
-
offboard,
|
|
8303
|
+
unregister,
|
|
8304
|
+
offboard,
|
|
8305
|
+
onboard,
|
|
8306
|
+
clear,
|
|
8307
|
+
reset,
|
|
8308
|
+
get size() {
|
|
8309
|
+
return group.size;
|
|
8310
|
+
}
|
|
8311
|
+
};
|
|
8312
|
+
return context;
|
|
8313
|
+
}
|
|
8314
|
+
/**
|
|
8315
|
+
* Creates a new nested context with provide/inject pattern.
|
|
8316
|
+
*
|
|
8317
|
+
* @param options The options for the nested context.
|
|
8318
|
+
* @returns A trinity tuple [useNested, provideNested, defaultNested]
|
|
8319
|
+
*
|
|
8320
|
+
* @see https://0.vuetifyjs.com/composables/selection/use-nested
|
|
8321
|
+
*
|
|
8322
|
+
* @example
|
|
8323
|
+
* ```ts
|
|
8324
|
+
* import { createNestedContext } from '@vuetify/v0'
|
|
8325
|
+
*
|
|
8326
|
+
* export const [useTree, provideTree, tree] = createNestedContext()
|
|
8327
|
+
*
|
|
8328
|
+
* // In parent: provideTree()
|
|
8329
|
+
* // In child: const tree = useTree()
|
|
8330
|
+
* ```
|
|
8331
|
+
*/
|
|
8332
|
+
function createNestedContext(_options = {}) {
|
|
8333
|
+
const { namespace = "v0:nested", ...options } = _options;
|
|
8334
|
+
const [useNestedContext, _provideNestedContext] = createContext(namespace);
|
|
8335
|
+
const context = createNested(options);
|
|
8336
|
+
function provideNestedContext(_context = context, app) {
|
|
8337
|
+
return _provideNestedContext(_context, app);
|
|
8338
|
+
}
|
|
8339
|
+
return createTrinity(useNestedContext, provideNestedContext, context);
|
|
8340
|
+
}
|
|
8341
|
+
/**
|
|
8342
|
+
* Returns the current nested instance from context.
|
|
8343
|
+
*
|
|
8344
|
+
* @param namespace The namespace for the nested context. Defaults to `'v0:nested'`.
|
|
8345
|
+
* @returns The current nested instance.
|
|
8346
|
+
*
|
|
8347
|
+
* @see https://0.vuetifyjs.com/composables/selection/use-nested
|
|
8348
|
+
*/
|
|
8349
|
+
function useNested(namespace = "v0:nested") {
|
|
8350
|
+
return useContext(namespace);
|
|
8351
|
+
}
|
|
8352
|
+
//#endregion
|
|
8353
|
+
//#region src/composables/createQueue/index.ts
|
|
8354
|
+
/**
|
|
8355
|
+
* @module createQueue
|
|
8356
|
+
*
|
|
8357
|
+
* @remarks
|
|
8358
|
+
* A queue composable for managing time-based collections with:
|
|
8359
|
+
* - Automatic timeout-based removal
|
|
8360
|
+
* - Pause/resume functionality
|
|
8361
|
+
* - FIFO (First In, First Out) ordering
|
|
8362
|
+
* - Manual dismissal support
|
|
8363
|
+
* - Queue progression management
|
|
8364
|
+
*
|
|
8365
|
+
* Built on top of createRegistry, the queue automatically manages timeouts for tickets,
|
|
8366
|
+
* ensuring only the first ticket in the queue is active at any time. When a ticket
|
|
8367
|
+
* expires or is removed, the next ticket in the queue automatically becomes active.
|
|
8368
|
+
*/
|
|
8369
|
+
/**
|
|
8370
|
+
* Creates a new queue instance
|
|
8371
|
+
*
|
|
8372
|
+
* @param options The options for the queue instance
|
|
8373
|
+
* @template Z The type of queue ticket that extends QueueTicket. Use this to add custom properties to tickets.
|
|
8374
|
+
* @template E The type of queue context that extends QueueContext<Z>. Use this when extending the queue with additional methods.
|
|
8375
|
+
* @returns A new queue instance
|
|
8376
|
+
*
|
|
8377
|
+
* @see https://0.vuetifyjs.com/composables/registration/create-queue
|
|
8378
|
+
*
|
|
8379
|
+
* @example
|
|
8380
|
+
* ```ts
|
|
8381
|
+
* import { useQueue } from '@vuetify/v0'
|
|
8382
|
+
*
|
|
8383
|
+
* const queue = useQueue()
|
|
8384
|
+
*
|
|
8385
|
+
* // Register an ticket with default timeout (3000ms)
|
|
8386
|
+
* const ticket1 = queue.register({ value: 'Ticket 1' })
|
|
8387
|
+
*
|
|
8388
|
+
* // Register an ticket with custom timeout
|
|
8389
|
+
* const ticket2 = queue.register({ value: 'Ticket 2', timeout: 5000 })
|
|
8390
|
+
*
|
|
8391
|
+
* // Register a persistent ticket that must be manually dismissed
|
|
8392
|
+
* const ticket3 = queue.register({ value: 'Ticket 3', timeout: -1 })
|
|
8393
|
+
*
|
|
8394
|
+
* // Dismiss an ticket using the convenience method
|
|
8395
|
+
* ticket3.dismiss()
|
|
8396
|
+
*
|
|
8397
|
+
* console.log(queue.size) // 2
|
|
8398
|
+
* ```
|
|
8399
|
+
*/
|
|
8400
|
+
function createQueue(_options = {}) {
|
|
8401
|
+
const { timeout: _timeout = 3e3, ...options } = _options;
|
|
8402
|
+
const registry = createRegistry({
|
|
8403
|
+
...options,
|
|
8404
|
+
events: true
|
|
8405
|
+
});
|
|
8406
|
+
const timers = /* @__PURE__ */ new Map();
|
|
8407
|
+
function createTicketTimer(ticket) {
|
|
8408
|
+
if (/* @__PURE__ */ isUndefined(ticket.timeout) || ticket.timeout < 0 || ticket.isPaused) return;
|
|
8409
|
+
const timer = useTimer(() => {
|
|
8410
|
+
timers.delete(ticket.id);
|
|
8411
|
+
registry.unregister(ticket.id);
|
|
8412
|
+
resume();
|
|
8413
|
+
}, { duration: ticket.timeout });
|
|
8414
|
+
timers.set(ticket.id, timer);
|
|
8415
|
+
timer.start();
|
|
8416
|
+
}
|
|
8417
|
+
function stopTimer(id) {
|
|
8418
|
+
const timer = timers.get(id);
|
|
8419
|
+
if (timer) {
|
|
8420
|
+
timer.stop();
|
|
8421
|
+
timers.delete(id);
|
|
8422
|
+
}
|
|
8423
|
+
}
|
|
8424
|
+
function register(registration = {}) {
|
|
8425
|
+
const id = registration.id ?? /* @__PURE__ */ useId();
|
|
8426
|
+
const timeout = Object.prototype.hasOwnProperty.call(registration, "timeout") ? registration.timeout : _timeout;
|
|
8427
|
+
const ticket = {
|
|
8428
|
+
...registration,
|
|
8429
|
+
id,
|
|
8430
|
+
timeout,
|
|
8431
|
+
isPaused: registry.size > 0,
|
|
8432
|
+
dismiss: () => unregister(id)
|
|
8433
|
+
};
|
|
8434
|
+
const registered = registry.register(ticket);
|
|
8435
|
+
createTicketTimer(registered);
|
|
8436
|
+
return registered;
|
|
8437
|
+
}
|
|
8438
|
+
function unregister(id) {
|
|
8439
|
+
const ticket = /* @__PURE__ */ isUndefined(id) ? registry.seek("first") : registry.get(id);
|
|
8440
|
+
if (!ticket) return void 0;
|
|
8441
|
+
const wasFirst = ticket.index === 0;
|
|
8442
|
+
stopTimer(ticket.id);
|
|
8443
|
+
registry.unregister(ticket.id);
|
|
8444
|
+
if (wasFirst) resume();
|
|
8445
|
+
return ticket;
|
|
8446
|
+
}
|
|
8447
|
+
function offboard(ids) {
|
|
8448
|
+
let hadFirst = false;
|
|
8449
|
+
for (const id of ids) {
|
|
8450
|
+
const ticket = registry.get(id);
|
|
8451
|
+
if (!ticket) continue;
|
|
8452
|
+
if (ticket.index === 0) hadFirst = true;
|
|
8453
|
+
stopTimer(ticket.id);
|
|
8454
|
+
}
|
|
8455
|
+
registry.offboard(ids);
|
|
8456
|
+
if (hadFirst) resume();
|
|
8457
|
+
}
|
|
8458
|
+
function pause() {
|
|
8459
|
+
const ticket = registry.seek("first");
|
|
8460
|
+
if (!ticket || ticket.isPaused) return void 0;
|
|
8461
|
+
timers.get(ticket.id)?.pause();
|
|
8462
|
+
return registry.upsert(ticket.id, { isPaused: true });
|
|
8463
|
+
}
|
|
8464
|
+
function resume() {
|
|
8465
|
+
const ticket = registry.seek("first");
|
|
8466
|
+
if (!ticket || ticket.index !== 0 || !ticket.isPaused) return void 0;
|
|
8467
|
+
const updated = registry.upsert(ticket.id, { isPaused: false });
|
|
8468
|
+
const timer = timers.get(updated.id);
|
|
8469
|
+
if (timer) timer.start();
|
|
8470
|
+
else createTicketTimer(updated);
|
|
8471
|
+
return updated;
|
|
8472
|
+
}
|
|
8473
|
+
function clear() {
|
|
8474
|
+
for (const timer of timers.values()) timer.stop();
|
|
8475
|
+
timers.clear();
|
|
8476
|
+
registry.clear();
|
|
8477
|
+
}
|
|
8478
|
+
function dispose() {
|
|
8479
|
+
clear();
|
|
8480
|
+
registry.dispose();
|
|
8481
|
+
}
|
|
8482
|
+
onScopeDispose(dispose, true);
|
|
8483
|
+
function onboard(registrations) {
|
|
8484
|
+
return registry.batch(() => registrations.map((registration) => register(registration)));
|
|
8485
|
+
}
|
|
8486
|
+
return {
|
|
8487
|
+
...registry,
|
|
8488
|
+
register,
|
|
8489
|
+
unregister,
|
|
8490
|
+
onboard,
|
|
8491
|
+
offboard,
|
|
8492
|
+
pause,
|
|
8493
|
+
resume,
|
|
8494
|
+
clear,
|
|
8495
|
+
dispose,
|
|
8496
|
+
get size() {
|
|
8497
|
+
return registry.size;
|
|
8498
|
+
}
|
|
8499
|
+
};
|
|
8500
|
+
}
|
|
8501
|
+
/**
|
|
8502
|
+
* Creates a new queue context.
|
|
8503
|
+
*
|
|
8504
|
+
* @param options The options for the queue context.
|
|
8505
|
+
* @template Z The type of the queue ticket.
|
|
8506
|
+
* @template E The type of the queue context.
|
|
8507
|
+
* @returns A new queue context.
|
|
8508
|
+
*
|
|
8509
|
+
* @see https://0.vuetifyjs.com/composables/registration/create-queue
|
|
8510
|
+
*
|
|
8511
|
+
* @example
|
|
8512
|
+
* ```ts
|
|
8513
|
+
* import { createQueueContext } from '@vuetify/v0'
|
|
8514
|
+
*
|
|
8515
|
+
* export const [useQueue, provideQueue, context] = createQueueContext({
|
|
8516
|
+
* timeout: 5000,
|
|
8517
|
+
* })
|
|
8518
|
+
* ```
|
|
8519
|
+
*/
|
|
8520
|
+
function createQueueContext(_options = {}) {
|
|
8521
|
+
const { namespace = "v0:queue", ...options } = _options;
|
|
8522
|
+
const [useQueueContext, _provideQueueContext] = createContext(namespace);
|
|
8523
|
+
const context = createQueue(options);
|
|
8524
|
+
function provideQueueContext(_context = context, app) {
|
|
8525
|
+
return _provideQueueContext(_context, app);
|
|
8526
|
+
}
|
|
8527
|
+
return createTrinity(useQueueContext, provideQueueContext, context);
|
|
8528
|
+
}
|
|
8529
|
+
/**
|
|
8530
|
+
* Returns the current queue instance.
|
|
8531
|
+
*
|
|
8532
|
+
* @param namespace The namespace for the queue context. Defaults to `'v0:queue'`.
|
|
8533
|
+
* @returns The current queue instance.
|
|
8534
|
+
*
|
|
8535
|
+
* @see https://0.vuetifyjs.com/composables/registration/create-queue
|
|
8536
|
+
*
|
|
8537
|
+
* @example
|
|
8538
|
+
* ```vue
|
|
8539
|
+
* <script setup lang="ts">
|
|
8540
|
+
* import { useQueue } from '@vuetify/v0'
|
|
8541
|
+
*
|
|
8542
|
+
* const queue = useQueue()
|
|
8543
|
+
* <\/script>
|
|
8544
|
+
* ```
|
|
8545
|
+
*/
|
|
8546
|
+
function useQueue(namespace = "v0:queue") {
|
|
8547
|
+
return useContext(namespace);
|
|
8548
|
+
}
|
|
8549
|
+
//#endregion
|
|
8550
|
+
//#region src/composables/useNotifications/index.ts
|
|
8551
|
+
/**
|
|
8552
|
+
* @module useNotifications
|
|
8553
|
+
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications
|
|
8554
|
+
*
|
|
8555
|
+
* @remarks
|
|
8556
|
+
* Notification management composable built on createRegistry and createQueue.
|
|
8557
|
+
* Registry stores the full notification lifecycle (permanent record).
|
|
8558
|
+
* Queue manages the display surface (toasts) with FIFO ordering and auto-dismiss.
|
|
8559
|
+
*
|
|
8560
|
+
* Supports:
|
|
8561
|
+
* - Push notifications with severity levels and configurable timeouts
|
|
8562
|
+
* - State mutations: read, seen, archived, snoozed
|
|
8563
|
+
* - Bulk operations: readAll, archiveAll, clear
|
|
8564
|
+
* - Toast queue with pause/resume and auto-dismiss
|
|
8565
|
+
* - Adapter integration via event system
|
|
8566
|
+
* - Plugin installation via createNotificationsPlugin
|
|
8567
|
+
*/
|
|
8568
|
+
function createNotifications(options = {}) {
|
|
8569
|
+
const { timeout = 3e3, ...registryOptions } = options;
|
|
8570
|
+
const registry = createRegistry({
|
|
8571
|
+
...registryOptions,
|
|
8572
|
+
events: true,
|
|
8573
|
+
reactive: true
|
|
8574
|
+
});
|
|
8575
|
+
const queue = createQueue({
|
|
8576
|
+
timeout,
|
|
8577
|
+
events: true,
|
|
8578
|
+
reactive: true
|
|
8579
|
+
});
|
|
8580
|
+
registry.on("unregister:ticket", (ticket) => {
|
|
8581
|
+
if (queue.has(ticket.id)) queue.unregister(ticket.id);
|
|
8582
|
+
});
|
|
8583
|
+
/**
|
|
8584
|
+
* Build a full {@link NotificationTicket} from raw input
|
|
8585
|
+
*
|
|
8586
|
+
* @param input The notification input to hydrate.
|
|
8587
|
+
* @returns A partial ticket with timestamps, lifecycle methods, and an ID.
|
|
8588
|
+
* @internal Used by {@link send}, {@link register}, and {@link onboard}.
|
|
8589
|
+
*/
|
|
8590
|
+
function hydrate(input) {
|
|
8591
|
+
const id = input.id ?? /* @__PURE__ */ useId();
|
|
8592
|
+
const now = /* @__PURE__ */ new Date();
|
|
8593
|
+
return {
|
|
8594
|
+
...input,
|
|
8595
|
+
id,
|
|
8596
|
+
createdAt: now,
|
|
8597
|
+
readAt: null,
|
|
8598
|
+
seenAt: null,
|
|
8599
|
+
archivedAt: null,
|
|
8600
|
+
snoozedUntil: null,
|
|
8601
|
+
read: () => read(id),
|
|
8602
|
+
unread: () => unread(id),
|
|
8603
|
+
seen: () => seen(id),
|
|
8604
|
+
archive: () => archive(id),
|
|
8605
|
+
unarchive: () => unarchive(id),
|
|
8606
|
+
snooze: (until) => snooze(id, until),
|
|
8607
|
+
wake: () => wake(id),
|
|
8608
|
+
dismiss: () => queue.unregister(id)
|
|
8609
|
+
};
|
|
8610
|
+
}
|
|
8611
|
+
/**
|
|
8612
|
+
* Create a notification and enqueue it for toast display
|
|
8613
|
+
*
|
|
8614
|
+
* @param input The notification input to create.
|
|
8615
|
+
* @returns The hydrated notification ticket.
|
|
8616
|
+
* @remarks Hydrates the input with timestamps and lifecycle methods, registers
|
|
8617
|
+
* it in the registry, adds it to the display queue, and emits
|
|
8618
|
+
* `notification:received`. The ticket auto-dismisses after the configured
|
|
8619
|
+
* timeout unless paused.
|
|
8620
|
+
*
|
|
8621
|
+
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications#send
|
|
8622
|
+
*
|
|
8623
|
+
* @example
|
|
8624
|
+
* ```ts
|
|
8625
|
+
* import { useNotifications } from '@vuetify/v0'
|
|
8626
|
+
*
|
|
8627
|
+
* const notifications = useNotifications()
|
|
8628
|
+
*
|
|
8629
|
+
* // Basic toast
|
|
8630
|
+
* notifications.send({ subject: 'Changes saved', severity: 'success' })
|
|
8631
|
+
*
|
|
8632
|
+
* // With custom timeout
|
|
8633
|
+
* const ticket = notifications.send({ subject: 'Connection lost', severity: 'error', timeout: 10000 })
|
|
8634
|
+
*
|
|
8635
|
+
* console.log(ticket.id) // 'generated-id'
|
|
8636
|
+
* console.log(ticket.createdAt) // Date
|
|
8637
|
+
* console.log(ticket.readAt) // null
|
|
8638
|
+
*
|
|
8639
|
+
* // Ticket convenience methods
|
|
8640
|
+
* ticket.read() // marks as read
|
|
8641
|
+
* ticket.dismiss() // removes from toast queue, keeps in registry
|
|
8642
|
+
* ```
|
|
8643
|
+
*/
|
|
8644
|
+
function send(input) {
|
|
8645
|
+
const ticket = registry.register(hydrate(input));
|
|
8646
|
+
queue.register(/* @__PURE__ */ isUndefined(input.timeout) ? { id: ticket.id } : {
|
|
8647
|
+
id: ticket.id,
|
|
8648
|
+
timeout: input.timeout
|
|
8649
|
+
});
|
|
8650
|
+
registry.emit("notification:received", ticket);
|
|
8651
|
+
return ticket;
|
|
8652
|
+
}
|
|
8653
|
+
/**
|
|
8654
|
+
* Register a notification in the registry without adding it to the toast queue
|
|
8655
|
+
*
|
|
8656
|
+
* @param input The notification input to register.
|
|
8657
|
+
* @returns The hydrated notification ticket.
|
|
8658
|
+
* @remarks Overrides the base registry `register` to hydrate the input with
|
|
8659
|
+
* timestamps and lifecycle methods. Use for historical or pre-existing items
|
|
8660
|
+
* that should appear in an inbox but not pop up as toasts.
|
|
8661
|
+
*
|
|
8662
|
+
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications#register
|
|
8663
|
+
*
|
|
8664
|
+
* @example
|
|
8665
|
+
* ```ts
|
|
8666
|
+
* import { useNotifications } from '@vuetify/v0'
|
|
8667
|
+
*
|
|
8668
|
+
* const notifications = useNotifications()
|
|
8669
|
+
*
|
|
8670
|
+
* // Register a historical item (appears in inbox, not as toast)
|
|
8671
|
+
* const ticket = notifications.register({ id: 'old-1', subject: 'Deployed v2.1' })
|
|
8672
|
+
*
|
|
8673
|
+
* console.log(ticket.createdAt) // Date
|
|
8674
|
+
* console.log(ticket.readAt) // null
|
|
8675
|
+
*
|
|
8676
|
+
* // Lifecycle methods work the same as send()
|
|
8677
|
+
* ticket.read()
|
|
8678
|
+
* ticket.archive()
|
|
8679
|
+
* ```
|
|
8680
|
+
*/
|
|
8681
|
+
function register(input) {
|
|
8682
|
+
return registry.register(hydrate(input));
|
|
8683
|
+
}
|
|
8684
|
+
/**
|
|
8685
|
+
* Bulk version of {@link register}
|
|
8686
|
+
*
|
|
8687
|
+
* @param inputs Array of notification inputs to register.
|
|
8688
|
+
* @returns Array of hydrated notification tickets.
|
|
8689
|
+
* @remarks Registers multiple notifications into the registry without toast
|
|
8690
|
+
* display. Wraps all registrations in a single `registry.batch()` call so
|
|
8691
|
+
* reactive updates are deferred until the entire batch completes.
|
|
8692
|
+
*
|
|
8693
|
+
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications#onboard
|
|
8694
|
+
*
|
|
8695
|
+
* @example
|
|
8696
|
+
* ```ts
|
|
8697
|
+
* import { useNotifications } from '@vuetify/v0'
|
|
8698
|
+
*
|
|
8699
|
+
* const notifications = useNotifications()
|
|
8700
|
+
*
|
|
8701
|
+
* // Load historical items on mount
|
|
8702
|
+
* const tickets = notifications.onboard([
|
|
8703
|
+
* { id: 'n1', subject: 'Welcome to the team' },
|
|
8704
|
+
* { id: 'n2', subject: 'Setup complete', severity: 'success' },
|
|
8705
|
+
* ])
|
|
8706
|
+
*
|
|
8707
|
+
* console.log(tickets.length) // 2
|
|
8708
|
+
* console.log(notifications.queue.values()) // [] (no toasts)
|
|
8709
|
+
* console.log(notifications.values().length) // 2 (in registry)
|
|
8710
|
+
* ```
|
|
8711
|
+
*/
|
|
8712
|
+
function onboard(inputs) {
|
|
8713
|
+
return registry.batch(() => inputs.map((input) => register(input)));
|
|
8714
|
+
}
|
|
8715
|
+
/**
|
|
8716
|
+
* Mark a notification as read
|
|
8717
|
+
*
|
|
8718
|
+
* @param id The ID of the notification to mark as read.
|
|
8719
|
+
* @remarks Sets `readAt` to the current time and emits `notification:read`.
|
|
8720
|
+
* Adapters listen to this event for outbound sync.
|
|
8721
|
+
*
|
|
8722
|
+
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications#read
|
|
8723
|
+
*
|
|
8724
|
+
* @example
|
|
8725
|
+
* ```ts
|
|
8726
|
+
* import { useNotifications } from '@vuetify/v0'
|
|
8727
|
+
*
|
|
8728
|
+
* const notifications = useNotifications()
|
|
8729
|
+
*
|
|
8730
|
+
* const ticket = notifications.send({ subject: 'New message' })
|
|
8731
|
+
*
|
|
8732
|
+
* notifications.read(ticket.id)
|
|
8733
|
+
* console.log(ticket.readAt) // Date
|
|
8734
|
+
*
|
|
8735
|
+
* // Or via ticket convenience method
|
|
8736
|
+
* ticket.read()
|
|
8737
|
+
* ```
|
|
8738
|
+
*/
|
|
8739
|
+
function read(id) {
|
|
8740
|
+
registry.upsert(id, { readAt: /* @__PURE__ */ new Date() }, "notification:read");
|
|
8741
|
+
}
|
|
8742
|
+
/**
|
|
8743
|
+
* Mark a notification as unread
|
|
8744
|
+
*
|
|
8745
|
+
* @param id The ID of the notification to mark as unread.
|
|
8746
|
+
* @remarks Clears `readAt` and emits `notification:unread`.
|
|
8747
|
+
*
|
|
8748
|
+
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications#unread
|
|
8749
|
+
*
|
|
8750
|
+
* @example
|
|
8751
|
+
* ```ts
|
|
8752
|
+
* import { useNotifications } from '@vuetify/v0'
|
|
8753
|
+
*
|
|
8754
|
+
* const notifications = useNotifications()
|
|
8755
|
+
*
|
|
8756
|
+
* notifications.unread('notif-1')
|
|
8757
|
+
* ```
|
|
8758
|
+
*/
|
|
8759
|
+
function unread(id) {
|
|
8760
|
+
registry.upsert(id, { readAt: null }, "notification:unread");
|
|
8761
|
+
}
|
|
8762
|
+
/**
|
|
8763
|
+
* Mark a notification as seen
|
|
8764
|
+
*
|
|
8765
|
+
* @param id The ID of the notification to mark as seen.
|
|
8766
|
+
* @remarks Sets `seenAt` to the current time and emits `notification:seen`.
|
|
8767
|
+
* Distinct from read — seen tracks whether the notification appeared in the
|
|
8768
|
+
* user's viewport, while read indicates the user actively engaged with it.
|
|
8769
|
+
*
|
|
8770
|
+
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications#seen
|
|
8771
|
+
*
|
|
8772
|
+
* @example
|
|
8773
|
+
* ```ts
|
|
8774
|
+
* import { useNotifications } from '@vuetify/v0'
|
|
8775
|
+
*
|
|
8776
|
+
* const notifications = useNotifications()
|
|
8777
|
+
*
|
|
8778
|
+
* // Mark as seen when visible in inbox viewport
|
|
8779
|
+
* notifications.seen('notif-1')
|
|
8780
|
+
* ```
|
|
8781
|
+
*/
|
|
8782
|
+
function seen(id) {
|
|
8783
|
+
registry.upsert(id, { seenAt: /* @__PURE__ */ new Date() }, "notification:seen");
|
|
8784
|
+
}
|
|
8785
|
+
/**
|
|
8786
|
+
* Archive a notification
|
|
8787
|
+
*
|
|
8788
|
+
* @param id The ID of the notification to archive.
|
|
8789
|
+
* @remarks Sets `archivedAt` to the current time and emits `notification:archived`.
|
|
8790
|
+
*
|
|
8791
|
+
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications#archive
|
|
8792
|
+
*
|
|
8793
|
+
* @example
|
|
8794
|
+
* ```ts
|
|
8795
|
+
* import { useNotifications } from '@vuetify/v0'
|
|
8796
|
+
*
|
|
8797
|
+
* const notifications = useNotifications()
|
|
8798
|
+
*
|
|
8799
|
+
* notifications.archive('notif-1')
|
|
8800
|
+
* ```
|
|
8801
|
+
*/
|
|
8802
|
+
function archive(id) {
|
|
8803
|
+
registry.upsert(id, { archivedAt: /* @__PURE__ */ new Date() }, "notification:archived");
|
|
8804
|
+
}
|
|
8805
|
+
/**
|
|
8806
|
+
* Restore an archived notification
|
|
8807
|
+
*
|
|
8808
|
+
* @param id The ID of the notification to unarchive.
|
|
8809
|
+
* @remarks Clears `archivedAt` and emits `notification:unarchived`.
|
|
8810
|
+
*
|
|
8811
|
+
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications#unarchive
|
|
8812
|
+
*
|
|
8813
|
+
* @example
|
|
8814
|
+
* ```ts
|
|
8815
|
+
* import { useNotifications } from '@vuetify/v0'
|
|
8816
|
+
*
|
|
8817
|
+
* const notifications = useNotifications()
|
|
8818
|
+
*
|
|
8819
|
+
* notifications.unarchive('notif-1')
|
|
8820
|
+
* ```
|
|
8821
|
+
*/
|
|
8822
|
+
function unarchive(id) {
|
|
8823
|
+
registry.upsert(id, { archivedAt: null }, "notification:unarchived");
|
|
8824
|
+
}
|
|
8825
|
+
/**
|
|
8826
|
+
* Snooze a notification until a given time
|
|
8827
|
+
*
|
|
8828
|
+
* @param id The ID of the notification to snooze.
|
|
8829
|
+
* @param until The time at which the snooze expires.
|
|
8830
|
+
* @remarks Sets `snoozedUntil` and emits `notification:snoozed`. The composable
|
|
8831
|
+
* does not auto-wake — consumers are responsible for calling {@link wake} when
|
|
8832
|
+
* the snooze expires (e.g., via a timer or server push).
|
|
8833
|
+
*
|
|
8834
|
+
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications#snooze
|
|
8835
|
+
*
|
|
8836
|
+
* @example
|
|
8837
|
+
* ```ts
|
|
8838
|
+
* import { useNotifications } from '@vuetify/v0'
|
|
8839
|
+
*
|
|
8840
|
+
* const notifications = useNotifications()
|
|
8841
|
+
*
|
|
8842
|
+
* const tomorrow = new Date(Date.now() + 86_400_000)
|
|
8843
|
+
* notifications.snooze('notif-1', tomorrow)
|
|
8844
|
+
* ```
|
|
8845
|
+
*/
|
|
8846
|
+
function snooze(id, until) {
|
|
8847
|
+
registry.upsert(id, { snoozedUntil: until }, "notification:snoozed");
|
|
8848
|
+
}
|
|
8849
|
+
/**
|
|
8850
|
+
* Cancel a snooze
|
|
8851
|
+
*
|
|
8852
|
+
* @param id The ID of the notification to wake.
|
|
8853
|
+
* @remarks Clears `snoozedUntil` and emits `notification:unsnoozed`.
|
|
8854
|
+
*
|
|
8855
|
+
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications#wake
|
|
8856
|
+
*
|
|
8857
|
+
* @example
|
|
8858
|
+
* ```ts
|
|
8859
|
+
* import { useNotifications } from '@vuetify/v0'
|
|
8860
|
+
*
|
|
8861
|
+
* const notifications = useNotifications()
|
|
8862
|
+
*
|
|
8863
|
+
* notifications.wake('notif-1')
|
|
8864
|
+
* ```
|
|
8865
|
+
*/
|
|
8866
|
+
function wake(id) {
|
|
8867
|
+
registry.upsert(id, { snoozedUntil: null }, "notification:unsnoozed");
|
|
8868
|
+
}
|
|
8869
|
+
/**
|
|
8870
|
+
* Mark all unread notifications as read
|
|
8871
|
+
*
|
|
8872
|
+
* @remarks Iterates all notifications and marks unread ones as read in a single
|
|
8873
|
+
* batch. Skips already-read notifications to preserve their original `readAt`
|
|
8874
|
+
* timestamp. Emits `notification:read` for each affected notification.
|
|
8875
|
+
*
|
|
8876
|
+
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications#readall
|
|
8877
|
+
*
|
|
8878
|
+
* @example
|
|
8879
|
+
* ```ts
|
|
8880
|
+
* import { useNotifications } from '@vuetify/v0'
|
|
8881
|
+
*
|
|
8882
|
+
* const notifications = useNotifications()
|
|
8883
|
+
*
|
|
8884
|
+
* notifications.send({ subject: 'Message 1' })
|
|
8885
|
+
* notifications.send({ subject: 'Message 2' })
|
|
8886
|
+
*
|
|
8887
|
+
* notifications.readAll()
|
|
8888
|
+
*
|
|
8889
|
+
* console.log(notifications.values().every(t => t.readAt !== null)) // true
|
|
8890
|
+
* ```
|
|
8891
|
+
*/
|
|
8892
|
+
function readAll() {
|
|
8893
|
+
const now = /* @__PURE__ */ new Date();
|
|
8894
|
+
registry.batch(() => {
|
|
8895
|
+
for (const ticket of registry.values()) if (/* @__PURE__ */ isNull(ticket.readAt)) registry.upsert(ticket.id, { readAt: now }, "notification:read");
|
|
8896
|
+
});
|
|
8897
|
+
}
|
|
8898
|
+
/**
|
|
8899
|
+
* Archive all unarchived notifications
|
|
8900
|
+
*
|
|
8901
|
+
* @remarks Iterates all notifications and archives unarchived ones in a single
|
|
8902
|
+
* batch. Skips already-archived notifications to preserve their original
|
|
8903
|
+
* `archivedAt` timestamp. Emits `notification:archived` for each affected notification.
|
|
8904
|
+
*
|
|
8905
|
+
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications#archiveall
|
|
8906
|
+
*
|
|
8907
|
+
* @example
|
|
8908
|
+
* ```ts
|
|
8909
|
+
* import { useNotifications } from '@vuetify/v0'
|
|
8910
|
+
*
|
|
8911
|
+
* const notifications = useNotifications()
|
|
8912
|
+
*
|
|
8913
|
+
* notifications.send({ subject: 'Alert 1' })
|
|
8914
|
+
* notifications.send({ subject: 'Alert 2' })
|
|
8915
|
+
*
|
|
8916
|
+
* notifications.archiveAll()
|
|
8917
|
+
*
|
|
8918
|
+
* console.log(notifications.values().every(t => t.archivedAt !== null)) // true
|
|
8919
|
+
* ```
|
|
8920
|
+
*/
|
|
8921
|
+
function archiveAll() {
|
|
8922
|
+
const now = /* @__PURE__ */ new Date();
|
|
8923
|
+
registry.batch(() => {
|
|
8924
|
+
for (const ticket of registry.values()) if (/* @__PURE__ */ isNull(ticket.archivedAt)) registry.upsert(ticket.id, { archivedAt: now }, "notification:archived");
|
|
8925
|
+
});
|
|
8926
|
+
}
|
|
8927
|
+
return {
|
|
8928
|
+
...registry,
|
|
8929
|
+
send,
|
|
8930
|
+
register,
|
|
7826
8931
|
onboard,
|
|
7827
|
-
|
|
7828
|
-
|
|
8932
|
+
queue,
|
|
8933
|
+
read,
|
|
8934
|
+
unread,
|
|
8935
|
+
seen,
|
|
8936
|
+
archive,
|
|
8937
|
+
unarchive,
|
|
8938
|
+
snooze,
|
|
8939
|
+
wake,
|
|
8940
|
+
readAll,
|
|
8941
|
+
archiveAll,
|
|
7829
8942
|
get size() {
|
|
7830
|
-
return
|
|
8943
|
+
return registry.size;
|
|
7831
8944
|
}
|
|
7832
8945
|
};
|
|
7833
|
-
|
|
8946
|
+
}
|
|
8947
|
+
function noop() {}
|
|
8948
|
+
const EMPTY = [];
|
|
8949
|
+
function createNotificationsFallback() {
|
|
8950
|
+
const stub = {
|
|
8951
|
+
id: "",
|
|
8952
|
+
index: 0,
|
|
8953
|
+
value: 0,
|
|
8954
|
+
valueIsIndex: true,
|
|
8955
|
+
createdAt: /* @__PURE__ */ new Date(0),
|
|
8956
|
+
readAt: null,
|
|
8957
|
+
seenAt: null,
|
|
8958
|
+
archivedAt: null,
|
|
8959
|
+
snoozedUntil: null,
|
|
8960
|
+
read: noop,
|
|
8961
|
+
unread: noop,
|
|
8962
|
+
seen: noop,
|
|
8963
|
+
archive: noop,
|
|
8964
|
+
unarchive: noop,
|
|
8965
|
+
snooze: noop,
|
|
8966
|
+
wake: noop,
|
|
8967
|
+
dismiss: noop,
|
|
8968
|
+
unregister: noop
|
|
8969
|
+
};
|
|
8970
|
+
return {
|
|
8971
|
+
collection: /* @__PURE__ */ new Map(),
|
|
8972
|
+
size: 0,
|
|
8973
|
+
send: () => stub,
|
|
8974
|
+
queue: {
|
|
8975
|
+
collection: /* @__PURE__ */ new Map(),
|
|
8976
|
+
size: 0,
|
|
8977
|
+
register: () => ({}),
|
|
8978
|
+
unregister: () => void 0,
|
|
8979
|
+
has: () => false,
|
|
8980
|
+
get: () => void 0,
|
|
8981
|
+
keys: () => EMPTY,
|
|
8982
|
+
values: () => EMPTY,
|
|
8983
|
+
entries: () => EMPTY,
|
|
8984
|
+
browse: () => void 0,
|
|
8985
|
+
lookup: () => void 0,
|
|
8986
|
+
upsert: () => ({}),
|
|
8987
|
+
seek: () => void 0,
|
|
8988
|
+
move: () => void 0,
|
|
8989
|
+
on: noop,
|
|
8990
|
+
off: noop,
|
|
8991
|
+
emit: noop,
|
|
8992
|
+
dispose: noop,
|
|
8993
|
+
clear: noop,
|
|
8994
|
+
reindex: noop,
|
|
8995
|
+
batch: (fn) => fn(),
|
|
8996
|
+
onboard: () => EMPTY,
|
|
8997
|
+
offboard: noop,
|
|
8998
|
+
pause: () => void 0,
|
|
8999
|
+
resume: () => void 0
|
|
9000
|
+
},
|
|
9001
|
+
read: noop,
|
|
9002
|
+
unread: noop,
|
|
9003
|
+
seen: noop,
|
|
9004
|
+
archive: noop,
|
|
9005
|
+
unarchive: noop,
|
|
9006
|
+
snooze: noop,
|
|
9007
|
+
wake: noop,
|
|
9008
|
+
readAll: noop,
|
|
9009
|
+
archiveAll: noop,
|
|
9010
|
+
clear: noop,
|
|
9011
|
+
has: () => false,
|
|
9012
|
+
get: () => void 0,
|
|
9013
|
+
keys: () => EMPTY,
|
|
9014
|
+
values: () => EMPTY,
|
|
9015
|
+
entries: () => EMPTY,
|
|
9016
|
+
browse: () => void 0,
|
|
9017
|
+
lookup: () => void 0,
|
|
9018
|
+
upsert: () => stub,
|
|
9019
|
+
register: () => stub,
|
|
9020
|
+
unregister: noop,
|
|
9021
|
+
reindex: noop,
|
|
9022
|
+
move: () => void 0,
|
|
9023
|
+
seek: () => void 0,
|
|
9024
|
+
on: noop,
|
|
9025
|
+
off: noop,
|
|
9026
|
+
emit: noop,
|
|
9027
|
+
dispose: noop,
|
|
9028
|
+
batch: (fn) => fn(),
|
|
9029
|
+
onboard: () => EMPTY,
|
|
9030
|
+
offboard: noop
|
|
9031
|
+
};
|
|
7834
9032
|
}
|
|
7835
9033
|
/**
|
|
7836
|
-
*
|
|
9034
|
+
* Notification management with registry, event system, and optional adapters.
|
|
7837
9035
|
*
|
|
7838
|
-
* @
|
|
7839
|
-
* @returns A trinity tuple [useNested, provideNested, defaultNested]
|
|
7840
|
-
*
|
|
7841
|
-
* @see https://0.vuetifyjs.com/composables/selection/use-nested
|
|
9036
|
+
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications
|
|
7842
9037
|
*
|
|
7843
9038
|
* @example
|
|
7844
9039
|
* ```ts
|
|
7845
|
-
* import {
|
|
9040
|
+
* import { createNotificationsPlugin, useNotifications } from '@vuetify/v0'
|
|
7846
9041
|
*
|
|
7847
|
-
*
|
|
9042
|
+
* // Install as plugin
|
|
9043
|
+
* app.use(createNotificationsPlugin())
|
|
7848
9044
|
*
|
|
7849
|
-
* //
|
|
7850
|
-
*
|
|
9045
|
+
* // Use in components
|
|
9046
|
+
* const notifications = useNotifications()
|
|
9047
|
+
* notifications.send({ subject: 'Saved', severity: 'success' })
|
|
7851
9048
|
* ```
|
|
7852
9049
|
*/
|
|
7853
|
-
|
|
7854
|
-
|
|
7855
|
-
|
|
7856
|
-
|
|
7857
|
-
|
|
7858
|
-
|
|
9050
|
+
const [createNotificationsContext, createNotificationsPlugin, useNotifications] = createPluginContext("v0:notifications", (options) => createNotifications(options), {
|
|
9051
|
+
fallback: () => createNotificationsFallback(),
|
|
9052
|
+
setup: (context, app, options) => {
|
|
9053
|
+
app.onUnmount(() => {
|
|
9054
|
+
context.dispose();
|
|
9055
|
+
context.queue.dispose();
|
|
9056
|
+
});
|
|
9057
|
+
const { adapter } = options;
|
|
9058
|
+
if (!adapter) return;
|
|
9059
|
+
adapter.setup({
|
|
9060
|
+
send: context.send,
|
|
9061
|
+
register: context.register,
|
|
9062
|
+
on: context.on,
|
|
9063
|
+
off: context.off
|
|
9064
|
+
});
|
|
9065
|
+
if (/* @__PURE__ */ isFunction(adapter.dispose)) app.onUnmount(() => adapter.dispose());
|
|
7859
9066
|
}
|
|
7860
|
-
|
|
7861
|
-
}
|
|
7862
|
-
/**
|
|
7863
|
-
* Returns the current nested instance from context.
|
|
7864
|
-
*
|
|
7865
|
-
* @param namespace The namespace for the nested context. Defaults to `'v0:nested'`.
|
|
7866
|
-
* @returns The current nested instance.
|
|
7867
|
-
*
|
|
7868
|
-
* @see https://0.vuetifyjs.com/composables/selection/use-nested
|
|
7869
|
-
*/
|
|
7870
|
-
function useNested(namespace = "v0:nested") {
|
|
7871
|
-
return useContext(namespace);
|
|
7872
|
-
}
|
|
9067
|
+
});
|
|
7873
9068
|
//#endregion
|
|
7874
9069
|
//#region src/composables/usePermissions/adapters/adapter.ts
|
|
7875
9070
|
var PermissionAdapter = class {};
|
|
@@ -8028,17 +9223,28 @@ const [createPermissionsContext, createPermissionsPlugin, usePermissions] = crea
|
|
|
8028
9223
|
* without wrapping the Popover compound component.
|
|
8029
9224
|
*/
|
|
8030
9225
|
function usePopover(options = {}) {
|
|
8031
|
-
const { id: _id, positionArea = "bottom", positionTry = "most-width bottom" } = options;
|
|
9226
|
+
const { id: _id, positionArea = "bottom", positionTry = "most-width bottom", showDelay = 0, hideDelay = 0 } = options;
|
|
8032
9227
|
const id = _id ?? /* @__PURE__ */ useId();
|
|
8033
9228
|
const isOpen = options.isOpen ?? shallowRef(false);
|
|
8034
|
-
|
|
9229
|
+
const showTimer = showDelay > 0 ? useTimer(() => {
|
|
8035
9230
|
isOpen.value = true;
|
|
9231
|
+
}, { duration: showDelay }) : void 0;
|
|
9232
|
+
const hideTimer = hideDelay > 0 ? useTimer(() => {
|
|
9233
|
+
isOpen.value = false;
|
|
9234
|
+
}, { duration: hideDelay }) : void 0;
|
|
9235
|
+
function open() {
|
|
9236
|
+
hideTimer?.stop();
|
|
9237
|
+
if (showTimer) showTimer.start();
|
|
9238
|
+
else isOpen.value = true;
|
|
8036
9239
|
}
|
|
8037
9240
|
function close() {
|
|
8038
|
-
|
|
9241
|
+
showTimer?.stop();
|
|
9242
|
+
if (hideTimer) hideTimer.start();
|
|
9243
|
+
else isOpen.value = false;
|
|
8039
9244
|
}
|
|
8040
9245
|
function toggle() {
|
|
8041
|
-
isOpen.value
|
|
9246
|
+
if (isOpen.value) close();
|
|
9247
|
+
else open();
|
|
8042
9248
|
}
|
|
8043
9249
|
const anchorStyles = toRef(() => ({ anchorName: `--${id}` }));
|
|
8044
9250
|
const contentAttrs = toRef(() => ({
|
|
@@ -8085,197 +9291,70 @@ function usePopover(options = {}) {
|
|
|
8085
9291
|
};
|
|
8086
9292
|
}
|
|
8087
9293
|
//#endregion
|
|
8088
|
-
//#region src/composables/
|
|
9294
|
+
//#region src/composables/useRaf/index.ts
|
|
8089
9295
|
/**
|
|
8090
|
-
* @module
|
|
9296
|
+
* @module useRaf
|
|
9297
|
+
*
|
|
9298
|
+
* @see https://0.vuetifyjs.com/composables/system/use-raf
|
|
8091
9299
|
*
|
|
8092
9300
|
* @remarks
|
|
8093
|
-
*
|
|
8094
|
-
* - Automatic timeout-based removal
|
|
8095
|
-
* - Pause/resume functionality
|
|
8096
|
-
* - FIFO (First In, First Out) ordering
|
|
8097
|
-
* - Manual dismissal support
|
|
8098
|
-
* - Queue progression management
|
|
9301
|
+
* Scope-disposed safe requestAnimationFrame composable.
|
|
8099
9302
|
*
|
|
8100
|
-
*
|
|
8101
|
-
*
|
|
8102
|
-
*
|
|
9303
|
+
* Key features:
|
|
9304
|
+
* - Cancel-then-request pattern (deduplicates rapid calls)
|
|
9305
|
+
* - Automatic cleanup on scope disposal
|
|
9306
|
+
* - SSR-safe (no-op in non-browser environments)
|
|
9307
|
+
* - Callable function with cancel method
|
|
9308
|
+
*
|
|
9309
|
+
* Perfect for throttling updates to the next animation frame.
|
|
8103
9310
|
*/
|
|
8104
9311
|
/**
|
|
8105
|
-
*
|
|
9312
|
+
* Scope-disposed safe requestAnimationFrame.
|
|
8106
9313
|
*
|
|
8107
|
-
* @param
|
|
8108
|
-
* @
|
|
8109
|
-
* @template E The type of queue context that extends QueueContext<Z>. Use this when extending the queue with additional methods.
|
|
8110
|
-
* @returns A new queue instance
|
|
9314
|
+
* @param callback Function to call on animation frame.
|
|
9315
|
+
* @returns Callable that requests frame (canceling pending), with cancel method.
|
|
8111
9316
|
*
|
|
8112
|
-
* @see https://0.vuetifyjs.com/composables/
|
|
9317
|
+
* @see https://0.vuetifyjs.com/composables/system/use-raf
|
|
8113
9318
|
*
|
|
8114
9319
|
* @example
|
|
8115
9320
|
* ```ts
|
|
8116
|
-
*
|
|
8117
|
-
*
|
|
8118
|
-
*
|
|
8119
|
-
*
|
|
8120
|
-
* // Register an ticket with default timeout (3000ms)
|
|
8121
|
-
* const ticket1 = queue.register({ value: 'Ticket 1' })
|
|
8122
|
-
*
|
|
8123
|
-
* // Register an ticket with custom timeout
|
|
8124
|
-
* const ticket2 = queue.register({ value: 'Ticket 2', timeout: 5000 })
|
|
9321
|
+
* // Basic usage
|
|
9322
|
+
* const update = useRaf((timestamp) => {
|
|
9323
|
+
* // Runs on next animation frame
|
|
9324
|
+
* })
|
|
8125
9325
|
*
|
|
8126
|
-
* //
|
|
8127
|
-
*
|
|
9326
|
+
* update() // Request frame
|
|
9327
|
+
* update() // Cancels previous, requests new (deduplicated)
|
|
8128
9328
|
*
|
|
8129
|
-
* //
|
|
8130
|
-
*
|
|
9329
|
+
* // Manual cancel
|
|
9330
|
+
* update.cancel()
|
|
8131
9331
|
*
|
|
8132
|
-
*
|
|
9332
|
+
* // Check if pending
|
|
9333
|
+
* if (update.isActive.value) { ... }
|
|
8133
9334
|
* ```
|
|
8134
9335
|
*/
|
|
8135
|
-
function
|
|
8136
|
-
const
|
|
8137
|
-
const
|
|
8138
|
-
|
|
8139
|
-
|
|
8140
|
-
|
|
8141
|
-
|
|
8142
|
-
function startTimeout(ticket) {
|
|
8143
|
-
if (/* @__PURE__ */ isUndefined(ticket.timeout) || ticket.timeout < 0 || ticket.isPaused) return;
|
|
8144
|
-
const timeout = setTimeout(() => {
|
|
8145
|
-
timeouts.delete(ticket.id);
|
|
8146
|
-
registry.unregister(ticket.id);
|
|
8147
|
-
resume();
|
|
8148
|
-
}, ticket.timeout);
|
|
8149
|
-
timeouts.set(ticket.id, timeout);
|
|
8150
|
-
}
|
|
8151
|
-
function clearTimeout(id) {
|
|
8152
|
-
const timeout = timeouts.get(id);
|
|
8153
|
-
if (timeout) {
|
|
8154
|
-
globalThis.clearTimeout(timeout);
|
|
8155
|
-
timeouts.delete(id);
|
|
8156
|
-
}
|
|
8157
|
-
}
|
|
8158
|
-
function register(registration = {}) {
|
|
8159
|
-
const id = registration.id ?? /* @__PURE__ */ useId();
|
|
8160
|
-
const timeout = Object.prototype.hasOwnProperty.call(registration, "timeout") ? registration.timeout : _timeout;
|
|
8161
|
-
const ticket = {
|
|
8162
|
-
...registration,
|
|
8163
|
-
id,
|
|
8164
|
-
timeout,
|
|
8165
|
-
isPaused: registry.size > 0,
|
|
8166
|
-
dismiss: () => unregister(id)
|
|
8167
|
-
};
|
|
8168
|
-
const registered = registry.register(ticket);
|
|
8169
|
-
startTimeout(registered);
|
|
8170
|
-
return registered;
|
|
8171
|
-
}
|
|
8172
|
-
function unregister(id) {
|
|
8173
|
-
const ticket = /* @__PURE__ */ isUndefined(id) ? registry.seek("first") : registry.get(id);
|
|
8174
|
-
if (!ticket) return void 0;
|
|
8175
|
-
const wasFirst = ticket.index === 0;
|
|
8176
|
-
clearTimeout(ticket.id);
|
|
8177
|
-
registry.unregister(ticket.id);
|
|
8178
|
-
if (wasFirst) resume();
|
|
8179
|
-
return ticket;
|
|
8180
|
-
}
|
|
8181
|
-
function offboard(ids) {
|
|
8182
|
-
let hadFirst = false;
|
|
8183
|
-
for (const id of ids) {
|
|
8184
|
-
const ticket = registry.get(id);
|
|
8185
|
-
if (!ticket) continue;
|
|
8186
|
-
if (ticket.index === 0) hadFirst = true;
|
|
8187
|
-
clearTimeout(ticket.id);
|
|
9336
|
+
function useRaf(callback) {
|
|
9337
|
+
const id = shallowRef();
|
|
9338
|
+
const isActive = toRef(() => !/* @__PURE__ */ isUndefined(id.value));
|
|
9339
|
+
function cancel() {
|
|
9340
|
+
if (!/* @__PURE__ */ isUndefined(id.value)) {
|
|
9341
|
+
cancelAnimationFrame(id.value);
|
|
9342
|
+
id.value = void 0;
|
|
8188
9343
|
}
|
|
8189
|
-
registry.offboard(ids);
|
|
8190
|
-
if (hadFirst) resume();
|
|
8191
|
-
}
|
|
8192
|
-
function pause() {
|
|
8193
|
-
const ticket = registry.seek("first");
|
|
8194
|
-
if (!ticket || ticket.isPaused) return void 0;
|
|
8195
|
-
clearTimeout(ticket.id);
|
|
8196
|
-
return registry.upsert(ticket.id, { isPaused: true });
|
|
8197
|
-
}
|
|
8198
|
-
function resume() {
|
|
8199
|
-
const ticket = registry.seek("first");
|
|
8200
|
-
if (!ticket || ticket.index !== 0 || !ticket.isPaused) return void 0;
|
|
8201
|
-
const updated = registry.upsert(ticket.id, { isPaused: false });
|
|
8202
|
-
startTimeout(updated);
|
|
8203
|
-
return updated;
|
|
8204
|
-
}
|
|
8205
|
-
function clear() {
|
|
8206
|
-
for (const id of timeouts.keys()) clearTimeout(id);
|
|
8207
|
-
registry.clear();
|
|
8208
|
-
}
|
|
8209
|
-
function dispose() {
|
|
8210
|
-
clear();
|
|
8211
|
-
registry.dispose();
|
|
8212
|
-
}
|
|
8213
|
-
onScopeDispose(dispose, true);
|
|
8214
|
-
function onboard(registrations) {
|
|
8215
|
-
return registry.batch(() => registrations.map((registration) => register(registration)));
|
|
8216
9344
|
}
|
|
8217
|
-
|
|
8218
|
-
|
|
8219
|
-
|
|
8220
|
-
|
|
8221
|
-
|
|
8222
|
-
|
|
8223
|
-
|
|
8224
|
-
resume,
|
|
8225
|
-
clear,
|
|
8226
|
-
dispose,
|
|
8227
|
-
get size() {
|
|
8228
|
-
return registry.size;
|
|
8229
|
-
}
|
|
8230
|
-
};
|
|
8231
|
-
}
|
|
8232
|
-
/**
|
|
8233
|
-
* Creates a new queue context.
|
|
8234
|
-
*
|
|
8235
|
-
* @param options The options for the queue context.
|
|
8236
|
-
* @template Z The type of the queue ticket.
|
|
8237
|
-
* @template E The type of the queue context.
|
|
8238
|
-
* @returns A new queue context.
|
|
8239
|
-
*
|
|
8240
|
-
* @see https://0.vuetifyjs.com/composables/registration/create-queue
|
|
8241
|
-
*
|
|
8242
|
-
* @example
|
|
8243
|
-
* ```ts
|
|
8244
|
-
* import { createQueueContext } from '@vuetify/v0'
|
|
8245
|
-
*
|
|
8246
|
-
* export const [useQueue, provideQueue, context] = createQueueContext({
|
|
8247
|
-
* timeout: 5000,
|
|
8248
|
-
* })
|
|
8249
|
-
* ```
|
|
8250
|
-
*/
|
|
8251
|
-
function createQueueContext(_options = {}) {
|
|
8252
|
-
const { namespace = "v0:queue", ...options } = _options;
|
|
8253
|
-
const [useQueueContext, _provideQueueContext] = createContext(namespace);
|
|
8254
|
-
const context = createQueue(options);
|
|
8255
|
-
function provideQueueContext(_context = context, app) {
|
|
8256
|
-
return _provideQueueContext(_context, app);
|
|
9345
|
+
function request() {
|
|
9346
|
+
if (!IN_BROWSER) return;
|
|
9347
|
+
cancel();
|
|
9348
|
+
id.value = requestAnimationFrame((timestamp) => {
|
|
9349
|
+
id.value = void 0;
|
|
9350
|
+
callback(timestamp);
|
|
9351
|
+
});
|
|
8257
9352
|
}
|
|
8258
|
-
|
|
8259
|
-
|
|
8260
|
-
|
|
8261
|
-
|
|
8262
|
-
|
|
8263
|
-
* @param namespace The namespace for the queue context. Defaults to `'v0:queue'`.
|
|
8264
|
-
* @returns The current queue instance.
|
|
8265
|
-
*
|
|
8266
|
-
* @see https://0.vuetifyjs.com/composables/registration/create-queue
|
|
8267
|
-
*
|
|
8268
|
-
* @example
|
|
8269
|
-
* ```vue
|
|
8270
|
-
* <script setup lang="ts">
|
|
8271
|
-
* import { useQueue } from '@vuetify/v0'
|
|
8272
|
-
*
|
|
8273
|
-
* const queue = useQueue()
|
|
8274
|
-
* <\/script>
|
|
8275
|
-
* ```
|
|
8276
|
-
*/
|
|
8277
|
-
function useQueue(namespace = "v0:queue") {
|
|
8278
|
-
return useContext(namespace);
|
|
9353
|
+
onScopeDispose(cancel, true);
|
|
9354
|
+
return Object.assign(request, {
|
|
9355
|
+
cancel,
|
|
9356
|
+
isActive
|
|
9357
|
+
});
|
|
8279
9358
|
}
|
|
8280
9359
|
//#endregion
|
|
8281
9360
|
//#region src/composables/useRules/adapters/standard.ts
|
|
@@ -8866,6 +9945,9 @@ function createSlider(options = {}) {
|
|
|
8866
9945
|
function ceil(index) {
|
|
8867
9946
|
set(index, max);
|
|
8868
9947
|
}
|
|
9948
|
+
function onboard(registrations) {
|
|
9949
|
+
return model.batch(() => registrations.map((r) => register(r)));
|
|
9950
|
+
}
|
|
8869
9951
|
return {
|
|
8870
9952
|
...model,
|
|
8871
9953
|
values,
|
|
@@ -8882,6 +9964,7 @@ function createSlider(options = {}) {
|
|
|
8882
9964
|
orientation,
|
|
8883
9965
|
inverted,
|
|
8884
9966
|
register,
|
|
9967
|
+
onboard,
|
|
8885
9968
|
snap,
|
|
8886
9969
|
fromValue,
|
|
8887
9970
|
fromPercent,
|
|
@@ -8961,12 +10044,12 @@ function createStack(_options = {}) {
|
|
|
8961
10044
|
const id = input.id ?? /* @__PURE__ */ useId();
|
|
8962
10045
|
const blocking = input.blocking ?? false;
|
|
8963
10046
|
const onDismiss = input.onDismiss;
|
|
8964
|
-
const zIndex =
|
|
10047
|
+
const zIndex = toRef(() => {
|
|
8965
10048
|
const position = ids().indexOf(id);
|
|
8966
10049
|
if (position === -1) return baseZIndex;
|
|
8967
10050
|
return baseZIndex + position * increment;
|
|
8968
10051
|
});
|
|
8969
|
-
const globalTop =
|
|
10052
|
+
const globalTop = toRef(() => {
|
|
8970
10053
|
const list = ids();
|
|
8971
10054
|
if (list.length === 0) return false;
|
|
8972
10055
|
return list.at(-1) === id;
|
|
@@ -9633,7 +10716,7 @@ function createTheme(_options = {}) {
|
|
|
9633
10716
|
});
|
|
9634
10717
|
if (id === options.default && !registry.selectedId.value) registry.select(id);
|
|
9635
10718
|
}
|
|
9636
|
-
const names =
|
|
10719
|
+
const names = toRef(() => registry.keys());
|
|
9637
10720
|
const colors = computed(() => {
|
|
9638
10721
|
const resolved = {};
|
|
9639
10722
|
for (const theme of registry.values()) {
|
|
@@ -9654,10 +10737,13 @@ function createTheme(_options = {}) {
|
|
|
9654
10737
|
return resolved;
|
|
9655
10738
|
}
|
|
9656
10739
|
function register(registration = {}) {
|
|
10740
|
+
const { colors, ...rest } = registration;
|
|
10741
|
+
if (colors && rest.id && !registry.has(rest.id)) tokens.onboard(flatten({ [rest.id]: { colors } }, "", true));
|
|
9657
10742
|
const item = {
|
|
9658
10743
|
lazy: false,
|
|
9659
10744
|
dark: false,
|
|
9660
|
-
...
|
|
10745
|
+
...rest,
|
|
10746
|
+
...colors ? { value: colors } : {}
|
|
9661
10747
|
};
|
|
9662
10748
|
return registry.register(item);
|
|
9663
10749
|
}
|
|
@@ -9767,6 +10853,12 @@ function createTimeline(_options = {}) {
|
|
|
9767
10853
|
function redo() {
|
|
9768
10854
|
if (stack.length === 0) return void 0;
|
|
9769
10855
|
const item = stack.pop();
|
|
10856
|
+
if (registry.size >= size) {
|
|
10857
|
+
const oldest = registry.seek("first");
|
|
10858
|
+
if (overflow.length === size) overflow.shift();
|
|
10859
|
+
overflow.push(oldest);
|
|
10860
|
+
registry.unregister(oldest.id);
|
|
10861
|
+
}
|
|
9770
10862
|
const ticket = registry.register(item);
|
|
9771
10863
|
registry.reindex();
|
|
9772
10864
|
return ticket;
|
|
@@ -10823,7 +11915,7 @@ function useClickOutside(target, handler, options = {}) {
|
|
|
10823
11915
|
}
|
|
10824
11916
|
//#endregion
|
|
10825
11917
|
//#region src/components/Dialog/DialogContent.vue
|
|
10826
|
-
const _sfc_main$
|
|
11918
|
+
const _sfc_main$24 = /* @__PURE__ */ defineComponent({
|
|
10827
11919
|
name: "DialogContent",
|
|
10828
11920
|
__name: "DialogContent",
|
|
10829
11921
|
props: {
|
|
@@ -10907,7 +11999,7 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
|
|
|
10907
11999
|
});
|
|
10908
12000
|
//#endregion
|
|
10909
12001
|
//#region src/components/Dialog/DialogDescription.vue
|
|
10910
|
-
const _sfc_main$
|
|
12002
|
+
const _sfc_main$25 = /* @__PURE__ */ defineComponent({
|
|
10911
12003
|
name: "DialogDescription",
|
|
10912
12004
|
__name: "DialogDescription",
|
|
10913
12005
|
props: {
|
|
@@ -10928,7 +12020,7 @@ const _sfc_main$19 = /* @__PURE__ */ defineComponent({
|
|
|
10928
12020
|
});
|
|
10929
12021
|
//#endregion
|
|
10930
12022
|
//#region src/components/Dialog/DialogTitle.vue
|
|
10931
|
-
const _sfc_main$
|
|
12023
|
+
const _sfc_main$27 = /* @__PURE__ */ defineComponent({
|
|
10932
12024
|
name: "DialogTitle",
|
|
10933
12025
|
__name: "DialogTitle",
|
|
10934
12026
|
props: {
|
|
@@ -10949,7 +12041,7 @@ const _sfc_main$21 = /* @__PURE__ */ defineComponent({
|
|
|
10949
12041
|
});
|
|
10950
12042
|
//#endregion
|
|
10951
12043
|
//#region src/components/Dialog/DialogActivator.vue
|
|
10952
|
-
const _sfc_main$
|
|
12044
|
+
const _sfc_main$22 = /* @__PURE__ */ defineComponent({
|
|
10953
12045
|
name: "DialogActivator",
|
|
10954
12046
|
__name: "DialogActivator",
|
|
10955
12047
|
props: {
|
|
@@ -11011,17 +12103,17 @@ const _sfc_main$16 = /* @__PURE__ */ defineComponent({
|
|
|
11011
12103
|
* ```
|
|
11012
12104
|
*/
|
|
11013
12105
|
const Dialog = {
|
|
11014
|
-
Root: _sfc_main$
|
|
11015
|
-
Activator: _sfc_main$
|
|
11016
|
-
Content: _sfc_main$
|
|
11017
|
-
Title: _sfc_main$
|
|
11018
|
-
Description: _sfc_main$
|
|
11019
|
-
Close: _sfc_main$
|
|
12106
|
+
Root: _sfc_main$26,
|
|
12107
|
+
Activator: _sfc_main$22,
|
|
12108
|
+
Content: _sfc_main$24,
|
|
12109
|
+
Title: _sfc_main$27,
|
|
12110
|
+
Description: _sfc_main$25,
|
|
12111
|
+
Close: _sfc_main$23
|
|
11020
12112
|
};
|
|
11021
12113
|
//#endregion
|
|
11022
12114
|
//#region src/components/ExpansionPanel/ExpansionPanelRoot.vue
|
|
11023
12115
|
const [useExpansionPanelRoot, provideExpansionPanelRoot] = createContext();
|
|
11024
|
-
const _sfc_main$
|
|
12116
|
+
const _sfc_main$32 = /* @__PURE__ */ defineComponent({
|
|
11025
12117
|
name: "ExpansionPanelRoot",
|
|
11026
12118
|
__name: "ExpansionPanelRoot",
|
|
11027
12119
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -11081,7 +12173,7 @@ const _sfc_main$26 = /* @__PURE__ */ defineComponent({
|
|
|
11081
12173
|
//#endregion
|
|
11082
12174
|
//#region src/components/ExpansionPanel/ExpansionPanelItem.vue
|
|
11083
12175
|
const [useExpansionPanelItem, provideExpansionPanelItem] = createContext({ suffix: "item" });
|
|
11084
|
-
const _sfc_main$
|
|
12176
|
+
const _sfc_main$31 = /* @__PURE__ */ defineComponent({
|
|
11085
12177
|
name: "ExpansionPanelItem",
|
|
11086
12178
|
__name: "ExpansionPanelItem",
|
|
11087
12179
|
props: {
|
|
@@ -11127,7 +12219,7 @@ const _sfc_main$25 = /* @__PURE__ */ defineComponent({
|
|
|
11127
12219
|
});
|
|
11128
12220
|
//#endregion
|
|
11129
12221
|
//#region src/components/ExpansionPanel/ExpansionPanelActivator.vue
|
|
11130
|
-
const _sfc_main$
|
|
12222
|
+
const _sfc_main$28 = /* @__PURE__ */ defineComponent({
|
|
11131
12223
|
name: "ExpansionPanelActivator",
|
|
11132
12224
|
__name: "ExpansionPanelActivator",
|
|
11133
12225
|
props: {
|
|
@@ -11175,7 +12267,7 @@ const _sfc_main$22 = /* @__PURE__ */ defineComponent({
|
|
|
11175
12267
|
});
|
|
11176
12268
|
//#endregion
|
|
11177
12269
|
//#region src/components/ExpansionPanel/ExpansionPanelContent.vue
|
|
11178
|
-
const _sfc_main$
|
|
12270
|
+
const _sfc_main$29 = /* @__PURE__ */ defineComponent({
|
|
11179
12271
|
name: "ExpansionPanelContent",
|
|
11180
12272
|
__name: "ExpansionPanelContent",
|
|
11181
12273
|
props: {
|
|
@@ -11208,7 +12300,7 @@ const _sfc_main$23 = /* @__PURE__ */ defineComponent({
|
|
|
11208
12300
|
});
|
|
11209
12301
|
//#endregion
|
|
11210
12302
|
//#region src/components/ExpansionPanel/ExpansionPanelHeader.vue
|
|
11211
|
-
const _sfc_main$
|
|
12303
|
+
const _sfc_main$30 = /* @__PURE__ */ defineComponent({
|
|
11212
12304
|
name: "ExpansionPanelHeader",
|
|
11213
12305
|
__name: "ExpansionPanelHeader",
|
|
11214
12306
|
props: {
|
|
@@ -11241,15 +12333,15 @@ const _sfc_main$24 = /* @__PURE__ */ defineComponent({
|
|
|
11241
12333
|
* @see https://0.vuetifyjs.com/components/expansion-panels
|
|
11242
12334
|
*/
|
|
11243
12335
|
const ExpansionPanel = {
|
|
11244
|
-
Root: _sfc_main$
|
|
11245
|
-
Item: _sfc_main$
|
|
11246
|
-
Header: _sfc_main$
|
|
11247
|
-
Activator: _sfc_main$
|
|
11248
|
-
Content: _sfc_main$
|
|
12336
|
+
Root: _sfc_main$32,
|
|
12337
|
+
Item: _sfc_main$31,
|
|
12338
|
+
Header: _sfc_main$30,
|
|
12339
|
+
Activator: _sfc_main$28,
|
|
12340
|
+
Content: _sfc_main$29
|
|
11249
12341
|
};
|
|
11250
12342
|
//#endregion
|
|
11251
12343
|
//#region src/components/Form/Form.vue
|
|
11252
|
-
const _sfc_main$
|
|
12344
|
+
const _sfc_main$33 = /* @__PURE__ */ defineComponent({
|
|
11253
12345
|
name: "Form",
|
|
11254
12346
|
inheritAttrs: false,
|
|
11255
12347
|
__name: "Form",
|
|
@@ -11320,7 +12412,7 @@ const _sfc_main$27 = /* @__PURE__ */ defineComponent({
|
|
|
11320
12412
|
//#endregion
|
|
11321
12413
|
//#region src/components/Group/GroupRoot.vue
|
|
11322
12414
|
const [useGroupRoot, provideGroupRoot] = createContext();
|
|
11323
|
-
const _sfc_main$
|
|
12415
|
+
const _sfc_main$35 = /* @__PURE__ */ defineComponent({
|
|
11324
12416
|
name: "GroupRoot",
|
|
11325
12417
|
__name: "GroupRoot",
|
|
11326
12418
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -11372,7 +12464,7 @@ const _sfc_main$29 = /* @__PURE__ */ defineComponent({
|
|
|
11372
12464
|
});
|
|
11373
12465
|
//#endregion
|
|
11374
12466
|
//#region src/components/Group/GroupItem.vue
|
|
11375
|
-
const _sfc_main$
|
|
12467
|
+
const _sfc_main$34 = /* @__PURE__ */ defineComponent({
|
|
11376
12468
|
name: "GroupItem",
|
|
11377
12469
|
__name: "GroupItem",
|
|
11378
12470
|
props: {
|
|
@@ -11429,8 +12521,8 @@ const _sfc_main$28 = /* @__PURE__ */ defineComponent({
|
|
|
11429
12521
|
* @see https://0.vuetifyjs.com/components/group
|
|
11430
12522
|
*/
|
|
11431
12523
|
const Group = {
|
|
11432
|
-
Root: _sfc_main$
|
|
11433
|
-
Item: _sfc_main$
|
|
12524
|
+
Root: _sfc_main$35,
|
|
12525
|
+
Item: _sfc_main$34
|
|
11434
12526
|
};
|
|
11435
12527
|
//#endregion
|
|
11436
12528
|
//#region src/components/Input/InputRoot.vue
|
|
@@ -11446,7 +12538,7 @@ function parseValidateOn(value) {
|
|
|
11446
12538
|
modifier
|
|
11447
12539
|
};
|
|
11448
12540
|
}
|
|
11449
|
-
const _sfc_main$
|
|
12541
|
+
const _sfc_main$39 = /* @__PURE__ */ defineComponent({
|
|
11450
12542
|
name: "InputRoot",
|
|
11451
12543
|
inheritAttrs: false,
|
|
11452
12544
|
__name: "InputRoot",
|
|
@@ -11593,7 +12685,7 @@ const _sfc_main$33 = /* @__PURE__ */ defineComponent({
|
|
|
11593
12685
|
});
|
|
11594
12686
|
//#endregion
|
|
11595
12687
|
//#region src/components/Input/InputControl.vue
|
|
11596
|
-
const _sfc_main$
|
|
12688
|
+
const _sfc_main$36 = /* @__PURE__ */ defineComponent({
|
|
11597
12689
|
name: "InputControl",
|
|
11598
12690
|
inheritAttrs: false,
|
|
11599
12691
|
__name: "InputControl",
|
|
@@ -11669,7 +12761,7 @@ const _sfc_main$30 = /* @__PURE__ */ defineComponent({
|
|
|
11669
12761
|
});
|
|
11670
12762
|
//#endregion
|
|
11671
12763
|
//#region src/components/Input/InputDescription.vue
|
|
11672
|
-
const _sfc_main$
|
|
12764
|
+
const _sfc_main$37 = /* @__PURE__ */ defineComponent({
|
|
11673
12765
|
name: "InputDescription",
|
|
11674
12766
|
inheritAttrs: false,
|
|
11675
12767
|
__name: "InputDescription",
|
|
@@ -11705,7 +12797,7 @@ const _sfc_main$31 = /* @__PURE__ */ defineComponent({
|
|
|
11705
12797
|
});
|
|
11706
12798
|
//#endregion
|
|
11707
12799
|
//#region src/components/Input/InputError.vue
|
|
11708
|
-
const _sfc_main$
|
|
12800
|
+
const _sfc_main$38 = /* @__PURE__ */ defineComponent({
|
|
11709
12801
|
name: "InputError",
|
|
11710
12802
|
inheritAttrs: false,
|
|
11711
12803
|
__name: "InputError",
|
|
@@ -11779,17 +12871,17 @@ const _sfc_main$32 = /* @__PURE__ */ defineComponent({
|
|
|
11779
12871
|
* ```
|
|
11780
12872
|
*/
|
|
11781
12873
|
const Input = {
|
|
11782
|
-
Control: _sfc_main$
|
|
11783
|
-
Description: _sfc_main$
|
|
11784
|
-
Error: _sfc_main$
|
|
11785
|
-
Root: _sfc_main$
|
|
12874
|
+
Control: _sfc_main$36,
|
|
12875
|
+
Description: _sfc_main$37,
|
|
12876
|
+
Error: _sfc_main$38,
|
|
12877
|
+
Root: _sfc_main$39
|
|
11786
12878
|
};
|
|
11787
12879
|
//#endregion
|
|
11788
12880
|
//#region src/components/Pagination/PaginationRoot.vue
|
|
11789
12881
|
const [usePaginationRoot, providePaginationRoot] = createContext();
|
|
11790
12882
|
const [usePaginationControls, providePaginationControls] = createContext({ suffix: "controls" });
|
|
11791
12883
|
const [usePaginationItems, providePaginationItems] = createContext({ suffix: "items" });
|
|
11792
|
-
const _sfc_main$
|
|
12884
|
+
const _sfc_main$46 = /* @__PURE__ */ defineComponent({
|
|
11793
12885
|
name: "PaginationRoot",
|
|
11794
12886
|
__name: "PaginationRoot",
|
|
11795
12887
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -11868,7 +12960,7 @@ const _sfc_main$40 = /* @__PURE__ */ defineComponent({
|
|
|
11868
12960
|
prev: pagination.prev,
|
|
11869
12961
|
select: pagination.select,
|
|
11870
12962
|
attrs: {
|
|
11871
|
-
"aria-label": locale.t("Pagination.label"
|
|
12963
|
+
"aria-label": locale.t("Pagination.label"),
|
|
11872
12964
|
"role": __props.as === "nav" ? void 0 : "navigation"
|
|
11873
12965
|
}
|
|
11874
12966
|
}));
|
|
@@ -11891,7 +12983,7 @@ const _sfc_main$40 = /* @__PURE__ */ defineComponent({
|
|
|
11891
12983
|
});
|
|
11892
12984
|
//#endregion
|
|
11893
12985
|
//#region src/components/Pagination/PaginationEllipsis.vue
|
|
11894
|
-
const _sfc_main$
|
|
12986
|
+
const _sfc_main$40 = /* @__PURE__ */ defineComponent({
|
|
11895
12987
|
name: "PaginationEllipsis",
|
|
11896
12988
|
__name: "PaginationEllipsis",
|
|
11897
12989
|
props: {
|
|
@@ -11934,7 +13026,7 @@ const _sfc_main$34 = /* @__PURE__ */ defineComponent({
|
|
|
11934
13026
|
});
|
|
11935
13027
|
//#endregion
|
|
11936
13028
|
//#region src/components/Pagination/PaginationFirst.vue
|
|
11937
|
-
const _sfc_main$
|
|
13029
|
+
const _sfc_main$41 = /* @__PURE__ */ defineComponent({
|
|
11938
13030
|
name: "PaginationFirst",
|
|
11939
13031
|
__name: "PaginationFirst",
|
|
11940
13032
|
props: {
|
|
@@ -11965,7 +13057,7 @@ const _sfc_main$35 = /* @__PURE__ */ defineComponent({
|
|
|
11965
13057
|
isDisabled: isDisabled.value,
|
|
11966
13058
|
first,
|
|
11967
13059
|
attrs: {
|
|
11968
|
-
"aria-label": locale.t("Pagination.first"
|
|
13060
|
+
"aria-label": locale.t("Pagination.first"),
|
|
11969
13061
|
"aria-disabled": isDisabled.value,
|
|
11970
13062
|
"data-disabled": isDisabled.value || void 0,
|
|
11971
13063
|
"disabled": __props.as === "button" ? isDisabled.value : void 0,
|
|
@@ -11991,7 +13083,7 @@ const _sfc_main$35 = /* @__PURE__ */ defineComponent({
|
|
|
11991
13083
|
});
|
|
11992
13084
|
//#endregion
|
|
11993
13085
|
//#region src/components/Pagination/PaginationItem.vue
|
|
11994
|
-
const _sfc_main$
|
|
13086
|
+
const _sfc_main$42 = /* @__PURE__ */ defineComponent({
|
|
11995
13087
|
name: "PaginationItem",
|
|
11996
13088
|
__name: "PaginationItem",
|
|
11997
13089
|
props: {
|
|
@@ -12019,7 +13111,7 @@ const _sfc_main$36 = /* @__PURE__ */ defineComponent({
|
|
|
12019
13111
|
}, { immediate: true });
|
|
12020
13112
|
const isSelected = toRef(() => pagination.page.value === __props.value);
|
|
12021
13113
|
const ariaLabel = toRef(() => {
|
|
12022
|
-
return isSelected.value ? locale.t("Pagination.currentPage", { page: __props.value }
|
|
13114
|
+
return isSelected.value ? locale.t("Pagination.currentPage", { page: __props.value }) : locale.t("Pagination.goToPage", { page: __props.value });
|
|
12023
13115
|
});
|
|
12024
13116
|
function select() {
|
|
12025
13117
|
if (__props.disabled) return;
|
|
@@ -12059,7 +13151,7 @@ const _sfc_main$36 = /* @__PURE__ */ defineComponent({
|
|
|
12059
13151
|
});
|
|
12060
13152
|
//#endregion
|
|
12061
13153
|
//#region src/components/Pagination/PaginationLast.vue
|
|
12062
|
-
const _sfc_main$
|
|
13154
|
+
const _sfc_main$43 = /* @__PURE__ */ defineComponent({
|
|
12063
13155
|
name: "PaginationLast",
|
|
12064
13156
|
__name: "PaginationLast",
|
|
12065
13157
|
props: {
|
|
@@ -12090,7 +13182,7 @@ const _sfc_main$37 = /* @__PURE__ */ defineComponent({
|
|
|
12090
13182
|
isDisabled: isDisabled.value,
|
|
12091
13183
|
last,
|
|
12092
13184
|
attrs: {
|
|
12093
|
-
"aria-label": locale.t("Pagination.last"
|
|
13185
|
+
"aria-label": locale.t("Pagination.last"),
|
|
12094
13186
|
"aria-disabled": isDisabled.value,
|
|
12095
13187
|
"data-disabled": isDisabled.value || void 0,
|
|
12096
13188
|
"disabled": __props.as === "button" ? isDisabled.value : void 0,
|
|
@@ -12116,7 +13208,7 @@ const _sfc_main$37 = /* @__PURE__ */ defineComponent({
|
|
|
12116
13208
|
});
|
|
12117
13209
|
//#endregion
|
|
12118
13210
|
//#region src/components/Pagination/PaginationNext.vue
|
|
12119
|
-
const _sfc_main$
|
|
13211
|
+
const _sfc_main$44 = /* @__PURE__ */ defineComponent({
|
|
12120
13212
|
name: "PaginationNext",
|
|
12121
13213
|
__name: "PaginationNext",
|
|
12122
13214
|
props: {
|
|
@@ -12147,7 +13239,7 @@ const _sfc_main$38 = /* @__PURE__ */ defineComponent({
|
|
|
12147
13239
|
isDisabled: isDisabled.value,
|
|
12148
13240
|
next,
|
|
12149
13241
|
attrs: {
|
|
12150
|
-
"aria-label": locale.t("Pagination.next"
|
|
13242
|
+
"aria-label": locale.t("Pagination.next"),
|
|
12151
13243
|
"aria-disabled": isDisabled.value,
|
|
12152
13244
|
"data-disabled": isDisabled.value || void 0,
|
|
12153
13245
|
"disabled": __props.as === "button" ? isDisabled.value : void 0,
|
|
@@ -12173,7 +13265,7 @@ const _sfc_main$38 = /* @__PURE__ */ defineComponent({
|
|
|
12173
13265
|
});
|
|
12174
13266
|
//#endregion
|
|
12175
13267
|
//#region src/components/Pagination/PaginationPrev.vue
|
|
12176
|
-
const _sfc_main$
|
|
13268
|
+
const _sfc_main$45 = /* @__PURE__ */ defineComponent({
|
|
12177
13269
|
name: "PaginationPrev",
|
|
12178
13270
|
__name: "PaginationPrev",
|
|
12179
13271
|
props: {
|
|
@@ -12204,7 +13296,7 @@ const _sfc_main$39 = /* @__PURE__ */ defineComponent({
|
|
|
12204
13296
|
isDisabled: isDisabled.value,
|
|
12205
13297
|
prev,
|
|
12206
13298
|
attrs: {
|
|
12207
|
-
"aria-label": locale.t("Pagination.prev"
|
|
13299
|
+
"aria-label": locale.t("Pagination.prev"),
|
|
12208
13300
|
"aria-disabled": isDisabled.value,
|
|
12209
13301
|
"data-disabled": isDisabled.value || void 0,
|
|
12210
13302
|
"disabled": __props.as === "button" ? isDisabled.value : void 0,
|
|
@@ -12230,7 +13322,7 @@ const _sfc_main$39 = /* @__PURE__ */ defineComponent({
|
|
|
12230
13322
|
});
|
|
12231
13323
|
//#endregion
|
|
12232
13324
|
//#region src/components/Pagination/PaginationStatus.vue
|
|
12233
|
-
const _sfc_main$
|
|
13325
|
+
const _sfc_main$47 = /* @__PURE__ */ defineComponent({
|
|
12234
13326
|
name: "PaginationStatus",
|
|
12235
13327
|
__name: "PaginationStatus",
|
|
12236
13328
|
props: {
|
|
@@ -12249,7 +13341,7 @@ const _sfc_main$41 = /* @__PURE__ */ defineComponent({
|
|
|
12249
13341
|
text.value = locale.t("Pagination.status", {
|
|
12250
13342
|
page,
|
|
12251
13343
|
pages: pagination.pages
|
|
12252
|
-
}
|
|
13344
|
+
});
|
|
12253
13345
|
}, 100);
|
|
12254
13346
|
});
|
|
12255
13347
|
/* v8 ignore stop */
|
|
@@ -12282,19 +13374,19 @@ const _sfc_main$41 = /* @__PURE__ */ defineComponent({
|
|
|
12282
13374
|
* @see https://0.vuetifyjs.com/components/pagination
|
|
12283
13375
|
*/
|
|
12284
13376
|
const Pagination = {
|
|
12285
|
-
Root: _sfc_main$
|
|
12286
|
-
Item: _sfc_main$
|
|
12287
|
-
First: _sfc_main$
|
|
12288
|
-
Prev: _sfc_main$
|
|
12289
|
-
Ellipsis: _sfc_main$
|
|
12290
|
-
Next: _sfc_main$
|
|
12291
|
-
Last: _sfc_main$
|
|
12292
|
-
Status: _sfc_main$
|
|
13377
|
+
Root: _sfc_main$46,
|
|
13378
|
+
Item: _sfc_main$42,
|
|
13379
|
+
First: _sfc_main$41,
|
|
13380
|
+
Prev: _sfc_main$45,
|
|
13381
|
+
Ellipsis: _sfc_main$40,
|
|
13382
|
+
Next: _sfc_main$44,
|
|
13383
|
+
Last: _sfc_main$43,
|
|
13384
|
+
Status: _sfc_main$47
|
|
12293
13385
|
};
|
|
12294
13386
|
//#endregion
|
|
12295
13387
|
//#region src/components/Popover/PopoverRoot.vue
|
|
12296
13388
|
const [usePopoverContext, providePopoverContext] = createContext("Popover");
|
|
12297
|
-
const _sfc_main$
|
|
13389
|
+
const _sfc_main$50 = /* @__PURE__ */ defineComponent({
|
|
12298
13390
|
name: "PopoverRoot",
|
|
12299
13391
|
__name: "PopoverRoot",
|
|
12300
13392
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -12337,7 +13429,7 @@ const _sfc_main$44 = /* @__PURE__ */ defineComponent({
|
|
|
12337
13429
|
});
|
|
12338
13430
|
//#endregion
|
|
12339
13431
|
//#region src/components/Popover/PopoverActivator.vue
|
|
12340
|
-
const _sfc_main$
|
|
13432
|
+
const _sfc_main$48 = /* @__PURE__ */ defineComponent({
|
|
12341
13433
|
name: "PopoverActivator",
|
|
12342
13434
|
__name: "PopoverActivator",
|
|
12343
13435
|
props: {
|
|
@@ -12374,7 +13466,7 @@ const _sfc_main$42 = /* @__PURE__ */ defineComponent({
|
|
|
12374
13466
|
});
|
|
12375
13467
|
//#endregion
|
|
12376
13468
|
//#region src/components/Popover/PopoverContent.vue
|
|
12377
|
-
const _sfc_main$
|
|
13469
|
+
const _sfc_main$49 = /* @__PURE__ */ defineComponent({
|
|
12378
13470
|
name: "PopoverContent",
|
|
12379
13471
|
__name: "PopoverContent",
|
|
12380
13472
|
props: {
|
|
@@ -12434,14 +13526,14 @@ const _sfc_main$43 = /* @__PURE__ */ defineComponent({
|
|
|
12434
13526
|
* @see https://0.vuetifyjs.com/components/popover
|
|
12435
13527
|
*/
|
|
12436
13528
|
const Popover = {
|
|
12437
|
-
Root: _sfc_main$
|
|
12438
|
-
Activator: _sfc_main$
|
|
12439
|
-
Content: _sfc_main$
|
|
13529
|
+
Root: _sfc_main$50,
|
|
13530
|
+
Activator: _sfc_main$48,
|
|
13531
|
+
Content: _sfc_main$49
|
|
12440
13532
|
};
|
|
12441
13533
|
//#endregion
|
|
12442
13534
|
//#region src/components/Radio/RadioGroup.vue
|
|
12443
13535
|
const [useRadioGroup, provideRadioGroup] = createContext();
|
|
12444
|
-
const _sfc_main$
|
|
13536
|
+
const _sfc_main$51 = /* @__PURE__ */ defineComponent({
|
|
12445
13537
|
name: "RadioGroup",
|
|
12446
13538
|
__name: "RadioGroup",
|
|
12447
13539
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -12506,7 +13598,7 @@ const _sfc_main$45 = /* @__PURE__ */ defineComponent({
|
|
|
12506
13598
|
//#endregion
|
|
12507
13599
|
//#region src/components/Radio/RadioRoot.vue
|
|
12508
13600
|
const [useRadioRoot, provideRadioRoot] = createContext();
|
|
12509
|
-
const _sfc_main$
|
|
13601
|
+
const _sfc_main$54 = /* @__PURE__ */ defineComponent({
|
|
12510
13602
|
name: "RadioRoot",
|
|
12511
13603
|
inheritAttrs: false,
|
|
12512
13604
|
__name: "RadioRoot",
|
|
@@ -12627,7 +13719,7 @@ const _sfc_main$48 = /* @__PURE__ */ defineComponent({
|
|
|
12627
13719
|
}), {
|
|
12628
13720
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
12629
13721
|
_: 3
|
|
12630
|
-
}, 16, ["as", "renderless"]), unref(name) ? (openBlock(), createBlock(_sfc_main$
|
|
13722
|
+
}, 16, ["as", "renderless"]), unref(name) ? (openBlock(), createBlock(_sfc_main$52, { key: 0 })) : createCommentVNode("v-if", true)], 64);
|
|
12631
13723
|
};
|
|
12632
13724
|
}
|
|
12633
13725
|
});
|
|
@@ -12651,7 +13743,7 @@ const visuallyHiddenStyle$2 = {
|
|
|
12651
13743
|
whiteSpace: "nowrap",
|
|
12652
13744
|
border: "0"
|
|
12653
13745
|
};
|
|
12654
|
-
const _sfc_main$
|
|
13746
|
+
const _sfc_main$52 = /* @__PURE__ */ defineComponent({
|
|
12655
13747
|
name: "RadioHiddenInput",
|
|
12656
13748
|
__name: "RadioHiddenInput",
|
|
12657
13749
|
props: {
|
|
@@ -12688,7 +13780,7 @@ const _sfc_main$46 = /* @__PURE__ */ defineComponent({
|
|
|
12688
13780
|
});
|
|
12689
13781
|
//#endregion
|
|
12690
13782
|
//#region src/components/Radio/RadioIndicator.vue
|
|
12691
|
-
const _sfc_main$
|
|
13783
|
+
const _sfc_main$53 = /* @__PURE__ */ defineComponent({
|
|
12692
13784
|
name: "RadioIndicator",
|
|
12693
13785
|
__name: "RadioIndicator",
|
|
12694
13786
|
props: {
|
|
@@ -12753,14 +13845,14 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
|
|
|
12753
13845
|
* ```
|
|
12754
13846
|
*/
|
|
12755
13847
|
const Radio = {
|
|
12756
|
-
Group: _sfc_main$
|
|
12757
|
-
HiddenInput: _sfc_main$
|
|
12758
|
-
Indicator: _sfc_main$
|
|
12759
|
-
Root: _sfc_main$
|
|
13848
|
+
Group: _sfc_main$51,
|
|
13849
|
+
HiddenInput: _sfc_main$52,
|
|
13850
|
+
Indicator: _sfc_main$53,
|
|
13851
|
+
Root: _sfc_main$54
|
|
12760
13852
|
};
|
|
12761
13853
|
//#endregion
|
|
12762
13854
|
//#region src/components/Scrim/Scrim.vue
|
|
12763
|
-
const _sfc_main$
|
|
13855
|
+
const _sfc_main$55 = /* @__PURE__ */ defineComponent({
|
|
12764
13856
|
name: "Scrim",
|
|
12765
13857
|
inheritAttrs: false,
|
|
12766
13858
|
__name: "Scrim",
|
|
@@ -12854,7 +13946,7 @@ const visuallyHiddenStyle$1 = {
|
|
|
12854
13946
|
whiteSpace: "nowrap",
|
|
12855
13947
|
border: "0"
|
|
12856
13948
|
};
|
|
12857
|
-
const _sfc_main$
|
|
13949
|
+
const _sfc_main$92 = /* @__PURE__ */ defineComponent({
|
|
12858
13950
|
name: "SelectHiddenInput",
|
|
12859
13951
|
__name: "SelectHiddenInput",
|
|
12860
13952
|
props: { namespace: { default: "v0:select" } },
|
|
@@ -12888,7 +13980,7 @@ const _sfc_main$81 = /* @__PURE__ */ defineComponent({
|
|
|
12888
13980
|
//#endregion
|
|
12889
13981
|
//#region src/components/Select/SelectRoot.vue
|
|
12890
13982
|
const [useSelectContext, provideSelectContext] = createContext();
|
|
12891
|
-
const _sfc_main$
|
|
13983
|
+
const _sfc_main$61 = /* @__PURE__ */ defineComponent({
|
|
12892
13984
|
name: "SelectRoot",
|
|
12893
13985
|
__name: "SelectRoot",
|
|
12894
13986
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -12927,10 +14019,7 @@ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
|
|
|
12927
14019
|
events: true
|
|
12928
14020
|
});
|
|
12929
14021
|
useProxyModel(selection, model, { multiple: __props.multiple });
|
|
12930
|
-
const selectedId = toRef(() =>
|
|
12931
|
-
const ids = Array.from(selection.selectedIds);
|
|
12932
|
-
return ids.length > 0 ? ids[0] : void 0;
|
|
12933
|
-
});
|
|
14022
|
+
const selectedId = toRef(() => selection.selectedIds.values().next().value);
|
|
12934
14023
|
const popover = usePopover({ id });
|
|
12935
14024
|
const isOpen = popover.isOpen;
|
|
12936
14025
|
const activatorEl = shallowRef(null);
|
|
@@ -13003,13 +14092,13 @@ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
|
|
|
13003
14092
|
}, {
|
|
13004
14093
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
13005
14094
|
_: 3
|
|
13006
|
-
}, 8, ["as"]), __props.name ? (openBlock(), createBlock(_sfc_main$
|
|
14095
|
+
}, 8, ["as"]), __props.name ? (openBlock(), createBlock(_sfc_main$92, { key: 0 })) : createCommentVNode("v-if", true)], 64);
|
|
13007
14096
|
};
|
|
13008
14097
|
}
|
|
13009
14098
|
});
|
|
13010
14099
|
//#endregion
|
|
13011
14100
|
//#region src/components/Select/SelectActivator.vue
|
|
13012
|
-
const _sfc_main$
|
|
14101
|
+
const _sfc_main$56 = /* @__PURE__ */ defineComponent({
|
|
13013
14102
|
name: "SelectActivator",
|
|
13014
14103
|
__name: "SelectActivator",
|
|
13015
14104
|
props: {
|
|
@@ -13087,7 +14176,7 @@ const _sfc_main$50 = /* @__PURE__ */ defineComponent({
|
|
|
13087
14176
|
});
|
|
13088
14177
|
//#endregion
|
|
13089
14178
|
//#region src/components/Select/SelectContent.vue
|
|
13090
|
-
const _sfc_main$
|
|
14179
|
+
const _sfc_main$57 = /* @__PURE__ */ defineComponent({
|
|
13091
14180
|
name: "SelectContent",
|
|
13092
14181
|
__name: "SelectContent",
|
|
13093
14182
|
props: {
|
|
@@ -13124,7 +14213,7 @@ const _sfc_main$51 = /* @__PURE__ */ defineComponent({
|
|
|
13124
14213
|
});
|
|
13125
14214
|
//#endregion
|
|
13126
14215
|
//#region src/components/Select/SelectCue.vue
|
|
13127
|
-
const _sfc_main$
|
|
14216
|
+
const _sfc_main$58 = /* @__PURE__ */ defineComponent({
|
|
13128
14217
|
name: "SelectCue",
|
|
13129
14218
|
__name: "SelectCue",
|
|
13130
14219
|
props: {
|
|
@@ -13151,7 +14240,7 @@ const _sfc_main$52 = /* @__PURE__ */ defineComponent({
|
|
|
13151
14240
|
});
|
|
13152
14241
|
//#endregion
|
|
13153
14242
|
//#region src/components/Select/SelectItem.vue
|
|
13154
|
-
const _sfc_main$
|
|
14243
|
+
const _sfc_main$59 = /* @__PURE__ */ defineComponent({
|
|
13155
14244
|
name: "SelectItem",
|
|
13156
14245
|
__name: "SelectItem",
|
|
13157
14246
|
props: {
|
|
@@ -13206,7 +14295,7 @@ const _sfc_main$53 = /* @__PURE__ */ defineComponent({
|
|
|
13206
14295
|
});
|
|
13207
14296
|
//#endregion
|
|
13208
14297
|
//#region src/components/Select/SelectPlaceholder.vue
|
|
13209
|
-
const _sfc_main$
|
|
14298
|
+
const _sfc_main$60 = /* @__PURE__ */ defineComponent({
|
|
13210
14299
|
name: "SelectPlaceholder",
|
|
13211
14300
|
__name: "SelectPlaceholder",
|
|
13212
14301
|
props: {
|
|
@@ -13230,7 +14319,7 @@ const _sfc_main$54 = /* @__PURE__ */ defineComponent({
|
|
|
13230
14319
|
});
|
|
13231
14320
|
//#endregion
|
|
13232
14321
|
//#region src/components/Select/SelectValue.vue
|
|
13233
|
-
const _sfc_main$
|
|
14322
|
+
const _sfc_main$62 = /* @__PURE__ */ defineComponent({
|
|
13234
14323
|
name: "SelectValue",
|
|
13235
14324
|
__name: "SelectValue",
|
|
13236
14325
|
props: {
|
|
@@ -13308,18 +14397,18 @@ const _sfc_main$56 = /* @__PURE__ */ defineComponent({
|
|
|
13308
14397
|
* ```
|
|
13309
14398
|
*/
|
|
13310
14399
|
const Select = {
|
|
13311
|
-
Root: _sfc_main$
|
|
13312
|
-
Activator: _sfc_main$
|
|
13313
|
-
Value: _sfc_main$
|
|
13314
|
-
Content: _sfc_main$
|
|
13315
|
-
Cue: _sfc_main$
|
|
13316
|
-
Item: _sfc_main$
|
|
13317
|
-
Placeholder: _sfc_main$
|
|
14400
|
+
Root: _sfc_main$61,
|
|
14401
|
+
Activator: _sfc_main$56,
|
|
14402
|
+
Value: _sfc_main$62,
|
|
14403
|
+
Content: _sfc_main$57,
|
|
14404
|
+
Cue: _sfc_main$58,
|
|
14405
|
+
Item: _sfc_main$59,
|
|
14406
|
+
Placeholder: _sfc_main$60
|
|
13318
14407
|
};
|
|
13319
14408
|
//#endregion
|
|
13320
14409
|
//#region src/components/Selection/SelectionRoot.vue
|
|
13321
14410
|
const [useSelectionRoot, provideSelectionRoot] = createContext();
|
|
13322
|
-
const _sfc_main$
|
|
14411
|
+
const _sfc_main$64 = /* @__PURE__ */ defineComponent({
|
|
13323
14412
|
name: "SelectionRoot",
|
|
13324
14413
|
__name: "SelectionRoot",
|
|
13325
14414
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -13371,7 +14460,7 @@ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
|
|
|
13371
14460
|
});
|
|
13372
14461
|
//#endregion
|
|
13373
14462
|
//#region src/components/Selection/SelectionItem.vue
|
|
13374
|
-
const _sfc_main$
|
|
14463
|
+
const _sfc_main$63 = /* @__PURE__ */ defineComponent({
|
|
13375
14464
|
name: "SelectionItem",
|
|
13376
14465
|
__name: "SelectionItem",
|
|
13377
14466
|
props: {
|
|
@@ -13421,13 +14510,238 @@ const _sfc_main$57 = /* @__PURE__ */ defineComponent({
|
|
|
13421
14510
|
* @see https://0.vuetifyjs.com/components/selection
|
|
13422
14511
|
*/
|
|
13423
14512
|
const Selection = {
|
|
13424
|
-
Root: _sfc_main$
|
|
13425
|
-
Item: _sfc_main$
|
|
14513
|
+
Root: _sfc_main$64,
|
|
14514
|
+
Item: _sfc_main$63
|
|
14515
|
+
};
|
|
14516
|
+
//#endregion
|
|
14517
|
+
//#region src/components/Snackbar/SnackbarPortal.vue
|
|
14518
|
+
const _sfc_main$74 = /* @__PURE__ */ defineComponent({
|
|
14519
|
+
name: "SnackbarPortal",
|
|
14520
|
+
inheritAttrs: false,
|
|
14521
|
+
__name: "SnackbarPortal",
|
|
14522
|
+
props: {
|
|
14523
|
+
teleport: {
|
|
14524
|
+
type: [String, Boolean],
|
|
14525
|
+
default: "body"
|
|
14526
|
+
},
|
|
14527
|
+
as: { default: "div" },
|
|
14528
|
+
renderless: { type: Boolean }
|
|
14529
|
+
},
|
|
14530
|
+
setup(__props) {
|
|
14531
|
+
const ticket = useStack().register();
|
|
14532
|
+
onUnmounted(() => ticket.unregister());
|
|
14533
|
+
const styles = toRef(() => ({ zIndex: ticket.zIndex.value }));
|
|
14534
|
+
const slotProps = toRef(() => ({ zIndex: ticket.zIndex.value }));
|
|
14535
|
+
return (_ctx, _cache) => {
|
|
14536
|
+
return __props.teleport ? (openBlock(), createBlock(Teleport, {
|
|
14537
|
+
key: 0,
|
|
14538
|
+
to: __props.teleport
|
|
14539
|
+
}, [createVNode(unref(_sfc_main), mergeProps({
|
|
14540
|
+
as: __props.as,
|
|
14541
|
+
style: styles.value
|
|
14542
|
+
}, _ctx.$attrs), {
|
|
14543
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
14544
|
+
_: 3
|
|
14545
|
+
}, 16, ["as", "style"])], 8, ["to"])) : (openBlock(), createBlock(unref(_sfc_main), mergeProps({
|
|
14546
|
+
key: 1,
|
|
14547
|
+
as: __props.as,
|
|
14548
|
+
style: styles.value
|
|
14549
|
+
}, _ctx.$attrs), {
|
|
14550
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
14551
|
+
_: 3
|
|
14552
|
+
}, 16, ["as", "style"]));
|
|
14553
|
+
};
|
|
14554
|
+
}
|
|
14555
|
+
});
|
|
14556
|
+
//#endregion
|
|
14557
|
+
//#region src/components/Snackbar/SnackbarQueue.vue
|
|
14558
|
+
const [useSnackbarQueueContext, provideSnackbarQueueContext] = createContext({ suffix: "queue" });
|
|
14559
|
+
const _sfc_main$75 = /* @__PURE__ */ defineComponent({
|
|
14560
|
+
name: "SnackbarQueue",
|
|
14561
|
+
__name: "SnackbarQueue",
|
|
14562
|
+
props: {
|
|
14563
|
+
namespace: { default: "v0:notifications" },
|
|
14564
|
+
as: { default: "div" },
|
|
14565
|
+
renderless: { type: Boolean }
|
|
14566
|
+
},
|
|
14567
|
+
setup(__props) {
|
|
14568
|
+
const notifications = useNotifications(__props.namespace);
|
|
14569
|
+
function dismiss(id) {
|
|
14570
|
+
notifications.unregister(id);
|
|
14571
|
+
if (reasons.size > 0) notifications.queue.pause();
|
|
14572
|
+
}
|
|
14573
|
+
provideSnackbarQueueContext(__props.namespace, { dismiss });
|
|
14574
|
+
const items = computed(() => notifications.queue.values().map((q) => notifications.get(q.id)).filter((n) => !/* @__PURE__ */ isUndefined(n)).toReversed());
|
|
14575
|
+
const container = useTemplateRef("container");
|
|
14576
|
+
const reasons = /* @__PURE__ */ new Set();
|
|
14577
|
+
function pause(reason) {
|
|
14578
|
+
reasons.add(reason);
|
|
14579
|
+
notifications.queue.pause();
|
|
14580
|
+
}
|
|
14581
|
+
function resume(reason) {
|
|
14582
|
+
reasons.delete(reason);
|
|
14583
|
+
if (reasons.size === 0) notifications.queue.resume();
|
|
14584
|
+
}
|
|
14585
|
+
function onEnter() {
|
|
14586
|
+
pause("hover");
|
|
14587
|
+
}
|
|
14588
|
+
function onLeave() {
|
|
14589
|
+
resume("hover");
|
|
14590
|
+
}
|
|
14591
|
+
function onFocusin() {
|
|
14592
|
+
pause("focus");
|
|
14593
|
+
}
|
|
14594
|
+
function onFocusout(e) {
|
|
14595
|
+
const el = container.value?.element ?? null;
|
|
14596
|
+
if (/* @__PURE__ */ isElement(el) && /* @__PURE__ */ isElement(e.relatedTarget) && el.contains(e.relatedTarget)) return;
|
|
14597
|
+
resume("focus");
|
|
14598
|
+
}
|
|
14599
|
+
onUnmounted(() => {
|
|
14600
|
+
if (reasons.size > 0) {
|
|
14601
|
+
reasons.clear();
|
|
14602
|
+
notifications.queue.resume();
|
|
14603
|
+
}
|
|
14604
|
+
});
|
|
14605
|
+
const slotProps = toRef(() => ({
|
|
14606
|
+
items: items.value,
|
|
14607
|
+
attrs: {
|
|
14608
|
+
onMouseenter: onEnter,
|
|
14609
|
+
onMouseleave: onLeave,
|
|
14610
|
+
onFocusin,
|
|
14611
|
+
onFocusout
|
|
14612
|
+
}
|
|
14613
|
+
}));
|
|
14614
|
+
return (_ctx, _cache) => {
|
|
14615
|
+
return openBlock(), createBlock(unref(_sfc_main), mergeProps({
|
|
14616
|
+
ref_key: "container",
|
|
14617
|
+
ref: container
|
|
14618
|
+
}, slotProps.value.attrs, { as: __props.as }), {
|
|
14619
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
14620
|
+
_: 3
|
|
14621
|
+
}, 16, ["as"]);
|
|
14622
|
+
};
|
|
14623
|
+
}
|
|
14624
|
+
});
|
|
14625
|
+
//#endregion
|
|
14626
|
+
//#region src/components/Snackbar/SnackbarRoot.vue
|
|
14627
|
+
const [useSnackbarRootContext, provideSnackbarRootContext] = createContext({ suffix: "root" });
|
|
14628
|
+
const _sfc_main$76 = /* @__PURE__ */ defineComponent({
|
|
14629
|
+
name: "SnackbarRoot",
|
|
14630
|
+
__name: "SnackbarRoot",
|
|
14631
|
+
props: {
|
|
14632
|
+
namespace: { default: "v0:notifications" },
|
|
14633
|
+
id: { default: () => /* @__PURE__ */ useId() },
|
|
14634
|
+
as: { default: "div" },
|
|
14635
|
+
renderless: { type: Boolean }
|
|
14636
|
+
},
|
|
14637
|
+
emits: ["dismiss"],
|
|
14638
|
+
setup(__props, { emit: __emit }) {
|
|
14639
|
+
const emit = __emit;
|
|
14640
|
+
const queue = useSnackbarQueueContext(__props.namespace, null);
|
|
14641
|
+
function onDismiss() {
|
|
14642
|
+
if (queue) queue.dismiss(__props.id);
|
|
14643
|
+
else emit("dismiss", __props.id);
|
|
14644
|
+
}
|
|
14645
|
+
provideSnackbarRootContext(__props.namespace, {
|
|
14646
|
+
id: __props.id,
|
|
14647
|
+
onDismiss
|
|
14648
|
+
});
|
|
14649
|
+
const slotProps = toRef(() => ({
|
|
14650
|
+
id: __props.id,
|
|
14651
|
+
attrs: { role: "status" }
|
|
14652
|
+
}));
|
|
14653
|
+
return (_ctx, _cache) => {
|
|
14654
|
+
return openBlock(), createBlock(unref(_sfc_main), mergeProps(slotProps.value.attrs, { as: __props.as }), {
|
|
14655
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
14656
|
+
_: 3
|
|
14657
|
+
}, 16, ["as"]);
|
|
14658
|
+
};
|
|
14659
|
+
}
|
|
14660
|
+
});
|
|
14661
|
+
//#endregion
|
|
14662
|
+
//#region src/components/Snackbar/SnackbarContent.vue
|
|
14663
|
+
const _sfc_main$73 = /* @__PURE__ */ defineComponent({
|
|
14664
|
+
name: "SnackbarContent",
|
|
14665
|
+
__name: "SnackbarContent",
|
|
14666
|
+
props: {
|
|
14667
|
+
as: { default: "div" },
|
|
14668
|
+
renderless: { type: Boolean }
|
|
14669
|
+
},
|
|
14670
|
+
setup(__props) {
|
|
14671
|
+
return (_ctx, _cache) => {
|
|
14672
|
+
return openBlock(), createBlock(unref(_sfc_main), { as: __props.as }, {
|
|
14673
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
|
|
14674
|
+
_: 3
|
|
14675
|
+
}, 8, ["as"]);
|
|
14676
|
+
};
|
|
14677
|
+
}
|
|
14678
|
+
});
|
|
14679
|
+
//#endregion
|
|
14680
|
+
//#region src/components/Snackbar/SnackbarClose.vue
|
|
14681
|
+
const _sfc_main$72 = /* @__PURE__ */ defineComponent({
|
|
14682
|
+
name: "SnackbarClose",
|
|
14683
|
+
__name: "SnackbarClose",
|
|
14684
|
+
props: {
|
|
14685
|
+
namespace: { default: "v0:notifications" },
|
|
14686
|
+
as: { default: "button" },
|
|
14687
|
+
renderless: { type: Boolean }
|
|
14688
|
+
},
|
|
14689
|
+
setup(__props) {
|
|
14690
|
+
const context = useSnackbarRootContext(__props.namespace);
|
|
14691
|
+
function onClick() {
|
|
14692
|
+
context.onDismiss();
|
|
14693
|
+
}
|
|
14694
|
+
const slotProps = toRef(() => ({ attrs: {
|
|
14695
|
+
"type": __props.as === "button" ? "button" : void 0,
|
|
14696
|
+
"aria-label": "Close",
|
|
14697
|
+
"onClick": onClick
|
|
14698
|
+
} }));
|
|
14699
|
+
return (_ctx, _cache) => {
|
|
14700
|
+
return openBlock(), createBlock(unref(_sfc_main), mergeProps(slotProps.value.attrs, { as: __props.as }), {
|
|
14701
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
14702
|
+
_: 3
|
|
14703
|
+
}, 16, ["as"]);
|
|
14704
|
+
};
|
|
14705
|
+
}
|
|
14706
|
+
});
|
|
14707
|
+
//#endregion
|
|
14708
|
+
//#region src/components/Snackbar/index.ts
|
|
14709
|
+
/**
|
|
14710
|
+
* Snackbar component with sub-components for building toast notifications.
|
|
14711
|
+
*
|
|
14712
|
+
* @see https://0.vuetifyjs.com/components/snackbar
|
|
14713
|
+
*
|
|
14714
|
+
* @example
|
|
14715
|
+
* ```vue
|
|
14716
|
+
* <script setup lang="ts">
|
|
14717
|
+
* import { Snackbar } from '@vuetify/v0'
|
|
14718
|
+
* <\/script>
|
|
14719
|
+
*
|
|
14720
|
+
* <template>
|
|
14721
|
+
* <Snackbar.Portal>
|
|
14722
|
+
* <Snackbar.Queue v-slot="{ items }">
|
|
14723
|
+
* <template v-for="item in items" :key="item.id">
|
|
14724
|
+
* <Snackbar.Root :id="item.id">
|
|
14725
|
+
* <Snackbar.Content>{{ item.subject }}</Snackbar.Content>
|
|
14726
|
+
* <Snackbar.Close />
|
|
14727
|
+
* </Snackbar.Root>
|
|
14728
|
+
* </template>
|
|
14729
|
+
* </Snackbar.Queue>
|
|
14730
|
+
* </Snackbar.Portal>
|
|
14731
|
+
* </template>
|
|
14732
|
+
* ```
|
|
14733
|
+
*/
|
|
14734
|
+
const Snackbar = {
|
|
14735
|
+
Portal: _sfc_main$74,
|
|
14736
|
+
Queue: _sfc_main$75,
|
|
14737
|
+
Root: _sfc_main$76,
|
|
14738
|
+
Content: _sfc_main$73,
|
|
14739
|
+
Close: _sfc_main$72
|
|
13426
14740
|
};
|
|
13427
14741
|
//#endregion
|
|
13428
14742
|
//#region src/components/Slider/SliderRoot.vue
|
|
13429
14743
|
const [useSliderRoot, provideSliderRoot] = createContext();
|
|
13430
|
-
const _sfc_main$
|
|
14744
|
+
const _sfc_main$69 = /* @__PURE__ */ defineComponent({
|
|
13431
14745
|
name: "SliderRoot",
|
|
13432
14746
|
inheritAttrs: false,
|
|
13433
14747
|
__name: "SliderRoot",
|
|
@@ -13559,7 +14873,7 @@ const _sfc_main$63 = /* @__PURE__ */ defineComponent({
|
|
|
13559
14873
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
13560
14874
|
_: 3
|
|
13561
14875
|
}, 16, ["as", "renderless"]), __props.name ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(slider).values.value, (_, index) => {
|
|
13562
|
-
return openBlock(), createBlock(_sfc_main$
|
|
14876
|
+
return openBlock(), createBlock(_sfc_main$67, {
|
|
13563
14877
|
key: index,
|
|
13564
14878
|
index
|
|
13565
14879
|
}, null, 8, ["index"]);
|
|
@@ -13575,7 +14889,7 @@ const _hoisted_1$1 = [
|
|
|
13575
14889
|
"name",
|
|
13576
14890
|
"value"
|
|
13577
14891
|
];
|
|
13578
|
-
const _sfc_main$
|
|
14892
|
+
const _sfc_main$67 = /* @__PURE__ */ defineComponent({
|
|
13579
14893
|
name: "SliderHiddenInput",
|
|
13580
14894
|
__name: "SliderHiddenInput",
|
|
13581
14895
|
props: {
|
|
@@ -13600,7 +14914,7 @@ const _sfc_main$61 = /* @__PURE__ */ defineComponent({
|
|
|
13600
14914
|
});
|
|
13601
14915
|
//#endregion
|
|
13602
14916
|
//#region src/components/Slider/SliderRange.vue
|
|
13603
|
-
const _sfc_main$
|
|
14917
|
+
const _sfc_main$68 = /* @__PURE__ */ defineComponent({
|
|
13604
14918
|
name: "SliderRange",
|
|
13605
14919
|
inheritAttrs: false,
|
|
13606
14920
|
__name: "SliderRange",
|
|
@@ -13661,7 +14975,7 @@ const _sfc_main$62 = /* @__PURE__ */ defineComponent({
|
|
|
13661
14975
|
});
|
|
13662
14976
|
//#endregion
|
|
13663
14977
|
//#region src/components/Slider/SliderThumb.vue
|
|
13664
|
-
const _sfc_main$
|
|
14978
|
+
const _sfc_main$70 = /* @__PURE__ */ defineComponent({
|
|
13665
14979
|
name: "SliderThumb",
|
|
13666
14980
|
inheritAttrs: false,
|
|
13667
14981
|
__name: "SliderThumb",
|
|
@@ -13775,7 +15089,7 @@ const _sfc_main$64 = /* @__PURE__ */ defineComponent({
|
|
|
13775
15089
|
});
|
|
13776
15090
|
//#endregion
|
|
13777
15091
|
//#region src/components/Slider/SliderTrack.vue
|
|
13778
|
-
const _sfc_main$
|
|
15092
|
+
const _sfc_main$71 = /* @__PURE__ */ defineComponent({
|
|
13779
15093
|
name: "SliderTrack",
|
|
13780
15094
|
inheritAttrs: false,
|
|
13781
15095
|
__name: "SliderTrack",
|
|
@@ -13869,16 +15183,16 @@ const _sfc_main$65 = /* @__PURE__ */ defineComponent({
|
|
|
13869
15183
|
* ```
|
|
13870
15184
|
*/
|
|
13871
15185
|
const Slider = {
|
|
13872
|
-
Root: _sfc_main$
|
|
13873
|
-
Track: _sfc_main$
|
|
13874
|
-
Range: _sfc_main$
|
|
13875
|
-
Thumb: _sfc_main$
|
|
13876
|
-
HiddenInput: _sfc_main$
|
|
15186
|
+
Root: _sfc_main$69,
|
|
15187
|
+
Track: _sfc_main$71,
|
|
15188
|
+
Range: _sfc_main$68,
|
|
15189
|
+
Thumb: _sfc_main$70,
|
|
15190
|
+
HiddenInput: _sfc_main$67
|
|
13877
15191
|
};
|
|
13878
15192
|
//#endregion
|
|
13879
15193
|
//#region src/components/Splitter/SplitterRoot.vue
|
|
13880
15194
|
const [useSplitterRoot, provideSplitterRoot] = createContext("v0:splitter");
|
|
13881
|
-
const _sfc_main$
|
|
15195
|
+
const _sfc_main$79 = /* @__PURE__ */ defineComponent({
|
|
13882
15196
|
name: "SplitterRoot",
|
|
13883
15197
|
inheritAttrs: false,
|
|
13884
15198
|
__name: "SplitterRoot",
|
|
@@ -14043,10 +15357,14 @@ const _sfc_main$68 = /* @__PURE__ */ defineComponent({
|
|
|
14043
15357
|
}, {
|
|
14044
15358
|
as: __props.as,
|
|
14045
15359
|
renderless: __props.renderless,
|
|
14046
|
-
style:
|
|
14047
|
-
|
|
14048
|
-
|
|
14049
|
-
|
|
15360
|
+
style: [
|
|
15361
|
+
unref(attrs).style,
|
|
15362
|
+
slotProps.value.attrs.style,
|
|
15363
|
+
{
|
|
15364
|
+
display: "flex",
|
|
15365
|
+
flexDirection: __props.orientation === "horizontal" ? "row" : "column"
|
|
15366
|
+
}
|
|
15367
|
+
]
|
|
14050
15368
|
}), {
|
|
14051
15369
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
14052
15370
|
_: 3
|
|
@@ -14060,7 +15378,7 @@ const _sfc_main$68 = /* @__PURE__ */ defineComponent({
|
|
|
14060
15378
|
});
|
|
14061
15379
|
//#endregion
|
|
14062
15380
|
//#region src/components/Splitter/SplitterPanel.vue
|
|
14063
|
-
const _sfc_main$
|
|
15381
|
+
const _sfc_main$78 = /* @__PURE__ */ defineComponent({
|
|
14064
15382
|
name: "SplitterPanel",
|
|
14065
15383
|
inheritAttrs: false,
|
|
14066
15384
|
__name: "SplitterPanel",
|
|
@@ -14154,12 +15472,16 @@ const _sfc_main$67 = /* @__PURE__ */ defineComponent({
|
|
|
14154
15472
|
}, {
|
|
14155
15473
|
as: __props.as,
|
|
14156
15474
|
renderless: __props.renderless,
|
|
14157
|
-
style:
|
|
14158
|
-
|
|
14159
|
-
|
|
14160
|
-
|
|
14161
|
-
|
|
14162
|
-
|
|
15475
|
+
style: [
|
|
15476
|
+
unref(attrs).style,
|
|
15477
|
+
slotProps.value.attrs.style,
|
|
15478
|
+
{
|
|
15479
|
+
flexGrow: 0,
|
|
15480
|
+
flexShrink: 0,
|
|
15481
|
+
flexBasis: `${size.value}%`,
|
|
15482
|
+
overflow: "hidden"
|
|
15483
|
+
}
|
|
15484
|
+
]
|
|
14163
15485
|
}), {
|
|
14164
15486
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
14165
15487
|
_: 3
|
|
@@ -14173,7 +15495,7 @@ const _sfc_main$67 = /* @__PURE__ */ defineComponent({
|
|
|
14173
15495
|
});
|
|
14174
15496
|
//#endregion
|
|
14175
15497
|
//#region src/components/Splitter/SplitterHandle.vue
|
|
14176
|
-
const _sfc_main$
|
|
15498
|
+
const _sfc_main$77 = /* @__PURE__ */ defineComponent({
|
|
14177
15499
|
name: "SplitterHandle",
|
|
14178
15500
|
inheritAttrs: false,
|
|
14179
15501
|
__name: "SplitterHandle",
|
|
@@ -14197,7 +15519,6 @@ const _sfc_main$66 = /* @__PURE__ */ defineComponent({
|
|
|
14197
15519
|
});
|
|
14198
15520
|
const hovering = shallowRef(false);
|
|
14199
15521
|
const startPosition = shallowRef(0);
|
|
14200
|
-
let rafId = 0;
|
|
14201
15522
|
let latestPos = 0;
|
|
14202
15523
|
const isDisabled = toRef(() => __props.disabled || splitter.disabled.value);
|
|
14203
15524
|
const isHorizontal = toRef(() => splitter.orientation.value === "horizontal");
|
|
@@ -14230,23 +15551,21 @@ const _sfc_main$66 = /* @__PURE__ */ defineComponent({
|
|
|
14230
15551
|
splitter.onStartDrag(ticket.index);
|
|
14231
15552
|
}
|
|
14232
15553
|
useToggleScope(() => splitter.draggingHandle.value === ticket.index, () => {
|
|
15554
|
+
const update = useRaf(() => {
|
|
15555
|
+
const root = splitter.rootEl.value;
|
|
15556
|
+
if (!root) return;
|
|
15557
|
+
const rootSize = isHorizontal.value ? root.offsetWidth : root.offsetHeight;
|
|
15558
|
+
if (!rootSize) return;
|
|
15559
|
+
const delta = (latestPos - startPosition.value) / rootSize * 100;
|
|
15560
|
+
startPosition.value = latestPos;
|
|
15561
|
+
splitter.resize(ticket.index, delta);
|
|
15562
|
+
});
|
|
14233
15563
|
useDocumentEventListener("pointermove", (e) => {
|
|
14234
15564
|
latestPos = isHorizontal.value ? e.clientX : e.clientY;
|
|
14235
|
-
|
|
14236
|
-
rafId = requestAnimationFrame(() => {
|
|
14237
|
-
const root = splitter.rootEl.value;
|
|
14238
|
-
if (!root) return;
|
|
14239
|
-
const rootSize = isHorizontal.value ? root.offsetWidth : root.offsetHeight;
|
|
14240
|
-
if (!rootSize) return;
|
|
14241
|
-
const delta = (latestPos - startPosition.value) / rootSize * 100;
|
|
14242
|
-
startPosition.value = latestPos;
|
|
14243
|
-
splitter.resize(ticket.index, delta);
|
|
14244
|
-
rafId = 0;
|
|
14245
|
-
});
|
|
15565
|
+
update();
|
|
14246
15566
|
});
|
|
14247
15567
|
useDocumentEventListener("pointerup", () => {
|
|
14248
|
-
|
|
14249
|
-
rafId = 0;
|
|
15568
|
+
update.cancel();
|
|
14250
15569
|
if (IN_BROWSER) {
|
|
14251
15570
|
document.documentElement.style.userSelect = "";
|
|
14252
15571
|
document.documentElement.style.touchAction = "";
|
|
@@ -14254,8 +15573,6 @@ const _sfc_main$66 = /* @__PURE__ */ defineComponent({
|
|
|
14254
15573
|
splitter.onEndDrag();
|
|
14255
15574
|
});
|
|
14256
15575
|
onScopeDispose(() => {
|
|
14257
|
-
if (rafId) cancelAnimationFrame(rafId);
|
|
14258
|
-
rafId = 0;
|
|
14259
15576
|
splitter.onEndDrag();
|
|
14260
15577
|
if (IN_BROWSER) {
|
|
14261
15578
|
document.documentElement.style.userSelect = "";
|
|
@@ -14356,11 +15673,19 @@ const _sfc_main$66 = /* @__PURE__ */ defineComponent({
|
|
|
14356
15673
|
}, {
|
|
14357
15674
|
as: __props.as,
|
|
14358
15675
|
renderless: __props.renderless,
|
|
14359
|
-
style:
|
|
15676
|
+
style: [
|
|
15677
|
+
unref(attrs).style,
|
|
15678
|
+
slotProps.value.attrs.style,
|
|
15679
|
+
{ flexShrink: 0 }
|
|
15680
|
+
]
|
|
14360
15681
|
}), {
|
|
14361
15682
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
14362
15683
|
_: 3
|
|
14363
|
-
}, 16, [
|
|
15684
|
+
}, 16, [
|
|
15685
|
+
"as",
|
|
15686
|
+
"renderless",
|
|
15687
|
+
"style"
|
|
15688
|
+
]);
|
|
14364
15689
|
};
|
|
14365
15690
|
}
|
|
14366
15691
|
});
|
|
@@ -14393,14 +15718,14 @@ const _sfc_main$66 = /* @__PURE__ */ defineComponent({
|
|
|
14393
15718
|
* ```
|
|
14394
15719
|
*/
|
|
14395
15720
|
const Splitter = {
|
|
14396
|
-
Root: _sfc_main$
|
|
14397
|
-
Panel: _sfc_main$
|
|
14398
|
-
Handle: _sfc_main$
|
|
15721
|
+
Root: _sfc_main$79,
|
|
15722
|
+
Panel: _sfc_main$78,
|
|
15723
|
+
Handle: _sfc_main$77
|
|
14399
15724
|
};
|
|
14400
15725
|
//#endregion
|
|
14401
15726
|
//#region src/components/Switch/SwitchGroup.vue
|
|
14402
15727
|
const [useSwitchGroup, provideSwitchGroup] = createContext();
|
|
14403
|
-
const _sfc_main$
|
|
15728
|
+
const _sfc_main$82 = /* @__PURE__ */ defineComponent({
|
|
14404
15729
|
name: "SwitchGroup",
|
|
14405
15730
|
__name: "SwitchGroup",
|
|
14406
15731
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -14469,7 +15794,7 @@ const _sfc_main$71 = /* @__PURE__ */ defineComponent({
|
|
|
14469
15794
|
//#endregion
|
|
14470
15795
|
//#region src/components/Switch/SwitchRoot.vue
|
|
14471
15796
|
const [useSwitchRoot, provideSwitchRoot] = createContext();
|
|
14472
|
-
const _sfc_main$
|
|
15797
|
+
const _sfc_main$84 = /* @__PURE__ */ defineComponent({
|
|
14473
15798
|
name: "SwitchRoot",
|
|
14474
15799
|
inheritAttrs: false,
|
|
14475
15800
|
__name: "SwitchRoot",
|
|
@@ -14599,7 +15924,7 @@ const _sfc_main$73 = /* @__PURE__ */ defineComponent({
|
|
|
14599
15924
|
}), {
|
|
14600
15925
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
14601
15926
|
_: 3
|
|
14602
|
-
}, 16, ["as", "renderless"]), __props.name ? (openBlock(), createBlock(_sfc_main$
|
|
15927
|
+
}, 16, ["as", "renderless"]), __props.name ? (openBlock(), createBlock(_sfc_main$83, { key: 0 })) : createCommentVNode("v-if", true)], 64);
|
|
14603
15928
|
};
|
|
14604
15929
|
}
|
|
14605
15930
|
});
|
|
@@ -14623,7 +15948,7 @@ const visuallyHiddenStyle = {
|
|
|
14623
15948
|
whiteSpace: "nowrap",
|
|
14624
15949
|
border: "0"
|
|
14625
15950
|
};
|
|
14626
|
-
const _sfc_main$
|
|
15951
|
+
const _sfc_main$83 = /* @__PURE__ */ defineComponent({
|
|
14627
15952
|
name: "SwitchHiddenInput",
|
|
14628
15953
|
__name: "SwitchHiddenInput",
|
|
14629
15954
|
props: {
|
|
@@ -14661,7 +15986,7 @@ const _sfc_main$72 = /* @__PURE__ */ defineComponent({
|
|
|
14661
15986
|
});
|
|
14662
15987
|
//#endregion
|
|
14663
15988
|
//#region src/components/Switch/SwitchSelectAll.vue
|
|
14664
|
-
const _sfc_main$
|
|
15989
|
+
const _sfc_main$85 = /* @__PURE__ */ defineComponent({
|
|
14665
15990
|
name: "SwitchSelectAll",
|
|
14666
15991
|
inheritAttrs: false,
|
|
14667
15992
|
__name: "SwitchSelectAll",
|
|
@@ -14749,7 +16074,7 @@ const _sfc_main$74 = /* @__PURE__ */ defineComponent({
|
|
|
14749
16074
|
});
|
|
14750
16075
|
//#endregion
|
|
14751
16076
|
//#region src/components/Switch/SwitchThumb.vue
|
|
14752
|
-
const _sfc_main$
|
|
16077
|
+
const _sfc_main$86 = /* @__PURE__ */ defineComponent({
|
|
14753
16078
|
name: "SwitchThumb",
|
|
14754
16079
|
__name: "SwitchThumb",
|
|
14755
16080
|
props: {
|
|
@@ -14784,7 +16109,7 @@ const _sfc_main$75 = /* @__PURE__ */ defineComponent({
|
|
|
14784
16109
|
});
|
|
14785
16110
|
//#endregion
|
|
14786
16111
|
//#region src/components/Switch/SwitchTrack.vue
|
|
14787
|
-
const _sfc_main$
|
|
16112
|
+
const _sfc_main$87 = /* @__PURE__ */ defineComponent({
|
|
14788
16113
|
name: "SwitchTrack",
|
|
14789
16114
|
__name: "SwitchTrack",
|
|
14790
16115
|
props: {
|
|
@@ -14843,17 +16168,17 @@ const _sfc_main$76 = /* @__PURE__ */ defineComponent({
|
|
|
14843
16168
|
* ```
|
|
14844
16169
|
*/
|
|
14845
16170
|
const Switch = {
|
|
14846
|
-
Group: _sfc_main$
|
|
14847
|
-
HiddenInput: _sfc_main$
|
|
14848
|
-
Root: _sfc_main$
|
|
14849
|
-
SelectAll: _sfc_main$
|
|
14850
|
-
Thumb: _sfc_main$
|
|
14851
|
-
Track: _sfc_main$
|
|
16171
|
+
Group: _sfc_main$82,
|
|
16172
|
+
HiddenInput: _sfc_main$83,
|
|
16173
|
+
Root: _sfc_main$84,
|
|
16174
|
+
SelectAll: _sfc_main$85,
|
|
16175
|
+
Thumb: _sfc_main$86,
|
|
16176
|
+
Track: _sfc_main$87
|
|
14852
16177
|
};
|
|
14853
16178
|
//#endregion
|
|
14854
16179
|
//#region src/components/Single/SingleRoot.vue
|
|
14855
16180
|
const [useSingleRoot, provideSingleRoot] = createContext();
|
|
14856
|
-
const _sfc_main$
|
|
16181
|
+
const _sfc_main$66 = /* @__PURE__ */ defineComponent({
|
|
14857
16182
|
name: "SingleRoot",
|
|
14858
16183
|
__name: "SingleRoot",
|
|
14859
16184
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -14899,7 +16224,7 @@ const _sfc_main$60 = /* @__PURE__ */ defineComponent({
|
|
|
14899
16224
|
});
|
|
14900
16225
|
//#endregion
|
|
14901
16226
|
//#region src/components/Single/SingleItem.vue
|
|
14902
|
-
const _sfc_main$
|
|
16227
|
+
const _sfc_main$65 = /* @__PURE__ */ defineComponent({
|
|
14903
16228
|
name: "SingleItem",
|
|
14904
16229
|
__name: "SingleItem",
|
|
14905
16230
|
props: {
|
|
@@ -14949,13 +16274,13 @@ const _sfc_main$59 = /* @__PURE__ */ defineComponent({
|
|
|
14949
16274
|
* @see https://0.vuetifyjs.com/components/single
|
|
14950
16275
|
*/
|
|
14951
16276
|
const Single = {
|
|
14952
|
-
Root: _sfc_main$
|
|
14953
|
-
Item: _sfc_main$
|
|
16277
|
+
Root: _sfc_main$66,
|
|
16278
|
+
Item: _sfc_main$65
|
|
14954
16279
|
};
|
|
14955
16280
|
//#endregion
|
|
14956
16281
|
//#region src/components/Step/StepRoot.vue
|
|
14957
16282
|
const [useStepRoot, provideStepRoot] = createContext();
|
|
14958
|
-
const _sfc_main$
|
|
16283
|
+
const _sfc_main$81 = /* @__PURE__ */ defineComponent({
|
|
14959
16284
|
name: "StepRoot",
|
|
14960
16285
|
__name: "StepRoot",
|
|
14961
16286
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -15006,7 +16331,7 @@ const _sfc_main$70 = /* @__PURE__ */ defineComponent({
|
|
|
15006
16331
|
});
|
|
15007
16332
|
//#endregion
|
|
15008
16333
|
//#region src/components/Step/StepItem.vue
|
|
15009
|
-
const _sfc_main$
|
|
16334
|
+
const _sfc_main$80 = /* @__PURE__ */ defineComponent({
|
|
15010
16335
|
name: "StepItem",
|
|
15011
16336
|
__name: "StepItem",
|
|
15012
16337
|
props: {
|
|
@@ -15056,13 +16381,13 @@ const _sfc_main$69 = /* @__PURE__ */ defineComponent({
|
|
|
15056
16381
|
* @see https://0.vuetifyjs.com/components/step
|
|
15057
16382
|
*/
|
|
15058
16383
|
const Step = {
|
|
15059
|
-
Root: _sfc_main$
|
|
15060
|
-
Item: _sfc_main$
|
|
16384
|
+
Root: _sfc_main$81,
|
|
16385
|
+
Item: _sfc_main$80
|
|
15061
16386
|
};
|
|
15062
16387
|
//#endregion
|
|
15063
16388
|
//#region src/components/Tabs/TabsRoot.vue
|
|
15064
16389
|
const [useTabsRoot, provideTabsRoot] = createContext();
|
|
15065
|
-
const _sfc_main$
|
|
16390
|
+
const _sfc_main$91 = /* @__PURE__ */ defineComponent({
|
|
15066
16391
|
name: "TabsRoot",
|
|
15067
16392
|
__name: "TabsRoot",
|
|
15068
16393
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -15130,7 +16455,7 @@ const _sfc_main$80 = /* @__PURE__ */ defineComponent({
|
|
|
15130
16455
|
});
|
|
15131
16456
|
//#endregion
|
|
15132
16457
|
//#region src/components/Tabs/TabsList.vue
|
|
15133
|
-
const _sfc_main$
|
|
16458
|
+
const _sfc_main$89 = /* @__PURE__ */ defineComponent({
|
|
15134
16459
|
name: "TabsList",
|
|
15135
16460
|
inheritAttrs: false,
|
|
15136
16461
|
__name: "TabsList",
|
|
@@ -15171,7 +16496,7 @@ const _sfc_main$78 = /* @__PURE__ */ defineComponent({
|
|
|
15171
16496
|
});
|
|
15172
16497
|
//#endregion
|
|
15173
16498
|
//#region src/components/Tabs/TabsItem.vue
|
|
15174
|
-
const _sfc_main$
|
|
16499
|
+
const _sfc_main$88 = /* @__PURE__ */ defineComponent({
|
|
15175
16500
|
name: "TabsItem",
|
|
15176
16501
|
inheritAttrs: false,
|
|
15177
16502
|
__name: "TabsItem",
|
|
@@ -15286,7 +16611,7 @@ const _sfc_main$77 = /* @__PURE__ */ defineComponent({
|
|
|
15286
16611
|
});
|
|
15287
16612
|
//#endregion
|
|
15288
16613
|
//#region src/components/Tabs/TabsPanel.vue
|
|
15289
|
-
const _sfc_main$
|
|
16614
|
+
const _sfc_main$90 = /* @__PURE__ */ defineComponent({
|
|
15290
16615
|
name: "TabsPanel",
|
|
15291
16616
|
inheritAttrs: false,
|
|
15292
16617
|
__name: "TabsPanel",
|
|
@@ -15367,10 +16692,10 @@ const _sfc_main$79 = /* @__PURE__ */ defineComponent({
|
|
|
15367
16692
|
* ```
|
|
15368
16693
|
*/
|
|
15369
16694
|
const Tabs = {
|
|
15370
|
-
Root: _sfc_main$
|
|
15371
|
-
List: _sfc_main$
|
|
15372
|
-
Item: _sfc_main$
|
|
15373
|
-
Panel: _sfc_main$
|
|
16695
|
+
Root: _sfc_main$91,
|
|
16696
|
+
List: _sfc_main$89,
|
|
16697
|
+
Item: _sfc_main$88,
|
|
16698
|
+
Panel: _sfc_main$90
|
|
15374
16699
|
};
|
|
15375
16700
|
//#endregion
|
|
15376
|
-
export { _sfc_main as Atom, Avatar, _sfc_main$1 as AvatarFallback, _sfc_main$2 as AvatarImage, _sfc_main$3 as AvatarRoot, Breadcrumbs, _sfc_main$4 as BreadcrumbsDivider, _sfc_main$5 as BreadcrumbsEllipsis, _sfc_main$6 as BreadcrumbsItem, _sfc_main$7 as BreadcrumbsLink, _sfc_main$8 as BreadcrumbsList, _sfc_main$9 as BreadcrumbsPage, _sfc_main$10 as BreadcrumbsRoot, COMMON_ELEMENTS, Checkbox, _sfc_main$
|
|
16701
|
+
export { _sfc_main as Atom, Avatar, _sfc_main$1 as AvatarFallback, _sfc_main$2 as AvatarImage, _sfc_main$3 as AvatarRoot, Breadcrumbs, _sfc_main$4 as BreadcrumbsDivider, _sfc_main$5 as BreadcrumbsEllipsis, _sfc_main$6 as BreadcrumbsItem, _sfc_main$7 as BreadcrumbsLink, _sfc_main$8 as BreadcrumbsList, _sfc_main$9 as BreadcrumbsPage, _sfc_main$10 as BreadcrumbsRoot, Button, _sfc_main$11 as ButtonContent, _sfc_main$12 as ButtonGroup, _sfc_main$13 as ButtonHiddenInput, _sfc_main$14 as ButtonIcon, _sfc_main$15 as ButtonLoading, _sfc_main$16 as ButtonRoot, COMMON_ELEMENTS, Checkbox, _sfc_main$17 as CheckboxGroup, _sfc_main$18 as CheckboxHiddenInput, _sfc_main$19 as CheckboxIndicator, _sfc_main$20 as CheckboxRoot, _sfc_main$21 as CheckboxSelectAll, ClientAdapter, ConsolaLoggerAdapter, DataTableAdapter, Dialog, _sfc_main$22 as DialogActivator, _sfc_main$23 as DialogClose, _sfc_main$24 as DialogContent, _sfc_main$25 as DialogDescription, _sfc_main$26 as DialogRoot, _sfc_main$27 as DialogTitle, ExpansionPanel, _sfc_main$28 as ExpansionPanelActivator, _sfc_main$29 as ExpansionPanelContent, _sfc_main$30 as ExpansionPanelHeader, _sfc_main$31 as ExpansionPanelItem, _sfc_main$32 as ExpansionPanelRoot, FeaturesAdapter, _sfc_main$33 as Form, Group, _sfc_main$34 as GroupItem, _sfc_main$35 as GroupRoot, IN_BROWSER, Input, _sfc_main$36 as InputControl, _sfc_main$37 as InputDescription, _sfc_main$38 as InputError, _sfc_main$39 as InputRoot, MemoryAdapter, Pagination, _sfc_main$40 as PaginationEllipsis, _sfc_main$41 as PaginationFirst, _sfc_main$42 as PaginationItem, _sfc_main$43 as PaginationLast, _sfc_main$44 as PaginationNext, _sfc_main$45 as PaginationPrev, _sfc_main$46 as PaginationRoot, _sfc_main$47 as PaginationStatus, PermissionAdapter, PinoLoggerAdapter, Popover, _sfc_main$48 as PopoverActivator, _sfc_main$49 as PopoverContent, _sfc_main$50 as PopoverRoot, Radio, _sfc_main$51 as RadioGroup, _sfc_main$52 as RadioHiddenInput, _sfc_main$53 as RadioIndicator, _sfc_main$54 as RadioRoot, SELF_CLOSING_TAGS, SUPPORTS_INTERSECTION_OBSERVER, SUPPORTS_MATCH_MEDIA, SUPPORTS_MUTATION_OBSERVER, SUPPORTS_OBSERVER, SUPPORTS_TOUCH, _sfc_main$55 as Scrim, Select, _sfc_main$56 as SelectActivator, _sfc_main$57 as SelectContent, _sfc_main$58 as SelectCue, _sfc_main$59 as SelectItem, _sfc_main$60 as SelectPlaceholder, _sfc_main$61 as SelectRoot, _sfc_main$62 as SelectValue, Selection, _sfc_main$63 as SelectionItem, _sfc_main$64 as SelectionRoot, ServerAdapter, Single, _sfc_main$65 as SingleItem, _sfc_main$66 as SingleRoot, Slider, _sfc_main$67 as SliderHiddenInput, _sfc_main$68 as SliderRange, _sfc_main$69 as SliderRoot, _sfc_main$70 as SliderThumb, _sfc_main$71 as SliderTrack, Snackbar, _sfc_main$72 as SnackbarClose, _sfc_main$73 as SnackbarContent, _sfc_main$74 as SnackbarPortal, _sfc_main$75 as SnackbarQueue, _sfc_main$76 as SnackbarRoot, Splitter, _sfc_main$77 as SplitterHandle, _sfc_main$78 as SplitterPanel, _sfc_main$79 as SplitterRoot, Step, _sfc_main$80 as StepItem, _sfc_main$81 as StepRoot, Switch, _sfc_main$82 as SwitchGroup, _sfc_main$83 as SwitchHiddenInput, _sfc_main$84 as SwitchRoot, _sfc_main$85 as SwitchSelectAll, _sfc_main$86 as SwitchThumb, _sfc_main$87 as SwitchTrack, Tabs, _sfc_main$88 as TabsItem, _sfc_main$89 as TabsList, _sfc_main$90 as TabsPanel, _sfc_main$91 as TabsRoot, VirtualAdapter, Vuetify0LocaleAdapter, Vuetify0LoggerAdapter, Vuetify0RtlAdapter, Vuetify0ThemeAdapter, __LOGGER_ENABLED__, clamp, createBreadcrumbs, createBreadcrumbsContext, createBreakpoints, createBreakpointsContext, createBreakpointsPlugin, createContext, createDataTable, createDataTableContext, createDate, createDateContext, createDatePlugin, createFallbackHydration, createFeatures, createFeaturesContext, createFeaturesPlugin, createFilter, createFilterContext, createForm, createFormContext, createGroup, createGroupContext, createHydration, createHydrationContext, createHydrationPlugin, createLocale, createLocaleContext, createLocaleFallback, createLocalePlugin, createLogger, createLoggerContext, createLoggerPlugin, createModel, createNested, createNestedContext, createNotifications, createNotificationsContext, createNotificationsPlugin, createOverflow, createOverflowContext, createPagination, createPaginationContext, createPermissions, createPermissionsContext, createPermissionsPlugin, createPlugin, createPluginContext, createQueue, createQueueContext, createRegistry, createRegistryContext, createRtl, createRtlContext, createRtlFallback, createRtlPlugin, createRules, createRulesContext, createRulesFallback, createRulesPlugin, createSelection, createSelectionContext, createSingle, createSingleContext, createSlider, createStack, createStackContext, createStackPlugin, createStep, createStepContext, createStorage, createStorageContext, createStoragePlugin, createTheme, createThemeContext, createThemePlugin, createTimeline, createTimelineContext, createTokens, createTokensContext, createTrinity, createValidation, createVirtual, createVirtualContext, flatten, instanceExists, instanceName, isArray, isBoolean, isElement, isFunction, isNaN, isNull, isNullOrUndefined, isNumber, isObject, isPrimitive, isSelfClosingTag, isStandardSchema, isString, isSymbol, isUndefined, mergeDeep, multipleOpenStrategy, provideAvatarRoot, provideBreadcrumbsRoot, provideButtonGroup, provideButtonRoot, provideCheckboxGroup, provideCheckboxRoot, provideContext, provideDialogContext, provideExpansionPanelItem, provideExpansionPanelRoot, provideGroupRoot, provideInputRoot, providePaginationControls, providePaginationItems, providePaginationRoot, providePopoverContext, provideRadioGroup, provideRadioRoot, provideSelectContext, provideSelectionRoot, provideSingleRoot, provideSliderRoot, provideSnackbarQueueContext, provideSnackbarRootContext, provideSplitterRoot, provideStepRoot, provideSwitchGroup, provideSwitchRoot, provideTabsRoot, range, singleOpenStrategy, toArray, toElement, toReactive, useAvatarRoot, useBreadcrumbs, useBreadcrumbsRoot, useBreakpoints, useButtonGroup, useButtonRoot, useCheckboxGroup, useCheckboxRoot, useClickOutside, useContext, useDataTable, useDate, useDialogContext, useDocumentEventListener, useElementIntersection, useElementSize, useEventListener, useExpansionPanelItem, useExpansionPanelRoot, useFeatures, useFilter, useForm, useGroup, useGroupRoot, useHotkey, useHydration, useId, useInputRoot, useIntersectionObserver, useLazy, useLocale, useLogger, useMediaQuery, useMutationObserver, useNested, useNotifications, useOverflow, usePagination, usePaginationControls, usePaginationItems, usePaginationRoot, usePermissions, usePopover, usePopoverContext, usePrefersContrast, usePrefersDark, usePrefersReducedMotion, useProxyModel, useProxyRegistry, useQueue, useRadioGroup, useRadioRoot, useRaf, useRegistry, useResizeObserver, useRovingFocus, useRtl, useRules, useSelectContext, useSelection, useSelectionRoot, useSingle, useSingleRoot, useSliderRoot, useSnackbarQueueContext, useSnackbarRootContext, useSplitterRoot, useStack, useStep, useStepRoot, useStorage, useSwitchGroup, useSwitchRoot, useTabsRoot, useTheme, useTimeline, useTimer, useToggleScope, useTokens, useVirtual, useVirtualFocus, useWindowEventListener, version };
|