@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.
Files changed (44) hide show
  1. package/CHANGELOG.md +5 -3
  2. package/dist/json/attributes.json +1597 -1593
  3. package/dist/json/importMap-labs.json +22 -22
  4. package/dist/json/importMap.json +176 -176
  5. package/dist/json/tags.json +1 -0
  6. package/dist/json/web-types.json +3310 -3210
  7. package/dist/vuetify-labs.cjs +135 -69
  8. package/dist/vuetify-labs.css +5912 -5912
  9. package/dist/vuetify-labs.d.ts +161 -75
  10. package/dist/vuetify-labs.esm.js +135 -69
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +135 -69
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +135 -69
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +1708 -1708
  17. package/dist/vuetify.d.ts +158 -72
  18. package/dist/vuetify.esm.js +135 -69
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +135 -69
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +71 -69
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.d.ts +26 -2
  26. package/lib/components/VAutocomplete/VAutocomplete.js +18 -1
  27. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  28. package/lib/components/VCombobox/VCombobox.d.ts +26 -2
  29. package/lib/components/VCombobox/VCombobox.js +18 -1
  30. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  31. package/lib/components/VList/VListChildren.js.map +1 -1
  32. package/lib/components/VNumberInput/VNumberInput.d.ts +14 -0
  33. package/lib/components/VNumberInput/VNumberInput.js +19 -4
  34. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  35. package/lib/components/VSelect/VSelect.d.ts +26 -2
  36. package/lib/components/VSelect/VSelect.js +18 -1
  37. package/lib/components/VSelect/VSelect.js.map +1 -1
  38. package/lib/composables/filter.js +3 -0
  39. package/lib/composables/filter.js.map +1 -1
  40. package/lib/entry-bundler.js +1 -1
  41. package/lib/framework.d.ts +66 -66
  42. package/lib/framework.js +1 -1
  43. package/lib/labs/VFileUpload/VFileUpload.d.ts +3 -3
  44. package/package.json +1 -1
package/dist/vuetify.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.5-dev.2025-05-18
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
- const fixed = precision == null ? String(val) : val.toFixed(precision);
25154
- return isFocused.value ? Number(fixed).toString() // trim zeros
25155
- : fixed;
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 = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
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-18";
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-18";
29442
+ const version = "3.8.5-dev.2025-05-20";
29377
29443
  createVuetify.version = version;
29378
29444
 
29379
29445
  exports.blueprints = index;