@vuetify/nightly 3.10.4-dev.2025-10-01 → 3.10.4-dev.2025-10-06

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 (52) hide show
  1. package/CHANGELOG.md +10 -3
  2. package/dist/json/attributes.json +1626 -1610
  3. package/dist/json/importMap-labs.json +24 -24
  4. package/dist/json/importMap.json +208 -208
  5. package/dist/json/tags.json +4 -0
  6. package/dist/json/web-types.json +3135 -3091
  7. package/dist/vuetify-labs.cjs +93 -30
  8. package/dist/vuetify-labs.css +4262 -4262
  9. package/dist/vuetify-labs.d.ts +209 -105
  10. package/dist/vuetify-labs.esm.js +93 -30
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +93 -30
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +93 -30
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +3923 -3923
  17. package/dist/vuetify.d.ts +209 -105
  18. package/dist/vuetify.esm.js +93 -30
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +93 -30
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +40 -37
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VDataIterator/VDataIterator.d.ts +52 -11
  26. package/lib/components/VDataIterator/VDataIterator.js +2 -0
  27. package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
  28. package/lib/components/VDataTable/VDataTable.d.ts +78 -18
  29. package/lib/components/VDataTable/VDataTable.js +9 -5
  30. package/lib/components/VDataTable/VDataTable.js.map +1 -1
  31. package/lib/components/VDataTable/VDataTableHeaders.js +2 -2
  32. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  33. package/lib/components/VDataTable/VDataTableServer.d.ts +54 -13
  34. package/lib/components/VDataTable/VDataTableServer.js +8 -4
  35. package/lib/components/VDataTable/VDataTableServer.js.map +1 -1
  36. package/lib/components/VDataTable/VDataTableVirtual.d.ts +54 -13
  37. package/lib/components/VDataTable/VDataTableVirtual.js +7 -3
  38. package/lib/components/VDataTable/VDataTableVirtual.js.map +1 -1
  39. package/lib/components/VDataTable/composables/sort.d.ts +36 -8
  40. package/lib/components/VDataTable/composables/sort.js +55 -14
  41. package/lib/components/VDataTable/composables/sort.js.map +1 -1
  42. package/lib/components/VTreeview/VTreeview.d.ts +6 -0
  43. package/lib/components/VTreeview/VTreeviewChildren.d.ts +9 -0
  44. package/lib/components/VTreeview/VTreeviewChildren.js +6 -1
  45. package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
  46. package/lib/entry-bundler.js +1 -1
  47. package/lib/framework.d.ts +71 -71
  48. package/lib/framework.js +1 -1
  49. package/lib/util/indentLines.d.ts +1 -0
  50. package/lib/util/indentLines.js +7 -4
  51. package/lib/util/indentLines.js.map +1 -1
  52. package/package.json +1 -1
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.10.4-dev.2025-10-01
2
+ * Vuetify v3.10.4-dev.2025-10-06
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -1642,25 +1642,28 @@
1642
1642
  parentIndentLines,
1643
1643
  variant
1644
1644
  } = _ref;
1645
+ const isLastLeaf = isLast && (!isLastGroup || separateRoots || depth > 1);
1645
1646
  if (!parentIndentLines || !depth) {
1646
1647
  return {
1647
1648
  leaf: undefined,
1648
1649
  node: undefined,
1649
- children: parentIndentLines
1650
+ children: parentIndentLines,
1651
+ footer: parentIndentLines && (!isLastLeaf || variant === 'simple') ? [...parentIndentLines, separateRoots ? 'none' : 'line'] : ['none']
1650
1652
  };
1651
1653
  }
1652
1654
  if (variant === 'simple') {
1653
1655
  return {
1654
1656
  leaf: [...parentIndentLines, 'line'],
1655
1657
  node: [...parentIndentLines, 'line'],
1656
- children: [...parentIndentLines, 'line']
1658
+ children: [...parentIndentLines, 'line'],
1659
+ footer: [...parentIndentLines, 'line', 'line']
1657
1660
  };
1658
1661
  }
1659
- const isLastLeaf = isLast && (!isLastGroup || separateRoots || depth > 1);
1660
1662
  return {
1661
1663
  leaf: [...parentIndentLines, isLastLeaf ? 'last-leaf' : 'leaf', ...(leafLinks ? ['leaf-link'] : [])],
1662
1664
  node: [...parentIndentLines, isLastLeaf ? 'last-leaf' : 'leaf'],
1663
- children: [...parentIndentLines, isLastLeaf ? 'none' : 'line']
1665
+ children: [...parentIndentLines, isLastLeaf ? 'none' : 'line'],
1666
+ footer: [...parentIndentLines, isLastLeaf ? 'none' : 'line']
1664
1667
  };
1665
1668
  }
1666
1669
 
@@ -20677,58 +20680,99 @@
20677
20680
  // Types
20678
20681
 
20679
20682
  const makeDataTableSortProps = propsFactory({
20683
+ initialSortOrder: {
20684
+ type: String,
20685
+ default: 'asc',
20686
+ validator: v => !v || ['asc', 'desc'].includes(v)
20687
+ },
20680
20688
  sortBy: {
20681
20689
  type: Array,
20682
20690
  default: () => []
20683
20691
  },
20684
20692
  customKeySort: Object,
20685
- multiSort: Boolean,
20693
+ multiSort: {
20694
+ type: [Boolean, Object],
20695
+ default: false
20696
+ },
20686
20697
  mustSort: Boolean
20687
20698
  }, 'DataTable-sort');
20688
20699
  const VDataTableSortSymbol = Symbol.for('vuetify:data-table-sort');
20689
20700
  function createSort(props) {
20701
+ const initialSortOrder = vue.toRef(() => props.initialSortOrder);
20690
20702
  const sortBy = useProxiedModel(props, 'sortBy');
20691
20703
  const mustSort = vue.toRef(() => props.mustSort);
20692
20704
  const multiSort = vue.toRef(() => props.multiSort);
20693
20705
  return {
20706
+ initialSortOrder,
20694
20707
  sortBy,
20695
- mustSort,
20696
- multiSort
20708
+ multiSort,
20709
+ mustSort
20710
+ };
20711
+ }
20712
+ function resolveMultiSort(multiSort, event) {
20713
+ if (!isObject(multiSort)) {
20714
+ return {
20715
+ active: !!multiSort
20716
+ };
20717
+ }
20718
+ const {
20719
+ key,
20720
+ mode,
20721
+ modifier
20722
+ } = multiSort;
20723
+ const reverseMode = modifier === 'alt' && event?.altKey || modifier === 'shift' && event?.shiftKey;
20724
+ return {
20725
+ active: !key || event?.ctrlKey || event?.metaKey || false,
20726
+ mode: reverseMode ? mode === 'append' ? 'prepend' : 'append' : mode
20697
20727
  };
20698
20728
  }
20699
20729
  function provideSort(options) {
20700
20730
  const {
20731
+ initialSortOrder,
20701
20732
  sortBy,
20702
20733
  mustSort,
20703
20734
  multiSort,
20704
20735
  page
20705
20736
  } = options;
20706
- const toggleSort = column => {
20737
+ const toggleSort = (column, event) => {
20707
20738
  if (column.key == null) return;
20708
20739
  let newSortBy = sortBy.value.map(x => ({
20709
20740
  ...x
20710
20741
  })) ?? [];
20711
20742
  const item = newSortBy.find(x => x.key === column.key);
20743
+ const initialOrder = initialSortOrder.value;
20744
+ const secondaryOrder = initialSortOrder.value === 'desc' ? 'asc' : 'desc';
20712
20745
  if (!item) {
20713
- if (multiSort.value) {
20714
- newSortBy.push({
20715
- key: column.key,
20716
- order: 'asc'
20717
- });
20746
+ const {
20747
+ active,
20748
+ mode
20749
+ } = resolveMultiSort(multiSort.value, event);
20750
+ if (active) {
20751
+ if (mode === 'prepend') {
20752
+ newSortBy.unshift({
20753
+ key: column.key,
20754
+ order: initialOrder
20755
+ });
20756
+ } else {
20757
+ newSortBy.push({
20758
+ key: column.key,
20759
+ order: initialOrder
20760
+ });
20761
+ }
20718
20762
  } else {
20719
20763
  newSortBy = [{
20720
20764
  key: column.key,
20721
- order: 'asc'
20765
+ order: initialOrder
20722
20766
  }];
20723
20767
  }
20724
- } else if (item.order === 'desc') {
20768
+ } else if (item.order === secondaryOrder) {
20725
20769
  if (mustSort.value && newSortBy.length === 1) {
20726
- item.order = 'asc';
20770
+ item.order = initialSortOrder.value;
20727
20771
  } else {
20728
20772
  newSortBy = newSortBy.filter(x => x.key !== column.key);
20729
20773
  }
20730
20774
  } else {
20731
- item.order = 'desc';
20775
+ item.order = secondaryOrder;
20732
20776
  }
20733
20777
  sortBy.value = newSortBy;
20734
20778
  if (page) page.value = 1;
@@ -20918,6 +20962,7 @@
20918
20962
  transform: item => item.raw
20919
20963
  });
20920
20964
  const {
20965
+ initialSortOrder,
20921
20966
  sortBy,
20922
20967
  multiSort,
20923
20968
  mustSort
@@ -20929,6 +20974,7 @@
20929
20974
  const {
20930
20975
  toggleSort
20931
20976
  } = provideSort({
20977
+ initialSortOrder,
20932
20978
  sortBy,
20933
20979
  multiSort,
20934
20980
  mustSort,
@@ -21931,7 +21977,7 @@
21931
21977
  }
21932
21978
  function handleEnterKeyPress(event, column) {
21933
21979
  if (event.key === 'Enter' && !props.disableSort) {
21934
- toggleSort(column);
21980
+ toggleSort(column, event);
21935
21981
  }
21936
21982
  }
21937
21983
  function getSortIcon(column) {
@@ -21993,7 +22039,7 @@
21993
22039
  "noPadding": noPadding,
21994
22040
  "empty": isEmpty,
21995
22041
  "tabindex": column.sortable ? 0 : undefined,
21996
- "onClick": column.sortable ? () => toggleSort(column) : undefined,
22042
+ "onClick": column.sortable ? event => toggleSort(column, event) : undefined,
21997
22043
  "onKeydown": column.sortable ? event => handleEnterKeyPress(event, column) : undefined
21998
22044
  }, headerProps), {
21999
22045
  default: () => {
@@ -22614,7 +22660,7 @@
22614
22660
  ...makeDataTableItemsProps(),
22615
22661
  ...makeDataTableSelectProps(),
22616
22662
  ...makeDataTableSortProps(),
22617
- ...makeVDataTableHeadersProps(),
22663
+ ...omit(makeVDataTableHeadersProps(), ['multiSort']),
22618
22664
  ...makeVTableProps()
22619
22665
  }, 'DataTable');
22620
22666
  const makeVDataTableProps = propsFactory({
@@ -22645,6 +22691,7 @@
22645
22691
  groupBy
22646
22692
  } = createGroupBy(props);
22647
22693
  const {
22694
+ initialSortOrder,
22648
22695
  sortBy,
22649
22696
  multiSort,
22650
22697
  mustSort
@@ -22680,6 +22727,7 @@
22680
22727
  const {
22681
22728
  toggleSort
22682
22729
  } = provideSort({
22730
+ initialSortOrder,
22683
22731
  sortBy,
22684
22732
  multiSort,
22685
22733
  mustSort,
@@ -22784,7 +22832,7 @@
22784
22832
  }));
22785
22833
  useRender(() => {
22786
22834
  const dataTableFooterProps = VDataTableFooter.filterProps(props);
22787
- const dataTableHeadersProps = VDataTableHeaders.filterProps(props);
22835
+ const dataTableHeadersProps = VDataTableHeaders.filterProps(omit(props, ['multiSort']));
22788
22836
  const dataTableRowsProps = VDataTableRows.filterProps(props);
22789
22837
  const tableProps = VTable.filterProps(props);
22790
22838
  return vue.createVNode(VTable, vue.mergeProps({
@@ -22799,7 +22847,9 @@
22799
22847
  top: () => slots.top?.(slotProps.value),
22800
22848
  default: () => slots.default ? slots.default(slotProps.value) : vue.createElementVNode(vue.Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && vue.createElementVNode("thead", {
22801
22849
  "key": "thead"
22802
- }, [vue.createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createElementVNode("tbody", null, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : vue.createVNode(VDataTableRows, vue.mergeProps(attrs, dataTableRowsProps, {
22850
+ }, [vue.createVNode(VDataTableHeaders, vue.mergeProps(dataTableHeadersProps, {
22851
+ "multiSort": !!props.multiSort
22852
+ }), slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createElementVNode("tbody", null, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : vue.createVNode(VDataTableRows, vue.mergeProps(attrs, dataTableRowsProps, {
22803
22853
  "items": paginatedItems.value
22804
22854
  }), slots), slots['body.append']?.(slotProps.value)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
22805
22855
  bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VDivider, null, null), vue.createVNode(VDataTableFooter, dataTableFooterProps, {
@@ -22838,6 +22888,7 @@
22838
22888
  groupBy
22839
22889
  } = createGroupBy(props);
22840
22890
  const {
22891
+ initialSortOrder,
22841
22892
  sortBy,
22842
22893
  multiSort,
22843
22894
  mustSort
@@ -22869,6 +22920,7 @@
22869
22920
  const {
22870
22921
  toggleSort
22871
22922
  } = provideSort({
22923
+ initialSortOrder,
22872
22924
  sortBy,
22873
22925
  multiSort,
22874
22926
  mustSort
@@ -22961,7 +23013,7 @@
22961
23013
  headers: headers.value
22962
23014
  }));
22963
23015
  useRender(() => {
22964
- const dataTableHeadersProps = VDataTableHeaders.filterProps(props);
23016
+ const dataTableHeadersProps = VDataTableHeaders.filterProps(omit(props, ['multiSort']));
22965
23017
  const dataTableRowsProps = VDataTableRows.filterProps(props);
22966
23018
  const tableProps = VTable.filterProps(props);
22967
23019
  return vue.createVNode(VTable, vue.mergeProps({
@@ -22983,7 +23035,9 @@
22983
23035
  }
22984
23036
  }, [vue.createElementVNode("table", null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && vue.createElementVNode("thead", {
22985
23037
  "key": "thead"
22986
- }, [vue.createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createElementVNode("tbody", {
23038
+ }, [vue.createVNode(VDataTableHeaders, vue.mergeProps(dataTableHeadersProps, {
23039
+ "multiSort": !!props.multiSort
23040
+ }), slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createElementVNode("tbody", {
22987
23041
  "key": "tbody"
22988
23042
  }, [vue.createElementVNode("tr", {
22989
23043
  "ref": markerRef,
@@ -23074,6 +23128,7 @@
23074
23128
  groupBy
23075
23129
  } = createGroupBy(props);
23076
23130
  const {
23131
+ initialSortOrder,
23077
23132
  sortBy,
23078
23133
  multiSort,
23079
23134
  mustSort
@@ -23100,6 +23155,7 @@
23100
23155
  const {
23101
23156
  toggleSort
23102
23157
  } = provideSort({
23158
+ initialSortOrder,
23103
23159
  sortBy,
23104
23160
  multiSort,
23105
23161
  mustSort,
@@ -23186,7 +23242,7 @@
23186
23242
  }));
23187
23243
  useRender(() => {
23188
23244
  const dataTableFooterProps = VDataTableFooter.filterProps(props);
23189
- const dataTableHeadersProps = VDataTableHeaders.filterProps(props);
23245
+ const dataTableHeadersProps = VDataTableHeaders.filterProps(omit(props, ['multiSort']));
23190
23246
  const dataTableRowsProps = VDataTableRows.filterProps(props);
23191
23247
  const tableProps = VTable.filterProps(props);
23192
23248
  return vue.createVNode(VTable, vue.mergeProps({
@@ -23202,7 +23258,9 @@
23202
23258
  "key": "thead",
23203
23259
  "class": "v-data-table__thead",
23204
23260
  "role": "rowgroup"
23205
- }, [vue.createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createElementVNode("tbody", {
23261
+ }, [vue.createVNode(VDataTableHeaders, vue.mergeProps(dataTableHeadersProps, {
23262
+ "multiSort": !!props.multiSort
23263
+ }), slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createElementVNode("tbody", {
23206
23264
  "class": "v-data-table__tbody",
23207
23265
  "role": "rowgroup"
23208
23266
  }, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : vue.createVNode(VDataTableRows, vue.mergeProps(attrs, dataTableRowsProps, {
@@ -31572,6 +31630,10 @@
31572
31630
  ...props,
31573
31631
  ...treeItemProps
31574
31632
  });
31633
+ const footerProps = {
31634
+ hideActions: props.hideActions,
31635
+ indentLines: indentLines.footer
31636
+ };
31575
31637
  return children ? vue.createVNode(VTreeviewGroup, vue.mergeProps(treeviewGroupProps, {
31576
31638
  "value": props.returnObject ? item.raw : treeviewGroupProps?.value,
31577
31639
  "rawId": treeviewGroupProps?.value
@@ -31584,6 +31646,7 @@
31584
31646
  ...itemProps,
31585
31647
  ...activatorProps,
31586
31648
  value: itemProps?.value,
31649
+ hideActions: props.hideActions,
31587
31650
  indentLines: indentLines.node,
31588
31651
  onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
31589
31652
  onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
@@ -31597,7 +31660,6 @@
31597
31660
  "ref": el => activatorItems.value[index] = el
31598
31661
  }, listItemProps, {
31599
31662
  "hasCustomPrepend": !!slots.prepend,
31600
- "hideActions": props.hideActions,
31601
31663
  "value": props.returnObject ? item.raw : itemProps.value,
31602
31664
  "loading": loading
31603
31665
  }), slotsWithItem));
@@ -31609,6 +31671,7 @@
31609
31671
  "isLastGroup": nextItemHasChildren,
31610
31672
  "returnObject": props.returnObject
31611
31673
  }), slots), slots.footer?.({
31674
+ props: footerProps,
31612
31675
  item: item.raw,
31613
31676
  internalItem: item,
31614
31677
  loading
@@ -32296,7 +32359,7 @@
32296
32359
  };
32297
32360
  });
32298
32361
  }
32299
- const version$1 = "3.10.4-dev.2025-10-01";
32362
+ const version$1 = "3.10.4-dev.2025-10-06";
32300
32363
  createVuetify$1.version = version$1;
32301
32364
 
32302
32365
  // Vue's inject() can only be used in setup
@@ -32321,7 +32384,7 @@
32321
32384
  ...options
32322
32385
  });
32323
32386
  };
32324
- const version = "3.10.4-dev.2025-10-01";
32387
+ const version = "3.10.4-dev.2025-10-06";
32325
32388
  createVuetify.version = version;
32326
32389
 
32327
32390
  exports.blueprints = index;