@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-labs.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
|
*/
|
@@ -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,
|
@@ -18420,6 +18455,22 @@
|
|
18420
18455
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18421
18456
|
onClick: () => select(item, null)
|
18422
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
|
+
}
|
18423
18474
|
return slots.item?.({
|
18424
18475
|
item,
|
18425
18476
|
index,
|
@@ -24842,6 +24893,10 @@
|
|
24842
24893
|
type: Number,
|
24843
24894
|
default: 0
|
24844
24895
|
},
|
24896
|
+
minFractionDigits: {
|
24897
|
+
type: Number,
|
24898
|
+
default: null
|
24899
|
+
},
|
24845
24900
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
24846
24901
|
}, 'VNumberInput');
|
24847
24902
|
const VNumberInput = genericComponent()({
|
@@ -24872,9 +24927,19 @@
|
|
24872
24927
|
} = useFocus(props);
|
24873
24928
|
function correctPrecision(val) {
|
24874
24929
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
24875
|
-
|
24876
|
-
|
24877
|
-
|
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;
|
24878
24943
|
}
|
24879
24944
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
24880
24945
|
const _inputText = vue.shallowRef(null);
|
@@ -24927,6 +24992,7 @@
|
|
24927
24992
|
}
|
24928
24993
|
};
|
24929
24994
|
vue.watch(() => props.precision, () => formatInputValue());
|
24995
|
+
vue.watch(() => props.minFractionDigits, () => formatInputValue());
|
24930
24996
|
vue.onMounted(() => {
|
24931
24997
|
clampModel();
|
24932
24998
|
});
|
@@ -25028,7 +25094,7 @@
|
|
25028
25094
|
inputText.value = null;
|
25029
25095
|
return;
|
25030
25096
|
}
|
25031
|
-
inputText.value =
|
25097
|
+
inputText.value = correctPrecision(model.value);
|
25032
25098
|
}
|
25033
25099
|
function trimDecimalZeros() {
|
25034
25100
|
if (controlsDisabled.value) return;
|
@@ -32038,7 +32104,7 @@
|
|
32038
32104
|
};
|
32039
32105
|
});
|
32040
32106
|
}
|
32041
|
-
const version$1 = "3.8.5-dev.2025-05-
|
32107
|
+
const version$1 = "3.8.5-dev.2025-05-20";
|
32042
32108
|
createVuetify$1.version = version$1;
|
32043
32109
|
|
32044
32110
|
// Vue's inject() can only be used in setup
|
@@ -32336,7 +32402,7 @@
|
|
32336
32402
|
|
32337
32403
|
/* eslint-disable local-rules/sort-imports */
|
32338
32404
|
|
32339
|
-
const version = "3.8.5-dev.2025-05-
|
32405
|
+
const version = "3.8.5-dev.2025-05-20";
|
32340
32406
|
|
32341
32407
|
/* eslint-disable local-rules/sort-imports */
|
32342
32408
|
|