@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
  */
@@ -8327,6 +8327,68 @@ const VChip = genericComponent()({
8327
8327
  }
8328
8328
  });
8329
8329
 
8330
+ const makeVDividerProps = propsFactory({
8331
+ color: String,
8332
+ inset: Boolean,
8333
+ length: [Number, String],
8334
+ opacity: [Number, String],
8335
+ thickness: [Number, String],
8336
+ vertical: Boolean,
8337
+ ...makeComponentProps(),
8338
+ ...makeThemeProps()
8339
+ }, 'VDivider');
8340
+ const VDivider = genericComponent()({
8341
+ name: 'VDivider',
8342
+ props: makeVDividerProps(),
8343
+ setup(props, _ref) {
8344
+ let {
8345
+ attrs,
8346
+ slots
8347
+ } = _ref;
8348
+ const {
8349
+ themeClasses
8350
+ } = provideTheme(props);
8351
+ const {
8352
+ textColorClasses,
8353
+ textColorStyles
8354
+ } = useTextColor(() => props.color);
8355
+ const dividerStyles = computed(() => {
8356
+ const styles = {};
8357
+ if (props.length) {
8358
+ styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
8359
+ }
8360
+ if (props.thickness) {
8361
+ styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
8362
+ }
8363
+ return styles;
8364
+ });
8365
+ useRender(() => {
8366
+ const divider = createVNode("hr", {
8367
+ "class": [{
8368
+ 'v-divider': true,
8369
+ 'v-divider--inset': props.inset,
8370
+ 'v-divider--vertical': props.vertical
8371
+ }, themeClasses.value, textColorClasses.value, props.class],
8372
+ "style": [dividerStyles.value, textColorStyles.value, {
8373
+ '--v-border-opacity': props.opacity
8374
+ }, props.style],
8375
+ "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
8376
+ "role": `${attrs.role || 'separator'}`
8377
+ }, null);
8378
+ if (!slots.default) return divider;
8379
+ return createVNode("div", {
8380
+ "class": ['v-divider__wrapper', {
8381
+ 'v-divider__wrapper--vertical': props.vertical,
8382
+ 'v-divider__wrapper--inset': props.inset
8383
+ }]
8384
+ }, [divider, createVNode("div", {
8385
+ "class": "v-divider__content"
8386
+ }, [slots.default()]), divider]);
8387
+ });
8388
+ return {};
8389
+ }
8390
+ });
8391
+
8330
8392
  // Utilities
8331
8393
 
8332
8394
  // List
@@ -9478,68 +9540,6 @@ const VListSubheader = genericComponent()({
9478
9540
  }
9479
9541
  });
9480
9542
 
9481
- const makeVDividerProps = propsFactory({
9482
- color: String,
9483
- inset: Boolean,
9484
- length: [Number, String],
9485
- opacity: [Number, String],
9486
- thickness: [Number, String],
9487
- vertical: Boolean,
9488
- ...makeComponentProps(),
9489
- ...makeThemeProps()
9490
- }, 'VDivider');
9491
- const VDivider = genericComponent()({
9492
- name: 'VDivider',
9493
- props: makeVDividerProps(),
9494
- setup(props, _ref) {
9495
- let {
9496
- attrs,
9497
- slots
9498
- } = _ref;
9499
- const {
9500
- themeClasses
9501
- } = provideTheme(props);
9502
- const {
9503
- textColorClasses,
9504
- textColorStyles
9505
- } = useTextColor(() => props.color);
9506
- const dividerStyles = computed(() => {
9507
- const styles = {};
9508
- if (props.length) {
9509
- styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
9510
- }
9511
- if (props.thickness) {
9512
- styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
9513
- }
9514
- return styles;
9515
- });
9516
- useRender(() => {
9517
- const divider = createVNode("hr", {
9518
- "class": [{
9519
- 'v-divider': true,
9520
- 'v-divider--inset': props.inset,
9521
- 'v-divider--vertical': props.vertical
9522
- }, themeClasses.value, textColorClasses.value, props.class],
9523
- "style": [dividerStyles.value, textColorStyles.value, {
9524
- '--v-border-opacity': props.opacity
9525
- }, props.style],
9526
- "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
9527
- "role": `${attrs.role || 'separator'}`
9528
- }, null);
9529
- if (!slots.default) return divider;
9530
- return createVNode("div", {
9531
- "class": ['v-divider__wrapper', {
9532
- 'v-divider__wrapper--vertical': props.vertical,
9533
- 'v-divider__wrapper--inset': props.inset
9534
- }]
9535
- }, [divider, createVNode("div", {
9536
- "class": "v-divider__content"
9537
- }, [slots.default()]), divider]);
9538
- });
9539
- return {};
9540
- }
9541
- });
9542
-
9543
9543
  // Types
9544
9544
 
9545
9545
  const makeVListChildrenProps = propsFactory({
@@ -13091,6 +13091,22 @@ const VSelect = genericComponent()({
13091
13091
  key: item.value,
13092
13092
  onClick: () => select(item, null)
13093
13093
  });
13094
+ if (item.raw.type === 'divider') {
13095
+ return slots.divider?.({
13096
+ props: item.raw,
13097
+ index
13098
+ }) ?? createVNode(VDivider, mergeProps(item.props, {
13099
+ "key": `divider-${index}`
13100
+ }), null);
13101
+ }
13102
+ if (item.raw.type === 'subheader') {
13103
+ return slots.subheader?.({
13104
+ props: item.raw,
13105
+ index
13106
+ }) ?? createVNode(VListSubheader, mergeProps(item.props, {
13107
+ "key": `subheader-${index}`
13108
+ }), null);
13109
+ }
13094
13110
  return slots.item?.({
13095
13111
  item,
13096
13112
  index,
@@ -13251,6 +13267,9 @@ function filterItems(items, query, options) {
13251
13267
  let match = -1;
13252
13268
  if ((query || customFiltersLength > 0) && !options?.noFilter) {
13253
13269
  if (typeof item === 'object') {
13270
+ if (['divider', 'subheader'].includes(item.raw?.type)) {
13271
+ continue;
13272
+ }
13254
13273
  const filterKeys = keys || Object.keys(transformed);
13255
13274
  for (const key of filterKeys) {
13256
13275
  const value = getPropertyFromItem(transformed, key);
@@ -13689,6 +13708,22 @@ const VAutocomplete = genericComponent()({
13689
13708
  active: highlightFirst.value && index === 0 ? true : undefined,
13690
13709
  onClick: () => select(item, null)
13691
13710
  });
13711
+ if (item.raw.type === 'divider') {
13712
+ return slots.divider?.({
13713
+ props: item.raw,
13714
+ index
13715
+ }) ?? createVNode(VDivider, mergeProps(item.props, {
13716
+ "key": `divider-${index}`
13717
+ }), null);
13718
+ }
13719
+ if (item.raw.type === 'subheader') {
13720
+ return slots.subheader?.({
13721
+ props: item.raw,
13722
+ index
13723
+ }) ?? createVNode(VListSubheader, mergeProps(item.props, {
13724
+ "key": `subheader-${index}`
13725
+ }), null);
13726
+ }
13692
13727
  return slots.item?.({
13693
13728
  item,
13694
13729
  index,
@@ -18416,6 +18451,22 @@ const VCombobox = genericComponent()({
18416
18451
  active: highlightFirst.value && index === 0 ? true : undefined,
18417
18452
  onClick: () => select(item, null)
18418
18453
  });
18454
+ if (item.raw.type === 'divider') {
18455
+ return slots.divider?.({
18456
+ props: item.raw,
18457
+ index
18458
+ }) ?? createVNode(VDivider, mergeProps(item.props, {
18459
+ "key": `divider-${index}`
18460
+ }), null);
18461
+ }
18462
+ if (item.raw.type === 'subheader') {
18463
+ return slots.subheader?.({
18464
+ props: item.raw,
18465
+ index
18466
+ }) ?? createVNode(VListSubheader, mergeProps(item.props, {
18467
+ "key": `subheader-${index}`
18468
+ }), null);
18469
+ }
18419
18470
  return slots.item?.({
18420
18471
  item,
18421
18472
  index,
@@ -24838,6 +24889,10 @@ const makeVNumberInputProps = propsFactory({
24838
24889
  type: Number,
24839
24890
  default: 0
24840
24891
  },
24892
+ minFractionDigits: {
24893
+ type: Number,
24894
+ default: null
24895
+ },
24841
24896
  ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
24842
24897
  }, 'VNumberInput');
24843
24898
  const VNumberInput = genericComponent()({
@@ -24868,9 +24923,19 @@ const VNumberInput = genericComponent()({
24868
24923
  } = useFocus(props);
24869
24924
  function correctPrecision(val) {
24870
24925
  let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
24871
- const fixed = precision == null ? String(val) : val.toFixed(precision);
24872
- return isFocused.value ? Number(fixed).toString() // trim zeros
24873
- : fixed;
24926
+ if (precision == null) {
24927
+ return String(val);
24928
+ }
24929
+ let fixed = val.toFixed(precision);
24930
+ if (isFocused.value) {
24931
+ return Number(fixed).toString(); // trim zeros
24932
+ }
24933
+ if ((props.minFractionDigits ?? precision) < precision) {
24934
+ const trimLimit = precision - props.minFractionDigits;
24935
+ const [baseDigits, fractionDigits] = fixed.split('.');
24936
+ fixed = [baseDigits, fractionDigits.replace(new RegExp(`0{1,${trimLimit}}$`), '')].filter(Boolean).join('.');
24937
+ }
24938
+ return fixed;
24874
24939
  }
24875
24940
  const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
24876
24941
  const _inputText = shallowRef(null);
@@ -24923,6 +24988,7 @@ const VNumberInput = genericComponent()({
24923
24988
  }
24924
24989
  };
24925
24990
  watch(() => props.precision, () => formatInputValue());
24991
+ watch(() => props.minFractionDigits, () => formatInputValue());
24926
24992
  onMounted(() => {
24927
24993
  clampModel();
24928
24994
  });
@@ -25024,7 +25090,7 @@ const VNumberInput = genericComponent()({
25024
25090
  inputText.value = null;
25025
25091
  return;
25026
25092
  }
25027
- inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
25093
+ inputText.value = correctPrecision(model.value);
25028
25094
  }
25029
25095
  function trimDecimalZeros() {
25030
25096
  if (controlsDisabled.value) return;
@@ -32034,7 +32100,7 @@ function createVuetify$1() {
32034
32100
  };
32035
32101
  });
32036
32102
  }
32037
- const version$1 = "3.8.5-dev.2025-05-18";
32103
+ const version$1 = "3.8.5-dev.2025-05-20";
32038
32104
  createVuetify$1.version = version$1;
32039
32105
 
32040
32106
  // Vue's inject() can only be used in setup
@@ -32332,7 +32398,7 @@ var index = /*#__PURE__*/Object.freeze({
32332
32398
 
32333
32399
  /* eslint-disable local-rules/sort-imports */
32334
32400
 
32335
- const version = "3.8.5-dev.2025-05-18";
32401
+ const version = "3.8.5-dev.2025-05-20";
32336
32402
 
32337
32403
  /* eslint-disable local-rules/sort-imports */
32338
32404