@@ -13,6 +13,7 @@ import { makeDataTableExpandProps, provideExpanded } from './composables/expand'
1313import { createGroupBy , makeDataTableGroupProps , provideGroupBy , useGroupedItems , useOpenAllGroups } from './composables/group'
1414import { createHeaders , makeDataTableHeaderProps } from './composables/headers'
1515import { makeDataTableItemsProps , useDataTableItems } from './composables/items'
16+ import { useLoadingConfig } from './composables/loading'
1617import { useOptions } from './composables/options'
1718import {
1819 createPagination ,
@@ -25,6 +26,7 @@ import { makeDataTableSelectProps, provideSelection } from './composables/select
2526import { createSort , makeDataTableSortProps , provideSort , useSortedItems } from './composables/sort'
2627import { provideDefaults } from '@/composables/defaults'
2728import { makeFilterProps , useFilter } from '@/composables/filter'
29+ import { LoaderSlot } from '@/composables/loader'
2830
2931// Utilities
3032import { computed , toRef , toRefs , toValue } from 'vue'
@@ -220,6 +222,8 @@ export const VDataTable = genericComponent<new <T extends readonly any[], V>(
220222
221223 const { isExpanded, toggleExpand } = provideExpanded ( props )
222224
225+ const loadingConfig = useLoadingConfig ( ( ) => props . loading , ( ) => props . color )
226+
223227 useOptions ( {
224228 page,
225229 itemsPerPage,
@@ -313,6 +317,20 @@ export const VDataTable = genericComponent<new <T extends readonly any[], V>(
313317 />
314318 ) }
315319 { slots [ 'body.append' ] ?.( slotProps . value ) }
320+ { loadingConfig . active . value && [ 'end' , 'both' ] . includes ( loadingConfig . side . value ) && (
321+ < tr class = "v-data-table-progress v-data-table-progress--bottom" >
322+ < th colspan = { columns . value . length } >
323+ < LoaderSlot
324+ name = "v-data-table-progress"
325+ absolute
326+ active
327+ color = { loadingConfig . color . value }
328+ indeterminate
329+ v-slots = { { default : slots . loader } }
330+ />
331+ </ th >
332+ </ tr >
333+ ) }
316334 </ tbody >
317335 ) }
318336 { slots . tbody ?.( slotProps . value ) }
0 commit comments