@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
  */
@@ -4803,6 +4803,8 @@ const aliases = {
4803
4803
  calendar: 'mdi-calendar',
4804
4804
  treeviewCollapse: 'mdi-menu-down',
4805
4805
  treeviewExpand: 'mdi-menu-right',
4806
+ tableGroupCollapse: 'mdi-chevron-down',
4807
+ tableGroupExpand: 'mdi-chevron-right',
4806
4808
  eyeDropper: 'mdi-eyedropper',
4807
4809
  upload: 'mdi-cloud-upload',
4808
4810
  color: 'mdi-palette',
@@ -20939,6 +20941,8 @@ const VDataTableColumn = defineFunctionalComponent({
20939
20941
  lastFixed: Boolean,
20940
20942
  firstFixedEnd: Boolean,
20941
20943
  noPadding: Boolean,
20944
+ indent: [Number, String],
20945
+ empty: Boolean,
20942
20946
  tag: String,
20943
20947
  width: [Number, String],
20944
20948
  maxWidth: [Number, String],
@@ -20956,14 +20960,16 @@ const VDataTableColumn = defineFunctionalComponent({
20956
20960
  'v-data-table-column--last-fixed': props.lastFixed,
20957
20961
  'v-data-table-column--first-fixed-end': props.firstFixedEnd,
20958
20962
  'v-data-table-column--no-padding': props.noPadding,
20959
- 'v-data-table-column--nowrap': props.nowrap
20963
+ 'v-data-table-column--nowrap': props.nowrap,
20964
+ 'v-data-table-column--empty': props.empty
20960
20965
  }, `v-data-table-column--align-${props.align}`]),
20961
20966
  "style": {
20962
20967
  height: convertToUnit(props.height),
20963
20968
  width: convertToUnit(props.width),
20964
20969
  maxWidth: convertToUnit(props.maxWidth),
20965
20970
  left: fixedSide === 'start' ? convertToUnit(props.fixedOffset || null) : undefined,
20966
- right: fixedSide === 'end' ? convertToUnit(props.fixedEndOffset || null) : undefined
20971
+ right: fixedSide === 'end' ? convertToUnit(props.fixedEndOffset || null) : undefined,
20972
+ paddingInlineStart: props.indent ? convertToUnit(props.indent) : undefined
20967
20973
  }
20968
20974
  }, {
20969
20975
  default: () => [slots.default?.()]
@@ -21378,6 +21384,7 @@ const VDataTableHeaders = genericComponent()({
21378
21384
  y
21379
21385
  } = _ref2;
21380
21386
  const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand';
21387
+ const isEmpty = column.key === 'data-table-group' && column.width === 0 && !column.title;
21381
21388
  const headerProps = mergeProps(props.headerProps ?? {}, column.headerProps ?? {});
21382
21389
  return createVNode(VDataTableColumn, mergeProps({
21383
21390
  "tag": "th",
@@ -21400,6 +21407,7 @@ const VDataTableHeaders = genericComponent()({
21400
21407
  "lastFixed": column.lastFixed,
21401
21408
  "firstFixedEnd": column.firstFixedEnd,
21402
21409
  "noPadding": noPadding,
21410
+ "empty": isEmpty,
21403
21411
  "tabindex": column.sortable ? 0 : undefined,
21404
21412
  "onClick": column.sortable ? () => toggleSort(column) : undefined,
21405
21413
  "onKeydown": column.sortable ? event => handleEnterKeyPress(event, column) : undefined
@@ -21417,6 +21425,7 @@ const VDataTableHeaders = genericComponent()({
21417
21425
  getSortIcon
21418
21426
  };
21419
21427
  if (slots[columnSlotName]) return slots[columnSlotName](columnSlotProps);
21428
+ if (isEmpty) return '';
21420
21429
  if (column.key === 'data-table-select') {
21421
21430
  return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && createVNode(VCheckboxBtn, {
21422
21431
  "modelValue": allSelected.value,
@@ -21511,6 +21520,14 @@ const makeVDataTableGroupHeaderRowProps = propsFactory({
21511
21520
  item: {
21512
21521
  type: Object,
21513
21522
  required: true
21523
+ },
21524
+ groupCollapseIcon: {
21525
+ type: IconValue,
21526
+ default: '$tableGroupCollapse'
21527
+ },
21528
+ groupExpandIcon: {
21529
+ type: IconValue,
21530
+ default: '$tableGroupExpand'
21514
21531
  }
21515
21532
  }, 'VDataTableGroupHeaderRow');
21516
21533
  const VDataTableGroupHeaderRow = genericComponent()({
@@ -21536,6 +21553,7 @@ const VDataTableGroupHeaderRow = genericComponent()({
21536
21553
  const rows = computed(() => {
21537
21554
  return extractRows([props.item]);
21538
21555
  });
21556
+ const colspan = toRef(() => columns.value.length - (columns.value.some(c => c.key === 'data-table-select') ? 1 : 0));
21539
21557
  return () => createElementVNode("tr", {
21540
21558
  "class": "v-data-table-group-header-row",
21541
21559
  "style": {
@@ -21543,7 +21561,7 @@ const VDataTableGroupHeaderRow = genericComponent()({
21543
21561
  }
21544
21562
  }, [columns.value.map(column => {
21545
21563
  if (column.key === 'data-table-group') {
21546
- const icon = isGroupOpen(props.item) ? '$expand' : '$next';
21564
+ const icon = isGroupOpen(props.item) ? props.groupCollapseIcon : props.groupExpandIcon;
21547
21565
  const onClick = () => toggleGroup(props.item);
21548
21566
  return slots['data-table-group']?.({
21549
21567
  item: props.item,
@@ -21553,7 +21571,8 @@ const VDataTableGroupHeaderRow = genericComponent()({
21553
21571
  onClick
21554
21572
  }
21555
21573
  }) ?? createVNode(VDataTableColumn, {
21556
- "class": "v-data-table-group-header-row__column"
21574
+ "class": "v-data-table-group-header-row__column",
21575
+ "colspan": colspan.value
21557
21576
  }, {
21558
21577
  default: () => [createVNode(VBtn, {
21559
21578
  "size": "small",
@@ -21562,8 +21581,7 @@ const VDataTableGroupHeaderRow = genericComponent()({
21562
21581
  "onClick": onClick
21563
21582
  }, null), createElementVNode("span", null, [props.item.value]), createElementVNode("span", null, [createTextVNode("("), rows.value.length, createTextVNode(")")])]
21564
21583
  });
21565
- }
21566
- if (column.key === 'data-table-select') {
21584
+ } else if (column.key === 'data-table-select') {
21567
21585
  const modelValue = isSelected(rows.value);
21568
21586
  const indeterminate = isSomeSelected(rows.value) && !modelValue;
21569
21587
  const selectGroup = v => select(rows.value, v);
@@ -21573,13 +21591,18 @@ const VDataTableGroupHeaderRow = genericComponent()({
21573
21591
  indeterminate,
21574
21592
  'onUpdate:modelValue': selectGroup
21575
21593
  }
21576
- }) ?? createElementVNode("td", null, [createVNode(VCheckboxBtn, {
21577
- "modelValue": modelValue,
21578
- "indeterminate": indeterminate,
21579
- "onUpdate:modelValue": selectGroup
21580
- }, null)]);
21594
+ }) ?? createVNode(VDataTableColumn, {
21595
+ "class": "v-data-table__td--select-row",
21596
+ "noPadding": true
21597
+ }, {
21598
+ default: () => [createVNode(VCheckboxBtn, {
21599
+ "modelValue": modelValue,
21600
+ "indeterminate": indeterminate,
21601
+ "onUpdate:modelValue": selectGroup
21602
+ }, null)]
21603
+ });
21581
21604
  }
21582
- return createElementVNode("td", null, null);
21605
+ return '';
21583
21606
  })]);
21584
21607
  }
21585
21608
  });
@@ -21590,6 +21613,14 @@ const makeVDataTableRowProps = propsFactory({
21590
21613
  index: Number,
21591
21614
  item: Object,
21592
21615
  cellProps: [Object, Function],
21616
+ collapseIcon: {
21617
+ type: IconValue,
21618
+ default: '$collapse'
21619
+ },
21620
+ expandIcon: {
21621
+ type: IconValue,
21622
+ default: '$expand'
21623
+ },
21593
21624
  onClick: EventProp(),
21594
21625
  onContextmenu: EventProp(),
21595
21626
  onDblclick: EventProp(),
@@ -21670,8 +21701,11 @@ const VDataTableRow = genericComponent()({
21670
21701
  internalItem: slotProps.internalItem,
21671
21702
  value: slotProps.value
21672
21703
  }) : column.cellProps;
21704
+ const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand';
21705
+ const isEmpty = column.key === 'data-table-group' && column.width === 0 && !column.title;
21673
21706
  return createVNode(VDataTableColumn, mergeProps({
21674
21707
  "align": column.align,
21708
+ "indent": column.intent,
21675
21709
  "class": {
21676
21710
  'v-data-table__td--expanded-row': column.key === 'data-table-expand',
21677
21711
  'v-data-table__td--select-row': column.key === 'data-table-select'
@@ -21682,7 +21716,8 @@ const VDataTableRow = genericComponent()({
21682
21716
  "lastFixed": column.lastFixed,
21683
21717
  "firstFixedEnd": column.firstFixedEnd,
21684
21718
  "maxWidth": !mobile.value ? column.maxWidth : undefined,
21685
- "noPadding": column.key === 'data-table-select' || column.key === 'data-table-expand',
21719
+ "noPadding": noPadding,
21720
+ "empty": isEmpty,
21686
21721
  "nowrap": column.nowrap,
21687
21722
  "width": !mobile.value ? column.width : undefined
21688
21723
  }, cellProps, columnCellProps), {
@@ -21705,13 +21740,13 @@ const VDataTableRow = genericComponent()({
21705
21740
  return slots['item.data-table-expand']?.({
21706
21741
  ...slotProps,
21707
21742
  props: {
21708
- icon: isExpanded(item) ? '$collapse' : '$expand',
21743
+ icon: isExpanded(item) ? props.collapseIcon : props.expandIcon,
21709
21744
  size: 'small',
21710
21745
  variant: 'text',
21711
21746
  onClick: withModifiers(() => toggleExpand(item), ['stop'])
21712
21747
  }
21713
21748
  }) ?? createVNode(VBtn, {
21714
- "icon": isExpanded(item) ? '$collapse' : '$expand',
21749
+ "icon": isExpanded(item) ? props.collapseIcon : props.expandIcon,
21715
21750
  "size": "small",
21716
21751
  "variant": "text",
21717
21752
  "onClick": withModifiers(() => toggleExpand(item), ['stop'])
@@ -21749,6 +21784,8 @@ const makeVDataTableRowsProps = propsFactory({
21749
21784
  },
21750
21785
  rowProps: [Object, Function],
21751
21786
  cellProps: [Object, Function],
21787
+ ...pick(makeVDataTableRowProps(), ['collapseIcon', 'expandIcon']),
21788
+ ...pick(makeVDataTableGroupHeaderRowProps(), ['groupCollapseIcon', 'groupExpandIcon']),
21752
21789
  ...makeDisplayProps()
21753
21790
  }, 'VDataTableRows');
21754
21791
  const VDataTableRows = genericComponent()({
@@ -21783,6 +21820,7 @@ const VDataTableRows = genericComponent()({
21783
21820
  mobile
21784
21821
  } = useDisplay(props);
21785
21822
  useRender(() => {
21823
+ const groupHeaderRowProps = pick(props, ['groupCollapseIcon', 'groupExpandIcon']);
21786
21824
  if (props.loading && (!props.items.length || slots.loading)) {
21787
21825
  return createElementVNode("tr", {
21788
21826
  "class": "v-data-table-rows-loading",
@@ -21815,7 +21853,7 @@ const VDataTableRows = genericComponent()({
21815
21853
  return slots['group-header'] ? slots['group-header'](slotProps) : createVNode(VDataTableGroupHeaderRow, mergeProps({
21816
21854
  "key": `group-header_${item.id}`,
21817
21855
  "item": item
21818
- }, getPrefixedEventHandlers(attrs, ':group-header', () => slotProps)), slots);
21856
+ }, getPrefixedEventHandlers(attrs, ':group-header', () => slotProps), groupHeaderRowProps), slots);
21819
21857
  }
21820
21858
  const slotProps = {
21821
21859
  index,
@@ -21837,6 +21875,8 @@ const VDataTableRows = genericComponent()({
21837
21875
  index,
21838
21876
  item,
21839
21877
  cellProps: props.cellProps,
21878
+ collapseIcon: props.collapseIcon,
21879
+ expandIcon: props.expandIcon,
21840
21880
  mobile: mobile.value
21841
21881
  }, getPrefixedEventHandlers(attrs, ':row', () => slotProps), typeof props.rowProps === 'function' ? props.rowProps({
21842
21882
  item: slotProps.item,
@@ -24494,6 +24534,10 @@ const makeVFileInputProps = propsFactory({
24494
24534
  return typeof v === 'boolean' || [1000, 1024].includes(Number(v));
24495
24535
  }
24496
24536
  },
24537
+ truncateLength: {
24538
+ type: [Number, String],
24539
+ default: 22
24540
+ },
24497
24541
  ...makeVInputProps({
24498
24542
  prependIcon: '$file'
24499
24543
  }),
@@ -24551,7 +24595,8 @@ const VFileInput = genericComponent()({
24551
24595
  name = '',
24552
24596
  size = 0
24553
24597
  } = file;
24554
- return !props.showSize ? name : `${name} (${humanReadableFileSize(size, base.value)})`;
24598
+ const truncatedText = truncateText(name);
24599
+ return !props.showSize ? truncatedText : `${truncatedText} (${humanReadableFileSize(size, base.value)})`;
24555
24600
  }));
24556
24601
  const counterValue = computed(() => {
24557
24602
  const fileCount = model.value?.length ?? 0;
@@ -24591,6 +24636,11 @@ const VFileInput = genericComponent()({
24591
24636
  callEvent(props['onClick:clear'], e);
24592
24637
  });
24593
24638
  }
24639
+ function truncateText(str) {
24640
+ if (str.length < Number(props.truncateLength)) return str;
24641
+ const charsKeepOneSide = Math.floor((Number(props.truncateLength) - 1) / 2);
24642
+ return `${str.slice(0, charsKeepOneSide)}…${str.slice(str.length - charsKeepOneSide)}`;
24643
+ }
24594
24644
  function onDragover(e) {
24595
24645
  e.preventDefault();
24596
24646
  e.stopImmediatePropagation();
@@ -35573,7 +35623,7 @@ function createVuetify$1() {
35573
35623
  };
35574
35624
  });
35575
35625
  }
35576
- const version$1 = "3.9.3-dev.2025-07-31";
35626
+ const version$1 = "3.9.3-dev.2025-08-01";
35577
35627
  createVuetify$1.version = version$1;
35578
35628
 
35579
35629
  // Vue's inject() can only be used in setup
@@ -35871,7 +35921,7 @@ var index = /*#__PURE__*/Object.freeze({
35871
35921
 
35872
35922
  /* eslint-disable local-rules/sort-imports */
35873
35923
 
35874
- const version = "3.9.3-dev.2025-07-31";
35924
+ const version = "3.9.3-dev.2025-08-01";
35875
35925
 
35876
35926
  /* eslint-disable local-rules/sort-imports */
35877
35927