@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.
- package/CHANGELOG.md +8 -3
- package/dist/json/attributes.json +3257 -3257
- package/dist/json/importMap-labs.json +26 -26
- package/dist/json/importMap.json +178 -178
- package/dist/json/web-types.json +6012 -6012
- package/dist/vuetify-labs.cjs +3 -8
- package/dist/vuetify-labs.css +5583 -5583
- package/dist/vuetify-labs.d.ts +61 -61
- package/dist/vuetify-labs.esm.js +3 -8
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +3 -8
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +3 -8
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3971 -3971
- package/dist/vuetify.d.ts +61 -61
- package/dist/vuetify.esm.js +3 -8
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +3 -8
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +3 -4
- package/dist/vuetify.min.js.map +1 -1
- package/lib/composables/validation.js +0 -5
- package/lib/composables/validation.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +61 -61
- package/lib/framework.js +1 -1
- package/package.json +1 -1
@@ -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":[]}
|
package/lib/entry-bundler.js
CHANGED
@@ -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-
|
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";
|
package/lib/framework.d.ts
CHANGED
@@ -2572,41 +2572,46 @@ declare module 'vue' {
|
|
2572
2572
|
$children?: VNodeChild
|
2573
2573
|
}
|
2574
2574
|
export interface GlobalComponents {
|
2575
|
-
|
2576
|
-
|
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
|
-
|
2582
|
-
|
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
|
-
|
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
|
-
|
2609
|
-
|
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
|
-
|
2622
|
+
VCode: typeof import('vuetify/components')['VCode']
|
2618
2623
|
VDialog: typeof import('vuetify/components')['VDialog']
|
2619
|
-
|
2620
|
-
|
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
|
-
|
2635
|
+
VFileInput: typeof import('vuetify/components')['VFileInput']
|
2636
|
+
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
|
2637
2637
|
VImg: typeof import('vuetify/components')['VImg']
|
2638
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
2657
|
+
VOtpInput: typeof import('vuetify/components')['VOtpInput']
|
2664
2658
|
VPagination: typeof import('vuetify/components')['VPagination']
|
2665
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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