@vuetify/nightly 3.8.5-dev.2025-05-17 → 3.8.5-dev.2025-05-20
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 +6 -3
- package/dist/json/attributes.json +2855 -2851
- package/dist/json/importMap-labs.json +18 -18
- package/dist/json/importMap.json +154 -154
- package/dist/json/tags.json +1 -0
- package/dist/json/web-types.json +5580 -5480
- package/dist/vuetify-labs.cjs +136 -69
- package/dist/vuetify-labs.css +5215 -5215
- package/dist/vuetify-labs.d.ts +151 -65
- package/dist/vuetify-labs.esm.js +136 -69
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +136 -69
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +136 -69
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +5450 -5450
- package/dist/vuetify.d.ts +148 -62
- package/dist/vuetify.esm.js +136 -69
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +136 -69
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +73 -71
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.d.ts +26 -2
- package/lib/components/VAutocomplete/VAutocomplete.js +18 -1
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VCombobox/VCombobox.d.ts +26 -2
- package/lib/components/VCombobox/VCombobox.js +19 -1
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VList/VListChildren.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.d.ts +14 -0
- package/lib/components/VNumberInput/VNumberInput.js +19 -4
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VSelect/VSelect.d.ts +26 -2
- package/lib/components/VSelect/VSelect.js +18 -1
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/composables/filter.js +3 -0
- package/lib/composables/filter.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +56 -56
- package/lib/framework.js +1 -1
- package/lib/labs/VFileUpload/VFileUpload.d.ts +3 -3
- package/package.json +1 -1
package/dist/vuetify.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v3.8.5-dev.2025-05-
|
2
|
+
* Vuetify v3.8.5-dev.2025-05-20
|
3
3
|
* Forged by John Leider
|
4
4
|
* Released under the MIT License.
|
5
5
|
*/
|
@@ -8609,6 +8609,68 @@
|
|
8609
8609
|
}
|
8610
8610
|
});
|
8611
8611
|
|
8612
|
+
const makeVDividerProps = propsFactory({
|
8613
|
+
color: String,
|
8614
|
+
inset: Boolean,
|
8615
|
+
length: [Number, String],
|
8616
|
+
opacity: [Number, String],
|
8617
|
+
thickness: [Number, String],
|
8618
|
+
vertical: Boolean,
|
8619
|
+
...makeComponentProps(),
|
8620
|
+
...makeThemeProps()
|
8621
|
+
}, 'VDivider');
|
8622
|
+
const VDivider = genericComponent()({
|
8623
|
+
name: 'VDivider',
|
8624
|
+
props: makeVDividerProps(),
|
8625
|
+
setup(props, _ref) {
|
8626
|
+
let {
|
8627
|
+
attrs,
|
8628
|
+
slots
|
8629
|
+
} = _ref;
|
8630
|
+
const {
|
8631
|
+
themeClasses
|
8632
|
+
} = provideTheme(props);
|
8633
|
+
const {
|
8634
|
+
textColorClasses,
|
8635
|
+
textColorStyles
|
8636
|
+
} = useTextColor(() => props.color);
|
8637
|
+
const dividerStyles = vue.computed(() => {
|
8638
|
+
const styles = {};
|
8639
|
+
if (props.length) {
|
8640
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
8641
|
+
}
|
8642
|
+
if (props.thickness) {
|
8643
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
8644
|
+
}
|
8645
|
+
return styles;
|
8646
|
+
});
|
8647
|
+
useRender(() => {
|
8648
|
+
const divider = vue.createVNode("hr", {
|
8649
|
+
"class": [{
|
8650
|
+
'v-divider': true,
|
8651
|
+
'v-divider--inset': props.inset,
|
8652
|
+
'v-divider--vertical': props.vertical
|
8653
|
+
}, themeClasses.value, textColorClasses.value, props.class],
|
8654
|
+
"style": [dividerStyles.value, textColorStyles.value, {
|
8655
|
+
'--v-border-opacity': props.opacity
|
8656
|
+
}, props.style],
|
8657
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
8658
|
+
"role": `${attrs.role || 'separator'}`
|
8659
|
+
}, null);
|
8660
|
+
if (!slots.default) return divider;
|
8661
|
+
return vue.createVNode("div", {
|
8662
|
+
"class": ['v-divider__wrapper', {
|
8663
|
+
'v-divider__wrapper--vertical': props.vertical,
|
8664
|
+
'v-divider__wrapper--inset': props.inset
|
8665
|
+
}]
|
8666
|
+
}, [divider, vue.createVNode("div", {
|
8667
|
+
"class": "v-divider__content"
|
8668
|
+
}, [slots.default()]), divider]);
|
8669
|
+
});
|
8670
|
+
return {};
|
8671
|
+
}
|
8672
|
+
});
|
8673
|
+
|
8612
8674
|
// Utilities
|
8613
8675
|
|
8614
8676
|
// List
|
@@ -9760,68 +9822,6 @@
|
|
9760
9822
|
}
|
9761
9823
|
});
|
9762
9824
|
|
9763
|
-
const makeVDividerProps = propsFactory({
|
9764
|
-
color: String,
|
9765
|
-
inset: Boolean,
|
9766
|
-
length: [Number, String],
|
9767
|
-
opacity: [Number, String],
|
9768
|
-
thickness: [Number, String],
|
9769
|
-
vertical: Boolean,
|
9770
|
-
...makeComponentProps(),
|
9771
|
-
...makeThemeProps()
|
9772
|
-
}, 'VDivider');
|
9773
|
-
const VDivider = genericComponent()({
|
9774
|
-
name: 'VDivider',
|
9775
|
-
props: makeVDividerProps(),
|
9776
|
-
setup(props, _ref) {
|
9777
|
-
let {
|
9778
|
-
attrs,
|
9779
|
-
slots
|
9780
|
-
} = _ref;
|
9781
|
-
const {
|
9782
|
-
themeClasses
|
9783
|
-
} = provideTheme(props);
|
9784
|
-
const {
|
9785
|
-
textColorClasses,
|
9786
|
-
textColorStyles
|
9787
|
-
} = useTextColor(() => props.color);
|
9788
|
-
const dividerStyles = vue.computed(() => {
|
9789
|
-
const styles = {};
|
9790
|
-
if (props.length) {
|
9791
|
-
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
9792
|
-
}
|
9793
|
-
if (props.thickness) {
|
9794
|
-
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
9795
|
-
}
|
9796
|
-
return styles;
|
9797
|
-
});
|
9798
|
-
useRender(() => {
|
9799
|
-
const divider = vue.createVNode("hr", {
|
9800
|
-
"class": [{
|
9801
|
-
'v-divider': true,
|
9802
|
-
'v-divider--inset': props.inset,
|
9803
|
-
'v-divider--vertical': props.vertical
|
9804
|
-
}, themeClasses.value, textColorClasses.value, props.class],
|
9805
|
-
"style": [dividerStyles.value, textColorStyles.value, {
|
9806
|
-
'--v-border-opacity': props.opacity
|
9807
|
-
}, props.style],
|
9808
|
-
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
9809
|
-
"role": `${attrs.role || 'separator'}`
|
9810
|
-
}, null);
|
9811
|
-
if (!slots.default) return divider;
|
9812
|
-
return vue.createVNode("div", {
|
9813
|
-
"class": ['v-divider__wrapper', {
|
9814
|
-
'v-divider__wrapper--vertical': props.vertical,
|
9815
|
-
'v-divider__wrapper--inset': props.inset
|
9816
|
-
}]
|
9817
|
-
}, [divider, vue.createVNode("div", {
|
9818
|
-
"class": "v-divider__content"
|
9819
|
-
}, [slots.default()]), divider]);
|
9820
|
-
});
|
9821
|
-
return {};
|
9822
|
-
}
|
9823
|
-
});
|
9824
|
-
|
9825
9825
|
// Types
|
9826
9826
|
|
9827
9827
|
const makeVListChildrenProps = propsFactory({
|
@@ -13373,6 +13373,22 @@
|
|
13373
13373
|
key: item.value,
|
13374
13374
|
onClick: () => select(item, null)
|
13375
13375
|
});
|
13376
|
+
if (item.raw.type === 'divider') {
|
13377
|
+
return slots.divider?.({
|
13378
|
+
props: item.raw,
|
13379
|
+
index
|
13380
|
+
}) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
|
13381
|
+
"key": `divider-${index}`
|
13382
|
+
}), null);
|
13383
|
+
}
|
13384
|
+
if (item.raw.type === 'subheader') {
|
13385
|
+
return slots.subheader?.({
|
13386
|
+
props: item.raw,
|
13387
|
+
index
|
13388
|
+
}) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
|
13389
|
+
"key": `subheader-${index}`
|
13390
|
+
}), null);
|
13391
|
+
}
|
13376
13392
|
return slots.item?.({
|
13377
13393
|
item,
|
13378
13394
|
index,
|
@@ -13533,6 +13549,9 @@
|
|
13533
13549
|
let match = -1;
|
13534
13550
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13535
13551
|
if (typeof item === 'object') {
|
13552
|
+
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13553
|
+
continue;
|
13554
|
+
}
|
13536
13555
|
const filterKeys = keys || Object.keys(transformed);
|
13537
13556
|
for (const key of filterKeys) {
|
13538
13557
|
const value = getPropertyFromItem(transformed, key);
|
@@ -13971,6 +13990,22 @@
|
|
13971
13990
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
13972
13991
|
onClick: () => select(item, null)
|
13973
13992
|
});
|
13993
|
+
if (item.raw.type === 'divider') {
|
13994
|
+
return slots.divider?.({
|
13995
|
+
props: item.raw,
|
13996
|
+
index
|
13997
|
+
}) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
|
13998
|
+
"key": `divider-${index}`
|
13999
|
+
}), null);
|
14000
|
+
}
|
14001
|
+
if (item.raw.type === 'subheader') {
|
14002
|
+
return slots.subheader?.({
|
14003
|
+
props: item.raw,
|
14004
|
+
index
|
14005
|
+
}) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
|
14006
|
+
"key": `subheader-${index}`
|
14007
|
+
}), null);
|
14008
|
+
}
|
13974
14009
|
return slots.item?.({
|
13975
14010
|
item,
|
13976
14011
|
index,
|
@@ -18381,6 +18416,7 @@
|
|
18381
18416
|
_search.value = val ?? '';
|
18382
18417
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18383
18418
|
model.value = [transformItem$3(props, val)];
|
18419
|
+
vue.nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18384
18420
|
}
|
18385
18421
|
if (val && props.multiple && props.delimiters?.length) {
|
18386
18422
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18697,6 +18733,22 @@
|
|
18697
18733
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18698
18734
|
onClick: () => select(item, null)
|
18699
18735
|
});
|
18736
|
+
if (item.raw.type === 'divider') {
|
18737
|
+
return slots.divider?.({
|
18738
|
+
props: item.raw,
|
18739
|
+
index
|
18740
|
+
}) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
|
18741
|
+
"key": `divider-${index}`
|
18742
|
+
}), null);
|
18743
|
+
}
|
18744
|
+
if (item.raw.type === 'subheader') {
|
18745
|
+
return slots.subheader?.({
|
18746
|
+
props: item.raw,
|
18747
|
+
index
|
18748
|
+
}) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
|
18749
|
+
"key": `subheader-${index}`
|
18750
|
+
}), null);
|
18751
|
+
}
|
18700
18752
|
return slots.item?.({
|
18701
18753
|
item,
|
18702
18754
|
index,
|
@@ -25119,6 +25171,10 @@
|
|
25119
25171
|
type: Number,
|
25120
25172
|
default: 0
|
25121
25173
|
},
|
25174
|
+
minFractionDigits: {
|
25175
|
+
type: Number,
|
25176
|
+
default: null
|
25177
|
+
},
|
25122
25178
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
25123
25179
|
}, 'VNumberInput');
|
25124
25180
|
const VNumberInput = genericComponent()({
|
@@ -25149,9 +25205,19 @@
|
|
25149
25205
|
} = useFocus(props);
|
25150
25206
|
function correctPrecision(val) {
|
25151
25207
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
25152
|
-
|
25153
|
-
|
25154
|
-
|
25208
|
+
if (precision == null) {
|
25209
|
+
return String(val);
|
25210
|
+
}
|
25211
|
+
let fixed = val.toFixed(precision);
|
25212
|
+
if (isFocused.value) {
|
25213
|
+
return Number(fixed).toString(); // trim zeros
|
25214
|
+
}
|
25215
|
+
if ((props.minFractionDigits ?? precision) < precision) {
|
25216
|
+
const trimLimit = precision - props.minFractionDigits;
|
25217
|
+
const [baseDigits, fractionDigits] = fixed.split('.');
|
25218
|
+
fixed = [baseDigits, fractionDigits.replace(new RegExp(`0{1,${trimLimit}}$`), '')].filter(Boolean).join('.');
|
25219
|
+
}
|
25220
|
+
return fixed;
|
25155
25221
|
}
|
25156
25222
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
25157
25223
|
const _inputText = vue.shallowRef(null);
|
@@ -25204,6 +25270,7 @@
|
|
25204
25270
|
}
|
25205
25271
|
};
|
25206
25272
|
vue.watch(() => props.precision, () => formatInputValue());
|
25273
|
+
vue.watch(() => props.minFractionDigits, () => formatInputValue());
|
25207
25274
|
vue.onMounted(() => {
|
25208
25275
|
clampModel();
|
25209
25276
|
});
|
@@ -25305,7 +25372,7 @@
|
|
25305
25372
|
inputText.value = null;
|
25306
25373
|
return;
|
25307
25374
|
}
|
25308
|
-
inputText.value =
|
25375
|
+
inputText.value = correctPrecision(model.value);
|
25309
25376
|
}
|
25310
25377
|
function trimDecimalZeros() {
|
25311
25378
|
if (controlsDisabled.value) return;
|
@@ -29347,7 +29414,7 @@
|
|
29347
29414
|
};
|
29348
29415
|
});
|
29349
29416
|
}
|
29350
|
-
const version$1 = "3.8.5-dev.2025-05-
|
29417
|
+
const version$1 = "3.8.5-dev.2025-05-20";
|
29351
29418
|
createVuetify$1.version = version$1;
|
29352
29419
|
|
29353
29420
|
// Vue's inject() can only be used in setup
|
@@ -29372,7 +29439,7 @@
|
|
29372
29439
|
...options
|
29373
29440
|
});
|
29374
29441
|
};
|
29375
|
-
const version = "3.8.5-dev.2025-05-
|
29442
|
+
const version = "3.8.5-dev.2025-05-20";
|
29376
29443
|
createVuetify.version = version;
|
29377
29444
|
|
29378
29445
|
exports.blueprints = index;
|