@vuetify/nightly 3.8.5-dev.2025-05-18 → 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 +5 -3
- package/dist/json/attributes.json +1597 -1593
- package/dist/json/importMap-labs.json +22 -22
- package/dist/json/importMap.json +176 -176
- package/dist/json/tags.json +1 -0
- package/dist/json/web-types.json +3310 -3210
- package/dist/vuetify-labs.cjs +135 -69
- package/dist/vuetify-labs.css +5912 -5912
- package/dist/vuetify-labs.d.ts +161 -75
- package/dist/vuetify-labs.esm.js +135 -69
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +135 -69
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +135 -69
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +1708 -1708
- package/dist/vuetify.d.ts +158 -72
- package/dist/vuetify.esm.js +135 -69
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +135 -69
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +71 -69
- 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 +18 -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 +66 -66
- package/lib/framework.js +1 -1
- package/lib/labs/VFileUpload/VFileUpload.d.ts +3 -3
- package/package.json +1 -1
package/dist/vuetify.cjs
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,
|
@@ -18698,6 +18733,22 @@
|
|
18698
18733
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18699
18734
|
onClick: () => select(item, null)
|
18700
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
|
+
}
|
18701
18752
|
return slots.item?.({
|
18702
18753
|
item,
|
18703
18754
|
index,
|
@@ -25120,6 +25171,10 @@
|
|
25120
25171
|
type: Number,
|
25121
25172
|
default: 0
|
25122
25173
|
},
|
25174
|
+
minFractionDigits: {
|
25175
|
+
type: Number,
|
25176
|
+
default: null
|
25177
|
+
},
|
25123
25178
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
25124
25179
|
}, 'VNumberInput');
|
25125
25180
|
const VNumberInput = genericComponent()({
|
@@ -25150,9 +25205,19 @@
|
|
25150
25205
|
} = useFocus(props);
|
25151
25206
|
function correctPrecision(val) {
|
25152
25207
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
25153
|
-
|
25154
|
-
|
25155
|
-
|
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;
|
25156
25221
|
}
|
25157
25222
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
25158
25223
|
const _inputText = vue.shallowRef(null);
|
@@ -25205,6 +25270,7 @@
|
|
25205
25270
|
}
|
25206
25271
|
};
|
25207
25272
|
vue.watch(() => props.precision, () => formatInputValue());
|
25273
|
+
vue.watch(() => props.minFractionDigits, () => formatInputValue());
|
25208
25274
|
vue.onMounted(() => {
|
25209
25275
|
clampModel();
|
25210
25276
|
});
|
@@ -25306,7 +25372,7 @@
|
|
25306
25372
|
inputText.value = null;
|
25307
25373
|
return;
|
25308
25374
|
}
|
25309
|
-
inputText.value =
|
25375
|
+
inputText.value = correctPrecision(model.value);
|
25310
25376
|
}
|
25311
25377
|
function trimDecimalZeros() {
|
25312
25378
|
if (controlsDisabled.value) return;
|
@@ -29348,7 +29414,7 @@
|
|
29348
29414
|
};
|
29349
29415
|
});
|
29350
29416
|
}
|
29351
|
-
const version$1 = "3.8.5-dev.2025-05-
|
29417
|
+
const version$1 = "3.8.5-dev.2025-05-20";
|
29352
29418
|
createVuetify$1.version = version$1;
|
29353
29419
|
|
29354
29420
|
// Vue's inject() can only be used in setup
|
@@ -29373,7 +29439,7 @@
|
|
29373
29439
|
...options
|
29374
29440
|
});
|
29375
29441
|
};
|
29376
|
-
const version = "3.8.5-dev.2025-05-
|
29442
|
+
const version = "3.8.5-dev.2025-05-20";
|
29377
29443
|
createVuetify.version = version;
|
29378
29444
|
|
29379
29445
|
exports.blueprints = index;
|