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.
- package/dist/_component-variables-labs.sass +1 -0
- package/dist/json/attributes.json +3300 -2956
- package/dist/json/importMap-labs.json +24 -20
- package/dist/json/importMap.json +182 -182
- package/dist/json/tags.json +91 -0
- package/dist/json/web-types.json +6720 -5503
- package/dist/vuetify-labs.cjs +294 -51
- package/dist/vuetify-labs.css +4169 -4130
- package/dist/vuetify-labs.d.ts +2235 -1152
- package/dist/vuetify-labs.esm.js +294 -51
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +294 -51
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +22 -42
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +2580 -2544
- package/dist/vuetify.d.ts +532 -526
- package/dist/vuetify.esm.js +22 -42
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +22 -42
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +582 -579
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.d.ts +84 -84
- package/lib/components/VAutocomplete/VAutocomplete.js +0 -5
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VBottomSheet/VBottomSheet.css +1 -1
- package/lib/components/VBottomSheet/VBottomSheet.sass +1 -1
- package/lib/components/VBtn/VBtn.css +25 -0
- package/lib/components/VBtn/VBtn.sass +9 -0
- package/lib/components/VBtn/_variables.scss +1 -0
- package/lib/components/VCheckbox/VCheckbox.d.ts +12 -12
- package/lib/components/VCombobox/VCombobox.d.ts +84 -84
- package/lib/components/VFileInput/VFileInput.d.ts +30 -30
- package/lib/components/VInput/VInput.d.ts +12 -12
- package/lib/components/VList/VList.d.ts +3 -3
- package/lib/components/VList/VList.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.css +15 -4
- package/lib/components/VNumberInput/VNumberInput.d.ts +80 -80
- package/lib/components/VNumberInput/VNumberInput.sass +18 -6
- package/lib/components/VRadioGroup/VRadioGroup.d.ts +12 -12
- package/lib/components/VRangeSlider/VRangeSlider.d.ts +12 -12
- package/lib/components/VSelect/VSelect.d.ts +84 -84
- package/lib/components/VSelect/VSelect.js +6 -4
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSlider/VSlider.d.ts +12 -12
- package/lib/components/VSnackbarQueue/VSnackbarQueue.d.ts +3 -1
- package/lib/components/VSnackbarQueue/VSnackbarQueue.js.map +1 -1
- package/lib/components/VSwitch/VSwitch.d.ts +12 -12
- package/lib/components/VTextField/VTextField.d.ts +30 -30
- package/lib/components/VTextarea/VTextarea.d.ts +30 -30
- package/lib/components/VValidation/VValidation.d.ts +8 -8
- package/lib/composables/dateFormat.d.ts +24 -0
- package/lib/composables/dateFormat.js +112 -0
- package/lib/composables/dateFormat.js.map +1 -0
- package/lib/composables/validation.d.ts +6 -5
- package/lib/composables/validation.js +4 -29
- package/lib/composables/validation.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +71 -68
- package/lib/framework.js +1 -1
- package/lib/iconsets/mdi.js +2 -1
- package/lib/iconsets/mdi.js.map +1 -1
- package/lib/labs/VColorInput/VColorInput.css +4 -0
- package/lib/labs/VColorInput/VColorInput.d.ts +1767 -0
- package/lib/labs/VColorInput/VColorInput.js +129 -0
- package/lib/labs/VColorInput/VColorInput.js.map +1 -0
- package/lib/labs/VColorInput/VColorInput.sass +7 -0
- package/lib/labs/VColorInput/_variables.scss +2 -0
- package/lib/labs/VColorInput/index.d.ts +1 -0
- package/lib/labs/VColorInput/index.js +2 -0
- package/lib/labs/VColorInput/index.js.map +1 -0
- package/lib/labs/VDateInput/VDateInput.d.ts +130 -105
- package/lib/labs/VDateInput/VDateInput.js +43 -10
- package/lib/labs/VDateInput/VDateInput.js.map +1 -1
- package/lib/labs/components.d.ts +1 -0
- package/lib/labs/components.js +1 -0
- package/lib/labs/components.js.map +1 -1
- package/lib/labs/rules/rules.d.ts +9 -5
- package/lib/labs/rules/rules.js +73 -51
- package/lib/labs/rules/rules.js.map +1 -1
- package/lib/util/helpers.js +1 -1
- package/lib/util/helpers.js.map +1 -1
- 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":"AAAA;AAAA,SACSA,OAAO,0BAEhB;AACA,SAASC,KAAK,QAAQ,KAAK;AAAA,SAClBC,WAAW,EAAEC,YAAY,4BAElC;AAGA;AAKA,MAAMC,cAAc,CAAC;EACnBC,WAAWA,CACOC,KAAa;EAAE;EACfC,SAAiB,CAAC;EAAA,EAClC;IAAA,KAFgBD,KAAa,GAAbA,KAAa;IAAA,KACbC,SAAiB,GAAjBA,SAAiB;EAC/B;EAEJ,IAAIC,MAAMA,CAAA,EAAI;IACZ,OAAO,IAAI,CAACF,KAAK,CAACG,KAAK,CAAC,EAAE,CAAC,CACxBC,GAAG,CAACC,IAAI,IAAI,GAAGA,IAAI,GAAGA,IAAI,EAAE,CAAC,CAC7BC,IAAI,CAAC,IAAI,CAACL,SAAS,CAAC,CACpBM,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;EAC1B;EAEA,OAAOC,WAAWA,CAAEC,CAAM,EAAE;IAC1B,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE,OAAO,KAAK;IACvC,MAAMC,SAAS,GAAGD,CAAC,CAACE,WAAW,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAACC,KAAK,CAACP,IAAI,IAAIK,SAAS,CAACG,QAAQ,CAACR,IAAI,CAAC,CAAC,IAC5D,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAACS,IAAI,CAACT,IAAI,IAAII,CAAC,CAACI,QAAQ,CAACR,IAAI,CAAC,CAAC;EAClD;EAEA,OAAOU,KAAKA,CAAEN,CAAS,EAAE;IACvB,IAAI,CAACX,cAAc,CAACU,WAAW,CAACC,CAAC,CAAC,EAAE;MAClC,MAAM,IAAIO,KAAK,CAAC,IAAIP,CAAC,mDAAmD,CAAC;IAC3E;IACA,MAAMT,KAAK,GAAGS,CAAC,CAACE,WAAW,CAAC,CAAC,CAACR,KAAK,CAAC,EAAE,CAAC,CACpCc,MAAM,CAAC,CAACC,CAAC,EAAEC,CAAC,EAAEC,GAAG,KAAK,KAAK,CAACP,QAAQ,CAACK,CAAC,CAAC,IAAIE,GAAG,CAACC,OAAO,CAACH,CAAC,CAAC,KAAKC,CAAC,CAAC,CAChEb,IAAI,CAAC,EAAE,CAAC;IACX,MAAML,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAACqB,IAAI,CAACjB,IAAI,IAAII,CAAC,CAACI,QAAQ,CAACR,IAAI,CAAC,CAAE;IACjE,OAAO,IAAIP,cAAc,CAACE,KAAK,EAAEC,SAAS,CAAC;EAC7C;AACF;AAEA,OAAO,MAAMsB,mBAAmB,GAAG1B,YAAY,CAAC;EAC9C2B,WAAW,EAAE;IACXC,IAAI,EAAEC,MAAM;IACZC,SAAS,EAAGlB,CAAS,IAAK,CAACA,CAAC,IAAIX,cAAc,CAACU,WAAW,CAACC,CAAC;EAC9D;AACF,CAAC,EAAE,aAAa,CAAC;AAEjB,OAAO,SAASmB,aAAaA,CAAEC,KAAsB,EAAEC,MAAmB,EAAE;EAC1E,MAAMC,OAAO,GAAGrC,OAAO,CAAC,CAAC;EAEzB,SAASsC,eAAeA,CAAA,EAAI;IAC1B,MAAMC,mBAAmB,GAAGH,MAAM,CAACI,KAAK,IAAI,OAAO;IACnD,MAAMC,gBAAgB,GAAGC,IAAI,CAACC,cAAc,CAACJ,mBAAmB,EAAE;MAAEK,IAAI,EAAE,SAAS;MAAEC,KAAK,EAAE,SAAS;MAAEC,GAAG,EAAE;IAAU,CAAC,CAAC,CACrHtC,MAAM,CAAC6B,OAAO,CAACU,QAAQ,CAACV,OAAO,CAACW,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CACxDnC,OAAO,CAAC,0BAA0B,EAAE,IAAI,CAAC,CACzCA,OAAO,CAAC,0BAA0B,EAAE,IAAI,CAAC,CACzCA,OAAO,CAAC,2CAA2C,EAAE,MAAM,CAAC,CAC5DA,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAC1BA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAErB,IAAI,CAACT,cAAc,CAACU,WAAW,CAAC2B,gBAAgB,CAAC,EAAE;MACjDvC,WAAW,CAAC,qCAAqCqC,mBAAmB,kBAAkBE,gBAAgB,GAAG,CAAC;MAC1G,OAAO,YAAY;IACrB;IAEA,OAAOA,gBAAgB;EACzB;EAEA,MAAMQ,aAAa,GAAGhD,KAAK,CAAC,MAAM;IAChC,OAAOG,cAAc,CAACU,WAAW,CAACqB,KAAK,CAACL,WAAW,CAAC,GAChD1B,cAAc,CAACiB,KAAK,CAACc,KAAK,CAACL,WAAY,CAAC,GACxC1B,cAAc,CAACiB,KAAK,CAACiB,eAAe,CAAC,CAAC,CAAC;EAC7C,CAAC,CAAC;EAEF,SAASY,SAASA,CAAEC,UAAkB,EAAE;IACtC,SAASC,cAAcA,CAAEC,IAAY,EAAkC;MACrE,MAAMC,KAAK,GAAGD,IAAI,CAACE,IAAI,CAAC,CAAC,CAAC9C,KAAK,CAACwC,aAAa,CAACT,KAAK,CAACjC,SAAS,CAAC;MAE9D,OAAO;QACLiD,CAAC,EAAEC,MAAM,CAACH,KAAK,CAACL,aAAa,CAACT,KAAK,CAAClC,KAAK,CAACqB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD+B,CAAC,EAAED,MAAM,CAACH,KAAK,CAACL,aAAa,CAACT,KAAK,CAAClC,KAAK,CAACqB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACxDgC,CAAC,EAAEF,MAAM,CAACH,KAAK,CAACL,aAAa,CAACT,KAAK,CAAClC,KAAK,CAACqB,OAAO,CAAC,GAAG,CAAC,CAAC;MACzD,CAAC;IACH;IAEA,SAASiC,iBAAiBA,CAAEC,SAAiC,EAAE;MAC7D,MAAM;QAAEL,CAAC,EAAEZ,IAAI;QAAEc,CAAC,EAAEb,KAAK;QAAEc,CAAC,EAAEb;MAAI,CAAC,GAAGe,SAAS;MAC/C,IAAI,CAACjB,IAAI,IAAI,CAACC,KAAK,IAAI,CAACC,GAAG,EAAE,OAAO,IAAI;MACxC,IAAID,KAAK,GAAG,CAAC,IAAIA,KAAK,GAAG,EAAE,EAAE,OAAO,IAAI;MACxC,IAAIC,GAAG,GAAG,CAAC,IAAIA,GAAG,GAAG,EAAE,EAAE,OAAO,IAAI;MAEpC,OAAO;QAAEF,IAAI,EAAEkB,WAAW,CAAClB,IAAI,CAAC;QAAEC,KAAK;QAAEC;MAAI,CAAC;IAChD;IAEA,SAASgB,WAAWA,CAAElB,IAAY,EAAE;MAClC,MAAMmB,WAAW,GAAG1B,OAAO,CAAC2B,OAAO,CAAC3B,OAAO,CAAC4B,IAAI,CAAC,CAAC,CAAC;MACnD,IAAIrB,IAAI,GAAG,GAAG,IAAImB,WAAW,GAAG,GAAG,IAAI,EAAE,EAAE;QACzC,OAAOnB,IAAI;MACb;MAEA,MAAMsB,cAAc,GAAG,CAAC,EAAEH,WAAW,GAAG,GAAG,CAAC,GAAG,GAAG;MAElD,OAAOnB,IAAI,GAAG,EAAE,GACZsB,cAAc,GAAGtB,IAAI,GACpBsB,cAAc,GAAG,GAAG,GAAItB,IAAI;IACnC;IAEA,MAAMiB,SAAS,GAAGT,cAAc,CAACD,UAAU,CAAC;IAC5C,MAAMgB,cAAc,GAAGP,iBAAiB,CAACC,SAAS,CAAC;IAEnD,IAAI,CAACM,cAAc,EAAE,OAAO,IAAI;IAEhC,MAAM;MAAEvB,IAAI;MAAEC,KAAK;MAAEC;IAAI,CAAC,GAAGqB,cAAc;IAE3C,MAAMC,GAAG,GAAIrD,CAAS,IAAKiB,MAAM,CAACjB,CAAC,CAAC,CAACsD,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IAErD,OAAOhC,OAAO,CAACW,QAAQ,CAAC,GAAGJ,IAAI,IAAIwB,GAAG,CAACvB,KAAK,CAAC,IAAIuB,GAAG,CAACtB,GAAG,CAAC,EAAE,CAAC;EAC9D;EAEA,SAASwB,OAAOA,CAAEjB,IAAY,EAAE;IAC9B,OAAO,CAAC,CAACH,SAAS,CAACG,IAAI,CAAC;EAC1B;EAEA,SAASkB,UAAUA,CAAE/B,KAAc,EAAE;IACnC,MAAMc,KAAK,GAAGjB,OAAO,CAACmC,KAAK,CAAChC,KAAK,CAAC,CAAC/B,KAAK,CAAC,GAAG,CAAC;IAE7C,OAAOwC,aAAa,CAACT,KAAK,CAAClC,KAAK,CAACG,KAAK,CAAC,EAAE,CAAC,CACvCC,GAAG,CAACC,IAAI,IAAI2C,KAAK,CAAC,KAAK,CAAC3B,OAAO,CAAChB,IAAI,CAAC,CAAC,CAAC,CACvCC,IAAI,CAACqC,aAAa,CAACT,KAAK,CAACjC,SAAS,CAAC;EACxC;EAEA,OAAO;IACL+D,OAAO;IACPpB,SAAS;IACTqB,UAAU;IACVE,YAAY,EAAExE,KAAK,CAAC,MAAMgD,aAAa,CAACT,KAAK,CAAChC,MAAM;EACtD,CAAC;AACH","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
|
|
105
|
-
default: unknown extends Defaults["rules"] ? readonly
|
|
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";
|
|
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
|
-
|
|
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
|
|
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":[]}
|
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.
|
|
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";
|
package/lib/framework.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
2555
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2623
|
-
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
|
2624
|
+
VLabel: typeof import('vuetify/components')['VLabel']
|
|
2624
2625
|
VMessages: typeof import('vuetify/components')['VMessages']
|
|
2625
|
-
|
|
2626
|
+
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
|
2627
|
+
VMenu: typeof import('vuetify/components')['VMenu']
|
|
2626
2628
|
VOverlay: typeof import('vuetify/components')['VOverlay']
|
|
2627
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
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
|
-
|
|
2702
|
-
|
|
2703
|
-
|
|
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
|
-
|
|
2716
|
-
|
|
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
|
-
|
|
2721
|
-
|
|
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
|
-
|
|
2727
|
-
|
|
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
package/lib/iconsets/mdi.js
CHANGED
|
@@ -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 (?)
|