From e0e7f15dffc1f426182f2e7438c9ebf429cc9480 Mon Sep 17 00:00:00 2001 From: Ryan Tong Date: Sat, 29 Jun 2024 14:38:41 +1000 Subject: [PATCH 1/4] fix: using raw instead --- packages/vuetify/src/components/VDataTable/VDataTable.tsx | 4 ++-- .../vuetify/src/components/VDataTable/VDataTableVirtual.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/vuetify/src/components/VDataTable/VDataTable.tsx b/packages/vuetify/src/components/VDataTable/VDataTable.tsx index 830538b1acb..2c619d27db2 100644 --- a/packages/vuetify/src/components/VDataTable/VDataTable.tsx +++ b/packages/vuetify/src/components/VDataTable/VDataTable.tsx @@ -147,7 +147,7 @@ export const VDataTable = genericComponent( const search = toRef(props, 'search') const { filteredItems } = useFilter(props, items, search, { - transform: item => item.columns, + transform: item => item.raw, customKeyFilter: filterFunctions, }) @@ -155,7 +155,7 @@ export const VDataTable = genericComponent( const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy }) const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups, { - transform: item => item.columns, + transform: item => item.raw, sortFunctions, sortRawFunctions, }) diff --git a/packages/vuetify/src/components/VDataTable/VDataTableVirtual.tsx b/packages/vuetify/src/components/VDataTable/VDataTableVirtual.tsx index a4af3896992..c84e5ec232a 100644 --- a/packages/vuetify/src/components/VDataTable/VDataTableVirtual.tsx +++ b/packages/vuetify/src/components/VDataTable/VDataTableVirtual.tsx @@ -109,7 +109,7 @@ export const VDataTableVirtual = genericComponent item.columns, + transform: item => item.raw, sortFunctions, sortRawFunctions, }) From 33e52e02b592ce77a53486bd4584f8aee45ff1a8 Mon Sep 17 00:00:00 2001 From: Ryan Tong Date: Sat, 29 Jun 2024 15:01:47 +1000 Subject: [PATCH 2/4] fix(VDataTable): revert un expected changes --- packages/vuetify/src/components/VDataTable/VDataTable.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vuetify/src/components/VDataTable/VDataTable.tsx b/packages/vuetify/src/components/VDataTable/VDataTable.tsx index 2c619d27db2..0a45f1d98b1 100644 --- a/packages/vuetify/src/components/VDataTable/VDataTable.tsx +++ b/packages/vuetify/src/components/VDataTable/VDataTable.tsx @@ -147,7 +147,7 @@ export const VDataTable = genericComponent( const search = toRef(props, 'search') const { filteredItems } = useFilter(props, items, search, { - transform: item => item.raw, + transform: item => item.columns, customKeyFilter: filterFunctions, }) From 4aa5addccc14f3f5ace4720265032da7b559d639 Mon Sep 17 00:00:00 2001 From: Bao Tong Date: Tue, 2 Jul 2024 21:23:51 +1000 Subject: [PATCH 3/4] fix(VDataTable): fix deep sorting and use combined trasformation --- packages/vuetify/src/components/VDataTable/VDataTable.tsx | 4 ++-- .../src/components/VDataTable/VDataTableVirtual.tsx | 2 +- .../vuetify/src/components/VDataTable/composables/sort.ts | 7 ++++--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/vuetify/src/components/VDataTable/VDataTable.tsx b/packages/vuetify/src/components/VDataTable/VDataTable.tsx index 0a45f1d98b1..8383d1e6274 100644 --- a/packages/vuetify/src/components/VDataTable/VDataTable.tsx +++ b/packages/vuetify/src/components/VDataTable/VDataTable.tsx @@ -130,7 +130,7 @@ export const VDataTable = genericComponent( const { groupBy } = createGroupBy(props) const { sortBy, multiSort, mustSort } = createSort(props) const { page, itemsPerPage } = createPagination(props) - + const { columns, headers, @@ -155,7 +155,7 @@ export const VDataTable = genericComponent( const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy }) const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups, { - transform: item => item.raw, + transform: item => ({ ...item.raw, ...item.columns }), sortFunctions, sortRawFunctions, }) diff --git a/packages/vuetify/src/components/VDataTable/VDataTableVirtual.tsx b/packages/vuetify/src/components/VDataTable/VDataTableVirtual.tsx index c84e5ec232a..c1db85e439e 100644 --- a/packages/vuetify/src/components/VDataTable/VDataTableVirtual.tsx +++ b/packages/vuetify/src/components/VDataTable/VDataTableVirtual.tsx @@ -109,7 +109,7 @@ export const VDataTableVirtual = genericComponent item.raw, + transform: item => ({ ...item.raw, ...item.columns }), sortFunctions, sortRawFunctions, }) diff --git a/packages/vuetify/src/components/VDataTable/composables/sort.ts b/packages/vuetify/src/components/VDataTable/composables/sort.ts index 0c9beba1c2f..0782d9d5b6c 100644 --- a/packages/vuetify/src/components/VDataTable/composables/sort.ts +++ b/packages/vuetify/src/components/VDataTable/composables/sort.ts @@ -4,7 +4,7 @@ import { useProxiedModel } from '@/composables/proxiedModel' // Utilities import { computed, inject, provide, toRef } from 'vue' -import { isEmpty, propsFactory } from '@/util' +import { getObjectValueByPath, isEmpty, propsFactory } from '@/util' // Types import type { InjectionKey, PropType, Ref } from 'vue' @@ -149,8 +149,9 @@ export function sortItems ( if (sortOrder === false) continue - let sortA = a[1][sortKey] - let sortB = b[1][sortKey] + let sortA = getObjectValueByPath(a[1], sortKey) + let sortB = getObjectValueByPath(b[1], sortKey) + let sortARaw = a[0].raw let sortBRaw = b[0].raw From a1b3e3d035ff057d5df200e22663cd0749a6cfce Mon Sep 17 00:00:00 2001 From: Bao Tong Date: Tue, 2 Jul 2024 21:25:27 +1000 Subject: [PATCH 4/4] fix(VDataTable): clean up --- packages/vuetify/src/components/VDataTable/VDataTable.tsx | 2 +- packages/vuetify/src/components/VDataTable/composables/sort.ts | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/vuetify/src/components/VDataTable/VDataTable.tsx b/packages/vuetify/src/components/VDataTable/VDataTable.tsx index 8383d1e6274..e81cc9373f6 100644 --- a/packages/vuetify/src/components/VDataTable/VDataTable.tsx +++ b/packages/vuetify/src/components/VDataTable/VDataTable.tsx @@ -130,7 +130,7 @@ export const VDataTable = genericComponent( const { groupBy } = createGroupBy(props) const { sortBy, multiSort, mustSort } = createSort(props) const { page, itemsPerPage } = createPagination(props) - + const { columns, headers, diff --git a/packages/vuetify/src/components/VDataTable/composables/sort.ts b/packages/vuetify/src/components/VDataTable/composables/sort.ts index 0782d9d5b6c..fce94e1a894 100644 --- a/packages/vuetify/src/components/VDataTable/composables/sort.ts +++ b/packages/vuetify/src/components/VDataTable/composables/sort.ts @@ -151,7 +151,6 @@ export function sortItems ( let sortA = getObjectValueByPath(a[1], sortKey) let sortB = getObjectValueByPath(b[1], sortKey) - let sortARaw = a[0].raw let sortBRaw = b[0].raw