@vuetify/nightly 3.9.3-master.2025-07-30 → 3.9.3-master.2025-07-31

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 (217) hide show
  1. package/CHANGELOG.md +22 -3
  2. package/dist/json/attributes.json +3339 -3327
  3. package/dist/json/importMap-labs.json +24 -24
  4. package/dist/json/importMap.json +160 -160
  5. package/dist/json/tags.json +4 -1
  6. package/dist/json/web-types.json +6197 -6075
  7. package/dist/vuetify-labs.cjs +161 -73
  8. package/dist/vuetify-labs.css +5656 -5635
  9. package/dist/vuetify-labs.d.ts +207 -143
  10. package/dist/vuetify-labs.esm.js +161 -73
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +161 -73
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +139 -66
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +4033 -4027
  17. package/dist/vuetify.d.ts +95 -71
  18. package/dist/vuetify.esm.js +139 -66
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +139 -66
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +226 -226
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VColorPicker/VColorPickerEdit.css +5 -0
  26. package/lib/components/VColorPicker/VColorPickerEdit.js +8 -1
  27. package/lib/components/VColorPicker/VColorPickerEdit.js.map +1 -1
  28. package/lib/components/VColorPicker/VColorPickerEdit.sass +5 -0
  29. package/lib/components/VColorPicker/VColorPickerPreview.js +8 -1
  30. package/lib/components/VColorPicker/VColorPickerPreview.js.map +1 -1
  31. package/lib/components/VColorPicker/util/index.d.ts +1 -0
  32. package/lib/components/VColorPicker/util/index.js +20 -10
  33. package/lib/components/VColorPicker/util/index.js.map +1 -1
  34. package/lib/components/VConfirmEdit/VConfirmEdit.js +1 -1
  35. package/lib/components/VConfirmEdit/VConfirmEdit.js.map +1 -1
  36. package/lib/components/VDataIterator/VDataIterator.d.ts +2 -2
  37. package/lib/components/VDataIterator/VDataIterator.js +1 -1
  38. package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
  39. package/lib/components/VDataTable/VDataTable.css +2 -1
  40. package/lib/components/VDataTable/VDataTable.d.ts +6 -4
  41. package/lib/components/VDataTable/VDataTable.js +1 -1
  42. package/lib/components/VDataTable/VDataTable.js.map +1 -1
  43. package/lib/components/VDataTable/VDataTable.sass +2 -1
  44. package/lib/components/VDataTable/VDataTableRows.d.ts +14 -11
  45. package/lib/components/VDataTable/VDataTableRows.js +9 -0
  46. package/lib/components/VDataTable/VDataTableRows.js.map +1 -1
  47. package/lib/components/VDataTable/VDataTableServer.d.ts +4 -2
  48. package/lib/components/VDataTable/VDataTableServer.js +1 -1
  49. package/lib/components/VDataTable/VDataTableServer.js.map +1 -1
  50. package/lib/components/VDataTable/VDataTableVirtual.d.ts +4 -2
  51. package/lib/components/VDataTable/VDataTableVirtual.js +1 -1
  52. package/lib/components/VDataTable/VDataTableVirtual.js.map +1 -1
  53. package/lib/components/VDataTable/composables/group.d.ts +13 -5
  54. package/lib/components/VDataTable/composables/group.js +11 -5
  55. package/lib/components/VDataTable/composables/group.js.map +1 -1
  56. package/lib/components/VDataTable/composables/headers.js +53 -42
  57. package/lib/components/VDataTable/composables/headers.js.map +1 -1
  58. package/lib/components/VDataTable/composables/paginate.d.ts +3 -3
  59. package/lib/components/VDataTable/composables/paginate.js.map +1 -1
  60. package/lib/components/VDataTable/composables/sort.js +1 -1
  61. package/lib/components/VDataTable/composables/sort.js.map +1 -1
  62. package/lib/components/VDataTable/types.d.ts +7 -1
  63. package/lib/components/VDataTable/types.js.map +1 -1
  64. package/lib/components/VNumberInput/VNumberInput.js +1 -0
  65. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  66. package/lib/components/VSlider/VSliderThumb.css +2 -2
  67. package/lib/components/VSlider/VSliderThumb.sass +2 -2
  68. package/lib/components/VTable/VTable.css +2 -2
  69. package/lib/components/VTable/VTable.sass +4 -4
  70. package/lib/components/VTreeview/VTreeviewChildren.d.ts +20 -2
  71. package/lib/components/VTreeview/VTreeviewChildren.js +7 -2
  72. package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
  73. package/lib/entry-bundler.js +1 -1
  74. package/lib/framework.d.ts +56 -56
  75. package/lib/framework.js +1 -1
  76. package/lib/labs/VColorInput/VColorInput.css +15 -0
  77. package/lib/labs/VColorInput/VColorInput.d.ts +287 -215
  78. package/lib/labs/VColorInput/VColorInput.js +23 -8
  79. package/lib/labs/VColorInput/VColorInput.js.map +1 -1
  80. package/lib/labs/VColorInput/VColorInput.sass +8 -0
  81. package/lib/labs/VColorInput/_variables.scss +2 -0
  82. package/lib/labs/VVideo/VVideoControls.js +1 -1
  83. package/lib/labs/VVideo/VVideoControls.js.map +1 -1
  84. package/lib/labs/VVideo/VVideoVolume.js +1 -1
  85. package/lib/labs/VVideo/VVideoVolume.js.map +1 -1
  86. package/lib/locale/af.d.ts +17 -0
  87. package/lib/locale/af.js +17 -0
  88. package/lib/locale/af.js.map +1 -1
  89. package/lib/locale/ar.d.ts +17 -0
  90. package/lib/locale/ar.js +17 -0
  91. package/lib/locale/ar.js.map +1 -1
  92. package/lib/locale/az.d.ts +17 -0
  93. package/lib/locale/az.js +17 -0
  94. package/lib/locale/az.js.map +1 -1
  95. package/lib/locale/bg.d.ts +17 -0
  96. package/lib/locale/bg.js +17 -0
  97. package/lib/locale/bg.js.map +1 -1
  98. package/lib/locale/ca.d.ts +17 -0
  99. package/lib/locale/ca.js +17 -0
  100. package/lib/locale/ca.js.map +1 -1
  101. package/lib/locale/ckb.d.ts +17 -0
  102. package/lib/locale/ckb.js +17 -0
  103. package/lib/locale/ckb.js.map +1 -1
  104. package/lib/locale/cs.d.ts +17 -0
  105. package/lib/locale/cs.js +17 -0
  106. package/lib/locale/cs.js.map +1 -1
  107. package/lib/locale/da.d.ts +17 -0
  108. package/lib/locale/da.js +17 -0
  109. package/lib/locale/da.js.map +1 -1
  110. package/lib/locale/de.d.ts +17 -0
  111. package/lib/locale/de.js +17 -0
  112. package/lib/locale/de.js.map +1 -1
  113. package/lib/locale/el.d.ts +17 -0
  114. package/lib/locale/el.js +17 -0
  115. package/lib/locale/el.js.map +1 -1
  116. package/lib/locale/en.d.ts +17 -0
  117. package/lib/locale/en.js +17 -0
  118. package/lib/locale/en.js.map +1 -1
  119. package/lib/locale/es.d.ts +17 -0
  120. package/lib/locale/es.js +17 -0
  121. package/lib/locale/es.js.map +1 -1
  122. package/lib/locale/et.d.ts +17 -0
  123. package/lib/locale/et.js +17 -0
  124. package/lib/locale/et.js.map +1 -1
  125. package/lib/locale/fa.d.ts +17 -0
  126. package/lib/locale/fa.js +17 -0
  127. package/lib/locale/fa.js.map +1 -1
  128. package/lib/locale/fi.d.ts +17 -0
  129. package/lib/locale/fi.js +17 -0
  130. package/lib/locale/fi.js.map +1 -1
  131. package/lib/locale/fr.d.ts +17 -0
  132. package/lib/locale/fr.js +17 -0
  133. package/lib/locale/fr.js.map +1 -1
  134. package/lib/locale/he.d.ts +17 -0
  135. package/lib/locale/he.js +17 -0
  136. package/lib/locale/he.js.map +1 -1
  137. package/lib/locale/hr.d.ts +17 -0
  138. package/lib/locale/hr.js +17 -0
  139. package/lib/locale/hr.js.map +1 -1
  140. package/lib/locale/hu.d.ts +17 -0
  141. package/lib/locale/hu.js +17 -0
  142. package/lib/locale/hu.js.map +1 -1
  143. package/lib/locale/id.d.ts +17 -0
  144. package/lib/locale/id.js +17 -0
  145. package/lib/locale/id.js.map +1 -1
  146. package/lib/locale/it.d.ts +17 -0
  147. package/lib/locale/it.js +17 -0
  148. package/lib/locale/it.js.map +1 -1
  149. package/lib/locale/ja.d.ts +17 -0
  150. package/lib/locale/ja.js +17 -0
  151. package/lib/locale/ja.js.map +1 -1
  152. package/lib/locale/km.d.ts +17 -0
  153. package/lib/locale/km.js +17 -0
  154. package/lib/locale/km.js.map +1 -1
  155. package/lib/locale/ko.d.ts +17 -0
  156. package/lib/locale/ko.js +17 -0
  157. package/lib/locale/ko.js.map +1 -1
  158. package/lib/locale/lt.d.ts +17 -0
  159. package/lib/locale/lt.js +17 -0
  160. package/lib/locale/lt.js.map +1 -1
  161. package/lib/locale/lv.d.ts +17 -0
  162. package/lib/locale/lv.js +17 -0
  163. package/lib/locale/lv.js.map +1 -1
  164. package/lib/locale/nl.d.ts +17 -0
  165. package/lib/locale/nl.js +17 -0
  166. package/lib/locale/nl.js.map +1 -1
  167. package/lib/locale/no.d.ts +17 -0
  168. package/lib/locale/no.js +17 -0
  169. package/lib/locale/no.js.map +1 -1
  170. package/lib/locale/pl.d.ts +17 -0
  171. package/lib/locale/pl.js +17 -0
  172. package/lib/locale/pl.js.map +1 -1
  173. package/lib/locale/pt.d.ts +17 -0
  174. package/lib/locale/pt.js +17 -0
  175. package/lib/locale/pt.js.map +1 -1
  176. package/lib/locale/ro.d.ts +17 -0
  177. package/lib/locale/ro.js +17 -0
  178. package/lib/locale/ro.js.map +1 -1
  179. package/lib/locale/ru.d.ts +17 -0
  180. package/lib/locale/ru.js +17 -0
  181. package/lib/locale/ru.js.map +1 -1
  182. package/lib/locale/sk.d.ts +17 -0
  183. package/lib/locale/sk.js +17 -0
  184. package/lib/locale/sk.js.map +1 -1
  185. package/lib/locale/sl.d.ts +17 -0
  186. package/lib/locale/sl.js +17 -0
  187. package/lib/locale/sl.js.map +1 -1
  188. package/lib/locale/sr-Cyrl.d.ts +17 -0
  189. package/lib/locale/sr-Cyrl.js +17 -0
  190. package/lib/locale/sr-Cyrl.js.map +1 -1
  191. package/lib/locale/sr-Latn.d.ts +17 -0
  192. package/lib/locale/sr-Latn.js +17 -0
  193. package/lib/locale/sr-Latn.js.map +1 -1
  194. package/lib/locale/sv.d.ts +17 -0
  195. package/lib/locale/sv.js +17 -0
  196. package/lib/locale/sv.js.map +1 -1
  197. package/lib/locale/th.d.ts +17 -0
  198. package/lib/locale/th.js +17 -0
  199. package/lib/locale/th.js.map +1 -1
  200. package/lib/locale/tr.d.ts +17 -0
  201. package/lib/locale/tr.js +17 -0
  202. package/lib/locale/tr.js.map +1 -1
  203. package/lib/locale/uk.d.ts +17 -0
  204. package/lib/locale/uk.js +17 -0
  205. package/lib/locale/uk.js.map +1 -1
  206. package/lib/locale/vi.d.ts +17 -0
  207. package/lib/locale/vi.js +17 -0
  208. package/lib/locale/vi.js.map +1 -1
  209. package/lib/locale/zh-Hans.d.ts +17 -0
  210. package/lib/locale/zh-Hans.js +17 -0
  211. package/lib/locale/zh-Hans.js.map +1 -1
  212. package/lib/locale/zh-Hant.d.ts +17 -0
  213. package/lib/locale/zh-Hant.js +17 -0
  214. package/lib/locale/zh-Hant.js.map +1 -1
  215. package/lib/util/getScrollParent.js +3 -1
  216. package/lib/util/getScrollParent.js.map +1 -1
  217. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import type { PropType, Ref } from 'vue';
1
+ import type { MaybeRefOrGetter, PropType, Ref } from 'vue';
2
2
  import type { SortItem } from './sort.js';
3
3
  import type { DataTableItem } from '../types.js';
4
4
  export interface GroupableItem<T = any> {
@@ -11,7 +11,15 @@ export interface Group<T = any> {
11
11
  id: string;
12
12
  key: string;
13
13
  value: any;
14
- items: readonly (T | Group<T>)[];
14
+ items: readonly (T | Group<T> | GroupSummary<T>)[];
15
+ }
16
+ export interface GroupSummary<T = any> {
17
+ type: 'group-summary';
18
+ depth: number;
19
+ id: string;
20
+ key: string;
21
+ value: any;
22
+ items: readonly (T | Group<T> | GroupSummary<T>)[];
15
23
  }
16
24
  export declare const makeDataTableGroupProps: <Defaults extends {
17
25
  groupBy?: unknown;
@@ -45,7 +53,7 @@ export declare function provideGroupBy(options: {
45
53
  toggleGroup: (group: Group) => void;
46
54
  opened: Ref<Set<string> & Omit<Set<string>, keyof Set<any>>, Set<string> | (Set<string> & Omit<Set<string>, keyof Set<any>>)>;
47
55
  groupBy: Ref<readonly SortItem[], readonly SortItem[]>;
48
- extractRows: <T extends GroupableItem>(items: readonly (T | Group<T>)[]) => T[];
56
+ extractRows: <T extends GroupableItem>(items: readonly (T | Group<T> | GroupSummary<T>)[]) => T[];
49
57
  isGroupOpen: (group: Group) => boolean;
50
58
  };
51
59
  export declare function useGroupBy(): {
@@ -56,7 +64,7 @@ export declare function useGroupBy(): {
56
64
  groupBy: Ref<readonly SortItem[]>;
57
65
  extractRows: (items: (DataTableItem | Group<DataTableItem>)[]) => DataTableItem[];
58
66
  };
59
- export declare function useGroupedItems<T extends GroupableItem>(items: Ref<T[]>, groupBy: Ref<readonly SortItem[]>, opened: Ref<Set<string>>): {
60
- flatItems: import("vue").ComputedRef<readonly (T | Group<T>)[]>;
67
+ export declare function useGroupedItems<T extends GroupableItem>(items: Ref<T[]>, groupBy: Ref<readonly SortItem[]>, opened: Ref<Set<string>>, hasSummary: MaybeRefOrGetter<boolean>): {
68
+ flatItems: import("vue").ComputedRef<readonly (T | Group<T> | GroupSummary<T>)[]>;
61
69
  };
62
70
 
@@ -1,6 +1,6 @@
1
1
  // Composables
2
2
  import { useProxiedModel } from "../../../composables/proxiedModel.js"; // Utilities
3
- import { computed, inject, provide, ref } from 'vue';
3
+ import { computed, inject, provide, ref, toValue } from 'vue';
4
4
  import { getObjectValueByPath, propsFactory } from "../../../util/index.js"; // Types
5
5
  export const makeDataTableGroupProps = propsFactory({
6
6
  groupBy: {
@@ -113,7 +113,7 @@ function groupItems(items, groupBy) {
113
113
  });
114
114
  return groups;
115
115
  }
116
- function flattenItems(items, opened) {
116
+ function flattenItems(items, opened, hasSummary) {
117
117
  const flatItems = [];
118
118
  for (const item of items) {
119
119
  // TODO: make this better
@@ -122,7 +122,13 @@ function flattenItems(items, opened) {
122
122
  flatItems.push(item);
123
123
  }
124
124
  if (opened.has(item.id) || item.value == null) {
125
- flatItems.push(...flattenItems(item.items, opened));
125
+ flatItems.push(...flattenItems(item.items, opened, hasSummary));
126
+ if (hasSummary) {
127
+ flatItems.push({
128
+ ...item,
129
+ type: 'group-summary'
130
+ });
131
+ }
126
132
  }
127
133
  } else {
128
134
  flatItems.push(item);
@@ -130,11 +136,11 @@ function flattenItems(items, opened) {
130
136
  }
131
137
  return flatItems;
132
138
  }
133
- export function useGroupedItems(items, groupBy, opened) {
139
+ export function useGroupedItems(items, groupBy, opened, hasSummary) {
134
140
  const flatItems = computed(() => {
135
141
  if (!groupBy.value.length) return items.value;
136
142
  const groupedItems = groupItems(items.value, groupBy.value.map(item => item.key));
137
- return flattenItems(groupedItems, opened.value);
143
+ return flattenItems(groupedItems, opened.value, toValue(hasSummary));
138
144
  });
139
145
  return {
140
146
  flatItems
@@ -1 +1 @@
1
- {"version":3,"file":"group.js","names":["useProxiedModel","computed","inject","provide","ref","getObjectValueByPath","propsFactory","makeDataTableGroupProps","groupBy","type","Array","default","VDataTableGroupSymbol","Symbol","for","createGroupBy","props","provideGroupBy","options","disableSort","sortBy","opened","Set","sortByWithGroups","value","map","val","order","concat","isGroupOpen","group","has","id","toggleGroup","newOpened","add","delete","extractRows","items","dive","arr","item","push","key","depth","data","useGroupBy","Error","groupItemsByProperty","length","groups","Map","raw","set","get","groupItems","arguments","undefined","prefix","groupedItems","rest","slice","forEach","flattenItems","flatItems","useGroupedItems"],"sources":["../../../../src/components/VDataTable/composables/group.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, ref } from 'vue'\nimport { getObjectValueByPath, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { SortItem } from './sort'\nimport type { DataTableItem } from '../types'\n\nexport interface GroupableItem<T = any> {\n type: 'item'\n raw: T\n}\n\nexport interface Group<T = any> {\n type: 'group'\n depth: number\n id: string\n key: string\n value: any\n items: readonly (T | Group<T>)[]\n}\n\nexport const makeDataTableGroupProps = propsFactory({\n groupBy: {\n type: Array as PropType<readonly SortItem[]>,\n default: () => ([]),\n },\n}, 'DataTable-group')\n\nconst VDataTableGroupSymbol: InjectionKey<{\n opened: Ref<Set<string>>\n toggleGroup: (group: Group) => void\n isGroupOpen: (group: Group) => boolean\n sortByWithGroups: Ref<SortItem[]>\n groupBy: Ref<readonly SortItem[]>\n extractRows: (items: (DataTableItem | Group<DataTableItem>)[]) => DataTableItem[]\n}> = Symbol.for('vuetify:data-table-group')\n\ntype GroupProps = {\n groupBy: readonly SortItem[]\n 'onUpdate:groupBy': ((value: SortItem[]) => void) | undefined\n}\n\nexport function createGroupBy (props: GroupProps) {\n const groupBy = useProxiedModel(props, 'groupBy')\n\n return { groupBy }\n}\n\nexport function provideGroupBy (options: {\n groupBy: Ref<readonly SortItem[]>\n sortBy: Ref<readonly SortItem[]>\n disableSort?: Ref<boolean>\n}) {\n const { disableSort, groupBy, sortBy } = options\n const opened = ref(new Set<string>())\n\n const sortByWithGroups = computed(() => {\n return groupBy.value.map<SortItem>(val => ({\n ...val,\n order: val.order ?? false,\n })).concat(disableSort?.value ? [] : sortBy.value)\n })\n\n function isGroupOpen (group: Group) {\n return opened.value.has(group.id)\n }\n\n function toggleGroup (group: Group) {\n const newOpened = new Set(opened.value)\n if (!isGroupOpen(group)) newOpened.add(group.id)\n else newOpened.delete(group.id)\n\n opened.value = newOpened\n }\n\n function extractRows <T extends GroupableItem> (items: readonly (T | Group<T>)[]) {\n function dive (group: Group<T>): T[] {\n const arr = []\n\n for (const item of group.items) {\n if ('type' in item && item.type === 'group') {\n arr.push(...dive(item))\n } else {\n arr.push(item as T)\n }\n }\n\n return [...new Set(arr)]\n }\n return dive({ type: 'group', items, id: 'dummy', key: 'dummy', value: 'dummy', depth: 0 })\n }\n\n // onBeforeMount(() => {\n // for (const key of groupedItems.value.keys()) {\n // opened.value.add(key)\n // }\n // })\n\n const data = { sortByWithGroups, toggleGroup, opened, groupBy, extractRows, isGroupOpen }\n\n provide(VDataTableGroupSymbol, data)\n\n return data\n}\n\nexport function useGroupBy () {\n const data = inject(VDataTableGroupSymbol)\n\n if (!data) throw new Error('Missing group!')\n\n return data\n}\n\nfunction groupItemsByProperty <T extends GroupableItem> (items: readonly T[], groupBy: string) {\n if (!items.length) return []\n\n const groups = new Map<any, T[]>()\n for (const item of items) {\n const value = getObjectValueByPath(item.raw, groupBy)\n\n if (!groups.has(value)) {\n groups.set(value, [])\n }\n groups.get(value)!.push(item)\n }\n\n return groups\n}\n\nfunction groupItems <T extends GroupableItem> (items: readonly T[], groupBy: readonly string[], depth = 0, prefix = 'root') {\n if (!groupBy.length) return []\n\n const groupedItems = groupItemsByProperty(items, groupBy[0])\n const groups: Group<T>[] = []\n\n const rest = groupBy.slice(1)\n groupedItems.forEach((items, value) => {\n const key = groupBy[0]\n const id = `${prefix}_${key}_${value}`\n groups.push({\n depth,\n id,\n key,\n value,\n items: rest.length ? groupItems(items, rest, depth + 1, id) : items,\n type: 'group',\n })\n })\n\n return groups\n}\n\nfunction flattenItems <T extends GroupableItem> (items: readonly (T | Group<T>)[], opened: Set<string>): readonly (T | Group<T>)[] {\n const flatItems: (T | Group<T>)[] = []\n\n for (const item of items) {\n // TODO: make this better\n if ('type' in item && item.type === 'group') {\n if (item.value != null) {\n flatItems.push(item)\n }\n\n if (opened.has(item.id) || item.value == null) {\n flatItems.push(...flattenItems(item.items, opened))\n }\n } else {\n flatItems.push(item)\n }\n }\n\n return flatItems\n}\n\nexport function useGroupedItems <T extends GroupableItem> (\n items: Ref<T[]>,\n groupBy: Ref<readonly SortItem[]>,\n opened: Ref<Set<string>>\n) {\n const flatItems = computed(() => {\n if (!groupBy.value.length) return items.value\n\n const groupedItems = groupItems(items.value, groupBy.value.map(item => item.key))\n\n return flattenItems(groupedItems, opened.value)\n })\n\n return { flatItems }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"group.js","names":["useProxiedModel","computed","inject","provide","ref","toValue","getObjectValueByPath","propsFactory","makeDataTableGroupProps","groupBy","type","Array","default","VDataTableGroupSymbol","Symbol","for","createGroupBy","props","provideGroupBy","options","disableSort","sortBy","opened","Set","sortByWithGroups","value","map","val","order","concat","isGroupOpen","group","has","id","toggleGroup","newOpened","add","delete","extractRows","items","dive","arr","item","push","key","depth","data","useGroupBy","Error","groupItemsByProperty","length","groups","Map","raw","set","get","groupItems","arguments","undefined","prefix","groupedItems","rest","slice","forEach","flattenItems","hasSummary","flatItems","useGroupedItems"],"sources":["../../../../src/components/VDataTable/composables/group.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, ref, toValue } from 'vue'\nimport { getObjectValueByPath, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, MaybeRefOrGetter, PropType, Ref } from 'vue'\nimport type { SortItem } from './sort'\nimport type { DataTableItem } from '../types'\n\nexport interface GroupableItem<T = any> {\n type: 'item'\n raw: T\n}\n\nexport interface Group<T = any> {\n type: 'group'\n depth: number\n id: string\n key: string\n value: any\n items: readonly (T | Group<T> | GroupSummary<T>)[]\n}\n\nexport interface GroupSummary<T = any> {\n type: 'group-summary'\n depth: number\n id: string\n key: string\n value: any\n items: readonly (T | Group<T> | GroupSummary<T>)[]\n}\n\nexport const makeDataTableGroupProps = propsFactory({\n groupBy: {\n type: Array as PropType<readonly SortItem[]>,\n default: () => ([]),\n },\n}, 'DataTable-group')\n\nconst VDataTableGroupSymbol: InjectionKey<{\n opened: Ref<Set<string>>\n toggleGroup: (group: Group) => void\n isGroupOpen: (group: Group) => boolean\n sortByWithGroups: Ref<SortItem[]>\n groupBy: Ref<readonly SortItem[]>\n extractRows: (items: (DataTableItem | Group<DataTableItem>)[]) => DataTableItem[]\n}> = Symbol.for('vuetify:data-table-group')\n\ntype GroupProps = {\n groupBy: readonly SortItem[]\n 'onUpdate:groupBy': ((value: SortItem[]) => void) | undefined\n}\n\nexport function createGroupBy (props: GroupProps) {\n const groupBy = useProxiedModel(props, 'groupBy')\n\n return { groupBy }\n}\n\nexport function provideGroupBy (options: {\n groupBy: Ref<readonly SortItem[]>\n sortBy: Ref<readonly SortItem[]>\n disableSort?: Ref<boolean>\n}) {\n const { disableSort, groupBy, sortBy } = options\n const opened = ref(new Set<string>())\n\n const sortByWithGroups = computed(() => {\n return groupBy.value.map<SortItem>(val => ({\n ...val,\n order: val.order ?? false,\n })).concat(disableSort?.value ? [] : sortBy.value)\n })\n\n function isGroupOpen (group: Group) {\n return opened.value.has(group.id)\n }\n\n function toggleGroup (group: Group) {\n const newOpened = new Set(opened.value)\n if (!isGroupOpen(group)) newOpened.add(group.id)\n else newOpened.delete(group.id)\n\n opened.value = newOpened\n }\n\n function extractRows <T extends GroupableItem> (items: readonly (T | Group<T> | GroupSummary<T>)[]) {\n function dive (group: Group<T>): T[] {\n const arr = []\n\n for (const item of group.items) {\n if ('type' in item && item.type === 'group') {\n arr.push(...dive(item))\n } else {\n arr.push(item as T)\n }\n }\n\n return [...new Set(arr)]\n }\n return dive({ type: 'group', items, id: 'dummy', key: 'dummy', value: 'dummy', depth: 0 })\n }\n\n // onBeforeMount(() => {\n // for (const key of groupedItems.value.keys()) {\n // opened.value.add(key)\n // }\n // })\n\n const data = { sortByWithGroups, toggleGroup, opened, groupBy, extractRows, isGroupOpen }\n\n provide(VDataTableGroupSymbol, data)\n\n return data\n}\n\nexport function useGroupBy () {\n const data = inject(VDataTableGroupSymbol)\n\n if (!data) throw new Error('Missing group!')\n\n return data\n}\n\nfunction groupItemsByProperty <T extends GroupableItem> (items: readonly T[], groupBy: string) {\n if (!items.length) return []\n\n const groups = new Map<any, T[]>()\n for (const item of items) {\n const value = getObjectValueByPath(item.raw, groupBy)\n\n if (!groups.has(value)) {\n groups.set(value, [])\n }\n groups.get(value)!.push(item)\n }\n\n return groups\n}\n\nfunction groupItems <T extends GroupableItem> (items: readonly T[], groupBy: readonly string[], depth = 0, prefix = 'root') {\n if (!groupBy.length) return []\n\n const groupedItems = groupItemsByProperty(items, groupBy[0])\n const groups: Group<T>[] = []\n\n const rest = groupBy.slice(1)\n groupedItems.forEach((items, value) => {\n const key = groupBy[0]\n const id = `${prefix}_${key}_${value}`\n groups.push({\n depth,\n id,\n key,\n value,\n items: rest.length ? groupItems(items, rest, depth + 1, id) : items,\n type: 'group',\n })\n })\n\n return groups\n}\n\nfunction flattenItems <T extends GroupableItem> (\n items: readonly (T | Group<T> | GroupSummary<T>)[],\n opened: Set<string>,\n hasSummary: boolean\n): readonly (T | Group<T> | GroupSummary<T>)[] {\n const flatItems: (T | Group<T> | GroupSummary<T>)[] = []\n\n for (const item of items) {\n // TODO: make this better\n if ('type' in item && item.type === 'group') {\n if (item.value != null) {\n flatItems.push(item)\n }\n\n if (opened.has(item.id) || item.value == null) {\n flatItems.push(...flattenItems(item.items, opened, hasSummary))\n\n if (hasSummary) {\n flatItems.push({ ...item, type: 'group-summary' })\n }\n }\n } else {\n flatItems.push(item)\n }\n }\n\n return flatItems\n}\n\nexport function useGroupedItems <T extends GroupableItem> (\n items: Ref<T[]>,\n groupBy: Ref<readonly SortItem[]>,\n opened: Ref<Set<string>>,\n hasSummary: MaybeRefOrGetter<boolean>,\n) {\n const flatItems = computed(() => {\n if (!groupBy.value.length) return items.value\n\n const groupedItems = groupItems(items.value, groupBy.value.map(item => item.key))\n\n return flattenItems(groupedItems, opened.value, toValue(hasSummary))\n })\n\n return { flatItems }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -98,11 +98,16 @@ function parseFixedColumns(items) {
98
98
  if (item.fixed === true) {
99
99
  item.fixed = 'start';
100
100
  }
101
- const orderedChildren = side === 'start' ? item.children?.toReversed() : item.children;
102
101
  if (item.fixed === side) {
103
- if (orderedChildren) {
104
- for (const child of orderedChildren) {
105
- setFixed(child, side, side);
102
+ if (item.children) {
103
+ if (side === 'start') {
104
+ for (let i = item.children.length - 1; i >= 0; i--) {
105
+ setFixed(item.children[i], side, side);
106
+ }
107
+ } else {
108
+ for (let i = 0; i < item.children.length; i++) {
109
+ setFixed(item.children[i], side, side);
110
+ }
106
111
  }
107
112
  } else {
108
113
  if (!seenFixed && side === 'start') {
@@ -117,57 +122,63 @@ function parseFixedColumns(items) {
117
122
  seenFixed = true;
118
123
  }
119
124
  } else {
120
- if (orderedChildren) {
121
- for (const child of orderedChildren) {
122
- setFixed(child, side);
125
+ if (item.children) {
126
+ if (side === 'start') {
127
+ for (let i = item.children.length - 1; i >= 0; i--) {
128
+ setFixed(item.children[i], side);
129
+ }
130
+ } else {
131
+ for (let i = 0; i < item.children.length; i++) {
132
+ setFixed(item.children[i], side);
133
+ }
123
134
  }
124
135
  } else {
125
136
  seenFixed = false;
126
137
  }
127
138
  }
128
139
  }
129
- for (const item of items.toReversed()) {
130
- setFixed(item, 'start');
131
- }
132
- for (const item of items) {
133
- setFixed(item, 'end');
140
+ for (let i = items.length - 1; i >= 0; i--) {
141
+ setFixed(items[i], 'start');
134
142
  }
135
- function setFixedOffset(item) {
136
- let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
137
- if (!item) return offset;
138
- if (item.children) {
139
- item.fixedOffset = offset;
140
- for (const child of item.children) {
141
- offset = setFixedOffset(child, offset);
142
- }
143
- } else if (item.fixed && item.fixed !== 'end') {
144
- item.fixedOffset = offset;
145
- offset += parseFloat(item.width || '0') || 0;
146
- }
147
- return offset;
143
+ for (let i = 0; i < items.length; i++) {
144
+ setFixed(items[i], 'end');
148
145
  }
149
146
  let fixedOffset = 0;
150
- for (const item of items) {
151
- fixedOffset = setFixedOffset(item, fixedOffset);
147
+ for (let i = 0; i < items.length; i++) {
148
+ fixedOffset = setFixedOffset(items[i], fixedOffset);
152
149
  }
153
- function setFixedEndOffset(item) {
154
- let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
155
- if (!item) return offset;
156
- if (item.children) {
157
- item.fixedEndOffset = offset;
158
- for (const child of item.children) {
159
- offset = setFixedEndOffset(child, offset);
160
- }
161
- } else if (item.fixed === 'end') {
162
- item.fixedEndOffset = offset;
163
- offset += parseFloat(item.width || '0') || 0;
150
+ let fixedEndOffset = 0;
151
+ for (let i = items.length - 1; i >= 0; i--) {
152
+ fixedEndOffset = setFixedEndOffset(items[i], fixedEndOffset);
153
+ }
154
+ }
155
+ function setFixedOffset(item) {
156
+ let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
157
+ if (!item) return offset;
158
+ if (item.children) {
159
+ item.fixedOffset = offset;
160
+ for (const child of item.children) {
161
+ offset = setFixedOffset(child, offset);
164
162
  }
165
- return offset;
163
+ } else if (item.fixed && item.fixed !== 'end') {
164
+ item.fixedOffset = offset;
165
+ offset += parseFloat(item.width || '0') || 0;
166
166
  }
167
- let fixedEndOffset = 0;
168
- for (const item of items.toReversed()) {
169
- fixedEndOffset = setFixedEndOffset(item, fixedEndOffset);
167
+ return offset;
168
+ }
169
+ function setFixedEndOffset(item) {
170
+ let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
171
+ if (!item) return offset;
172
+ if (item.children) {
173
+ item.fixedEndOffset = offset;
174
+ for (const child of item.children) {
175
+ offset = setFixedEndOffset(child, offset);
176
+ }
177
+ } else if (item.fixed === 'end') {
178
+ item.fixedEndOffset = offset;
179
+ offset += parseFloat(item.width || '0') || 0;
170
180
  }
181
+ return offset;
171
182
  }
172
183
  function parse(items, maxDepth) {
173
184
  const headers = [];
@@ -1 +1 @@
1
- {"version":3,"file":"headers.js","names":["capitalize","inject","provide","ref","watchEffect","consoleError","propsFactory","makeDataTableHeaderProps","headers","Array","VDataTableHeadersSymbol","Symbol","for","defaultHeader","title","sortable","defaultActionHeader","width","priorityQueue","arr","arguments","length","undefined","queue","map","element","priority","enqueue","added","i","item","splice","push","size","count","whole","Math","floor","dequeue","shift","extractLeaves","columns","children","child","extractKeys","keys","Set","key","add","getDefaultItem","includes","getDepth","depth","max","parseFixedColumns","items","seenFixed","setFixed","side","parentFixedSide","fixed","orderedChildren","toReversed","lastFixed","firstFixedEnd","isNaN","Number","minWidth","setFixedOffset","offset","fixedOffset","parseFloat","setFixedEndOffset","fixedEndOffset","parse","maxDepth","currentDepth","rowSize","row","fraction","diff","rowspan","colspan","sort","pow","flat","convertToInternalHeaders","internalHeaders","defaultItem","value","internalItem","createHeaders","props","options","sortFunctions","sortRawFunctions","filterFunctions","_headers","Object","slice","groupBy","has","unshift","showSelect","showExpand","parsed","flatHeaders","header","sortRaw","filter","data","useHeaders","Error"],"sources":["../../../../src/components/VDataTable/composables/headers.ts"],"sourcesContent":["// Utilities\nimport { capitalize, inject, provide, ref, watchEffect } from 'vue'\nimport { consoleError, propsFactory } from '@/util'\n\n// Types\nimport type { DeepReadonly, InjectionKey, PropType, Ref } from 'vue'\nimport type { SortItem } from './sort'\nimport type { DataTableCompareFunction, DataTableHeader, InternalDataTableHeader } from '../types'\nimport type { FilterKeyFunctions } from '@/composables/filter'\n\nexport const makeDataTableHeaderProps = propsFactory({\n headers: Array as PropType<DeepReadonly<DataTableHeader[]>>,\n}, 'DataTable-header')\n\nexport const VDataTableHeadersSymbol: InjectionKey<{\n headers: Ref<InternalDataTableHeader[][]>\n columns: Ref<InternalDataTableHeader[]>\n}> = Symbol.for('vuetify:data-table-headers')\n\ntype HeaderProps = {\n headers: DeepReadonly<DataTableHeader[]> | undefined\n items: any[]\n}\n\nconst defaultHeader = { title: '', sortable: false }\nconst defaultActionHeader = { ...defaultHeader, width: 48 }\n\nfunction priorityQueue <T> (arr: T[] = []) {\n const queue: { element: T, priority: number }[] = arr.map(element => ({ element, priority: 0 }))\n\n return {\n enqueue: (element: T, priority: number) => {\n let added = false\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i]\n if (item.priority > priority) {\n queue.splice(i, 0, { element, priority })\n added = true\n break\n }\n }\n\n if (!added) queue.push({ element, priority })\n },\n size: () => queue.length,\n count: () => {\n let count = 0\n\n if (!queue.length) return 0\n\n const whole = Math.floor(queue[0].priority)\n for (let i = 0; i < queue.length; i++) {\n if (Math.floor(queue[i].priority) === whole) count += 1\n }\n\n return count\n },\n dequeue: () => {\n return queue.shift()\n },\n }\n}\n\nfunction extractLeaves (item: InternalDataTableHeader, columns: InternalDataTableHeader[] = []) {\n if (!item.children) {\n columns.push(item)\n } else {\n for (const child of item.children) {\n extractLeaves(child, columns)\n }\n }\n\n return columns\n}\n\nfunction extractKeys (headers: DeepReadonly<DataTableHeader[]>, keys = new Set<string>()) {\n for (const item of headers) {\n if (item.key) keys.add(item.key)\n\n if (item.children) {\n extractKeys(item.children, keys)\n }\n }\n\n return keys\n}\n\nfunction getDefaultItem (item: DeepReadonly<DataTableHeader>) {\n if (!item.key) return undefined\n if (item.key === 'data-table-group') return defaultHeader\n if (['data-table-expand', 'data-table-select'].includes(item.key)) return defaultActionHeader\n return undefined\n}\n\nfunction getDepth (item: InternalDataTableHeader, depth = 0): number {\n if (!item.children) return depth\n\n return Math.max(depth, ...item.children.map(child => getDepth(child, depth + 1)))\n}\n\nfunction parseFixedColumns (items: InternalDataTableHeader[]) {\n let seenFixed = false\n\n function setFixed (\n item: InternalDataTableHeader,\n side: 'start' | 'end',\n parentFixedSide: 'start' | 'end' | 'none' = 'none'\n ) {\n if (!item) return\n\n if (parentFixedSide !== 'none') {\n item.fixed = parentFixedSide\n }\n\n // normalize to simplify logic below\n if (item.fixed === true) {\n item.fixed = 'start'\n }\n\n const orderedChildren = side === 'start'\n ? item.children?.toReversed()\n : item.children\n\n if (item.fixed === side) {\n if (orderedChildren) {\n for (const child of orderedChildren) {\n setFixed(child, side, side)\n }\n } else {\n if (!seenFixed && side === 'start') {\n item.lastFixed = true\n } else if (!seenFixed && side === 'end') {\n item.firstFixedEnd = true\n } else if (isNaN(Number(item.width))) {\n consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`)\n } else {\n item.minWidth = Math.max(Number(item.width) || 0, Number(item.minWidth) || 0)\n }\n seenFixed = true\n }\n } else {\n if (orderedChildren) {\n for (const child of orderedChildren) {\n setFixed(child, side)\n }\n } else {\n seenFixed = false\n }\n }\n }\n\n for (const item of items.toReversed()) {\n setFixed(item, 'start')\n }\n\n for (const item of items) {\n setFixed(item, 'end')\n }\n\n function setFixedOffset (item: InternalDataTableHeader, offset = 0) {\n if (!item) return offset\n\n if (item.children) {\n item.fixedOffset = offset\n for (const child of item.children) {\n offset = setFixedOffset(child, offset)\n }\n } else if (item.fixed && item.fixed !== 'end') {\n item.fixedOffset = offset\n offset += parseFloat(item.width || '0') || 0\n }\n\n return offset\n }\n\n let fixedOffset = 0\n for (const item of items) {\n fixedOffset = setFixedOffset(item, fixedOffset)\n }\n\n function setFixedEndOffset (item: InternalDataTableHeader, offset = 0) {\n if (!item) return offset\n\n if (item.children) {\n item.fixedEndOffset = offset\n for (const child of item.children) {\n offset = setFixedEndOffset(child, offset)\n }\n } else if (item.fixed === 'end') {\n item.fixedEndOffset = offset\n offset += parseFloat(item.width || '0') || 0\n }\n\n return offset\n }\n\n let fixedEndOffset = 0\n for (const item of items.toReversed()) {\n fixedEndOffset = setFixedEndOffset(item, fixedEndOffset)\n }\n}\n\nfunction parse (items: InternalDataTableHeader[], maxDepth: number) {\n const headers: InternalDataTableHeader[][] = []\n let currentDepth = 0\n const queue = priorityQueue(items)\n\n while (queue.size() > 0) {\n let rowSize = queue.count()\n const row: InternalDataTableHeader[] = []\n let fraction = 1\n while (rowSize > 0) {\n const { element: item, priority } = queue.dequeue()!\n const diff = maxDepth - currentDepth - getDepth(item)\n\n row.push({\n ...item,\n rowspan: diff ?? 1,\n colspan: item.children ? extractLeaves(item).length : 1,\n })\n\n if (item.children) {\n for (const child of item.children) {\n // This internally sorts items that are on the same priority \"row\"\n const sort = priority % 1 + (fraction / Math.pow(10, currentDepth + 2))\n queue.enqueue(child, currentDepth + diff + sort)\n }\n }\n\n fraction += 1\n rowSize -= 1\n }\n currentDepth += 1\n headers.push(row)\n }\n\n const columns = items.map(item => extractLeaves(item)).flat()\n\n return { columns, headers }\n}\n\nfunction convertToInternalHeaders (items: DeepReadonly<DataTableHeader[]>) {\n const internalHeaders: InternalDataTableHeader[] = []\n for (const item of items) {\n const defaultItem = { ...getDefaultItem(item), ...item }\n const key = defaultItem.key ?? (typeof defaultItem.value === 'string' ? defaultItem.value : null)\n const value = defaultItem.value ?? key ?? null\n const internalItem: InternalDataTableHeader = {\n ...defaultItem,\n key,\n value,\n sortable: defaultItem.sortable ?? (defaultItem.key != null || !!defaultItem.sort),\n children: defaultItem.children ? convertToInternalHeaders(defaultItem.children) : undefined,\n }\n\n internalHeaders.push(internalItem)\n }\n\n return internalHeaders\n}\n\nexport function createHeaders (\n props: HeaderProps,\n options?: {\n groupBy?: Ref<readonly SortItem[]>\n showSelect?: Ref<boolean>\n showExpand?: Ref<boolean>\n }\n) {\n const headers = ref<InternalDataTableHeader[][]>([])\n const columns = ref<InternalDataTableHeader[]>([])\n const sortFunctions = ref<Record<string, DataTableCompareFunction>>({})\n const sortRawFunctions = ref<Record<string, DataTableCompareFunction>>({})\n const filterFunctions = ref<FilterKeyFunctions>({})\n\n watchEffect(() => {\n const _headers = props.headers ||\n Object.keys(props.items[0] ?? {}).map(key => ({ key, title: capitalize(key) })) as never\n\n const items = _headers.slice()\n const keys = extractKeys(items)\n\n if (options?.groupBy?.value.length && !keys.has('data-table-group')) {\n items.unshift({ key: 'data-table-group', title: 'Group' })\n }\n\n if (options?.showSelect?.value && !keys.has('data-table-select')) {\n items.unshift({ key: 'data-table-select' })\n }\n\n if (options?.showExpand?.value && !keys.has('data-table-expand')) {\n items.push({ key: 'data-table-expand' })\n }\n\n const internalHeaders = convertToInternalHeaders(items)\n\n parseFixedColumns(internalHeaders)\n\n const maxDepth = Math.max(...internalHeaders.map(item => getDepth(item))) + 1\n const parsed = parse(internalHeaders, maxDepth)\n\n headers.value = parsed.headers\n columns.value = parsed.columns\n\n const flatHeaders = parsed.headers.flat(1)\n\n for (const header of flatHeaders) {\n if (!header.key) continue\n\n if (header.sortable) {\n if (header.sort) {\n sortFunctions.value[header.key] = header.sort\n }\n\n if (header.sortRaw) {\n sortRawFunctions.value[header.key] = header.sortRaw\n }\n }\n\n if (header.filter) {\n filterFunctions.value[header.key] = header.filter\n }\n }\n })\n\n const data = { headers, columns, sortFunctions, sortRawFunctions, filterFunctions }\n\n provide(VDataTableHeadersSymbol, data)\n\n return data\n}\n\nexport function useHeaders () {\n const data = inject(VDataTableHeadersSymbol)\n\n if (!data) throw new Error('Missing headers!')\n\n return data\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"headers.js","names":["capitalize","inject","provide","ref","watchEffect","consoleError","propsFactory","makeDataTableHeaderProps","headers","Array","VDataTableHeadersSymbol","Symbol","for","defaultHeader","title","sortable","defaultActionHeader","width","priorityQueue","arr","arguments","length","undefined","queue","map","element","priority","enqueue","added","i","item","splice","push","size","count","whole","Math","floor","dequeue","shift","extractLeaves","columns","children","child","extractKeys","keys","Set","key","add","getDefaultItem","includes","getDepth","depth","max","parseFixedColumns","items","seenFixed","setFixed","side","parentFixedSide","fixed","lastFixed","firstFixedEnd","isNaN","Number","minWidth","fixedOffset","setFixedOffset","fixedEndOffset","setFixedEndOffset","offset","parseFloat","parse","maxDepth","currentDepth","rowSize","row","fraction","diff","rowspan","colspan","sort","pow","flat","convertToInternalHeaders","internalHeaders","defaultItem","value","internalItem","createHeaders","props","options","sortFunctions","sortRawFunctions","filterFunctions","_headers","Object","slice","groupBy","has","unshift","showSelect","showExpand","parsed","flatHeaders","header","sortRaw","filter","data","useHeaders","Error"],"sources":["../../../../src/components/VDataTable/composables/headers.ts"],"sourcesContent":["// Utilities\nimport { capitalize, inject, provide, ref, watchEffect } from 'vue'\nimport { consoleError, propsFactory } from '@/util'\n\n// Types\nimport type { DeepReadonly, InjectionKey, PropType, Ref } from 'vue'\nimport type { SortItem } from './sort'\nimport type { DataTableCompareFunction, DataTableHeader, InternalDataTableHeader } from '../types'\nimport type { FilterKeyFunctions } from '@/composables/filter'\n\nexport const makeDataTableHeaderProps = propsFactory({\n headers: Array as PropType<DeepReadonly<DataTableHeader[]>>,\n}, 'DataTable-header')\n\nexport const VDataTableHeadersSymbol: InjectionKey<{\n headers: Ref<InternalDataTableHeader[][]>\n columns: Ref<InternalDataTableHeader[]>\n}> = Symbol.for('vuetify:data-table-headers')\n\ntype HeaderProps = {\n headers: DeepReadonly<DataTableHeader[]> | undefined\n items: any[]\n}\n\nconst defaultHeader = { title: '', sortable: false }\nconst defaultActionHeader = { ...defaultHeader, width: 48 }\n\nfunction priorityQueue <T> (arr: T[] = []) {\n const queue: { element: T, priority: number }[] = arr.map(element => ({ element, priority: 0 }))\n\n return {\n enqueue: (element: T, priority: number) => {\n let added = false\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i]\n if (item.priority > priority) {\n queue.splice(i, 0, { element, priority })\n added = true\n break\n }\n }\n\n if (!added) queue.push({ element, priority })\n },\n size: () => queue.length,\n count: () => {\n let count = 0\n\n if (!queue.length) return 0\n\n const whole = Math.floor(queue[0].priority)\n for (let i = 0; i < queue.length; i++) {\n if (Math.floor(queue[i].priority) === whole) count += 1\n }\n\n return count\n },\n dequeue: () => {\n return queue.shift()\n },\n }\n}\n\nfunction extractLeaves (item: InternalDataTableHeader, columns: InternalDataTableHeader[] = []) {\n if (!item.children) {\n columns.push(item)\n } else {\n for (const child of item.children) {\n extractLeaves(child, columns)\n }\n }\n\n return columns\n}\n\nfunction extractKeys (headers: DeepReadonly<DataTableHeader[]>, keys = new Set<string>()) {\n for (const item of headers) {\n if (item.key) keys.add(item.key)\n\n if (item.children) {\n extractKeys(item.children, keys)\n }\n }\n\n return keys\n}\n\nfunction getDefaultItem (item: DeepReadonly<DataTableHeader>) {\n if (!item.key) return undefined\n if (item.key === 'data-table-group') return defaultHeader\n if (['data-table-expand', 'data-table-select'].includes(item.key)) return defaultActionHeader\n return undefined\n}\n\nfunction getDepth (item: InternalDataTableHeader, depth = 0): number {\n if (!item.children) return depth\n\n return Math.max(depth, ...item.children.map(child => getDepth(child, depth + 1)))\n}\n\nfunction parseFixedColumns (items: InternalDataTableHeader[]) {\n let seenFixed = false\n\n function setFixed (\n item: InternalDataTableHeader,\n side: 'start' | 'end',\n parentFixedSide: 'start' | 'end' | 'none' = 'none'\n ) {\n if (!item) return\n\n if (parentFixedSide !== 'none') {\n item.fixed = parentFixedSide\n }\n\n // normalize to simplify logic below\n if (item.fixed === true) {\n item.fixed = 'start'\n }\n\n if (item.fixed === side) {\n if (item.children) {\n if (side === 'start') {\n for (let i = item.children.length - 1; i >= 0; i--) {\n setFixed(item.children[i], side, side)\n }\n } else {\n for (let i = 0; i < item.children.length; i++) {\n setFixed(item.children[i], side, side)\n }\n }\n } else {\n if (!seenFixed && side === 'start') {\n item.lastFixed = true\n } else if (!seenFixed && side === 'end') {\n item.firstFixedEnd = true\n } else if (isNaN(Number(item.width))) {\n consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`)\n } else {\n item.minWidth = Math.max(Number(item.width) || 0, Number(item.minWidth) || 0)\n }\n seenFixed = true\n }\n } else {\n if (item.children) {\n if (side === 'start') {\n for (let i = item.children.length - 1; i >= 0; i--) {\n setFixed(item.children[i], side)\n }\n } else {\n for (let i = 0; i < item.children.length; i++) {\n setFixed(item.children[i], side)\n }\n }\n } else {\n seenFixed = false\n }\n }\n }\n\n for (let i = items.length - 1; i >= 0; i--) {\n setFixed(items[i], 'start')\n }\n\n for (let i = 0; i < items.length; i++) {\n setFixed(items[i], 'end')\n }\n\n let fixedOffset = 0\n for (let i = 0; i < items.length; i++) {\n fixedOffset = setFixedOffset(items[i], fixedOffset)\n }\n\n let fixedEndOffset = 0\n for (let i = items.length - 1; i >= 0; i--) {\n fixedEndOffset = setFixedEndOffset(items[i], fixedEndOffset)\n }\n}\n\nfunction setFixedOffset (item: InternalDataTableHeader, offset = 0) {\n if (!item) return offset\n\n if (item.children) {\n item.fixedOffset = offset\n for (const child of item.children) {\n offset = setFixedOffset(child, offset)\n }\n } else if (item.fixed && item.fixed !== 'end') {\n item.fixedOffset = offset\n offset += parseFloat(item.width || '0') || 0\n }\n\n return offset\n}\n\nfunction setFixedEndOffset (item: InternalDataTableHeader, offset = 0) {\n if (!item) return offset\n\n if (item.children) {\n item.fixedEndOffset = offset\n for (const child of item.children) {\n offset = setFixedEndOffset(child, offset)\n }\n } else if (item.fixed === 'end') {\n item.fixedEndOffset = offset\n offset += parseFloat(item.width || '0') || 0\n }\n\n return offset\n}\n\nfunction parse (items: InternalDataTableHeader[], maxDepth: number) {\n const headers: InternalDataTableHeader[][] = []\n let currentDepth = 0\n const queue = priorityQueue(items)\n\n while (queue.size() > 0) {\n let rowSize = queue.count()\n const row: InternalDataTableHeader[] = []\n let fraction = 1\n while (rowSize > 0) {\n const { element: item, priority } = queue.dequeue()!\n const diff = maxDepth - currentDepth - getDepth(item)\n\n row.push({\n ...item,\n rowspan: diff ?? 1,\n colspan: item.children ? extractLeaves(item).length : 1,\n })\n\n if (item.children) {\n for (const child of item.children) {\n // This internally sorts items that are on the same priority \"row\"\n const sort = priority % 1 + (fraction / Math.pow(10, currentDepth + 2))\n queue.enqueue(child, currentDepth + diff + sort)\n }\n }\n\n fraction += 1\n rowSize -= 1\n }\n currentDepth += 1\n headers.push(row)\n }\n\n const columns = items.map(item => extractLeaves(item)).flat()\n\n return { columns, headers }\n}\n\nfunction convertToInternalHeaders (items: DeepReadonly<DataTableHeader[]>) {\n const internalHeaders: InternalDataTableHeader[] = []\n for (const item of items) {\n const defaultItem = { ...getDefaultItem(item), ...item }\n const key = defaultItem.key ?? (typeof defaultItem.value === 'string' ? defaultItem.value : null)\n const value = defaultItem.value ?? key ?? null\n const internalItem: InternalDataTableHeader = {\n ...defaultItem,\n key,\n value,\n sortable: defaultItem.sortable ?? (defaultItem.key != null || !!defaultItem.sort),\n children: defaultItem.children ? convertToInternalHeaders(defaultItem.children) : undefined,\n }\n\n internalHeaders.push(internalItem)\n }\n\n return internalHeaders\n}\n\nexport function createHeaders (\n props: HeaderProps,\n options?: {\n groupBy?: Ref<readonly SortItem[]>\n showSelect?: Ref<boolean>\n showExpand?: Ref<boolean>\n }\n) {\n const headers = ref<InternalDataTableHeader[][]>([])\n const columns = ref<InternalDataTableHeader[]>([])\n const sortFunctions = ref<Record<string, DataTableCompareFunction>>({})\n const sortRawFunctions = ref<Record<string, DataTableCompareFunction>>({})\n const filterFunctions = ref<FilterKeyFunctions>({})\n\n watchEffect(() => {\n const _headers = props.headers ||\n Object.keys(props.items[0] ?? {}).map(key => ({ key, title: capitalize(key) })) as never\n\n const items = _headers.slice()\n const keys = extractKeys(items)\n\n if (options?.groupBy?.value.length && !keys.has('data-table-group')) {\n items.unshift({ key: 'data-table-group', title: 'Group' })\n }\n\n if (options?.showSelect?.value && !keys.has('data-table-select')) {\n items.unshift({ key: 'data-table-select' })\n }\n\n if (options?.showExpand?.value && !keys.has('data-table-expand')) {\n items.push({ key: 'data-table-expand' })\n }\n\n const internalHeaders = convertToInternalHeaders(items)\n\n parseFixedColumns(internalHeaders)\n\n const maxDepth = Math.max(...internalHeaders.map(item => getDepth(item))) + 1\n const parsed = parse(internalHeaders, maxDepth)\n\n headers.value = parsed.headers\n columns.value = parsed.columns\n\n const flatHeaders = parsed.headers.flat(1)\n\n for (const header of flatHeaders) {\n if (!header.key) continue\n\n if (header.sortable) {\n if (header.sort) {\n sortFunctions.value[header.key] = header.sort\n }\n\n if (header.sortRaw) {\n sortRawFunctions.value[header.key] = header.sortRaw\n }\n }\n\n if (header.filter) {\n filterFunctions.value[header.key] = header.filter\n }\n }\n })\n\n const data = { headers, columns, sortFunctions, sortRawFunctions, filterFunctions }\n\n provide(VDataTableHeadersSymbol, data)\n\n return data\n}\n\nexport function useHeaders () {\n const data = inject(VDataTableHeadersSymbol)\n\n if (!data) throw new Error('Missing headers!')\n\n return data\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type { Ref } from 'vue';
2
- import type { Group } from './group.js';
2
+ import type { Group, GroupSummary } from './group.js';
3
3
  import type { EventProp } from "../../../util/index.js";
4
4
  export declare const makeDataTablePaginateProps: <Defaults extends {
5
5
  page?: unknown;
@@ -70,11 +70,11 @@ export declare function usePagination(): {
70
70
  setItemsPerPage: (value: number) => void;
71
71
  };
72
72
  export declare function usePaginatedItems<T>(options: {
73
- items: Ref<readonly (T | Group<T>)[]>;
73
+ items: Ref<readonly (T | Group<T> | GroupSummary<T>)[]>;
74
74
  startIndex: Ref<number>;
75
75
  stopIndex: Ref<number>;
76
76
  itemsPerPage: Ref<number>;
77
77
  }): {
78
- paginatedItems: import("vue").ComputedRef<readonly (T | Group<T>)[]>;
78
+ paginatedItems: import("vue").ComputedRef<readonly (T | Group<T> | GroupSummary<T>)[]>;
79
79
  };
80
80
 
@@ -1 +1 @@
1
- {"version":3,"file":"paginate.js","names":["useProxiedModel","computed","inject","provide","watch","clamp","getCurrentInstance","propsFactory","makeDataTablePaginateProps","page","type","Number","String","default","itemsPerPage","VDataTablePaginationSymbol","Symbol","for","createPagination","props","undefined","value","providePagination","options","itemsLength","startIndex","stopIndex","Math","min","pageCount","ceil","setItemsPerPage","nextPage","prevPage","setPage","data","usePagination","Error","usePaginatedItems","vm","items","paginatedItems","slice","val","emit","immediate"],"sources":["../../../../src/components/VDataTable/composables/paginate.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, watch } from 'vue'\nimport { clamp, getCurrentInstance, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\nimport type { Group } from './group'\nimport type { EventProp } from '@/util'\n\nexport const makeDataTablePaginateProps = propsFactory({\n page: {\n type: [Number, String],\n default: 1,\n },\n itemsPerPage: {\n type: [Number, String],\n default: 10,\n },\n}, 'DataTable-paginate')\n\nconst VDataTablePaginationSymbol: InjectionKey<{\n page: Ref<number>\n itemsPerPage: Ref<number>\n startIndex: Ref<number>\n stopIndex: Ref<number>\n pageCount: Ref<number>\n itemsLength: Ref<number>\n prevPage: () => void\n nextPage: () => void\n setPage: (value: number) => void\n setItemsPerPage: (value: number) => void\n}> = Symbol.for('vuetify:data-table-pagination')\n\ntype PaginationProps = {\n page: number | string\n 'onUpdate:page': EventProp | undefined\n itemsPerPage: number | string\n 'onUpdate:itemsPerPage': EventProp | undefined\n itemsLength?: number | string\n}\n\nexport function createPagination (props: PaginationProps) {\n const page = useProxiedModel(props, 'page', undefined, value => Number(value ?? 1))\n const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => Number(value ?? 10))\n\n return { page, itemsPerPage }\n}\n\nexport function providePagination (options: {\n page: Ref<number>\n itemsPerPage: Ref<number>\n itemsLength: Ref<number>\n}) {\n const { page, itemsPerPage, itemsLength } = options\n\n const startIndex = computed(() => {\n if (itemsPerPage.value === -1) return 0\n\n return itemsPerPage.value * (page.value - 1)\n })\n const stopIndex = computed(() => {\n if (itemsPerPage.value === -1) return itemsLength.value\n\n return Math.min(itemsLength.value, startIndex.value + itemsPerPage.value)\n })\n\n const pageCount = computed(() => {\n if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1\n\n return Math.ceil(itemsLength.value / itemsPerPage.value)\n })\n\n // Don't run immediately, items may not have been loaded yet: #17966\n watch([page, pageCount], () => {\n if (page.value > pageCount.value) {\n page.value = pageCount.value\n }\n })\n\n function setItemsPerPage (value: number) {\n itemsPerPage.value = value\n page.value = 1\n }\n\n function nextPage () {\n page.value = clamp(page.value + 1, 1, pageCount.value)\n }\n\n function prevPage () {\n page.value = clamp(page.value - 1, 1, pageCount.value)\n }\n\n function setPage (value: number) {\n page.value = clamp(value, 1, pageCount.value)\n }\n\n const data = { page, itemsPerPage, startIndex, stopIndex, pageCount, itemsLength, nextPage, prevPage, setPage, setItemsPerPage }\n\n provide(VDataTablePaginationSymbol, data)\n\n return data\n}\n\nexport function usePagination () {\n const data = inject(VDataTablePaginationSymbol)\n\n if (!data) throw new Error('Missing pagination!')\n\n return data\n}\n\nexport function usePaginatedItems <T> (options: {\n items: Ref<readonly (T | Group<T>)[]>\n startIndex: Ref<number>\n stopIndex: Ref<number>\n itemsPerPage: Ref<number>\n}) {\n const vm = getCurrentInstance('usePaginatedItems')\n\n const { items, startIndex, stopIndex, itemsPerPage } = options\n const paginatedItems = computed(() => {\n if (itemsPerPage.value <= 0) return items.value\n\n return items.value.slice(startIndex.value, stopIndex.value)\n })\n\n watch(paginatedItems, val => {\n vm.emit('update:currentItems', val)\n }, { immediate: true })\n\n return { paginatedItems }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"paginate.js","names":["useProxiedModel","computed","inject","provide","watch","clamp","getCurrentInstance","propsFactory","makeDataTablePaginateProps","page","type","Number","String","default","itemsPerPage","VDataTablePaginationSymbol","Symbol","for","createPagination","props","undefined","value","providePagination","options","itemsLength","startIndex","stopIndex","Math","min","pageCount","ceil","setItemsPerPage","nextPage","prevPage","setPage","data","usePagination","Error","usePaginatedItems","vm","items","paginatedItems","slice","val","emit","immediate"],"sources":["../../../../src/components/VDataTable/composables/paginate.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, watch } from 'vue'\nimport { clamp, getCurrentInstance, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\nimport type { Group, GroupSummary } from './group'\nimport type { EventProp } from '@/util'\n\nexport const makeDataTablePaginateProps = propsFactory({\n page: {\n type: [Number, String],\n default: 1,\n },\n itemsPerPage: {\n type: [Number, String],\n default: 10,\n },\n}, 'DataTable-paginate')\n\nconst VDataTablePaginationSymbol: InjectionKey<{\n page: Ref<number>\n itemsPerPage: Ref<number>\n startIndex: Ref<number>\n stopIndex: Ref<number>\n pageCount: Ref<number>\n itemsLength: Ref<number>\n prevPage: () => void\n nextPage: () => void\n setPage: (value: number) => void\n setItemsPerPage: (value: number) => void\n}> = Symbol.for('vuetify:data-table-pagination')\n\ntype PaginationProps = {\n page: number | string\n 'onUpdate:page': EventProp | undefined\n itemsPerPage: number | string\n 'onUpdate:itemsPerPage': EventProp | undefined\n itemsLength?: number | string\n}\n\nexport function createPagination (props: PaginationProps) {\n const page = useProxiedModel(props, 'page', undefined, value => Number(value ?? 1))\n const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => Number(value ?? 10))\n\n return { page, itemsPerPage }\n}\n\nexport function providePagination (options: {\n page: Ref<number>\n itemsPerPage: Ref<number>\n itemsLength: Ref<number>\n}) {\n const { page, itemsPerPage, itemsLength } = options\n\n const startIndex = computed(() => {\n if (itemsPerPage.value === -1) return 0\n\n return itemsPerPage.value * (page.value - 1)\n })\n const stopIndex = computed(() => {\n if (itemsPerPage.value === -1) return itemsLength.value\n\n return Math.min(itemsLength.value, startIndex.value + itemsPerPage.value)\n })\n\n const pageCount = computed(() => {\n if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1\n\n return Math.ceil(itemsLength.value / itemsPerPage.value)\n })\n\n // Don't run immediately, items may not have been loaded yet: #17966\n watch([page, pageCount], () => {\n if (page.value > pageCount.value) {\n page.value = pageCount.value\n }\n })\n\n function setItemsPerPage (value: number) {\n itemsPerPage.value = value\n page.value = 1\n }\n\n function nextPage () {\n page.value = clamp(page.value + 1, 1, pageCount.value)\n }\n\n function prevPage () {\n page.value = clamp(page.value - 1, 1, pageCount.value)\n }\n\n function setPage (value: number) {\n page.value = clamp(value, 1, pageCount.value)\n }\n\n const data = { page, itemsPerPage, startIndex, stopIndex, pageCount, itemsLength, nextPage, prevPage, setPage, setItemsPerPage }\n\n provide(VDataTablePaginationSymbol, data)\n\n return data\n}\n\nexport function usePagination () {\n const data = inject(VDataTablePaginationSymbol)\n\n if (!data) throw new Error('Missing pagination!')\n\n return data\n}\n\nexport function usePaginatedItems <T> (options: {\n items: Ref<readonly (T | Group<T> | GroupSummary<T>)[]>\n startIndex: Ref<number>\n stopIndex: Ref<number>\n itemsPerPage: Ref<number>\n}) {\n const vm = getCurrentInstance('usePaginatedItems')\n\n const { items, startIndex, stopIndex, itemsPerPage } = options\n const paginatedItems = computed(() => {\n if (itemsPerPage.value <= 0) return items.value\n\n return items.value.slice(startIndex.value, stopIndex.value)\n })\n\n watch(paginatedItems, val => {\n vm.emit('update:currentItems', val)\n }, { immediate: true })\n\n return { paginatedItems }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  // Composables
2
- import { useLocale } from "../../../composables/index.js";
2
+ import { useLocale } from "../../../composables/locale.js";
3
3
  import { useProxiedModel } from "../../../composables/proxiedModel.js"; // Utilities
4
4
  import { computed, inject, provide, toRef } from 'vue';
5
5
  import { getObjectValueByPath, isEmpty, propsFactory } from "../../../util/index.js"; // Types
@@ -1 +1 @@
1
- {"version":3,"file":"sort.js","names":["useLocale","useProxiedModel","computed","inject","provide","toRef","getObjectValueByPath","isEmpty","propsFactory","makeDataTableSortProps","sortBy","type","Array","default","customKeySort","Object","multiSort","Boolean","mustSort","VDataTableSortSymbol","Symbol","for","createSort","props","provideSort","options","page","toggleSort","column","key","newSortBy","value","map","x","item","find","push","order","length","filter","isSorted","data","useSort","Error","useSortedItems","items","locale","sortedItems","sortItems","current","transform","sortFunctions","sortRawFunctions","sortByItems","stringCollator","Intl","Collator","sensitivity","usage","transformedItems","sort","a","b","i","hasCustomResult","sortKey","sortOrder","sortA","sortB","sortARaw","raw","sortBRaw","customResult","Date","getTime","s","toString","toLocaleLowerCase","isNaN","Number","compare","_ref"],"sources":["../../../../src/components/VDataTable/composables/sort.ts"],"sourcesContent":["// Composables\nimport { useLocale } from '@/composables'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, toRef } from 'vue'\nimport { getObjectValueByPath, isEmpty, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableCompareFunction, InternalDataTableHeader } from '../types'\nimport type { InternalItem } from '@/composables/filter'\n\nexport const makeDataTableSortProps = propsFactory({\n sortBy: {\n type: Array as PropType<readonly SortItem[]>,\n default: () => ([]),\n },\n customKeySort: Object as PropType<Record<string, DataTableCompareFunction>>,\n multiSort: Boolean,\n mustSort: Boolean,\n}, 'DataTable-sort')\n\nconst VDataTableSortSymbol: InjectionKey<{\n sortBy: Ref<readonly SortItem[]>\n toggleSort: (column: InternalDataTableHeader) => void\n isSorted: (column: InternalDataTableHeader) => boolean\n}> = Symbol.for('vuetify:data-table-sort')\n\nexport type SortItem = { key: string, order?: boolean | 'asc' | 'desc' }\n\ntype SortProps = {\n sortBy: readonly SortItem[]\n 'onUpdate:sortBy': ((value: any) => void) | undefined\n mustSort: boolean\n multiSort: boolean\n}\n\nexport function createSort (props: SortProps) {\n const sortBy = useProxiedModel(props, 'sortBy')\n const mustSort = toRef(() => props.mustSort)\n const multiSort = toRef(() => props.multiSort)\n\n return { sortBy, mustSort, multiSort }\n}\n\nexport function provideSort (options: {\n sortBy: Ref<readonly SortItem[]>\n mustSort: Ref<boolean>\n multiSort: Ref<boolean>\n page?: Ref<number>\n}) {\n const { sortBy, mustSort, multiSort, page } = options\n\n const toggleSort = (column: InternalDataTableHeader) => {\n if (column.key == null) return\n\n let newSortBy = sortBy.value.map(x => ({ ...x })) ?? []\n const item = newSortBy.find(x => x.key === column.key)\n\n if (!item) {\n if (multiSort.value) {\n newSortBy.push({ key: column.key, order: 'asc' })\n } else {\n newSortBy = [{ key: column.key, order: 'asc' }]\n }\n } else if (item.order === 'desc') {\n if (mustSort.value && newSortBy.length === 1) {\n item.order = 'asc'\n } else {\n newSortBy = newSortBy.filter(x => x.key !== column.key)\n }\n } else {\n item.order = 'desc'\n }\n\n sortBy.value = newSortBy\n if (page) page.value = 1\n }\n\n function isSorted (column: InternalDataTableHeader) {\n return !!sortBy.value.find(item => item.key === column.key)\n }\n\n const data = { sortBy, toggleSort, isSorted }\n\n provide(VDataTableSortSymbol, data)\n\n return data\n}\n\nexport function useSort () {\n const data = inject(VDataTableSortSymbol)\n\n if (!data) throw new Error('Missing sort!')\n\n return data\n}\n\n// TODO: abstract into project composable\nexport function useSortedItems<T extends InternalItem> (\n props: {\n customKeySort: Record<string, DataTableCompareFunction> | undefined\n },\n items: Ref<T[]>,\n sortBy: Ref<readonly SortItem[]>,\n options?: {\n transform?: (item: T) => {}\n sortFunctions?: Ref<Record<string, DataTableCompareFunction> | undefined>\n sortRawFunctions?: Ref<Record<string, DataTableCompareFunction> | undefined>\n },\n) {\n const locale = useLocale()\n const sortedItems = computed(() => {\n if (!sortBy.value.length) return items.value\n\n return sortItems(items.value, sortBy.value, locale.current.value, {\n transform: options?.transform,\n sortFunctions: {\n ...props.customKeySort,\n ...options?.sortFunctions?.value,\n },\n sortRawFunctions: options?.sortRawFunctions?.value,\n })\n })\n\n return { sortedItems }\n}\n\nexport function sortItems<T extends InternalItem> (\n items: T[],\n sortByItems: readonly SortItem[],\n locale: string,\n options?: {\n transform?: (item: T) => Record<string, any>\n sortFunctions?: Record<string, DataTableCompareFunction>\n sortRawFunctions?: Record<string, DataTableCompareFunction>\n },\n): T[] {\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n const transformedItems = items.map(item => (\n [item, options?.transform ? options.transform(item) : item as never] as const)\n )\n\n return transformedItems.sort((a, b) => {\n for (let i = 0; i < sortByItems.length; i++) {\n let hasCustomResult = false\n const sortKey = sortByItems[i].key\n const sortOrder = sortByItems[i].order ?? 'asc'\n\n if (sortOrder === false) continue\n\n let sortA = getObjectValueByPath(a[1], sortKey)\n let sortB = getObjectValueByPath(b[1], sortKey)\n let sortARaw = a[0].raw\n let sortBRaw = b[0].raw\n\n if (sortOrder === 'desc') {\n [sortA, sortB] = [sortB, sortA]\n ;[sortARaw, sortBRaw] = [sortBRaw, sortARaw]\n }\n\n if (options?.sortRawFunctions?.[sortKey]) {\n const customResult = options.sortRawFunctions[sortKey](sortARaw, sortBRaw)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (options?.sortFunctions?.[sortKey]) {\n const customResult = options.sortFunctions[sortKey](sortA, sortB)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (hasCustomResult) continue\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n sortA = sortA.getTime()\n sortB = sortB.getTime()\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s)\n\n if (sortA !== sortB) {\n if (isEmpty(sortA) && isEmpty(sortB)) return 0\n if (isEmpty(sortA)) return -1\n if (isEmpty(sortB)) return 1\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n }).map(([item]) => item)\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"sort.js","names":["useLocale","useProxiedModel","computed","inject","provide","toRef","getObjectValueByPath","isEmpty","propsFactory","makeDataTableSortProps","sortBy","type","Array","default","customKeySort","Object","multiSort","Boolean","mustSort","VDataTableSortSymbol","Symbol","for","createSort","props","provideSort","options","page","toggleSort","column","key","newSortBy","value","map","x","item","find","push","order","length","filter","isSorted","data","useSort","Error","useSortedItems","items","locale","sortedItems","sortItems","current","transform","sortFunctions","sortRawFunctions","sortByItems","stringCollator","Intl","Collator","sensitivity","usage","transformedItems","sort","a","b","i","hasCustomResult","sortKey","sortOrder","sortA","sortB","sortARaw","raw","sortBRaw","customResult","Date","getTime","s","toString","toLocaleLowerCase","isNaN","Number","compare","_ref"],"sources":["../../../../src/components/VDataTable/composables/sort.ts"],"sourcesContent":["// Composables\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, toRef } from 'vue'\nimport { getObjectValueByPath, isEmpty, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableCompareFunction, InternalDataTableHeader } from '../types'\nimport type { InternalItem } from '@/composables/filter'\n\nexport const makeDataTableSortProps = propsFactory({\n sortBy: {\n type: Array as PropType<readonly SortItem[]>,\n default: () => ([]),\n },\n customKeySort: Object as PropType<Record<string, DataTableCompareFunction>>,\n multiSort: Boolean,\n mustSort: Boolean,\n}, 'DataTable-sort')\n\nconst VDataTableSortSymbol: InjectionKey<{\n sortBy: Ref<readonly SortItem[]>\n toggleSort: (column: InternalDataTableHeader) => void\n isSorted: (column: InternalDataTableHeader) => boolean\n}> = Symbol.for('vuetify:data-table-sort')\n\nexport type SortItem = { key: string, order?: boolean | 'asc' | 'desc' }\n\ntype SortProps = {\n sortBy: readonly SortItem[]\n 'onUpdate:sortBy': ((value: any) => void) | undefined\n mustSort: boolean\n multiSort: boolean\n}\n\nexport function createSort (props: SortProps) {\n const sortBy = useProxiedModel(props, 'sortBy')\n const mustSort = toRef(() => props.mustSort)\n const multiSort = toRef(() => props.multiSort)\n\n return { sortBy, mustSort, multiSort }\n}\n\nexport function provideSort (options: {\n sortBy: Ref<readonly SortItem[]>\n mustSort: Ref<boolean>\n multiSort: Ref<boolean>\n page?: Ref<number>\n}) {\n const { sortBy, mustSort, multiSort, page } = options\n\n const toggleSort = (column: InternalDataTableHeader) => {\n if (column.key == null) return\n\n let newSortBy = sortBy.value.map(x => ({ ...x })) ?? []\n const item = newSortBy.find(x => x.key === column.key)\n\n if (!item) {\n if (multiSort.value) {\n newSortBy.push({ key: column.key, order: 'asc' })\n } else {\n newSortBy = [{ key: column.key, order: 'asc' }]\n }\n } else if (item.order === 'desc') {\n if (mustSort.value && newSortBy.length === 1) {\n item.order = 'asc'\n } else {\n newSortBy = newSortBy.filter(x => x.key !== column.key)\n }\n } else {\n item.order = 'desc'\n }\n\n sortBy.value = newSortBy\n if (page) page.value = 1\n }\n\n function isSorted (column: InternalDataTableHeader) {\n return !!sortBy.value.find(item => item.key === column.key)\n }\n\n const data = { sortBy, toggleSort, isSorted }\n\n provide(VDataTableSortSymbol, data)\n\n return data\n}\n\nexport function useSort () {\n const data = inject(VDataTableSortSymbol)\n\n if (!data) throw new Error('Missing sort!')\n\n return data\n}\n\n// TODO: abstract into project composable\nexport function useSortedItems<T extends InternalItem> (\n props: {\n customKeySort: Record<string, DataTableCompareFunction> | undefined\n },\n items: Ref<T[]>,\n sortBy: Ref<readonly SortItem[]>,\n options?: {\n transform?: (item: T) => {}\n sortFunctions?: Ref<Record<string, DataTableCompareFunction> | undefined>\n sortRawFunctions?: Ref<Record<string, DataTableCompareFunction> | undefined>\n },\n) {\n const locale = useLocale()\n const sortedItems = computed(() => {\n if (!sortBy.value.length) return items.value\n\n return sortItems(items.value, sortBy.value, locale.current.value, {\n transform: options?.transform,\n sortFunctions: {\n ...props.customKeySort,\n ...options?.sortFunctions?.value,\n },\n sortRawFunctions: options?.sortRawFunctions?.value,\n })\n })\n\n return { sortedItems }\n}\n\nexport function sortItems<T extends InternalItem> (\n items: T[],\n sortByItems: readonly SortItem[],\n locale: string,\n options?: {\n transform?: (item: T) => Record<string, any>\n sortFunctions?: Record<string, DataTableCompareFunction>\n sortRawFunctions?: Record<string, DataTableCompareFunction>\n },\n): T[] {\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n const transformedItems = items.map(item => (\n [item, options?.transform ? options.transform(item) : item as never] as const)\n )\n\n return transformedItems.sort((a, b) => {\n for (let i = 0; i < sortByItems.length; i++) {\n let hasCustomResult = false\n const sortKey = sortByItems[i].key\n const sortOrder = sortByItems[i].order ?? 'asc'\n\n if (sortOrder === false) continue\n\n let sortA = getObjectValueByPath(a[1], sortKey)\n let sortB = getObjectValueByPath(b[1], sortKey)\n let sortARaw = a[0].raw\n let sortBRaw = b[0].raw\n\n if (sortOrder === 'desc') {\n [sortA, sortB] = [sortB, sortA]\n ;[sortARaw, sortBRaw] = [sortBRaw, sortARaw]\n }\n\n if (options?.sortRawFunctions?.[sortKey]) {\n const customResult = options.sortRawFunctions[sortKey](sortARaw, sortBRaw)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (options?.sortFunctions?.[sortKey]) {\n const customResult = options.sortFunctions[sortKey](sortA, sortB)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (hasCustomResult) continue\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n sortA = sortA.getTime()\n sortB = sortB.getTime()\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s)\n\n if (sortA !== sortB) {\n if (isEmpty(sortA) && isEmpty(sortB)) return 0\n if (isEmpty(sortA)) return -1\n if (isEmpty(sortB)) return 1\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n }).map(([item]) => item)\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type { provideExpanded } from './composables/expand.js';
2
- import type { Group, GroupableItem, provideGroupBy } from './composables/group.js';
2
+ import type { Group, GroupableItem, GroupSummary, provideGroupBy } from './composables/group.js';
3
3
  import type { provideSelection, SelectableItem } from './composables/select.js';
4
4
  import type { FilterFunction, InternalItem } from "../../composables/filter.js";
5
5
  import type { SelectItemKey } from "../../util/index.js";
@@ -53,6 +53,12 @@ export type GroupHeaderSlot = {
53
53
  toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup'];
54
54
  isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen'];
55
55
  };
56
+ export type GroupSummarySlot = {
57
+ index: number;
58
+ item: GroupSummary;
59
+ columns: InternalDataTableHeader[];
60
+ toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup'];
61
+ };
56
62
  type ItemSlotBase<T> = {
57
63
  index: number;
58
64
  item: T;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/components/VDataTable/types.ts"],"sourcesContent":["// Types\nimport type { provideExpanded } from './composables/expand'\nimport type { Group, GroupableItem, provideGroupBy } from './composables/group'\nimport type { provideSelection, SelectableItem } from './composables/select'\nimport type { FilterFunction, InternalItem } from '@/composables/filter'\nimport type { SelectItemKey } from '@/util'\n\nexport type DataTableCompareFunction<T = any> = (a: T, b: T) => number | null\n\nexport type DataTableHeader<T = Record<string, any>> = {\n key?: 'data-table-group' | 'data-table-select' | 'data-table-expand' | (string & {})\n value?: SelectItemKey<T>\n title?: string\n\n fixed?: boolean | 'start' | 'end'\n align?: 'start' | 'end' | 'center'\n\n width?: number | string\n minWidth?: number | string\n maxWidth?: number | string\n nowrap?: boolean\n\n headerProps?: Record<string, any>\n cellProps?: HeaderCellProps\n\n sortable?: boolean\n sort?: DataTableCompareFunction\n sortRaw?: DataTableCompareFunction\n filter?: FilterFunction\n\n children?: DataTableHeader<T>[]\n}\n\nexport type InternalDataTableHeader = Omit<DataTableHeader, 'key' | 'value' | 'children'> & {\n key: string | null\n value: SelectItemKey | null\n sortable: boolean\n fixedOffset?: number\n fixedEndOffset?: number\n lastFixed?: boolean\n firstFixedEnd?: boolean\n nowrap?: boolean\n colspan?: number\n rowspan?: number\n children?: InternalDataTableHeader[]\n}\n\nexport interface DataTableItem<T = any> extends Omit<InternalItem<T>, 'type'>, GroupableItem<T>, SelectableItem {\n key: any\n index: number\n columns: {\n [key: string]: any\n }\n}\n\nexport type GroupHeaderSlot = {\n index: number\n item: Group\n columns: InternalDataTableHeader[]\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup']\n isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen']\n}\n\ntype ItemSlotBase<T> = {\n index: number\n item: T\n internalItem: DataTableItem<T>\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n}\n\nexport type ItemSlot<T> = ItemSlotBase<T> & {\n columns: InternalDataTableHeader[]\n}\n\nexport type ItemKeySlot<T> = ItemSlotBase<T> & {\n value: any\n column: InternalDataTableHeader\n}\n\nexport type RowProps<T> = Record<string, any> | RowPropsFunction<T>\nexport type RowPropsFunction<T> = (\n data: Pick<ItemKeySlot<T>, 'index' | 'item' | 'internalItem'>\n) => Record<string, any>\n\nexport type CellProps<T> = Record<string, any> | CellPropsFunction<T>\nexport type CellPropsFunction<T> = (\n data: Pick<ItemKeySlot<T>, 'index' | 'item' | 'internalItem' | 'value' | 'column'>\n) => Record<string, any>\n\nexport type HeaderCellProps = Record<string, any> | HeaderCellPropsFunction\nexport type HeaderCellPropsFunction = (\n data: Pick<ItemKeySlot<any>, 'index' | 'item' | 'internalItem' | 'value'>\n) => Record<string, any>\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/components/VDataTable/types.ts"],"sourcesContent":["// Types\nimport type { provideExpanded } from './composables/expand'\nimport type { Group, GroupableItem, GroupSummary, provideGroupBy } from './composables/group'\nimport type { provideSelection, SelectableItem } from './composables/select'\nimport type { FilterFunction, InternalItem } from '@/composables/filter'\nimport type { SelectItemKey } from '@/util'\n\nexport type DataTableCompareFunction<T = any> = (a: T, b: T) => number | null\n\nexport type DataTableHeader<T = Record<string, any>> = {\n key?: 'data-table-group' | 'data-table-select' | 'data-table-expand' | (string & {})\n value?: SelectItemKey<T>\n title?: string\n\n fixed?: boolean | 'start' | 'end'\n align?: 'start' | 'end' | 'center'\n\n width?: number | string\n minWidth?: number | string\n maxWidth?: number | string\n nowrap?: boolean\n\n headerProps?: Record<string, any>\n cellProps?: HeaderCellProps\n\n sortable?: boolean\n sort?: DataTableCompareFunction\n sortRaw?: DataTableCompareFunction\n filter?: FilterFunction\n\n children?: DataTableHeader<T>[]\n}\n\nexport type InternalDataTableHeader = Omit<DataTableHeader, 'key' | 'value' | 'children'> & {\n key: string | null\n value: SelectItemKey | null\n sortable: boolean\n fixedOffset?: number\n fixedEndOffset?: number\n lastFixed?: boolean\n firstFixedEnd?: boolean\n nowrap?: boolean\n colspan?: number\n rowspan?: number\n children?: InternalDataTableHeader[]\n}\n\nexport interface DataTableItem<T = any> extends Omit<InternalItem<T>, 'type'>, GroupableItem<T>, SelectableItem {\n key: any\n index: number\n columns: {\n [key: string]: any\n }\n}\n\nexport type GroupHeaderSlot = {\n index: number\n item: Group\n columns: InternalDataTableHeader[]\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup']\n isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen']\n}\n\nexport type GroupSummarySlot = {\n index: number\n item: GroupSummary\n columns: InternalDataTableHeader[]\n toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup']\n}\n\ntype ItemSlotBase<T> = {\n index: number\n item: T\n internalItem: DataTableItem<T>\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n}\n\nexport type ItemSlot<T> = ItemSlotBase<T> & {\n columns: InternalDataTableHeader[]\n}\n\nexport type ItemKeySlot<T> = ItemSlotBase<T> & {\n value: any\n column: InternalDataTableHeader\n}\n\nexport type RowProps<T> = Record<string, any> | RowPropsFunction<T>\nexport type RowPropsFunction<T> = (\n data: Pick<ItemKeySlot<T>, 'index' | 'item' | 'internalItem'>\n) => Record<string, any>\n\nexport type CellProps<T> = Record<string, any> | CellPropsFunction<T>\nexport type CellPropsFunction<T> = (\n data: Pick<ItemKeySlot<T>, 'index' | 'item' | 'internalItem' | 'value' | 'column'>\n) => Record<string, any>\n\nexport type HeaderCellProps = Record<string, any> | HeaderCellPropsFunction\nexport type HeaderCellPropsFunction = (\n data: Pick<ItemKeySlot<any>, 'index' | 'item' | 'internalItem' | 'value'>\n) => Record<string, any>\n"],"mappings":"","ignoreList":[]}
@@ -213,6 +213,7 @@ export const VNumberInput = genericComponent()({
213
213
  if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) || e.ctrlKey) return;
214
214
  if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
215
215
  e.preventDefault();
216
+ e.stopPropagation();
216
217
  clampModel();
217
218
  // _model is controlled, so need to wait until props['modelValue'] is updated
218
219
  await nextTick();