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

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 (63) hide show
  1. package/CHANGELOG.md +7 -3
  2. package/dist/json/attributes.json +3665 -3589
  3. package/dist/json/importMap-labs.json +26 -26
  4. package/dist/json/importMap.json +172 -172
  5. package/dist/json/tags.json +19 -0
  6. package/dist/json/web-types.json +7396 -7206
  7. package/dist/vuetify-labs.cjs +70 -20
  8. package/dist/vuetify-labs.css +5522 -5516
  9. package/dist/vuetify-labs.d.ts +330 -63
  10. package/dist/vuetify-labs.esm.js +70 -20
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +70 -20
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +70 -20
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +3671 -3665
  17. package/dist/vuetify.d.ts +330 -63
  18. package/dist/vuetify.esm.js +70 -20
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +70 -20
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +239 -236
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VDataTable/VDataTable.css +7 -1
  26. package/lib/components/VDataTable/VDataTable.d.ts +164 -0
  27. package/lib/components/VDataTable/VDataTable.sass +4 -1
  28. package/lib/components/VDataTable/VDataTableColumn.d.ts +4 -1
  29. package/lib/components/VDataTable/VDataTableColumn.js +6 -2
  30. package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
  31. package/lib/components/VDataTable/VDataTableGroupHeaderRow.d.ts +57 -3
  32. package/lib/components/VDataTable/VDataTableGroupHeaderRow.js +27 -12
  33. package/lib/components/VDataTable/VDataTableGroupHeaderRow.js.map +1 -1
  34. package/lib/components/VDataTable/VDataTableHeaders.js +3 -0
  35. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  36. package/lib/components/VDataTable/VDataTableRow.d.ts +51 -0
  37. package/lib/components/VDataTable/VDataTableRow.js +17 -4
  38. package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
  39. package/lib/components/VDataTable/VDataTableRows.d.ts +100 -0
  40. package/lib/components/VDataTable/VDataTableRows.js +9 -4
  41. package/lib/components/VDataTable/VDataTableRows.js.map +1 -1
  42. package/lib/components/VDataTable/VDataTableServer.d.ts +110 -0
  43. package/lib/components/VDataTable/VDataTableVirtual.d.ts +110 -0
  44. package/lib/components/VDataTable/composables/headers.d.ts +14 -0
  45. package/lib/components/VDataTable/types.d.ts +1 -0
  46. package/lib/components/VDataTable/types.js.map +1 -1
  47. package/lib/components/VFileInput/VFileInput.d.ts +25 -0
  48. package/lib/components/VFileInput/VFileInput.js +11 -1
  49. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  50. package/lib/entry-bundler.js +1 -1
  51. package/lib/framework.d.ts +64 -63
  52. package/lib/framework.js +1 -1
  53. package/lib/iconsets/fa.js +2 -0
  54. package/lib/iconsets/fa.js.map +1 -1
  55. package/lib/iconsets/fa4.js +2 -0
  56. package/lib/iconsets/fa4.js.map +1 -1
  57. package/lib/iconsets/md.js +2 -0
  58. package/lib/iconsets/md.js.map +1 -1
  59. package/lib/iconsets/mdi-svg.js +2 -0
  60. package/lib/iconsets/mdi-svg.js.map +1 -1
  61. package/lib/iconsets/mdi.js +2 -0
  62. package/lib/iconsets/mdi.js.map +1 -1
  63. 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-01
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',
@@ -21179,6 +21181,8 @@ const VDataTableColumn = defineFunctionalComponent({
21179
21181
  lastFixed: Boolean,
21180
21182
  firstFixedEnd: Boolean,
21181
21183
  noPadding: Boolean,
21184
+ indent: [Number, String],
21185
+ empty: Boolean,
21182
21186
  tag: String,
21183
21187
  width: [Number, String],
21184
21188
  maxWidth: [Number, String],
@@ -21196,14 +21200,16 @@ const VDataTableColumn = defineFunctionalComponent({
21196
21200
  'v-data-table-column--last-fixed': props.lastFixed,
21197
21201
  'v-data-table-column--first-fixed-end': props.firstFixedEnd,
21198
21202
  'v-data-table-column--no-padding': props.noPadding,
21199
- 'v-data-table-column--nowrap': props.nowrap
21203
+ 'v-data-table-column--nowrap': props.nowrap,
21204
+ 'v-data-table-column--empty': props.empty
21200
21205
  }, `v-data-table-column--align-${props.align}`]),
21201
21206
  "style": {
21202
21207
  height: convertToUnit(props.height),
21203
21208
  width: convertToUnit(props.width),
21204
21209
  maxWidth: convertToUnit(props.maxWidth),
21205
21210
  left: fixedSide === 'start' ? convertToUnit(props.fixedOffset || null) : undefined,
21206
- right: fixedSide === 'end' ? convertToUnit(props.fixedEndOffset || null) : undefined
21211
+ right: fixedSide === 'end' ? convertToUnit(props.fixedEndOffset || null) : undefined,
21212
+ paddingInlineStart: props.indent ? convertToUnit(props.indent) : undefined
21207
21213
  }
21208
21214
  }, {
21209
21215
  default: () => [slots.default?.()]
@@ -21618,6 +21624,7 @@ const VDataTableHeaders = genericComponent()({
21618
21624
  y
21619
21625
  } = _ref2;
21620
21626
  const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand';
21627
+ const isEmpty = column.key === 'data-table-group' && column.width === 0 && !column.title;
21621
21628
  const headerProps = mergeProps(props.headerProps ?? {}, column.headerProps ?? {});
21622
21629
  return createVNode(VDataTableColumn, mergeProps({
21623
21630
  "tag": "th",
@@ -21640,6 +21647,7 @@ const VDataTableHeaders = genericComponent()({
21640
21647
  "lastFixed": column.lastFixed,
21641
21648
  "firstFixedEnd": column.firstFixedEnd,
21642
21649
  "noPadding": noPadding,
21650
+ "empty": isEmpty,
21643
21651
  "tabindex": column.sortable ? 0 : undefined,
21644
21652
  "onClick": column.sortable ? () => toggleSort(column) : undefined,
21645
21653
  "onKeydown": column.sortable ? event => handleEnterKeyPress(event, column) : undefined
@@ -21657,6 +21665,7 @@ const VDataTableHeaders = genericComponent()({
21657
21665
  getSortIcon
21658
21666
  };
21659
21667
  if (slots[columnSlotName]) return slots[columnSlotName](columnSlotProps);
21668
+ if (isEmpty) return '';
21660
21669
  if (column.key === 'data-table-select') {
21661
21670
  return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && createVNode(VCheckboxBtn, {
21662
21671
  "modelValue": allSelected.value,
@@ -21751,6 +21760,14 @@ const makeVDataTableGroupHeaderRowProps = propsFactory({
21751
21760
  item: {
21752
21761
  type: Object,
21753
21762
  required: true
21763
+ },
21764
+ groupCollapseIcon: {
21765
+ type: IconValue,
21766
+ default: '$tableGroupCollapse'
21767
+ },
21768
+ groupExpandIcon: {
21769
+ type: IconValue,
21770
+ default: '$tableGroupExpand'
21754
21771
  }
21755
21772
  }, 'VDataTableGroupHeaderRow');
21756
21773
  const VDataTableGroupHeaderRow = genericComponent()({
@@ -21776,6 +21793,7 @@ const VDataTableGroupHeaderRow = genericComponent()({
21776
21793
  const rows = computed(() => {
21777
21794
  return extractRows([props.item]);
21778
21795
  });
21796
+ const colspan = toRef(() => columns.value.length - (columns.value.some(c => c.key === 'data-table-select') ? 1 : 0));
21779
21797
  return () => createElementVNode("tr", {
21780
21798
  "class": "v-data-table-group-header-row",
21781
21799
  "style": {
@@ -21783,7 +21801,7 @@ const VDataTableGroupHeaderRow = genericComponent()({
21783
21801
  }
21784
21802
  }, [columns.value.map(column => {
21785
21803
  if (column.key === 'data-table-group') {
21786
- const icon = isGroupOpen(props.item) ? '$expand' : '$next';
21804
+ const icon = isGroupOpen(props.item) ? props.groupCollapseIcon : props.groupExpandIcon;
21787
21805
  const onClick = () => toggleGroup(props.item);
21788
21806
  return slots['data-table-group']?.({
21789
21807
  item: props.item,
@@ -21793,7 +21811,8 @@ const VDataTableGroupHeaderRow = genericComponent()({
21793
21811
  onClick
21794
21812
  }
21795
21813
  }) ?? createVNode(VDataTableColumn, {
21796
- "class": "v-data-table-group-header-row__column"
21814
+ "class": "v-data-table-group-header-row__column",
21815
+ "colspan": colspan.value
21797
21816
  }, {
21798
21817
  default: () => [createVNode(VBtn, {
21799
21818
  "size": "small",
@@ -21802,8 +21821,7 @@ const VDataTableGroupHeaderRow = genericComponent()({
21802
21821
  "onClick": onClick
21803
21822
  }, null), createElementVNode("span", null, [props.item.value]), createElementVNode("span", null, [createTextVNode("("), rows.value.length, createTextVNode(")")])]
21804
21823
  });
21805
- }
21806
- if (column.key === 'data-table-select') {
21824
+ } else if (column.key === 'data-table-select') {
21807
21825
  const modelValue = isSelected(rows.value);
21808
21826
  const indeterminate = isSomeSelected(rows.value) && !modelValue;
21809
21827
  const selectGroup = v => select(rows.value, v);
@@ -21813,13 +21831,18 @@ const VDataTableGroupHeaderRow = genericComponent()({
21813
21831
  indeterminate,
21814
21832
  'onUpdate:modelValue': selectGroup
21815
21833
  }
21816
- }) ?? createElementVNode("td", null, [createVNode(VCheckboxBtn, {
21817
- "modelValue": modelValue,
21818
- "indeterminate": indeterminate,
21819
- "onUpdate:modelValue": selectGroup
21820
- }, null)]);
21834
+ }) ?? createVNode(VDataTableColumn, {
21835
+ "class": "v-data-table__td--select-row",
21836
+ "noPadding": true
21837
+ }, {
21838
+ default: () => [createVNode(VCheckboxBtn, {
21839
+ "modelValue": modelValue,
21840
+ "indeterminate": indeterminate,
21841
+ "onUpdate:modelValue": selectGroup
21842
+ }, null)]
21843
+ });
21821
21844
  }
21822
- return createElementVNode("td", null, null);
21845
+ return '';
21823
21846
  })]);
21824
21847
  }
21825
21848
  });
@@ -21830,6 +21853,14 @@ const makeVDataTableRowProps = propsFactory({
21830
21853
  index: Number,
21831
21854
  item: Object,
21832
21855
  cellProps: [Object, Function],
21856
+ collapseIcon: {
21857
+ type: IconValue,
21858
+ default: '$collapse'
21859
+ },
21860
+ expandIcon: {
21861
+ type: IconValue,
21862
+ default: '$expand'
21863
+ },
21833
21864
  onClick: EventProp(),
21834
21865
  onContextmenu: EventProp(),
21835
21866
  onDblclick: EventProp(),
@@ -21910,8 +21941,11 @@ const VDataTableRow = genericComponent()({
21910
21941
  internalItem: slotProps.internalItem,
21911
21942
  value: slotProps.value
21912
21943
  }) : column.cellProps;
21944
+ const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand';
21945
+ const isEmpty = column.key === 'data-table-group' && column.width === 0 && !column.title;
21913
21946
  return createVNode(VDataTableColumn, mergeProps({
21914
21947
  "align": column.align,
21948
+ "indent": column.intent,
21915
21949
  "class": {
21916
21950
  'v-data-table__td--expanded-row': column.key === 'data-table-expand',
21917
21951
  'v-data-table__td--select-row': column.key === 'data-table-select'
@@ -21922,7 +21956,8 @@ const VDataTableRow = genericComponent()({
21922
21956
  "lastFixed": column.lastFixed,
21923
21957
  "firstFixedEnd": column.firstFixedEnd,
21924
21958
  "maxWidth": !mobile.value ? column.maxWidth : undefined,
21925
- "noPadding": column.key === 'data-table-select' || column.key === 'data-table-expand',
21959
+ "noPadding": noPadding,
21960
+ "empty": isEmpty,
21926
21961
  "nowrap": column.nowrap,
21927
21962
  "width": !mobile.value ? column.width : undefined
21928
21963
  }, cellProps, columnCellProps), {
@@ -21945,13 +21980,13 @@ const VDataTableRow = genericComponent()({
21945
21980
  return slots['item.data-table-expand']?.({
21946
21981
  ...slotProps,
21947
21982
  props: {
21948
- icon: isExpanded(item) ? '$collapse' : '$expand',
21983
+ icon: isExpanded(item) ? props.collapseIcon : props.expandIcon,
21949
21984
  size: 'small',
21950
21985
  variant: 'text',
21951
21986
  onClick: withModifiers(() => toggleExpand(item), ['stop'])
21952
21987
  }
21953
21988
  }) ?? createVNode(VBtn, {
21954
- "icon": isExpanded(item) ? '$collapse' : '$expand',
21989
+ "icon": isExpanded(item) ? props.collapseIcon : props.expandIcon,
21955
21990
  "size": "small",
21956
21991
  "variant": "text",
21957
21992
  "onClick": withModifiers(() => toggleExpand(item), ['stop'])
@@ -21989,6 +22024,8 @@ const makeVDataTableRowsProps = propsFactory({
21989
22024
  },
21990
22025
  rowProps: [Object, Function],
21991
22026
  cellProps: [Object, Function],
22027
+ ...pick(makeVDataTableRowProps(), ['collapseIcon', 'expandIcon']),
22028
+ ...pick(makeVDataTableGroupHeaderRowProps(), ['groupCollapseIcon', 'groupExpandIcon']),
21992
22029
  ...makeDisplayProps()
21993
22030
  }, 'VDataTableRows');
21994
22031
  const VDataTableRows = genericComponent()({
@@ -22023,6 +22060,7 @@ const VDataTableRows = genericComponent()({
22023
22060
  mobile
22024
22061
  } = useDisplay(props);
22025
22062
  useRender(() => {
22063
+ const groupHeaderRowProps = pick(props, ['groupCollapseIcon', 'groupExpandIcon']);
22026
22064
  if (props.loading && (!props.items.length || slots.loading)) {
22027
22065
  return createElementVNode("tr", {
22028
22066
  "class": "v-data-table-rows-loading",
@@ -22055,7 +22093,7 @@ const VDataTableRows = genericComponent()({
22055
22093
  return slots['group-header'] ? slots['group-header'](slotProps) : createVNode(VDataTableGroupHeaderRow, mergeProps({
22056
22094
  "key": `group-header_${item.id}`,
22057
22095
  "item": item
22058
- }, getPrefixedEventHandlers(attrs, ':group-header', () => slotProps)), slots);
22096
+ }, getPrefixedEventHandlers(attrs, ':group-header', () => slotProps), groupHeaderRowProps), slots);
22059
22097
  }
22060
22098
  const slotProps = {
22061
22099
  index,
@@ -22077,6 +22115,8 @@ const VDataTableRows = genericComponent()({
22077
22115
  index,
22078
22116
  item,
22079
22117
  cellProps: props.cellProps,
22118
+ collapseIcon: props.collapseIcon,
22119
+ expandIcon: props.expandIcon,
22080
22120
  mobile: mobile.value
22081
22121
  }, getPrefixedEventHandlers(attrs, ':row', () => slotProps), typeof props.rowProps === 'function' ? props.rowProps({
22082
22122
  item: slotProps.item,
@@ -24734,6 +24774,10 @@ const makeVFileInputProps = propsFactory({
24734
24774
  return typeof v === 'boolean' || [1000, 1024].includes(Number(v));
24735
24775
  }
24736
24776
  },
24777
+ truncateLength: {
24778
+ type: [Number, String],
24779
+ default: 22
24780
+ },
24737
24781
  ...makeVInputProps({
24738
24782
  prependIcon: '$file'
24739
24783
  }),
@@ -24791,7 +24835,8 @@ const VFileInput = genericComponent()({
24791
24835
  name = '',
24792
24836
  size = 0
24793
24837
  } = file;
24794
- return !props.showSize ? name : `${name} (${humanReadableFileSize(size, base.value)})`;
24838
+ const truncatedText = truncateText(name);
24839
+ return !props.showSize ? truncatedText : `${truncatedText} (${humanReadableFileSize(size, base.value)})`;
24795
24840
  }));
24796
24841
  const counterValue = computed(() => {
24797
24842
  const fileCount = model.value?.length ?? 0;
@@ -24831,6 +24876,11 @@ const VFileInput = genericComponent()({
24831
24876
  callEvent(props['onClick:clear'], e);
24832
24877
  });
24833
24878
  }
24879
+ function truncateText(str) {
24880
+ if (str.length < Number(props.truncateLength)) return str;
24881
+ const charsKeepOneSide = Math.floor((Number(props.truncateLength) - 1) / 2);
24882
+ return `${str.slice(0, charsKeepOneSide)}…${str.slice(str.length - charsKeepOneSide)}`;
24883
+ }
24834
24884
  function onDragover(e) {
24835
24885
  e.preventDefault();
24836
24886
  e.stopImmediatePropagation();
@@ -31844,7 +31894,7 @@ function createVuetify$1() {
31844
31894
  };
31845
31895
  });
31846
31896
  }
31847
- const version$1 = "3.9.3-dev.2025-07-31";
31897
+ const version$1 = "3.9.3-dev.2025-08-01";
31848
31898
  createVuetify$1.version = version$1;
31849
31899
 
31850
31900
  // Vue's inject() can only be used in setup
@@ -31869,7 +31919,7 @@ const createVuetify = function () {
31869
31919
  ...options
31870
31920
  });
31871
31921
  };
31872
- const version = "3.9.3-dev.2025-07-31";
31922
+ const version = "3.9.3-dev.2025-08-01";
31873
31923
  createVuetify.version = version;
31874
31924
 
31875
31925
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useHotkey, useLayout, useLocale, useRtl, useTheme, version };