@vuetify/v0 0.1.7 → 0.1.8
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/dist/browser/index.js +1705 -458
- package/dist/components/index.d.mts +2 -2
- package/dist/components/index.mjs +19 -19
- package/dist/{components-CACff-Lt.mjs → components-BbxKYAXs.mjs} +1203 -312
- package/dist/composables/index.d.mts +3 -3
- package/dist/composables/index.mjs +18 -18
- package/dist/constants/index.mjs +1 -1
- package/dist/{createDataTable-CLI4TALE.mjs → createDataTable-DZouEhvH.mjs} +2 -2
- package/dist/{createGroup-Cf6lK9BR.mjs → createGroup-BpJFi41X.mjs} +1 -1
- package/dist/{createSelection-DvOR2tKk.mjs → createSelection-8MX0OHXR.mjs} +1 -1
- package/dist/{createSingle-Bbcwcq4R.mjs → createSingle-CbuOBb-E.mjs} +1 -1
- package/dist/{createTokens-CMRBDlzN.mjs → createTokens-CXlT0Vc6.mjs} +3 -2
- package/dist/data-table/adapters/client/index.mjs +1 -1
- package/dist/data-table/adapters/index.mjs +1 -1
- package/dist/data-table/adapters/server/index.mjs +1 -1
- package/dist/data-table/adapters/virtual/index.mjs +1 -1
- package/dist/data-table/index.mjs +10 -10
- 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-BqRH_jdr.mjs → globals-ClSU6mqC.mjs} +1 -1
- package/dist/{index-BE848tZ2.d.mts → index-63-0oJS8.d.mts} +155 -53
- package/dist/{index-CKbxWC4t.d.mts → index-B5NU2uB7.d.mts} +2362 -1314
- package/dist/{index-8sflFIN8.d.mts → index-CxW4itj1.d.mts} +2 -0
- package/dist/index.d.mts +4 -4
- package/dist/index.mjs +19 -19
- package/dist/json/attributes.json +252 -0
- package/dist/json/importMap.json +60 -0
- package/dist/json/tags.json +128 -0
- package/dist/json/web-types.json +1023 -228
- package/dist/locale/adapters/index.mjs +2 -2
- package/dist/locale/adapters/v0/index.mjs +2 -2
- package/dist/locale/index.d.mts +1 -1
- package/dist/locale/index.mjs +8 -8
- package/dist/logger/adapters/index.mjs +2 -2
- package/dist/logger/adapters/pino/index.mjs +1 -1
- package/dist/logger/adapters/v0/index.mjs +2 -2
- package/dist/logger/index.d.mts +1 -1
- package/dist/logger/index.mjs +3 -3
- 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/{posthog-DbPqmaAp.mjs → posthog-BE7-t7cV.mjs} +1 -1
- package/dist/rules/index.d.mts +1 -1
- package/dist/rules/index.mjs +9 -9
- package/dist/storage/index.d.mts +1 -1
- package/dist/storage/index.mjs +17 -17
- 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-YOGwKo7v.mjs → useClickOutside-W0Sur1rC.mjs} +477 -125
- package/dist/{useFeatures-BGDgUrdr.mjs → useFeatures-CUicSI-E.mjs} +3 -3
- package/dist/{useLocale-C8I_fNAS.mjs → useLocale-cQlPxbpV.mjs} +11 -7
- package/dist/{useLogger-B70T4SgK.mjs → useLogger-DY1Hbcy1.mjs} +2 -2
- package/dist/{usePermissions-afVt2qR7.mjs → usePermissions-BSW59R4q.mjs} +2 -2
- package/dist/{useRules-7C92Xzyt.mjs → useRules-BbA6_gvs.mjs} +3 -3
- package/dist/{useTheme-jp2wL2FJ.mjs → useTheme-Bdx2Lj5c.mjs} +4 -4
- package/dist/utilities/index.mjs +1 -1
- package/dist/{v0-CGlkn5u7.mjs → v0-2G2476h-.mjs} +1 -1
- package/dist/{v0-V-cQsuZD.mjs → v0-BFseIsBi.mjs} +1 -1
- package/dist/{v0-1bfmyZ5_.d.mts → v0-BZINNGoC.d.mts} +1 -1
- package/dist/{v0-CHvU3jQE.mjs → v0-CHBrvw49.mjs} +1 -1
- package/package.json +2 -1
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.8";
|
|
85
85
|
/* v8 ignore next -- build-time constant, __DEV__ short-circuits in tests */
|
|
86
86
|
const __LOGGER_ENABLED__ = false;
|
|
87
87
|
//#endregion
|
|
@@ -1357,7 +1357,8 @@ function createRegistry(options) {
|
|
|
1357
1357
|
id,
|
|
1358
1358
|
index,
|
|
1359
1359
|
value,
|
|
1360
|
-
valueIsIndex
|
|
1360
|
+
valueIsIndex,
|
|
1361
|
+
unregister: () => unregister(id)
|
|
1361
1362
|
};
|
|
1362
1363
|
const ticket = reactive ? shallowReactive(rawTicket) : rawTicket;
|
|
1363
1364
|
collection.set(ticket.id, ticket);
|
|
@@ -3642,7 +3643,7 @@ var Vuetify0LocaleAdapter = class {
|
|
|
3642
3643
|
* @see https://0.vuetifyjs.com/composables/plugins/use-locale
|
|
3643
3644
|
*/
|
|
3644
3645
|
function createLocale(_options = {}) {
|
|
3645
|
-
const { adapter = new Vuetify0LocaleAdapter(), messages = {}, ...options } = _options;
|
|
3646
|
+
const { adapter = new Vuetify0LocaleAdapter(), messages = {}, fallback: fallbackLocale, ...options } = _options;
|
|
3646
3647
|
const tokens = createTokens(messages);
|
|
3647
3648
|
const registry = createSingle(options);
|
|
3648
3649
|
for (const id in messages) {
|
|
@@ -3655,8 +3656,12 @@ function createLocale(_options = {}) {
|
|
|
3655
3656
|
if (!locale) return adapter.t(fallback ?? key, ...args);
|
|
3656
3657
|
const path = `${locale}.${key}`;
|
|
3657
3658
|
const message = tokens.get(path)?.value;
|
|
3658
|
-
|
|
3659
|
-
|
|
3659
|
+
if (/* @__PURE__ */ isString(message)) return adapter.t(resolve(locale, message), ...args);
|
|
3660
|
+
if (fallbackLocale) {
|
|
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);
|
|
3660
3665
|
}
|
|
3661
3666
|
function n(value, ...params) {
|
|
3662
3667
|
return adapter.n(value, registry.selectedId.value, ...params);
|
|
@@ -4367,14 +4372,14 @@ const _sfc_main$14 = /* @__PURE__ */ defineComponent({
|
|
|
4367
4372
|
});
|
|
4368
4373
|
//#endregion
|
|
4369
4374
|
//#region src/components/Checkbox/CheckboxHiddenInput.vue
|
|
4370
|
-
const _hoisted_1$
|
|
4375
|
+
const _hoisted_1$4 = [
|
|
4371
4376
|
"checked",
|
|
4372
4377
|
"disabled",
|
|
4373
4378
|
"form",
|
|
4374
4379
|
"name",
|
|
4375
4380
|
"value"
|
|
4376
4381
|
];
|
|
4377
|
-
const visuallyHiddenStyle$
|
|
4382
|
+
const visuallyHiddenStyle$3 = {
|
|
4378
4383
|
position: "absolute",
|
|
4379
4384
|
width: "1px",
|
|
4380
4385
|
height: "1px",
|
|
@@ -4413,11 +4418,11 @@ const _sfc_main$12 = /* @__PURE__ */ defineComponent({
|
|
|
4413
4418
|
form: form.value,
|
|
4414
4419
|
inert: "",
|
|
4415
4420
|
name: name.value,
|
|
4416
|
-
style: visuallyHiddenStyle$
|
|
4421
|
+
style: visuallyHiddenStyle$3,
|
|
4417
4422
|
tabindex: "-1",
|
|
4418
4423
|
type: "checkbox",
|
|
4419
4424
|
value: value.value
|
|
4420
|
-
}, null, 8, _hoisted_1$
|
|
4425
|
+
}, null, 8, _hoisted_1$4);
|
|
4421
4426
|
};
|
|
4422
4427
|
}
|
|
4423
4428
|
});
|
|
@@ -5864,6 +5869,7 @@ function createBreakpoints(_options = {}) {
|
|
|
5864
5869
|
}
|
|
5865
5870
|
return {
|
|
5866
5871
|
breakpoints,
|
|
5872
|
+
mobileBreakpoint,
|
|
5867
5873
|
name: readonly(name),
|
|
5868
5874
|
width: readonly(width),
|
|
5869
5875
|
height: readonly(height),
|
|
@@ -5890,8 +5896,10 @@ function createBreakpoints(_options = {}) {
|
|
|
5890
5896
|
}
|
|
5891
5897
|
function createBreakpointsFallback(options = {}) {
|
|
5892
5898
|
if (options.ssr) return createBreakpoints(options);
|
|
5899
|
+
const defaults = createDefaultBreakpoints();
|
|
5893
5900
|
return {
|
|
5894
|
-
breakpoints:
|
|
5901
|
+
breakpoints: defaults.breakpoints,
|
|
5902
|
+
mobileBreakpoint: defaults.mobileBreakpoint,
|
|
5895
5903
|
name: readonly(shallowRef("xs")),
|
|
5896
5904
|
width: readonly(shallowRef(0)),
|
|
5897
5905
|
height: readonly(shallowRef(0)),
|
|
@@ -6293,14 +6301,14 @@ const [createFeaturesContext, createFeaturesPlugin, useFeatures] = createPluginC
|
|
|
6293
6301
|
* @example
|
|
6294
6302
|
* ```ts
|
|
6295
6303
|
* import { createForm, createValidation } from '@vuetify/v0'
|
|
6304
|
+
* import { shallowRef } from 'vue'
|
|
6296
6305
|
*
|
|
6297
6306
|
* const form = createForm()
|
|
6298
6307
|
*
|
|
6299
|
-
* //
|
|
6300
|
-
* const
|
|
6301
|
-
* const
|
|
6302
|
-
*
|
|
6303
|
-
* value: '',
|
|
6308
|
+
* // Each validation is one input — form is just the coordinator
|
|
6309
|
+
* const email = shallowRef('')
|
|
6310
|
+
* const validation = createValidation({
|
|
6311
|
+
* value: email,
|
|
6304
6312
|
* rules: ['required', 'email'],
|
|
6305
6313
|
* })
|
|
6306
6314
|
*
|
|
@@ -6310,12 +6318,12 @@ const [createFeaturesContext, createFeaturesPlugin, useFeatures] = createPluginC
|
|
|
6310
6318
|
* form.reset()
|
|
6311
6319
|
* ```
|
|
6312
6320
|
*/
|
|
6313
|
-
function createForm(options) {
|
|
6314
|
-
const
|
|
6315
|
-
const
|
|
6316
|
-
|
|
6317
|
-
|
|
6318
|
-
|
|
6321
|
+
function createForm(options = {}) {
|
|
6322
|
+
const { disabled = false, readonly = false, ..._options } = options;
|
|
6323
|
+
const registry = createRegistry({
|
|
6324
|
+
..._options,
|
|
6325
|
+
reactive: true
|
|
6326
|
+
});
|
|
6319
6327
|
const isValidating = computed(() => {
|
|
6320
6328
|
for (const ticket of registry.values()) if (ticket.value.isValidating.value) return true;
|
|
6321
6329
|
return false;
|
|
@@ -6335,14 +6343,14 @@ function createForm(options) {
|
|
|
6335
6343
|
return registry.register(registration);
|
|
6336
6344
|
}
|
|
6337
6345
|
function reset() {
|
|
6338
|
-
for (const ticket of registry.values())
|
|
6346
|
+
for (const ticket of registry.values()) ticket.value.reset();
|
|
6339
6347
|
}
|
|
6340
6348
|
async function submit(id) {
|
|
6341
6349
|
const ids = id ? toArray(id) : [...registry.keys()];
|
|
6342
|
-
return (await Promise.all(ids.map(async (
|
|
6343
|
-
const ticket = registry.get(
|
|
6350
|
+
return (await Promise.all(ids.map(async (key) => {
|
|
6351
|
+
const ticket = registry.get(key);
|
|
6344
6352
|
if (!ticket) return true;
|
|
6345
|
-
return
|
|
6353
|
+
return ticket.value.validate();
|
|
6346
6354
|
}))).every(Boolean);
|
|
6347
6355
|
}
|
|
6348
6356
|
return {
|
|
@@ -8000,6 +8008,83 @@ const [createPermissionsContext, createPermissionsPlugin, usePermissions] = crea
|
|
|
8000
8008
|
* ```
|
|
8001
8009
|
*/
|
|
8002
8010
|
//#endregion
|
|
8011
|
+
//#region src/composables/usePopover/index.ts
|
|
8012
|
+
/**
|
|
8013
|
+
* @module usePopover
|
|
8014
|
+
*
|
|
8015
|
+
* @remarks
|
|
8016
|
+
* Composable for native popover API behavior with CSS anchor positioning.
|
|
8017
|
+
* Manages open/close state, anchor styles, content attributes, and
|
|
8018
|
+
* bidirectional sync between reactive state and native popover events.
|
|
8019
|
+
*
|
|
8020
|
+
* Key features:
|
|
8021
|
+
* - Native popover API (showPopover/hidePopover)
|
|
8022
|
+
* - CSS anchor positioning (position-area, position-try-fallbacks)
|
|
8023
|
+
* - Toggle event sync for native state changes
|
|
8024
|
+
* - SSR-safe (no DOM ops outside browser)
|
|
8025
|
+
* - Optional external isOpen ref for v-model integration
|
|
8026
|
+
*
|
|
8027
|
+
* Perfect for building select, combobox, tooltip, and menu components
|
|
8028
|
+
* without wrapping the Popover compound component.
|
|
8029
|
+
*/
|
|
8030
|
+
function usePopover(options = {}) {
|
|
8031
|
+
const { id: _id, positionArea = "bottom", positionTry = "most-width bottom" } = options;
|
|
8032
|
+
const id = _id ?? /* @__PURE__ */ useId();
|
|
8033
|
+
const isOpen = options.isOpen ?? shallowRef(false);
|
|
8034
|
+
function open() {
|
|
8035
|
+
isOpen.value = true;
|
|
8036
|
+
}
|
|
8037
|
+
function close() {
|
|
8038
|
+
isOpen.value = false;
|
|
8039
|
+
}
|
|
8040
|
+
function toggle() {
|
|
8041
|
+
isOpen.value = !isOpen.value;
|
|
8042
|
+
}
|
|
8043
|
+
const anchorStyles = toRef(() => ({ anchorName: `--${id}` }));
|
|
8044
|
+
const contentAttrs = toRef(() => ({
|
|
8045
|
+
id,
|
|
8046
|
+
popover: ""
|
|
8047
|
+
}));
|
|
8048
|
+
const contentStyles = toRef(() => ({
|
|
8049
|
+
"position": "fixed",
|
|
8050
|
+
"margin": "unset",
|
|
8051
|
+
"inset-area": positionArea,
|
|
8052
|
+
"position-area": positionArea,
|
|
8053
|
+
"position-anchor": `--${id}`,
|
|
8054
|
+
"position-try-fallbacks": positionTry
|
|
8055
|
+
}));
|
|
8056
|
+
/* v8 ignore start -- browser popover API */
|
|
8057
|
+
function attach(el) {
|
|
8058
|
+
onMounted(() => {
|
|
8059
|
+
const element = toValue(el);
|
|
8060
|
+
if (isOpen.value) element?.showPopover();
|
|
8061
|
+
});
|
|
8062
|
+
watch(isOpen, (value) => {
|
|
8063
|
+
const element = toValue(el);
|
|
8064
|
+
if (!element?.isConnected) return;
|
|
8065
|
+
if (value === element.matches?.(":popover-open")) return;
|
|
8066
|
+
if (value) element.showPopover?.();
|
|
8067
|
+
else element.hidePopover?.();
|
|
8068
|
+
});
|
|
8069
|
+
useEventListener(el, "toggle", (e) => {
|
|
8070
|
+
if (!toValue(el)?.isConnected) return;
|
|
8071
|
+
isOpen.value = e.newState === "open";
|
|
8072
|
+
});
|
|
8073
|
+
}
|
|
8074
|
+
/* v8 ignore stop */
|
|
8075
|
+
return {
|
|
8076
|
+
isOpen,
|
|
8077
|
+
id,
|
|
8078
|
+
open,
|
|
8079
|
+
close,
|
|
8080
|
+
toggle,
|
|
8081
|
+
anchorStyles,
|
|
8082
|
+
contentAttrs,
|
|
8083
|
+
contentStyles,
|
|
8084
|
+
attach
|
|
8085
|
+
};
|
|
8086
|
+
}
|
|
8087
|
+
//#endregion
|
|
8003
8088
|
//#region src/composables/createQueue/index.ts
|
|
8004
8089
|
/**
|
|
8005
8090
|
* @module createQueue
|
|
@@ -8333,6 +8418,236 @@ function createRulesFallback() {
|
|
|
8333
8418
|
}
|
|
8334
8419
|
const [createRulesContext, createRulesPlugin, useRules] = createPluginContext("v0:rules", (options) => createRules(options), { fallback: () => createRulesFallback() });
|
|
8335
8420
|
//#endregion
|
|
8421
|
+
//#region src/composables/createFocusTraversal/index.ts
|
|
8422
|
+
/**
|
|
8423
|
+
* @module createFocusTraversal
|
|
8424
|
+
*
|
|
8425
|
+
* @remarks
|
|
8426
|
+
* Internal factory for keyboard-driven traversal of ordered item lists.
|
|
8427
|
+
* Encapsulates stride-based navigation, disabled-item skipping, circular/bounded
|
|
8428
|
+
* movement, grid row scoping, and key-to-action mapping shared by
|
|
8429
|
+
* useRovingFocus and useVirtualFocus.
|
|
8430
|
+
*
|
|
8431
|
+
* Not exported from the package barrel — consumed only by sibling composables.
|
|
8432
|
+
*/
|
|
8433
|
+
function mod(length, index) {
|
|
8434
|
+
return (index % length + length) % length;
|
|
8435
|
+
}
|
|
8436
|
+
function isRtl(e) {
|
|
8437
|
+
if (!IN_BROWSER) return false;
|
|
8438
|
+
const el = e.currentTarget;
|
|
8439
|
+
return el ? getComputedStyle(el).direction === "rtl" : false;
|
|
8440
|
+
}
|
|
8441
|
+
function createFocusTraversal(items, activate, options = {}) {
|
|
8442
|
+
const { orientation = "vertical", circular = false, columns: _columns } = options;
|
|
8443
|
+
const activeId = shallowRef();
|
|
8444
|
+
function enabled() {
|
|
8445
|
+
return items().filter((item) => !toValue(item.disabled));
|
|
8446
|
+
}
|
|
8447
|
+
function indexOf(id) {
|
|
8448
|
+
return items().findIndex((item) => item.id === id);
|
|
8449
|
+
}
|
|
8450
|
+
function go(id) {
|
|
8451
|
+
activeId.value = id;
|
|
8452
|
+
activate(id);
|
|
8453
|
+
}
|
|
8454
|
+
function step(stride) {
|
|
8455
|
+
const all = items();
|
|
8456
|
+
const length = all.length;
|
|
8457
|
+
if (!length) return;
|
|
8458
|
+
const current = /* @__PURE__ */ isUndefined(activeId.value) ? -1 : indexOf(activeId.value);
|
|
8459
|
+
const direction = stride > 0 ? 1 : -1;
|
|
8460
|
+
const absStride = Math.abs(stride);
|
|
8461
|
+
let index = current + stride;
|
|
8462
|
+
const maxHops = Math.ceil(length / absStride);
|
|
8463
|
+
let hops = 0;
|
|
8464
|
+
if (circular) index = mod(length, index);
|
|
8465
|
+
else if (index < 0 || index >= length) return;
|
|
8466
|
+
while (hops < maxHops) {
|
|
8467
|
+
const item = all[index];
|
|
8468
|
+
if (item && !toValue(item.disabled)) {
|
|
8469
|
+
go(item.id);
|
|
8470
|
+
return;
|
|
8471
|
+
}
|
|
8472
|
+
hops++;
|
|
8473
|
+
index = circular ? mod(length, index + stride) : index + direction * absStride;
|
|
8474
|
+
if (!circular && (index < 0 || index >= length)) return;
|
|
8475
|
+
}
|
|
8476
|
+
}
|
|
8477
|
+
function next() {
|
|
8478
|
+
step(1);
|
|
8479
|
+
}
|
|
8480
|
+
function prev() {
|
|
8481
|
+
step(-1);
|
|
8482
|
+
}
|
|
8483
|
+
function first() {
|
|
8484
|
+
const list = enabled();
|
|
8485
|
+
if (list.length > 0) go(list[0].id);
|
|
8486
|
+
}
|
|
8487
|
+
function last() {
|
|
8488
|
+
const list = enabled();
|
|
8489
|
+
if (list.length > 0) go(list.at(-1).id);
|
|
8490
|
+
}
|
|
8491
|
+
/** Focus first non-disabled item in the current row (grid mode) */
|
|
8492
|
+
function rowFirst() {
|
|
8493
|
+
const cols = toValue(_columns) ?? 0;
|
|
8494
|
+
if (!cols) return first();
|
|
8495
|
+
const all = items();
|
|
8496
|
+
const current = /* @__PURE__ */ isUndefined(activeId.value) ? 0 : indexOf(activeId.value);
|
|
8497
|
+
const rowStart = current - current % cols;
|
|
8498
|
+
const rowEnd = Math.min(rowStart + cols, all.length);
|
|
8499
|
+
for (let i = rowStart; i < rowEnd; i++) {
|
|
8500
|
+
const item = all[i];
|
|
8501
|
+
if (item && !toValue(item.disabled)) {
|
|
8502
|
+
go(item.id);
|
|
8503
|
+
return;
|
|
8504
|
+
}
|
|
8505
|
+
}
|
|
8506
|
+
}
|
|
8507
|
+
/** Focus last non-disabled item in the current row (grid mode) */
|
|
8508
|
+
function rowLast() {
|
|
8509
|
+
const cols = toValue(_columns) ?? 0;
|
|
8510
|
+
if (!cols) return last();
|
|
8511
|
+
const all = items();
|
|
8512
|
+
const current = /* @__PURE__ */ isUndefined(activeId.value) ? 0 : indexOf(activeId.value);
|
|
8513
|
+
const rowStart = current - current % cols;
|
|
8514
|
+
const rowEnd = Math.min(rowStart + cols, all.length);
|
|
8515
|
+
for (let i = rowEnd - 1; i >= rowStart; i--) {
|
|
8516
|
+
const item = all[i];
|
|
8517
|
+
if (item && !toValue(item.disabled)) {
|
|
8518
|
+
go(item.id);
|
|
8519
|
+
return;
|
|
8520
|
+
}
|
|
8521
|
+
}
|
|
8522
|
+
}
|
|
8523
|
+
function onKeydown(e) {
|
|
8524
|
+
const cols = toValue(_columns);
|
|
8525
|
+
const rtl = isRtl(e);
|
|
8526
|
+
if (cols) {
|
|
8527
|
+
switch (e.key) {
|
|
8528
|
+
case "ArrowRight":
|
|
8529
|
+
e.preventDefault();
|
|
8530
|
+
step(rtl ? -1 : 1);
|
|
8531
|
+
break;
|
|
8532
|
+
case "ArrowLeft":
|
|
8533
|
+
e.preventDefault();
|
|
8534
|
+
step(rtl ? 1 : -1);
|
|
8535
|
+
break;
|
|
8536
|
+
case "ArrowDown":
|
|
8537
|
+
e.preventDefault();
|
|
8538
|
+
step(cols);
|
|
8539
|
+
break;
|
|
8540
|
+
case "ArrowUp":
|
|
8541
|
+
e.preventDefault();
|
|
8542
|
+
step(-cols);
|
|
8543
|
+
break;
|
|
8544
|
+
case "Home":
|
|
8545
|
+
e.preventDefault();
|
|
8546
|
+
if (e.ctrlKey) first();
|
|
8547
|
+
else rowFirst();
|
|
8548
|
+
break;
|
|
8549
|
+
case "End":
|
|
8550
|
+
e.preventDefault();
|
|
8551
|
+
if (e.ctrlKey) last();
|
|
8552
|
+
else rowLast();
|
|
8553
|
+
break;
|
|
8554
|
+
}
|
|
8555
|
+
return;
|
|
8556
|
+
}
|
|
8557
|
+
const prevKeys = [];
|
|
8558
|
+
const nextKeys = [];
|
|
8559
|
+
if (orientation === "vertical" || orientation === "both") {
|
|
8560
|
+
prevKeys.push("ArrowUp");
|
|
8561
|
+
nextKeys.push("ArrowDown");
|
|
8562
|
+
}
|
|
8563
|
+
if (orientation === "horizontal" || orientation === "both") {
|
|
8564
|
+
prevKeys.push(rtl ? "ArrowRight" : "ArrowLeft");
|
|
8565
|
+
nextKeys.push(rtl ? "ArrowLeft" : "ArrowRight");
|
|
8566
|
+
}
|
|
8567
|
+
if (prevKeys.includes(e.key)) {
|
|
8568
|
+
e.preventDefault();
|
|
8569
|
+
prev();
|
|
8570
|
+
} else if (nextKeys.includes(e.key)) {
|
|
8571
|
+
e.preventDefault();
|
|
8572
|
+
next();
|
|
8573
|
+
} else if (e.key === "Home") {
|
|
8574
|
+
e.preventDefault();
|
|
8575
|
+
first();
|
|
8576
|
+
} else if (e.key === "End") {
|
|
8577
|
+
e.preventDefault();
|
|
8578
|
+
last();
|
|
8579
|
+
}
|
|
8580
|
+
}
|
|
8581
|
+
return {
|
|
8582
|
+
activeId,
|
|
8583
|
+
step,
|
|
8584
|
+
next,
|
|
8585
|
+
prev,
|
|
8586
|
+
first,
|
|
8587
|
+
last,
|
|
8588
|
+
onKeydown
|
|
8589
|
+
};
|
|
8590
|
+
}
|
|
8591
|
+
//#endregion
|
|
8592
|
+
//#region src/composables/useRovingFocus/index.ts
|
|
8593
|
+
/**
|
|
8594
|
+
* @module useRovingFocus
|
|
8595
|
+
*
|
|
8596
|
+
* @remarks
|
|
8597
|
+
* Roving tabindex composable for keyboard navigation within composite widgets.
|
|
8598
|
+
*
|
|
8599
|
+
* Key features:
|
|
8600
|
+
* - Arrow key navigation with orientation support
|
|
8601
|
+
* - Grid mode for 2D navigation (data tables, calendars)
|
|
8602
|
+
* - Automatic disabled item skipping
|
|
8603
|
+
* - Optional circular navigation
|
|
8604
|
+
* - Home/End key support (row-scoped in grid mode)
|
|
8605
|
+
* - Auto-attaches keydown listener when target is provided
|
|
8606
|
+
*
|
|
8607
|
+
* Perfect for toolbars, menus, tree items, grids, and other composite widgets.
|
|
8608
|
+
*/
|
|
8609
|
+
function useRovingFocus(items, options = {}) {
|
|
8610
|
+
const { orientation, circular, columns, onFocus, target } = options;
|
|
8611
|
+
function applyFocus(id) {
|
|
8612
|
+
const item = items().find((i) => i.id === id);
|
|
8613
|
+
if (!item?.el) return false;
|
|
8614
|
+
onFocus?.(id);
|
|
8615
|
+
nextTick(() => {
|
|
8616
|
+
toValue(item.el)?.focus();
|
|
8617
|
+
});
|
|
8618
|
+
return true;
|
|
8619
|
+
}
|
|
8620
|
+
const traversal = createFocusTraversal(items, (id) => applyFocus(id), {
|
|
8621
|
+
orientation,
|
|
8622
|
+
circular,
|
|
8623
|
+
columns
|
|
8624
|
+
});
|
|
8625
|
+
function focus(id) {
|
|
8626
|
+
const prev = traversal.activeId.value;
|
|
8627
|
+
traversal.activeId.value = id;
|
|
8628
|
+
if (!applyFocus(id)) traversal.activeId.value = prev;
|
|
8629
|
+
}
|
|
8630
|
+
function enabled() {
|
|
8631
|
+
return items().filter((item) => !toValue(item.disabled));
|
|
8632
|
+
}
|
|
8633
|
+
function isTabbable(id) {
|
|
8634
|
+
if (!/* @__PURE__ */ isUndefined(traversal.activeId.value)) return traversal.activeId.value === id;
|
|
8635
|
+
const list = enabled();
|
|
8636
|
+
return list.length > 0 && list[0]?.id === id;
|
|
8637
|
+
}
|
|
8638
|
+
if (target) useEventListener(target, "keydown", traversal.onKeydown);
|
|
8639
|
+
return {
|
|
8640
|
+
focusedId: traversal.activeId,
|
|
8641
|
+
isTabbable,
|
|
8642
|
+
focus,
|
|
8643
|
+
next: traversal.next,
|
|
8644
|
+
prev: traversal.prev,
|
|
8645
|
+
first: traversal.first,
|
|
8646
|
+
last: traversal.last,
|
|
8647
|
+
onKeydown: traversal.onKeydown
|
|
8648
|
+
};
|
|
8649
|
+
}
|
|
8650
|
+
//#endregion
|
|
8336
8651
|
//#region src/composables/useRtl/adapters/v0.ts
|
|
8337
8652
|
var Vuetify0RtlAdapter = class {
|
|
8338
8653
|
setup(app, context, target) {
|
|
@@ -9529,31 +9844,27 @@ function useTimeline(namespace = "v0:timeline") {
|
|
|
9529
9844
|
* @module createValidation
|
|
9530
9845
|
*
|
|
9531
9846
|
* @remarks
|
|
9532
|
-
* Per-
|
|
9847
|
+
* Per-input validation composable built on createGroup.
|
|
9533
9848
|
*
|
|
9534
9849
|
* Key features:
|
|
9850
|
+
* - Each ticket is a rule — enable/disable via select/unselect
|
|
9535
9851
|
* - Auto-register with parent form via useForm() injection
|
|
9536
9852
|
* - Async rule support with generation-based race safety
|
|
9537
9853
|
* - Silent validation mode
|
|
9538
9854
|
* - Tri-state isValid (null/true/false)
|
|
9539
|
-
* - isPristine tracking
|
|
9540
9855
|
*
|
|
9541
9856
|
* Uses useRules() to resolve alias strings via shared context.
|
|
9542
9857
|
*/
|
|
9858
|
+
const UNSET = Symbol("unset");
|
|
9543
9859
|
/**
|
|
9544
|
-
*
|
|
9545
|
-
*
|
|
9546
|
-
*
|
|
9547
|
-
|
|
9548
|
-
|
|
9549
|
-
if (context) return context.resolve(raw);
|
|
9550
|
-
return raw.filter((r) => /* @__PURE__ */ isFunction(r) || isStandardSchema(r)).map((r) => isStandardSchema(r) ? toRule(r) : r);
|
|
9551
|
-
}
|
|
9552
|
-
/**
|
|
9553
|
-
* Creates a new validation instance.
|
|
9860
|
+
* Creates a per-input validation instance.
|
|
9861
|
+
*
|
|
9862
|
+
* Built on `createGroup` — each registered rule becomes a ticket that can be
|
|
9863
|
+
* enabled/disabled via selection methods (`select`, `unselect`, `toggle`).
|
|
9864
|
+
* Only selected (active) rules run during validation.
|
|
9554
9865
|
*
|
|
9555
9866
|
* @param options The options for the validation instance.
|
|
9556
|
-
* @returns A new validation context
|
|
9867
|
+
* @returns A new validation context.
|
|
9557
9868
|
*
|
|
9558
9869
|
* @see https://0.vuetifyjs.com/composables/forms/create-validation
|
|
9559
9870
|
*
|
|
@@ -9561,111 +9872,83 @@ function resolveRules(raw, context) {
|
|
|
9561
9872
|
* ```ts
|
|
9562
9873
|
* import { createValidation } from '@vuetify/v0'
|
|
9563
9874
|
*
|
|
9564
|
-
* const validation = createValidation(
|
|
9565
|
-
*
|
|
9566
|
-
*
|
|
9567
|
-
*
|
|
9568
|
-
*
|
|
9569
|
-
* rules: [(v) => !!v || 'Required'],
|
|
9875
|
+
* const validation = createValidation({
|
|
9876
|
+
* rules: [
|
|
9877
|
+
* v => !!v || 'Required',
|
|
9878
|
+
* v => /^.+@\S+\.\S+$/.test(String(v)) || 'Invalid email',
|
|
9879
|
+
* ],
|
|
9570
9880
|
* })
|
|
9571
9881
|
*
|
|
9572
|
-
* await
|
|
9882
|
+
* await validation.validate('')
|
|
9573
9883
|
*
|
|
9574
|
-
* console.log(
|
|
9884
|
+
* console.log(validation.errors.value) // ['Required', 'Invalid email']
|
|
9575
9885
|
*
|
|
9576
|
-
*
|
|
9886
|
+
* validation.reset()
|
|
9577
9887
|
* ```
|
|
9578
9888
|
*/
|
|
9579
|
-
function createValidation(
|
|
9580
|
-
const
|
|
9581
|
-
const
|
|
9582
|
-
|
|
9583
|
-
|
|
9584
|
-
|
|
9889
|
+
function createValidation(_options = {}) {
|
|
9890
|
+
const { rules: initialRules = [], value: valueSource, enroll = true, ...options } = _options;
|
|
9891
|
+
const group = createGroup({
|
|
9892
|
+
...options,
|
|
9893
|
+
enroll,
|
|
9894
|
+
multiple: true
|
|
9585
9895
|
});
|
|
9586
|
-
const
|
|
9587
|
-
|
|
9588
|
-
|
|
9589
|
-
|
|
9590
|
-
|
|
9591
|
-
|
|
9592
|
-
|
|
9896
|
+
const rulesContext = useRules();
|
|
9897
|
+
const errors = shallowRef([]);
|
|
9898
|
+
const isValid = shallowRef(null);
|
|
9899
|
+
const isValidating = shallowRef(false);
|
|
9900
|
+
let generation = 0;
|
|
9901
|
+
function register(input) {
|
|
9902
|
+
if (/* @__PURE__ */ isFunction(input) || /* @__PURE__ */ isString(input) || isStandardSchema(input)) {
|
|
9903
|
+
const resolved = rulesContext.resolve([input]);
|
|
9904
|
+
return group.register({ value: resolved[0] ?? (() => true) });
|
|
9593
9905
|
}
|
|
9594
|
-
|
|
9595
|
-
|
|
9596
|
-
|
|
9597
|
-
|
|
9598
|
-
|
|
9599
|
-
|
|
9600
|
-
const
|
|
9601
|
-
const
|
|
9602
|
-
const
|
|
9603
|
-
|
|
9604
|
-
|
|
9605
|
-
|
|
9606
|
-
|
|
9607
|
-
|
|
9608
|
-
|
|
9609
|
-
|
|
9610
|
-
|
|
9611
|
-
|
|
9612
|
-
|
|
9613
|
-
|
|
9614
|
-
|
|
9615
|
-
|
|
9616
|
-
const generation = ++validationGeneration;
|
|
9617
|
-
isFieldValidating.value = true;
|
|
9618
|
-
try {
|
|
9619
|
-
const results = await Promise.all(resolved.map((rule) => rule(model.value)));
|
|
9620
|
-
if (generation !== validationGeneration) return isFieldValid.value ?? false;
|
|
9621
|
-
const errorMessages = results.filter((result) => /* @__PURE__ */ isString(result) || result === false).map((result) => result === false ? "Validation failed" : result);
|
|
9622
|
-
if (!silent) {
|
|
9623
|
-
errors.value = errorMessages;
|
|
9624
|
-
isFieldValid.value = errorMessages.length === 0;
|
|
9625
|
-
isPristine.value = model.value === initialValue;
|
|
9626
|
-
}
|
|
9627
|
-
return errorMessages.length === 0;
|
|
9628
|
-
} finally {
|
|
9629
|
-
if (generation === validationGeneration) isFieldValidating.value = false;
|
|
9906
|
+
return group.register(input);
|
|
9907
|
+
}
|
|
9908
|
+
function onboard(rules) {
|
|
9909
|
+
return group.batch(() => rules.map((r) => register(r)));
|
|
9910
|
+
}
|
|
9911
|
+
async function validate(_value = UNSET, silent = false) {
|
|
9912
|
+
const val = _value === UNSET ? toValue(valueSource) : _value;
|
|
9913
|
+
const activeRules = [];
|
|
9914
|
+
for (const ticket of group.selectedItems.value) activeRules.push(ticket.value);
|
|
9915
|
+
if (activeRules.length === 0) {
|
|
9916
|
+
if (!silent) isValid.value = true;
|
|
9917
|
+
return true;
|
|
9918
|
+
}
|
|
9919
|
+
const gen = ++generation;
|
|
9920
|
+
if (!silent) isValidating.value = true;
|
|
9921
|
+
try {
|
|
9922
|
+
const results = await Promise.all(activeRules.map((rule) => rule(val)));
|
|
9923
|
+
if (gen !== generation) return isValid.value ?? false;
|
|
9924
|
+
const errorMessages = results.filter((result) => /* @__PURE__ */ isString(result) || result === false).map((result) => result === false ? "Validation failed" : result);
|
|
9925
|
+
if (!silent) {
|
|
9926
|
+
errors.value = errorMessages;
|
|
9927
|
+
isValid.value = errorMessages.length === 0;
|
|
9630
9928
|
}
|
|
9929
|
+
return errorMessages.length === 0;
|
|
9930
|
+
} finally {
|
|
9931
|
+
if (gen === generation && !silent) isValidating.value = false;
|
|
9631
9932
|
}
|
|
9632
|
-
const item = {
|
|
9633
|
-
...registration,
|
|
9634
|
-
rules: resolved,
|
|
9635
|
-
errors,
|
|
9636
|
-
disabled: registration.disabled || false,
|
|
9637
|
-
isValidating: isFieldValidating,
|
|
9638
|
-
isPristine,
|
|
9639
|
-
isValid: isFieldValid,
|
|
9640
|
-
reset,
|
|
9641
|
-
validate
|
|
9642
|
-
};
|
|
9643
|
-
const ticket = registry.register(item);
|
|
9644
|
-
Object.defineProperty(ticket, "value", {
|
|
9645
|
-
get() {
|
|
9646
|
-
return model.value;
|
|
9647
|
-
},
|
|
9648
|
-
set(val) {
|
|
9649
|
-
model.value = val;
|
|
9650
|
-
isPristine.value = val === initialValue;
|
|
9651
|
-
isFieldValid.value = null;
|
|
9652
|
-
},
|
|
9653
|
-
enumerable: true,
|
|
9654
|
-
configurable: true
|
|
9655
|
-
});
|
|
9656
|
-
return ticket;
|
|
9657
9933
|
}
|
|
9658
|
-
function
|
|
9659
|
-
|
|
9934
|
+
function reset() {
|
|
9935
|
+
errors.value = [];
|
|
9936
|
+
isValid.value = null;
|
|
9937
|
+
isValidating.value = false;
|
|
9938
|
+
generation++;
|
|
9660
9939
|
}
|
|
9940
|
+
if (initialRules.length > 0) onboard(initialRules);
|
|
9661
9941
|
const context = {
|
|
9662
|
-
...
|
|
9942
|
+
...group,
|
|
9663
9943
|
register,
|
|
9664
9944
|
onboard,
|
|
9945
|
+
validate,
|
|
9946
|
+
reset,
|
|
9947
|
+
errors,
|
|
9665
9948
|
isValid,
|
|
9666
9949
|
isValidating,
|
|
9667
9950
|
get size() {
|
|
9668
|
-
return
|
|
9951
|
+
return group.size;
|
|
9669
9952
|
}
|
|
9670
9953
|
};
|
|
9671
9954
|
const form = useForm();
|
|
@@ -10120,6 +10403,80 @@ function useVirtual(namespace = "v0:virtual") {
|
|
|
10120
10403
|
return useContext(namespace);
|
|
10121
10404
|
}
|
|
10122
10405
|
//#endregion
|
|
10406
|
+
//#region src/composables/useVirtualFocus/index.ts
|
|
10407
|
+
/**
|
|
10408
|
+
* @module useVirtualFocus
|
|
10409
|
+
*
|
|
10410
|
+
* @remarks
|
|
10411
|
+
* Virtual focus composable for aria-activedescendant keyboard navigation.
|
|
10412
|
+
* DOM focus stays on a control element while a virtual cursor highlights
|
|
10413
|
+
* items in a list.
|
|
10414
|
+
*
|
|
10415
|
+
* Key features:
|
|
10416
|
+
* - Arrow key navigation with orientation support
|
|
10417
|
+
* - Grid mode for 2D navigation
|
|
10418
|
+
* - Automatic disabled item skipping
|
|
10419
|
+
* - Optional circular navigation
|
|
10420
|
+
* - Home/End key support (row-scoped in grid mode)
|
|
10421
|
+
* - Auto-attaches keydown listener when target is provided
|
|
10422
|
+
* - Sets aria-activedescendant and data-highlighted attributes
|
|
10423
|
+
*
|
|
10424
|
+
* Perfect for comboboxes, autocompletes, listboxes, and other widgets
|
|
10425
|
+
* where DOM focus must remain on the control element.
|
|
10426
|
+
*/
|
|
10427
|
+
function useVirtualFocus(items, options) {
|
|
10428
|
+
const { control, target, orientation, circular, columns, onHighlight } = options;
|
|
10429
|
+
let previousEl = null;
|
|
10430
|
+
function applyHighlight(id) {
|
|
10431
|
+
const item = items().find((i) => i.id === id);
|
|
10432
|
+
if (!item?.el) return false;
|
|
10433
|
+
const el = toValue(item.el);
|
|
10434
|
+
if (!el) return false;
|
|
10435
|
+
const controlEl = toValue(control);
|
|
10436
|
+
if (controlEl) {
|
|
10437
|
+
const itemId = el.getAttribute("id");
|
|
10438
|
+
if (itemId) controlEl.setAttribute("aria-activedescendant", itemId);
|
|
10439
|
+
}
|
|
10440
|
+
if (previousEl) delete previousEl.dataset.highlighted;
|
|
10441
|
+
el.dataset.highlighted = "";
|
|
10442
|
+
previousEl = el;
|
|
10443
|
+
el.scrollIntoView({ block: "nearest" });
|
|
10444
|
+
onHighlight?.(id);
|
|
10445
|
+
return true;
|
|
10446
|
+
}
|
|
10447
|
+
const traversal = createFocusTraversal(items, (id) => applyHighlight(id), {
|
|
10448
|
+
orientation,
|
|
10449
|
+
circular,
|
|
10450
|
+
columns
|
|
10451
|
+
});
|
|
10452
|
+
function highlight(id) {
|
|
10453
|
+
const prev = traversal.activeId.value;
|
|
10454
|
+
traversal.activeId.value = id;
|
|
10455
|
+
if (!applyHighlight(id)) traversal.activeId.value = prev;
|
|
10456
|
+
}
|
|
10457
|
+
function clear() {
|
|
10458
|
+
traversal.activeId.value = void 0;
|
|
10459
|
+
const controlEl = toValue(control);
|
|
10460
|
+
if (controlEl) controlEl.removeAttribute("aria-activedescendant");
|
|
10461
|
+
if (previousEl) {
|
|
10462
|
+
delete previousEl.dataset.highlighted;
|
|
10463
|
+
previousEl = null;
|
|
10464
|
+
}
|
|
10465
|
+
}
|
|
10466
|
+
const listener = target ?? control;
|
|
10467
|
+
if (listener) useEventListener(listener, "keydown", traversal.onKeydown);
|
|
10468
|
+
return {
|
|
10469
|
+
highlightedId: traversal.activeId,
|
|
10470
|
+
highlight,
|
|
10471
|
+
clear,
|
|
10472
|
+
next: traversal.next,
|
|
10473
|
+
prev: traversal.prev,
|
|
10474
|
+
first: traversal.first,
|
|
10475
|
+
last: traversal.last,
|
|
10476
|
+
onKeydown: traversal.onKeydown
|
|
10477
|
+
};
|
|
10478
|
+
}
|
|
10479
|
+
//#endregion
|
|
10123
10480
|
//#region src/composables/useEventListener/index.ts
|
|
10124
10481
|
/**
|
|
10125
10482
|
* @module useEventListener
|
|
@@ -10891,9 +11248,79 @@ const ExpansionPanel = {
|
|
|
10891
11248
|
Content: _sfc_main$23
|
|
10892
11249
|
};
|
|
10893
11250
|
//#endregion
|
|
11251
|
+
//#region src/components/Form/Form.vue
|
|
11252
|
+
const _sfc_main$27 = /* @__PURE__ */ defineComponent({
|
|
11253
|
+
name: "Form",
|
|
11254
|
+
inheritAttrs: false,
|
|
11255
|
+
__name: "Form",
|
|
11256
|
+
props: /* @__PURE__ */ mergeModels({
|
|
11257
|
+
namespace: { default: "v0:form" },
|
|
11258
|
+
disabled: {
|
|
11259
|
+
type: Boolean,
|
|
11260
|
+
default: false
|
|
11261
|
+
},
|
|
11262
|
+
readonly: {
|
|
11263
|
+
type: Boolean,
|
|
11264
|
+
default: false
|
|
11265
|
+
},
|
|
11266
|
+
as: { default: "form" },
|
|
11267
|
+
renderless: { type: Boolean }
|
|
11268
|
+
}, {
|
|
11269
|
+
"modelValue": {
|
|
11270
|
+
type: [Boolean, null],
|
|
11271
|
+
default: null
|
|
11272
|
+
},
|
|
11273
|
+
"modelModifiers": {}
|
|
11274
|
+
}),
|
|
11275
|
+
emits: /* @__PURE__ */ mergeModels([
|
|
11276
|
+
"update:model-value",
|
|
11277
|
+
"submit",
|
|
11278
|
+
"reset"
|
|
11279
|
+
], ["update:modelValue"]),
|
|
11280
|
+
setup(__props, { emit: __emit }) {
|
|
11281
|
+
const emit = __emit;
|
|
11282
|
+
const model = useModel(__props, "modelValue");
|
|
11283
|
+
const form = createForm({
|
|
11284
|
+
disabled: toRef(() => __props.disabled),
|
|
11285
|
+
readonly: toRef(() => __props.readonly)
|
|
11286
|
+
});
|
|
11287
|
+
watchEffect(() => {
|
|
11288
|
+
model.value = form.isValid.value;
|
|
11289
|
+
});
|
|
11290
|
+
const attrs = useAttrs();
|
|
11291
|
+
provideContext(__props.namespace, form);
|
|
11292
|
+
async function onSubmit(event) {
|
|
11293
|
+
event.preventDefault();
|
|
11294
|
+
emit("submit", { valid: await form.submit() });
|
|
11295
|
+
}
|
|
11296
|
+
function onReset(event) {
|
|
11297
|
+
event.preventDefault();
|
|
11298
|
+
form.reset();
|
|
11299
|
+
emit("reset");
|
|
11300
|
+
}
|
|
11301
|
+
const slotProps = toRef(() => ({
|
|
11302
|
+
isValid: form.isValid.value,
|
|
11303
|
+
isValidating: form.isValidating.value,
|
|
11304
|
+
isDisabled: toValue(form.disabled),
|
|
11305
|
+
isReadonly: toValue(form.readonly),
|
|
11306
|
+
submit: form.submit,
|
|
11307
|
+
reset: form.reset
|
|
11308
|
+
}));
|
|
11309
|
+
return (_ctx, _cache) => {
|
|
11310
|
+
return openBlock(), createBlock(unref(_sfc_main), mergeProps({ as: __props.as }, unref(attrs), {
|
|
11311
|
+
onReset,
|
|
11312
|
+
onSubmit
|
|
11313
|
+
}), {
|
|
11314
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
11315
|
+
_: 3
|
|
11316
|
+
}, 16, ["as"]);
|
|
11317
|
+
};
|
|
11318
|
+
}
|
|
11319
|
+
});
|
|
11320
|
+
//#endregion
|
|
10894
11321
|
//#region src/components/Group/GroupRoot.vue
|
|
10895
11322
|
const [useGroupRoot, provideGroupRoot] = createContext();
|
|
10896
|
-
const _sfc_main$
|
|
11323
|
+
const _sfc_main$29 = /* @__PURE__ */ defineComponent({
|
|
10897
11324
|
name: "GroupRoot",
|
|
10898
11325
|
__name: "GroupRoot",
|
|
10899
11326
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -10945,7 +11372,7 @@ const _sfc_main$28 = /* @__PURE__ */ defineComponent({
|
|
|
10945
11372
|
});
|
|
10946
11373
|
//#endregion
|
|
10947
11374
|
//#region src/components/Group/GroupItem.vue
|
|
10948
|
-
const _sfc_main$
|
|
11375
|
+
const _sfc_main$28 = /* @__PURE__ */ defineComponent({
|
|
10949
11376
|
name: "GroupItem",
|
|
10950
11377
|
__name: "GroupItem",
|
|
10951
11378
|
props: {
|
|
@@ -11002,18 +11429,370 @@ const _sfc_main$27 = /* @__PURE__ */ defineComponent({
|
|
|
11002
11429
|
* @see https://0.vuetifyjs.com/components/group
|
|
11003
11430
|
*/
|
|
11004
11431
|
const Group = {
|
|
11005
|
-
Root: _sfc_main$
|
|
11006
|
-
Item: _sfc_main$
|
|
11432
|
+
Root: _sfc_main$29,
|
|
11433
|
+
Item: _sfc_main$28
|
|
11007
11434
|
};
|
|
11008
11435
|
//#endregion
|
|
11009
|
-
//#region src/components/
|
|
11010
|
-
const [
|
|
11011
|
-
|
|
11012
|
-
const
|
|
11013
|
-
|
|
11014
|
-
|
|
11015
|
-
|
|
11016
|
-
|
|
11436
|
+
//#region src/components/Input/InputRoot.vue
|
|
11437
|
+
const [useInputRoot, provideInputRoot] = createContext();
|
|
11438
|
+
function parseValidateOn(value) {
|
|
11439
|
+
const parts = String(value).split(" ");
|
|
11440
|
+
let event = "blur";
|
|
11441
|
+
let modifier;
|
|
11442
|
+
for (const part of parts) if (part === "lazy" || part === "eager") modifier = part;
|
|
11443
|
+
else if (part === "blur" || part === "input" || part === "submit") event = part;
|
|
11444
|
+
return {
|
|
11445
|
+
event,
|
|
11446
|
+
modifier
|
|
11447
|
+
};
|
|
11448
|
+
}
|
|
11449
|
+
const _sfc_main$33 = /* @__PURE__ */ defineComponent({
|
|
11450
|
+
name: "InputRoot",
|
|
11451
|
+
inheritAttrs: false,
|
|
11452
|
+
__name: "InputRoot",
|
|
11453
|
+
props: /* @__PURE__ */ mergeModels({
|
|
11454
|
+
id: { default: () => useId$1() },
|
|
11455
|
+
label: {},
|
|
11456
|
+
name: {},
|
|
11457
|
+
type: { default: "text" },
|
|
11458
|
+
form: {},
|
|
11459
|
+
disabled: { default: false },
|
|
11460
|
+
readonly: { default: false },
|
|
11461
|
+
required: { type: Boolean },
|
|
11462
|
+
rules: { default: () => [] },
|
|
11463
|
+
validateOn: { default: "blur" },
|
|
11464
|
+
error: {
|
|
11465
|
+
type: Boolean,
|
|
11466
|
+
default: false
|
|
11467
|
+
},
|
|
11468
|
+
errorMessages: {},
|
|
11469
|
+
namespace: { default: "v0:input:root" },
|
|
11470
|
+
as: { default: "div" },
|
|
11471
|
+
renderless: { type: Boolean }
|
|
11472
|
+
}, {
|
|
11473
|
+
"modelValue": { default: "" },
|
|
11474
|
+
"modelModifiers": {}
|
|
11475
|
+
}),
|
|
11476
|
+
emits: /* @__PURE__ */ mergeModels(["update:model-value", "update:isFocused"], ["update:modelValue"]),
|
|
11477
|
+
setup(__props) {
|
|
11478
|
+
const attrs = useAttrs();
|
|
11479
|
+
const model = useModel(__props, "modelValue");
|
|
11480
|
+
const parsed = toRef(() => parseValidateOn(__props.validateOn));
|
|
11481
|
+
const validation = createValidation({
|
|
11482
|
+
rules: __props.rules,
|
|
11483
|
+
value: model
|
|
11484
|
+
});
|
|
11485
|
+
const initialValue = model.value;
|
|
11486
|
+
const isPristine = shallowRef(true);
|
|
11487
|
+
const isFocused = shallowRef(false);
|
|
11488
|
+
const touched = shallowRef(false);
|
|
11489
|
+
const hasDescription = shallowRef(false);
|
|
11490
|
+
const hasError = shallowRef(false);
|
|
11491
|
+
const isDirty = toRef(() => model.value.length > 0);
|
|
11492
|
+
const isDisabled = toRef(() => toValue(__props.disabled));
|
|
11493
|
+
const isReadonly = toRef(() => toValue(__props.readonly));
|
|
11494
|
+
const descriptionId = `${__props.id}-description`;
|
|
11495
|
+
const errorId = `${__props.id}-error`;
|
|
11496
|
+
const errors = computed(() => {
|
|
11497
|
+
return [...__props.errorMessages ? toArray(__props.errorMessages) : [], ...validation.errors.value];
|
|
11498
|
+
});
|
|
11499
|
+
const isValid = toRef(() => {
|
|
11500
|
+
if (__props.error) return false;
|
|
11501
|
+
if (errors.value.length > 0 && validation.errors.value.length === 0) return false;
|
|
11502
|
+
return validation.isValid.value;
|
|
11503
|
+
});
|
|
11504
|
+
function shouldValidate(trigger) {
|
|
11505
|
+
const { event, modifier } = parsed.value;
|
|
11506
|
+
if (event === "submit") return false;
|
|
11507
|
+
if (modifier === "lazy" && !touched.value) return false;
|
|
11508
|
+
if (modifier === "eager" && validation.isValid.value === false) return true;
|
|
11509
|
+
return trigger === event;
|
|
11510
|
+
}
|
|
11511
|
+
watch(isFocused, (val) => {
|
|
11512
|
+
if (val) return;
|
|
11513
|
+
touched.value = true;
|
|
11514
|
+
if (shouldValidate("blur")) validation.validate();
|
|
11515
|
+
});
|
|
11516
|
+
watch(model, (val) => {
|
|
11517
|
+
isPristine.value = val === initialValue;
|
|
11518
|
+
if (shouldValidate("input")) validation.validate();
|
|
11519
|
+
});
|
|
11520
|
+
function validate() {
|
|
11521
|
+
return validation.validate();
|
|
11522
|
+
}
|
|
11523
|
+
function reset() {
|
|
11524
|
+
model.value = initialValue;
|
|
11525
|
+
isPristine.value = true;
|
|
11526
|
+
touched.value = false;
|
|
11527
|
+
validation.reset();
|
|
11528
|
+
}
|
|
11529
|
+
const state = toRef(() => {
|
|
11530
|
+
if (isValid.value === false) return "invalid";
|
|
11531
|
+
if (isValid.value === true) return "valid";
|
|
11532
|
+
return "pristine";
|
|
11533
|
+
});
|
|
11534
|
+
const context = {
|
|
11535
|
+
id: __props.id,
|
|
11536
|
+
label: __props.label,
|
|
11537
|
+
name: __props.name,
|
|
11538
|
+
type: __props.type,
|
|
11539
|
+
form: __props.form,
|
|
11540
|
+
required: __props.required,
|
|
11541
|
+
descriptionId,
|
|
11542
|
+
errorId,
|
|
11543
|
+
hasDescription,
|
|
11544
|
+
hasError,
|
|
11545
|
+
value: model,
|
|
11546
|
+
isDirty,
|
|
11547
|
+
isFocused,
|
|
11548
|
+
isDisabled,
|
|
11549
|
+
isReadonly,
|
|
11550
|
+
errors,
|
|
11551
|
+
isValid,
|
|
11552
|
+
isPristine,
|
|
11553
|
+
isValidating: validation.isValidating,
|
|
11554
|
+
validate,
|
|
11555
|
+
reset
|
|
11556
|
+
};
|
|
11557
|
+
provideInputRoot(__props.namespace, context);
|
|
11558
|
+
const slotProps = toRef(() => ({
|
|
11559
|
+
id: __props.id,
|
|
11560
|
+
label: __props.label,
|
|
11561
|
+
value: model.value,
|
|
11562
|
+
isDirty: isDirty.value,
|
|
11563
|
+
isFocused: isFocused.value,
|
|
11564
|
+
errors: errors.value,
|
|
11565
|
+
isValid: isValid.value,
|
|
11566
|
+
isPristine: isPristine.value,
|
|
11567
|
+
isValidating: validation.isValidating.value,
|
|
11568
|
+
isDisabled: isDisabled.value,
|
|
11569
|
+
isReadonly: isReadonly.value,
|
|
11570
|
+
validate,
|
|
11571
|
+
reset,
|
|
11572
|
+
attrs: {
|
|
11573
|
+
"data-state": state.value,
|
|
11574
|
+
"data-dirty": isDirty.value ? true : void 0,
|
|
11575
|
+
"data-focused": isFocused.value ? true : void 0,
|
|
11576
|
+
"data-disabled": isDisabled.value ? true : void 0,
|
|
11577
|
+
"data-readonly": isReadonly.value ? true : void 0
|
|
11578
|
+
}
|
|
11579
|
+
}));
|
|
11580
|
+
return (_ctx, _cache) => {
|
|
11581
|
+
return openBlock(), createBlock(unref(_sfc_main), mergeProps({
|
|
11582
|
+
...unref(attrs),
|
|
11583
|
+
...slotProps.value.attrs
|
|
11584
|
+
}, {
|
|
11585
|
+
as: __props.as,
|
|
11586
|
+
renderless: __props.renderless
|
|
11587
|
+
}), {
|
|
11588
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
11589
|
+
_: 3
|
|
11590
|
+
}, 16, ["as", "renderless"]);
|
|
11591
|
+
};
|
|
11592
|
+
}
|
|
11593
|
+
});
|
|
11594
|
+
//#endregion
|
|
11595
|
+
//#region src/components/Input/InputControl.vue
|
|
11596
|
+
const _sfc_main$30 = /* @__PURE__ */ defineComponent({
|
|
11597
|
+
name: "InputControl",
|
|
11598
|
+
inheritAttrs: false,
|
|
11599
|
+
__name: "InputControl",
|
|
11600
|
+
props: {
|
|
11601
|
+
namespace: { default: "v0:input:root" },
|
|
11602
|
+
as: { default: "input" },
|
|
11603
|
+
renderless: { type: Boolean }
|
|
11604
|
+
},
|
|
11605
|
+
setup(__props) {
|
|
11606
|
+
const attrs = useAttrs();
|
|
11607
|
+
const root = useInputRoot(__props.namespace);
|
|
11608
|
+
function onInput(e) {
|
|
11609
|
+
const target = e.target;
|
|
11610
|
+
root.value.value = target.value;
|
|
11611
|
+
}
|
|
11612
|
+
function onFocus() {
|
|
11613
|
+
root.isFocused.value = true;
|
|
11614
|
+
}
|
|
11615
|
+
function onBlur() {
|
|
11616
|
+
root.isFocused.value = false;
|
|
11617
|
+
}
|
|
11618
|
+
const describedby = toRef(() => {
|
|
11619
|
+
return root.hasDescription.value ? root.descriptionId : void 0;
|
|
11620
|
+
});
|
|
11621
|
+
const controlAttrs = toRef(() => {
|
|
11622
|
+
const invalid = root.isValid.value === false;
|
|
11623
|
+
const disabled = root.isDisabled.value;
|
|
11624
|
+
const readonly = root.isReadonly.value;
|
|
11625
|
+
const isFocused = root.isFocused.value;
|
|
11626
|
+
return {
|
|
11627
|
+
"id": root.id,
|
|
11628
|
+
"type": root.type,
|
|
11629
|
+
"name": root.name,
|
|
11630
|
+
"value": root.value.value,
|
|
11631
|
+
"form": root.form,
|
|
11632
|
+
"disabled": disabled || void 0,
|
|
11633
|
+
"readonly": readonly || void 0,
|
|
11634
|
+
"required": root.required || void 0,
|
|
11635
|
+
"aria-invalid": invalid || void 0,
|
|
11636
|
+
"aria-label": root.label || void 0,
|
|
11637
|
+
"aria-describedby": describedby.value,
|
|
11638
|
+
"aria-errormessage": root.hasError.value && root.errors.value.length > 0 ? root.errorId : void 0,
|
|
11639
|
+
"aria-required": root.required || void 0,
|
|
11640
|
+
"data-state": invalid ? "invalid" : root.isValid.value === true ? "valid" : "pristine",
|
|
11641
|
+
"data-focused": isFocused ? true : void 0,
|
|
11642
|
+
"data-disabled": disabled ? true : void 0,
|
|
11643
|
+
"data-readonly": readonly ? true : void 0
|
|
11644
|
+
};
|
|
11645
|
+
});
|
|
11646
|
+
const slotProps = toRef(() => ({
|
|
11647
|
+
value: root.value.value,
|
|
11648
|
+
isFocused: root.isFocused.value,
|
|
11649
|
+
isDisabled: root.isDisabled.value,
|
|
11650
|
+
isReadonly: root.isReadonly.value,
|
|
11651
|
+
attrs: controlAttrs.value
|
|
11652
|
+
}));
|
|
11653
|
+
return (_ctx, _cache) => {
|
|
11654
|
+
return openBlock(), createBlock(unref(_sfc_main), mergeProps({
|
|
11655
|
+
...unref(attrs),
|
|
11656
|
+
...controlAttrs.value
|
|
11657
|
+
}, {
|
|
11658
|
+
as: __props.as,
|
|
11659
|
+
renderless: __props.renderless,
|
|
11660
|
+
onBlur,
|
|
11661
|
+
onFocus,
|
|
11662
|
+
onInput
|
|
11663
|
+
}), {
|
|
11664
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
11665
|
+
_: 3
|
|
11666
|
+
}, 16, ["as", "renderless"]);
|
|
11667
|
+
};
|
|
11668
|
+
}
|
|
11669
|
+
});
|
|
11670
|
+
//#endregion
|
|
11671
|
+
//#region src/components/Input/InputDescription.vue
|
|
11672
|
+
const _sfc_main$31 = /* @__PURE__ */ defineComponent({
|
|
11673
|
+
name: "InputDescription",
|
|
11674
|
+
inheritAttrs: false,
|
|
11675
|
+
__name: "InputDescription",
|
|
11676
|
+
props: {
|
|
11677
|
+
namespace: { default: "v0:input:root" },
|
|
11678
|
+
as: { default: "span" },
|
|
11679
|
+
renderless: { type: Boolean }
|
|
11680
|
+
},
|
|
11681
|
+
setup(__props) {
|
|
11682
|
+
const attrs = useAttrs();
|
|
11683
|
+
const root = useInputRoot(__props.namespace);
|
|
11684
|
+
onMounted(() => {
|
|
11685
|
+
root.hasDescription.value = true;
|
|
11686
|
+
});
|
|
11687
|
+
onBeforeUnmount(() => {
|
|
11688
|
+
root.hasDescription.value = false;
|
|
11689
|
+
});
|
|
11690
|
+
return (_ctx, _cache) => {
|
|
11691
|
+
return openBlock(), createBlock(unref(_sfc_main), mergeProps(unref(attrs), {
|
|
11692
|
+
id: unref(root).descriptionId,
|
|
11693
|
+
as: __props.as,
|
|
11694
|
+
renderless: __props.renderless
|
|
11695
|
+
}), {
|
|
11696
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", { id: unref(root).descriptionId })]),
|
|
11697
|
+
_: 3
|
|
11698
|
+
}, 16, [
|
|
11699
|
+
"id",
|
|
11700
|
+
"as",
|
|
11701
|
+
"renderless"
|
|
11702
|
+
]);
|
|
11703
|
+
};
|
|
11704
|
+
}
|
|
11705
|
+
});
|
|
11706
|
+
//#endregion
|
|
11707
|
+
//#region src/components/Input/InputError.vue
|
|
11708
|
+
const _sfc_main$32 = /* @__PURE__ */ defineComponent({
|
|
11709
|
+
name: "InputError",
|
|
11710
|
+
inheritAttrs: false,
|
|
11711
|
+
__name: "InputError",
|
|
11712
|
+
props: {
|
|
11713
|
+
namespace: { default: "v0:input:root" },
|
|
11714
|
+
as: { default: "span" },
|
|
11715
|
+
renderless: { type: Boolean }
|
|
11716
|
+
},
|
|
11717
|
+
setup(__props) {
|
|
11718
|
+
const attrs = useAttrs();
|
|
11719
|
+
const root = useInputRoot(__props.namespace);
|
|
11720
|
+
const errors = root.errors;
|
|
11721
|
+
onMounted(() => {
|
|
11722
|
+
root.hasError.value = true;
|
|
11723
|
+
});
|
|
11724
|
+
onBeforeUnmount(() => {
|
|
11725
|
+
root.hasError.value = false;
|
|
11726
|
+
});
|
|
11727
|
+
const slotProps = toRef(() => ({
|
|
11728
|
+
id: root.errorId,
|
|
11729
|
+
errors: errors.value,
|
|
11730
|
+
attrs: {
|
|
11731
|
+
"id": root.errorId,
|
|
11732
|
+
"aria-live": "polite",
|
|
11733
|
+
"data-state": errors.value.length > 0 ? "visible" : "hidden"
|
|
11734
|
+
}
|
|
11735
|
+
}));
|
|
11736
|
+
return (_ctx, _cache) => {
|
|
11737
|
+
return openBlock(), createBlock(unref(_sfc_main), mergeProps({
|
|
11738
|
+
...unref(attrs),
|
|
11739
|
+
...slotProps.value.attrs
|
|
11740
|
+
}, {
|
|
11741
|
+
as: __props.as,
|
|
11742
|
+
renderless: __props.renderless
|
|
11743
|
+
}), {
|
|
11744
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
11745
|
+
_: 3
|
|
11746
|
+
}, 16, ["as", "renderless"]);
|
|
11747
|
+
};
|
|
11748
|
+
}
|
|
11749
|
+
});
|
|
11750
|
+
//#endregion
|
|
11751
|
+
//#region src/components/Input/index.ts
|
|
11752
|
+
/**
|
|
11753
|
+
* Input component with sub-components for text input controls.
|
|
11754
|
+
*
|
|
11755
|
+
* @see https://0.vuetifyjs.com/components/forms/input
|
|
11756
|
+
*
|
|
11757
|
+
* @example
|
|
11758
|
+
* ```vue
|
|
11759
|
+
* <script setup lang="ts">
|
|
11760
|
+
* import { Input } from '@vuetify/v0'
|
|
11761
|
+
* import { ref } from 'vue'
|
|
11762
|
+
*
|
|
11763
|
+
* const email = ref('')
|
|
11764
|
+
* <\/script>
|
|
11765
|
+
*
|
|
11766
|
+
* <template>
|
|
11767
|
+
* <Input.Root
|
|
11768
|
+
* v-model="email"
|
|
11769
|
+
* label="Email"
|
|
11770
|
+
* :rules="[(v) => !!v || 'Required', (v) => /.+@.+/.test(v) || 'Invalid email']"
|
|
11771
|
+
* >
|
|
11772
|
+
* <Input.Control />
|
|
11773
|
+
* <Input.Description>We'll never share your email.</Input.Description>
|
|
11774
|
+
* <Input.Error v-slot="{ errors }">
|
|
11775
|
+
* <span v-for="error in errors" :key="error">{{ error }}</span>
|
|
11776
|
+
* </Input.Error>
|
|
11777
|
+
* </Input.Root>
|
|
11778
|
+
* </template>
|
|
11779
|
+
* ```
|
|
11780
|
+
*/
|
|
11781
|
+
const Input = {
|
|
11782
|
+
Control: _sfc_main$30,
|
|
11783
|
+
Description: _sfc_main$31,
|
|
11784
|
+
Error: _sfc_main$32,
|
|
11785
|
+
Root: _sfc_main$33
|
|
11786
|
+
};
|
|
11787
|
+
//#endregion
|
|
11788
|
+
//#region src/components/Pagination/PaginationRoot.vue
|
|
11789
|
+
const [usePaginationRoot, providePaginationRoot] = createContext();
|
|
11790
|
+
const [usePaginationControls, providePaginationControls] = createContext({ suffix: "controls" });
|
|
11791
|
+
const [usePaginationItems, providePaginationItems] = createContext({ suffix: "items" });
|
|
11792
|
+
const _sfc_main$40 = /* @__PURE__ */ defineComponent({
|
|
11793
|
+
name: "PaginationRoot",
|
|
11794
|
+
__name: "PaginationRoot",
|
|
11795
|
+
props: /* @__PURE__ */ mergeModels({
|
|
11017
11796
|
namespace: { default: "v0:pagination" },
|
|
11018
11797
|
size: { default: 1 },
|
|
11019
11798
|
totalVisible: {},
|
|
@@ -11112,7 +11891,7 @@ const _sfc_main$35 = /* @__PURE__ */ defineComponent({
|
|
|
11112
11891
|
});
|
|
11113
11892
|
//#endregion
|
|
11114
11893
|
//#region src/components/Pagination/PaginationEllipsis.vue
|
|
11115
|
-
const _sfc_main$
|
|
11894
|
+
const _sfc_main$34 = /* @__PURE__ */ defineComponent({
|
|
11116
11895
|
name: "PaginationEllipsis",
|
|
11117
11896
|
__name: "PaginationEllipsis",
|
|
11118
11897
|
props: {
|
|
@@ -11155,7 +11934,7 @@ const _sfc_main$29 = /* @__PURE__ */ defineComponent({
|
|
|
11155
11934
|
});
|
|
11156
11935
|
//#endregion
|
|
11157
11936
|
//#region src/components/Pagination/PaginationFirst.vue
|
|
11158
|
-
const _sfc_main$
|
|
11937
|
+
const _sfc_main$35 = /* @__PURE__ */ defineComponent({
|
|
11159
11938
|
name: "PaginationFirst",
|
|
11160
11939
|
__name: "PaginationFirst",
|
|
11161
11940
|
props: {
|
|
@@ -11212,7 +11991,7 @@ const _sfc_main$30 = /* @__PURE__ */ defineComponent({
|
|
|
11212
11991
|
});
|
|
11213
11992
|
//#endregion
|
|
11214
11993
|
//#region src/components/Pagination/PaginationItem.vue
|
|
11215
|
-
const _sfc_main$
|
|
11994
|
+
const _sfc_main$36 = /* @__PURE__ */ defineComponent({
|
|
11216
11995
|
name: "PaginationItem",
|
|
11217
11996
|
__name: "PaginationItem",
|
|
11218
11997
|
props: {
|
|
@@ -11280,7 +12059,7 @@ const _sfc_main$31 = /* @__PURE__ */ defineComponent({
|
|
|
11280
12059
|
});
|
|
11281
12060
|
//#endregion
|
|
11282
12061
|
//#region src/components/Pagination/PaginationLast.vue
|
|
11283
|
-
const _sfc_main$
|
|
12062
|
+
const _sfc_main$37 = /* @__PURE__ */ defineComponent({
|
|
11284
12063
|
name: "PaginationLast",
|
|
11285
12064
|
__name: "PaginationLast",
|
|
11286
12065
|
props: {
|
|
@@ -11337,7 +12116,7 @@ const _sfc_main$32 = /* @__PURE__ */ defineComponent({
|
|
|
11337
12116
|
});
|
|
11338
12117
|
//#endregion
|
|
11339
12118
|
//#region src/components/Pagination/PaginationNext.vue
|
|
11340
|
-
const _sfc_main$
|
|
12119
|
+
const _sfc_main$38 = /* @__PURE__ */ defineComponent({
|
|
11341
12120
|
name: "PaginationNext",
|
|
11342
12121
|
__name: "PaginationNext",
|
|
11343
12122
|
props: {
|
|
@@ -11394,7 +12173,7 @@ const _sfc_main$33 = /* @__PURE__ */ defineComponent({
|
|
|
11394
12173
|
});
|
|
11395
12174
|
//#endregion
|
|
11396
12175
|
//#region src/components/Pagination/PaginationPrev.vue
|
|
11397
|
-
const _sfc_main$
|
|
12176
|
+
const _sfc_main$39 = /* @__PURE__ */ defineComponent({
|
|
11398
12177
|
name: "PaginationPrev",
|
|
11399
12178
|
__name: "PaginationPrev",
|
|
11400
12179
|
props: {
|
|
@@ -11451,7 +12230,7 @@ const _sfc_main$34 = /* @__PURE__ */ defineComponent({
|
|
|
11451
12230
|
});
|
|
11452
12231
|
//#endregion
|
|
11453
12232
|
//#region src/components/Pagination/PaginationStatus.vue
|
|
11454
|
-
const _sfc_main$
|
|
12233
|
+
const _sfc_main$41 = /* @__PURE__ */ defineComponent({
|
|
11455
12234
|
name: "PaginationStatus",
|
|
11456
12235
|
__name: "PaginationStatus",
|
|
11457
12236
|
props: {
|
|
@@ -11503,19 +12282,19 @@ const _sfc_main$36 = /* @__PURE__ */ defineComponent({
|
|
|
11503
12282
|
* @see https://0.vuetifyjs.com/components/pagination
|
|
11504
12283
|
*/
|
|
11505
12284
|
const Pagination = {
|
|
11506
|
-
Root: _sfc_main$
|
|
11507
|
-
Item: _sfc_main$
|
|
11508
|
-
First: _sfc_main$
|
|
11509
|
-
Prev: _sfc_main$
|
|
11510
|
-
Ellipsis: _sfc_main$
|
|
11511
|
-
Next: _sfc_main$
|
|
11512
|
-
Last: _sfc_main$
|
|
11513
|
-
Status: _sfc_main$
|
|
12285
|
+
Root: _sfc_main$40,
|
|
12286
|
+
Item: _sfc_main$36,
|
|
12287
|
+
First: _sfc_main$35,
|
|
12288
|
+
Prev: _sfc_main$39,
|
|
12289
|
+
Ellipsis: _sfc_main$34,
|
|
12290
|
+
Next: _sfc_main$38,
|
|
12291
|
+
Last: _sfc_main$37,
|
|
12292
|
+
Status: _sfc_main$41
|
|
11514
12293
|
};
|
|
11515
12294
|
//#endregion
|
|
11516
12295
|
//#region src/components/Popover/PopoverRoot.vue
|
|
11517
12296
|
const [usePopoverContext, providePopoverContext] = createContext("Popover");
|
|
11518
|
-
const _sfc_main$
|
|
12297
|
+
const _sfc_main$44 = /* @__PURE__ */ defineComponent({
|
|
11519
12298
|
name: "PopoverRoot",
|
|
11520
12299
|
__name: "PopoverRoot",
|
|
11521
12300
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -11532,19 +12311,18 @@ const _sfc_main$39 = /* @__PURE__ */ defineComponent({
|
|
|
11532
12311
|
emits: ["update:modelValue"],
|
|
11533
12312
|
setup(__props) {
|
|
11534
12313
|
const isSelected = useModel(__props, "modelValue");
|
|
11535
|
-
const
|
|
11536
|
-
|
|
11537
|
-
|
|
11538
|
-
}
|
|
12314
|
+
const popover = usePopover({
|
|
12315
|
+
id: __props.id,
|
|
12316
|
+
isOpen: isSelected
|
|
12317
|
+
});
|
|
11539
12318
|
providePopoverContext({
|
|
11540
|
-
|
|
11541
|
-
|
|
11542
|
-
id
|
|
12319
|
+
...popover,
|
|
12320
|
+
isSelected
|
|
11543
12321
|
});
|
|
11544
12322
|
const slotProps = toRef(() => ({
|
|
11545
|
-
id,
|
|
12323
|
+
id: popover.id,
|
|
11546
12324
|
isSelected: isSelected.value,
|
|
11547
|
-
toggle
|
|
12325
|
+
toggle: popover.toggle
|
|
11548
12326
|
}));
|
|
11549
12327
|
return (_ctx, _cache) => {
|
|
11550
12328
|
return openBlock(), createBlock(unref(_sfc_main), {
|
|
@@ -11559,7 +12337,7 @@ const _sfc_main$39 = /* @__PURE__ */ defineComponent({
|
|
|
11559
12337
|
});
|
|
11560
12338
|
//#endregion
|
|
11561
12339
|
//#region src/components/Popover/PopoverActivator.vue
|
|
11562
|
-
const _sfc_main$
|
|
12340
|
+
const _sfc_main$42 = /* @__PURE__ */ defineComponent({
|
|
11563
12341
|
name: "PopoverActivator",
|
|
11564
12342
|
__name: "PopoverActivator",
|
|
11565
12343
|
props: {
|
|
@@ -11571,13 +12349,16 @@ const _sfc_main$37 = /* @__PURE__ */ defineComponent({
|
|
|
11571
12349
|
const props = createPropsRestProxy(__props, ["as"]);
|
|
11572
12350
|
const context = usePopoverContext();
|
|
11573
12351
|
const popovertarget = toRef(() => props.target ?? context.id);
|
|
11574
|
-
const style = toRef(() =>
|
|
12352
|
+
const style = toRef(() => {
|
|
12353
|
+
if (props.target) return { anchorName: `--${props.target}` };
|
|
12354
|
+
return context.anchorStyles.value;
|
|
12355
|
+
});
|
|
11575
12356
|
const slotProps = toRef(() => ({
|
|
11576
|
-
isOpen: context.
|
|
12357
|
+
isOpen: context.isOpen.value,
|
|
11577
12358
|
attrs: {
|
|
11578
12359
|
"popovertarget": toValue(popovertarget),
|
|
11579
12360
|
"type": __props.as === "button" ? "button" : void 0,
|
|
11580
|
-
"data-popover-open": context.
|
|
12361
|
+
"data-popover-open": context.isOpen.value ? "" : void 0
|
|
11581
12362
|
}
|
|
11582
12363
|
}));
|
|
11583
12364
|
return (_ctx, _cache) => {
|
|
@@ -11593,13 +12374,13 @@ const _sfc_main$37 = /* @__PURE__ */ defineComponent({
|
|
|
11593
12374
|
});
|
|
11594
12375
|
//#endregion
|
|
11595
12376
|
//#region src/components/Popover/PopoverContent.vue
|
|
11596
|
-
const _sfc_main$
|
|
12377
|
+
const _sfc_main$43 = /* @__PURE__ */ defineComponent({
|
|
11597
12378
|
name: "PopoverContent",
|
|
11598
12379
|
__name: "PopoverContent",
|
|
11599
12380
|
props: {
|
|
11600
12381
|
id: {},
|
|
11601
|
-
positionArea: {
|
|
11602
|
-
positionTry: {
|
|
12382
|
+
positionArea: {},
|
|
12383
|
+
positionTry: {},
|
|
11603
12384
|
as: {},
|
|
11604
12385
|
renderless: { type: Boolean }
|
|
11605
12386
|
},
|
|
@@ -11610,37 +12391,25 @@ const _sfc_main$38 = /* @__PURE__ */ defineComponent({
|
|
|
11610
12391
|
const context = usePopoverContext();
|
|
11611
12392
|
const ref = useTemplateRef("ref");
|
|
11612
12393
|
const id = toRef(() => props.id ?? context.id);
|
|
11613
|
-
const style = toRef(() =>
|
|
11614
|
-
|
|
11615
|
-
|
|
11616
|
-
|
|
11617
|
-
|
|
11618
|
-
|
|
11619
|
-
|
|
11620
|
-
|
|
11621
|
-
|
|
11622
|
-
|
|
11623
|
-
if (context.isSelected.value) ref.value?.element?.showPopover();
|
|
11624
|
-
});
|
|
11625
|
-
watch(context.isSelected, (isOpen) => {
|
|
11626
|
-
const element = ref.value?.element;
|
|
11627
|
-
if (!element?.isConnected) return;
|
|
11628
|
-
if (isOpen === element.matches?.(":popover-open")) return;
|
|
11629
|
-
if (isOpen) element.showPopover?.();
|
|
11630
|
-
else element.hidePopover?.();
|
|
12394
|
+
const style = toRef(() => {
|
|
12395
|
+
if (props.id) return {
|
|
12396
|
+
"position": "fixed",
|
|
12397
|
+
"margin": "unset",
|
|
12398
|
+
"inset-area": __props.positionArea ?? "bottom",
|
|
12399
|
+
"position-area": __props.positionArea ?? "bottom",
|
|
12400
|
+
"position-anchor": `--${props.id}`,
|
|
12401
|
+
"position-try-fallbacks": __props.positionTry ?? "most-width bottom"
|
|
12402
|
+
};
|
|
12403
|
+
return context.contentStyles.value;
|
|
11631
12404
|
});
|
|
11632
|
-
|
|
11633
|
-
if (!ref.value?.element?.isConnected) return;
|
|
11634
|
-
context.isSelected.value = e.newState === "open";
|
|
11635
|
-
}
|
|
11636
|
-
/* v8 ignore stop */
|
|
12405
|
+
context.attach(() => ref.value?.element);
|
|
11637
12406
|
function onBeforeToggle(e) {
|
|
11638
12407
|
emit("beforetoggle", e);
|
|
11639
12408
|
}
|
|
11640
12409
|
const slotProps = toRef(() => ({
|
|
11641
|
-
isOpen: context.
|
|
12410
|
+
isOpen: context.isOpen.value,
|
|
11642
12411
|
attrs: {
|
|
11643
|
-
id:
|
|
12412
|
+
id: id.value,
|
|
11644
12413
|
popover: ""
|
|
11645
12414
|
}
|
|
11646
12415
|
}));
|
|
@@ -11650,10 +12419,7 @@ const _sfc_main$38 = /* @__PURE__ */ defineComponent({
|
|
|
11650
12419
|
ref,
|
|
11651
12420
|
as: props.as,
|
|
11652
12421
|
style: style.value
|
|
11653
|
-
}, slotProps.value.attrs, {
|
|
11654
|
-
onBeforetoggle: onBeforeToggle,
|
|
11655
|
-
onToggle
|
|
11656
|
-
}), {
|
|
12422
|
+
}, slotProps.value.attrs, { onBeforetoggle: onBeforeToggle }), {
|
|
11657
12423
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
11658
12424
|
_: 3
|
|
11659
12425
|
}, 16, ["as", "style"]);
|
|
@@ -11668,14 +12434,14 @@ const _sfc_main$38 = /* @__PURE__ */ defineComponent({
|
|
|
11668
12434
|
* @see https://0.vuetifyjs.com/components/popover
|
|
11669
12435
|
*/
|
|
11670
12436
|
const Popover = {
|
|
11671
|
-
Root: _sfc_main$
|
|
11672
|
-
Activator: _sfc_main$
|
|
11673
|
-
Content: _sfc_main$
|
|
12437
|
+
Root: _sfc_main$44,
|
|
12438
|
+
Activator: _sfc_main$42,
|
|
12439
|
+
Content: _sfc_main$43
|
|
11674
12440
|
};
|
|
11675
12441
|
//#endregion
|
|
11676
12442
|
//#region src/components/Radio/RadioGroup.vue
|
|
11677
12443
|
const [useRadioGroup, provideRadioGroup] = createContext();
|
|
11678
|
-
const _sfc_main$
|
|
12444
|
+
const _sfc_main$45 = /* @__PURE__ */ defineComponent({
|
|
11679
12445
|
name: "RadioGroup",
|
|
11680
12446
|
__name: "RadioGroup",
|
|
11681
12447
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -11740,7 +12506,7 @@ const _sfc_main$40 = /* @__PURE__ */ defineComponent({
|
|
|
11740
12506
|
//#endregion
|
|
11741
12507
|
//#region src/components/Radio/RadioRoot.vue
|
|
11742
12508
|
const [useRadioRoot, provideRadioRoot] = createContext();
|
|
11743
|
-
const _sfc_main$
|
|
12509
|
+
const _sfc_main$48 = /* @__PURE__ */ defineComponent({
|
|
11744
12510
|
name: "RadioRoot",
|
|
11745
12511
|
inheritAttrs: false,
|
|
11746
12512
|
__name: "RadioRoot",
|
|
@@ -11814,265 +12580,746 @@ const _sfc_main$43 = /* @__PURE__ */ defineComponent({
|
|
|
11814
12580
|
toValue(nextItem.el)?.focus();
|
|
11815
12581
|
}
|
|
11816
12582
|
onUnmounted(() => {
|
|
11817
|
-
group.unregister(ticket.id);
|
|
12583
|
+
group.unregister(ticket.id);
|
|
12584
|
+
});
|
|
12585
|
+
const context = {
|
|
12586
|
+
id: __props.id,
|
|
12587
|
+
label: __props.label,
|
|
12588
|
+
value: __props.value,
|
|
12589
|
+
name,
|
|
12590
|
+
form: __props.form,
|
|
12591
|
+
isChecked,
|
|
12592
|
+
isDisabled,
|
|
12593
|
+
select
|
|
12594
|
+
};
|
|
12595
|
+
provideRadioRoot(__props.namespace, context);
|
|
12596
|
+
const slotProps = toRef(() => ({
|
|
12597
|
+
id: __props.id,
|
|
12598
|
+
label: __props.label,
|
|
12599
|
+
value: __props.value,
|
|
12600
|
+
isChecked: isChecked.value,
|
|
12601
|
+
isDisabled: isDisabled.value,
|
|
12602
|
+
select,
|
|
12603
|
+
attrs: {
|
|
12604
|
+
"type": __props.as === "button" ? "button" : void 0,
|
|
12605
|
+
"role": "radio",
|
|
12606
|
+
"aria-checked": isChecked.value,
|
|
12607
|
+
"aria-disabled": isDisabled.value || void 0,
|
|
12608
|
+
"aria-label": __props.label || void 0,
|
|
12609
|
+
"aria-labelledby": __props.ariaLabelledby || void 0,
|
|
12610
|
+
"aria-describedby": __props.ariaDescribedby || void 0,
|
|
12611
|
+
"aria-invalid": __props.ariaInvalid || void 0,
|
|
12612
|
+
"tabindex": isTabbable.value ? 0 : -1,
|
|
12613
|
+
"data-state": dataState.value,
|
|
12614
|
+
"data-disabled": isDisabled.value ? true : void 0,
|
|
12615
|
+
"data-radio-id": __props.id
|
|
12616
|
+
}
|
|
12617
|
+
}));
|
|
12618
|
+
return (_ctx, _cache) => {
|
|
12619
|
+
return openBlock(), createElementBlock(Fragment, null, [createVNode(unref(_sfc_main), mergeProps({ ref: "root" }, {
|
|
12620
|
+
...unref(attrs),
|
|
12621
|
+
...slotProps.value.attrs
|
|
12622
|
+
}, {
|
|
12623
|
+
as: __props.as,
|
|
12624
|
+
renderless: __props.renderless,
|
|
12625
|
+
onClick,
|
|
12626
|
+
onKeydown
|
|
12627
|
+
}), {
|
|
12628
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
12629
|
+
_: 3
|
|
12630
|
+
}, 16, ["as", "renderless"]), unref(name) ? (openBlock(), createBlock(_sfc_main$46, { key: 0 })) : createCommentVNode("v-if", true)], 64);
|
|
12631
|
+
};
|
|
12632
|
+
}
|
|
12633
|
+
});
|
|
12634
|
+
//#endregion
|
|
12635
|
+
//#region src/components/Radio/RadioHiddenInput.vue
|
|
12636
|
+
const _hoisted_1$3 = [
|
|
12637
|
+
"checked",
|
|
12638
|
+
"disabled",
|
|
12639
|
+
"form",
|
|
12640
|
+
"name",
|
|
12641
|
+
"value"
|
|
12642
|
+
];
|
|
12643
|
+
const visuallyHiddenStyle$2 = {
|
|
12644
|
+
position: "absolute",
|
|
12645
|
+
width: "1px",
|
|
12646
|
+
height: "1px",
|
|
12647
|
+
padding: "0",
|
|
12648
|
+
margin: "-1px",
|
|
12649
|
+
overflow: "hidden",
|
|
12650
|
+
clip: "rect(0, 0, 0, 0)",
|
|
12651
|
+
whiteSpace: "nowrap",
|
|
12652
|
+
border: "0"
|
|
12653
|
+
};
|
|
12654
|
+
const _sfc_main$46 = /* @__PURE__ */ defineComponent({
|
|
12655
|
+
name: "RadioHiddenInput",
|
|
12656
|
+
__name: "RadioHiddenInput",
|
|
12657
|
+
props: {
|
|
12658
|
+
namespace: { default: "v0:radio:root" },
|
|
12659
|
+
name: {},
|
|
12660
|
+
value: {},
|
|
12661
|
+
form: {}
|
|
12662
|
+
},
|
|
12663
|
+
setup(__props) {
|
|
12664
|
+
const root = useRadioRoot(__props.namespace);
|
|
12665
|
+
const name = toRef(() => __props.name ?? root.name);
|
|
12666
|
+
const form = toRef(() => __props.form ?? root.form);
|
|
12667
|
+
const value = toRef(() => {
|
|
12668
|
+
const v = __props.value ?? root.value ?? "on";
|
|
12669
|
+
if (/* @__PURE__ */ isObject(v)) return JSON.stringify(v);
|
|
12670
|
+
return String(v);
|
|
12671
|
+
});
|
|
12672
|
+
const isChecked = root.isChecked;
|
|
12673
|
+
const isDisabled = root.isDisabled;
|
|
12674
|
+
return (_ctx, _cache) => {
|
|
12675
|
+
return openBlock(), createElementBlock("input", {
|
|
12676
|
+
checked: unref(isChecked),
|
|
12677
|
+
disabled: unref(isDisabled),
|
|
12678
|
+
form: form.value,
|
|
12679
|
+
inert: "",
|
|
12680
|
+
name: name.value,
|
|
12681
|
+
style: visuallyHiddenStyle$2,
|
|
12682
|
+
tabindex: "-1",
|
|
12683
|
+
type: "radio",
|
|
12684
|
+
value: value.value
|
|
12685
|
+
}, null, 8, _hoisted_1$3);
|
|
12686
|
+
};
|
|
12687
|
+
}
|
|
12688
|
+
});
|
|
12689
|
+
//#endregion
|
|
12690
|
+
//#region src/components/Radio/RadioIndicator.vue
|
|
12691
|
+
const _sfc_main$47 = /* @__PURE__ */ defineComponent({
|
|
12692
|
+
name: "RadioIndicator",
|
|
12693
|
+
__name: "RadioIndicator",
|
|
12694
|
+
props: {
|
|
12695
|
+
namespace: { default: "v0:radio:root" },
|
|
12696
|
+
as: { default: "span" },
|
|
12697
|
+
renderless: { type: Boolean }
|
|
12698
|
+
},
|
|
12699
|
+
setup(__props) {
|
|
12700
|
+
const root = useRadioRoot(__props.namespace);
|
|
12701
|
+
const isChecked = toRef(() => toValue(root.isChecked));
|
|
12702
|
+
const dataState = toRef(() => isChecked.value ? "checked" : "unchecked");
|
|
12703
|
+
const slotProps = toRef(() => ({
|
|
12704
|
+
isChecked: isChecked.value,
|
|
12705
|
+
attrs: {
|
|
12706
|
+
"data-state": dataState.value,
|
|
12707
|
+
"style": { visibility: isChecked.value ? "visible" : "hidden" }
|
|
12708
|
+
}
|
|
12709
|
+
}));
|
|
12710
|
+
return (_ctx, _cache) => {
|
|
12711
|
+
return openBlock(), createBlock(unref(_sfc_main), mergeProps(slotProps.value.attrs, {
|
|
12712
|
+
as: __props.as,
|
|
12713
|
+
renderless: __props.renderless
|
|
12714
|
+
}), {
|
|
12715
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
12716
|
+
_: 3
|
|
12717
|
+
}, 16, ["as", "renderless"]);
|
|
12718
|
+
};
|
|
12719
|
+
}
|
|
12720
|
+
});
|
|
12721
|
+
//#endregion
|
|
12722
|
+
//#region src/components/Radio/index.ts
|
|
12723
|
+
/**
|
|
12724
|
+
* Radio component with sub-components for radio button controls.
|
|
12725
|
+
*
|
|
12726
|
+
* @see https://0.vuetifyjs.com/components/forms/radio
|
|
12727
|
+
*
|
|
12728
|
+
* @example
|
|
12729
|
+
* ```vue
|
|
12730
|
+
* <script lang="ts" setup>
|
|
12731
|
+
* import { Radio } from '@vuetify/v0'
|
|
12732
|
+
* import { ref } from 'vue'
|
|
12733
|
+
*
|
|
12734
|
+
* const selected = ref<string>()
|
|
12735
|
+
* <\/script>
|
|
12736
|
+
*
|
|
12737
|
+
* <template>
|
|
12738
|
+
* <Radio.Group v-model="selected">
|
|
12739
|
+
* <label>
|
|
12740
|
+
* <Radio.Root value="a">
|
|
12741
|
+
* <Radio.Indicator>●</Radio.Indicator>
|
|
12742
|
+
* </Radio.Root>
|
|
12743
|
+
* Option A
|
|
12744
|
+
* </label>
|
|
12745
|
+
* <label>
|
|
12746
|
+
* <Radio.Root value="b">
|
|
12747
|
+
* <Radio.Indicator>●</Radio.Indicator>
|
|
12748
|
+
* </Radio.Root>
|
|
12749
|
+
* Option B
|
|
12750
|
+
* </label>
|
|
12751
|
+
* </Radio.Group>
|
|
12752
|
+
* </template>
|
|
12753
|
+
* ```
|
|
12754
|
+
*/
|
|
12755
|
+
const Radio = {
|
|
12756
|
+
Group: _sfc_main$45,
|
|
12757
|
+
HiddenInput: _sfc_main$46,
|
|
12758
|
+
Indicator: _sfc_main$47,
|
|
12759
|
+
Root: _sfc_main$48
|
|
12760
|
+
};
|
|
12761
|
+
//#endregion
|
|
12762
|
+
//#region src/components/Scrim/Scrim.vue
|
|
12763
|
+
const _sfc_main$49 = /* @__PURE__ */ defineComponent({
|
|
12764
|
+
name: "Scrim",
|
|
12765
|
+
inheritAttrs: false,
|
|
12766
|
+
__name: "Scrim",
|
|
12767
|
+
props: {
|
|
12768
|
+
transition: { default: "fade" },
|
|
12769
|
+
teleport: {
|
|
12770
|
+
type: Boolean,
|
|
12771
|
+
default: true
|
|
12772
|
+
},
|
|
12773
|
+
teleportTo: { default: "body" },
|
|
12774
|
+
as: { default: "div" },
|
|
12775
|
+
renderless: { type: Boolean }
|
|
12776
|
+
},
|
|
12777
|
+
setup(__props) {
|
|
12778
|
+
const attrs = useAttrs();
|
|
12779
|
+
const stack = useStack();
|
|
12780
|
+
const tickets = computed(() => Array.from(stack.selectedItems.value));
|
|
12781
|
+
function onDismiss(ticket) {
|
|
12782
|
+
if (!ticket.blocking) ticket.dismiss();
|
|
12783
|
+
}
|
|
12784
|
+
function getSlotProps(ticket) {
|
|
12785
|
+
return {
|
|
12786
|
+
ticket,
|
|
12787
|
+
zIndex: ticket.zIndex.value - 1,
|
|
12788
|
+
isBlocking: ticket.blocking,
|
|
12789
|
+
dismiss: () => onDismiss(ticket)
|
|
12790
|
+
};
|
|
12791
|
+
}
|
|
12792
|
+
function getStyle(ticket) {
|
|
12793
|
+
return { zIndex: ticket.zIndex.value - 1 };
|
|
12794
|
+
}
|
|
12795
|
+
return (_ctx, _cache) => {
|
|
12796
|
+
return __props.teleport ? (openBlock(), createBlock(Teleport, {
|
|
12797
|
+
key: 0,
|
|
12798
|
+
to: __props.teleportTo
|
|
12799
|
+
}, [createVNode(TransitionGroup, { name: __props.transition }, {
|
|
12800
|
+
default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(tickets.value, (ticket) => {
|
|
12801
|
+
return openBlock(), createBlock(unref(_sfc_main), mergeProps({
|
|
12802
|
+
key: ticket.id,
|
|
12803
|
+
as: __props.as,
|
|
12804
|
+
style: getStyle(ticket)
|
|
12805
|
+
}, { ref_for: true }, unref(attrs), { onClick: () => onDismiss(ticket) }), {
|
|
12806
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", mergeProps({ ref_for: true }, getSlotProps(ticket)))]),
|
|
12807
|
+
_: 2
|
|
12808
|
+
}, 1040, [
|
|
12809
|
+
"as",
|
|
12810
|
+
"style",
|
|
12811
|
+
"onClick"
|
|
12812
|
+
]);
|
|
12813
|
+
}), 128))]),
|
|
12814
|
+
_: 3
|
|
12815
|
+
}, 8, ["name"])], 8, ["to"])) : (openBlock(), createBlock(TransitionGroup, {
|
|
12816
|
+
key: 1,
|
|
12817
|
+
name: __props.transition
|
|
12818
|
+
}, {
|
|
12819
|
+
default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(tickets.value, (ticket) => {
|
|
12820
|
+
return openBlock(), createBlock(unref(_sfc_main), mergeProps({
|
|
12821
|
+
key: ticket.id,
|
|
12822
|
+
as: __props.as,
|
|
12823
|
+
style: getStyle(ticket)
|
|
12824
|
+
}, { ref_for: true }, unref(attrs), { onClick: () => onDismiss(ticket) }), {
|
|
12825
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", mergeProps({ ref_for: true }, getSlotProps(ticket)))]),
|
|
12826
|
+
_: 2
|
|
12827
|
+
}, 1040, [
|
|
12828
|
+
"as",
|
|
12829
|
+
"style",
|
|
12830
|
+
"onClick"
|
|
12831
|
+
]);
|
|
12832
|
+
}), 128))]),
|
|
12833
|
+
_: 3
|
|
12834
|
+
}, 8, ["name"]));
|
|
12835
|
+
};
|
|
12836
|
+
}
|
|
12837
|
+
});
|
|
12838
|
+
//#endregion
|
|
12839
|
+
//#region src/components/Select/SelectHiddenInput.vue
|
|
12840
|
+
const _hoisted_1$2 = [
|
|
12841
|
+
"disabled",
|
|
12842
|
+
"form",
|
|
12843
|
+
"name",
|
|
12844
|
+
"value"
|
|
12845
|
+
];
|
|
12846
|
+
const visuallyHiddenStyle$1 = {
|
|
12847
|
+
position: "absolute",
|
|
12848
|
+
width: "1px",
|
|
12849
|
+
height: "1px",
|
|
12850
|
+
padding: "0",
|
|
12851
|
+
margin: "-1px",
|
|
12852
|
+
overflow: "hidden",
|
|
12853
|
+
clip: "rect(0, 0, 0, 0)",
|
|
12854
|
+
whiteSpace: "nowrap",
|
|
12855
|
+
border: "0"
|
|
12856
|
+
};
|
|
12857
|
+
const _sfc_main$81 = /* @__PURE__ */ defineComponent({
|
|
12858
|
+
name: "SelectHiddenInput",
|
|
12859
|
+
__name: "SelectHiddenInput",
|
|
12860
|
+
props: { namespace: { default: "v0:select" } },
|
|
12861
|
+
setup(__props) {
|
|
12862
|
+
const context = useSelectContext(__props.namespace);
|
|
12863
|
+
const values = toRef(() => {
|
|
12864
|
+
return Array.from(context.selection.selectedValues.value).map((v) => {
|
|
12865
|
+
if (/* @__PURE__ */ isNullOrUndefined(v)) return "";
|
|
12866
|
+
if (/* @__PURE__ */ isObject(v)) return JSON.stringify(v);
|
|
12867
|
+
return String(v);
|
|
12868
|
+
});
|
|
12869
|
+
});
|
|
12870
|
+
const isDisabled = toRef(() => toValue(context.disabled));
|
|
12871
|
+
return (_ctx, _cache) => {
|
|
12872
|
+
return openBlock(true), createElementBlock(Fragment, null, renderList(values.value, (val, index) => {
|
|
12873
|
+
return openBlock(), createElementBlock("input", {
|
|
12874
|
+
key: index,
|
|
12875
|
+
disabled: isDisabled.value,
|
|
12876
|
+
form: unref(context).form,
|
|
12877
|
+
inert: "",
|
|
12878
|
+
name: unref(context).name,
|
|
12879
|
+
style: visuallyHiddenStyle$1,
|
|
12880
|
+
tabindex: "-1",
|
|
12881
|
+
type: "hidden",
|
|
12882
|
+
value: val
|
|
12883
|
+
}, null, 8, _hoisted_1$2);
|
|
12884
|
+
}), 128);
|
|
12885
|
+
};
|
|
12886
|
+
}
|
|
12887
|
+
});
|
|
12888
|
+
//#endregion
|
|
12889
|
+
//#region src/components/Select/SelectRoot.vue
|
|
12890
|
+
const [useSelectContext, provideSelectContext] = createContext();
|
|
12891
|
+
const _sfc_main$55 = /* @__PURE__ */ defineComponent({
|
|
12892
|
+
name: "SelectRoot",
|
|
12893
|
+
__name: "SelectRoot",
|
|
12894
|
+
props: /* @__PURE__ */ mergeModels({
|
|
12895
|
+
namespace: { default: "v0:select" },
|
|
12896
|
+
id: {},
|
|
12897
|
+
name: {},
|
|
12898
|
+
form: {},
|
|
12899
|
+
disabled: {
|
|
12900
|
+
type: Boolean,
|
|
12901
|
+
default: false
|
|
12902
|
+
},
|
|
12903
|
+
multiple: {
|
|
12904
|
+
type: Boolean,
|
|
12905
|
+
default: false
|
|
12906
|
+
},
|
|
12907
|
+
mandatory: {
|
|
12908
|
+
type: [Boolean, String],
|
|
12909
|
+
default: false
|
|
12910
|
+
},
|
|
12911
|
+
as: { default: null },
|
|
12912
|
+
renderless: { type: Boolean }
|
|
12913
|
+
}, {
|
|
12914
|
+
"modelValue": {},
|
|
12915
|
+
"modelModifiers": {}
|
|
12916
|
+
}),
|
|
12917
|
+
emits: /* @__PURE__ */ mergeModels(["update:model-value"], ["update:modelValue"]),
|
|
12918
|
+
setup(__props) {
|
|
12919
|
+
const model = useModel(__props, "modelValue");
|
|
12920
|
+
const id = __props.id ?? useId$1();
|
|
12921
|
+
const listboxId = `${id}-listbox`;
|
|
12922
|
+
const activatorId = `${id}-activator`;
|
|
12923
|
+
const selection = createSelection({
|
|
12924
|
+
multiple: __props.multiple,
|
|
12925
|
+
mandatory: __props.mandatory,
|
|
12926
|
+
disabled: toRef(() => __props.disabled),
|
|
12927
|
+
events: true
|
|
12928
|
+
});
|
|
12929
|
+
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
|
+
});
|
|
12934
|
+
const popover = usePopover({ id });
|
|
12935
|
+
const isOpen = popover.isOpen;
|
|
12936
|
+
const activatorEl = shallowRef(null);
|
|
12937
|
+
const virtualFocus = useVirtualFocus(() => selection.values().map((ticket) => ({
|
|
12938
|
+
id: ticket.id,
|
|
12939
|
+
el: () => document.querySelector(`#${CSS.escape(`${id}-option-${ticket.id}`)}`),
|
|
12940
|
+
disabled: ticket.disabled
|
|
12941
|
+
})), {
|
|
12942
|
+
control: activatorEl,
|
|
12943
|
+
target: () => null,
|
|
12944
|
+
orientation: "vertical"
|
|
12945
|
+
});
|
|
12946
|
+
watch(isOpen, (open) => {
|
|
12947
|
+
if (!open) {
|
|
12948
|
+
virtualFocus.clear();
|
|
12949
|
+
return;
|
|
12950
|
+
}
|
|
12951
|
+
nextTick(() => {
|
|
12952
|
+
const selected = selectedId.value;
|
|
12953
|
+
if (!/* @__PURE__ */ isUndefined(selected)) virtualFocus.highlight(String(selected));
|
|
12954
|
+
});
|
|
12955
|
+
}, { flush: "post" });
|
|
12956
|
+
function open() {
|
|
12957
|
+
if (!isOpen.value && !toValue(__props.disabled)) isOpen.value = true;
|
|
12958
|
+
}
|
|
12959
|
+
function close() {
|
|
12960
|
+
isOpen.value = false;
|
|
12961
|
+
}
|
|
12962
|
+
function toggle() {
|
|
12963
|
+
if (isOpen.value) close();
|
|
12964
|
+
else open();
|
|
12965
|
+
}
|
|
12966
|
+
function select(itemId) {
|
|
12967
|
+
if (__props.multiple) selection.toggle(itemId);
|
|
12968
|
+
else {
|
|
12969
|
+
selection.select(itemId);
|
|
12970
|
+
close();
|
|
12971
|
+
}
|
|
12972
|
+
}
|
|
12973
|
+
provideSelectContext(__props.namespace, {
|
|
12974
|
+
isOpen,
|
|
12975
|
+
disabled: toRef(() => __props.disabled),
|
|
12976
|
+
multiple: __props.multiple,
|
|
12977
|
+
id,
|
|
12978
|
+
listboxId,
|
|
12979
|
+
activatorId,
|
|
12980
|
+
name: __props.name,
|
|
12981
|
+
form: __props.form,
|
|
12982
|
+
activatorEl,
|
|
12983
|
+
selection,
|
|
12984
|
+
virtualFocus,
|
|
12985
|
+
popover,
|
|
12986
|
+
open,
|
|
12987
|
+
close,
|
|
12988
|
+
toggle,
|
|
12989
|
+
select
|
|
12990
|
+
});
|
|
12991
|
+
const slotProps = toRef(() => ({
|
|
12992
|
+
id,
|
|
12993
|
+
isOpen: isOpen.value,
|
|
12994
|
+
isDisabled: toValue(__props.disabled),
|
|
12995
|
+
open,
|
|
12996
|
+
close,
|
|
12997
|
+
toggle
|
|
12998
|
+
}));
|
|
12999
|
+
return (_ctx, _cache) => {
|
|
13000
|
+
return openBlock(), createElementBlock(Fragment, null, [createVNode(unref(_sfc_main), {
|
|
13001
|
+
as: __props.as,
|
|
13002
|
+
renderless: ""
|
|
13003
|
+
}, {
|
|
13004
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
13005
|
+
_: 3
|
|
13006
|
+
}, 8, ["as"]), __props.name ? (openBlock(), createBlock(_sfc_main$81, { key: 0 })) : createCommentVNode("v-if", true)], 64);
|
|
13007
|
+
};
|
|
13008
|
+
}
|
|
13009
|
+
});
|
|
13010
|
+
//#endregion
|
|
13011
|
+
//#region src/components/Select/SelectActivator.vue
|
|
13012
|
+
const _sfc_main$50 = /* @__PURE__ */ defineComponent({
|
|
13013
|
+
name: "SelectActivator",
|
|
13014
|
+
__name: "SelectActivator",
|
|
13015
|
+
props: {
|
|
13016
|
+
namespace: { default: "v0:select" },
|
|
13017
|
+
as: { default: "button" },
|
|
13018
|
+
renderless: { type: Boolean }
|
|
13019
|
+
},
|
|
13020
|
+
setup(__props) {
|
|
13021
|
+
const context = useSelectContext(__props.namespace);
|
|
13022
|
+
const activatorEl = useTemplateRef("activator");
|
|
13023
|
+
watchEffect(() => {
|
|
13024
|
+
context.activatorEl.value = activatorEl.value?.element ?? null;
|
|
13025
|
+
});
|
|
13026
|
+
function onClick() {
|
|
13027
|
+
context.toggle();
|
|
13028
|
+
}
|
|
13029
|
+
function onKeydown(e) {
|
|
13030
|
+
if (context.isOpen.value) switch (e.key) {
|
|
13031
|
+
case " ":
|
|
13032
|
+
case "Enter":
|
|
13033
|
+
e.preventDefault();
|
|
13034
|
+
if (!/* @__PURE__ */ isUndefined(context.virtualFocus.highlightedId.value)) context.select(context.virtualFocus.highlightedId.value);
|
|
13035
|
+
break;
|
|
13036
|
+
case "Escape":
|
|
13037
|
+
e.preventDefault();
|
|
13038
|
+
context.close();
|
|
13039
|
+
break;
|
|
13040
|
+
case "Tab":
|
|
13041
|
+
context.close();
|
|
13042
|
+
break;
|
|
13043
|
+
case "ArrowDown":
|
|
13044
|
+
case "ArrowUp":
|
|
13045
|
+
case "Home":
|
|
13046
|
+
case "End":
|
|
13047
|
+
context.virtualFocus.onKeydown(e);
|
|
13048
|
+
break;
|
|
13049
|
+
}
|
|
13050
|
+
else switch (e.key) {
|
|
13051
|
+
case " ":
|
|
13052
|
+
case "Enter":
|
|
13053
|
+
case "ArrowDown":
|
|
13054
|
+
case "ArrowUp":
|
|
13055
|
+
e.preventDefault();
|
|
13056
|
+
context.open();
|
|
13057
|
+
break;
|
|
13058
|
+
}
|
|
13059
|
+
}
|
|
13060
|
+
const style = toRef(() => context.popover.anchorStyles.value);
|
|
13061
|
+
const slotProps = toRef(() => ({
|
|
13062
|
+
isOpen: context.isOpen.value,
|
|
13063
|
+
attrs: {
|
|
13064
|
+
"id": context.activatorId,
|
|
13065
|
+
"role": "combobox",
|
|
13066
|
+
"type": __props.as === "button" ? "button" : void 0,
|
|
13067
|
+
"aria-expanded": context.isOpen.value,
|
|
13068
|
+
"aria-haspopup": "listbox",
|
|
13069
|
+
"aria-controls": context.listboxId,
|
|
13070
|
+
"data-select-open": context.isOpen.value ? "" : void 0
|
|
13071
|
+
}
|
|
13072
|
+
}));
|
|
13073
|
+
return (_ctx, _cache) => {
|
|
13074
|
+
return openBlock(), createBlock(unref(_sfc_main), mergeProps({
|
|
13075
|
+
ref: "activator",
|
|
13076
|
+
as: __props.as,
|
|
13077
|
+
style: style.value
|
|
13078
|
+
}, slotProps.value.attrs, {
|
|
13079
|
+
onClick,
|
|
13080
|
+
onKeydown
|
|
13081
|
+
}), {
|
|
13082
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
13083
|
+
_: 3
|
|
13084
|
+
}, 16, ["as", "style"]);
|
|
13085
|
+
};
|
|
13086
|
+
}
|
|
13087
|
+
});
|
|
13088
|
+
//#endregion
|
|
13089
|
+
//#region src/components/Select/SelectContent.vue
|
|
13090
|
+
const _sfc_main$51 = /* @__PURE__ */ defineComponent({
|
|
13091
|
+
name: "SelectContent",
|
|
13092
|
+
__name: "SelectContent",
|
|
13093
|
+
props: {
|
|
13094
|
+
namespace: { default: "v0:select" },
|
|
13095
|
+
as: { default: "div" },
|
|
13096
|
+
renderless: { type: Boolean }
|
|
13097
|
+
},
|
|
13098
|
+
setup(__props) {
|
|
13099
|
+
const context = useSelectContext(__props.namespace);
|
|
13100
|
+
const content = useTemplateRef("content");
|
|
13101
|
+
context.popover.attach(() => content.value?.element);
|
|
13102
|
+
const { hasContent } = useLazy(context.isOpen);
|
|
13103
|
+
const slotProps = toRef(() => ({ isOpen: context.isOpen.value }));
|
|
13104
|
+
const attrs = toRef(() => ({
|
|
13105
|
+
...context.popover.contentAttrs.value,
|
|
13106
|
+
"id": context.listboxId,
|
|
13107
|
+
"role": "listbox",
|
|
13108
|
+
"aria-multiselectable": context.multiple || void 0,
|
|
13109
|
+
"tabindex": -1
|
|
13110
|
+
}));
|
|
13111
|
+
const style = toRef(() => context.popover.contentStyles.value);
|
|
13112
|
+
return (_ctx, _cache) => {
|
|
13113
|
+
return openBlock(), createBlock(unref(_sfc_main), mergeProps({
|
|
13114
|
+
ref_key: "content",
|
|
13115
|
+
ref: content,
|
|
13116
|
+
as: __props.as,
|
|
13117
|
+
style: style.value
|
|
13118
|
+
}, attrs.value), {
|
|
13119
|
+
default: withCtx(() => [unref(hasContent) ? renderSlot(_ctx.$slots, "default", normalizeProps(mergeProps({ key: 0 }, slotProps.value))) : createCommentVNode("v-if", true)]),
|
|
13120
|
+
_: 3
|
|
13121
|
+
}, 16, ["as", "style"]);
|
|
13122
|
+
};
|
|
13123
|
+
}
|
|
13124
|
+
});
|
|
13125
|
+
//#endregion
|
|
13126
|
+
//#region src/components/Select/SelectCue.vue
|
|
13127
|
+
const _sfc_main$52 = /* @__PURE__ */ defineComponent({
|
|
13128
|
+
name: "SelectCue",
|
|
13129
|
+
__name: "SelectCue",
|
|
13130
|
+
props: {
|
|
13131
|
+
namespace: { default: "v0:select" },
|
|
13132
|
+
as: { default: "span" },
|
|
13133
|
+
renderless: { type: Boolean }
|
|
13134
|
+
},
|
|
13135
|
+
setup(__props) {
|
|
13136
|
+
const context = useSelectContext(__props.namespace);
|
|
13137
|
+
const slotProps = toRef(() => ({
|
|
13138
|
+
isOpen: context.isOpen.value,
|
|
13139
|
+
attrs: {
|
|
13140
|
+
"aria-hidden": true,
|
|
13141
|
+
"data-state": context.isOpen.value ? "open" : "closed"
|
|
13142
|
+
}
|
|
13143
|
+
}));
|
|
13144
|
+
return (_ctx, _cache) => {
|
|
13145
|
+
return openBlock(), createBlock(unref(_sfc_main), mergeProps({ as: __props.as }, slotProps.value.attrs), {
|
|
13146
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
13147
|
+
_: 3
|
|
13148
|
+
}, 16, ["as"]);
|
|
13149
|
+
};
|
|
13150
|
+
}
|
|
13151
|
+
});
|
|
13152
|
+
//#endregion
|
|
13153
|
+
//#region src/components/Select/SelectItem.vue
|
|
13154
|
+
const _sfc_main$53 = /* @__PURE__ */ defineComponent({
|
|
13155
|
+
name: "SelectItem",
|
|
13156
|
+
__name: "SelectItem",
|
|
13157
|
+
props: {
|
|
13158
|
+
namespace: { default: "v0:select" },
|
|
13159
|
+
id: {},
|
|
13160
|
+
value: {},
|
|
13161
|
+
disabled: {},
|
|
13162
|
+
as: { default: "div" },
|
|
13163
|
+
renderless: { type: Boolean }
|
|
13164
|
+
},
|
|
13165
|
+
setup(__props) {
|
|
13166
|
+
const context = useSelectContext(__props.namespace);
|
|
13167
|
+
const ticket = context.selection.register({
|
|
13168
|
+
id: __props.id,
|
|
13169
|
+
value: __props.value,
|
|
13170
|
+
disabled: __props.disabled
|
|
13171
|
+
});
|
|
13172
|
+
const elementId = `${context.id}-option-${ticket.id}`;
|
|
13173
|
+
const isSelected = toRef(() => toValue(ticket.isSelected));
|
|
13174
|
+
const isDisabled = toRef(() => toValue(ticket.disabled) || toValue(context.disabled));
|
|
13175
|
+
const isHighlighted = toRef(() => context.virtualFocus.highlightedId.value === ticket.id);
|
|
13176
|
+
function onClick() {
|
|
13177
|
+
if (!toValue(isDisabled)) context.select(ticket.id);
|
|
13178
|
+
}
|
|
13179
|
+
onUnmounted(() => {
|
|
13180
|
+
context.selection.unregister(ticket.id);
|
|
11818
13181
|
});
|
|
11819
|
-
const context = {
|
|
11820
|
-
id: __props.id,
|
|
11821
|
-
label: __props.label,
|
|
11822
|
-
value: __props.value,
|
|
11823
|
-
name,
|
|
11824
|
-
form: __props.form,
|
|
11825
|
-
isChecked,
|
|
11826
|
-
isDisabled,
|
|
11827
|
-
select
|
|
11828
|
-
};
|
|
11829
|
-
provideRadioRoot(__props.namespace, context);
|
|
11830
13182
|
const slotProps = toRef(() => ({
|
|
11831
|
-
id: __props.id,
|
|
11832
|
-
label: __props.label,
|
|
11833
13183
|
value: __props.value,
|
|
11834
|
-
|
|
13184
|
+
isSelected: isSelected.value,
|
|
13185
|
+
isHighlighted: isHighlighted.value,
|
|
11835
13186
|
isDisabled: isDisabled.value,
|
|
11836
|
-
select,
|
|
13187
|
+
select: () => context.select(ticket.id),
|
|
11837
13188
|
attrs: {
|
|
11838
|
-
"
|
|
11839
|
-
"role": "
|
|
11840
|
-
"aria-
|
|
13189
|
+
"id": elementId,
|
|
13190
|
+
"role": "option",
|
|
13191
|
+
"aria-selected": isSelected.value,
|
|
11841
13192
|
"aria-disabled": isDisabled.value || void 0,
|
|
11842
|
-
"
|
|
11843
|
-
"
|
|
11844
|
-
"
|
|
11845
|
-
"
|
|
11846
|
-
"tabindex": isTabbable.value ? 0 : -1,
|
|
11847
|
-
"data-state": dataState.value,
|
|
11848
|
-
"data-disabled": isDisabled.value ? true : void 0,
|
|
11849
|
-
"data-radio-id": __props.id
|
|
13193
|
+
"data-selected": isSelected.value || void 0,
|
|
13194
|
+
"data-highlighted": isHighlighted.value ? "" : void 0,
|
|
13195
|
+
"data-disabled": isDisabled.value || void 0,
|
|
13196
|
+
"data-id": String(ticket.id)
|
|
11850
13197
|
}
|
|
11851
13198
|
}));
|
|
11852
13199
|
return (_ctx, _cache) => {
|
|
11853
|
-
return openBlock(),
|
|
11854
|
-
...unref(attrs),
|
|
11855
|
-
...slotProps.value.attrs
|
|
11856
|
-
}, {
|
|
11857
|
-
as: __props.as,
|
|
11858
|
-
renderless: __props.renderless,
|
|
11859
|
-
onClick,
|
|
11860
|
-
onKeydown
|
|
11861
|
-
}), {
|
|
13200
|
+
return openBlock(), createBlock(unref(_sfc_main), mergeProps({ as: __props.as }, slotProps.value.attrs, { onClick }), {
|
|
11862
13201
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
11863
13202
|
_: 3
|
|
11864
|
-
}, 16, ["as"
|
|
13203
|
+
}, 16, ["as"]);
|
|
11865
13204
|
};
|
|
11866
13205
|
}
|
|
11867
13206
|
});
|
|
11868
13207
|
//#endregion
|
|
11869
|
-
//#region src/components/
|
|
11870
|
-
const
|
|
11871
|
-
"
|
|
11872
|
-
"
|
|
11873
|
-
"form",
|
|
11874
|
-
"name",
|
|
11875
|
-
"value"
|
|
11876
|
-
];
|
|
11877
|
-
const visuallyHiddenStyle$1 = {
|
|
11878
|
-
position: "absolute",
|
|
11879
|
-
width: "1px",
|
|
11880
|
-
height: "1px",
|
|
11881
|
-
padding: "0",
|
|
11882
|
-
margin: "-1px",
|
|
11883
|
-
overflow: "hidden",
|
|
11884
|
-
clip: "rect(0, 0, 0, 0)",
|
|
11885
|
-
whiteSpace: "nowrap",
|
|
11886
|
-
border: "0"
|
|
11887
|
-
};
|
|
11888
|
-
const _sfc_main$41 = /* @__PURE__ */ defineComponent({
|
|
11889
|
-
name: "RadioHiddenInput",
|
|
11890
|
-
__name: "RadioHiddenInput",
|
|
13208
|
+
//#region src/components/Select/SelectPlaceholder.vue
|
|
13209
|
+
const _sfc_main$54 = /* @__PURE__ */ defineComponent({
|
|
13210
|
+
name: "SelectPlaceholder",
|
|
13211
|
+
__name: "SelectPlaceholder",
|
|
11891
13212
|
props: {
|
|
11892
|
-
namespace: { default: "v0:
|
|
11893
|
-
|
|
11894
|
-
|
|
11895
|
-
form: {}
|
|
13213
|
+
namespace: { default: "v0:select" },
|
|
13214
|
+
as: { default: "span" },
|
|
13215
|
+
renderless: { type: Boolean }
|
|
11896
13216
|
},
|
|
11897
13217
|
setup(__props) {
|
|
11898
|
-
const
|
|
11899
|
-
const
|
|
11900
|
-
const form = toRef(() => __props.form ?? root.form);
|
|
11901
|
-
const value = toRef(() => {
|
|
11902
|
-
const v = __props.value ?? root.value ?? "on";
|
|
11903
|
-
if (/* @__PURE__ */ isObject(v)) return JSON.stringify(v);
|
|
11904
|
-
return String(v);
|
|
11905
|
-
});
|
|
11906
|
-
const isChecked = root.isChecked;
|
|
11907
|
-
const isDisabled = root.isDisabled;
|
|
13218
|
+
const context = useSelectContext(__props.namespace);
|
|
13219
|
+
const hasValue = toRef(() => context.selection.selectedIds.size > 0);
|
|
11908
13220
|
return (_ctx, _cache) => {
|
|
11909
|
-
return openBlock(),
|
|
11910
|
-
|
|
11911
|
-
|
|
11912
|
-
|
|
11913
|
-
|
|
11914
|
-
|
|
11915
|
-
|
|
11916
|
-
tabindex: "-1",
|
|
11917
|
-
type: "radio",
|
|
11918
|
-
value: value.value
|
|
11919
|
-
}, null, 8, _hoisted_1$2);
|
|
13221
|
+
return !hasValue.value ? (openBlock(), createBlock(unref(_sfc_main), {
|
|
13222
|
+
key: 0,
|
|
13223
|
+
as: __props.as
|
|
13224
|
+
}, {
|
|
13225
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", { hasValue: hasValue.value })]),
|
|
13226
|
+
_: 3
|
|
13227
|
+
}, 8, ["as"])) : createCommentVNode("v-if", true);
|
|
11920
13228
|
};
|
|
11921
13229
|
}
|
|
11922
13230
|
});
|
|
11923
13231
|
//#endregion
|
|
11924
|
-
//#region src/components/
|
|
11925
|
-
const _sfc_main$
|
|
11926
|
-
name: "
|
|
11927
|
-
__name: "
|
|
13232
|
+
//#region src/components/Select/SelectValue.vue
|
|
13233
|
+
const _sfc_main$56 = /* @__PURE__ */ defineComponent({
|
|
13234
|
+
name: "SelectValue",
|
|
13235
|
+
__name: "SelectValue",
|
|
11928
13236
|
props: {
|
|
11929
|
-
namespace: { default: "v0:
|
|
13237
|
+
namespace: { default: "v0:select" },
|
|
11930
13238
|
as: { default: "span" },
|
|
11931
13239
|
renderless: { type: Boolean }
|
|
11932
13240
|
},
|
|
11933
13241
|
setup(__props) {
|
|
11934
|
-
const
|
|
11935
|
-
const
|
|
11936
|
-
const
|
|
13242
|
+
const context = useSelectContext(__props.namespace);
|
|
13243
|
+
const items = toRef(() => Array.from(context.selection.selectedItems.value));
|
|
13244
|
+
const values = toRef(() => Array.from(context.selection.selectedValues.value));
|
|
13245
|
+
const hasValue = toRef(() => context.selection.selectedIds.size > 0);
|
|
11937
13246
|
const slotProps = toRef(() => ({
|
|
11938
|
-
|
|
11939
|
-
|
|
11940
|
-
|
|
11941
|
-
|
|
11942
|
-
|
|
13247
|
+
selectedItem: items.value[0],
|
|
13248
|
+
selectedItems: items.value,
|
|
13249
|
+
selectedValue: values.value[0],
|
|
13250
|
+
selectedValues: values.value,
|
|
13251
|
+
hasValue: hasValue.value,
|
|
13252
|
+
attrs: {}
|
|
11943
13253
|
}));
|
|
11944
13254
|
return (_ctx, _cache) => {
|
|
11945
|
-
return openBlock(), createBlock(unref(_sfc_main),
|
|
11946
|
-
|
|
11947
|
-
|
|
11948
|
-
}
|
|
11949
|
-
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
13255
|
+
return hasValue.value ? (openBlock(), createBlock(unref(_sfc_main), {
|
|
13256
|
+
key: 0,
|
|
13257
|
+
as: __props.as
|
|
13258
|
+
}, {
|
|
13259
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)), () => [createTextVNode(toDisplayString(values.value[0]), 1)])]),
|
|
11950
13260
|
_: 3
|
|
11951
|
-
},
|
|
13261
|
+
}, 8, ["as"])) : createCommentVNode("v-if", true);
|
|
11952
13262
|
};
|
|
11953
13263
|
}
|
|
11954
13264
|
});
|
|
11955
13265
|
//#endregion
|
|
11956
|
-
//#region src/components/
|
|
13266
|
+
//#region src/components/Select/index.ts
|
|
11957
13267
|
/**
|
|
11958
|
-
*
|
|
13268
|
+
* Select component with sub-components for building dropdown selects.
|
|
11959
13269
|
*
|
|
11960
|
-
* @see https://0.vuetifyjs.com/components/
|
|
13270
|
+
* @see https://0.vuetifyjs.com/components/select
|
|
11961
13271
|
*
|
|
11962
13272
|
* @example
|
|
11963
13273
|
* ```vue
|
|
11964
13274
|
* <script lang="ts" setup>
|
|
11965
|
-
* import {
|
|
13275
|
+
* import { Select } from '@vuetify/v0'
|
|
11966
13276
|
* import { ref } from 'vue'
|
|
11967
13277
|
*
|
|
11968
|
-
* const selected = ref
|
|
13278
|
+
* const selected = ref()
|
|
13279
|
+
* const items = [
|
|
13280
|
+
* { id: 'apple', label: 'Apple' },
|
|
13281
|
+
* { id: 'banana', label: 'Banana' },
|
|
13282
|
+
* { id: 'cherry', label: 'Cherry' },
|
|
13283
|
+
* ]
|
|
11969
13284
|
* <\/script>
|
|
11970
13285
|
*
|
|
11971
13286
|
* <template>
|
|
11972
|
-
* <
|
|
11973
|
-
* <
|
|
11974
|
-
* <
|
|
11975
|
-
*
|
|
11976
|
-
* </
|
|
11977
|
-
*
|
|
11978
|
-
* </
|
|
11979
|
-
*
|
|
11980
|
-
*
|
|
11981
|
-
*
|
|
11982
|
-
*
|
|
11983
|
-
*
|
|
11984
|
-
*
|
|
11985
|
-
*
|
|
13287
|
+
* <Select.Root v-model="selected">
|
|
13288
|
+
* <Select.Activator>
|
|
13289
|
+
* <Select.Value v-slot="{ selectedValue }">
|
|
13290
|
+
* {{ selectedValue }}
|
|
13291
|
+
* </Select.Value>
|
|
13292
|
+
* <Select.Placeholder>Pick a fruit</Select.Placeholder>
|
|
13293
|
+
* </Select.Activator>
|
|
13294
|
+
*
|
|
13295
|
+
* <Select.Content>
|
|
13296
|
+
* <Select.Item
|
|
13297
|
+
* v-for="item in items"
|
|
13298
|
+
* :key="item.id"
|
|
13299
|
+
* :id="item.id"
|
|
13300
|
+
* :value="item.label"
|
|
13301
|
+
* v-slot="{ isSelected, attrs }"
|
|
13302
|
+
* >
|
|
13303
|
+
* <div v-bind="attrs">{{ item.label }}</div>
|
|
13304
|
+
* </Select.Item>
|
|
13305
|
+
* </Select.Content>
|
|
13306
|
+
* </Select.Root>
|
|
11986
13307
|
* </template>
|
|
11987
13308
|
* ```
|
|
11988
13309
|
*/
|
|
11989
|
-
const
|
|
11990
|
-
|
|
11991
|
-
|
|
11992
|
-
|
|
11993
|
-
|
|
13310
|
+
const Select = {
|
|
13311
|
+
Root: _sfc_main$55,
|
|
13312
|
+
Activator: _sfc_main$50,
|
|
13313
|
+
Value: _sfc_main$56,
|
|
13314
|
+
Content: _sfc_main$51,
|
|
13315
|
+
Cue: _sfc_main$52,
|
|
13316
|
+
Item: _sfc_main$53,
|
|
13317
|
+
Placeholder: _sfc_main$54
|
|
11994
13318
|
};
|
|
11995
13319
|
//#endregion
|
|
11996
|
-
//#region src/components/Scrim/Scrim.vue
|
|
11997
|
-
const _sfc_main$44 = /* @__PURE__ */ defineComponent({
|
|
11998
|
-
name: "Scrim",
|
|
11999
|
-
inheritAttrs: false,
|
|
12000
|
-
__name: "Scrim",
|
|
12001
|
-
props: {
|
|
12002
|
-
transition: { default: "fade" },
|
|
12003
|
-
teleport: {
|
|
12004
|
-
type: Boolean,
|
|
12005
|
-
default: true
|
|
12006
|
-
},
|
|
12007
|
-
teleportTo: { default: "body" },
|
|
12008
|
-
as: { default: "div" },
|
|
12009
|
-
renderless: { type: Boolean }
|
|
12010
|
-
},
|
|
12011
|
-
setup(__props) {
|
|
12012
|
-
const attrs = useAttrs();
|
|
12013
|
-
const stack = useStack();
|
|
12014
|
-
const tickets = computed(() => Array.from(stack.selectedItems.value));
|
|
12015
|
-
function onDismiss(ticket) {
|
|
12016
|
-
if (!ticket.blocking) ticket.dismiss();
|
|
12017
|
-
}
|
|
12018
|
-
function getSlotProps(ticket) {
|
|
12019
|
-
return {
|
|
12020
|
-
ticket,
|
|
12021
|
-
zIndex: ticket.zIndex.value - 1,
|
|
12022
|
-
isBlocking: ticket.blocking,
|
|
12023
|
-
dismiss: () => onDismiss(ticket)
|
|
12024
|
-
};
|
|
12025
|
-
}
|
|
12026
|
-
function getStyle(ticket) {
|
|
12027
|
-
return { zIndex: ticket.zIndex.value - 1 };
|
|
12028
|
-
}
|
|
12029
|
-
return (_ctx, _cache) => {
|
|
12030
|
-
return __props.teleport ? (openBlock(), createBlock(Teleport, {
|
|
12031
|
-
key: 0,
|
|
12032
|
-
to: __props.teleportTo
|
|
12033
|
-
}, [createVNode(TransitionGroup, { name: __props.transition }, {
|
|
12034
|
-
default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(tickets.value, (ticket) => {
|
|
12035
|
-
return openBlock(), createBlock(unref(_sfc_main), mergeProps({
|
|
12036
|
-
key: ticket.id,
|
|
12037
|
-
as: __props.as,
|
|
12038
|
-
style: getStyle(ticket)
|
|
12039
|
-
}, { ref_for: true }, unref(attrs), { onClick: () => onDismiss(ticket) }), {
|
|
12040
|
-
default: withCtx(() => [renderSlot(_ctx.$slots, "default", mergeProps({ ref_for: true }, getSlotProps(ticket)))]),
|
|
12041
|
-
_: 2
|
|
12042
|
-
}, 1040, [
|
|
12043
|
-
"as",
|
|
12044
|
-
"style",
|
|
12045
|
-
"onClick"
|
|
12046
|
-
]);
|
|
12047
|
-
}), 128))]),
|
|
12048
|
-
_: 3
|
|
12049
|
-
}, 8, ["name"])], 8, ["to"])) : (openBlock(), createBlock(TransitionGroup, {
|
|
12050
|
-
key: 1,
|
|
12051
|
-
name: __props.transition
|
|
12052
|
-
}, {
|
|
12053
|
-
default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(tickets.value, (ticket) => {
|
|
12054
|
-
return openBlock(), createBlock(unref(_sfc_main), mergeProps({
|
|
12055
|
-
key: ticket.id,
|
|
12056
|
-
as: __props.as,
|
|
12057
|
-
style: getStyle(ticket)
|
|
12058
|
-
}, { ref_for: true }, unref(attrs), { onClick: () => onDismiss(ticket) }), {
|
|
12059
|
-
default: withCtx(() => [renderSlot(_ctx.$slots, "default", mergeProps({ ref_for: true }, getSlotProps(ticket)))]),
|
|
12060
|
-
_: 2
|
|
12061
|
-
}, 1040, [
|
|
12062
|
-
"as",
|
|
12063
|
-
"style",
|
|
12064
|
-
"onClick"
|
|
12065
|
-
]);
|
|
12066
|
-
}), 128))]),
|
|
12067
|
-
_: 3
|
|
12068
|
-
}, 8, ["name"]));
|
|
12069
|
-
};
|
|
12070
|
-
}
|
|
12071
|
-
});
|
|
12072
|
-
//#endregion
|
|
12073
13320
|
//#region src/components/Selection/SelectionRoot.vue
|
|
12074
13321
|
const [useSelectionRoot, provideSelectionRoot] = createContext();
|
|
12075
|
-
const _sfc_main$
|
|
13322
|
+
const _sfc_main$58 = /* @__PURE__ */ defineComponent({
|
|
12076
13323
|
name: "SelectionRoot",
|
|
12077
13324
|
__name: "SelectionRoot",
|
|
12078
13325
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -12124,7 +13371,7 @@ const _sfc_main$46 = /* @__PURE__ */ defineComponent({
|
|
|
12124
13371
|
});
|
|
12125
13372
|
//#endregion
|
|
12126
13373
|
//#region src/components/Selection/SelectionItem.vue
|
|
12127
|
-
const _sfc_main$
|
|
13374
|
+
const _sfc_main$57 = /* @__PURE__ */ defineComponent({
|
|
12128
13375
|
name: "SelectionItem",
|
|
12129
13376
|
__name: "SelectionItem",
|
|
12130
13377
|
props: {
|
|
@@ -12174,13 +13421,13 @@ const _sfc_main$45 = /* @__PURE__ */ defineComponent({
|
|
|
12174
13421
|
* @see https://0.vuetifyjs.com/components/selection
|
|
12175
13422
|
*/
|
|
12176
13423
|
const Selection = {
|
|
12177
|
-
Root: _sfc_main$
|
|
12178
|
-
Item: _sfc_main$
|
|
13424
|
+
Root: _sfc_main$58,
|
|
13425
|
+
Item: _sfc_main$57
|
|
12179
13426
|
};
|
|
12180
13427
|
//#endregion
|
|
12181
13428
|
//#region src/components/Slider/SliderRoot.vue
|
|
12182
13429
|
const [useSliderRoot, provideSliderRoot] = createContext();
|
|
12183
|
-
const _sfc_main$
|
|
13430
|
+
const _sfc_main$63 = /* @__PURE__ */ defineComponent({
|
|
12184
13431
|
name: "SliderRoot",
|
|
12185
13432
|
inheritAttrs: false,
|
|
12186
13433
|
__name: "SliderRoot",
|
|
@@ -12312,7 +13559,7 @@ const _sfc_main$51 = /* @__PURE__ */ defineComponent({
|
|
|
12312
13559
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
12313
13560
|
_: 3
|
|
12314
13561
|
}, 16, ["as", "renderless"]), __props.name ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(slider).values.value, (_, index) => {
|
|
12315
|
-
return openBlock(), createBlock(_sfc_main$
|
|
13562
|
+
return openBlock(), createBlock(_sfc_main$61, {
|
|
12316
13563
|
key: index,
|
|
12317
13564
|
index
|
|
12318
13565
|
}, null, 8, ["index"]);
|
|
@@ -12328,7 +13575,7 @@ const _hoisted_1$1 = [
|
|
|
12328
13575
|
"name",
|
|
12329
13576
|
"value"
|
|
12330
13577
|
];
|
|
12331
|
-
const _sfc_main$
|
|
13578
|
+
const _sfc_main$61 = /* @__PURE__ */ defineComponent({
|
|
12332
13579
|
name: "SliderHiddenInput",
|
|
12333
13580
|
__name: "SliderHiddenInput",
|
|
12334
13581
|
props: {
|
|
@@ -12353,7 +13600,7 @@ const _sfc_main$49 = /* @__PURE__ */ defineComponent({
|
|
|
12353
13600
|
});
|
|
12354
13601
|
//#endregion
|
|
12355
13602
|
//#region src/components/Slider/SliderRange.vue
|
|
12356
|
-
const _sfc_main$
|
|
13603
|
+
const _sfc_main$62 = /* @__PURE__ */ defineComponent({
|
|
12357
13604
|
name: "SliderRange",
|
|
12358
13605
|
inheritAttrs: false,
|
|
12359
13606
|
__name: "SliderRange",
|
|
@@ -12414,7 +13661,7 @@ const _sfc_main$50 = /* @__PURE__ */ defineComponent({
|
|
|
12414
13661
|
});
|
|
12415
13662
|
//#endregion
|
|
12416
13663
|
//#region src/components/Slider/SliderThumb.vue
|
|
12417
|
-
const _sfc_main$
|
|
13664
|
+
const _sfc_main$64 = /* @__PURE__ */ defineComponent({
|
|
12418
13665
|
name: "SliderThumb",
|
|
12419
13666
|
inheritAttrs: false,
|
|
12420
13667
|
__name: "SliderThumb",
|
|
@@ -12528,7 +13775,7 @@ const _sfc_main$52 = /* @__PURE__ */ defineComponent({
|
|
|
12528
13775
|
});
|
|
12529
13776
|
//#endregion
|
|
12530
13777
|
//#region src/components/Slider/SliderTrack.vue
|
|
12531
|
-
const _sfc_main$
|
|
13778
|
+
const _sfc_main$65 = /* @__PURE__ */ defineComponent({
|
|
12532
13779
|
name: "SliderTrack",
|
|
12533
13780
|
inheritAttrs: false,
|
|
12534
13781
|
__name: "SliderTrack",
|
|
@@ -12622,16 +13869,16 @@ const _sfc_main$53 = /* @__PURE__ */ defineComponent({
|
|
|
12622
13869
|
* ```
|
|
12623
13870
|
*/
|
|
12624
13871
|
const Slider = {
|
|
12625
|
-
Root: _sfc_main$
|
|
12626
|
-
Track: _sfc_main$
|
|
12627
|
-
Range: _sfc_main$
|
|
12628
|
-
Thumb: _sfc_main$
|
|
12629
|
-
HiddenInput: _sfc_main$
|
|
13872
|
+
Root: _sfc_main$63,
|
|
13873
|
+
Track: _sfc_main$65,
|
|
13874
|
+
Range: _sfc_main$62,
|
|
13875
|
+
Thumb: _sfc_main$64,
|
|
13876
|
+
HiddenInput: _sfc_main$61
|
|
12630
13877
|
};
|
|
12631
13878
|
//#endregion
|
|
12632
13879
|
//#region src/components/Splitter/SplitterRoot.vue
|
|
12633
13880
|
const [useSplitterRoot, provideSplitterRoot] = createContext("v0:splitter");
|
|
12634
|
-
const _sfc_main$
|
|
13881
|
+
const _sfc_main$68 = /* @__PURE__ */ defineComponent({
|
|
12635
13882
|
name: "SplitterRoot",
|
|
12636
13883
|
inheritAttrs: false,
|
|
12637
13884
|
__name: "SplitterRoot",
|
|
@@ -12813,7 +14060,7 @@ const _sfc_main$56 = /* @__PURE__ */ defineComponent({
|
|
|
12813
14060
|
});
|
|
12814
14061
|
//#endregion
|
|
12815
14062
|
//#region src/components/Splitter/SplitterPanel.vue
|
|
12816
|
-
const _sfc_main$
|
|
14063
|
+
const _sfc_main$67 = /* @__PURE__ */ defineComponent({
|
|
12817
14064
|
name: "SplitterPanel",
|
|
12818
14065
|
inheritAttrs: false,
|
|
12819
14066
|
__name: "SplitterPanel",
|
|
@@ -12926,7 +14173,7 @@ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
|
|
|
12926
14173
|
});
|
|
12927
14174
|
//#endregion
|
|
12928
14175
|
//#region src/components/Splitter/SplitterHandle.vue
|
|
12929
|
-
const _sfc_main$
|
|
14176
|
+
const _sfc_main$66 = /* @__PURE__ */ defineComponent({
|
|
12930
14177
|
name: "SplitterHandle",
|
|
12931
14178
|
inheritAttrs: false,
|
|
12932
14179
|
__name: "SplitterHandle",
|
|
@@ -13146,14 +14393,14 @@ const _sfc_main$54 = /* @__PURE__ */ defineComponent({
|
|
|
13146
14393
|
* ```
|
|
13147
14394
|
*/
|
|
13148
14395
|
const Splitter = {
|
|
13149
|
-
Root: _sfc_main$
|
|
13150
|
-
Panel: _sfc_main$
|
|
13151
|
-
Handle: _sfc_main$
|
|
14396
|
+
Root: _sfc_main$68,
|
|
14397
|
+
Panel: _sfc_main$67,
|
|
14398
|
+
Handle: _sfc_main$66
|
|
13152
14399
|
};
|
|
13153
14400
|
//#endregion
|
|
13154
14401
|
//#region src/components/Switch/SwitchGroup.vue
|
|
13155
14402
|
const [useSwitchGroup, provideSwitchGroup] = createContext();
|
|
13156
|
-
const _sfc_main$
|
|
14403
|
+
const _sfc_main$71 = /* @__PURE__ */ defineComponent({
|
|
13157
14404
|
name: "SwitchGroup",
|
|
13158
14405
|
__name: "SwitchGroup",
|
|
13159
14406
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -13222,7 +14469,7 @@ const _sfc_main$59 = /* @__PURE__ */ defineComponent({
|
|
|
13222
14469
|
//#endregion
|
|
13223
14470
|
//#region src/components/Switch/SwitchRoot.vue
|
|
13224
14471
|
const [useSwitchRoot, provideSwitchRoot] = createContext();
|
|
13225
|
-
const _sfc_main$
|
|
14472
|
+
const _sfc_main$73 = /* @__PURE__ */ defineComponent({
|
|
13226
14473
|
name: "SwitchRoot",
|
|
13227
14474
|
inheritAttrs: false,
|
|
13228
14475
|
__name: "SwitchRoot",
|
|
@@ -13352,7 +14599,7 @@ const _sfc_main$61 = /* @__PURE__ */ defineComponent({
|
|
|
13352
14599
|
}), {
|
|
13353
14600
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
|
|
13354
14601
|
_: 3
|
|
13355
|
-
}, 16, ["as", "renderless"]), __props.name ? (openBlock(), createBlock(_sfc_main$
|
|
14602
|
+
}, 16, ["as", "renderless"]), __props.name ? (openBlock(), createBlock(_sfc_main$72, { key: 0 })) : createCommentVNode("v-if", true)], 64);
|
|
13356
14603
|
};
|
|
13357
14604
|
}
|
|
13358
14605
|
});
|
|
@@ -13376,7 +14623,7 @@ const visuallyHiddenStyle = {
|
|
|
13376
14623
|
whiteSpace: "nowrap",
|
|
13377
14624
|
border: "0"
|
|
13378
14625
|
};
|
|
13379
|
-
const _sfc_main$
|
|
14626
|
+
const _sfc_main$72 = /* @__PURE__ */ defineComponent({
|
|
13380
14627
|
name: "SwitchHiddenInput",
|
|
13381
14628
|
__name: "SwitchHiddenInput",
|
|
13382
14629
|
props: {
|
|
@@ -13414,7 +14661,7 @@ const _sfc_main$60 = /* @__PURE__ */ defineComponent({
|
|
|
13414
14661
|
});
|
|
13415
14662
|
//#endregion
|
|
13416
14663
|
//#region src/components/Switch/SwitchSelectAll.vue
|
|
13417
|
-
const _sfc_main$
|
|
14664
|
+
const _sfc_main$74 = /* @__PURE__ */ defineComponent({
|
|
13418
14665
|
name: "SwitchSelectAll",
|
|
13419
14666
|
inheritAttrs: false,
|
|
13420
14667
|
__name: "SwitchSelectAll",
|
|
@@ -13502,7 +14749,7 @@ const _sfc_main$62 = /* @__PURE__ */ defineComponent({
|
|
|
13502
14749
|
});
|
|
13503
14750
|
//#endregion
|
|
13504
14751
|
//#region src/components/Switch/SwitchThumb.vue
|
|
13505
|
-
const _sfc_main$
|
|
14752
|
+
const _sfc_main$75 = /* @__PURE__ */ defineComponent({
|
|
13506
14753
|
name: "SwitchThumb",
|
|
13507
14754
|
__name: "SwitchThumb",
|
|
13508
14755
|
props: {
|
|
@@ -13537,7 +14784,7 @@ const _sfc_main$63 = /* @__PURE__ */ defineComponent({
|
|
|
13537
14784
|
});
|
|
13538
14785
|
//#endregion
|
|
13539
14786
|
//#region src/components/Switch/SwitchTrack.vue
|
|
13540
|
-
const _sfc_main$
|
|
14787
|
+
const _sfc_main$76 = /* @__PURE__ */ defineComponent({
|
|
13541
14788
|
name: "SwitchTrack",
|
|
13542
14789
|
__name: "SwitchTrack",
|
|
13543
14790
|
props: {
|
|
@@ -13596,17 +14843,17 @@ const _sfc_main$64 = /* @__PURE__ */ defineComponent({
|
|
|
13596
14843
|
* ```
|
|
13597
14844
|
*/
|
|
13598
14845
|
const Switch = {
|
|
13599
|
-
Group: _sfc_main$
|
|
13600
|
-
HiddenInput: _sfc_main$
|
|
13601
|
-
Root: _sfc_main$
|
|
13602
|
-
SelectAll: _sfc_main$
|
|
13603
|
-
Thumb: _sfc_main$
|
|
13604
|
-
Track: _sfc_main$
|
|
14846
|
+
Group: _sfc_main$71,
|
|
14847
|
+
HiddenInput: _sfc_main$72,
|
|
14848
|
+
Root: _sfc_main$73,
|
|
14849
|
+
SelectAll: _sfc_main$74,
|
|
14850
|
+
Thumb: _sfc_main$75,
|
|
14851
|
+
Track: _sfc_main$76
|
|
13605
14852
|
};
|
|
13606
14853
|
//#endregion
|
|
13607
14854
|
//#region src/components/Single/SingleRoot.vue
|
|
13608
14855
|
const [useSingleRoot, provideSingleRoot] = createContext();
|
|
13609
|
-
const _sfc_main$
|
|
14856
|
+
const _sfc_main$60 = /* @__PURE__ */ defineComponent({
|
|
13610
14857
|
name: "SingleRoot",
|
|
13611
14858
|
__name: "SingleRoot",
|
|
13612
14859
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -13652,7 +14899,7 @@ const _sfc_main$48 = /* @__PURE__ */ defineComponent({
|
|
|
13652
14899
|
});
|
|
13653
14900
|
//#endregion
|
|
13654
14901
|
//#region src/components/Single/SingleItem.vue
|
|
13655
|
-
const _sfc_main$
|
|
14902
|
+
const _sfc_main$59 = /* @__PURE__ */ defineComponent({
|
|
13656
14903
|
name: "SingleItem",
|
|
13657
14904
|
__name: "SingleItem",
|
|
13658
14905
|
props: {
|
|
@@ -13702,13 +14949,13 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
|
|
|
13702
14949
|
* @see https://0.vuetifyjs.com/components/single
|
|
13703
14950
|
*/
|
|
13704
14951
|
const Single = {
|
|
13705
|
-
Root: _sfc_main$
|
|
13706
|
-
Item: _sfc_main$
|
|
14952
|
+
Root: _sfc_main$60,
|
|
14953
|
+
Item: _sfc_main$59
|
|
13707
14954
|
};
|
|
13708
14955
|
//#endregion
|
|
13709
14956
|
//#region src/components/Step/StepRoot.vue
|
|
13710
14957
|
const [useStepRoot, provideStepRoot] = createContext();
|
|
13711
|
-
const _sfc_main$
|
|
14958
|
+
const _sfc_main$70 = /* @__PURE__ */ defineComponent({
|
|
13712
14959
|
name: "StepRoot",
|
|
13713
14960
|
__name: "StepRoot",
|
|
13714
14961
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -13759,7 +15006,7 @@ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
|
|
|
13759
15006
|
});
|
|
13760
15007
|
//#endregion
|
|
13761
15008
|
//#region src/components/Step/StepItem.vue
|
|
13762
|
-
const _sfc_main$
|
|
15009
|
+
const _sfc_main$69 = /* @__PURE__ */ defineComponent({
|
|
13763
15010
|
name: "StepItem",
|
|
13764
15011
|
__name: "StepItem",
|
|
13765
15012
|
props: {
|
|
@@ -13809,13 +15056,13 @@ const _sfc_main$57 = /* @__PURE__ */ defineComponent({
|
|
|
13809
15056
|
* @see https://0.vuetifyjs.com/components/step
|
|
13810
15057
|
*/
|
|
13811
15058
|
const Step = {
|
|
13812
|
-
Root: _sfc_main$
|
|
13813
|
-
Item: _sfc_main$
|
|
15059
|
+
Root: _sfc_main$70,
|
|
15060
|
+
Item: _sfc_main$69
|
|
13814
15061
|
};
|
|
13815
15062
|
//#endregion
|
|
13816
15063
|
//#region src/components/Tabs/TabsRoot.vue
|
|
13817
15064
|
const [useTabsRoot, provideTabsRoot] = createContext();
|
|
13818
|
-
const _sfc_main$
|
|
15065
|
+
const _sfc_main$80 = /* @__PURE__ */ defineComponent({
|
|
13819
15066
|
name: "TabsRoot",
|
|
13820
15067
|
__name: "TabsRoot",
|
|
13821
15068
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -13883,7 +15130,7 @@ const _sfc_main$68 = /* @__PURE__ */ defineComponent({
|
|
|
13883
15130
|
});
|
|
13884
15131
|
//#endregion
|
|
13885
15132
|
//#region src/components/Tabs/TabsList.vue
|
|
13886
|
-
const _sfc_main$
|
|
15133
|
+
const _sfc_main$78 = /* @__PURE__ */ defineComponent({
|
|
13887
15134
|
name: "TabsList",
|
|
13888
15135
|
inheritAttrs: false,
|
|
13889
15136
|
__name: "TabsList",
|
|
@@ -13924,7 +15171,7 @@ const _sfc_main$66 = /* @__PURE__ */ defineComponent({
|
|
|
13924
15171
|
});
|
|
13925
15172
|
//#endregion
|
|
13926
15173
|
//#region src/components/Tabs/TabsItem.vue
|
|
13927
|
-
const _sfc_main$
|
|
15174
|
+
const _sfc_main$77 = /* @__PURE__ */ defineComponent({
|
|
13928
15175
|
name: "TabsItem",
|
|
13929
15176
|
inheritAttrs: false,
|
|
13930
15177
|
__name: "TabsItem",
|
|
@@ -14039,7 +15286,7 @@ const _sfc_main$65 = /* @__PURE__ */ defineComponent({
|
|
|
14039
15286
|
});
|
|
14040
15287
|
//#endregion
|
|
14041
15288
|
//#region src/components/Tabs/TabsPanel.vue
|
|
14042
|
-
const _sfc_main$
|
|
15289
|
+
const _sfc_main$79 = /* @__PURE__ */ defineComponent({
|
|
14043
15290
|
name: "TabsPanel",
|
|
14044
15291
|
inheritAttrs: false,
|
|
14045
15292
|
__name: "TabsPanel",
|
|
@@ -14120,10 +15367,10 @@ const _sfc_main$67 = /* @__PURE__ */ defineComponent({
|
|
|
14120
15367
|
* ```
|
|
14121
15368
|
*/
|
|
14122
15369
|
const Tabs = {
|
|
14123
|
-
Root: _sfc_main$
|
|
14124
|
-
List: _sfc_main$
|
|
14125
|
-
Item: _sfc_main$
|
|
14126
|
-
Panel: _sfc_main$
|
|
15370
|
+
Root: _sfc_main$80,
|
|
15371
|
+
List: _sfc_main$78,
|
|
15372
|
+
Item: _sfc_main$77,
|
|
15373
|
+
Panel: _sfc_main$79
|
|
14127
15374
|
};
|
|
14128
15375
|
//#endregion
|
|
14129
|
-
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$11 as CheckboxGroup, _sfc_main$12 as CheckboxHiddenInput, _sfc_main$13 as CheckboxIndicator, _sfc_main$14 as CheckboxRoot, _sfc_main$15 as CheckboxSelectAll, ClientAdapter, ConsolaLoggerAdapter, DataTableAdapter, Dialog, _sfc_main$16 as DialogActivator, _sfc_main$17 as DialogClose, _sfc_main$18 as DialogContent, _sfc_main$19 as DialogDescription, _sfc_main$20 as DialogRoot, _sfc_main$21 as DialogTitle, ExpansionPanel, _sfc_main$22 as ExpansionPanelActivator, _sfc_main$23 as ExpansionPanelContent, _sfc_main$24 as ExpansionPanelHeader, _sfc_main$25 as ExpansionPanelItem, _sfc_main$26 as ExpansionPanelRoot, FeaturesAdapter, Group, _sfc_main$
|
|
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$11 as CheckboxGroup, _sfc_main$12 as CheckboxHiddenInput, _sfc_main$13 as CheckboxIndicator, _sfc_main$14 as CheckboxRoot, _sfc_main$15 as CheckboxSelectAll, ClientAdapter, ConsolaLoggerAdapter, DataTableAdapter, Dialog, _sfc_main$16 as DialogActivator, _sfc_main$17 as DialogClose, _sfc_main$18 as DialogContent, _sfc_main$19 as DialogDescription, _sfc_main$20 as DialogRoot, _sfc_main$21 as DialogTitle, ExpansionPanel, _sfc_main$22 as ExpansionPanelActivator, _sfc_main$23 as ExpansionPanelContent, _sfc_main$24 as ExpansionPanelHeader, _sfc_main$25 as ExpansionPanelItem, _sfc_main$26 as ExpansionPanelRoot, FeaturesAdapter, _sfc_main$27 as Form, Group, _sfc_main$28 as GroupItem, _sfc_main$29 as GroupRoot, IN_BROWSER, Input, _sfc_main$30 as InputControl, _sfc_main$31 as InputDescription, _sfc_main$32 as InputError, _sfc_main$33 as InputRoot, MemoryAdapter, Pagination, _sfc_main$34 as PaginationEllipsis, _sfc_main$35 as PaginationFirst, _sfc_main$36 as PaginationItem, _sfc_main$37 as PaginationLast, _sfc_main$38 as PaginationNext, _sfc_main$39 as PaginationPrev, _sfc_main$40 as PaginationRoot, _sfc_main$41 as PaginationStatus, PermissionAdapter, PinoLoggerAdapter, Popover, _sfc_main$42 as PopoverActivator, _sfc_main$43 as PopoverContent, _sfc_main$44 as PopoverRoot, Radio, _sfc_main$45 as RadioGroup, _sfc_main$46 as RadioHiddenInput, _sfc_main$47 as RadioIndicator, _sfc_main$48 as RadioRoot, SELF_CLOSING_TAGS, SUPPORTS_INTERSECTION_OBSERVER, SUPPORTS_MATCH_MEDIA, SUPPORTS_MUTATION_OBSERVER, SUPPORTS_OBSERVER, SUPPORTS_TOUCH, _sfc_main$49 as Scrim, Select, _sfc_main$50 as SelectActivator, _sfc_main$51 as SelectContent, _sfc_main$52 as SelectCue, _sfc_main$53 as SelectItem, _sfc_main$54 as SelectPlaceholder, _sfc_main$55 as SelectRoot, _sfc_main$56 as SelectValue, Selection, _sfc_main$57 as SelectionItem, _sfc_main$58 as SelectionRoot, ServerAdapter, Single, _sfc_main$59 as SingleItem, _sfc_main$60 as SingleRoot, Slider, _sfc_main$61 as SliderHiddenInput, _sfc_main$62 as SliderRange, _sfc_main$63 as SliderRoot, _sfc_main$64 as SliderThumb, _sfc_main$65 as SliderTrack, Splitter, _sfc_main$66 as SplitterHandle, _sfc_main$67 as SplitterPanel, _sfc_main$68 as SplitterRoot, Step, _sfc_main$69 as StepItem, _sfc_main$70 as StepRoot, Switch, _sfc_main$71 as SwitchGroup, _sfc_main$72 as SwitchHiddenInput, _sfc_main$73 as SwitchRoot, _sfc_main$74 as SwitchSelectAll, _sfc_main$75 as SwitchThumb, _sfc_main$76 as SwitchTrack, Tabs, _sfc_main$77 as TabsItem, _sfc_main$78 as TabsList, _sfc_main$79 as TabsPanel, _sfc_main$80 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, 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, debounce, instanceExists, instanceName, isArray, isBoolean, isElement, isFunction, isNaN, isNull, isNullOrUndefined, isNumber, isObject, isPrimitive, isSelfClosingTag, isStandardSchema, isString, isSymbol, isUndefined, mergeDeep, multipleOpenStrategy, provideAvatarRoot, provideBreadcrumbsRoot, provideCheckboxGroup, provideCheckboxRoot, provideContext, provideDialogContext, provideExpansionPanelItem, provideExpansionPanelRoot, provideGroupRoot, provideInputRoot, providePaginationControls, providePaginationItems, providePaginationRoot, providePopoverContext, provideRadioGroup, provideRadioRoot, provideSelectContext, provideSelectionRoot, provideSingleRoot, provideSliderRoot, provideSplitterRoot, provideStepRoot, provideSwitchGroup, provideSwitchRoot, provideTabsRoot, range, singleOpenStrategy, toArray, toElement, toReactive, useAvatarRoot, useBreadcrumbs, useBreadcrumbsRoot, useBreakpoints, 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, useOverflow, usePagination, usePaginationControls, usePaginationItems, usePaginationRoot, usePermissions, usePopover, usePopoverContext, usePrefersContrast, usePrefersDark, usePrefersReducedMotion, useProxyModel, useProxyRegistry, useQueue, useRadioGroup, useRadioRoot, useRegistry, useResizeObserver, useRovingFocus, useRtl, useRules, useSelectContext, useSelection, useSelectionRoot, useSingle, useSingleRoot, useSliderRoot, useSplitterRoot, useStack, useStep, useStepRoot, useStorage, useSwitchGroup, useSwitchRoot, useTabsRoot, useTheme, useTimeline, useToggleScope, useTokens, useVirtual, useVirtualFocus, useWindowEventListener, version };
|