@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
@@ -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
  */
@@ -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,
@@ -18694,6 +18729,22 @@ const VCombobox = genericComponent()({
18694
18729
  active: highlightFirst.value && index === 0 ? true : undefined,
18695
18730
  onClick: () => select(item, null)
18696
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
+ }
18697
18748
  return slots.item?.({
18698
18749
  item,
18699
18750
  index,
@@ -25116,6 +25167,10 @@ const makeVNumberInputProps = propsFactory({
25116
25167
  type: Number,
25117
25168
  default: 0
25118
25169
  },
25170
+ minFractionDigits: {
25171
+ type: Number,
25172
+ default: null
25173
+ },
25119
25174
  ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
25120
25175
  }, 'VNumberInput');
25121
25176
  const VNumberInput = genericComponent()({
@@ -25146,9 +25201,19 @@ const VNumberInput = genericComponent()({
25146
25201
  } = useFocus(props);
25147
25202
  function correctPrecision(val) {
25148
25203
  let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
25149
- const fixed = precision == null ? String(val) : val.toFixed(precision);
25150
- return isFocused.value ? Number(fixed).toString() // trim zeros
25151
- : fixed;
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;
25152
25217
  }
25153
25218
  const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
25154
25219
  const _inputText = shallowRef(null);
@@ -25201,6 +25266,7 @@ const VNumberInput = genericComponent()({
25201
25266
  }
25202
25267
  };
25203
25268
  watch(() => props.precision, () => formatInputValue());
25269
+ watch(() => props.minFractionDigits, () => formatInputValue());
25204
25270
  onMounted(() => {
25205
25271
  clampModel();
25206
25272
  });
@@ -25302,7 +25368,7 @@ const VNumberInput = genericComponent()({
25302
25368
  inputText.value = null;
25303
25369
  return;
25304
25370
  }
25305
- inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
25371
+ inputText.value = correctPrecision(model.value);
25306
25372
  }
25307
25373
  function trimDecimalZeros() {
25308
25374
  if (controlsDisabled.value) return;
@@ -29344,7 +29410,7 @@ function createVuetify$1() {
29344
29410
  };
29345
29411
  });
29346
29412
  }
29347
- const version$1 = "3.8.5-dev.2025-05-18";
29413
+ const version$1 = "3.8.5-dev.2025-05-20";
29348
29414
  createVuetify$1.version = version$1;
29349
29415
 
29350
29416
  // Vue's inject() can only be used in setup
@@ -29369,7 +29435,7 @@ const createVuetify = function () {
29369
29435
  ...options
29370
29436
  });
29371
29437
  };
29372
- const version = "3.8.5-dev.2025-05-18";
29438
+ const version = "3.8.5-dev.2025-05-20";
29373
29439
  createVuetify.version = version;
29374
29440
 
29375
29441
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };