diff --git a/packages/vuetify/src/components/VDataTable/composables/sort.ts b/packages/vuetify/src/components/VDataTable/composables/sort.ts index e391c363582..d60e34bd900 100644 --- a/packages/vuetify/src/components/VDataTable/composables/sort.ts +++ b/packages/vuetify/src/components/VDataTable/composables/sort.ts @@ -125,6 +125,7 @@ export function sortItems> ( return [...items].sort((a, b) => { for (let i = 0; i < sortByItems.length; i++) { + let hasCustomResult = false const sortKey = sortByItems[i].key const sortOrder = sortByItems[i].order ?? 'asc' @@ -144,18 +145,20 @@ export function sortItems> ( const customResult = customRawSorters[sortKey](sortARaw, sortBRaw) if (customResult == null) continue - - return customResult + hasCustomResult = true + if (customResult) return customResult } if (customSorters?.[sortKey]) { const customResult = customSorters[sortKey](sortA, sortB) if (customResult == null) continue - - return customResult + hasCustomResult = true + if (customResult) return customResult } + if (hasCustomResult) continue + // Dates should be compared numerically if (sortA instanceof Date && sortB instanceof Date) { return sortA.getTime() - sortB.getTime()