@vuetify/nightly 3.7.15-dev.2025-03-06 → 3.7.15-dev.2025-03-07

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.
@@ -2,19 +2,33 @@
2
2
  /* eslint-disable no-labels */
3
3
 
4
4
  // Utilities
5
- import { computed, shallowRef, unref, watchEffect } from 'vue';
5
+ import { computed, shallowRef, unref, watchEffect, createVNode as _createVNode, Fragment as _Fragment } from 'vue';
6
6
  import { getPropertyFromItem, propsFactory, wrapInArray } from "../util/index.js"; // Types
7
7
  /**
8
- * - match without highlight
9
- * - single match (index), length already known
10
- * - single match (start, end)
11
- * - multiple matches (start, end), probably shouldn't overlap
8
+ * - boolean: match without highlight
9
+ * - number: single match (index), length already known
10
+ * - []: single match (start, end)
11
+ * - [][]: multiple matches (start, end), shouldn't overlap
12
12
  */
13
13
  // Composables
14
14
  export const defaultFilter = (value, query, item) => {
15
15
  if (value == null || query == null) return -1;
16
- return value.toString().toLocaleLowerCase().indexOf(query.toString().toLocaleLowerCase());
16
+ value = value.toString().toLocaleLowerCase();
17
+ query = query.toString().toLocaleLowerCase();
18
+ const result = [];
19
+ let idx = value.indexOf(query);
20
+ while (~idx) {
21
+ result.push([idx, idx + query.length]);
22
+ idx = value.indexOf(query, idx + query.length);
23
+ }
24
+ return result.length ? result : -1;
17
25
  };
26
+ function normaliseMatch(match, query) {
27
+ if (match == null || typeof match === 'boolean' || match === -1) return;
28
+ if (typeof match === 'number') return [[match, query.length]];
29
+ if (Array.isArray(match[0])) return match;
30
+ return [match];
31
+ }
18
32
  export const makeFilterProps = propsFactory({
19
33
  customFilter: Function,
20
34
  customKeyFilter: Object,
@@ -45,7 +59,7 @@ export function filterItems(items, query, options) {
45
59
  const keyFilter = options?.customKeyFilter?.[key];
46
60
  match = keyFilter ? keyFilter(value, query, item) : filter(value, query, item);
47
61
  if (match !== -1 && match !== false) {
48
- if (keyFilter) customMatches[key] = match;else defaultMatches[key] = match;
62
+ if (keyFilter) customMatches[key] = normaliseMatch(match, query);else defaultMatches[key] = normaliseMatch(match, query);
49
63
  } else if (options?.filterMode === 'every') {
50
64
  continue loop;
51
65
  }
@@ -53,7 +67,7 @@ export function filterItems(items, query, options) {
53
67
  } else {
54
68
  match = filter(item, query, item);
55
69
  if (match !== -1 && match !== false) {
56
- defaultMatches.title = match;
70
+ defaultMatches.title = normaliseMatch(match, query);
57
71
  }
58
72
  }
59
73
  const defaultMatchesLength = Object.keys(defaultMatches).length;
@@ -113,4 +127,21 @@ export function useFilter(props, items, query, options) {
113
127
  getMatches
114
128
  };
115
129
  }
130
+ export function highlightResult(name, text, matches) {
131
+ if (matches == null || !matches.length) return text;
132
+ return matches.map((match, i) => {
133
+ const start = i === 0 ? 0 : matches[i - 1][1];
134
+ const result = [_createVNode("span", {
135
+ "class": `${name}__unmask`
136
+ }, [text.slice(start, match[0])]), _createVNode("span", {
137
+ "class": `${name}__mask`
138
+ }, [text.slice(match[0], match[1])])];
139
+ if (i === matches.length - 1) {
140
+ result.push(_createVNode("span", {
141
+ "class": `${name}__unmask`
142
+ }, [text.slice(match[1])]));
143
+ }
144
+ return _createVNode(_Fragment, null, [result]);
145
+ });
146
+ }
116
147
  //# sourceMappingURL=filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","names":["computed","shallowRef","unref","watchEffect","getPropertyFromItem","propsFactory","wrapInArray","defaultFilter","value","query","item","toString","toLocaleLowerCase","indexOf","makeFilterProps","customFilter","Function","customKeyFilter","Object","filterKeys","Array","String","filterMode","type","default","noFilter","Boolean","filterItems","items","options","array","filter","keys","customFiltersLength","length","loop","i","transformed","customMatches","defaultMatches","match","key","keyFilter","title","defaultMatchesLength","customMatchesLength","push","index","matches","useFilter","props","filteredItems","filteredMatches","Map","transformedItems","transform","map","_query","strQuery","results","originalItems","_filteredItems","_filteredMatches","forEach","_ref","set","getMatches","get"],"sources":["../../src/composables/filter.ts"],"sourcesContent":["/* eslint-disable max-statements */\n/* eslint-disable no-labels */\n\n// Utilities\nimport { computed, shallowRef, unref, watchEffect } from 'vue'\nimport { getPropertyFromItem, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { MaybeRef } from '@/util'\n\n/**\n * - match without highlight\n * - single match (index), length already known\n * - single match (start, end)\n * - multiple matches (start, end), probably shouldn't overlap\n */\nexport type FilterMatch = boolean | number | [number, number] | [number, number][]\nexport type FilterFunction = (value: string, query: string, item?: InternalItem) => FilterMatch\nexport type FilterKeyFunctions = Record<string, FilterFunction>\nexport type FilterKeys = string | string[]\nexport type FilterMode = 'some' | 'every' | 'union' | 'intersection'\n\nexport interface FilterProps {\n customFilter?: FilterFunction\n customKeyFilter?: FilterKeyFunctions\n filterKeys?: FilterKeys\n filterMode?: FilterMode\n noFilter?: boolean\n}\n\nexport interface InternalItem<T = any> {\n value: any\n raw: T\n}\n\n// Composables\nexport const defaultFilter: FilterFunction = (value, query, item) => {\n if (value == null || query == null) return -1\n\n return value.toString().toLocaleLowerCase().indexOf(query.toString().toLocaleLowerCase())\n}\n\nexport const makeFilterProps = propsFactory({\n customFilter: Function as PropType<FilterFunction>,\n customKeyFilter: Object as PropType<FilterKeyFunctions>,\n filterKeys: [Array, String] as PropType<FilterKeys>,\n filterMode: {\n type: String as PropType<FilterMode>,\n default: 'intersection',\n },\n noFilter: Boolean,\n}, 'filter')\n\nexport function filterItems (\n items: readonly (readonly [item: InternalItem, transformed: {}])[] | readonly InternalItem[],\n query: string,\n options?: {\n customKeyFilter?: FilterKeyFunctions\n default?: FilterFunction\n filterKeys?: FilterKeys\n filterMode?: FilterMode\n noFilter?: boolean\n },\n) {\n const array: { index: number, matches: Record<string, FilterMatch> }[] = []\n // always ensure we fall back to a functioning filter\n const filter = options?.default ?? defaultFilter\n const keys = options?.filterKeys ? wrapInArray(options.filterKeys) : false\n const customFiltersLength = Object.keys(options?.customKeyFilter ?? {}).length\n\n if (!items?.length) return array\n\n loop:\n for (let i = 0; i < items.length; i++) {\n const [item, transformed = item] = wrapInArray(items[i]) as readonly [InternalItem, {}]\n const customMatches: Record<string, FilterMatch> = {}\n const defaultMatches: Record<string, FilterMatch> = {}\n let match: FilterMatch = -1\n\n if ((query || customFiltersLength > 0) && !options?.noFilter) {\n if (typeof item === 'object') {\n const filterKeys = keys || Object.keys(transformed)\n\n for (const key of filterKeys) {\n const value = getPropertyFromItem(transformed, key)\n const keyFilter = options?.customKeyFilter?.[key]\n\n match = keyFilter\n ? keyFilter(value, query, item)\n : filter(value, query, item)\n\n if (match !== -1 && match !== false) {\n if (keyFilter) customMatches[key] = match\n else defaultMatches[key] = match\n } else if (options?.filterMode === 'every') {\n continue loop\n }\n }\n } else {\n match = filter(item, query, item)\n if (match !== -1 && match !== false) {\n defaultMatches.title = match\n }\n }\n\n const defaultMatchesLength = Object.keys(defaultMatches).length\n const customMatchesLength = Object.keys(customMatches).length\n\n if (!defaultMatchesLength && !customMatchesLength) continue\n\n if (\n options?.filterMode === 'union' &&\n customMatchesLength !== customFiltersLength &&\n !defaultMatchesLength\n ) continue\n\n if (\n options?.filterMode === 'intersection' &&\n (\n customMatchesLength !== customFiltersLength ||\n !defaultMatchesLength\n )\n ) continue\n }\n\n array.push({ index: i, matches: { ...defaultMatches, ...customMatches } })\n }\n\n return array\n}\n\nexport function useFilter <T extends InternalItem> (\n props: FilterProps,\n items: MaybeRef<T[]>,\n query: Ref<string | undefined> | (() => string | undefined),\n options?: {\n transform?: (item: T) => {}\n customKeyFilter?: MaybeRef<FilterKeyFunctions | undefined>\n }\n) {\n const filteredItems: Ref<T[]> = shallowRef([])\n const filteredMatches: Ref<Map<unknown, Record<string, FilterMatch>>> = shallowRef(new Map())\n const transformedItems = computed(() => (\n options?.transform\n ? unref(items).map(item => ([item, options.transform!(item)] as const))\n : unref(items)\n ))\n\n watchEffect(() => {\n const _query = typeof query === 'function' ? query() : unref(query)\n const strQuery = (\n typeof _query !== 'string' &&\n typeof _query !== 'number'\n ) ? '' : String(_query)\n\n const results = filterItems(\n transformedItems.value,\n strQuery,\n {\n customKeyFilter: {\n ...props.customKeyFilter,\n ...unref(options?.customKeyFilter),\n },\n default: props.customFilter,\n filterKeys: props.filterKeys,\n filterMode: props.filterMode,\n noFilter: props.noFilter,\n },\n )\n\n const originalItems = unref(items)\n\n const _filteredItems: typeof filteredItems['value'] = []\n const _filteredMatches: typeof filteredMatches['value'] = new Map()\n results.forEach(({ index, matches }) => {\n const item = originalItems[index]\n _filteredItems.push(item)\n _filteredMatches.set(item.value, matches)\n })\n filteredItems.value = _filteredItems\n filteredMatches.value = _filteredMatches\n })\n\n function getMatches (item: T) {\n return filteredMatches.value.get(item.value)\n }\n\n return { filteredItems, filteredMatches, getMatches }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"filter.js","names":["computed","shallowRef","unref","watchEffect","createVNode","_createVNode","Fragment","_Fragment","getPropertyFromItem","propsFactory","wrapInArray","defaultFilter","value","query","item","toString","toLocaleLowerCase","result","idx","indexOf","push","length","normaliseMatch","match","Array","isArray","makeFilterProps","customFilter","Function","customKeyFilter","Object","filterKeys","String","filterMode","type","default","noFilter","Boolean","filterItems","items","options","array","filter","keys","customFiltersLength","loop","i","transformed","customMatches","defaultMatches","key","keyFilter","title","defaultMatchesLength","customMatchesLength","index","matches","useFilter","props","filteredItems","filteredMatches","Map","transformedItems","transform","map","_query","strQuery","results","originalItems","_filteredItems","_filteredMatches","forEach","_ref","set","getMatches","get","highlightResult","name","text","start","slice"],"sources":["../../src/composables/filter.tsx"],"sourcesContent":["/* eslint-disable max-statements */\n/* eslint-disable no-labels */\n\n// Utilities\nimport { computed, shallowRef, unref, watchEffect } from 'vue'\nimport { getPropertyFromItem, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { MaybeRef } from '@/util'\n\n/**\n * - boolean: match without highlight\n * - number: single match (index), length already known\n * - []: single match (start, end)\n * - [][]: multiple matches (start, end), shouldn't overlap\n */\nexport type FilterMatchArraySingle = readonly [number, number]\nexport type FilterMatchArrayMultiple = readonly FilterMatchArraySingle[]\nexport type FilterMatchArray = FilterMatchArraySingle | FilterMatchArrayMultiple\nexport type FilterMatch = boolean | number | FilterMatchArray\nexport type FilterFunction = (value: string, query: string, item?: InternalItem) => FilterMatch\nexport type FilterKeyFunctions = Record<string, FilterFunction>\nexport type FilterKeys = string | string[]\nexport type FilterMode = 'some' | 'every' | 'union' | 'intersection'\n\nexport interface FilterProps {\n customFilter?: FilterFunction\n customKeyFilter?: FilterKeyFunctions\n filterKeys?: FilterKeys\n filterMode?: FilterMode\n noFilter?: boolean\n}\n\nexport interface InternalItem<T = any> {\n value: any\n raw: T\n}\n\n// Composables\nexport const defaultFilter: FilterFunction = (value, query, item) => {\n if (value == null || query == null) return -1\n\n value = value.toString().toLocaleLowerCase()\n query = query.toString().toLocaleLowerCase()\n\n const result = []\n let idx = value.indexOf(query)\n while (~idx) {\n result.push([idx, idx + query.length] as const)\n\n idx = value.indexOf(query, idx + query.length)\n }\n\n return result.length ? result : -1\n}\n\nfunction normaliseMatch (match: FilterMatch, query: string): FilterMatchArrayMultiple | undefined {\n if (match == null || typeof match === 'boolean' || match === -1) return\n if (typeof match === 'number') return [[match, query.length]]\n if (Array.isArray(match[0])) return match as FilterMatchArrayMultiple\n return [match] as FilterMatchArrayMultiple\n}\n\nexport const makeFilterProps = propsFactory({\n customFilter: Function as PropType<FilterFunction>,\n customKeyFilter: Object as PropType<FilterKeyFunctions>,\n filterKeys: [Array, String] as PropType<FilterKeys>,\n filterMode: {\n type: String as PropType<FilterMode>,\n default: 'intersection',\n },\n noFilter: Boolean,\n}, 'filter')\n\nexport function filterItems (\n items: readonly (readonly [item: InternalItem, transformed: {}])[] | readonly InternalItem[],\n query: string,\n options?: {\n customKeyFilter?: FilterKeyFunctions\n default?: FilterFunction\n filterKeys?: FilterKeys\n filterMode?: FilterMode\n noFilter?: boolean\n },\n) {\n const array: { index: number, matches: Record<string, FilterMatchArrayMultiple | undefined> }[] = []\n // always ensure we fall back to a functioning filter\n const filter = options?.default ?? defaultFilter\n const keys = options?.filterKeys ? wrapInArray(options.filterKeys) : false\n const customFiltersLength = Object.keys(options?.customKeyFilter ?? {}).length\n\n if (!items?.length) return array\n\n loop:\n for (let i = 0; i < items.length; i++) {\n const [item, transformed = item] = wrapInArray(items[i]) as readonly [InternalItem, {}]\n const customMatches: Record<string, FilterMatchArrayMultiple | undefined> = {}\n const defaultMatches: Record<string, FilterMatchArrayMultiple | undefined> = {}\n let match: FilterMatch = -1\n\n if ((query || customFiltersLength > 0) && !options?.noFilter) {\n if (typeof item === 'object') {\n const filterKeys = keys || Object.keys(transformed)\n\n for (const key of filterKeys) {\n const value = getPropertyFromItem(transformed, key)\n const keyFilter = options?.customKeyFilter?.[key]\n\n match = keyFilter\n ? keyFilter(value, query, item)\n : filter(value, query, item)\n\n if (match !== -1 && match !== false) {\n if (keyFilter) customMatches[key] = normaliseMatch(match, query)\n else defaultMatches[key] = normaliseMatch(match, query)\n } else if (options?.filterMode === 'every') {\n continue loop\n }\n }\n } else {\n match = filter(item, query, item)\n if (match !== -1 && match !== false) {\n defaultMatches.title = normaliseMatch(match, query)\n }\n }\n\n const defaultMatchesLength = Object.keys(defaultMatches).length\n const customMatchesLength = Object.keys(customMatches).length\n\n if (!defaultMatchesLength && !customMatchesLength) continue\n\n if (\n options?.filterMode === 'union' &&\n customMatchesLength !== customFiltersLength &&\n !defaultMatchesLength\n ) continue\n\n if (\n options?.filterMode === 'intersection' &&\n (\n customMatchesLength !== customFiltersLength ||\n !defaultMatchesLength\n )\n ) continue\n }\n\n array.push({ index: i, matches: { ...defaultMatches, ...customMatches } })\n }\n\n return array\n}\n\nexport function useFilter <T extends InternalItem> (\n props: FilterProps,\n items: MaybeRef<T[]>,\n query: Ref<string | undefined> | (() => string | undefined),\n options?: {\n transform?: (item: T) => {}\n customKeyFilter?: MaybeRef<FilterKeyFunctions | undefined>\n }\n) {\n const filteredItems = shallowRef<T[]>([])\n const filteredMatches = shallowRef(new Map<unknown, Record<string, FilterMatchArrayMultiple | undefined>>())\n const transformedItems = computed(() => (\n options?.transform\n ? unref(items).map(item => ([item, options.transform!(item)] as const))\n : unref(items)\n ))\n\n watchEffect(() => {\n const _query = typeof query === 'function' ? query() : unref(query)\n const strQuery = (\n typeof _query !== 'string' &&\n typeof _query !== 'number'\n ) ? '' : String(_query)\n\n const results = filterItems(\n transformedItems.value,\n strQuery,\n {\n customKeyFilter: {\n ...props.customKeyFilter,\n ...unref(options?.customKeyFilter),\n },\n default: props.customFilter,\n filterKeys: props.filterKeys,\n filterMode: props.filterMode,\n noFilter: props.noFilter,\n },\n )\n\n const originalItems = unref(items)\n\n const _filteredItems: typeof filteredItems['value'] = []\n const _filteredMatches: typeof filteredMatches['value'] = new Map()\n results.forEach(({ index, matches }) => {\n const item = originalItems[index]\n _filteredItems.push(item)\n _filteredMatches.set(item.value, matches)\n })\n filteredItems.value = _filteredItems\n filteredMatches.value = _filteredMatches\n })\n\n function getMatches (item: T) {\n return filteredMatches.value.get(item.value)\n }\n\n return { filteredItems, filteredMatches, getMatches }\n}\n\nexport function highlightResult (name: string, text: string, matches: FilterMatchArrayMultiple | undefined) {\n if (matches == null || !matches.length) return text\n\n return matches.map((match, i) => {\n const start = i === 0 ? 0 : matches[i - 1][1]\n const result = [\n <span class={ `${name}__unmask` }>{ text.slice(start, match[0]) }</span>,\n <span class={ `${name}__mask` }>{ text.slice(match[0], match[1]) }</span>,\n ]\n if (i === matches.length - 1) {\n result.push(<span class={ `${name}__unmask` }>{ text.slice(match[1]) }</span>)\n }\n return <>{ result }</>\n })\n}\n"],"mappings":"AAAA;AACA;;AAEA;AACA,SAASA,QAAQ,EAAEC,UAAU,EAAEC,KAAK,EAAEC,WAAW,EAAAC,WAAA,IAAAC,YAAA,EAAAC,QAAA,IAAAC,SAAA,QAAQ,KAAK;AAAA,SACrDC,mBAAmB,EAAEC,YAAY,EAAEC,WAAW,4BAEvD;AAIA;AACA;AACA;AACA;AACA;AACA;AAuBA;AACA,OAAO,MAAMC,aAA6B,GAAGA,CAACC,KAAK,EAAEC,KAAK,EAAEC,IAAI,KAAK;EACnE,IAAIF,KAAK,IAAI,IAAI,IAAIC,KAAK,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;EAE7CD,KAAK,GAAGA,KAAK,CAACG,QAAQ,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;EAC5CH,KAAK,GAAGA,KAAK,CAACE,QAAQ,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;EAE5C,MAAMC,MAAM,GAAG,EAAE;EACjB,IAAIC,GAAG,GAAGN,KAAK,CAACO,OAAO,CAACN,KAAK,CAAC;EAC9B,OAAO,CAACK,GAAG,EAAE;IACXD,MAAM,CAACG,IAAI,CAAC,CAACF,GAAG,EAAEA,GAAG,GAAGL,KAAK,CAACQ,MAAM,CAAU,CAAC;IAE/CH,GAAG,GAAGN,KAAK,CAACO,OAAO,CAACN,KAAK,EAAEK,GAAG,GAAGL,KAAK,CAACQ,MAAM,CAAC;EAChD;EAEA,OAAOJ,MAAM,CAACI,MAAM,GAAGJ,MAAM,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,SAASK,cAAcA,CAAEC,KAAkB,EAAEV,KAAa,EAAwC;EAChG,IAAIU,KAAK,IAAI,IAAI,IAAI,OAAOA,KAAK,KAAK,SAAS,IAAIA,KAAK,KAAK,CAAC,CAAC,EAAE;EACjE,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE,OAAO,CAAC,CAACA,KAAK,EAAEV,KAAK,CAACQ,MAAM,CAAC,CAAC;EAC7D,IAAIG,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAOA,KAAK;EACzC,OAAO,CAACA,KAAK,CAAC;AAChB;AAEA,OAAO,MAAMG,eAAe,GAAGjB,YAAY,CAAC;EAC1CkB,YAAY,EAAEC,QAAoC;EAClDC,eAAe,EAAEC,MAAsC;EACvDC,UAAU,EAAE,CAACP,KAAK,EAAEQ,MAAM,CAAyB;EACnDC,UAAU,EAAE;IACVC,IAAI,EAAEF,MAA8B;IACpCG,OAAO,EAAE;EACX,CAAC;EACDC,QAAQ,EAAEC;AACZ,CAAC,EAAE,QAAQ,CAAC;AAEZ,OAAO,SAASC,WAAWA,CACzBC,KAA4F,EAC5F1B,KAAa,EACb2B,OAMC,EACD;EACA,MAAMC,KAAyF,GAAG,EAAE;EACpG;EACA,MAAMC,MAAM,GAAGF,OAAO,EAAEL,OAAO,IAAIxB,aAAa;EAChD,MAAMgC,IAAI,GAAGH,OAAO,EAAET,UAAU,GAAGrB,WAAW,CAAC8B,OAAO,CAACT,UAAU,CAAC,GAAG,KAAK;EAC1E,MAAMa,mBAAmB,GAAGd,MAAM,CAACa,IAAI,CAACH,OAAO,EAAEX,eAAe,IAAI,CAAC,CAAC,CAAC,CAACR,MAAM;EAE9E,IAAI,CAACkB,KAAK,EAAElB,MAAM,EAAE,OAAOoB,KAAK;EAEhCI,IAAI,EACJ,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,KAAK,CAAClB,MAAM,EAAEyB,CAAC,EAAE,EAAE;IACrC,MAAM,CAAChC,IAAI,EAAEiC,WAAW,GAAGjC,IAAI,CAAC,GAAGJ,WAAW,CAAC6B,KAAK,CAACO,CAAC,CAAC,CAAgC;IACvF,MAAME,aAAmE,GAAG,CAAC,CAAC;IAC9E,MAAMC,cAAoE,GAAG,CAAC,CAAC;IAC/E,IAAI1B,KAAkB,GAAG,CAAC,CAAC;IAE3B,IAAI,CAACV,KAAK,IAAI+B,mBAAmB,GAAG,CAAC,KAAK,CAACJ,OAAO,EAAEJ,QAAQ,EAAE;MAC5D,IAAI,OAAOtB,IAAI,KAAK,QAAQ,EAAE;QAC5B,MAAMiB,UAAU,GAAGY,IAAI,IAAIb,MAAM,CAACa,IAAI,CAACI,WAAW,CAAC;QAEnD,KAAK,MAAMG,GAAG,IAAInB,UAAU,EAAE;UAC5B,MAAMnB,KAAK,GAAGJ,mBAAmB,CAACuC,WAAW,EAAEG,GAAG,CAAC;UACnD,MAAMC,SAAS,GAAGX,OAAO,EAAEX,eAAe,GAAGqB,GAAG,CAAC;UAEjD3B,KAAK,GAAG4B,SAAS,GACbA,SAAS,CAACvC,KAAK,EAAEC,KAAK,EAAEC,IAAI,CAAC,GAC7B4B,MAAM,CAAC9B,KAAK,EAAEC,KAAK,EAAEC,IAAI,CAAC;UAE9B,IAAIS,KAAK,KAAK,CAAC,CAAC,IAAIA,KAAK,KAAK,KAAK,EAAE;YACnC,IAAI4B,SAAS,EAAEH,aAAa,CAACE,GAAG,CAAC,GAAG5B,cAAc,CAACC,KAAK,EAAEV,KAAK,CAAC,MAC3DoC,cAAc,CAACC,GAAG,CAAC,GAAG5B,cAAc,CAACC,KAAK,EAAEV,KAAK,CAAC;UACzD,CAAC,MAAM,IAAI2B,OAAO,EAAEP,UAAU,KAAK,OAAO,EAAE;YAC1C,SAASY,IAAI;UACf;QACF;MACF,CAAC,MAAM;QACLtB,KAAK,GAAGmB,MAAM,CAAC5B,IAAI,EAAED,KAAK,EAAEC,IAAI,CAAC;QACjC,IAAIS,KAAK,KAAK,CAAC,CAAC,IAAIA,KAAK,KAAK,KAAK,EAAE;UACnC0B,cAAc,CAACG,KAAK,GAAG9B,cAAc,CAACC,KAAK,EAAEV,KAAK,CAAC;QACrD;MACF;MAEA,MAAMwC,oBAAoB,GAAGvB,MAAM,CAACa,IAAI,CAACM,cAAc,CAAC,CAAC5B,MAAM;MAC/D,MAAMiC,mBAAmB,GAAGxB,MAAM,CAACa,IAAI,CAACK,aAAa,CAAC,CAAC3B,MAAM;MAE7D,IAAI,CAACgC,oBAAoB,IAAI,CAACC,mBAAmB,EAAE;MAEnD,IACEd,OAAO,EAAEP,UAAU,KAAK,OAAO,IAC/BqB,mBAAmB,KAAKV,mBAAmB,IAC3C,CAACS,oBAAoB,EACrB;MAEF,IACEb,OAAO,EAAEP,UAAU,KAAK,cAAc,KAEpCqB,mBAAmB,KAAKV,mBAAmB,IAC3C,CAACS,oBAAoB,CACtB,EACD;IACJ;IAEAZ,KAAK,CAACrB,IAAI,CAAC;MAAEmC,KAAK,EAAET,CAAC;MAAEU,OAAO,EAAE;QAAE,GAAGP,cAAc;QAAE,GAAGD;MAAc;IAAE,CAAC,CAAC;EAC5E;EAEA,OAAOP,KAAK;AACd;AAEA,OAAO,SAASgB,SAASA,CACvBC,KAAkB,EAClBnB,KAAoB,EACpB1B,KAA2D,EAC3D2B,OAGC,EACD;EACA,MAAMmB,aAAa,GAAG1D,UAAU,CAAM,EAAE,CAAC;EACzC,MAAM2D,eAAe,GAAG3D,UAAU,CAAC,IAAI4D,GAAG,CAAgE,CAAC,CAAC;EAC5G,MAAMC,gBAAgB,GAAG9D,QAAQ,CAAC,MAChCwC,OAAO,EAAEuB,SAAS,GACd7D,KAAK,CAACqC,KAAK,CAAC,CAACyB,GAAG,CAAClD,IAAI,IAAK,CAACA,IAAI,EAAE0B,OAAO,CAACuB,SAAS,CAAEjD,IAAI,CAAC,CAAW,CAAC,GACrEZ,KAAK,CAACqC,KAAK,CAChB,CAAC;EAEFpC,WAAW,CAAC,MAAM;IAChB,MAAM8D,MAAM,GAAG,OAAOpD,KAAK,KAAK,UAAU,GAAGA,KAAK,CAAC,CAAC,GAAGX,KAAK,CAACW,KAAK,CAAC;IACnE,MAAMqD,QAAQ,GACZ,OAAOD,MAAM,KAAK,QAAQ,IAC1B,OAAOA,MAAM,KAAK,QAAQ,GACxB,EAAE,GAAGjC,MAAM,CAACiC,MAAM,CAAC;IAEvB,MAAME,OAAO,GAAG7B,WAAW,CACzBwB,gBAAgB,CAAClD,KAAK,EACtBsD,QAAQ,EACR;MACErC,eAAe,EAAE;QACf,GAAG6B,KAAK,CAAC7B,eAAe;QACxB,GAAG3B,KAAK,CAACsC,OAAO,EAAEX,eAAe;MACnC,CAAC;MACDM,OAAO,EAAEuB,KAAK,CAAC/B,YAAY;MAC3BI,UAAU,EAAE2B,KAAK,CAAC3B,UAAU;MAC5BE,UAAU,EAAEyB,KAAK,CAACzB,UAAU;MAC5BG,QAAQ,EAAEsB,KAAK,CAACtB;IAClB,CACF,CAAC;IAED,MAAMgC,aAAa,GAAGlE,KAAK,CAACqC,KAAK,CAAC;IAElC,MAAM8B,cAA6C,GAAG,EAAE;IACxD,MAAMC,gBAAiD,GAAG,IAAIT,GAAG,CAAC,CAAC;IACnEM,OAAO,CAACI,OAAO,CAACC,IAAA,IAAwB;MAAA,IAAvB;QAAEjB,KAAK;QAAEC;MAAQ,CAAC,GAAAgB,IAAA;MACjC,MAAM1D,IAAI,GAAGsD,aAAa,CAACb,KAAK,CAAC;MACjCc,cAAc,CAACjD,IAAI,CAACN,IAAI,CAAC;MACzBwD,gBAAgB,CAACG,GAAG,CAAC3D,IAAI,CAACF,KAAK,EAAE4C,OAAO,CAAC;IAC3C,CAAC,CAAC;IACFG,aAAa,CAAC/C,KAAK,GAAGyD,cAAc;IACpCT,eAAe,CAAChD,KAAK,GAAG0D,gBAAgB;EAC1C,CAAC,CAAC;EAEF,SAASI,UAAUA,CAAE5D,IAAO,EAAE;IAC5B,OAAO8C,eAAe,CAAChD,KAAK,CAAC+D,GAAG,CAAC7D,IAAI,CAACF,KAAK,CAAC;EAC9C;EAEA,OAAO;IAAE+C,aAAa;IAAEC,eAAe;IAAEc;EAAW,CAAC;AACvD;AAEA,OAAO,SAASE,eAAeA,CAAEC,IAAY,EAAEC,IAAY,EAAEtB,OAA6C,EAAE;EAC1G,IAAIA,OAAO,IAAI,IAAI,IAAI,CAACA,OAAO,CAACnC,MAAM,EAAE,OAAOyD,IAAI;EAEnD,OAAOtB,OAAO,CAACQ,GAAG,CAAC,CAACzC,KAAK,EAAEuB,CAAC,KAAK;IAC/B,MAAMiC,KAAK,GAAGjC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAGU,OAAO,CAACV,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM7B,MAAM,GAAG,CAAAZ,YAAA;MAAA,SACC,GAAGwE,IAAI;IAAU,IAAKC,IAAI,CAACE,KAAK,CAACD,KAAK,EAAExD,KAAK,CAAC,CAAC,CAAC,CAAC,IAAAlB,YAAA;MAAA,SACjD,GAAGwE,IAAI;IAAQ,IAAKC,IAAI,CAACE,KAAK,CAACzD,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC,GACjE;IACD,IAAIuB,CAAC,KAAKU,OAAO,CAACnC,MAAM,GAAG,CAAC,EAAE;MAC5BJ,MAAM,CAACG,IAAI,CAAAf,YAAA;QAAA,SAAe,GAAGwE,IAAI;MAAU,IAAKC,IAAI,CAACE,KAAK,CAACzD,KAAK,CAAC,CAAC,CAAC,CAAC,EAAS,CAAC;IAChF;IACA,OAAAlB,YAAA,CAAAE,SAAA,SAAWU,MAAM;EACnB,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.7.15-dev.2025-03-06";
19
+ export const version = "3.7.15-dev.2025-03-07";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.js";
@@ -493,19 +493,20 @@ declare module 'vue' {
493
493
  VAppBar: typeof import('vuetify/components')['VAppBar']
494
494
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
495
495
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
496
- VAlert: typeof import('vuetify/components')['VAlert']
497
- VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
498
- VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
499
496
  VApp: typeof import('vuetify/components')['VApp']
500
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
501
- VAvatar: typeof import('vuetify/components')['VAvatar']
497
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
502
498
  VBadge: typeof import('vuetify/components')['VBadge']
499
+ VAlert: typeof import('vuetify/components')['VAlert']
500
+ VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
503
501
  VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
504
502
  VBanner: typeof import('vuetify/components')['VBanner']
505
503
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
506
504
  VBannerText: typeof import('vuetify/components')['VBannerText']
507
- VBtn: typeof import('vuetify/components')['VBtn']
505
+ VAvatar: typeof import('vuetify/components')['VAvatar']
508
506
  VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
507
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
508
+ VCheckbox: typeof import('vuetify/components')['VCheckbox']
509
+ VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
509
510
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
510
511
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
511
512
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
@@ -515,15 +516,21 @@ declare module 'vue' {
515
516
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
516
517
  VCardText: typeof import('vuetify/components')['VCardText']
517
518
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
519
+ VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
520
+ VBtn: typeof import('vuetify/components')['VBtn']
521
+ VColorPicker: typeof import('vuetify/components')['VColorPicker']
518
522
  VChip: typeof import('vuetify/components')['VChip']
519
- VCheckbox: typeof import('vuetify/components')['VCheckbox']
520
- VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
521
523
  VCarousel: typeof import('vuetify/components')['VCarousel']
522
524
  VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
523
- VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
524
- VCombobox: typeof import('vuetify/components')['VCombobox']
525
525
  VChipGroup: typeof import('vuetify/components')['VChipGroup']
526
- VCode: typeof import('vuetify/components')['VCode']
526
+ VCounter: typeof import('vuetify/components')['VCounter']
527
+ VDialog: typeof import('vuetify/components')['VDialog']
528
+ VDivider: typeof import('vuetify/components')['VDivider']
529
+ VCombobox: typeof import('vuetify/components')['VCombobox']
530
+ VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
531
+ VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
532
+ VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
533
+ VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
527
534
  VDataTable: typeof import('vuetify/components')['VDataTable']
528
535
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
529
536
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -531,10 +538,6 @@ declare module 'vue' {
531
538
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
532
539
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
533
540
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
534
- VCounter: typeof import('vuetify/components')['VCounter']
535
- VColorPicker: typeof import('vuetify/components')['VColorPicker']
536
- VDialog: typeof import('vuetify/components')['VDialog']
537
- VDivider: typeof import('vuetify/components')['VDivider']
538
541
  VDatePicker: typeof import('vuetify/components')['VDatePicker']
539
542
  VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
540
543
  VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
@@ -542,26 +545,26 @@ declare module 'vue' {
542
545
  VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
543
546
  VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
544
547
  VEmptyState: typeof import('vuetify/components')['VEmptyState']
545
- VFab: typeof import('vuetify/components')['VFab']
546
- VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
547
- VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
548
- VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
549
- VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
550
- VFooter: typeof import('vuetify/components')['VFooter']
551
- VFileInput: typeof import('vuetify/components')['VFileInput']
552
548
  VField: typeof import('vuetify/components')['VField']
553
549
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
554
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
550
+ VFooter: typeof import('vuetify/components')['VFooter']
551
+ VFileInput: typeof import('vuetify/components')['VFileInput']
552
+ VFab: typeof import('vuetify/components')['VFab']
555
553
  VIcon: typeof import('vuetify/components')['VIcon']
556
554
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
557
555
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
558
556
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
559
557
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
560
558
  VImg: typeof import('vuetify/components')['VImg']
559
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
560
+ VLabel: typeof import('vuetify/components')['VLabel']
561
561
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
562
562
  VItem: typeof import('vuetify/components')['VItem']
563
+ VMain: typeof import('vuetify/components')['VMain']
563
564
  VKbd: typeof import('vuetify/components')['VKbd']
564
565
  VInput: typeof import('vuetify/components')['VInput']
566
+ VMessages: typeof import('vuetify/components')['VMessages']
567
+ VMenu: typeof import('vuetify/components')['VMenu']
565
568
  VList: typeof import('vuetify/components')['VList']
566
569
  VListGroup: typeof import('vuetify/components')['VListGroup']
567
570
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -571,73 +574,70 @@ declare module 'vue' {
571
574
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
572
575
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
573
576
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
574
- VMain: typeof import('vuetify/components')['VMain']
575
- VLabel: typeof import('vuetify/components')['VLabel']
576
577
  VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
577
- VMenu: typeof import('vuetify/components')['VMenu']
578
- VMessages: typeof import('vuetify/components')['VMessages']
579
578
  VOtpInput: typeof import('vuetify/components')['VOtpInput']
580
579
  VPagination: typeof import('vuetify/components')['VPagination']
581
580
  VOverlay: typeof import('vuetify/components')['VOverlay']
581
+ VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
582
582
  VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
583
583
  VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
584
+ VSelect: typeof import('vuetify/components')['VSelect']
585
+ VCode: typeof import('vuetify/components')['VCode']
584
586
  VRating: typeof import('vuetify/components')['VRating']
585
- VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
586
587
  VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
587
- VSelect: typeof import('vuetify/components')['VSelect']
588
- VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
589
- VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
590
- VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
591
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
588
+ VSheet: typeof import('vuetify/components')['VSheet']
592
589
  VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
590
+ VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
593
591
  VSlider: typeof import('vuetify/components')['VSlider']
592
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
593
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
594
594
  VSwitch: typeof import('vuetify/components')['VSwitch']
595
+ VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
596
+ VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
595
597
  VTab: typeof import('vuetify/components')['VTab']
596
598
  VTabs: typeof import('vuetify/components')['VTabs']
597
599
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
598
600
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
601
+ VTextarea: typeof import('vuetify/components')['VTextarea']
599
602
  VStepper: typeof import('vuetify/components')['VStepper']
600
603
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
601
604
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
602
605
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
603
606
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
604
607
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
605
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
606
- VTextarea: typeof import('vuetify/components')['VTextarea']
607
608
  VTable: typeof import('vuetify/components')['VTable']
608
609
  VTextField: typeof import('vuetify/components')['VTextField']
609
610
  VTimeline: typeof import('vuetify/components')['VTimeline']
610
611
  VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
612
+ VTooltip: typeof import('vuetify/components')['VTooltip']
611
613
  VToolbar: typeof import('vuetify/components')['VToolbar']
612
614
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
613
615
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
614
- VTooltip: typeof import('vuetify/components')['VTooltip']
615
616
  VWindow: typeof import('vuetify/components')['VWindow']
616
617
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
617
618
  VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
618
619
  VDataIterator: typeof import('vuetify/components')['VDataIterator']
619
620
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
620
- VForm: typeof import('vuetify/components')['VForm']
621
621
  VContainer: typeof import('vuetify/components')['VContainer']
622
622
  VCol: typeof import('vuetify/components')['VCol']
623
623
  VRow: typeof import('vuetify/components')['VRow']
624
624
  VSpacer: typeof import('vuetify/components')['VSpacer']
625
+ VForm: typeof import('vuetify/components')['VForm']
625
626
  VHover: typeof import('vuetify/components')['VHover']
626
- VLazy: typeof import('vuetify/components')['VLazy']
627
627
  VLayout: typeof import('vuetify/components')['VLayout']
628
628
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
629
+ VLazy: typeof import('vuetify/components')['VLazy']
629
630
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
631
+ VNoSsr: typeof import('vuetify/components')['VNoSsr']
630
632
  VParallax: typeof import('vuetify/components')['VParallax']
631
633
  VRadio: typeof import('vuetify/components')['VRadio']
632
634
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
633
635
  VResponsive: typeof import('vuetify/components')['VResponsive']
634
- VNoSsr: typeof import('vuetify/components')['VNoSsr']
635
636
  VSparkline: typeof import('vuetify/components')['VSparkline']
636
637
  VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
637
638
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
638
- VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
639
639
  VValidation: typeof import('vuetify/components')['VValidation']
640
- VSheet: typeof import('vuetify/components')['VSheet']
640
+ VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
641
641
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
642
642
  VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
643
643
  VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
@@ -654,26 +654,26 @@ declare module 'vue' {
654
654
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
655
655
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
656
656
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
657
+ VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
658
+ VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
659
+ VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
657
660
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
658
661
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
659
662
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
660
663
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
661
664
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
662
665
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
663
- VPicker: typeof import('vuetify/labs/components')['VPicker']
664
- VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
665
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
666
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
667
666
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
668
667
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
669
668
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
670
- VTreeview: typeof import('vuetify/labs/components')['VTreeview']
671
- VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
672
- VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
673
- VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
669
+ VPicker: typeof import('vuetify/labs/components')['VPicker']
670
+ VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
674
671
  VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
675
672
  VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
676
673
  VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
674
+ VTreeview: typeof import('vuetify/labs/components')['VTreeview']
675
+ VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
676
+ VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
677
677
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
678
678
  VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
679
679
  VSnackbarQueue: typeof import('vuetify/labs/components')['VSnackbarQueue']
package/lib/framework.js CHANGED
@@ -107,7 +107,7 @@ export function createVuetify() {
107
107
  };
108
108
  });
109
109
  }
110
- export const version = "3.7.15-dev.2025-03-06";
110
+ export const version = "3.7.15-dev.2025-03-07";
111
111
  createVuetify.version = version;
112
112
 
113
113
  // Vue's inject() can only be used in setup
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vuetify/nightly",
3
3
  "description": "Vue Material Component Framework",
4
- "version": "3.7.15-dev.2025-03-06",
4
+ "version": "3.7.15-dev.2025-03-07",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"