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

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":"AAAA;AAAA,SACSA,cAAc;AAAA,SACdC,OAAO;AAAA,SACPC,eAAe;AAAA,SACfC,cAAc,4BACvB;AAEA;AACA,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,aAAa,EAAEC,eAAe,EAAEC,SAAS,EAAEC,GAAG,EAAEC,UAAU,EAAEC,KAAK,EAAEC,KAAK,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAChHC,kBAAkB,EAAEC,sBAAsB,EAAEC,YAAY,EAAEC,WAAW,4BAE9E;AAqBA;AACA;AAmBA,OAAO,MAAMC,mBAAmB,GAAGF,YAAY,CAAC;EAC9CG,QAAQ,EAAE;IACRC,IAAI,EAAEC,OAAmC;IACzCC,OAAO,EAAE;EACX,CAAC;EACDC,KAAK,EAAEF,OAAO;EACdG,aAAa,EAAE;IACbJ,IAAI,EAAE,CAACK,KAAK,EAAEC,MAAM,CAAgD;IACpEJ,OAAO,EAAEA,CAAA,KAAO;EAClB,CAAC;EACDK,SAAS,EAAE;IACTP,IAAI,EAAE,CAACQ,MAAM,EAAEF,MAAM,CAAC;IACtBJ,OAAO,EAAE;EACX,CAAC;EACDO,IAAI,EAAEH,MAAM;EACZI,KAAK,EAAEJ,MAAM;EACbK,QAAQ,EAAE;IACRX,IAAI,EAAEC,OAAmC;IACzCC,OAAO,EAAE;EACX,CAAC;EACDU,KAAK,EAAE;IACLZ,IAAI,EAAEK,KAA4C;IAClD;IACAH,OAAO,EAAEA,CAAA,KAAO;EAClB,CAAC;EACDW,UAAU,EAAE,IAAI;EAChBC,UAAU,EAAER,MAAiD;EAC7DS,eAAe,EAAE,IAAI;EAErB,GAAGnC,cAAc,CAAC;AACpB,CAAC,EAAE,YAAY,CAAC;AAEhB,OAAO,SAASoC,aAAaA,CAC3BC,KAAsB,EAGtB;EAAA,IAFAR,IAAI,GAAAS,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGvB,sBAAsB,CAAC,CAAC;EAAA,IAC/B0B,EAA6B,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG1B,KAAK,CAAC,CAAC;EAEvC,MAAM8B,KAAK,GAAGxC,eAAe,CAACmC,KAAK,EAAE,YAAY,CAAC;EAClD,MAAMM,eAAe,GAAGvC,QAAQ,CAAC,MAAMiC,KAAK,CAACF,eAAe,KAAKK,SAAS,GAAGE,KAAK,CAACE,KAAK,GAAGP,KAAK,CAACF,eAAe,CAAC;EACjH,MAAMU,IAAI,GAAG5C,OAAO,CAACoC,KAAK,CAAC;EAC3B;EACA,MAAMS,qBAAqB,GAAGrC,GAAG,CAAW,EAAE,CAAC;EAC/C,MAAMsC,UAAU,GAAGrC,UAAU,CAAC,IAAI,CAAC;EACnC,MAAMsC,OAAO,GAAG5C,QAAQ,CAAC,MAAM,CAAC,EAC9Ba,WAAW,CAACyB,KAAK,CAACE,KAAK,KAAK,EAAE,GAAG,IAAI,GAAGF,KAAK,CAACE,KAAK,CAAC,CAACL,MAAM,IAC3DtB,WAAW,CAAC0B,eAAe,CAACC,KAAK,KAAK,EAAE,GAAG,IAAI,GAAGD,eAAe,CAACC,KAAK,CAAC,CAACL,MAAM,CAChF,CAAC;EACF,MAAMf,aAAa,GAAGpB,QAAQ,CAAC,MAAM;IACnC,OAAOiC,KAAK,CAACb,aAAa,EAAEe,MAAM,GAC9BtB,WAAW,CAACoB,KAAK,CAACb,aAAa,CAAC,CAACyB,MAAM,CAACH,qBAAqB,CAACF,KAAK,CAAC,CAACM,KAAK,CAAC,CAAC,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAExB,MAAM,CAACS,KAAK,CAACV,SAAS,CAAC,CAAC,CAAC,GACnHmB,qBAAqB,CAACF,KAAK;EACjC,CAAC,CAAC;EACF,MAAMV,UAAU,GAAG9B,QAAQ,CAAC,MAAM;IAChC,IAAIwC,KAAK,GAAG,CAACP,KAAK,CAACH,UAAU,IAAIW,IAAI,CAACX,UAAU,EAAEU,KAAK,KAAK,OAAO;IACnE,IAAIA,KAAK,KAAK,MAAM,EAAEA,KAAK,GAAG,YAAY;IAC1C,IAAIA,KAAK,KAAK,OAAO,EAAEA,KAAK,GAAG,aAAa;IAC5C,MAAMS,GAAG,GAAG,IAAIC,GAAG,CAACV,KAAK,EAAEW,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAE5C,OAAO;MACLC,KAAK,EAAEH,GAAG,CAACI,GAAG,CAAC,OAAO,CAAC;MACvBC,IAAI,EAAEL,GAAG,CAACI,GAAG,CAAC,MAAM,CAAC,IAAIJ,GAAG,CAACI,GAAG,CAAC,OAAO,CAAC,IAAIJ,GAAG,CAACI,GAAG,CAAC,eAAe,CAAC;MACrEE,YAAY,EAAEN,GAAG,CAACI,GAAG,CAAC,eAAe,CAAC;MACtCG,IAAI,EAAEP,GAAG,CAACI,GAAG,CAAC,MAAM,CAAC;MACrBI,KAAK,EAAER,GAAG,CAACI,GAAG,CAAC,OAAO;IACxB,CAAC;EACH,CAAC,CAAC;EACF,MAAMK,OAAO,GAAG1D,QAAQ,CAAC,MAAM;IAC7B,IAAIiC,KAAK,CAACd,KAAK,IAAIc,KAAK,CAACb,aAAa,EAAEe,MAAM,EAAE,OAAO,KAAK;IAC5D,IAAI,CAACF,KAAK,CAACL,KAAK,CAACO,MAAM,EAAE,OAAO,IAAI;IACpC,IAAIQ,UAAU,CAACH,KAAK,EAAE;MACpB,OAAOE,qBAAqB,CAACF,KAAK,CAACL,MAAM,IAAIL,UAAU,CAACU,KAAK,CAACgB,IAAI,GAAG,IAAI,GAAG,IAAI;IAClF,CAAC,MAAM;MACL,OAAO,CAACd,qBAAqB,CAACF,KAAK,CAACL,MAAM;IAC5C;EACF,CAAC,CAAC;EACF,MAAMwB,YAAY,GAAGrD,UAAU,CAAC,KAAK,CAAC;EACtC,MAAMsD,iBAAiB,GAAG5D,QAAQ,CAAC,MAAM;IACvC,OAAO;MACL,CAAC,GAAGyB,IAAI,SAAS,GAAGiC,OAAO,CAAClB,KAAK,KAAK,KAAK;MAC3C,CAAC,GAAGf,IAAI,SAAS,GAAGmB,OAAO,CAACJ,KAAK;MACjC,CAAC,GAAGf,IAAI,YAAY,GAAGgB,IAAI,CAACoB,UAAU,CAACrB,KAAK;MAC5C,CAAC,GAAGf,IAAI,YAAY,GAAGgB,IAAI,CAACqB,UAAU,CAACtB;IACzC,CAAC;EACH,CAAC,CAAC;EAEF,MAAMuB,EAAE,GAAGrD,kBAAkB,CAAC,YAAY,CAAC;EAC3C,MAAMsD,GAAG,GAAGhE,QAAQ,CAAC,MAAMiC,KAAK,CAACR,IAAI,IAAIlB,KAAK,CAAC8B,EAAE,CAAC,CAAC;;EAEnD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;;EAEAnC,aAAa,CAAC,MAAM;IAClBuC,IAAI,CAACwB,QAAQ,GAAG;MACd5B,EAAE,EAAE2B,GAAG,CAACxB,KAAK;MACbuB,EAAE;MACFG,QAAQ;MACRC,KAAK;MACLC;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFjE,eAAe,CAAC,MAAM;IACpBsC,IAAI,CAAC4B,UAAU,GAAGL,GAAG,CAACxB,KAAK,CAAC;EAC9B,CAAC,CAAC;EAEFpC,SAAS,CAAC,YAAY;IACpB,IAAI,CAAC0B,UAAU,CAACU,KAAK,CAACgB,IAAI,EAAE;MAC1B,MAAMU,QAAQ,CAAC,CAACpC,UAAU,CAACU,KAAK,CAACiB,KAAK,CAAC;IACzC;IACAhB,IAAI,CAAC6B,MAAM,GAAGN,GAAG,CAACxB,KAAK,EAAEkB,OAAO,CAAClB,KAAK,EAAEpB,aAAa,CAACoB,KAAK,CAAC;EAC9D,CAAC,CAAC;EAEFzC,cAAc,CAAC,MAAM+B,UAAU,CAACU,KAAK,CAACY,KAAK,IAAKtB,UAAU,CAACU,KAAK,CAACe,YAAY,IAAIG,OAAO,CAAClB,KAAK,KAAK,KAAM,EAAE,MAAM;IAC/G/B,KAAK,CAAC8B,eAAe,EAAE,MAAM;MAC3B,IAAIA,eAAe,CAACC,KAAK,IAAI,IAAI,EAAE;QACjC0B,QAAQ,CAAC,CAAC;MACZ,CAAC,MAAM,IAAIjC,KAAK,CAACsC,OAAO,EAAE;QACxB,MAAMC,OAAO,GAAG/D,KAAK,CAAC,MAAMwB,KAAK,CAACsC,OAAO,EAAEE,GAAG,IAAI;UAChD,IAAI,CAACA,GAAG,EAAEP,QAAQ,CAAC,CAAC;UAEpBM,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFzE,cAAc,CAAC,MAAM+B,UAAU,CAACU,KAAK,CAACc,IAAI,EAAE,MAAM;IAChD7C,KAAK,CAAC,MAAMwB,KAAK,CAACsC,OAAO,EAAEE,GAAG,IAAI;MAChC,IAAI,CAACA,GAAG,EAAEP,QAAQ,CAAC,CAAC;IACtB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFzD,KAAK,CAAC,CAACiD,OAAO,EAAEtC,aAAa,CAAC,EAAE,MAAM;IACpCqB,IAAI,CAAC6B,MAAM,GAAGN,GAAG,CAACxB,KAAK,EAAEkB,OAAO,CAAClB,KAAK,EAAEpB,aAAa,CAACoB,KAAK,CAAC;EAC9D,CAAC,CAAC;EAEF,eAAe2B,KAAKA,CAAA,EAAI;IACtB7B,KAAK,CAACE,KAAK,GAAG,IAAI;IAClB,MAAMvC,QAAQ,CAAC,CAAC;IAChB,MAAMmE,eAAe,CAAC,CAAC;EACzB;EAEA,eAAeA,eAAeA,CAAA,EAAI;IAChCzB,UAAU,CAACH,KAAK,GAAG,IAAI;IACvB,IAAI,CAACV,UAAU,CAACU,KAAK,CAACgB,IAAI,EAAE;MAC1B,MAAMU,QAAQ,CAAC,CAACpC,UAAU,CAACU,KAAK,CAACiB,KAAK,CAAC;IACzC,CAAC,MAAM;MACLf,qBAAqB,CAACF,KAAK,GAAG,EAAE;IAClC;EACF;EAEA,eAAe0B,QAAQA,CAAA,EAAkB;IAAA,IAAhBQ,MAAM,GAAAxC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;IACrC,MAAMyC,OAAO,GAAG,EAAE;IAElBhB,YAAY,CAACnB,KAAK,GAAG,IAAI;IAEzB,KAAK,MAAMoC,IAAI,IAAI3C,KAAK,CAACL,KAAK,EAAE;MAC9B,IAAI+C,OAAO,CAACxC,MAAM,IAAIX,MAAM,CAACS,KAAK,CAACV,SAAS,IAAI,CAAC,CAAC,EAAE;QAClD;MACF;MAEA,MAAMsD,OAAO,GAAG,OAAOD,IAAI,KAAK,UAAU,GAAGA,IAAI,GAAG,MAAMA,IAAI;MAC9D,MAAME,MAAM,GAAG,MAAMD,OAAO,CAACtC,eAAe,CAACC,KAAK,CAAC;MAEnD,IAAIsC,MAAM,KAAK,IAAI,EAAE;MAErB,IAAIA,MAAM,KAAK,KAAK,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;QAClD;QACAC,OAAO,CAACC,IAAI,CAAC,GAAGF,MAAM,6EAA6E,CAAC;QAEpG;MACF;MAEAH,OAAO,CAACM,IAAI,CAACH,MAAM,IAAI,EAAE,CAAC;IAC5B;IAEApC,qBAAqB,CAACF,KAAK,GAAGmC,OAAO;IACrChB,YAAY,CAACnB,KAAK,GAAG,KAAK;IAC1BG,UAAU,CAACH,KAAK,GAAGkC,MAAM;IAEzB,OAAOhC,qBAAqB,CAACF,KAAK;EACpC;EAEA,OAAO;IACLpB,aAAa;IACbwB,OAAO;IACPiB,UAAU,EAAEpB,IAAI,CAACoB,UAAU;IAC3BC,UAAU,EAAErB,IAAI,CAACqB,UAAU;IAC3BnB,UAAU;IACVe,OAAO;IACPC,YAAY;IACZQ,KAAK;IACLC,eAAe;IACfF,QAAQ;IACRN;EACF,CAAC;AACH","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-23";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.js";
@@ -2572,41 +2572,46 @@ declare module 'vue' {
2572
2572
  $children?: VNodeChild
2573
2573
  }
2574
2574
  export interface GlobalComponents {
2575
- VApp: typeof import('vuetify/components')['VApp']
2576
- VAvatar: typeof import('vuetify/components')['VAvatar']
2575
+ VAlert: typeof import('vuetify/components')['VAlert']
2576
+ VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2577
2577
  VAppBar: typeof import('vuetify/components')['VAppBar']
2578
2578
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
2579
2579
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
2580
+ VAvatar: typeof import('vuetify/components')['VAvatar']
2581
+ VBadge: typeof import('vuetify/components')['VBadge']
2580
2582
  VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2581
- VAlert: typeof import('vuetify/components')['VAlert']
2582
- VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2583
+ VApp: typeof import('vuetify/components')['VApp']
2584
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2583
2585
  VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2584
2586
  VBanner: typeof import('vuetify/components')['VBanner']
2585
2587
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
2586
2588
  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']
2590
2589
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
2591
2590
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
2592
2591
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
2593
2592
  VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2594
- 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']
2593
+ VBtn: typeof import('vuetify/components')['VBtn']
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
2600
  VColorPicker: typeof import('vuetify/components')['VColorPicker']
2601
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2602
+ VChipGroup: typeof import('vuetify/components')['VChipGroup']
2603
+ VCarousel: typeof import('vuetify/components')['VCarousel']
2604
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2605
+ VChip: typeof import('vuetify/components')['VChip']
2606
2606
  VCheckbox: typeof import('vuetify/components')['VCheckbox']
2607
2607
  VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2608
- VChipGroup: typeof import('vuetify/components')['VChipGroup']
2609
- VCounter: typeof import('vuetify/components')['VCounter']
2608
+ VCombobox: typeof import('vuetify/components')['VCombobox']
2609
+ VDatePicker: typeof import('vuetify/components')['VDatePicker']
2610
+ VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
2611
+ VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
2612
+ VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
2613
+ VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
2614
+ VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
2610
2615
  VDataTable: typeof import('vuetify/components')['VDataTable']
2611
2616
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
2612
2617
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -2614,36 +2619,29 @@ declare module 'vue' {
2614
2619
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
2615
2620
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
2616
2621
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
2617
- VCombobox: typeof import('vuetify/components')['VCombobox']
2622
+ VCode: typeof import('vuetify/components')['VCode']
2618
2623
  VDialog: typeof import('vuetify/components')['VDialog']
2619
- 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
+ VCounter: typeof import('vuetify/components')['VCounter']
2625
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
2626
2626
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
2627
2627
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
2628
2628
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
2629
2629
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
2630
+ VDivider: typeof import('vuetify/components')['VDivider']
2630
2631
  VField: typeof import('vuetify/components')['VField']
2631
2632
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2632
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
2633
2633
  VFab: typeof import('vuetify/components')['VFab']
2634
- VFileInput: typeof import('vuetify/components')['VFileInput']
2635
2634
  VFooter: typeof import('vuetify/components')['VFooter']
2636
- VInput: typeof import('vuetify/components')['VInput']
2635
+ VFileInput: typeof import('vuetify/components')['VFileInput']
2636
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2637
2637
  VImg: typeof import('vuetify/components')['VImg']
2638
- VIcon: typeof import('vuetify/components')['VIcon']
2639
- VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
2640
- VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
2641
- VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
2642
- VClassIcon: typeof import('vuetify/components')['VClassIcon']
2638
+ VLabel: typeof import('vuetify/components')['VLabel']
2643
2639
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
2644
2640
  VItem: typeof import('vuetify/components')['VItem']
2645
2641
  VKbd: typeof import('vuetify/components')['VKbd']
2646
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2642
+ VMenu: typeof import('vuetify/components')['VMenu']
2643
+ VMain: typeof import('vuetify/components')['VMain']
2644
+ VMessages: typeof import('vuetify/components')['VMessages']
2647
2645
  VList: typeof import('vuetify/components')['VList']
2648
2646
  VListGroup: typeof import('vuetify/components')['VListGroup']
2649
2647
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -2653,27 +2651,35 @@ declare module 'vue' {
2653
2651
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
2654
2652
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
2655
2653
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
2656
- VLabel: typeof import('vuetify/components')['VLabel']
2657
- VMenu: typeof import('vuetify/components')['VMenu']
2658
- VMain: typeof import('vuetify/components')['VMain']
2659
- VMessages: typeof import('vuetify/components')['VMessages']
2660
- VOtpInput: typeof import('vuetify/components')['VOtpInput']
2654
+ VNumberInput: typeof import('vuetify/components')['VNumberInput']
2661
2655
  VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2662
2656
  VOverlay: typeof import('vuetify/components')['VOverlay']
2663
- VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2657
+ VOtpInput: typeof import('vuetify/components')['VOtpInput']
2664
2658
  VPagination: typeof import('vuetify/components')['VPagination']
2665
- VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2659
+ VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2666
2660
  VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2661
+ VIcon: typeof import('vuetify/components')['VIcon']
2662
+ VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
2663
+ VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
2664
+ VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
2665
+ VClassIcon: typeof import('vuetify/components')['VClassIcon']
2666
+ VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2667
2667
  VRating: typeof import('vuetify/components')['VRating']
2668
- VSheet: typeof import('vuetify/components')['VSheet']
2669
- VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2670
2668
  VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2671
2669
  VSelect: typeof import('vuetify/components')['VSelect']
2670
+ VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2671
+ VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2672
+ VSheet: typeof import('vuetify/components')['VSheet']
2672
2673
  VSnackbar: typeof import('vuetify/components')['VSnackbar']
2673
2674
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2674
2675
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2675
2676
  VSlider: typeof import('vuetify/components')['VSlider']
2676
- VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2677
+ VStepper: typeof import('vuetify/components')['VStepper']
2678
+ VStepperActions: typeof import('vuetify/components')['VStepperActions']
2679
+ VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
2680
+ VStepperItem: typeof import('vuetify/components')['VStepperItem']
2681
+ VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
2682
+ VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
2677
2683
  VSwitch: typeof import('vuetify/components')['VSwitch']
2678
2684
  VSystemBar: typeof import('vuetify/components')['VSystemBar']
2679
2685
  VTab: typeof import('vuetify/components')['VTab']
@@ -2681,45 +2687,40 @@ declare module 'vue' {
2681
2687
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
2682
2688
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
2683
2689
  VTextarea: typeof import('vuetify/components')['VTextarea']
2684
- VStepper: typeof import('vuetify/components')['VStepper']
2685
- VStepperActions: typeof import('vuetify/components')['VStepperActions']
2686
- VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
2687
- VStepperItem: typeof import('vuetify/components')['VStepperItem']
2688
- VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
2689
- VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
2690
2690
  VTable: typeof import('vuetify/components')['VTable']
2691
+ VTooltip: typeof import('vuetify/components')['VTooltip']
2691
2692
  VTextField: typeof import('vuetify/components')['VTextField']
2692
2693
  VTimeline: typeof import('vuetify/components')['VTimeline']
2693
2694
  VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2694
- VTooltip: typeof import('vuetify/components')['VTooltip']
2695
2695
  VToolbar: typeof import('vuetify/components')['VToolbar']
2696
2696
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
2697
2697
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
2698
2698
  VWindow: typeof import('vuetify/components')['VWindow']
2699
2699
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
2700
+ VInput: typeof import('vuetify/components')['VInput']
2700
2701
  VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2701
2702
  VDataIterator: typeof import('vuetify/components')['VDataIterator']
2702
2703
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
2703
2704
  VForm: typeof import('vuetify/components')['VForm']
2704
- VHover: typeof import('vuetify/components')['VHover']
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']
2710
2709
  VLayout: typeof import('vuetify/components')['VLayout']
2711
2710
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
2711
+ VLazy: typeof import('vuetify/components')['VLazy']
2712
2712
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
2713
2713
  VNoSsr: typeof import('vuetify/components')['VNoSsr']
2714
- VParallax: typeof import('vuetify/components')['VParallax']
2714
+ VHover: typeof import('vuetify/components')['VHover']
2715
2715
  VRadio: typeof import('vuetify/components')['VRadio']
2716
+ VParallax: typeof import('vuetify/components')['VParallax']
2716
2717
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
2717
2718
  VResponsive: typeof import('vuetify/components')['VResponsive']
2718
- VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2719
2719
  VSparkline: typeof import('vuetify/components')['VSparkline']
2720
+ VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2720
2721
  VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
2721
- VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
2722
2722
  VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
2723
+ VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
2723
2724
  VValidation: typeof import('vuetify/components')['VValidation']
2724
2725
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
2725
2726
  VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
@@ -2737,27 +2738,26 @@ 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
+ VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2742
+ VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2741
2743
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
2742
2744
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
2743
2745
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
2744
2746
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
2745
2747
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
2746
2748
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
2747
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2748
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2749
2749
  VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
2750
+ VTreeview: typeof import('vuetify/labs/components')['VTreeview']
2751
+ VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
2752
+ VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
2753
+ VPicker: typeof import('vuetify/labs/components')['VPicker']
2754
+ VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2750
2755
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2751
2756
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2752
2757
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2753
- VPicker: typeof import('vuetify/labs/components')['VPicker']
2754
- VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2755
2758
  VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
2756
2759
  VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
2757
2760
  VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
2758
- VTreeview: typeof import('vuetify/labs/components')['VTreeview']
2759
- VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
2760
- VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
2761
2761
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
2762
2762
  VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
2763
2763
  }
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-23";
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-23",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"