vuetify 3.1.1 → 3.1.2

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 (72) hide show
  1. package/dist/json/attributes.json +46 -34
  2. package/dist/json/importMap.json +72 -72
  3. package/dist/json/tags.json +3 -0
  4. package/dist/json/web-types.json +80 -37
  5. package/dist/vuetify-labs.css +136 -130
  6. package/dist/vuetify-labs.d.ts +52 -5
  7. package/dist/vuetify-labs.esm.js +193 -113
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +193 -113
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +103 -97
  12. package/dist/vuetify.d.ts +71 -24
  13. package/dist/vuetify.esm.js +129 -84
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +129 -84
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +288 -286
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -0
  21. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  22. package/lib/components/VBtn/VBtn.mjs +9 -3
  23. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  24. package/lib/components/VCard/VCard.mjs +5 -2
  25. package/lib/components/VCard/VCard.mjs.map +1 -1
  26. package/lib/components/VCard/index.d.ts +8 -2
  27. package/lib/components/VChip/VChip.mjs +18 -4
  28. package/lib/components/VChip/VChip.mjs.map +1 -1
  29. package/lib/components/VChip/index.d.ts +15 -2
  30. package/lib/components/VChipGroup/VChipGroup.mjs +1 -0
  31. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  32. package/lib/components/VCombobox/VCombobox.mjs +2 -1
  33. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  34. package/lib/components/VFileInput/VFileInput.css +1 -0
  35. package/lib/components/VFileInput/VFileInput.sass +1 -0
  36. package/lib/components/VGrid/VGrid.css +5 -0
  37. package/lib/components/VGrid/VGrid.sass +5 -0
  38. package/lib/components/VList/VListItem.css +1 -1
  39. package/lib/components/VList/VListItem.mjs +5 -1
  40. package/lib/components/VList/VListItem.mjs.map +1 -1
  41. package/lib/components/VList/VListItem.sass +1 -1
  42. package/lib/components/VList/index.d.ts +20 -1
  43. package/lib/components/VProgressLinear/VProgressLinear.mjs +13 -1
  44. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  45. package/lib/components/VProgressLinear/index.d.ts +18 -0
  46. package/lib/components/VSelect/VSelect.mjs +1 -0
  47. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  48. package/lib/components/VSlider/VSliderThumb.mjs +5 -1
  49. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  50. package/lib/components/index.d.ts +52 -5
  51. package/lib/composables/filter.mjs +3 -3
  52. package/lib/composables/filter.mjs.map +1 -1
  53. package/lib/composables/teleport.mjs +6 -7
  54. package/lib/composables/teleport.mjs.map +1 -1
  55. package/lib/entry-bundler.mjs +1 -1
  56. package/lib/framework.mjs +1 -1
  57. package/lib/index.d.ts +19 -19
  58. package/lib/labs/VDataTable/VDataTable.mjs +8 -5
  59. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  60. package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs +3 -3
  61. package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs.map +1 -1
  62. package/lib/labs/VDataTable/VDataTableRows.mjs +36 -8
  63. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  64. package/lib/labs/VDataTable/VDataTableServer.mjs +4 -4
  65. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  66. package/lib/labs/VDataTable/VDataTableVirtual.mjs +4 -1
  67. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  68. package/lib/labs/VDataTable/composables/group.mjs +9 -4
  69. package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
  70. package/lib/labs/VDataTable/composables/sort.mjs +3 -5
  71. package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
  72. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"group.mjs","names":["computed","inject","provide","ref","getObjectValueByPath","propsFactory","makeDataTableGroupProps","groupBy","type","Array","default","VDataTableGroupSymbol","Symbol","for","createGroupBy","props","sortBy","opened","Set","sortByWithGroups","value","map","val","order","concat","toggleGroup","group","open","has","add","delete","extractRows","items","dive","arr","item","push","id","key","depth","data","useGroupBy","Error","groupItemsByProperty","length","groups","Map","raw","set","get","groupItems","prefix","groupedItems","rest","slice","forEach","flattenItems","flatItems","useGroupedItems"],"sources":["../../../../src/labs/VDataTable/composables/group.ts"],"sourcesContent":["// 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 { DataTableItem, GroupHeaderItem } from '../types'\nimport type { SortItem } from './sort'\n\nexport const makeDataTableGroupProps = propsFactory({\n groupBy: {\n type: Array as PropType<SortItem[]>,\n default: () => ([]),\n },\n}, 'data-table-group')\n\nconst VDataTableGroupSymbol: InjectionKey<{\n opened: Ref<Set<string>>\n toggleGroup: (group: string, value?: boolean) => void\n sortByWithGroups: Ref<SortItem[]>\n groupBy: Ref<readonly SortItem[]>\n extractRows: (items: (DataTableItem | GroupHeaderItem)[]) => DataTableItem[]\n}> = Symbol.for('vuetify:data-table-group')\n\ntype GroupProps = {\n}\n\nexport function createGroupBy (props: GroupProps, groupBy: Ref<readonly SortItem[]>, sortBy: Ref<readonly SortItem[]>) {\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(sortBy.value)\n })\n\n function toggleGroup (group: string, value?: boolean) {\n const open = value == null ? !opened.value.has(group) : value\n if (open) opened.value.add(group)\n else opened.value.delete(group)\n }\n\n function extractRows (items: (DataTableItem | GroupHeaderItem)[]) {\n function dive (group: GroupHeaderItem): DataTableItem[] {\n const arr = []\n\n for (const item of group.items) {\n if (item.type === 'item') arr.push(item)\n else {\n arr.push(...dive(item))\n }\n }\n\n return arr\n }\n return dive({ type: 'group-header', 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 }\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 (items: DataTableItem[], groupBy: string) {\n if (!items.length) return []\n\n const groups = new Map<any, DataTableItem[]>()\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 (items: DataTableItem[], groupBy: string[], depth = 0, prefix = 'root') {\n if (!groupBy.length) return []\n\n const groupedItems = groupItemsByProperty(items, groupBy[0])\n const groups: GroupHeaderItem[] = []\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-header',\n })\n })\n\n return groups\n}\n\nfunction flattenItems (items: (DataTableItem | GroupHeaderItem)[], opened: Set<string>) {\n const flatItems: (DataTableItem | GroupHeaderItem)[] = []\n\n for (const item of items) {\n // TODO: make this better\n if (item.type === 'group-header') {\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 (items: Ref<DataTableItem[]>, groupBy: Ref<readonly SortItem[]>, opened: Ref<Set<string>>) {\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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"}
1
+ {"version":3,"file":"group.mjs","names":["computed","inject","provide","ref","getObjectValueByPath","propsFactory","makeDataTableGroupProps","groupBy","type","Array","default","VDataTableGroupSymbol","Symbol","for","createGroupBy","props","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","prefix","groupedItems","rest","slice","forEach","flattenItems","flatItems","useGroupedItems"],"sources":["../../../../src/labs/VDataTable/composables/group.ts"],"sourcesContent":["// 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 { DataTableItem, GroupHeaderItem } from '../types'\nimport type { SortItem } from './sort'\n\nexport const makeDataTableGroupProps = propsFactory({\n groupBy: {\n type: Array as PropType<SortItem[]>,\n default: () => ([]),\n },\n}, 'data-table-group')\n\nconst VDataTableGroupSymbol: InjectionKey<{\n opened: Ref<Set<string>>\n toggleGroup: (group: GroupHeaderItem) => void\n isGroupOpen: (group: GroupHeaderItem) => boolean\n sortByWithGroups: Ref<SortItem[]>\n groupBy: Ref<readonly SortItem[]>\n extractRows: (items: (DataTableItem | GroupHeaderItem)[]) => DataTableItem[]\n}> = Symbol.for('vuetify:data-table-group')\n\ntype GroupProps = {\n}\n\nexport function createGroupBy (props: GroupProps, groupBy: Ref<readonly SortItem[]>, sortBy: Ref<readonly SortItem[]>) {\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(sortBy.value)\n })\n\n function isGroupOpen (group: GroupHeaderItem) {\n return opened.value.has(group.id)\n }\n\n function toggleGroup (group: GroupHeaderItem) {\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 (items: (DataTableItem | GroupHeaderItem)[]) {\n function dive (group: GroupHeaderItem): DataTableItem[] {\n const arr = []\n\n for (const item of group.items) {\n if (item.type === 'item') arr.push(item)\n else {\n arr.push(...dive(item))\n }\n }\n\n return arr\n }\n return dive({ type: 'group-header', 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 (items: DataTableItem[], groupBy: string) {\n if (!items.length) return []\n\n const groups = new Map<any, DataTableItem[]>()\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 (items: DataTableItem[], groupBy: string[], depth = 0, prefix = 'root') {\n if (!groupBy.length) return []\n\n const groupedItems = groupItemsByProperty(items, groupBy[0])\n const groups: GroupHeaderItem[] = []\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-header',\n })\n })\n\n return groups\n}\n\nfunction flattenItems (items: (DataTableItem | GroupHeaderItem)[], opened: Set<string>) {\n const flatItems: (DataTableItem | GroupHeaderItem)[] = []\n\n for (const item of items) {\n // TODO: make this better\n if (item.type === 'group-header') {\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 (items: Ref<DataTableItem[]>, groupBy: Ref<readonly SortItem[]>, opened: Ref<Set<string>>) {\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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"}
@@ -14,10 +14,9 @@ const VDataTableSortSymbol = Symbol.for('vuetify:data-table-sort');
14
14
  export function createSort(props) {
15
15
  const sortBy = useProxiedModel(props, 'sortBy');
16
16
  const toggleSort = key => {
17
- var _sortBy$value;
18
- let newSortBy = ((_sortBy$value = sortBy.value) == null ? void 0 : _sortBy$value.map(x => ({
17
+ let newSortBy = sortBy.value.map(x => ({
19
18
  ...x
20
- }))) ?? [];
19
+ })) ?? [];
21
20
  const item = newSortBy.find(x => x.key === key);
22
21
  if (!item) {
23
22
  if (props.multiSort) newSortBy = [...newSortBy, {
@@ -59,8 +58,7 @@ export function useSortedItems(items, sortBy, columns) {
59
58
  }, {});
60
59
  });
61
60
  const sortedItems = computed(() => {
62
- var _sortBy$value2;
63
- if (!((_sortBy$value2 = sortBy.value) != null && _sortBy$value2.length)) return items.value;
61
+ if (!sortBy.value.length) return items.value;
64
62
  return sortItems(items.value, sortBy.value, 'en', customSorters.value);
65
63
  });
66
64
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"sort.mjs","names":["useProxiedModel","computed","inject","provide","getObjectValueByPath","propsFactory","makeDataTableSortProps","sortBy","type","Array","default","multiSort","Boolean","mustSort","VDataTableSortSymbol","Symbol","for","createSort","props","toggleSort","key","newSortBy","value","map","x","item","find","order","filter","data","useSort","Error","useSortedItems","items","columns","customSorters","reduce","obj","sort","sortedItems","length","sortItems","sortByItems","locale","stringCollator","Intl","Collator","sensitivity","usage","a","b","i","sortKey","sortOrder","sortA","raw","sortB","customResult","Date","getTime","s","toString","toLocaleLowerCase","isNaN","Number","compare"],"sources":["../../../../src/labs/VDataTable/composables/sort.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide } from 'vue'\nimport { getObjectValueByPath, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { InternalItem } from '@/composables/items'\nimport type { DataTableCompareFunction, DataTableItem, InternalDataTableHeader } from '../types'\n\nexport const makeDataTableSortProps = propsFactory({\n sortBy: {\n type: Array as PropType<SortItem[]>,\n default: () => ([]),\n },\n multiSort: Boolean,\n mustSort: Boolean,\n}, 'v-data-table-sort')\n\nconst VDataTableSortSymbol: InjectionKey<{\n sortBy: Ref<readonly SortItem[]>\n toggleSort: (key: string) => void\n}> = Symbol.for('vuetify:data-table-sort')\n\nexport type SortItem = { key: string, order?: boolean | 'asc' | 'desc' }\n\nexport function createSort (props: {\n sortBy: SortItem[]\n 'onUpdate:sortBy': ((value: any) => void) | undefined\n mustSort?: boolean\n multiSort?: boolean\n}) {\n const sortBy = useProxiedModel(props, 'sortBy')\n\n const toggleSort = (key: string) => {\n let newSortBy = sortBy.value?.map(x => ({ ...x })) ?? []\n const item = newSortBy.find(x => x.key === key)\n\n if (!item) {\n if (props.multiSort) newSortBy = [...newSortBy, { key, order: 'asc' }]\n else newSortBy = [{ key, order: 'asc' }]\n } else if (item.order === 'desc') {\n if (props.mustSort) {\n item.order = 'asc'\n } else {\n newSortBy = newSortBy.filter(x => x.key !== key)\n }\n } else {\n item.order = 'desc'\n }\n\n sortBy.value = newSortBy\n }\n\n const data = { sortBy, toggleSort }\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\nexport function useSortedItems (items: Ref<DataTableItem[]>, sortBy: Ref<readonly SortItem[]>, columns: Ref<InternalDataTableHeader[]>) {\n // TODO: Put this in separate prop customKeySort to match filter composable?\n const customSorters = computed(() => {\n return columns.value.reduce<Record<string, DataTableCompareFunction>>((obj, item) => {\n if (item.sort) obj[item.key] = item.sort\n\n return obj\n }, {})\n })\n\n const sortedItems = computed(() => {\n if (!sortBy.value?.length) return items.value\n\n return sortItems(items.value, sortBy.value, 'en', customSorters.value)\n })\n\n return { sortedItems }\n}\n\nexport function sortItems<T extends InternalItem> (\n items: T[],\n sortByItems: readonly SortItem[],\n locale: string,\n customSorters?: Record<string, DataTableCompareFunction>\n): T[] {\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n return [...items].sort((a, b) => {\n for (let i = 0; i < sortByItems.length; i++) {\n const sortKey = sortByItems[i].key\n const sortOrder = sortByItems[i].order\n\n if (sortOrder === false) continue\n\n let sortA = getObjectValueByPath(a.raw, sortKey)\n let sortB = getObjectValueByPath(b.raw, sortKey)\n\n if (sortOrder === 'desc') {\n [sortA, sortB] = [sortB, sortA]\n }\n\n if (customSorters?.[sortKey]) {\n const customResult = customSorters[sortKey](sortA, sortB)\n\n if (!customResult) continue\n\n return customResult\n }\n\n // Check if both cannot be evaluated\n if (sortA == null || sortB == null) {\n continue\n }\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n return sortA.getTime() - sortB.getTime()\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => (s || '').toString().toLocaleLowerCase())\n\n if (sortA !== sortB) {\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n })\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sort.mjs","names":["useProxiedModel","computed","inject","provide","getObjectValueByPath","propsFactory","makeDataTableSortProps","sortBy","type","Array","default","multiSort","Boolean","mustSort","VDataTableSortSymbol","Symbol","for","createSort","props","toggleSort","key","newSortBy","value","map","x","item","find","order","filter","data","useSort","Error","useSortedItems","items","columns","customSorters","reduce","obj","sort","sortedItems","length","sortItems","sortByItems","locale","stringCollator","Intl","Collator","sensitivity","usage","a","b","i","sortKey","sortOrder","sortA","raw","sortB","customResult","Date","getTime","s","toString","toLocaleLowerCase","isNaN","Number","compare"],"sources":["../../../../src/labs/VDataTable/composables/sort.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide } from 'vue'\nimport { getObjectValueByPath, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { InternalItem } from '@/composables/items'\nimport type { DataTableCompareFunction, DataTableItem, InternalDataTableHeader } from '../types'\n\nexport const makeDataTableSortProps = propsFactory({\n sortBy: {\n type: Array as PropType<SortItem[]>,\n default: () => ([]),\n },\n multiSort: Boolean,\n mustSort: Boolean,\n}, 'v-data-table-sort')\n\nconst VDataTableSortSymbol: InjectionKey<{\n sortBy: Ref<readonly SortItem[]>\n toggleSort: (key: string) => void\n}> = Symbol.for('vuetify:data-table-sort')\n\nexport type SortItem = { key: string, order?: boolean | 'asc' | 'desc' }\n\nexport function createSort (props: {\n sortBy: SortItem[]\n 'onUpdate:sortBy': ((value: any) => void) | undefined\n mustSort: boolean\n multiSort: boolean\n}) {\n const sortBy = useProxiedModel(props, 'sortBy')\n\n const toggleSort = (key: string) => {\n let newSortBy = sortBy.value.map(x => ({ ...x })) ?? []\n const item = newSortBy.find(x => x.key === key)\n\n if (!item) {\n if (props.multiSort) newSortBy = [...newSortBy, { key, order: 'asc' }]\n else newSortBy = [{ key, order: 'asc' }]\n } else if (item.order === 'desc') {\n if (props.mustSort) {\n item.order = 'asc'\n } else {\n newSortBy = newSortBy.filter(x => x.key !== key)\n }\n } else {\n item.order = 'desc'\n }\n\n sortBy.value = newSortBy\n }\n\n const data = { sortBy, toggleSort }\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\nexport function useSortedItems (items: Ref<DataTableItem[]>, sortBy: Ref<readonly SortItem[]>, columns: Ref<InternalDataTableHeader[]>) {\n // TODO: Put this in separate prop customKeySort to match filter composable?\n const customSorters = computed(() => {\n return columns.value.reduce<Record<string, DataTableCompareFunction>>((obj, item) => {\n if (item.sort) obj[item.key] = item.sort\n\n return obj\n }, {})\n })\n\n const sortedItems = computed(() => {\n if (!sortBy.value.length) return items.value\n\n return sortItems(items.value, sortBy.value, 'en', customSorters.value)\n })\n\n return { sortedItems }\n}\n\nexport function sortItems<T extends InternalItem> (\n items: T[],\n sortByItems: readonly SortItem[],\n locale: string,\n customSorters?: Record<string, DataTableCompareFunction>\n): T[] {\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n return [...items].sort((a, b) => {\n for (let i = 0; i < sortByItems.length; i++) {\n const sortKey = sortByItems[i].key\n const sortOrder = sortByItems[i].order\n\n if (sortOrder === false) continue\n\n let sortA = getObjectValueByPath(a.raw, sortKey)\n let sortB = getObjectValueByPath(b.raw, sortKey)\n\n if (sortOrder === 'desc') {\n [sortA, sortB] = [sortB, sortA]\n }\n\n if (customSorters?.[sortKey]) {\n const customResult = customSorters[sortKey](sortA, sortB)\n\n if (!customResult) continue\n\n return customResult\n }\n\n // Check if both cannot be evaluated\n if (sortA == null || sortB == null) {\n continue\n }\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n return sortA.getTime() - sortB.getTime()\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => (s || '').toString().toLocaleLowerCase())\n\n if (sortA !== sortB) {\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n })\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vuetify",
3
3
  "description": "Vue Material Component Framework",
4
- "version": "3.1.1",
4
+ "version": "3.1.2",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"
@@ -182,5 +182,5 @@
182
182
  "attributes": "dist/json/attributes.json"
183
183
  },
184
184
  "web-types": "dist/json/web-types.json",
185
- "gitHead": "c52d08a48f23b1d48f6071ff9e92be1bc9a54f32"
185
+ "gitHead": "3329d2214232c1553c574a1e5517fcf0a4404ee2"
186
186
  }