@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
@@ -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
  */
@@ -1676,25 +1676,28 @@
1676
1676
  parentIndentLines,
1677
1677
  variant
1678
1678
  } = _ref;
1679
+ const isLastLeaf = isLast && (!isLastGroup || separateRoots || depth > 1);
1679
1680
  if (!parentIndentLines || !depth) {
1680
1681
  return {
1681
1682
  leaf: undefined,
1682
1683
  node: undefined,
1683
- children: parentIndentLines
1684
+ children: parentIndentLines,
1685
+ footer: parentIndentLines && (!isLastLeaf || variant === 'simple') ? [...parentIndentLines, separateRoots ? 'none' : 'line'] : ['none']
1684
1686
  };
1685
1687
  }
1686
1688
  if (variant === 'simple') {
1687
1689
  return {
1688
1690
  leaf: [...parentIndentLines, 'line'],
1689
1691
  node: [...parentIndentLines, 'line'],
1690
- children: [...parentIndentLines, 'line']
1692
+ children: [...parentIndentLines, 'line'],
1693
+ footer: [...parentIndentLines, 'line', 'line']
1691
1694
  };
1692
1695
  }
1693
- const isLastLeaf = isLast && (!isLastGroup || separateRoots || depth > 1);
1694
1696
  return {
1695
1697
  leaf: [...parentIndentLines, isLastLeaf ? 'last-leaf' : 'leaf', ...(leafLinks ? ['leaf-link'] : [])],
1696
1698
  node: [...parentIndentLines, isLastLeaf ? 'last-leaf' : 'leaf'],
1697
- children: [...parentIndentLines, isLastLeaf ? 'none' : 'line']
1699
+ children: [...parentIndentLines, isLastLeaf ? 'none' : 'line'],
1700
+ footer: [...parentIndentLines, isLastLeaf ? 'none' : 'line']
1698
1701
  };
1699
1702
  }
1700
1703
 
@@ -20440,58 +20443,99 @@
20440
20443
  // Types
20441
20444
 
20442
20445
  const makeDataTableSortProps = propsFactory({
20446
+ initialSortOrder: {
20447
+ type: String,
20448
+ default: 'asc',
20449
+ validator: v => !v || ['asc', 'desc'].includes(v)
20450
+ },
20443
20451
  sortBy: {
20444
20452
  type: Array,
20445
20453
  default: () => []
20446
20454
  },
20447
20455
  customKeySort: Object,
20448
- multiSort: Boolean,
20456
+ multiSort: {
20457
+ type: [Boolean, Object],
20458
+ default: false
20459
+ },
20449
20460
  mustSort: Boolean
20450
20461
  }, 'DataTable-sort');
20451
20462
  const VDataTableSortSymbol = Symbol.for('vuetify:data-table-sort');
20452
20463
  function createSort(props) {
20464
+ const initialSortOrder = vue.toRef(() => props.initialSortOrder);
20453
20465
  const sortBy = useProxiedModel(props, 'sortBy');
20454
20466
  const mustSort = vue.toRef(() => props.mustSort);
20455
20467
  const multiSort = vue.toRef(() => props.multiSort);
20456
20468
  return {
20469
+ initialSortOrder,
20457
20470
  sortBy,
20458
- mustSort,
20459
- multiSort
20471
+ multiSort,
20472
+ mustSort
20473
+ };
20474
+ }
20475
+ function resolveMultiSort(multiSort, event) {
20476
+ if (!isObject(multiSort)) {
20477
+ return {
20478
+ active: !!multiSort
20479
+ };
20480
+ }
20481
+ const {
20482
+ key,
20483
+ mode,
20484
+ modifier
20485
+ } = multiSort;
20486
+ const reverseMode = modifier === 'alt' && event?.altKey || modifier === 'shift' && event?.shiftKey;
20487
+ return {
20488
+ active: !key || event?.ctrlKey || event?.metaKey || false,
20489
+ mode: reverseMode ? mode === 'append' ? 'prepend' : 'append' : mode
20460
20490
  };
20461
20491
  }
20462
20492
  function provideSort(options) {
20463
20493
  const {
20494
+ initialSortOrder,
20464
20495
  sortBy,
20465
20496
  mustSort,
20466
20497
  multiSort,
20467
20498
  page
20468
20499
  } = options;
20469
- const toggleSort = column => {
20500
+ const toggleSort = (column, event) => {
20470
20501
  if (column.key == null) return;
20471
20502
  let newSortBy = sortBy.value.map(x => ({
20472
20503
  ...x
20473
20504
  })) ?? [];
20474
20505
  const item = newSortBy.find(x => x.key === column.key);
20506
+ const initialOrder = initialSortOrder.value;
20507
+ const secondaryOrder = initialSortOrder.value === 'desc' ? 'asc' : 'desc';
20475
20508
  if (!item) {
20476
- if (multiSort.value) {
20477
- newSortBy.push({
20478
- key: column.key,
20479
- order: 'asc'
20480
- });
20509
+ const {
20510
+ active,
20511
+ mode
20512
+ } = resolveMultiSort(multiSort.value, event);
20513
+ if (active) {
20514
+ if (mode === 'prepend') {
20515
+ newSortBy.unshift({
20516
+ key: column.key,
20517
+ order: initialOrder
20518
+ });
20519
+ } else {
20520
+ newSortBy.push({
20521
+ key: column.key,
20522
+ order: initialOrder
20523
+ });
20524
+ }
20481
20525
  } else {
20482
20526
  newSortBy = [{
20483
20527
  key: column.key,
20484
- order: 'asc'
20528
+ order: initialOrder
20485
20529
  }];
20486
20530
  }
20487
- } else if (item.order === 'desc') {
20531
+ } else if (item.order === secondaryOrder) {
20488
20532
  if (mustSort.value && newSortBy.length === 1) {
20489
- item.order = 'asc';
20533
+ item.order = initialSortOrder.value;
20490
20534
  } else {
20491
20535
  newSortBy = newSortBy.filter(x => x.key !== column.key);
20492
20536
  }
20493
20537
  } else {
20494
- item.order = 'desc';
20538
+ item.order = secondaryOrder;
20495
20539
  }
20496
20540
  sortBy.value = newSortBy;
20497
20541
  if (page) page.value = 1;
@@ -20681,6 +20725,7 @@
20681
20725
  transform: item => item.raw
20682
20726
  });
20683
20727
  const {
20728
+ initialSortOrder,
20684
20729
  sortBy,
20685
20730
  multiSort,
20686
20731
  mustSort
@@ -20692,6 +20737,7 @@
20692
20737
  const {
20693
20738
  toggleSort
20694
20739
  } = provideSort({
20740
+ initialSortOrder,
20695
20741
  sortBy,
20696
20742
  multiSort,
20697
20743
  mustSort,
@@ -21694,7 +21740,7 @@
21694
21740
  }
21695
21741
  function handleEnterKeyPress(event, column) {
21696
21742
  if (event.key === 'Enter' && !props.disableSort) {
21697
- toggleSort(column);
21743
+ toggleSort(column, event);
21698
21744
  }
21699
21745
  }
21700
21746
  function getSortIcon(column) {
@@ -21756,7 +21802,7 @@
21756
21802
  "noPadding": noPadding,
21757
21803
  "empty": isEmpty,
21758
21804
  "tabindex": column.sortable ? 0 : undefined,
21759
- "onClick": column.sortable ? () => toggleSort(column) : undefined,
21805
+ "onClick": column.sortable ? event => toggleSort(column, event) : undefined,
21760
21806
  "onKeydown": column.sortable ? event => handleEnterKeyPress(event, column) : undefined
21761
21807
  }, headerProps), {
21762
21808
  default: () => {
@@ -22377,7 +22423,7 @@
22377
22423
  ...makeDataTableItemsProps(),
22378
22424
  ...makeDataTableSelectProps(),
22379
22425
  ...makeDataTableSortProps(),
22380
- ...makeVDataTableHeadersProps(),
22426
+ ...omit(makeVDataTableHeadersProps(), ['multiSort']),
22381
22427
  ...makeVTableProps()
22382
22428
  }, 'DataTable');
22383
22429
  const makeVDataTableProps = propsFactory({
@@ -22408,6 +22454,7 @@
22408
22454
  groupBy
22409
22455
  } = createGroupBy(props);
22410
22456
  const {
22457
+ initialSortOrder,
22411
22458
  sortBy,
22412
22459
  multiSort,
22413
22460
  mustSort
@@ -22443,6 +22490,7 @@
22443
22490
  const {
22444
22491
  toggleSort
22445
22492
  } = provideSort({
22493
+ initialSortOrder,
22446
22494
  sortBy,
22447
22495
  multiSort,
22448
22496
  mustSort,
@@ -22547,7 +22595,7 @@
22547
22595
  }));
22548
22596
  useRender(() => {
22549
22597
  const dataTableFooterProps = VDataTableFooter.filterProps(props);
22550
- const dataTableHeadersProps = VDataTableHeaders.filterProps(props);
22598
+ const dataTableHeadersProps = VDataTableHeaders.filterProps(omit(props, ['multiSort']));
22551
22599
  const dataTableRowsProps = VDataTableRows.filterProps(props);
22552
22600
  const tableProps = VTable.filterProps(props);
22553
22601
  return vue.createVNode(VTable, vue.mergeProps({
@@ -22562,7 +22610,9 @@
22562
22610
  top: () => slots.top?.(slotProps.value),
22563
22611
  default: () => slots.default ? slots.default(slotProps.value) : vue.createElementVNode(vue.Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && vue.createElementVNode("thead", {
22564
22612
  "key": "thead"
22565
- }, [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, {
22613
+ }, [vue.createVNode(VDataTableHeaders, vue.mergeProps(dataTableHeadersProps, {
22614
+ "multiSort": !!props.multiSort
22615
+ }), 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, {
22566
22616
  "items": paginatedItems.value
22567
22617
  }), slots), slots['body.append']?.(slotProps.value)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
22568
22618
  bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VDivider, null, null), vue.createVNode(VDataTableFooter, dataTableFooterProps, {
@@ -22601,6 +22651,7 @@
22601
22651
  groupBy
22602
22652
  } = createGroupBy(props);
22603
22653
  const {
22654
+ initialSortOrder,
22604
22655
  sortBy,
22605
22656
  multiSort,
22606
22657
  mustSort
@@ -22632,6 +22683,7 @@
22632
22683
  const {
22633
22684
  toggleSort
22634
22685
  } = provideSort({
22686
+ initialSortOrder,
22635
22687
  sortBy,
22636
22688
  multiSort,
22637
22689
  mustSort
@@ -22724,7 +22776,7 @@
22724
22776
  headers: headers.value
22725
22777
  }));
22726
22778
  useRender(() => {
22727
- const dataTableHeadersProps = VDataTableHeaders.filterProps(props);
22779
+ const dataTableHeadersProps = VDataTableHeaders.filterProps(omit(props, ['multiSort']));
22728
22780
  const dataTableRowsProps = VDataTableRows.filterProps(props);
22729
22781
  const tableProps = VTable.filterProps(props);
22730
22782
  return vue.createVNode(VTable, vue.mergeProps({
@@ -22746,7 +22798,9 @@
22746
22798
  }
22747
22799
  }, [vue.createElementVNode("table", null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && vue.createElementVNode("thead", {
22748
22800
  "key": "thead"
22749
- }, [vue.createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createElementVNode("tbody", {
22801
+ }, [vue.createVNode(VDataTableHeaders, vue.mergeProps(dataTableHeadersProps, {
22802
+ "multiSort": !!props.multiSort
22803
+ }), slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createElementVNode("tbody", {
22750
22804
  "key": "tbody"
22751
22805
  }, [vue.createElementVNode("tr", {
22752
22806
  "ref": markerRef,
@@ -22837,6 +22891,7 @@
22837
22891
  groupBy
22838
22892
  } = createGroupBy(props);
22839
22893
  const {
22894
+ initialSortOrder,
22840
22895
  sortBy,
22841
22896
  multiSort,
22842
22897
  mustSort
@@ -22863,6 +22918,7 @@
22863
22918
  const {
22864
22919
  toggleSort
22865
22920
  } = provideSort({
22921
+ initialSortOrder,
22866
22922
  sortBy,
22867
22923
  multiSort,
22868
22924
  mustSort,
@@ -22949,7 +23005,7 @@
22949
23005
  }));
22950
23006
  useRender(() => {
22951
23007
  const dataTableFooterProps = VDataTableFooter.filterProps(props);
22952
- const dataTableHeadersProps = VDataTableHeaders.filterProps(props);
23008
+ const dataTableHeadersProps = VDataTableHeaders.filterProps(omit(props, ['multiSort']));
22953
23009
  const dataTableRowsProps = VDataTableRows.filterProps(props);
22954
23010
  const tableProps = VTable.filterProps(props);
22955
23011
  return vue.createVNode(VTable, vue.mergeProps({
@@ -22965,7 +23021,9 @@
22965
23021
  "key": "thead",
22966
23022
  "class": "v-data-table__thead",
22967
23023
  "role": "rowgroup"
22968
- }, [vue.createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createElementVNode("tbody", {
23024
+ }, [vue.createVNode(VDataTableHeaders, vue.mergeProps(dataTableHeadersProps, {
23025
+ "multiSort": !!props.multiSort
23026
+ }), slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createElementVNode("tbody", {
22969
23027
  "class": "v-data-table__tbody",
22970
23028
  "role": "rowgroup"
22971
23029
  }, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : vue.createVNode(VDataTableRows, vue.mergeProps(attrs, dataTableRowsProps, {
@@ -31335,6 +31393,10 @@
31335
31393
  ...props,
31336
31394
  ...treeItemProps
31337
31395
  });
31396
+ const footerProps = {
31397
+ hideActions: props.hideActions,
31398
+ indentLines: indentLines.footer
31399
+ };
31338
31400
  return children ? vue.createVNode(VTreeviewGroup, vue.mergeProps(treeviewGroupProps, {
31339
31401
  "value": props.returnObject ? item.raw : treeviewGroupProps?.value,
31340
31402
  "rawId": treeviewGroupProps?.value
@@ -31347,6 +31409,7 @@
31347
31409
  ...itemProps,
31348
31410
  ...activatorProps,
31349
31411
  value: itemProps?.value,
31412
+ hideActions: props.hideActions,
31350
31413
  indentLines: indentLines.node,
31351
31414
  onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
31352
31415
  onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
@@ -31360,7 +31423,6 @@
31360
31423
  "ref": el => activatorItems.value[index] = el
31361
31424
  }, listItemProps, {
31362
31425
  "hasCustomPrepend": !!slots.prepend,
31363
- "hideActions": props.hideActions,
31364
31426
  "value": props.returnObject ? item.raw : itemProps.value,
31365
31427
  "loading": loading
31366
31428
  }), slotsWithItem));
@@ -31372,6 +31434,7 @@
31372
31434
  "isLastGroup": nextItemHasChildren,
31373
31435
  "returnObject": props.returnObject
31374
31436
  }), slots), slots.footer?.({
31437
+ props: footerProps,
31375
31438
  item: item.raw,
31376
31439
  internalItem: item,
31377
31440
  loading
@@ -37922,7 +37985,7 @@
37922
37985
  };
37923
37986
  });
37924
37987
  }
37925
- const version$1 = "3.10.4-dev.2025-10-01";
37988
+ const version$1 = "3.10.4-dev.2025-10-06";
37926
37989
  createVuetify$1.version = version$1;
37927
37990
 
37928
37991
  // Vue's inject() can only be used in setup
@@ -38220,7 +38283,7 @@
38220
38283
 
38221
38284
  /* eslint-disable local-rules/sort-imports */
38222
38285
 
38223
- const version = "3.10.4-dev.2025-10-01";
38286
+ const version = "3.10.4-dev.2025-10-06";
38224
38287
 
38225
38288
  /* eslint-disable local-rules/sort-imports */
38226
38289