@vuetify/nightly 3.8.0-dev.2025-04-01 → 3.8.0-dev.2025-04-03
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -3
- package/dist/json/attributes.json +3801 -3801
- package/dist/json/importMap-labs.json +18 -18
- package/dist/json/importMap.json +180 -180
- package/dist/json/web-types.json +6824 -6824
- package/dist/vuetify-labs.cjs +56 -44
- package/dist/vuetify-labs.css +4799 -4802
- package/dist/vuetify-labs.d.ts +114 -75
- package/dist/vuetify-labs.esm.js +56 -44
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +56 -44
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +56 -44
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +2940 -2943
- package/dist/vuetify.d.ts +114 -75
- package/dist/vuetify.esm.js +56 -44
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +56 -44
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +85 -83
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.css +0 -1
- package/lib/components/VAutocomplete/VAutocomplete.js +11 -9
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +0 -1
- package/lib/components/VCombobox/VCombobox.css +0 -1
- package/lib/components/VCombobox/VCombobox.js +22 -20
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VCombobox/VCombobox.sass +0 -1
- package/lib/components/VField/VField.d.ts +3 -0
- package/lib/components/VField/VField.js +3 -2
- package/lib/components/VField/VField.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.d.ts +39 -12
- package/lib/components/VSelect/VSelect.css +0 -1
- package/lib/components/VSelect/VSelect.js +11 -9
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSelect/VSelect.sass +0 -1
- package/lib/components/VTextField/VTextField.d.ts +12 -3
- package/lib/composables/virtual.js +6 -1
- package/lib/composables/virtual.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +60 -60
- package/lib/framework.js +1 -1
- package/package.json +1 -1
package/dist/vuetify-labs.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v3.8.0-dev.2025-04-
|
2
|
+
* Vuetify v3.8.0-dev.2025-04-03
|
3
3
|
* Forged by John Leider
|
4
4
|
* Released under the MIT License.
|
5
5
|
*/
|
@@ -11736,7 +11736,7 @@
|
|
11736
11736
|
return props.error || props.disabled ? undefined : isActive.value && isFocused.value ? props.color : props.baseColor;
|
11737
11737
|
});
|
11738
11738
|
const iconColor = vue.computed(() => {
|
11739
|
-
if (!props.iconColor) return undefined;
|
11739
|
+
if (!props.iconColor || props.glow && !isFocused.value) return undefined;
|
11740
11740
|
return props.iconColor === true ? color.value : props.iconColor;
|
11741
11741
|
});
|
11742
11742
|
const {
|
@@ -11934,7 +11934,8 @@
|
|
11934
11934
|
})])]);
|
11935
11935
|
});
|
11936
11936
|
return {
|
11937
|
-
controlRef
|
11937
|
+
controlRef,
|
11938
|
+
fieldIconColor: iconColor
|
11938
11939
|
};
|
11939
11940
|
}
|
11940
11941
|
});
|
@@ -12284,7 +12285,12 @@
|
|
12284
12285
|
}
|
12285
12286
|
function calculateOffset(index) {
|
12286
12287
|
index = clamp(index, 0, items.value.length - 1);
|
12287
|
-
|
12288
|
+
const whole = Math.floor(index);
|
12289
|
+
const fraction = index % 1;
|
12290
|
+
const next = whole + 1;
|
12291
|
+
const wholeOffset = offsets[whole] || 0;
|
12292
|
+
const nextOffset = offsets[next] || wholeOffset;
|
12293
|
+
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
12288
12294
|
}
|
12289
12295
|
function calculateIndex(scrollTop) {
|
12290
12296
|
return binaryClosest(offsets, scrollTop);
|
@@ -12672,14 +12678,6 @@
|
|
12672
12678
|
const vTextFieldRef = vue.ref();
|
12673
12679
|
const vMenuRef = vue.ref();
|
12674
12680
|
const vVirtualScrollRef = vue.ref();
|
12675
|
-
const _menu = useProxiedModel(props, 'menu');
|
12676
|
-
const menu = vue.computed({
|
12677
|
-
get: () => _menu.value,
|
12678
|
-
set: v => {
|
12679
|
-
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
12680
|
-
_menu.value = v;
|
12681
|
-
}
|
12682
|
-
});
|
12683
12681
|
const {
|
12684
12682
|
items,
|
12685
12683
|
transformIn,
|
@@ -12695,7 +12693,6 @@
|
|
12695
12693
|
const form = useForm(props);
|
12696
12694
|
const selectedValues = vue.computed(() => model.value.map(selection => selection.value));
|
12697
12695
|
const isFocused = vue.shallowRef(false);
|
12698
|
-
const label = vue.computed(() => menu.value ? props.closeText : props.openText);
|
12699
12696
|
let keyboardLookupPrefix = '';
|
12700
12697
|
let keyboardLookupLastTime;
|
12701
12698
|
const displayItems = vue.computed(() => {
|
@@ -12705,6 +12702,16 @@
|
|
12705
12702
|
return items.value;
|
12706
12703
|
});
|
12707
12704
|
const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
|
12705
|
+
const _menu = useProxiedModel(props, 'menu');
|
12706
|
+
const menu = vue.computed({
|
12707
|
+
get: () => _menu.value,
|
12708
|
+
set: v => {
|
12709
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
12710
|
+
if (v && menuDisabled.value) return;
|
12711
|
+
_menu.value = v;
|
12712
|
+
}
|
12713
|
+
});
|
12714
|
+
const label = vue.computed(() => menu.value ? props.closeText : props.openText);
|
12708
12715
|
const computedMenuProps = vue.computed(() => {
|
12709
12716
|
return {
|
12710
12717
|
...props.menuProps,
|
@@ -13000,6 +13007,7 @@
|
|
13000
13007
|
}
|
13001
13008
|
return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? vue.createVNode(VIcon, {
|
13002
13009
|
"class": "v-select__menu-icon",
|
13010
|
+
"color": vTextFieldRef.value?.fieldIconColor,
|
13003
13011
|
"icon": props.menuIcon
|
13004
13012
|
}, null) : undefined]);
|
13005
13013
|
}
|
@@ -13203,17 +13211,8 @@
|
|
13203
13211
|
const listHasFocus = vue.shallowRef(false);
|
13204
13212
|
const vMenuRef = vue.ref();
|
13205
13213
|
const vVirtualScrollRef = vue.ref();
|
13206
|
-
const _menu = useProxiedModel(props, 'menu');
|
13207
|
-
const menu = vue.computed({
|
13208
|
-
get: () => _menu.value,
|
13209
|
-
set: v => {
|
13210
|
-
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
13211
|
-
_menu.value = v;
|
13212
|
-
}
|
13213
|
-
});
|
13214
13214
|
const selectionIndex = vue.shallowRef(-1);
|
13215
13215
|
const color = vue.computed(() => vTextFieldRef.value?.color);
|
13216
|
-
const label = vue.computed(() => menu.value ? props.closeText : props.openText);
|
13217
13216
|
const {
|
13218
13217
|
items,
|
13219
13218
|
transformIn,
|
@@ -13250,6 +13249,16 @@
|
|
13250
13249
|
return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
|
13251
13250
|
});
|
13252
13251
|
const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
|
13252
|
+
const _menu = useProxiedModel(props, 'menu');
|
13253
|
+
const menu = vue.computed({
|
13254
|
+
get: () => _menu.value,
|
13255
|
+
set: v => {
|
13256
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
13257
|
+
if (v && menuDisabled.value) return;
|
13258
|
+
_menu.value = v;
|
13259
|
+
}
|
13260
|
+
});
|
13261
|
+
const label = vue.computed(() => menu.value ? props.closeText : props.openText);
|
13253
13262
|
const listRef = vue.ref();
|
13254
13263
|
const listEvents = useScrolling(listRef, vTextFieldRef);
|
13255
13264
|
function onClear(e) {
|
@@ -13599,6 +13608,7 @@
|
|
13599
13608
|
}
|
13600
13609
|
return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? vue.createVNode(VIcon, {
|
13601
13610
|
"class": "v-autocomplete__menu-icon",
|
13611
|
+
"color": vTextFieldRef.value?.fieldIconColor,
|
13602
13612
|
"icon": props.menuIcon,
|
13603
13613
|
"onMousedown": onMousedownMenuIcon,
|
13604
13614
|
"onClick": noop,
|
@@ -17968,18 +17978,9 @@
|
|
17968
17978
|
const listHasFocus = vue.shallowRef(false);
|
17969
17979
|
const vMenuRef = vue.ref();
|
17970
17980
|
const vVirtualScrollRef = vue.ref();
|
17971
|
-
const _menu = useProxiedModel(props, 'menu');
|
17972
|
-
const menu = vue.computed({
|
17973
|
-
get: () => _menu.value,
|
17974
|
-
set: v => {
|
17975
|
-
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
17976
|
-
_menu.value = v;
|
17977
|
-
}
|
17978
|
-
});
|
17979
17981
|
const selectionIndex = vue.shallowRef(-1);
|
17980
17982
|
let cleared = false;
|
17981
17983
|
const color = vue.computed(() => vTextFieldRef.value?.color);
|
17982
|
-
const label = vue.computed(() => menu.value ? props.closeText : props.openText);
|
17983
17984
|
const {
|
17984
17985
|
items,
|
17985
17986
|
transformIn,
|
@@ -18023,6 +18024,27 @@
|
|
18023
18024
|
const counterValue = vue.computed(() => {
|
18024
18025
|
return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : props.multiple ? model.value.length : search.value.length;
|
18025
18026
|
});
|
18027
|
+
const {
|
18028
|
+
filteredItems,
|
18029
|
+
getMatches
|
18030
|
+
} = useFilter(props, items, () => isPristine.value ? '' : search.value);
|
18031
|
+
const displayItems = vue.computed(() => {
|
18032
|
+
if (props.hideSelected) {
|
18033
|
+
return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
|
18034
|
+
}
|
18035
|
+
return filteredItems.value;
|
18036
|
+
});
|
18037
|
+
const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
|
18038
|
+
const _menu = useProxiedModel(props, 'menu');
|
18039
|
+
const menu = vue.computed({
|
18040
|
+
get: () => _menu.value,
|
18041
|
+
set: v => {
|
18042
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
18043
|
+
if (v && menuDisabled.value) return;
|
18044
|
+
_menu.value = v;
|
18045
|
+
}
|
18046
|
+
});
|
18047
|
+
const label = vue.computed(() => menu.value ? props.closeText : props.openText);
|
18026
18048
|
vue.watch(_search, value => {
|
18027
18049
|
if (cleared) {
|
18028
18050
|
// wait for clear to finish, VTextField sets _search to null
|
@@ -18038,22 +18060,11 @@
|
|
18038
18060
|
_search.value = value[0]?.title ?? '';
|
18039
18061
|
}
|
18040
18062
|
});
|
18041
|
-
const {
|
18042
|
-
filteredItems,
|
18043
|
-
getMatches
|
18044
|
-
} = useFilter(props, items, () => isPristine.value ? '' : search.value);
|
18045
|
-
const displayItems = vue.computed(() => {
|
18046
|
-
if (props.hideSelected) {
|
18047
|
-
return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
|
18048
|
-
}
|
18049
|
-
return filteredItems.value;
|
18050
|
-
});
|
18051
18063
|
const selectedValues = vue.computed(() => model.value.map(selection => selection.value));
|
18052
18064
|
const highlightFirst = vue.computed(() => {
|
18053
18065
|
const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
|
18054
18066
|
return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
|
18055
18067
|
});
|
18056
|
-
const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
|
18057
18068
|
const listRef = vue.ref();
|
18058
18069
|
const listEvents = useScrolling(listRef, vTextFieldRef);
|
18059
18070
|
function onClear(e) {
|
@@ -18404,6 +18415,7 @@
|
|
18404
18415
|
}
|
18405
18416
|
return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? vue.createVNode(VIcon, {
|
18406
18417
|
"class": "v-combobox__menu-icon",
|
18418
|
+
"color": vTextFieldRef.value?.fieldIconColor,
|
18407
18419
|
"icon": props.menuIcon,
|
18408
18420
|
"onMousedown": onMousedownMenuIcon,
|
18409
18421
|
"onClick": noop,
|
@@ -31534,7 +31546,7 @@
|
|
31534
31546
|
};
|
31535
31547
|
});
|
31536
31548
|
}
|
31537
|
-
const version$1 = "3.8.0-dev.2025-04-
|
31549
|
+
const version$1 = "3.8.0-dev.2025-04-03";
|
31538
31550
|
createVuetify$1.version = version$1;
|
31539
31551
|
|
31540
31552
|
// Vue's inject() can only be used in setup
|
@@ -31819,7 +31831,7 @@
|
|
31819
31831
|
|
31820
31832
|
/* eslint-disable local-rules/sort-imports */
|
31821
31833
|
|
31822
|
-
const version = "3.8.0-dev.2025-04-
|
31834
|
+
const version = "3.8.0-dev.2025-04-03";
|
31823
31835
|
|
31824
31836
|
/* eslint-disable local-rules/sort-imports */
|
31825
31837
|
|