@vuetify/nightly 3.9.3-dev.2025-07-31 → 3.9.3-dev.2025-08-02

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 (70) hide show
  1. package/CHANGELOG.md +10 -3
  2. package/dist/json/attributes.json +2098 -2022
  3. package/dist/json/importMap-labs.json +24 -24
  4. package/dist/json/importMap.json +168 -168
  5. package/dist/json/tags.json +19 -0
  6. package/dist/json/web-types.json +4252 -4050
  7. package/dist/vuetify-labs.cjs +77 -24
  8. package/dist/vuetify-labs.css +5349 -5343
  9. package/dist/vuetify-labs.d.ts +329 -61
  10. package/dist/vuetify-labs.esm.js +77 -24
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +77 -24
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +77 -24
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +2939 -2933
  17. package/dist/vuetify.d.ts +329 -61
  18. package/dist/vuetify.esm.js +77 -24
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +77 -24
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +252 -249
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VDataIterator/VDataIterator.d.ts +1 -0
  26. package/lib/components/VDataIterator/VDataIterator.js +1 -0
  27. package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
  28. package/lib/components/VDataTable/VDataTable.css +7 -1
  29. package/lib/components/VDataTable/VDataTable.d.ts +164 -0
  30. package/lib/components/VDataTable/VDataTable.sass +4 -1
  31. package/lib/components/VDataTable/VDataTableColumn.d.ts +4 -1
  32. package/lib/components/VDataTable/VDataTableColumn.js +6 -2
  33. package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
  34. package/lib/components/VDataTable/VDataTableGroupHeaderRow.d.ts +57 -3
  35. package/lib/components/VDataTable/VDataTableGroupHeaderRow.js +27 -12
  36. package/lib/components/VDataTable/VDataTableGroupHeaderRow.js.map +1 -1
  37. package/lib/components/VDataTable/VDataTableHeaders.js +3 -0
  38. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  39. package/lib/components/VDataTable/VDataTableRow.d.ts +51 -0
  40. package/lib/components/VDataTable/VDataTableRow.js +17 -4
  41. package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
  42. package/lib/components/VDataTable/VDataTableRows.d.ts +100 -0
  43. package/lib/components/VDataTable/VDataTableRows.js +9 -4
  44. package/lib/components/VDataTable/VDataTableRows.js.map +1 -1
  45. package/lib/components/VDataTable/VDataTableServer.d.ts +110 -0
  46. package/lib/components/VDataTable/VDataTableVirtual.d.ts +110 -0
  47. package/lib/components/VDataTable/composables/headers.d.ts +14 -0
  48. package/lib/components/VDataTable/types.d.ts +1 -0
  49. package/lib/components/VDataTable/types.js.map +1 -1
  50. package/lib/components/VFileInput/VFileInput.d.ts +25 -0
  51. package/lib/components/VFileInput/VFileInput.js +11 -1
  52. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  53. package/lib/components/VSkeletonLoader/VSkeletonLoader.js +6 -4
  54. package/lib/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
  55. package/lib/components/VWindow/VWindow.js +2 -2
  56. package/lib/components/VWindow/VWindow.js.map +1 -1
  57. package/lib/entry-bundler.js +1 -1
  58. package/lib/framework.d.ts +62 -61
  59. package/lib/framework.js +1 -1
  60. package/lib/iconsets/fa.js +2 -0
  61. package/lib/iconsets/fa.js.map +1 -1
  62. package/lib/iconsets/fa4.js +2 -0
  63. package/lib/iconsets/fa4.js.map +1 -1
  64. package/lib/iconsets/md.js +2 -0
  65. package/lib/iconsets/md.js.map +1 -1
  66. package/lib/iconsets/mdi-svg.js +2 -0
  67. package/lib/iconsets/mdi-svg.js.map +1 -1
  68. package/lib/iconsets/mdi.js +2 -0
  69. package/lib/iconsets/mdi.js.map +1 -1
  70. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.9.3-dev.2025-07-31
2
+ * Vuetify v3.9.3-dev.2025-08-02
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -1869,6 +1869,8 @@ const aliases = {
1869
1869
  calendar: 'mdi-calendar',
1870
1870
  treeviewCollapse: 'mdi-menu-down',
1871
1871
  treeviewExpand: 'mdi-menu-right',
1872
+ tableGroupCollapse: 'mdi-chevron-down',
1873
+ tableGroupExpand: 'mdi-chevron-right',
1872
1874
  eyeDropper: 'mdi-eyedropper',
1873
1875
  upload: 'mdi-cloud-upload',
1874
1876
  color: 'mdi-palette',
@@ -15864,7 +15866,7 @@ const VWindow = genericComponent()({
15864
15866
  'v-window--vertical-arrows': !!props.verticalArrows,
15865
15867
  'v-window--crossfade': !!props.crossfade
15866
15868
  }, themeClasses.value, props.class]),
15867
- "style": normalizeStyle([props.style, props.transitionDuration ? {
15869
+ "style": normalizeStyle([props.style, props.transitionDuration && !PREFERS_REDUCED_MOTION ? {
15868
15870
  '--v-window-transition-duration': convertToUnit(props.transitionDuration, 'ms')
15869
15871
  } : undefined])
15870
15872
  }, {
@@ -20669,6 +20671,7 @@ const VDataIterator = genericComponent()({
20669
20671
  isGroupOpen,
20670
20672
  toggleGroup,
20671
20673
  items: paginatedItemsWithoutGroups.value,
20674
+ itemsCount: filteredItems.value.length,
20672
20675
  groupedItems: paginatedItems.value
20673
20676
  }));
20674
20677
  useRender(() => createVNode(props.tag, {
@@ -21179,6 +21182,8 @@ const VDataTableColumn = defineFunctionalComponent({
21179
21182
  lastFixed: Boolean,
21180
21183
  firstFixedEnd: Boolean,
21181
21184
  noPadding: Boolean,
21185
+ indent: [Number, String],
21186
+ empty: Boolean,
21182
21187
  tag: String,
21183
21188
  width: [Number, String],
21184
21189
  maxWidth: [Number, String],
@@ -21196,14 +21201,16 @@ const VDataTableColumn = defineFunctionalComponent({
21196
21201
  'v-data-table-column--last-fixed': props.lastFixed,
21197
21202
  'v-data-table-column--first-fixed-end': props.firstFixedEnd,
21198
21203
  'v-data-table-column--no-padding': props.noPadding,
21199
- 'v-data-table-column--nowrap': props.nowrap
21204
+ 'v-data-table-column--nowrap': props.nowrap,
21205
+ 'v-data-table-column--empty': props.empty
21200
21206
  }, `v-data-table-column--align-${props.align}`]),
21201
21207
  "style": {
21202
21208
  height: convertToUnit(props.height),
21203
21209
  width: convertToUnit(props.width),
21204
21210
  maxWidth: convertToUnit(props.maxWidth),
21205
21211
  left: fixedSide === 'start' ? convertToUnit(props.fixedOffset || null) : undefined,
21206
- right: fixedSide === 'end' ? convertToUnit(props.fixedEndOffset || null) : undefined
21212
+ right: fixedSide === 'end' ? convertToUnit(props.fixedEndOffset || null) : undefined,
21213
+ paddingInlineStart: props.indent ? convertToUnit(props.indent) : undefined
21207
21214
  }
21208
21215
  }, {
21209
21216
  default: () => [slots.default?.()]
@@ -21618,6 +21625,7 @@ const VDataTableHeaders = genericComponent()({
21618
21625
  y
21619
21626
  } = _ref2;
21620
21627
  const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand';
21628
+ const isEmpty = column.key === 'data-table-group' && column.width === 0 && !column.title;
21621
21629
  const headerProps = mergeProps(props.headerProps ?? {}, column.headerProps ?? {});
21622
21630
  return createVNode(VDataTableColumn, mergeProps({
21623
21631
  "tag": "th",
@@ -21640,6 +21648,7 @@ const VDataTableHeaders = genericComponent()({
21640
21648
  "lastFixed": column.lastFixed,
21641
21649
  "firstFixedEnd": column.firstFixedEnd,
21642
21650
  "noPadding": noPadding,
21651
+ "empty": isEmpty,
21643
21652
  "tabindex": column.sortable ? 0 : undefined,
21644
21653
  "onClick": column.sortable ? () => toggleSort(column) : undefined,
21645
21654
  "onKeydown": column.sortable ? event => handleEnterKeyPress(event, column) : undefined
@@ -21657,6 +21666,7 @@ const VDataTableHeaders = genericComponent()({
21657
21666
  getSortIcon
21658
21667
  };
21659
21668
  if (slots[columnSlotName]) return slots[columnSlotName](columnSlotProps);
21669
+ if (isEmpty) return '';
21660
21670
  if (column.key === 'data-table-select') {
21661
21671
  return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && createVNode(VCheckboxBtn, {
21662
21672
  "modelValue": allSelected.value,
@@ -21751,6 +21761,14 @@ const makeVDataTableGroupHeaderRowProps = propsFactory({
21751
21761
  item: {
21752
21762
  type: Object,
21753
21763
  required: true
21764
+ },
21765
+ groupCollapseIcon: {
21766
+ type: IconValue,
21767
+ default: '$tableGroupCollapse'
21768
+ },
21769
+ groupExpandIcon: {
21770
+ type: IconValue,
21771
+ default: '$tableGroupExpand'
21754
21772
  }
21755
21773
  }, 'VDataTableGroupHeaderRow');
21756
21774
  const VDataTableGroupHeaderRow = genericComponent()({
@@ -21776,6 +21794,7 @@ const VDataTableGroupHeaderRow = genericComponent()({
21776
21794
  const rows = computed(() => {
21777
21795
  return extractRows([props.item]);
21778
21796
  });
21797
+ const colspan = toRef(() => columns.value.length - (columns.value.some(c => c.key === 'data-table-select') ? 1 : 0));
21779
21798
  return () => createElementVNode("tr", {
21780
21799
  "class": "v-data-table-group-header-row",
21781
21800
  "style": {
@@ -21783,7 +21802,7 @@ const VDataTableGroupHeaderRow = genericComponent()({
21783
21802
  }
21784
21803
  }, [columns.value.map(column => {
21785
21804
  if (column.key === 'data-table-group') {
21786
- const icon = isGroupOpen(props.item) ? '$expand' : '$next';
21805
+ const icon = isGroupOpen(props.item) ? props.groupCollapseIcon : props.groupExpandIcon;
21787
21806
  const onClick = () => toggleGroup(props.item);
21788
21807
  return slots['data-table-group']?.({
21789
21808
  item: props.item,
@@ -21793,7 +21812,8 @@ const VDataTableGroupHeaderRow = genericComponent()({
21793
21812
  onClick
21794
21813
  }
21795
21814
  }) ?? createVNode(VDataTableColumn, {
21796
- "class": "v-data-table-group-header-row__column"
21815
+ "class": "v-data-table-group-header-row__column",
21816
+ "colspan": colspan.value
21797
21817
  }, {
21798
21818
  default: () => [createVNode(VBtn, {
21799
21819
  "size": "small",
@@ -21802,8 +21822,7 @@ const VDataTableGroupHeaderRow = genericComponent()({
21802
21822
  "onClick": onClick
21803
21823
  }, null), createElementVNode("span", null, [props.item.value]), createElementVNode("span", null, [createTextVNode("("), rows.value.length, createTextVNode(")")])]
21804
21824
  });
21805
- }
21806
- if (column.key === 'data-table-select') {
21825
+ } else if (column.key === 'data-table-select') {
21807
21826
  const modelValue = isSelected(rows.value);
21808
21827
  const indeterminate = isSomeSelected(rows.value) && !modelValue;
21809
21828
  const selectGroup = v => select(rows.value, v);
@@ -21813,13 +21832,18 @@ const VDataTableGroupHeaderRow = genericComponent()({
21813
21832
  indeterminate,
21814
21833
  'onUpdate:modelValue': selectGroup
21815
21834
  }
21816
- }) ?? createElementVNode("td", null, [createVNode(VCheckboxBtn, {
21817
- "modelValue": modelValue,
21818
- "indeterminate": indeterminate,
21819
- "onUpdate:modelValue": selectGroup
21820
- }, null)]);
21835
+ }) ?? createVNode(VDataTableColumn, {
21836
+ "class": "v-data-table__td--select-row",
21837
+ "noPadding": true
21838
+ }, {
21839
+ default: () => [createVNode(VCheckboxBtn, {
21840
+ "modelValue": modelValue,
21841
+ "indeterminate": indeterminate,
21842
+ "onUpdate:modelValue": selectGroup
21843
+ }, null)]
21844
+ });
21821
21845
  }
21822
- return createElementVNode("td", null, null);
21846
+ return '';
21823
21847
  })]);
21824
21848
  }
21825
21849
  });
@@ -21830,6 +21854,14 @@ const makeVDataTableRowProps = propsFactory({
21830
21854
  index: Number,
21831
21855
  item: Object,
21832
21856
  cellProps: [Object, Function],
21857
+ collapseIcon: {
21858
+ type: IconValue,
21859
+ default: '$collapse'
21860
+ },
21861
+ expandIcon: {
21862
+ type: IconValue,
21863
+ default: '$expand'
21864
+ },
21833
21865
  onClick: EventProp(),
21834
21866
  onContextmenu: EventProp(),
21835
21867
  onDblclick: EventProp(),
@@ -21910,8 +21942,11 @@ const VDataTableRow = genericComponent()({
21910
21942
  internalItem: slotProps.internalItem,
21911
21943
  value: slotProps.value
21912
21944
  }) : column.cellProps;
21945
+ const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand';
21946
+ const isEmpty = column.key === 'data-table-group' && column.width === 0 && !column.title;
21913
21947
  return createVNode(VDataTableColumn, mergeProps({
21914
21948
  "align": column.align,
21949
+ "indent": column.intent,
21915
21950
  "class": {
21916
21951
  'v-data-table__td--expanded-row': column.key === 'data-table-expand',
21917
21952
  'v-data-table__td--select-row': column.key === 'data-table-select'
@@ -21922,7 +21957,8 @@ const VDataTableRow = genericComponent()({
21922
21957
  "lastFixed": column.lastFixed,
21923
21958
  "firstFixedEnd": column.firstFixedEnd,
21924
21959
  "maxWidth": !mobile.value ? column.maxWidth : undefined,
21925
- "noPadding": column.key === 'data-table-select' || column.key === 'data-table-expand',
21960
+ "noPadding": noPadding,
21961
+ "empty": isEmpty,
21926
21962
  "nowrap": column.nowrap,
21927
21963
  "width": !mobile.value ? column.width : undefined
21928
21964
  }, cellProps, columnCellProps), {
@@ -21945,13 +21981,13 @@ const VDataTableRow = genericComponent()({
21945
21981
  return slots['item.data-table-expand']?.({
21946
21982
  ...slotProps,
21947
21983
  props: {
21948
- icon: isExpanded(item) ? '$collapse' : '$expand',
21984
+ icon: isExpanded(item) ? props.collapseIcon : props.expandIcon,
21949
21985
  size: 'small',
21950
21986
  variant: 'text',
21951
21987
  onClick: withModifiers(() => toggleExpand(item), ['stop'])
21952
21988
  }
21953
21989
  }) ?? createVNode(VBtn, {
21954
- "icon": isExpanded(item) ? '$collapse' : '$expand',
21990
+ "icon": isExpanded(item) ? props.collapseIcon : props.expandIcon,
21955
21991
  "size": "small",
21956
21992
  "variant": "text",
21957
21993
  "onClick": withModifiers(() => toggleExpand(item), ['stop'])
@@ -21989,6 +22025,8 @@ const makeVDataTableRowsProps = propsFactory({
21989
22025
  },
21990
22026
  rowProps: [Object, Function],
21991
22027
  cellProps: [Object, Function],
22028
+ ...pick(makeVDataTableRowProps(), ['collapseIcon', 'expandIcon']),
22029
+ ...pick(makeVDataTableGroupHeaderRowProps(), ['groupCollapseIcon', 'groupExpandIcon']),
21992
22030
  ...makeDisplayProps()
21993
22031
  }, 'VDataTableRows');
21994
22032
  const VDataTableRows = genericComponent()({
@@ -22023,6 +22061,7 @@ const VDataTableRows = genericComponent()({
22023
22061
  mobile
22024
22062
  } = useDisplay(props);
22025
22063
  useRender(() => {
22064
+ const groupHeaderRowProps = pick(props, ['groupCollapseIcon', 'groupExpandIcon']);
22026
22065
  if (props.loading && (!props.items.length || slots.loading)) {
22027
22066
  return createElementVNode("tr", {
22028
22067
  "class": "v-data-table-rows-loading",
@@ -22055,7 +22094,7 @@ const VDataTableRows = genericComponent()({
22055
22094
  return slots['group-header'] ? slots['group-header'](slotProps) : createVNode(VDataTableGroupHeaderRow, mergeProps({
22056
22095
  "key": `group-header_${item.id}`,
22057
22096
  "item": item
22058
- }, getPrefixedEventHandlers(attrs, ':group-header', () => slotProps)), slots);
22097
+ }, getPrefixedEventHandlers(attrs, ':group-header', () => slotProps), groupHeaderRowProps), slots);
22059
22098
  }
22060
22099
  const slotProps = {
22061
22100
  index,
@@ -22077,6 +22116,8 @@ const VDataTableRows = genericComponent()({
22077
22116
  index,
22078
22117
  item,
22079
22118
  cellProps: props.cellProps,
22119
+ collapseIcon: props.collapseIcon,
22120
+ expandIcon: props.expandIcon,
22080
22121
  mobile: mobile.value
22081
22122
  }, getPrefixedEventHandlers(attrs, ':row', () => slotProps), typeof props.rowProps === 'function' ? props.rowProps({
22082
22123
  item: slotProps.item,
@@ -24734,6 +24775,10 @@ const makeVFileInputProps = propsFactory({
24734
24775
  return typeof v === 'boolean' || [1000, 1024].includes(Number(v));
24735
24776
  }
24736
24777
  },
24778
+ truncateLength: {
24779
+ type: [Number, String],
24780
+ default: 22
24781
+ },
24737
24782
  ...makeVInputProps({
24738
24783
  prependIcon: '$file'
24739
24784
  }),
@@ -24791,7 +24836,8 @@ const VFileInput = genericComponent()({
24791
24836
  name = '',
24792
24837
  size = 0
24793
24838
  } = file;
24794
- return !props.showSize ? name : `${name} (${humanReadableFileSize(size, base.value)})`;
24839
+ const truncatedText = truncateText(name);
24840
+ return !props.showSize ? truncatedText : `${truncatedText} (${humanReadableFileSize(size, base.value)})`;
24795
24841
  }));
24796
24842
  const counterValue = computed(() => {
24797
24843
  const fileCount = model.value?.length ?? 0;
@@ -24831,6 +24877,11 @@ const VFileInput = genericComponent()({
24831
24877
  callEvent(props['onClick:clear'], e);
24832
24878
  });
24833
24879
  }
24880
+ function truncateText(str) {
24881
+ if (str.length < Number(props.truncateLength)) return str;
24882
+ const charsKeepOneSide = Math.floor((Number(props.truncateLength) - 1) / 2);
24883
+ return `${str.slice(0, charsKeepOneSide)}…${str.slice(str.length - charsKeepOneSide)}`;
24884
+ }
24834
24885
  function onDragover(e) {
24835
24886
  e.preventDefault();
24836
24887
  e.stopImmediatePropagation();
@@ -27690,9 +27741,11 @@ const makeVSkeletonLoaderProps = propsFactory({
27690
27741
  }, 'VSkeletonLoader');
27691
27742
  const VSkeletonLoader = genericComponent()({
27692
27743
  name: 'VSkeletonLoader',
27744
+ inheritAttrs: false,
27693
27745
  props: makeVSkeletonLoaderProps(),
27694
27746
  setup(props, _ref) {
27695
27747
  let {
27748
+ attrs,
27696
27749
  slots
27697
27750
  } = _ref;
27698
27751
  const {
@@ -27719,12 +27772,12 @@ const VSkeletonLoader = genericComponent()({
27719
27772
  ariaLabel: t(props.loadingText),
27720
27773
  role: 'alert'
27721
27774
  };
27722
- return createElementVNode("div", mergeProps({
27775
+ return createElementVNode(Fragment, null, [isLoading ? createElementVNode("div", mergeProps({
27723
27776
  "class": ['v-skeleton-loader', {
27724
27777
  'v-skeleton-loader--boilerplate': props.boilerplate
27725
27778
  }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value],
27726
- "style": [backgroundColorStyles.value, isLoading ? dimensionStyles.value : {}]
27727
- }, loadingProps), [isLoading ? items.value : slots.default?.()]);
27779
+ "style": [backgroundColorStyles.value, dimensionStyles.value]
27780
+ }, loadingProps, attrs), [items.value]) : slots.default?.()]);
27728
27781
  });
27729
27782
  return {};
27730
27783
  }
@@ -31844,7 +31897,7 @@ function createVuetify$1() {
31844
31897
  };
31845
31898
  });
31846
31899
  }
31847
- const version$1 = "3.9.3-dev.2025-07-31";
31900
+ const version$1 = "3.9.3-dev.2025-08-02";
31848
31901
  createVuetify$1.version = version$1;
31849
31902
 
31850
31903
  // Vue's inject() can only be used in setup
@@ -31869,7 +31922,7 @@ const createVuetify = function () {
31869
31922
  ...options
31870
31923
  });
31871
31924
  };
31872
- const version = "3.9.3-dev.2025-07-31";
31925
+ const version = "3.9.3-dev.2025-08-02";
31873
31926
  createVuetify.version = version;
31874
31927
 
31875
31928
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useHotkey, useLayout, useLocale, useRtl, useTheme, version };