@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
  */
@@ -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
- const fixed = precision == null ? String(val) : val.toFixed(precision);
24876
- return isFocused.value ? Number(fixed).toString() // trim zeros
24877
- : fixed;
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 = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
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-18";
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-18";
32405
+ const version = "3.8.5-dev.2025-05-20";
32340
32406
 
32341
32407
  /* eslint-disable local-rules/sort-imports */
32342
32408