diff --git a/packages/vuetify/src/components/VDataTable/VDataTable.ts b/packages/vuetify/src/components/VDataTable/VDataTable.ts index 592063d49b0..a704e3dbed9 100644 --- a/packages/vuetify/src/components/VDataTable/VDataTable.ts +++ b/packages/vuetify/src/components/VDataTable/VDataTable.ts @@ -474,7 +474,10 @@ export default VDataIterator.extend({ ] if (!this.hideDefaultFooter) { - children.push(this.$createElement(VDataFooter, data)) + children.push(this.$createElement(VDataFooter, { + ...data, + scopedSlots: getPrefixedScopedSlots('footer.', this.$scopedSlots), + })) } return children diff --git a/packages/vuetify/src/components/VDataTable/__tests__/VDataTable.spec.ts b/packages/vuetify/src/components/VDataTable/__tests__/VDataTable.spec.ts index 0f36142dbc9..8d8d4d10078 100644 --- a/packages/vuetify/src/components/VDataTable/__tests__/VDataTable.spec.ts +++ b/packages/vuetify/src/components/VDataTable/__tests__/VDataTable.spec.ts @@ -382,4 +382,20 @@ describe('VDataTable.ts', () => { page: 2, })) }) + + it('should render footer.page-text slot content', () => { + const wrapper = mountFunction({ + propsData: { + headers: [], + items: [{}], + }, + scopedSlots: { + 'footer.page-text' ({ pageStart, pageStop }) { + return this.$createElement('div', [`foo ${pageStart} bar ${pageStop}`]) + }, + }, + }) + + expect(wrapper.html()).toMatchSnapshot() + }) }) diff --git a/packages/vuetify/src/components/VDataTable/__tests__/__snapshots__/VDataTable.spec.ts.snap b/packages/vuetify/src/components/VDataTable/__tests__/__snapshots__/VDataTable.spec.ts.snap index 07643db78a3..41107fc9490 100644 --- a/packages/vuetify/src/components/VDataTable/__tests__/__snapshots__/VDataTable.spec.ts.snap +++ b/packages/vuetify/src/components/VDataTable/__tests__/__snapshots__/VDataTable.spec.ts.snap @@ -198,6 +198,104 @@ exports[`VDataTable.ts should render 1`] = ` `; +exports[`VDataTable.ts should render footer.page-text slot content 1`] = ` +
+
+ + + + + + + + + + + +
+
+ +
+`; + exports[`VDataTable.ts should render loading state 1`] = `