@vuetify/nightly 3.8.2-master.2025-04-22 → 3.8.2-master.2025-04-24

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.
@@ -159,11 +159,6 @@ export function useValidation(props) {
159
159
  }
160
160
  async function validate() {
161
161
  let silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
162
- if (props.disabled || props.readonly) {
163
- internalErrorMessages.value = [];
164
- isValidating.value = false;
165
- return internalErrorMessages.value;
166
- }
167
162
  const results = [];
168
163
  isValidating.value = true;
169
164
  for (const rule of props.rules) {
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","names":["makeFocusProps","useForm","useProxiedModel","useToggleScope","computed","nextTick","onBeforeMount","onBeforeUnmount","onMounted","ref","shallowRef","unref","useId","watch","getCurrentInstance","getCurrentInstanceName","propsFactory","wrapInArray","makeValidationProps","disabled","type","Boolean","default","error","errorMessages","Array","String","maxErrors","Number","name","label","readonly","rules","modelValue","validateOn","validationValue","useValidation","props","arguments","length","undefined","id","model","validationModel","value","form","internalErrorMessages","isPristine","isDirty","concat","slice","Math","max","set","Set","split","input","has","blur","invalidInput","lazy","eager","isValid","isValidating","validationClasses","isDisabled","isReadonly","vm","uid","register","validate","reset","resetValidation","unregister","update","focused","unwatch","val","silent","results","rule","handler","result","console","warn","push"],"sources":["../../src/composables/validation.ts"],"sourcesContent":["// Composables\nimport { makeFocusProps } from '@/composables/focus'\nimport { useForm } from '@/composables/form'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useToggleScope } from '@/composables/toggleScope'\n// import { useRules } from '@/labs/rules'\n\n// Utilities\nimport { computed, nextTick, onBeforeMount, onBeforeUnmount, onMounted, ref, shallowRef, unref, useId, watch } from 'vue'\nimport { getCurrentInstance, getCurrentInstanceName, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { EventProp, MaybeRef } from '@/util'\n\nexport type ValidationResult = string | boolean\nexport type ValidationRule =\n | ValidationResult\n | PromiseLike<ValidationResult>\n | ((value: any) => ValidationResult)\n | ((value: any) => PromiseLike<ValidationResult>)\n\ntype ValidateOnValue = 'blur' | 'input' | 'submit' | 'invalid-input'\ntype ValidateOn =\n | ValidateOnValue\n | `${ValidateOnValue} lazy`\n | `${ValidateOnValue} eager`\n | `lazy ${ValidateOnValue}`\n | `eager ${ValidateOnValue}`\n | 'lazy'\n | 'eager'\n\n// type ValidationRuleParams = [any, string?]\n// type ValidationAlias = string | [string, ...ValidationRuleParams]\n\nexport interface ValidationProps {\n disabled: boolean | null\n error: boolean\n errorMessages: string | readonly string[] | null\n focused: boolean\n maxErrors: string | number\n name: string | undefined\n label: string | undefined\n readonly: boolean | null\n rules: readonly ValidationRule[]\n // rules: readonly (ValidationRule | ValidationAlias)[]\n modelValue: any\n 'onUpdate:modelValue': EventProp | undefined\n validateOn?: ValidateOn\n validationValue: any\n}\n\nexport const makeValidationProps = propsFactory({\n disabled: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n error: Boolean,\n errorMessages: {\n type: [Array, String] as PropType<string | readonly string[] | null>,\n default: () => ([]),\n },\n maxErrors: {\n type: [Number, String],\n default: 1,\n },\n name: String,\n label: String,\n readonly: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n rules: {\n type: Array as PropType<readonly ValidationRule[]>,\n // type: Array as PropType<readonly (ValidationRule | ValidationAlias)[]>,\n default: () => ([]),\n },\n modelValue: null,\n validateOn: String as PropType<ValidationProps['validateOn']>,\n validationValue: null,\n\n ...makeFocusProps(),\n}, 'validation')\n\nexport function useValidation (\n props: ValidationProps,\n name = getCurrentInstanceName(),\n id: MaybeRef<string | number> = useId(),\n) {\n const model = useProxiedModel(props, 'modelValue')\n const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue)\n const form = useForm(props)\n // const rules = useRules()\n const internalErrorMessages = ref<string[]>([])\n const isPristine = shallowRef(true)\n const isDirty = computed(() => !!(\n wrapInArray(model.value === '' ? null : model.value).length ||\n wrapInArray(validationModel.value === '' ? null : validationModel.value).length\n ))\n const errorMessages = computed(() => {\n return props.errorMessages?.length\n ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, Number(props.maxErrors)))\n : internalErrorMessages.value\n })\n const validateOn = computed(() => {\n let value = (props.validateOn ?? form.validateOn?.value) || 'input'\n if (value === 'lazy') value = 'input lazy'\n if (value === 'eager') value = 'input eager'\n const set = new Set(value?.split(' ') ?? [])\n\n return {\n input: set.has('input'),\n blur: set.has('blur') || set.has('input') || set.has('invalid-input'),\n invalidInput: set.has('invalid-input'),\n lazy: set.has('lazy'),\n eager: set.has('eager'),\n }\n })\n const isValid = computed(() => {\n if (props.error || props.errorMessages?.length) return false\n if (!props.rules.length) return true\n if (isPristine.value) {\n return internalErrorMessages.value.length || validateOn.value.lazy ? null : true\n } else {\n return !internalErrorMessages.value.length\n }\n })\n const isValidating = shallowRef(false)\n const validationClasses = computed(() => {\n return {\n [`${name}--error`]: isValid.value === false,\n [`${name}--dirty`]: isDirty.value,\n [`${name}--disabled`]: form.isDisabled.value,\n [`${name}--readonly`]: form.isReadonly.value,\n }\n })\n\n const vm = getCurrentInstance('validation')\n const uid = computed(() => props.name ?? unref(id))\n\n // const resolvedRules = computed(() => props.rules.map(rule => {\n // let ruleName: string | null = null\n // let ruleParams: ValidationRuleParams = [undefined]\n // if (Array.isArray(rule)) {\n // ruleName = rule[0]\n // ruleParams = rule.slice(1) as ValidationRuleParams\n // } else if (typeof rule === 'string') {\n // ruleName = rule\n // }\n\n // if (ruleName !== null) {\n // if (ruleName.startsWith('$')) {\n // ruleName = ruleName.slice(1)\n // }\n\n // return rules?.[ruleName]?.(...ruleParams)\n // } else {\n // return rule\n // }\n // }))\n\n onBeforeMount(() => {\n form.register?.({\n id: uid.value,\n vm,\n validate,\n reset,\n resetValidation,\n })\n })\n\n onBeforeUnmount(() => {\n form.unregister?.(uid.value)\n })\n\n onMounted(async () => {\n if (!validateOn.value.lazy) {\n await validate(!validateOn.value.eager)\n }\n form.update?.(uid.value, isValid.value, errorMessages.value)\n })\n\n useToggleScope(() => validateOn.value.input || (validateOn.value.invalidInput && isValid.value === false), () => {\n watch(validationModel, () => {\n if (validationModel.value != null) {\n validate()\n } else if (props.focused) {\n const unwatch = watch(() => props.focused, val => {\n if (!val) validate()\n\n unwatch()\n })\n }\n })\n })\n\n useToggleScope(() => validateOn.value.blur, () => {\n watch(() => props.focused, val => {\n if (!val) validate()\n })\n })\n\n watch([isValid, errorMessages], () => {\n form.update?.(uid.value, isValid.value, errorMessages.value)\n })\n\n async function reset () {\n model.value = null\n await nextTick()\n await resetValidation()\n }\n\n async function resetValidation () {\n isPristine.value = true\n if (!validateOn.value.lazy) {\n await validate(!validateOn.value.eager)\n } else {\n internalErrorMessages.value = []\n }\n }\n\n async function validate (silent = false) {\n if (props.disabled || props.readonly) {\n internalErrorMessages.value = []\n isValidating.value = false\n return internalErrorMessages.value\n }\n\n const results = []\n\n isValidating.value = true\n\n for (const rule of props.rules) {\n if (results.length >= Number(props.maxErrors ?? 1)) {\n break\n }\n\n const handler = typeof rule === 'function' ? rule : () => rule\n const result = await handler(validationModel.value)\n\n if (result === true) continue\n\n if (result !== false && typeof result !== 'string') {\n // eslint-disable-next-line no-console\n console.warn(`${result} is not a valid value. Rule functions must return boolean true or a string.`)\n\n continue\n }\n\n results.push(result || '')\n }\n\n internalErrorMessages.value = results\n isValidating.value = false\n isPristine.value = silent\n\n return internalErrorMessages.value\n }\n\n return {\n errorMessages,\n isDirty,\n isDisabled: form.isDisabled,\n isReadonly: form.isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"validation.js","names":["makeFocusProps","useForm","useProxiedModel","useToggleScope","computed","nextTick","onBeforeMount","onBeforeUnmount","onMounted","ref","shallowRef","unref","useId","watch","getCurrentInstance","getCurrentInstanceName","propsFactory","wrapInArray","makeValidationProps","disabled","type","Boolean","default","error","errorMessages","Array","String","maxErrors","Number","name","label","readonly","rules","modelValue","validateOn","validationValue","useValidation","props","arguments","length","undefined","id","model","validationModel","value","form","internalErrorMessages","isPristine","isDirty","concat","slice","Math","max","set","Set","split","input","has","blur","invalidInput","lazy","eager","isValid","isValidating","validationClasses","isDisabled","isReadonly","vm","uid","register","validate","reset","resetValidation","unregister","update","focused","unwatch","val","silent","results","rule","handler","result","console","warn","push"],"sources":["../../src/composables/validation.ts"],"sourcesContent":["// Composables\nimport { makeFocusProps } from '@/composables/focus'\nimport { useForm } from '@/composables/form'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useToggleScope } from '@/composables/toggleScope'\n// import { useRules } from '@/labs/rules'\n\n// Utilities\nimport { computed, nextTick, onBeforeMount, onBeforeUnmount, onMounted, ref, shallowRef, unref, useId, watch } from 'vue'\nimport { getCurrentInstance, getCurrentInstanceName, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { EventProp, MaybeRef } from '@/util'\n\nexport type ValidationResult = string | boolean\nexport type ValidationRule =\n | ValidationResult\n | PromiseLike<ValidationResult>\n | ((value: any) => ValidationResult)\n | ((value: any) => PromiseLike<ValidationResult>)\n\ntype ValidateOnValue = 'blur' | 'input' | 'submit' | 'invalid-input'\ntype ValidateOn =\n | ValidateOnValue\n | `${ValidateOnValue} lazy`\n | `${ValidateOnValue} eager`\n | `lazy ${ValidateOnValue}`\n | `eager ${ValidateOnValue}`\n | 'lazy'\n | 'eager'\n\n// type ValidationRuleParams = [any, string?]\n// type ValidationAlias = string | [string, ...ValidationRuleParams]\n\nexport interface ValidationProps {\n disabled: boolean | null\n error: boolean\n errorMessages: string | readonly string[] | null\n focused: boolean\n maxErrors: string | number\n name: string | undefined\n label: string | undefined\n readonly: boolean | null\n rules: readonly ValidationRule[]\n // rules: readonly (ValidationRule | ValidationAlias)[]\n modelValue: any\n 'onUpdate:modelValue': EventProp | undefined\n validateOn?: ValidateOn\n validationValue: any\n}\n\nexport const makeValidationProps = propsFactory({\n disabled: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n error: Boolean,\n errorMessages: {\n type: [Array, String] as PropType<string | readonly string[] | null>,\n default: () => ([]),\n },\n maxErrors: {\n type: [Number, String],\n default: 1,\n },\n name: String,\n label: String,\n readonly: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n rules: {\n type: Array as PropType<readonly ValidationRule[]>,\n // type: Array as PropType<readonly (ValidationRule | ValidationAlias)[]>,\n default: () => ([]),\n },\n modelValue: null,\n validateOn: String as PropType<ValidationProps['validateOn']>,\n validationValue: null,\n\n ...makeFocusProps(),\n}, 'validation')\n\nexport function useValidation (\n props: ValidationProps,\n name = getCurrentInstanceName(),\n id: MaybeRef<string | number> = useId(),\n) {\n const model = useProxiedModel(props, 'modelValue')\n const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue)\n const form = useForm(props)\n // const rules = useRules()\n const internalErrorMessages = ref<string[]>([])\n const isPristine = shallowRef(true)\n const isDirty = computed(() => !!(\n wrapInArray(model.value === '' ? null : model.value).length ||\n wrapInArray(validationModel.value === '' ? null : validationModel.value).length\n ))\n const errorMessages = computed(() => {\n return props.errorMessages?.length\n ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, Number(props.maxErrors)))\n : internalErrorMessages.value\n })\n const validateOn = computed(() => {\n let value = (props.validateOn ?? form.validateOn?.value) || 'input'\n if (value === 'lazy') value = 'input lazy'\n if (value === 'eager') value = 'input eager'\n const set = new Set(value?.split(' ') ?? [])\n\n return {\n input: set.has('input'),\n blur: set.has('blur') || set.has('input') || set.has('invalid-input'),\n invalidInput: set.has('invalid-input'),\n lazy: set.has('lazy'),\n eager: set.has('eager'),\n }\n })\n const isValid = computed(() => {\n if (props.error || props.errorMessages?.length) return false\n if (!props.rules.length) return true\n if (isPristine.value) {\n return internalErrorMessages.value.length || validateOn.value.lazy ? null : true\n } else {\n return !internalErrorMessages.value.length\n }\n })\n const isValidating = shallowRef(false)\n const validationClasses = computed(() => {\n return {\n [`${name}--error`]: isValid.value === false,\n [`${name}--dirty`]: isDirty.value,\n [`${name}--disabled`]: form.isDisabled.value,\n [`${name}--readonly`]: form.isReadonly.value,\n }\n })\n\n const vm = getCurrentInstance('validation')\n const uid = computed(() => props.name ?? unref(id))\n\n // const resolvedRules = computed(() => props.rules.map(rule => {\n // let ruleName: string | null = null\n // let ruleParams: ValidationRuleParams = [undefined]\n // if (Array.isArray(rule)) {\n // ruleName = rule[0]\n // ruleParams = rule.slice(1) as ValidationRuleParams\n // } else if (typeof rule === 'string') {\n // ruleName = rule\n // }\n\n // if (ruleName !== null) {\n // if (ruleName.startsWith('$')) {\n // ruleName = ruleName.slice(1)\n // }\n\n // return rules?.[ruleName]?.(...ruleParams)\n // } else {\n // return rule\n // }\n // }))\n\n onBeforeMount(() => {\n form.register?.({\n id: uid.value,\n vm,\n validate,\n reset,\n resetValidation,\n })\n })\n\n onBeforeUnmount(() => {\n form.unregister?.(uid.value)\n })\n\n onMounted(async () => {\n if (!validateOn.value.lazy) {\n await validate(!validateOn.value.eager)\n }\n form.update?.(uid.value, isValid.value, errorMessages.value)\n })\n\n useToggleScope(() => validateOn.value.input || (validateOn.value.invalidInput && isValid.value === false), () => {\n watch(validationModel, () => {\n if (validationModel.value != null) {\n validate()\n } else if (props.focused) {\n const unwatch = watch(() => props.focused, val => {\n if (!val) validate()\n\n unwatch()\n })\n }\n })\n })\n\n useToggleScope(() => validateOn.value.blur, () => {\n watch(() => props.focused, val => {\n if (!val) validate()\n })\n })\n\n watch([isValid, errorMessages], () => {\n form.update?.(uid.value, isValid.value, errorMessages.value)\n })\n\n async function reset () {\n model.value = null\n await nextTick()\n await resetValidation()\n }\n\n async function resetValidation () {\n isPristine.value = true\n if (!validateOn.value.lazy) {\n await validate(!validateOn.value.eager)\n } else {\n internalErrorMessages.value = []\n }\n }\n\n async function validate (silent = false) {\n const results = []\n\n isValidating.value = true\n\n for (const rule of props.rules) {\n if (results.length >= Number(props.maxErrors ?? 1)) {\n break\n }\n\n const handler = typeof rule === 'function' ? rule : () => rule\n const result = await handler(validationModel.value)\n\n if (result === true) continue\n\n if (result !== false && typeof result !== 'string') {\n // eslint-disable-next-line no-console\n console.warn(`${result} is not a valid value. Rule functions must return boolean true or a string.`)\n\n continue\n }\n\n results.push(result || '')\n }\n\n internalErrorMessages.value = results\n isValidating.value = false\n isPristine.value = silent\n\n return internalErrorMessages.value\n }\n\n return {\n errorMessages,\n isDirty,\n isDisabled: form.isDisabled,\n isReadonly: form.isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.8.2-master.2025-04-22";
19
+ export const version = "3.8.2-master.2025-04-24";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.js";
@@ -2573,40 +2573,46 @@ declare module 'vue' {
2573
2573
  }
2574
2574
  export interface GlobalComponents {
2575
2575
  VApp: typeof import('vuetify/components')['VApp']
2576
- VAvatar: typeof import('vuetify/components')['VAvatar']
2577
2576
  VAppBar: typeof import('vuetify/components')['VAppBar']
2578
2577
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
2579
2578
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
2580
2579
  VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2581
2580
  VAlert: typeof import('vuetify/components')['VAlert']
2582
2581
  VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2583
- VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2584
- VBanner: typeof import('vuetify/components')['VBanner']
2585
- VBannerActions: typeof import('vuetify/components')['VBannerActions']
2586
- VBannerText: typeof import('vuetify/components')['VBannerText']
2587
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2588
- VBadge: typeof import('vuetify/components')['VBadge']
2589
- VBtn: typeof import('vuetify/components')['VBtn']
2582
+ VAvatar: typeof import('vuetify/components')['VAvatar']
2590
2583
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
2591
2584
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
2592
2585
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
2586
+ VBadge: typeof import('vuetify/components')['VBadge']
2587
+ VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2588
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2593
2589
  VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2594
2590
  VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2595
- VCarousel: typeof import('vuetify/components')['VCarousel']
2596
- VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2597
- VChip: typeof import('vuetify/components')['VChip']
2591
+ VBanner: typeof import('vuetify/components')['VBanner']
2592
+ VBannerActions: typeof import('vuetify/components')['VBannerActions']
2593
+ VBannerText: typeof import('vuetify/components')['VBannerText']
2598
2594
  VCard: typeof import('vuetify/components')['VCard']
2599
2595
  VCardActions: typeof import('vuetify/components')['VCardActions']
2600
2596
  VCardItem: typeof import('vuetify/components')['VCardItem']
2601
2597
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
2602
2598
  VCardText: typeof import('vuetify/components')['VCardText']
2603
2599
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
2604
- VCode: typeof import('vuetify/components')['VCode']
2605
- VColorPicker: typeof import('vuetify/components')['VColorPicker']
2606
2600
  VCheckbox: typeof import('vuetify/components')['VCheckbox']
2607
2601
  VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2602
+ VChip: typeof import('vuetify/components')['VChip']
2603
+ VCarousel: typeof import('vuetify/components')['VCarousel']
2604
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2605
+ VCode: typeof import('vuetify/components')['VCode']
2606
+ VColorPicker: typeof import('vuetify/components')['VColorPicker']
2608
2607
  VChipGroup: typeof import('vuetify/components')['VChipGroup']
2609
2608
  VCounter: typeof import('vuetify/components')['VCounter']
2609
+ VCombobox: typeof import('vuetify/components')['VCombobox']
2610
+ VDatePicker: typeof import('vuetify/components')['VDatePicker']
2611
+ VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
2612
+ VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
2613
+ VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
2614
+ VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
2615
+ VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
2610
2616
  VDataTable: typeof import('vuetify/components')['VDataTable']
2611
2617
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
2612
2618
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -2614,36 +2620,29 @@ declare module 'vue' {
2614
2620
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
2615
2621
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
2616
2622
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
2617
- VCombobox: typeof import('vuetify/components')['VCombobox']
2618
- VDialog: typeof import('vuetify/components')['VDialog']
2619
2623
  VDivider: typeof import('vuetify/components')['VDivider']
2620
- VDatePicker: typeof import('vuetify/components')['VDatePicker']
2621
- VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
2622
- VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
2623
- VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
2624
- VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
2625
- VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
2624
+ VDialog: typeof import('vuetify/components')['VDialog']
2626
2625
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
2627
2626
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
2628
2627
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
2629
2628
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
2630
- VField: typeof import('vuetify/components')['VField']
2631
- VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2632
2629
  VEmptyState: typeof import('vuetify/components')['VEmptyState']
2633
2630
  VFab: typeof import('vuetify/components')['VFab']
2634
2631
  VFileInput: typeof import('vuetify/components')['VFileInput']
2635
2632
  VFooter: typeof import('vuetify/components')['VFooter']
2636
- VInput: typeof import('vuetify/components')['VInput']
2637
- VImg: typeof import('vuetify/components')['VImg']
2633
+ VField: typeof import('vuetify/components')['VField']
2634
+ VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2638
2635
  VIcon: typeof import('vuetify/components')['VIcon']
2639
2636
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
2640
2637
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
2641
2638
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
2642
2639
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
2640
+ VImg: typeof import('vuetify/components')['VImg']
2641
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2642
+ VKbd: typeof import('vuetify/components')['VKbd']
2643
+ VInput: typeof import('vuetify/components')['VInput']
2643
2644
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
2644
2645
  VItem: typeof import('vuetify/components')['VItem']
2645
- VKbd: typeof import('vuetify/components')['VKbd']
2646
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2647
2646
  VList: typeof import('vuetify/components')['VList']
2648
2647
  VListGroup: typeof import('vuetify/components')['VListGroup']
2649
2648
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -2653,74 +2652,76 @@ declare module 'vue' {
2653
2652
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
2654
2653
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
2655
2654
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
2656
- VLabel: typeof import('vuetify/components')['VLabel']
2657
- VMenu: typeof import('vuetify/components')['VMenu']
2658
2655
  VMain: typeof import('vuetify/components')['VMain']
2659
- VMessages: typeof import('vuetify/components')['VMessages']
2660
- VOtpInput: typeof import('vuetify/components')['VOtpInput']
2656
+ VMenu: typeof import('vuetify/components')['VMenu']
2661
2657
  VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2658
+ VNumberInput: typeof import('vuetify/components')['VNumberInput']
2659
+ VMessages: typeof import('vuetify/components')['VMessages']
2662
2660
  VOverlay: typeof import('vuetify/components')['VOverlay']
2661
+ VOtpInput: typeof import('vuetify/components')['VOtpInput']
2662
+ VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2663
2663
  VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2664
2664
  VPagination: typeof import('vuetify/components')['VPagination']
2665
- VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2666
2665
  VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2667
2666
  VRating: typeof import('vuetify/components')['VRating']
2667
+ VSelect: typeof import('vuetify/components')['VSelect']
2668
2668
  VSheet: typeof import('vuetify/components')['VSheet']
2669
- VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2670
2669
  VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2671
- VSelect: typeof import('vuetify/components')['VSelect']
2672
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
2670
+ VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2671
+ VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2673
2672
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2674
2673
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2675
2674
  VSlider: typeof import('vuetify/components')['VSlider']
2676
- VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2677
- VSwitch: typeof import('vuetify/components')['VSwitch']
2678
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
2679
- VTab: typeof import('vuetify/components')['VTab']
2680
- VTabs: typeof import('vuetify/components')['VTabs']
2681
- VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
2682
- VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
2683
- VTextarea: typeof import('vuetify/components')['VTextarea']
2684
2675
  VStepper: typeof import('vuetify/components')['VStepper']
2685
2676
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
2686
2677
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
2687
2678
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
2688
2679
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
2689
2680
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
2681
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
2682
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
2683
+ VSwitch: typeof import('vuetify/components')['VSwitch']
2684
+ VTab: typeof import('vuetify/components')['VTab']
2685
+ VTabs: typeof import('vuetify/components')['VTabs']
2686
+ VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
2687
+ VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
2690
2688
  VTable: typeof import('vuetify/components')['VTable']
2689
+ VTextarea: typeof import('vuetify/components')['VTextarea']
2691
2690
  VTextField: typeof import('vuetify/components')['VTextField']
2692
- VTimeline: typeof import('vuetify/components')['VTimeline']
2693
- VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2694
- VTooltip: typeof import('vuetify/components')['VTooltip']
2695
2691
  VToolbar: typeof import('vuetify/components')['VToolbar']
2696
2692
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
2697
2693
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
2694
+ VTimeline: typeof import('vuetify/components')['VTimeline']
2695
+ VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2696
+ VTooltip: typeof import('vuetify/components')['VTooltip']
2698
2697
  VWindow: typeof import('vuetify/components')['VWindow']
2699
2698
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
2700
- VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2699
+ VLabel: typeof import('vuetify/components')['VLabel']
2700
+ VBtn: typeof import('vuetify/components')['VBtn']
2701
2701
  VDataIterator: typeof import('vuetify/components')['VDataIterator']
2702
- VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
2702
+ VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2703
2703
  VForm: typeof import('vuetify/components')['VForm']
2704
- VHover: typeof import('vuetify/components')['VHover']
2704
+ VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
2705
2705
  VContainer: typeof import('vuetify/components')['VContainer']
2706
2706
  VCol: typeof import('vuetify/components')['VCol']
2707
2707
  VRow: typeof import('vuetify/components')['VRow']
2708
2708
  VSpacer: typeof import('vuetify/components')['VSpacer']
2709
- VLazy: typeof import('vuetify/components')['VLazy']
2709
+ VHover: typeof import('vuetify/components')['VHover']
2710
2710
  VLayout: typeof import('vuetify/components')['VLayout']
2711
2711
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
2712
2712
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
2713
+ VLazy: typeof import('vuetify/components')['VLazy']
2713
2714
  VNoSsr: typeof import('vuetify/components')['VNoSsr']
2714
2715
  VParallax: typeof import('vuetify/components')['VParallax']
2715
2716
  VRadio: typeof import('vuetify/components')['VRadio']
2716
2717
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
2717
2718
  VResponsive: typeof import('vuetify/components')['VResponsive']
2719
+ VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
2718
2720
  VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2719
2721
  VSparkline: typeof import('vuetify/components')['VSparkline']
2720
- VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
2721
2722
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
2722
- VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
2723
2723
  VValidation: typeof import('vuetify/components')['VValidation']
2724
+ VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
2724
2725
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
2725
2726
  VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
2726
2727
  VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
@@ -2737,24 +2738,23 @@ declare module 'vue' {
2737
2738
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
2738
2739
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
2739
2740
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
2740
- VNumberInput: typeof import('vuetify/components')['VNumberInput']
2741
2741
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
2742
2742
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
2743
2743
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
2744
2744
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
2745
2745
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
2746
2746
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
2747
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2748
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2749
2747
  VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
2750
- VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2751
- VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2752
- VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2753
2748
  VPicker: typeof import('vuetify/labs/components')['VPicker']
2754
2749
  VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2755
2750
  VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
2756
2751
  VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
2757
2752
  VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
2753
+ VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2754
+ VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2755
+ VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2756
+ VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2757
+ VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2758
2758
  VTreeview: typeof import('vuetify/labs/components')['VTreeview']
2759
2759
  VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
2760
2760
  VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
package/lib/framework.js CHANGED
@@ -109,7 +109,7 @@ export function createVuetify() {
109
109
  };
110
110
  });
111
111
  }
112
- export const version = "3.8.2-master.2025-04-22";
112
+ export const version = "3.8.2-master.2025-04-24";
113
113
  createVuetify.version = version;
114
114
 
115
115
  // Vue's inject() can only be used in setup
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vuetify/nightly",
3
3
  "description": "Vue Material Component Framework",
4
- "version": "3.8.2-master.2025-04-22",
4
+ "version": "3.8.2-master.2025-04-24",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"