@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.esm.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
|
*/
|
@@ -8605,6 +8605,68 @@ const VChip = genericComponent()({
|
|
8605
8605
|
}
|
8606
8606
|
});
|
8607
8607
|
|
8608
|
+
const makeVDividerProps = propsFactory({
|
8609
|
+
color: String,
|
8610
|
+
inset: Boolean,
|
8611
|
+
length: [Number, String],
|
8612
|
+
opacity: [Number, String],
|
8613
|
+
thickness: [Number, String],
|
8614
|
+
vertical: Boolean,
|
8615
|
+
...makeComponentProps(),
|
8616
|
+
...makeThemeProps()
|
8617
|
+
}, 'VDivider');
|
8618
|
+
const VDivider = genericComponent()({
|
8619
|
+
name: 'VDivider',
|
8620
|
+
props: makeVDividerProps(),
|
8621
|
+
setup(props, _ref) {
|
8622
|
+
let {
|
8623
|
+
attrs,
|
8624
|
+
slots
|
8625
|
+
} = _ref;
|
8626
|
+
const {
|
8627
|
+
themeClasses
|
8628
|
+
} = provideTheme(props);
|
8629
|
+
const {
|
8630
|
+
textColorClasses,
|
8631
|
+
textColorStyles
|
8632
|
+
} = useTextColor(() => props.color);
|
8633
|
+
const dividerStyles = computed(() => {
|
8634
|
+
const styles = {};
|
8635
|
+
if (props.length) {
|
8636
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
8637
|
+
}
|
8638
|
+
if (props.thickness) {
|
8639
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
8640
|
+
}
|
8641
|
+
return styles;
|
8642
|
+
});
|
8643
|
+
useRender(() => {
|
8644
|
+
const divider = createVNode("hr", {
|
8645
|
+
"class": [{
|
8646
|
+
'v-divider': true,
|
8647
|
+
'v-divider--inset': props.inset,
|
8648
|
+
'v-divider--vertical': props.vertical
|
8649
|
+
}, themeClasses.value, textColorClasses.value, props.class],
|
8650
|
+
"style": [dividerStyles.value, textColorStyles.value, {
|
8651
|
+
'--v-border-opacity': props.opacity
|
8652
|
+
}, props.style],
|
8653
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
8654
|
+
"role": `${attrs.role || 'separator'}`
|
8655
|
+
}, null);
|
8656
|
+
if (!slots.default) return divider;
|
8657
|
+
return createVNode("div", {
|
8658
|
+
"class": ['v-divider__wrapper', {
|
8659
|
+
'v-divider__wrapper--vertical': props.vertical,
|
8660
|
+
'v-divider__wrapper--inset': props.inset
|
8661
|
+
}]
|
8662
|
+
}, [divider, createVNode("div", {
|
8663
|
+
"class": "v-divider__content"
|
8664
|
+
}, [slots.default()]), divider]);
|
8665
|
+
});
|
8666
|
+
return {};
|
8667
|
+
}
|
8668
|
+
});
|
8669
|
+
|
8608
8670
|
// Utilities
|
8609
8671
|
|
8610
8672
|
// List
|
@@ -9756,68 +9818,6 @@ const VListSubheader = genericComponent()({
|
|
9756
9818
|
}
|
9757
9819
|
});
|
9758
9820
|
|
9759
|
-
const makeVDividerProps = propsFactory({
|
9760
|
-
color: String,
|
9761
|
-
inset: Boolean,
|
9762
|
-
length: [Number, String],
|
9763
|
-
opacity: [Number, String],
|
9764
|
-
thickness: [Number, String],
|
9765
|
-
vertical: Boolean,
|
9766
|
-
...makeComponentProps(),
|
9767
|
-
...makeThemeProps()
|
9768
|
-
}, 'VDivider');
|
9769
|
-
const VDivider = genericComponent()({
|
9770
|
-
name: 'VDivider',
|
9771
|
-
props: makeVDividerProps(),
|
9772
|
-
setup(props, _ref) {
|
9773
|
-
let {
|
9774
|
-
attrs,
|
9775
|
-
slots
|
9776
|
-
} = _ref;
|
9777
|
-
const {
|
9778
|
-
themeClasses
|
9779
|
-
} = provideTheme(props);
|
9780
|
-
const {
|
9781
|
-
textColorClasses,
|
9782
|
-
textColorStyles
|
9783
|
-
} = useTextColor(() => props.color);
|
9784
|
-
const dividerStyles = computed(() => {
|
9785
|
-
const styles = {};
|
9786
|
-
if (props.length) {
|
9787
|
-
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
9788
|
-
}
|
9789
|
-
if (props.thickness) {
|
9790
|
-
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
9791
|
-
}
|
9792
|
-
return styles;
|
9793
|
-
});
|
9794
|
-
useRender(() => {
|
9795
|
-
const divider = createVNode("hr", {
|
9796
|
-
"class": [{
|
9797
|
-
'v-divider': true,
|
9798
|
-
'v-divider--inset': props.inset,
|
9799
|
-
'v-divider--vertical': props.vertical
|
9800
|
-
}, themeClasses.value, textColorClasses.value, props.class],
|
9801
|
-
"style": [dividerStyles.value, textColorStyles.value, {
|
9802
|
-
'--v-border-opacity': props.opacity
|
9803
|
-
}, props.style],
|
9804
|
-
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
9805
|
-
"role": `${attrs.role || 'separator'}`
|
9806
|
-
}, null);
|
9807
|
-
if (!slots.default) return divider;
|
9808
|
-
return createVNode("div", {
|
9809
|
-
"class": ['v-divider__wrapper', {
|
9810
|
-
'v-divider__wrapper--vertical': props.vertical,
|
9811
|
-
'v-divider__wrapper--inset': props.inset
|
9812
|
-
}]
|
9813
|
-
}, [divider, createVNode("div", {
|
9814
|
-
"class": "v-divider__content"
|
9815
|
-
}, [slots.default()]), divider]);
|
9816
|
-
});
|
9817
|
-
return {};
|
9818
|
-
}
|
9819
|
-
});
|
9820
|
-
|
9821
9821
|
// Types
|
9822
9822
|
|
9823
9823
|
const makeVListChildrenProps = propsFactory({
|
@@ -13369,6 +13369,22 @@ const VSelect = genericComponent()({
|
|
13369
13369
|
key: item.value,
|
13370
13370
|
onClick: () => select(item, null)
|
13371
13371
|
});
|
13372
|
+
if (item.raw.type === 'divider') {
|
13373
|
+
return slots.divider?.({
|
13374
|
+
props: item.raw,
|
13375
|
+
index
|
13376
|
+
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13377
|
+
"key": `divider-${index}`
|
13378
|
+
}), null);
|
13379
|
+
}
|
13380
|
+
if (item.raw.type === 'subheader') {
|
13381
|
+
return slots.subheader?.({
|
13382
|
+
props: item.raw,
|
13383
|
+
index
|
13384
|
+
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
13385
|
+
"key": `subheader-${index}`
|
13386
|
+
}), null);
|
13387
|
+
}
|
13372
13388
|
return slots.item?.({
|
13373
13389
|
item,
|
13374
13390
|
index,
|
@@ -13529,6 +13545,9 @@ function filterItems(items, query, options) {
|
|
13529
13545
|
let match = -1;
|
13530
13546
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13531
13547
|
if (typeof item === 'object') {
|
13548
|
+
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13549
|
+
continue;
|
13550
|
+
}
|
13532
13551
|
const filterKeys = keys || Object.keys(transformed);
|
13533
13552
|
for (const key of filterKeys) {
|
13534
13553
|
const value = getPropertyFromItem(transformed, key);
|
@@ -13967,6 +13986,22 @@ const VAutocomplete = genericComponent()({
|
|
13967
13986
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
13968
13987
|
onClick: () => select(item, null)
|
13969
13988
|
});
|
13989
|
+
if (item.raw.type === 'divider') {
|
13990
|
+
return slots.divider?.({
|
13991
|
+
props: item.raw,
|
13992
|
+
index
|
13993
|
+
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13994
|
+
"key": `divider-${index}`
|
13995
|
+
}), null);
|
13996
|
+
}
|
13997
|
+
if (item.raw.type === 'subheader') {
|
13998
|
+
return slots.subheader?.({
|
13999
|
+
props: item.raw,
|
14000
|
+
index
|
14001
|
+
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
14002
|
+
"key": `subheader-${index}`
|
14003
|
+
}), null);
|
14004
|
+
}
|
13970
14005
|
return slots.item?.({
|
13971
14006
|
item,
|
13972
14007
|
index,
|
@@ -18377,6 +18412,7 @@ const VCombobox = genericComponent()({
|
|
18377
18412
|
_search.value = val ?? '';
|
18378
18413
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18379
18414
|
model.value = [transformItem$3(props, val)];
|
18415
|
+
nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18380
18416
|
}
|
18381
18417
|
if (val && props.multiple && props.delimiters?.length) {
|
18382
18418
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18693,6 +18729,22 @@ const VCombobox = genericComponent()({
|
|
18693
18729
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18694
18730
|
onClick: () => select(item, null)
|
18695
18731
|
});
|
18732
|
+
if (item.raw.type === 'divider') {
|
18733
|
+
return slots.divider?.({
|
18734
|
+
props: item.raw,
|
18735
|
+
index
|
18736
|
+
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
18737
|
+
"key": `divider-${index}`
|
18738
|
+
}), null);
|
18739
|
+
}
|
18740
|
+
if (item.raw.type === 'subheader') {
|
18741
|
+
return slots.subheader?.({
|
18742
|
+
props: item.raw,
|
18743
|
+
index
|
18744
|
+
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
18745
|
+
"key": `subheader-${index}`
|
18746
|
+
}), null);
|
18747
|
+
}
|
18696
18748
|
return slots.item?.({
|
18697
18749
|
item,
|
18698
18750
|
index,
|
@@ -25115,6 +25167,10 @@ const makeVNumberInputProps = propsFactory({
|
|
25115
25167
|
type: Number,
|
25116
25168
|
default: 0
|
25117
25169
|
},
|
25170
|
+
minFractionDigits: {
|
25171
|
+
type: Number,
|
25172
|
+
default: null
|
25173
|
+
},
|
25118
25174
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
25119
25175
|
}, 'VNumberInput');
|
25120
25176
|
const VNumberInput = genericComponent()({
|
@@ -25145,9 +25201,19 @@ const VNumberInput = genericComponent()({
|
|
25145
25201
|
} = useFocus(props);
|
25146
25202
|
function correctPrecision(val) {
|
25147
25203
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
25148
|
-
|
25149
|
-
|
25150
|
-
|
25204
|
+
if (precision == null) {
|
25205
|
+
return String(val);
|
25206
|
+
}
|
25207
|
+
let fixed = val.toFixed(precision);
|
25208
|
+
if (isFocused.value) {
|
25209
|
+
return Number(fixed).toString(); // trim zeros
|
25210
|
+
}
|
25211
|
+
if ((props.minFractionDigits ?? precision) < precision) {
|
25212
|
+
const trimLimit = precision - props.minFractionDigits;
|
25213
|
+
const [baseDigits, fractionDigits] = fixed.split('.');
|
25214
|
+
fixed = [baseDigits, fractionDigits.replace(new RegExp(`0{1,${trimLimit}}$`), '')].filter(Boolean).join('.');
|
25215
|
+
}
|
25216
|
+
return fixed;
|
25151
25217
|
}
|
25152
25218
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
25153
25219
|
const _inputText = shallowRef(null);
|
@@ -25200,6 +25266,7 @@ const VNumberInput = genericComponent()({
|
|
25200
25266
|
}
|
25201
25267
|
};
|
25202
25268
|
watch(() => props.precision, () => formatInputValue());
|
25269
|
+
watch(() => props.minFractionDigits, () => formatInputValue());
|
25203
25270
|
onMounted(() => {
|
25204
25271
|
clampModel();
|
25205
25272
|
});
|
@@ -25301,7 +25368,7 @@ const VNumberInput = genericComponent()({
|
|
25301
25368
|
inputText.value = null;
|
25302
25369
|
return;
|
25303
25370
|
}
|
25304
|
-
inputText.value =
|
25371
|
+
inputText.value = correctPrecision(model.value);
|
25305
25372
|
}
|
25306
25373
|
function trimDecimalZeros() {
|
25307
25374
|
if (controlsDisabled.value) return;
|
@@ -29343,7 +29410,7 @@ function createVuetify$1() {
|
|
29343
29410
|
};
|
29344
29411
|
});
|
29345
29412
|
}
|
29346
|
-
const version$1 = "3.8.5-dev.2025-05-
|
29413
|
+
const version$1 = "3.8.5-dev.2025-05-20";
|
29347
29414
|
createVuetify$1.version = version$1;
|
29348
29415
|
|
29349
29416
|
// Vue's inject() can only be used in setup
|
@@ -29368,7 +29435,7 @@ const createVuetify = function () {
|
|
29368
29435
|
...options
|
29369
29436
|
});
|
29370
29437
|
};
|
29371
|
-
const version = "3.8.5-dev.2025-05-
|
29438
|
+
const version = "3.8.5-dev.2025-05-20";
|
29372
29439
|
createVuetify.version = version;
|
29373
29440
|
|
29374
29441
|
export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };
|