@vuetify/nightly 3.8.0-beta.0-dev.2025-03-31 → 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 +10 -96
- package/dist/json/attributes.json +3028 -3028
- package/dist/json/importMap-labs.json +32 -32
- package/dist/json/importMap.json +154 -154
- package/dist/json/web-types.json +5664 -5664
- package/dist/vuetify-labs.cjs +73 -67
- package/dist/vuetify-labs.css +3832 -3835
- package/dist/vuetify-labs.d.ts +110 -71
- package/dist/vuetify-labs.esm.js +73 -67
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +73 -67
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +68 -58
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +4692 -4695
- package/dist/vuetify.d.ts +110 -71
- package/dist/vuetify.esm.js +68 -58
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +68 -58
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +88 -87
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.css +0 -1
- package/lib/components/VAutocomplete/VAutocomplete.js +16 -19
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +0 -1
- package/lib/components/VColorPicker/VColorPickerPreview.js +4 -3
- package/lib/components/VColorPicker/VColorPickerPreview.js.map +1 -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/VEmptyState/VEmptyState.js +3 -1
- package/lib/components/VEmptyState/VEmptyState.js.map +1 -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/VInput/VInput.css +11 -11
- package/lib/components/VInput/VInput.sass +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/entry-bundler.js.map +1 -1
- package/lib/framework.d.ts +56 -56
- package/lib/framework.js +1 -1
- package/lib/framework.js.map +1 -1
- package/lib/labs/VDateInput/VDateInput.js +3 -8
- package/lib/labs/VDateInput/VDateInput.js.map +1 -1
- package/lib/labs/VFileUpload/VFileUpload.js +2 -1
- package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
- package/lib/util/helpers.d.ts +1 -2
- package/lib/util/helpers.js +1 -11
- package/lib/util/helpers.js.map +1 -1
- package/package.json +1 -1
package/dist/vuetify.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v3.8.0-
|
2
|
+
* Vuetify v3.8.0-dev.2025-04-03
|
3
3
|
* Forged by John Leider
|
4
4
|
* Released under the MIT License.
|
5
5
|
*/
|
@@ -12001,7 +12001,7 @@
|
|
12001
12001
|
return props.error || props.disabled ? undefined : isActive.value && isFocused.value ? props.color : props.baseColor;
|
12002
12002
|
});
|
12003
12003
|
const iconColor = vue.computed(() => {
|
12004
|
-
if (!props.iconColor) return undefined;
|
12004
|
+
if (!props.iconColor || props.glow && !isFocused.value) return undefined;
|
12005
12005
|
return props.iconColor === true ? color.value : props.iconColor;
|
12006
12006
|
});
|
12007
12007
|
const {
|
@@ -12199,7 +12199,8 @@
|
|
12199
12199
|
})])]);
|
12200
12200
|
});
|
12201
12201
|
return {
|
12202
|
-
controlRef
|
12202
|
+
controlRef,
|
12203
|
+
fieldIconColor: iconColor
|
12203
12204
|
};
|
12204
12205
|
}
|
12205
12206
|
});
|
@@ -12549,7 +12550,12 @@
|
|
12549
12550
|
}
|
12550
12551
|
function calculateOffset(index) {
|
12551
12552
|
index = clamp(index, 0, items.value.length - 1);
|
12552
|
-
|
12553
|
+
const whole = Math.floor(index);
|
12554
|
+
const fraction = index % 1;
|
12555
|
+
const next = whole + 1;
|
12556
|
+
const wholeOffset = offsets[whole] || 0;
|
12557
|
+
const nextOffset = offsets[next] || wholeOffset;
|
12558
|
+
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
12553
12559
|
}
|
12554
12560
|
function calculateIndex(scrollTop) {
|
12555
12561
|
return binaryClosest(offsets, scrollTop);
|
@@ -12937,14 +12943,6 @@
|
|
12937
12943
|
const vTextFieldRef = vue.ref();
|
12938
12944
|
const vMenuRef = vue.ref();
|
12939
12945
|
const vVirtualScrollRef = vue.ref();
|
12940
|
-
const _menu = useProxiedModel(props, 'menu');
|
12941
|
-
const menu = vue.computed({
|
12942
|
-
get: () => _menu.value,
|
12943
|
-
set: v => {
|
12944
|
-
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
12945
|
-
_menu.value = v;
|
12946
|
-
}
|
12947
|
-
});
|
12948
12946
|
const {
|
12949
12947
|
items,
|
12950
12948
|
transformIn,
|
@@ -12960,7 +12958,6 @@
|
|
12960
12958
|
const form = useForm(props);
|
12961
12959
|
const selectedValues = vue.computed(() => model.value.map(selection => selection.value));
|
12962
12960
|
const isFocused = vue.shallowRef(false);
|
12963
|
-
const label = vue.computed(() => menu.value ? props.closeText : props.openText);
|
12964
12961
|
let keyboardLookupPrefix = '';
|
12965
12962
|
let keyboardLookupLastTime;
|
12966
12963
|
const displayItems = vue.computed(() => {
|
@@ -12970,6 +12967,16 @@
|
|
12970
12967
|
return items.value;
|
12971
12968
|
});
|
12972
12969
|
const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
|
12970
|
+
const _menu = useProxiedModel(props, 'menu');
|
12971
|
+
const menu = vue.computed({
|
12972
|
+
get: () => _menu.value,
|
12973
|
+
set: v => {
|
12974
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
12975
|
+
if (v && menuDisabled.value) return;
|
12976
|
+
_menu.value = v;
|
12977
|
+
}
|
12978
|
+
});
|
12979
|
+
const label = vue.computed(() => menu.value ? props.closeText : props.openText);
|
12973
12980
|
const computedMenuProps = vue.computed(() => {
|
12974
12981
|
return {
|
12975
12982
|
...props.menuProps,
|
@@ -13265,6 +13272,7 @@
|
|
13265
13272
|
}
|
13266
13273
|
return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? vue.createVNode(VIcon, {
|
13267
13274
|
"class": "v-select__menu-icon",
|
13275
|
+
"color": vTextFieldRef.value?.fieldIconColor,
|
13268
13276
|
"icon": props.menuIcon
|
13269
13277
|
}, null) : undefined]);
|
13270
13278
|
}
|
@@ -13468,17 +13476,8 @@
|
|
13468
13476
|
const listHasFocus = vue.shallowRef(false);
|
13469
13477
|
const vMenuRef = vue.ref();
|
13470
13478
|
const vVirtualScrollRef = vue.ref();
|
13471
|
-
const _menu = useProxiedModel(props, 'menu');
|
13472
|
-
const menu = vue.computed({
|
13473
|
-
get: () => _menu.value,
|
13474
|
-
set: v => {
|
13475
|
-
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
13476
|
-
_menu.value = v;
|
13477
|
-
}
|
13478
|
-
});
|
13479
13479
|
const selectionIndex = vue.shallowRef(-1);
|
13480
13480
|
const color = vue.computed(() => vTextFieldRef.value?.color);
|
13481
|
-
const label = vue.computed(() => menu.value ? props.closeText : props.openText);
|
13482
13481
|
const {
|
13483
13482
|
items,
|
13484
13483
|
transformIn,
|
@@ -13515,6 +13514,16 @@
|
|
13515
13514
|
return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
|
13516
13515
|
});
|
13517
13516
|
const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
|
13517
|
+
const _menu = useProxiedModel(props, 'menu');
|
13518
|
+
const menu = vue.computed({
|
13519
|
+
get: () => _menu.value,
|
13520
|
+
set: v => {
|
13521
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
13522
|
+
if (v && menuDisabled.value) return;
|
13523
|
+
_menu.value = v;
|
13524
|
+
}
|
13525
|
+
});
|
13526
|
+
const label = vue.computed(() => menu.value ? props.closeText : props.openText);
|
13518
13527
|
const listRef = vue.ref();
|
13519
13528
|
const listEvents = useScrolling(listRef, vTextFieldRef);
|
13520
13529
|
function onClear(e) {
|
@@ -13671,12 +13680,7 @@
|
|
13671
13680
|
} else {
|
13672
13681
|
if (!props.multiple && search.value == null) model.value = [];
|
13673
13682
|
menu.value = false;
|
13674
|
-
if (
|
13675
|
-
let {
|
13676
|
-
title
|
13677
|
-
} = _ref3;
|
13678
|
-
return title === search.value;
|
13679
|
-
})) search.value = '';
|
13683
|
+
if (props.multiple || hasSelectionSlot.value) search.value = '';
|
13680
13684
|
selectionIndex.value = -1;
|
13681
13685
|
}
|
13682
13686
|
});
|
@@ -13764,12 +13768,12 @@
|
|
13764
13768
|
"items": displayItems.value,
|
13765
13769
|
"itemKey": "value"
|
13766
13770
|
}, {
|
13767
|
-
default:
|
13771
|
+
default: _ref3 => {
|
13768
13772
|
let {
|
13769
13773
|
item,
|
13770
13774
|
index,
|
13771
13775
|
itemRef
|
13772
|
-
} =
|
13776
|
+
} = _ref3;
|
13773
13777
|
const itemProps = vue.mergeProps(item.props, {
|
13774
13778
|
ref: itemRef,
|
13775
13779
|
key: item.value,
|
@@ -13783,10 +13787,10 @@
|
|
13783
13787
|
}) ?? vue.createVNode(VListItem, vue.mergeProps(itemProps, {
|
13784
13788
|
"role": "option"
|
13785
13789
|
}), {
|
13786
|
-
prepend:
|
13790
|
+
prepend: _ref4 => {
|
13787
13791
|
let {
|
13788
13792
|
isSelected
|
13789
|
-
} =
|
13793
|
+
} = _ref4;
|
13790
13794
|
return vue.createVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
|
13791
13795
|
"key": item.value,
|
13792
13796
|
"modelValue": isSelected,
|
@@ -13869,6 +13873,7 @@
|
|
13869
13873
|
}
|
13870
13874
|
return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? vue.createVNode(VIcon, {
|
13871
13875
|
"class": "v-autocomplete__menu-icon",
|
13876
|
+
"color": vTextFieldRef.value?.fieldIconColor,
|
13872
13877
|
"icon": props.menuIcon,
|
13873
13878
|
"onMousedown": onMousedownMenuIcon,
|
13874
13879
|
"onClick": noop,
|
@@ -16655,7 +16660,7 @@
|
|
16655
16660
|
const abortController = new AbortController();
|
16656
16661
|
vue.onUnmounted(() => abortController.abort());
|
16657
16662
|
async function openEyeDropper() {
|
16658
|
-
if (!SUPPORTS_EYE_DROPPER) return;
|
16663
|
+
if (!SUPPORTS_EYE_DROPPER || props.disabled) return;
|
16659
16664
|
const eyeDropper = new window.EyeDropper();
|
16660
16665
|
try {
|
16661
16666
|
const result = await eyeDropper.open({
|
@@ -16677,10 +16682,11 @@
|
|
16677
16682
|
"class": "v-color-picker-preview__eye-dropper",
|
16678
16683
|
"key": "eyeDropper"
|
16679
16684
|
}, [vue.createVNode(VBtn, {
|
16680
|
-
"
|
16685
|
+
"density": "comfortable",
|
16686
|
+
"disabled": props.disabled,
|
16681
16687
|
"icon": "$eyeDropper",
|
16682
16688
|
"variant": "plain",
|
16683
|
-
"
|
16689
|
+
"onClick": openEyeDropper
|
16684
16690
|
}, null)]), vue.createVNode("div", {
|
16685
16691
|
"class": "v-color-picker-preview__dot"
|
16686
16692
|
}, [vue.createVNode("div", {
|
@@ -18237,18 +18243,9 @@
|
|
18237
18243
|
const listHasFocus = vue.shallowRef(false);
|
18238
18244
|
const vMenuRef = vue.ref();
|
18239
18245
|
const vVirtualScrollRef = vue.ref();
|
18240
|
-
const _menu = useProxiedModel(props, 'menu');
|
18241
|
-
const menu = vue.computed({
|
18242
|
-
get: () => _menu.value,
|
18243
|
-
set: v => {
|
18244
|
-
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
18245
|
-
_menu.value = v;
|
18246
|
-
}
|
18247
|
-
});
|
18248
18246
|
const selectionIndex = vue.shallowRef(-1);
|
18249
18247
|
let cleared = false;
|
18250
18248
|
const color = vue.computed(() => vTextFieldRef.value?.color);
|
18251
|
-
const label = vue.computed(() => menu.value ? props.closeText : props.openText);
|
18252
18249
|
const {
|
18253
18250
|
items,
|
18254
18251
|
transformIn,
|
@@ -18292,6 +18289,27 @@
|
|
18292
18289
|
const counterValue = vue.computed(() => {
|
18293
18290
|
return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : props.multiple ? model.value.length : search.value.length;
|
18294
18291
|
});
|
18292
|
+
const {
|
18293
|
+
filteredItems,
|
18294
|
+
getMatches
|
18295
|
+
} = useFilter(props, items, () => isPristine.value ? '' : search.value);
|
18296
|
+
const displayItems = vue.computed(() => {
|
18297
|
+
if (props.hideSelected) {
|
18298
|
+
return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
|
18299
|
+
}
|
18300
|
+
return filteredItems.value;
|
18301
|
+
});
|
18302
|
+
const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
|
18303
|
+
const _menu = useProxiedModel(props, 'menu');
|
18304
|
+
const menu = vue.computed({
|
18305
|
+
get: () => _menu.value,
|
18306
|
+
set: v => {
|
18307
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
18308
|
+
if (v && menuDisabled.value) return;
|
18309
|
+
_menu.value = v;
|
18310
|
+
}
|
18311
|
+
});
|
18312
|
+
const label = vue.computed(() => menu.value ? props.closeText : props.openText);
|
18295
18313
|
vue.watch(_search, value => {
|
18296
18314
|
if (cleared) {
|
18297
18315
|
// wait for clear to finish, VTextField sets _search to null
|
@@ -18307,22 +18325,11 @@
|
|
18307
18325
|
_search.value = value[0]?.title ?? '';
|
18308
18326
|
}
|
18309
18327
|
});
|
18310
|
-
const {
|
18311
|
-
filteredItems,
|
18312
|
-
getMatches
|
18313
|
-
} = useFilter(props, items, () => isPristine.value ? '' : search.value);
|
18314
|
-
const displayItems = vue.computed(() => {
|
18315
|
-
if (props.hideSelected) {
|
18316
|
-
return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
|
18317
|
-
}
|
18318
|
-
return filteredItems.value;
|
18319
|
-
});
|
18320
18328
|
const selectedValues = vue.computed(() => model.value.map(selection => selection.value));
|
18321
18329
|
const highlightFirst = vue.computed(() => {
|
18322
18330
|
const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
|
18323
18331
|
return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
|
18324
18332
|
});
|
18325
|
-
const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
|
18326
18333
|
const listRef = vue.ref();
|
18327
18334
|
const listEvents = useScrolling(listRef, vTextFieldRef);
|
18328
18335
|
function onClear(e) {
|
@@ -18673,6 +18680,7 @@
|
|
18673
18680
|
}
|
18674
18681
|
return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? vue.createVNode(VIcon, {
|
18675
18682
|
"class": "v-combobox__menu-icon",
|
18683
|
+
"color": vTextFieldRef.value?.fieldIconColor,
|
18676
18684
|
"icon": props.menuIcon,
|
18677
18685
|
"onMousedown": onMousedownMenuIcon,
|
18678
18686
|
"onClick": noop,
|
@@ -23065,7 +23073,9 @@
|
|
23065
23073
|
VBtn: {
|
23066
23074
|
class: 'v-empty-state__action-btn',
|
23067
23075
|
color: props.color ?? 'surface-variant',
|
23068
|
-
|
23076
|
+
href: props.href,
|
23077
|
+
text: props.actionText,
|
23078
|
+
to: props.to
|
23069
23079
|
}
|
23070
23080
|
}
|
23071
23081
|
}, {
|
@@ -29212,7 +29222,7 @@
|
|
29212
29222
|
};
|
29213
29223
|
});
|
29214
29224
|
}
|
29215
|
-
const version$1 = "3.8.0-
|
29225
|
+
const version$1 = "3.8.0-dev.2025-04-03";
|
29216
29226
|
createVuetify$1.version = version$1;
|
29217
29227
|
|
29218
29228
|
// Vue's inject() can only be used in setup
|
@@ -29237,7 +29247,7 @@
|
|
29237
29247
|
...options
|
29238
29248
|
});
|
29239
29249
|
};
|
29240
|
-
const version = "3.8.0-
|
29250
|
+
const version = "3.8.0-dev.2025-04-03";
|
29241
29251
|
createVuetify.version = version;
|
29242
29252
|
|
29243
29253
|
exports.blueprints = index;
|