@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-labs.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
|
*/
|
@@ -8331,6 +8331,68 @@
|
|
8331
8331
|
}
|
8332
8332
|
});
|
8333
8333
|
|
8334
|
+
const makeVDividerProps = propsFactory({
|
8335
|
+
color: String,
|
8336
|
+
inset: Boolean,
|
8337
|
+
length: [Number, String],
|
8338
|
+
opacity: [Number, String],
|
8339
|
+
thickness: [Number, String],
|
8340
|
+
vertical: Boolean,
|
8341
|
+
...makeComponentProps(),
|
8342
|
+
...makeThemeProps()
|
8343
|
+
}, 'VDivider');
|
8344
|
+
const VDivider = genericComponent()({
|
8345
|
+
name: 'VDivider',
|
8346
|
+
props: makeVDividerProps(),
|
8347
|
+
setup(props, _ref) {
|
8348
|
+
let {
|
8349
|
+
attrs,
|
8350
|
+
slots
|
8351
|
+
} = _ref;
|
8352
|
+
const {
|
8353
|
+
themeClasses
|
8354
|
+
} = provideTheme(props);
|
8355
|
+
const {
|
8356
|
+
textColorClasses,
|
8357
|
+
textColorStyles
|
8358
|
+
} = useTextColor(() => props.color);
|
8359
|
+
const dividerStyles = vue.computed(() => {
|
8360
|
+
const styles = {};
|
8361
|
+
if (props.length) {
|
8362
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
8363
|
+
}
|
8364
|
+
if (props.thickness) {
|
8365
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
8366
|
+
}
|
8367
|
+
return styles;
|
8368
|
+
});
|
8369
|
+
useRender(() => {
|
8370
|
+
const divider = vue.createVNode("hr", {
|
8371
|
+
"class": [{
|
8372
|
+
'v-divider': true,
|
8373
|
+
'v-divider--inset': props.inset,
|
8374
|
+
'v-divider--vertical': props.vertical
|
8375
|
+
}, themeClasses.value, textColorClasses.value, props.class],
|
8376
|
+
"style": [dividerStyles.value, textColorStyles.value, {
|
8377
|
+
'--v-border-opacity': props.opacity
|
8378
|
+
}, props.style],
|
8379
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
8380
|
+
"role": `${attrs.role || 'separator'}`
|
8381
|
+
}, null);
|
8382
|
+
if (!slots.default) return divider;
|
8383
|
+
return vue.createVNode("div", {
|
8384
|
+
"class": ['v-divider__wrapper', {
|
8385
|
+
'v-divider__wrapper--vertical': props.vertical,
|
8386
|
+
'v-divider__wrapper--inset': props.inset
|
8387
|
+
}]
|
8388
|
+
}, [divider, vue.createVNode("div", {
|
8389
|
+
"class": "v-divider__content"
|
8390
|
+
}, [slots.default()]), divider]);
|
8391
|
+
});
|
8392
|
+
return {};
|
8393
|
+
}
|
8394
|
+
});
|
8395
|
+
|
8334
8396
|
// Utilities
|
8335
8397
|
|
8336
8398
|
// List
|
@@ -9482,68 +9544,6 @@
|
|
9482
9544
|
}
|
9483
9545
|
});
|
9484
9546
|
|
9485
|
-
const makeVDividerProps = propsFactory({
|
9486
|
-
color: String,
|
9487
|
-
inset: Boolean,
|
9488
|
-
length: [Number, String],
|
9489
|
-
opacity: [Number, String],
|
9490
|
-
thickness: [Number, String],
|
9491
|
-
vertical: Boolean,
|
9492
|
-
...makeComponentProps(),
|
9493
|
-
...makeThemeProps()
|
9494
|
-
}, 'VDivider');
|
9495
|
-
const VDivider = genericComponent()({
|
9496
|
-
name: 'VDivider',
|
9497
|
-
props: makeVDividerProps(),
|
9498
|
-
setup(props, _ref) {
|
9499
|
-
let {
|
9500
|
-
attrs,
|
9501
|
-
slots
|
9502
|
-
} = _ref;
|
9503
|
-
const {
|
9504
|
-
themeClasses
|
9505
|
-
} = provideTheme(props);
|
9506
|
-
const {
|
9507
|
-
textColorClasses,
|
9508
|
-
textColorStyles
|
9509
|
-
} = useTextColor(() => props.color);
|
9510
|
-
const dividerStyles = vue.computed(() => {
|
9511
|
-
const styles = {};
|
9512
|
-
if (props.length) {
|
9513
|
-
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
9514
|
-
}
|
9515
|
-
if (props.thickness) {
|
9516
|
-
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
9517
|
-
}
|
9518
|
-
return styles;
|
9519
|
-
});
|
9520
|
-
useRender(() => {
|
9521
|
-
const divider = vue.createVNode("hr", {
|
9522
|
-
"class": [{
|
9523
|
-
'v-divider': true,
|
9524
|
-
'v-divider--inset': props.inset,
|
9525
|
-
'v-divider--vertical': props.vertical
|
9526
|
-
}, themeClasses.value, textColorClasses.value, props.class],
|
9527
|
-
"style": [dividerStyles.value, textColorStyles.value, {
|
9528
|
-
'--v-border-opacity': props.opacity
|
9529
|
-
}, props.style],
|
9530
|
-
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
9531
|
-
"role": `${attrs.role || 'separator'}`
|
9532
|
-
}, null);
|
9533
|
-
if (!slots.default) return divider;
|
9534
|
-
return vue.createVNode("div", {
|
9535
|
-
"class": ['v-divider__wrapper', {
|
9536
|
-
'v-divider__wrapper--vertical': props.vertical,
|
9537
|
-
'v-divider__wrapper--inset': props.inset
|
9538
|
-
}]
|
9539
|
-
}, [divider, vue.createVNode("div", {
|
9540
|
-
"class": "v-divider__content"
|
9541
|
-
}, [slots.default()]), divider]);
|
9542
|
-
});
|
9543
|
-
return {};
|
9544
|
-
}
|
9545
|
-
});
|
9546
|
-
|
9547
9547
|
// Types
|
9548
9548
|
|
9549
9549
|
const makeVListChildrenProps = propsFactory({
|
@@ -13095,6 +13095,22 @@
|
|
13095
13095
|
key: item.value,
|
13096
13096
|
onClick: () => select(item, null)
|
13097
13097
|
});
|
13098
|
+
if (item.raw.type === 'divider') {
|
13099
|
+
return slots.divider?.({
|
13100
|
+
props: item.raw,
|
13101
|
+
index
|
13102
|
+
}) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
|
13103
|
+
"key": `divider-${index}`
|
13104
|
+
}), null);
|
13105
|
+
}
|
13106
|
+
if (item.raw.type === 'subheader') {
|
13107
|
+
return slots.subheader?.({
|
13108
|
+
props: item.raw,
|
13109
|
+
index
|
13110
|
+
}) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
|
13111
|
+
"key": `subheader-${index}`
|
13112
|
+
}), null);
|
13113
|
+
}
|
13098
13114
|
return slots.item?.({
|
13099
13115
|
item,
|
13100
13116
|
index,
|
@@ -13255,6 +13271,9 @@
|
|
13255
13271
|
let match = -1;
|
13256
13272
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13257
13273
|
if (typeof item === 'object') {
|
13274
|
+
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13275
|
+
continue;
|
13276
|
+
}
|
13258
13277
|
const filterKeys = keys || Object.keys(transformed);
|
13259
13278
|
for (const key of filterKeys) {
|
13260
13279
|
const value = getPropertyFromItem(transformed, key);
|
@@ -13693,6 +13712,22 @@
|
|
13693
13712
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
13694
13713
|
onClick: () => select(item, null)
|
13695
13714
|
});
|
13715
|
+
if (item.raw.type === 'divider') {
|
13716
|
+
return slots.divider?.({
|
13717
|
+
props: item.raw,
|
13718
|
+
index
|
13719
|
+
}) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
|
13720
|
+
"key": `divider-${index}`
|
13721
|
+
}), null);
|
13722
|
+
}
|
13723
|
+
if (item.raw.type === 'subheader') {
|
13724
|
+
return slots.subheader?.({
|
13725
|
+
props: item.raw,
|
13726
|
+
index
|
13727
|
+
}) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
|
13728
|
+
"key": `subheader-${index}`
|
13729
|
+
}), null);
|
13730
|
+
}
|
13696
13731
|
return slots.item?.({
|
13697
13732
|
item,
|
13698
13733
|
index,
|
@@ -18103,6 +18138,7 @@
|
|
18103
18138
|
_search.value = val ?? '';
|
18104
18139
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18105
18140
|
model.value = [transformItem$3(props, val)];
|
18141
|
+
vue.nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18106
18142
|
}
|
18107
18143
|
if (val && props.multiple && props.delimiters?.length) {
|
18108
18144
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18419,6 +18455,22 @@
|
|
18419
18455
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18420
18456
|
onClick: () => select(item, null)
|
18421
18457
|
});
|
18458
|
+
if (item.raw.type === 'divider') {
|
18459
|
+
return slots.divider?.({
|
18460
|
+
props: item.raw,
|
18461
|
+
index
|
18462
|
+
}) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
|
18463
|
+
"key": `divider-${index}`
|
18464
|
+
}), null);
|
18465
|
+
}
|
18466
|
+
if (item.raw.type === 'subheader') {
|
18467
|
+
return slots.subheader?.({
|
18468
|
+
props: item.raw,
|
18469
|
+
index
|
18470
|
+
}) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
|
18471
|
+
"key": `subheader-${index}`
|
18472
|
+
}), null);
|
18473
|
+
}
|
18422
18474
|
return slots.item?.({
|
18423
18475
|
item,
|
18424
18476
|
index,
|
@@ -24841,6 +24893,10 @@
|
|
24841
24893
|
type: Number,
|
24842
24894
|
default: 0
|
24843
24895
|
},
|
24896
|
+
minFractionDigits: {
|
24897
|
+
type: Number,
|
24898
|
+
default: null
|
24899
|
+
},
|
24844
24900
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
24845
24901
|
}, 'VNumberInput');
|
24846
24902
|
const VNumberInput = genericComponent()({
|
@@ -24871,9 +24927,19 @@
|
|
24871
24927
|
} = useFocus(props);
|
24872
24928
|
function correctPrecision(val) {
|
24873
24929
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
24874
|
-
|
24875
|
-
|
24876
|
-
|
24930
|
+
if (precision == null) {
|
24931
|
+
return String(val);
|
24932
|
+
}
|
24933
|
+
let fixed = val.toFixed(precision);
|
24934
|
+
if (isFocused.value) {
|
24935
|
+
return Number(fixed).toString(); // trim zeros
|
24936
|
+
}
|
24937
|
+
if ((props.minFractionDigits ?? precision) < precision) {
|
24938
|
+
const trimLimit = precision - props.minFractionDigits;
|
24939
|
+
const [baseDigits, fractionDigits] = fixed.split('.');
|
24940
|
+
fixed = [baseDigits, fractionDigits.replace(new RegExp(`0{1,${trimLimit}}$`), '')].filter(Boolean).join('.');
|
24941
|
+
}
|
24942
|
+
return fixed;
|
24877
24943
|
}
|
24878
24944
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
24879
24945
|
const _inputText = vue.shallowRef(null);
|
@@ -24926,6 +24992,7 @@
|
|
24926
24992
|
}
|
24927
24993
|
};
|
24928
24994
|
vue.watch(() => props.precision, () => formatInputValue());
|
24995
|
+
vue.watch(() => props.minFractionDigits, () => formatInputValue());
|
24929
24996
|
vue.onMounted(() => {
|
24930
24997
|
clampModel();
|
24931
24998
|
});
|
@@ -25027,7 +25094,7 @@
|
|
25027
25094
|
inputText.value = null;
|
25028
25095
|
return;
|
25029
25096
|
}
|
25030
|
-
inputText.value =
|
25097
|
+
inputText.value = correctPrecision(model.value);
|
25031
25098
|
}
|
25032
25099
|
function trimDecimalZeros() {
|
25033
25100
|
if (controlsDisabled.value) return;
|
@@ -32037,7 +32104,7 @@
|
|
32037
32104
|
};
|
32038
32105
|
});
|
32039
32106
|
}
|
32040
|
-
const version$1 = "3.8.5-dev.2025-05-
|
32107
|
+
const version$1 = "3.8.5-dev.2025-05-20";
|
32041
32108
|
createVuetify$1.version = version$1;
|
32042
32109
|
|
32043
32110
|
// Vue's inject() can only be used in setup
|
@@ -32335,7 +32402,7 @@
|
|
32335
32402
|
|
32336
32403
|
/* eslint-disable local-rules/sort-imports */
|
32337
32404
|
|
32338
|
-
const version = "3.8.5-dev.2025-05-
|
32405
|
+
const version = "3.8.5-dev.2025-05-20";
|
32339
32406
|
|
32340
32407
|
/* eslint-disable local-rules/sort-imports */
|
32341
32408
|
|