@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-labs.esm.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
|
*/
|
@@ -11732,7 +11732,7 @@ const VField = genericComponent()({
|
|
11732
11732
|
return props.error || props.disabled ? undefined : isActive.value && isFocused.value ? props.color : props.baseColor;
|
11733
11733
|
});
|
11734
11734
|
const iconColor = computed(() => {
|
11735
|
-
if (!props.iconColor) return undefined;
|
11735
|
+
if (!props.iconColor || props.glow && !isFocused.value) return undefined;
|
11736
11736
|
return props.iconColor === true ? color.value : props.iconColor;
|
11737
11737
|
});
|
11738
11738
|
const {
|
@@ -11930,7 +11930,8 @@ const VField = genericComponent()({
|
|
11930
11930
|
})])]);
|
11931
11931
|
});
|
11932
11932
|
return {
|
11933
|
-
controlRef
|
11933
|
+
controlRef,
|
11934
|
+
fieldIconColor: iconColor
|
11934
11935
|
};
|
11935
11936
|
}
|
11936
11937
|
});
|
@@ -12280,7 +12281,12 @@ function useVirtual(props, items) {
|
|
12280
12281
|
}
|
12281
12282
|
function calculateOffset(index) {
|
12282
12283
|
index = clamp(index, 0, items.value.length - 1);
|
12283
|
-
|
12284
|
+
const whole = Math.floor(index);
|
12285
|
+
const fraction = index % 1;
|
12286
|
+
const next = whole + 1;
|
12287
|
+
const wholeOffset = offsets[whole] || 0;
|
12288
|
+
const nextOffset = offsets[next] || wholeOffset;
|
12289
|
+
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
12284
12290
|
}
|
12285
12291
|
function calculateIndex(scrollTop) {
|
12286
12292
|
return binaryClosest(offsets, scrollTop);
|
@@ -12668,14 +12674,6 @@ const VSelect = genericComponent()({
|
|
12668
12674
|
const vTextFieldRef = ref();
|
12669
12675
|
const vMenuRef = ref();
|
12670
12676
|
const vVirtualScrollRef = ref();
|
12671
|
-
const _menu = useProxiedModel(props, 'menu');
|
12672
|
-
const menu = computed({
|
12673
|
-
get: () => _menu.value,
|
12674
|
-
set: v => {
|
12675
|
-
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
12676
|
-
_menu.value = v;
|
12677
|
-
}
|
12678
|
-
});
|
12679
12677
|
const {
|
12680
12678
|
items,
|
12681
12679
|
transformIn,
|
@@ -12691,7 +12689,6 @@ const VSelect = genericComponent()({
|
|
12691
12689
|
const form = useForm(props);
|
12692
12690
|
const selectedValues = computed(() => model.value.map(selection => selection.value));
|
12693
12691
|
const isFocused = shallowRef(false);
|
12694
|
-
const label = computed(() => menu.value ? props.closeText : props.openText);
|
12695
12692
|
let keyboardLookupPrefix = '';
|
12696
12693
|
let keyboardLookupLastTime;
|
12697
12694
|
const displayItems = computed(() => {
|
@@ -12701,6 +12698,16 @@ const VSelect = genericComponent()({
|
|
12701
12698
|
return items.value;
|
12702
12699
|
});
|
12703
12700
|
const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
|
12701
|
+
const _menu = useProxiedModel(props, 'menu');
|
12702
|
+
const menu = computed({
|
12703
|
+
get: () => _menu.value,
|
12704
|
+
set: v => {
|
12705
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
12706
|
+
if (v && menuDisabled.value) return;
|
12707
|
+
_menu.value = v;
|
12708
|
+
}
|
12709
|
+
});
|
12710
|
+
const label = computed(() => menu.value ? props.closeText : props.openText);
|
12704
12711
|
const computedMenuProps = computed(() => {
|
12705
12712
|
return {
|
12706
12713
|
...props.menuProps,
|
@@ -12996,6 +13003,7 @@ const VSelect = genericComponent()({
|
|
12996
13003
|
}
|
12997
13004
|
return createVNode(Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? createVNode(VIcon, {
|
12998
13005
|
"class": "v-select__menu-icon",
|
13006
|
+
"color": vTextFieldRef.value?.fieldIconColor,
|
12999
13007
|
"icon": props.menuIcon
|
13000
13008
|
}, null) : undefined]);
|
13001
13009
|
}
|
@@ -13199,17 +13207,8 @@ const VAutocomplete = genericComponent()({
|
|
13199
13207
|
const listHasFocus = shallowRef(false);
|
13200
13208
|
const vMenuRef = ref();
|
13201
13209
|
const vVirtualScrollRef = ref();
|
13202
|
-
const _menu = useProxiedModel(props, 'menu');
|
13203
|
-
const menu = computed({
|
13204
|
-
get: () => _menu.value,
|
13205
|
-
set: v => {
|
13206
|
-
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
13207
|
-
_menu.value = v;
|
13208
|
-
}
|
13209
|
-
});
|
13210
13210
|
const selectionIndex = shallowRef(-1);
|
13211
13211
|
const color = computed(() => vTextFieldRef.value?.color);
|
13212
|
-
const label = computed(() => menu.value ? props.closeText : props.openText);
|
13213
13212
|
const {
|
13214
13213
|
items,
|
13215
13214
|
transformIn,
|
@@ -13246,6 +13245,16 @@ const VAutocomplete = genericComponent()({
|
|
13246
13245
|
return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
|
13247
13246
|
});
|
13248
13247
|
const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
|
13248
|
+
const _menu = useProxiedModel(props, 'menu');
|
13249
|
+
const menu = computed({
|
13250
|
+
get: () => _menu.value,
|
13251
|
+
set: v => {
|
13252
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
13253
|
+
if (v && menuDisabled.value) return;
|
13254
|
+
_menu.value = v;
|
13255
|
+
}
|
13256
|
+
});
|
13257
|
+
const label = computed(() => menu.value ? props.closeText : props.openText);
|
13249
13258
|
const listRef = ref();
|
13250
13259
|
const listEvents = useScrolling(listRef, vTextFieldRef);
|
13251
13260
|
function onClear(e) {
|
@@ -13402,12 +13411,7 @@ const VAutocomplete = genericComponent()({
|
|
13402
13411
|
} else {
|
13403
13412
|
if (!props.multiple && search.value == null) model.value = [];
|
13404
13413
|
menu.value = false;
|
13405
|
-
if (
|
13406
|
-
let {
|
13407
|
-
title
|
13408
|
-
} = _ref3;
|
13409
|
-
return title === search.value;
|
13410
|
-
})) search.value = '';
|
13414
|
+
if (props.multiple || hasSelectionSlot.value) search.value = '';
|
13411
13415
|
selectionIndex.value = -1;
|
13412
13416
|
}
|
13413
13417
|
});
|
@@ -13495,12 +13499,12 @@ const VAutocomplete = genericComponent()({
|
|
13495
13499
|
"items": displayItems.value,
|
13496
13500
|
"itemKey": "value"
|
13497
13501
|
}, {
|
13498
|
-
default:
|
13502
|
+
default: _ref3 => {
|
13499
13503
|
let {
|
13500
13504
|
item,
|
13501
13505
|
index,
|
13502
13506
|
itemRef
|
13503
|
-
} =
|
13507
|
+
} = _ref3;
|
13504
13508
|
const itemProps = mergeProps(item.props, {
|
13505
13509
|
ref: itemRef,
|
13506
13510
|
key: item.value,
|
@@ -13514,10 +13518,10 @@ const VAutocomplete = genericComponent()({
|
|
13514
13518
|
}) ?? createVNode(VListItem, mergeProps(itemProps, {
|
13515
13519
|
"role": "option"
|
13516
13520
|
}), {
|
13517
|
-
prepend:
|
13521
|
+
prepend: _ref4 => {
|
13518
13522
|
let {
|
13519
13523
|
isSelected
|
13520
|
-
} =
|
13524
|
+
} = _ref4;
|
13521
13525
|
return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
|
13522
13526
|
"key": item.value,
|
13523
13527
|
"modelValue": isSelected,
|
@@ -13600,6 +13604,7 @@ const VAutocomplete = genericComponent()({
|
|
13600
13604
|
}
|
13601
13605
|
return createVNode(Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? createVNode(VIcon, {
|
13602
13606
|
"class": "v-autocomplete__menu-icon",
|
13607
|
+
"color": vTextFieldRef.value?.fieldIconColor,
|
13603
13608
|
"icon": props.menuIcon,
|
13604
13609
|
"onMousedown": onMousedownMenuIcon,
|
13605
13610
|
"onClick": noop,
|
@@ -16386,7 +16391,7 @@ const VColorPickerPreview = defineComponent({
|
|
16386
16391
|
const abortController = new AbortController();
|
16387
16392
|
onUnmounted(() => abortController.abort());
|
16388
16393
|
async function openEyeDropper() {
|
16389
|
-
if (!SUPPORTS_EYE_DROPPER) return;
|
16394
|
+
if (!SUPPORTS_EYE_DROPPER || props.disabled) return;
|
16390
16395
|
const eyeDropper = new window.EyeDropper();
|
16391
16396
|
try {
|
16392
16397
|
const result = await eyeDropper.open({
|
@@ -16408,10 +16413,11 @@ const VColorPickerPreview = defineComponent({
|
|
16408
16413
|
"class": "v-color-picker-preview__eye-dropper",
|
16409
16414
|
"key": "eyeDropper"
|
16410
16415
|
}, [createVNode(VBtn, {
|
16411
|
-
"
|
16416
|
+
"density": "comfortable",
|
16417
|
+
"disabled": props.disabled,
|
16412
16418
|
"icon": "$eyeDropper",
|
16413
16419
|
"variant": "plain",
|
16414
|
-
"
|
16420
|
+
"onClick": openEyeDropper
|
16415
16421
|
}, null)]), createVNode("div", {
|
16416
16422
|
"class": "v-color-picker-preview__dot"
|
16417
16423
|
}, [createVNode("div", {
|
@@ -17968,18 +17974,9 @@ const VCombobox = genericComponent()({
|
|
17968
17974
|
const listHasFocus = shallowRef(false);
|
17969
17975
|
const vMenuRef = ref();
|
17970
17976
|
const vVirtualScrollRef = ref();
|
17971
|
-
const _menu = useProxiedModel(props, 'menu');
|
17972
|
-
const menu = 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
17977
|
const selectionIndex = shallowRef(-1);
|
17980
17978
|
let cleared = false;
|
17981
17979
|
const color = computed(() => vTextFieldRef.value?.color);
|
17982
|
-
const label = computed(() => menu.value ? props.closeText : props.openText);
|
17983
17980
|
const {
|
17984
17981
|
items,
|
17985
17982
|
transformIn,
|
@@ -18023,6 +18020,27 @@ const VCombobox = genericComponent()({
|
|
18023
18020
|
const counterValue = computed(() => {
|
18024
18021
|
return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : props.multiple ? model.value.length : search.value.length;
|
18025
18022
|
});
|
18023
|
+
const {
|
18024
|
+
filteredItems,
|
18025
|
+
getMatches
|
18026
|
+
} = useFilter(props, items, () => isPristine.value ? '' : search.value);
|
18027
|
+
const displayItems = computed(() => {
|
18028
|
+
if (props.hideSelected) {
|
18029
|
+
return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
|
18030
|
+
}
|
18031
|
+
return filteredItems.value;
|
18032
|
+
});
|
18033
|
+
const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
|
18034
|
+
const _menu = useProxiedModel(props, 'menu');
|
18035
|
+
const menu = computed({
|
18036
|
+
get: () => _menu.value,
|
18037
|
+
set: v => {
|
18038
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
18039
|
+
if (v && menuDisabled.value) return;
|
18040
|
+
_menu.value = v;
|
18041
|
+
}
|
18042
|
+
});
|
18043
|
+
const label = computed(() => menu.value ? props.closeText : props.openText);
|
18026
18044
|
watch(_search, value => {
|
18027
18045
|
if (cleared) {
|
18028
18046
|
// wait for clear to finish, VTextField sets _search to null
|
@@ -18038,22 +18056,11 @@ const VCombobox = genericComponent()({
|
|
18038
18056
|
_search.value = value[0]?.title ?? '';
|
18039
18057
|
}
|
18040
18058
|
});
|
18041
|
-
const {
|
18042
|
-
filteredItems,
|
18043
|
-
getMatches
|
18044
|
-
} = useFilter(props, items, () => isPristine.value ? '' : search.value);
|
18045
|
-
const displayItems = 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
18059
|
const selectedValues = computed(() => model.value.map(selection => selection.value));
|
18052
18060
|
const highlightFirst = computed(() => {
|
18053
18061
|
const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
|
18054
18062
|
return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
|
18055
18063
|
});
|
18056
|
-
const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
|
18057
18064
|
const listRef = ref();
|
18058
18065
|
const listEvents = useScrolling(listRef, vTextFieldRef);
|
18059
18066
|
function onClear(e) {
|
@@ -18404,6 +18411,7 @@ const VCombobox = genericComponent()({
|
|
18404
18411
|
}
|
18405
18412
|
return createVNode(Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? createVNode(VIcon, {
|
18406
18413
|
"class": "v-combobox__menu-icon",
|
18414
|
+
"color": vTextFieldRef.value?.fieldIconColor,
|
18407
18415
|
"icon": props.menuIcon,
|
18408
18416
|
"onMousedown": onMousedownMenuIcon,
|
18409
18417
|
"onClick": noop,
|
@@ -22796,7 +22804,9 @@ const VEmptyState = genericComponent()({
|
|
22796
22804
|
VBtn: {
|
22797
22805
|
class: 'v-empty-state__action-btn',
|
22798
22806
|
color: props.color ?? 'surface-variant',
|
22799
|
-
|
22807
|
+
href: props.href,
|
22808
|
+
text: props.actionText,
|
22809
|
+
to: props.to
|
22800
22810
|
}
|
22801
22811
|
}
|
22802
22812
|
}, {
|
@@ -28987,7 +28997,7 @@ const VDateInput = genericComponent()({
|
|
28987
28997
|
const adapter = useDate();
|
28988
28998
|
const {
|
28989
28999
|
mobile
|
28990
|
-
} = useDisplay();
|
29000
|
+
} = useDisplay(props);
|
28991
29001
|
const {
|
28992
29002
|
isFocused,
|
28993
29003
|
focus,
|
@@ -29037,7 +29047,7 @@ const VDateInput = genericComponent()({
|
|
29037
29047
|
return;
|
29038
29048
|
}
|
29039
29049
|
const target = e.target;
|
29040
|
-
model.value = target.value
|
29050
|
+
model.value = adapter.isValid(target.value) ? target.value : null;
|
29041
29051
|
}
|
29042
29052
|
function onClick(e) {
|
29043
29053
|
e.preventDefault();
|
@@ -29061,10 +29071,6 @@ const VDateInput = genericComponent()({
|
|
29061
29071
|
if (value != null) return;
|
29062
29072
|
model.value = null;
|
29063
29073
|
}
|
29064
|
-
function onUpdateMenuModel(isMenuOpen) {
|
29065
|
-
if (isMenuOpen) return;
|
29066
|
-
isEditingInput.value = false;
|
29067
|
-
}
|
29068
29074
|
function onBlur() {
|
29069
29075
|
blur();
|
29070
29076
|
|
@@ -29097,7 +29103,7 @@ const VDateInput = genericComponent()({
|
|
29097
29103
|
...slots,
|
29098
29104
|
default: () => createVNode(Fragment, null, [createVNode(VMenu, {
|
29099
29105
|
"modelValue": menu.value,
|
29100
|
-
"onUpdate:modelValue":
|
29106
|
+
"onUpdate:modelValue": $event => menu.value = $event,
|
29101
29107
|
"activator": "parent",
|
29102
29108
|
"min-width": "0",
|
29103
29109
|
"eager": isFocused.value,
|
@@ -29130,7 +29136,6 @@ const VDateInput = genericComponent()({
|
|
29130
29136
|
}
|
29131
29137
|
}
|
29132
29138
|
emit('save', value);
|
29133
|
-
vDateInputRef.value?.blur();
|
29134
29139
|
disabledActions.value = [];
|
29135
29140
|
}
|
29136
29141
|
return createVNode(VDatePicker, mergeProps(datePickerProps, {
|
@@ -29378,7 +29383,8 @@ const VFileUpload = genericComponent()({
|
|
29378
29383
|
'v-file-upload--clickable': !hasBrowse,
|
29379
29384
|
'v-file-upload--disabled': props.disabled,
|
29380
29385
|
'v-file-upload--dragging': dragOver.value
|
29381
|
-
}, densityClasses.value],
|
29386
|
+
}, densityClasses.value, props.class],
|
29387
|
+
"style": [props.style],
|
29382
29388
|
"onDragleave": onDragLeave,
|
29383
29389
|
"onDragover": onDragOver,
|
29384
29390
|
"onDrop": onDrop,
|
@@ -31536,7 +31542,7 @@ function createVuetify$1() {
|
|
31536
31542
|
};
|
31537
31543
|
});
|
31538
31544
|
}
|
31539
|
-
const version$1 = "3.8.0-
|
31545
|
+
const version$1 = "3.8.0-dev.2025-04-03";
|
31540
31546
|
createVuetify$1.version = version$1;
|
31541
31547
|
|
31542
31548
|
// Vue's inject() can only be used in setup
|
@@ -31821,7 +31827,7 @@ var index = /*#__PURE__*/Object.freeze({
|
|
31821
31827
|
|
31822
31828
|
/* eslint-disable local-rules/sort-imports */
|
31823
31829
|
|
31824
|
-
const version = "3.8.0-
|
31830
|
+
const version = "3.8.0-dev.2025-04-03";
|
31825
31831
|
|
31826
31832
|
/* eslint-disable local-rules/sort-imports */
|
31827
31833
|
|