vuetify 3.8.4 → 3.8.6

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.
Files changed (85) hide show
  1. package/dist/_component-variables-labs.sass +1 -0
  2. package/dist/json/attributes.json +3300 -2956
  3. package/dist/json/importMap-labs.json +24 -20
  4. package/dist/json/importMap.json +182 -182
  5. package/dist/json/tags.json +91 -0
  6. package/dist/json/web-types.json +6720 -5503
  7. package/dist/vuetify-labs.cjs +294 -51
  8. package/dist/vuetify-labs.css +4169 -4130
  9. package/dist/vuetify-labs.d.ts +2235 -1152
  10. package/dist/vuetify-labs.esm.js +294 -51
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +294 -51
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +22 -42
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +2580 -2544
  17. package/dist/vuetify.d.ts +532 -526
  18. package/dist/vuetify.esm.js +22 -42
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +22 -42
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +582 -579
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.d.ts +84 -84
  26. package/lib/components/VAutocomplete/VAutocomplete.js +0 -5
  27. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  28. package/lib/components/VBottomSheet/VBottomSheet.css +1 -1
  29. package/lib/components/VBottomSheet/VBottomSheet.sass +1 -1
  30. package/lib/components/VBtn/VBtn.css +25 -0
  31. package/lib/components/VBtn/VBtn.sass +9 -0
  32. package/lib/components/VBtn/_variables.scss +1 -0
  33. package/lib/components/VCheckbox/VCheckbox.d.ts +12 -12
  34. package/lib/components/VCombobox/VCombobox.d.ts +84 -84
  35. package/lib/components/VFileInput/VFileInput.d.ts +30 -30
  36. package/lib/components/VInput/VInput.d.ts +12 -12
  37. package/lib/components/VList/VList.d.ts +3 -3
  38. package/lib/components/VList/VList.js.map +1 -1
  39. package/lib/components/VNumberInput/VNumberInput.css +15 -4
  40. package/lib/components/VNumberInput/VNumberInput.d.ts +80 -80
  41. package/lib/components/VNumberInput/VNumberInput.sass +18 -6
  42. package/lib/components/VRadioGroup/VRadioGroup.d.ts +12 -12
  43. package/lib/components/VRangeSlider/VRangeSlider.d.ts +12 -12
  44. package/lib/components/VSelect/VSelect.d.ts +84 -84
  45. package/lib/components/VSelect/VSelect.js +6 -4
  46. package/lib/components/VSelect/VSelect.js.map +1 -1
  47. package/lib/components/VSlider/VSlider.d.ts +12 -12
  48. package/lib/components/VSnackbarQueue/VSnackbarQueue.d.ts +3 -1
  49. package/lib/components/VSnackbarQueue/VSnackbarQueue.js.map +1 -1
  50. package/lib/components/VSwitch/VSwitch.d.ts +12 -12
  51. package/lib/components/VTextField/VTextField.d.ts +30 -30
  52. package/lib/components/VTextarea/VTextarea.d.ts +30 -30
  53. package/lib/components/VValidation/VValidation.d.ts +8 -8
  54. package/lib/composables/dateFormat.d.ts +24 -0
  55. package/lib/composables/dateFormat.js +112 -0
  56. package/lib/composables/dateFormat.js.map +1 -0
  57. package/lib/composables/validation.d.ts +6 -5
  58. package/lib/composables/validation.js +4 -29
  59. package/lib/composables/validation.js.map +1 -1
  60. package/lib/entry-bundler.js +1 -1
  61. package/lib/framework.d.ts +71 -68
  62. package/lib/framework.js +1 -1
  63. package/lib/iconsets/mdi.js +2 -1
  64. package/lib/iconsets/mdi.js.map +1 -1
  65. package/lib/labs/VColorInput/VColorInput.css +4 -0
  66. package/lib/labs/VColorInput/VColorInput.d.ts +1767 -0
  67. package/lib/labs/VColorInput/VColorInput.js +129 -0
  68. package/lib/labs/VColorInput/VColorInput.js.map +1 -0
  69. package/lib/labs/VColorInput/VColorInput.sass +7 -0
  70. package/lib/labs/VColorInput/_variables.scss +2 -0
  71. package/lib/labs/VColorInput/index.d.ts +1 -0
  72. package/lib/labs/VColorInput/index.js +2 -0
  73. package/lib/labs/VColorInput/index.js.map +1 -0
  74. package/lib/labs/VDateInput/VDateInput.d.ts +130 -105
  75. package/lib/labs/VDateInput/VDateInput.js +43 -10
  76. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  77. package/lib/labs/components.d.ts +1 -0
  78. package/lib/labs/components.js +1 -0
  79. package/lib/labs/components.js.map +1 -1
  80. package/lib/labs/rules/rules.d.ts +9 -5
  81. package/lib/labs/rules/rules.js +73 -51
  82. package/lib/labs/rules/rules.js.map +1 -1
  83. package/lib/util/helpers.js +1 -1
  84. package/lib/util/helpers.js.map +1 -1
  85. package/package.json +2 -3
@@ -0,0 +1,112 @@
1
+ // Composables
2
+ import { useDate } from "./date/date.js"; // Utilities
3
+ import { toRef } from 'vue';
4
+ import { consoleWarn, propsFactory } from "../util/index.js"; // Types
5
+ // Types
6
+ class DateFormatSpec {
7
+ constructor(order,
8
+ // mdy | dmy | ymd
9
+ separator // / | - | .
10
+ ) {
11
+ this.order = order;
12
+ this.separator = separator;
13
+ }
14
+ get format() {
15
+ return this.order.split('').map(sign => `${sign}${sign}`).join(this.separator).replace('yy', 'yyyy');
16
+ }
17
+ static canBeParsed(v) {
18
+ if (typeof v !== 'string') return false;
19
+ const lowercase = v.toLowerCase();
20
+ return ['y', 'm', 'd'].every(sign => lowercase.includes(sign)) && ['/', '-', '.'].some(sign => v.includes(sign));
21
+ }
22
+ static parse(v) {
23
+ if (!DateFormatSpec.canBeParsed(v)) {
24
+ throw new Error(`[${v}] cannot be parsed into date format specification`);
25
+ }
26
+ const order = v.toLowerCase().split('').filter((c, i, all) => 'dmy'.includes(c) && all.indexOf(c) === i).join('');
27
+ const separator = ['/', '-', '.'].find(sign => v.includes(sign));
28
+ return new DateFormatSpec(order, separator);
29
+ }
30
+ }
31
+ export const makeDateFormatProps = propsFactory({
32
+ inputFormat: {
33
+ type: String,
34
+ validator: v => !v || DateFormatSpec.canBeParsed(v)
35
+ }
36
+ }, 'date-format');
37
+ export function useDateFormat(props, locale) {
38
+ const adapter = useDate();
39
+ function inferFromLocale() {
40
+ const localeForDateFormat = locale.value ?? 'en-US';
41
+ const formatFromLocale = Intl.DateTimeFormat(localeForDateFormat, {
42
+ year: 'numeric',
43
+ month: '2-digit',
44
+ day: '2-digit'
45
+ }).format(adapter.toJsDate(adapter.parseISO('1999-12-07'))).replace(/(07)|(٠٧)|(٢٩)|(۱۶)|(০৭)/, 'dd').replace(/(12)|(١٢)|(٠٨)|(۰۹)|(১২)/, 'mm').replace(/(1999)|(2542)|(١٩٩٩)|(١٤٢٠)|(۱۳۷۸)|(১৯৯৯)/, 'yyyy').replace(/[^ymd\-/.]/g, '').replace(/\.$/, '');
46
+ if (!DateFormatSpec.canBeParsed(formatFromLocale)) {
47
+ consoleWarn(`Date format inferred from locale [${localeForDateFormat}] is invalid: [${formatFromLocale}]`);
48
+ return 'mm/dd/yyyy';
49
+ }
50
+ return formatFromLocale;
51
+ }
52
+ const currentFormat = toRef(() => {
53
+ return DateFormatSpec.canBeParsed(props.inputFormat) ? DateFormatSpec.parse(props.inputFormat) : DateFormatSpec.parse(inferFromLocale());
54
+ });
55
+ function parseDate(dateString) {
56
+ function parseDateParts(text) {
57
+ const parts = text.trim().split(currentFormat.value.separator);
58
+ return {
59
+ y: Number(parts[currentFormat.value.order.indexOf('y')]),
60
+ m: Number(parts[currentFormat.value.order.indexOf('m')]),
61
+ d: Number(parts[currentFormat.value.order.indexOf('d')])
62
+ };
63
+ }
64
+ function validateDateParts(dateParts) {
65
+ const {
66
+ y: year,
67
+ m: month,
68
+ d: day
69
+ } = dateParts;
70
+ if (!year || !month || !day) return null;
71
+ if (month < 1 || month > 12) return null;
72
+ if (day < 1 || day > 31) return null;
73
+ return {
74
+ year: autoFixYear(year),
75
+ month,
76
+ day
77
+ };
78
+ }
79
+ function autoFixYear(year) {
80
+ const currentYear = adapter.getYear(adapter.date());
81
+ if (year > 100 || currentYear % 100 >= 50) {
82
+ return year;
83
+ }
84
+ const currentCentury = ~~(currentYear / 100) * 100;
85
+ return year < 50 ? currentCentury + year : currentCentury - 100 + year;
86
+ }
87
+ const dateParts = parseDateParts(dateString);
88
+ const validatedParts = validateDateParts(dateParts);
89
+ if (!validatedParts) return null;
90
+ const {
91
+ year,
92
+ month,
93
+ day
94
+ } = validatedParts;
95
+ const pad = v => String(v).padStart(2, '0');
96
+ return adapter.parseISO(`${year}-${pad(month)}-${pad(day)}`);
97
+ }
98
+ function isValid(text) {
99
+ return !!parseDate(text);
100
+ }
101
+ function formatDate(value) {
102
+ const parts = adapter.toISO(value).split('-');
103
+ return currentFormat.value.order.split('').map(sign => parts['ymd'.indexOf(sign)]).join(currentFormat.value.separator);
104
+ }
105
+ return {
106
+ isValid,
107
+ parseDate,
108
+ formatDate,
109
+ parserFormat: toRef(() => currentFormat.value.format)
110
+ };
111
+ }
112
+ //# sourceMappingURL=dateFormat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateFormat.js","names":["useDate","toRef","consoleWarn","propsFactory","DateFormatSpec","constructor","order","separator","format","split","map","sign","join","replace","canBeParsed","v","lowercase","toLowerCase","every","includes","some","parse","Error","filter","c","i","all","indexOf","find","makeDateFormatProps","inputFormat","type","String","validator","useDateFormat","props","locale","adapter","inferFromLocale","localeForDateFormat","value","formatFromLocale","Intl","DateTimeFormat","year","month","day","toJsDate","parseISO","currentFormat","parseDate","dateString","parseDateParts","text","parts","trim","y","Number","m","d","validateDateParts","dateParts","autoFixYear","currentYear","getYear","date","currentCentury","validatedParts","pad","padStart","isValid","formatDate","toISO","parserFormat"],"sources":["../../src/composables/dateFormat.ts"],"sourcesContent":["// Composables\nimport { useDate } from '@/composables/date/date'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { consoleWarn, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\n// Types\nexport interface DateFormatProps {\n inputFormat?: string\n}\n\nclass DateFormatSpec {\n constructor (\n public readonly order: string, // mdy | dmy | ymd\n public readonly separator: string // / | - | .\n ) { }\n\n get format () {\n return this.order.split('')\n .map(sign => `${sign}${sign}`)\n .join(this.separator)\n .replace('yy', 'yyyy')\n }\n\n static canBeParsed (v: any) {\n if (typeof v !== 'string') return false\n const lowercase = v.toLowerCase()\n return ['y', 'm', 'd'].every(sign => lowercase.includes(sign)) &&\n ['/', '-', '.'].some(sign => v.includes(sign))\n }\n\n static parse (v: string) {\n if (!DateFormatSpec.canBeParsed(v)) {\n throw new Error(`[${v}] cannot be parsed into date format specification`)\n }\n const order = v.toLowerCase().split('')\n .filter((c, i, all) => 'dmy'.includes(c) && all.indexOf(c) === i)\n .join('')\n const separator = ['/', '-', '.'].find(sign => v.includes(sign))!\n return new DateFormatSpec(order, separator)\n }\n}\n\nexport const makeDateFormatProps = propsFactory({\n inputFormat: {\n type: String,\n validator: (v: string) => !v || DateFormatSpec.canBeParsed(v),\n },\n}, 'date-format')\n\nexport function useDateFormat (props: DateFormatProps, locale: Ref<string>) {\n const adapter = useDate()\n\n function inferFromLocale () {\n const localeForDateFormat = locale.value ?? 'en-US'\n const formatFromLocale = Intl.DateTimeFormat(localeForDateFormat, { year: 'numeric', month: '2-digit', day: '2-digit' })\n .format(adapter.toJsDate(adapter.parseISO('1999-12-07')))\n .replace(/(07)|(٠٧)|(٢٩)|(۱۶)|(০৭)/, 'dd')\n .replace(/(12)|(١٢)|(٠٨)|(۰۹)|(১২)/, 'mm')\n .replace(/(1999)|(2542)|(١٩٩٩)|(١٤٢٠)|(۱۳۷۸)|(১৯৯৯)/, 'yyyy')\n .replace(/[^ymd\\-/.]/g, '')\n .replace(/\\.$/, '')\n\n if (!DateFormatSpec.canBeParsed(formatFromLocale)) {\n consoleWarn(`Date format inferred from locale [${localeForDateFormat}] is invalid: [${formatFromLocale}]`)\n return 'mm/dd/yyyy'\n }\n\n return formatFromLocale\n }\n\n const currentFormat = toRef(() => {\n return DateFormatSpec.canBeParsed(props.inputFormat)\n ? DateFormatSpec.parse(props.inputFormat!)\n : DateFormatSpec.parse(inferFromLocale())\n })\n\n function parseDate (dateString: string) {\n function parseDateParts (text: string): Record<'y' |'m' | 'd', number> {\n const parts = text.trim().split(currentFormat.value.separator)\n\n return {\n y: Number(parts[currentFormat.value.order.indexOf('y')]),\n m: Number(parts[currentFormat.value.order.indexOf('m')]),\n d: Number(parts[currentFormat.value.order.indexOf('d')]),\n }\n }\n\n function validateDateParts (dateParts: Record<string, number>) {\n const { y: year, m: month, d: day } = dateParts\n if (!year || !month || !day) return null\n if (month < 1 || month > 12) return null\n if (day < 1 || day > 31) return null\n\n return { year: autoFixYear(year), month, day }\n }\n\n function autoFixYear (year: number) {\n const currentYear = adapter.getYear(adapter.date())\n if (year > 100 || currentYear % 100 >= 50) {\n return year\n }\n\n const currentCentury = ~~(currentYear / 100) * 100\n\n return year < 50\n ? currentCentury + year\n : (currentCentury - 100) + year\n }\n\n const dateParts = parseDateParts(dateString)\n const validatedParts = validateDateParts(dateParts)\n\n if (!validatedParts) return null\n\n const { year, month, day } = validatedParts\n\n const pad = (v: number) => String(v).padStart(2, '0')\n\n return adapter.parseISO(`${year}-${pad(month)}-${pad(day)}`)\n }\n\n function isValid (text: string) {\n return !!parseDate(text)\n }\n\n function formatDate (value: unknown) {\n const parts = adapter.toISO(value).split('-')\n\n return currentFormat.value.order.split('')\n .map(sign => parts['ymd'.indexOf(sign)])\n .join(currentFormat.value.separator)\n }\n\n return {\n isValid,\n parseDate,\n formatDate,\n parserFormat: toRef(() => currentFormat.value.format),\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  import type { PropType } from 'vue';
2
+ import type { ValidationAlias } from "../labs/rules/index.js";
2
3
  import type { EventProp, MaybeRef } from "../util/index.js";
3
4
  export type ValidationResult = string | boolean;
4
5
  export type ValidationRule = ValidationResult | PromiseLike<ValidationResult> | ((value: any) => ValidationResult) | ((value: any) => PromiseLike<ValidationResult>);
@@ -13,7 +14,7 @@ export interface ValidationProps {
13
14
  name: string | undefined;
14
15
  label: string | undefined;
15
16
  readonly: boolean | null;
16
- rules: readonly ValidationRule[];
17
+ rules: readonly (ValidationRule | ValidationAlias)[];
17
18
  modelValue: any;
18
19
  'onUpdate:modelValue': EventProp | undefined;
19
20
  validateOn?: ValidateOn;
@@ -95,14 +96,14 @@ export declare const makeValidationProps: <Defaults extends {
95
96
  default: unknown extends Defaults["readonly"] ? boolean | null : NonNullable<boolean | null> | Defaults["readonly"];
96
97
  };
97
98
  rules: unknown extends Defaults["rules"] ? {
98
- type: PropType<readonly ValidationRule[]>;
99
+ type: PropType<readonly (ValidationRule | ValidationAlias)[]>;
99
100
  default: () => never[];
100
101
  } : Omit<{
101
- type: PropType<readonly ValidationRule[]>;
102
+ type: PropType<readonly (ValidationRule | ValidationAlias)[]>;
102
103
  default: () => never[];
103
104
  }, "type" | "default"> & {
104
- type: PropType<unknown extends Defaults["rules"] ? readonly ValidationRule[] : readonly ValidationRule[] | Defaults["rules"]>;
105
- default: unknown extends Defaults["rules"] ? readonly ValidationRule[] : readonly ValidationRule[] | Defaults["rules"];
105
+ type: PropType<unknown extends Defaults["rules"] ? readonly (string | boolean | PromiseLike<ValidationResult> | ((value: any) => ValidationResult) | ((value: any) => PromiseLike<ValidationResult>) | [string, any, (string | undefined)?])[] : readonly (string | boolean | PromiseLike<ValidationResult> | ((value: any) => ValidationResult) | ((value: any) => PromiseLike<ValidationResult>) | [string, any, (string | undefined)?])[] | Defaults["rules"]>;
106
+ default: unknown extends Defaults["rules"] ? readonly (string | boolean | PromiseLike<ValidationResult> | ((value: any) => ValidationResult) | ((value: any) => PromiseLike<ValidationResult>) | [string, any, (string | undefined)?])[] : readonly (string | boolean | PromiseLike<ValidationResult> | ((value: any) => ValidationResult) | ((value: any) => PromiseLike<ValidationResult>) | [string, any, (string | undefined)?])[] | Defaults["rules"];
106
107
  };
107
108
  modelValue: unknown extends Defaults["modelValue"] ? null : {
108
109
  type: PropType<unknown extends Defaults["modelValue"] ? any : any>;
@@ -2,12 +2,10 @@
2
2
  import { makeFocusProps } from "./focus.js";
3
3
  import { useForm } from "./form.js";
4
4
  import { useProxiedModel } from "./proxiedModel.js";
5
- import { useToggleScope } from "./toggleScope.js"; // import { useRules } from '@/labs/rules'
6
- // Utilities
5
+ import { useToggleScope } from "./toggleScope.js";
6
+ import { useRules } from "../labs/rules/index.js"; // Utilities
7
7
  import { computed, nextTick, onBeforeMount, onBeforeUnmount, onMounted, ref, shallowRef, unref, useId, watch } from 'vue';
8
8
  import { getCurrentInstance, getCurrentInstanceName, propsFactory, wrapInArray } from "../util/index.js"; // Types
9
- // type ValidationRuleParams = [any, string?]
10
- // type ValidationAlias = string | [string, ...ValidationRuleParams]
11
9
  export const makeValidationProps = propsFactory({
12
10
  disabled: {
13
11
  type: Boolean,
@@ -30,7 +28,6 @@ export const makeValidationProps = propsFactory({
30
28
  },
31
29
  rules: {
32
30
  type: Array,
33
- // type: Array as PropType<readonly (ValidationRule | ValidationAlias)[]>,
34
31
  default: () => []
35
32
  },
36
33
  modelValue: null,
@@ -44,7 +41,7 @@ export function useValidation(props) {
44
41
  const model = useProxiedModel(props, 'modelValue');
45
42
  const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue);
46
43
  const form = useForm(props);
47
- // const rules = useRules()
44
+ const rules = useRules(() => props.rules);
48
45
  const internalErrorMessages = ref([]);
49
46
  const isPristine = shallowRef(true);
50
47
  const isDirty = computed(() => !!(wrapInArray(model.value === '' ? null : model.value).length || wrapInArray(validationModel.value === '' ? null : validationModel.value).length));
@@ -84,28 +81,6 @@ export function useValidation(props) {
84
81
  });
85
82
  const vm = getCurrentInstance('validation');
86
83
  const uid = computed(() => props.name ?? unref(id));
87
-
88
- // const resolvedRules = computed(() => props.rules.map(rule => {
89
- // let ruleName: string | null = null
90
- // let ruleParams: ValidationRuleParams = [undefined]
91
- // if (Array.isArray(rule)) {
92
- // ruleName = rule[0]
93
- // ruleParams = rule.slice(1) as ValidationRuleParams
94
- // } else if (typeof rule === 'string') {
95
- // ruleName = rule
96
- // }
97
-
98
- // if (ruleName !== null) {
99
- // if (ruleName.startsWith('$')) {
100
- // ruleName = ruleName.slice(1)
101
- // }
102
-
103
- // return rules?.[ruleName]?.(...ruleParams)
104
- // } else {
105
- // return rule
106
- // }
107
- // }))
108
-
109
84
  onBeforeMount(() => {
110
85
  form.register?.({
111
86
  id: uid.value,
@@ -161,7 +136,7 @@ export function useValidation(props) {
161
136
  let silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
162
137
  const results = [];
163
138
  isValidating.value = true;
164
- for (const rule of props.rules) {
139
+ for (const rule of rules.value) {
165
140
  if (results.length >= Number(props.maxErrors ?? 1)) {
166
141
  break;
167
142
  }
@@ -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 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","useRules","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'\nimport { 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 { ValidationAlias } from '@/labs/rules'\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\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 | 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 | 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(() => props.rules)\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 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 rules.value) {\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.4";
19
+ export const version = "3.8.6";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.js";
@@ -2404,7 +2404,9 @@ declare const VSnackbar: {
2404
2404
  }>>;
2405
2405
  type VSnackbar = InstanceType<typeof VSnackbar>;
2406
2406
 
2407
- type SnackbarMessage = string | Omit<VSnackbar['$props'], 'modelValue' | 'onUpdate:modelValue' | 'activator' | 'activatorProps' | 'closeDelay' | 'openDelay' | 'openOnClick' | 'openOnFocus' | 'openOnHover' | '$children' | 'v-slots' | `v-slot:${string}` | keyof VNodeProps>;
2407
+ type SnackbarMessage = string | (Omit<VSnackbar['$props'], 'modelValue' | 'onUpdate:modelValue' | 'activator' | 'activatorProps' | 'closeDelay' | 'openDelay' | 'openOnClick' | 'openOnFocus' | 'openOnHover' | 'style' | '$children' | 'v-slots' | `v-slot:${string}` | keyof VNodeProps> & {
2408
+ style?: any;
2409
+ });
2408
2410
 
2409
2411
  interface VuetifyOptions {
2410
2412
  aliases?: Record<string, any>;
@@ -2537,39 +2539,46 @@ declare module 'vue' {
2537
2539
  $children?: VNodeChild
2538
2540
  }
2539
2541
  export interface GlobalComponents {
2540
- VApp: typeof import('vuetify/components')['VApp']
2541
2542
  VAppBar: typeof import('vuetify/components')['VAppBar']
2542
2543
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
2543
2544
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
2544
- VBadge: typeof import('vuetify/components')['VBadge']
2545
+ VApp: typeof import('vuetify/components')['VApp']
2546
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2545
2547
  VAlert: typeof import('vuetify/components')['VAlert']
2546
2548
  VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2547
2549
  VAvatar: typeof import('vuetify/components')['VAvatar']
2548
2550
  VBanner: typeof import('vuetify/components')['VBanner']
2549
2551
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
2550
2552
  VBannerText: typeof import('vuetify/components')['VBannerText']
2551
- VBtn: typeof import('vuetify/components')['VBtn']
2552
2553
  VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2553
2554
  VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2554
- VCarousel: typeof import('vuetify/components')['VCarousel']
2555
- VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2555
+ VBtn: typeof import('vuetify/components')['VBtn']
2556
+ VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
2557
+ VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
2558
+ VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
2559
+ VBadge: typeof import('vuetify/components')['VBadge']
2556
2560
  VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2561
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2557
2562
  VCard: typeof import('vuetify/components')['VCard']
2558
2563
  VCardActions: typeof import('vuetify/components')['VCardActions']
2559
2564
  VCardItem: typeof import('vuetify/components')['VCardItem']
2560
2565
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
2561
2566
  VCardText: typeof import('vuetify/components')['VCardText']
2562
2567
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
2568
+ VCarousel: typeof import('vuetify/components')['VCarousel']
2569
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2563
2570
  VChip: typeof import('vuetify/components')['VChip']
2564
- VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2565
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2566
- VChipGroup: typeof import('vuetify/components')['VChipGroup']
2567
- VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
2568
- VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
2569
- VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
2570
2571
  VCheckbox: typeof import('vuetify/components')['VCheckbox']
2571
2572
  VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2573
+ VColorPicker: typeof import('vuetify/components')['VColorPicker']
2574
+ VCombobox: typeof import('vuetify/components')['VCombobox']
2572
2575
  VCode: typeof import('vuetify/components')['VCode']
2576
+ VDatePicker: typeof import('vuetify/components')['VDatePicker']
2577
+ VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
2578
+ VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
2579
+ VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
2580
+ VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
2581
+ VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
2573
2582
  VDataTable: typeof import('vuetify/components')['VDataTable']
2574
2583
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
2575
2584
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -2577,38 +2586,31 @@ declare module 'vue' {
2577
2586
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
2578
2587
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
2579
2588
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
2580
- VColorPicker: typeof import('vuetify/components')['VColorPicker']
2581
- VDatePicker: typeof import('vuetify/components')['VDatePicker']
2582
- VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
2583
- VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
2584
- VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
2585
- VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
2586
- VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
2587
- VCombobox: typeof import('vuetify/components')['VCombobox']
2588
2589
  VDivider: typeof import('vuetify/components')['VDivider']
2589
- VCounter: typeof import('vuetify/components')['VCounter']
2590
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
2591
- VFab: typeof import('vuetify/components')['VFab']
2592
- VFileInput: typeof import('vuetify/components')['VFileInput']
2590
+ VChipGroup: typeof import('vuetify/components')['VChipGroup']
2593
2591
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
2594
2592
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
2595
2593
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
2596
2594
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
2597
- VFooter: typeof import('vuetify/components')['VFooter']
2595
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
2598
2596
  VField: typeof import('vuetify/components')['VField']
2599
2597
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2598
+ VCounter: typeof import('vuetify/components')['VCounter']
2599
+ VDialog: typeof import('vuetify/components')['VDialog']
2600
+ VFooter: typeof import('vuetify/components')['VFooter']
2601
+ VFab: typeof import('vuetify/components')['VFab']
2602
+ VFileInput: typeof import('vuetify/components')['VFileInput']
2603
+ VImg: typeof import('vuetify/components')['VImg']
2600
2604
  VIcon: typeof import('vuetify/components')['VIcon']
2601
2605
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
2602
2606
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
2603
2607
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
2604
2608
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
2605
- VImg: typeof import('vuetify/components')['VImg']
2606
2609
  VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2607
- VKbd: typeof import('vuetify/components')['VKbd']
2608
- VInput: typeof import('vuetify/components')['VInput']
2609
- VLabel: typeof import('vuetify/components')['VLabel']
2610
2610
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
2611
2611
  VItem: typeof import('vuetify/components')['VItem']
2612
+ VInput: typeof import('vuetify/components')['VInput']
2613
+ VKbd: typeof import('vuetify/components')['VKbd']
2612
2614
  VList: typeof import('vuetify/components')['VList']
2613
2615
  VListGroup: typeof import('vuetify/components')['VListGroup']
2614
2616
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -2619,69 +2621,74 @@ declare module 'vue' {
2619
2621
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
2620
2622
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
2621
2623
  VMain: typeof import('vuetify/components')['VMain']
2622
- VMenu: typeof import('vuetify/components')['VMenu']
2623
- VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2624
+ VLabel: typeof import('vuetify/components')['VLabel']
2624
2625
  VMessages: typeof import('vuetify/components')['VMessages']
2625
- VNumberInput: typeof import('vuetify/components')['VNumberInput']
2626
+ VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2627
+ VMenu: typeof import('vuetify/components')['VMenu']
2626
2628
  VOverlay: typeof import('vuetify/components')['VOverlay']
2627
- VDialog: typeof import('vuetify/components')['VDialog']
2628
- VOtpInput: typeof import('vuetify/components')['VOtpInput']
2629
- VPagination: typeof import('vuetify/components')['VPagination']
2629
+ VNumberInput: typeof import('vuetify/components')['VNumberInput']
2630
2630
  VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2631
- VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2631
+ VPagination: typeof import('vuetify/components')['VPagination']
2632
2632
  VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2633
+ VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2634
+ VOtpInput: typeof import('vuetify/components')['VOtpInput']
2633
2635
  VRating: typeof import('vuetify/components')['VRating']
2634
2636
  VSelect: typeof import('vuetify/components')['VSelect']
2635
- VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2637
+ VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2636
2638
  VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2639
+ VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2640
+ VSlider: typeof import('vuetify/components')['VSlider']
2637
2641
  VSheet: typeof import('vuetify/components')['VSheet']
2638
- VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2639
2642
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2640
2643
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2641
2644
  VSnackbar: typeof import('vuetify/components')['VSnackbar']
2642
- VSwitch: typeof import('vuetify/components')['VSwitch']
2645
+ VTab: typeof import('vuetify/components')['VTab']
2646
+ VTabs: typeof import('vuetify/components')['VTabs']
2647
+ VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
2648
+ VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
2643
2649
  VStepper: typeof import('vuetify/components')['VStepper']
2644
2650
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
2645
2651
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
2646
2652
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
2647
2653
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
2648
2654
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
2649
- VTab: typeof import('vuetify/components')['VTab']
2650
- VTabs: typeof import('vuetify/components')['VTabs']
2651
- VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
2652
- VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
2655
+ VSwitch: typeof import('vuetify/components')['VSwitch']
2653
2656
  VTable: typeof import('vuetify/components')['VTable']
2654
2657
  VTextarea: typeof import('vuetify/components')['VTextarea']
2655
- VTextField: typeof import('vuetify/components')['VTextField']
2656
2658
  VSystemBar: typeof import('vuetify/components')['VSystemBar']
2659
+ VToolbar: typeof import('vuetify/components')['VToolbar']
2660
+ VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
2661
+ VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
2662
+ VTextField: typeof import('vuetify/components')['VTextField']
2663
+ VTooltip: typeof import('vuetify/components')['VTooltip']
2657
2664
  VTimeline: typeof import('vuetify/components')['VTimeline']
2658
2665
  VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2659
- VTooltip: typeof import('vuetify/components')['VTooltip']
2660
2666
  VWindow: typeof import('vuetify/components')['VWindow']
2661
2667
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
2662
- VSlider: typeof import('vuetify/components')['VSlider']
2663
- VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2664
2668
  VDataIterator: typeof import('vuetify/components')['VDataIterator']
2669
+ VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2665
2670
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
2666
2671
  VForm: typeof import('vuetify/components')['VForm']
2667
2672
  VHover: typeof import('vuetify/components')['VHover']
2668
- VToolbar: typeof import('vuetify/components')['VToolbar']
2669
- VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
2670
- VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
2673
+ VContainer: typeof import('vuetify/components')['VContainer']
2674
+ VCol: typeof import('vuetify/components')['VCol']
2675
+ VRow: typeof import('vuetify/components')['VRow']
2676
+ VSpacer: typeof import('vuetify/components')['VSpacer']
2677
+ VLazy: typeof import('vuetify/components')['VLazy']
2671
2678
  VLayout: typeof import('vuetify/components')['VLayout']
2672
2679
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
2673
- VLazy: typeof import('vuetify/components')['VLazy']
2674
- VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
2675
2680
  VNoSsr: typeof import('vuetify/components')['VNoSsr']
2676
2681
  VParallax: typeof import('vuetify/components')['VParallax']
2682
+ VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
2677
2683
  VRadio: typeof import('vuetify/components')['VRadio']
2678
2684
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
2679
2685
  VResponsive: typeof import('vuetify/components')['VResponsive']
2680
- VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2681
2686
  VSparkline: typeof import('vuetify/components')['VSparkline']
2687
+ VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2682
2688
  VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
2683
- VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
2684
2689
  VValidation: typeof import('vuetify/components')['VValidation']
2690
+ VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
2691
+ VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
2685
2692
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
2686
2693
  VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
2687
2694
  VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
@@ -2698,13 +2705,9 @@ declare module 'vue' {
2698
2705
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
2699
2706
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
2700
2707
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
2701
- VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
2702
- VContainer: typeof import('vuetify/components')['VContainer']
2703
- VCol: typeof import('vuetify/components')['VCol']
2704
- VRow: typeof import('vuetify/components')['VRow']
2705
- VSpacer: typeof import('vuetify/components')['VSpacer']
2706
- VPicker: typeof import('vuetify/labs/components')['VPicker']
2707
- VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2708
+ VColorInput: typeof import('vuetify/labs/components')['VColorInput']
2709
+ VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2710
+ VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2708
2711
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
2709
2712
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
2710
2713
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
@@ -2712,18 +2715,18 @@ declare module 'vue' {
2712
2715
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
2713
2716
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
2714
2717
  VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
2715
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2716
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2718
+ VPicker: typeof import('vuetify/labs/components')['VPicker']
2719
+ VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2717
2720
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2718
2721
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2719
2722
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2720
- VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
2721
- VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
2722
- VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
2723
+ VDateInput: typeof import('vuetify/labs/components')['VDateInput']
2724
+ VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
2723
2725
  VTreeview: typeof import('vuetify/labs/components')['VTreeview']
2724
2726
  VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
2725
2727
  VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
2726
- VDateInput: typeof import('vuetify/labs/components')['VDateInput']
2727
- VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
2728
+ VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
2729
+ VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
2730
+ VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
2728
2731
  }
2729
2732
  }
package/lib/framework.js CHANGED
@@ -109,7 +109,7 @@ export function createVuetify() {
109
109
  };
110
110
  });
111
111
  }
112
- export const version = "3.8.4";
112
+ export const version = "3.8.6";
113
113
  createVuetify.version = version;
114
114
 
115
115
  // Vue's inject() can only be used in setup
@@ -46,7 +46,8 @@ const aliases = {
46
46
  treeviewCollapse: 'mdi-menu-down',
47
47
  treeviewExpand: 'mdi-menu-right',
48
48
  eyeDropper: 'mdi-eyedropper',
49
- upload: 'mdi-cloud-upload'
49
+ upload: 'mdi-cloud-upload',
50
+ color: 'mdi-palette'
50
51
  };
51
52
  const mdi = {
52
53
  // Not using mergeProps here, functional components merge props by default (?)