From 807e7298c2e9e876b89dce8bdec1d218d8e04c26 Mon Sep 17 00:00:00 2001 From: Albert Kaaman Date: Tue, 3 Jan 2023 21:27:38 +0100 Subject: [PATCH] feat(VDataTable): port to v3 (#16235) resolves #13479 Co-authored-by: John Leider Co-authored-by: Elijah Kotyluk Co-authored-by: Kael --- packages/api-generator/src/types.ts | 1 + .../docs/src/components/app/list/List.vue | 4 +- .../docs/src/components/examples/Example.vue | 2 +- .../components/examples/ExampleMissing.vue | 15 +- packages/docs/src/data/nav-alpha.json | 18 +- packages/docs/src/data/page-to-api.json | 6 +- .../examples/v-data-iterator/misc-filter.vue | 5 +- .../src/examples/v-data-iterator/usage.vue | 13 +- .../src/examples/v-data-table/misc-crud.vue | 25 +- .../src/examples/v-data-table/misc-expand.vue | 36 +- .../v-data-table/misc-external-paginate.vue | 73 +- .../v-data-table/misc-external-sort.vue | 24 +- .../misc-server-side-paginate-and-sort.vue | 26 +- .../v-data-table/prop-custom-filter.vue | 249 +++---- .../src/examples/v-data-table/prop-dense.vue | 16 +- .../examples/v-data-table/prop-filterable.vue | 21 +- .../v-data-table/prop-footer-props.vue | 116 ++-- .../examples/v-data-table/prop-grouping.vue | 138 ++-- .../v-data-table/prop-hide-header-footer.vue | 194 +++--- .../examples/v-data-table/prop-loading.vue | 4 +- .../examples/v-data-table/prop-multi-sort.vue | 17 +- .../v-data-table/prop-row-selection.vue | 28 +- .../src/examples/v-data-table/prop-search.vue | 14 +- .../examples/v-data-table/prop-sort-by.vue | 116 ++++ .../docs/src/examples/v-data-table/server.vue | 157 +++++ .../src/examples/v-data-table/slot-header.vue | 20 +- .../src/examples/v-data-table/slot-item.vue | 18 +- .../src/examples/v-data-table/slot-main.vue | 4 +- .../v-data-table/slot-simple-checkbox.vue | 172 +++-- .../docs/src/examples/v-data-table/usage.vue | 86 +-- .../src/examples/v-data-table/virtual.vue | 121 ++++ .../src/examples/v-data-table/virtualized.vue | 40 +- packages/docs/src/i18n/messages/en.json | 1 + .../src/pages/en/components/data-tables.md | 177 ----- .../pages/en/components/data-tables/basics.md | 120 ++++ .../en/components/data-tables/filtering.md | 40 ++ .../en/components/data-tables/grouping.md | 26 + .../en/components/data-tables/headers.md | 25 + .../en/components/data-tables/pagination.md | 22 + .../data-tables/server-side-tables.md | 28 + .../en/components/data-tables/sorting.md | 32 + .../components/data-tables/virtual-tables.md | 16 + packages/docs/src/plugins/vuetify.ts | 4 +- packages/docs/vite.config.ts | 6 +- packages/vuetify/build/rollup.types.config.js | 5 +- packages/vuetify/dev/Playground.datatable.vue | 303 ++++++++ packages/vuetify/dev/Playground.slider.vue | 301 ++++++++ .../src/components/VAlert/VAlertTitle.ts | 2 +- .../VAutocomplete/VAutocomplete.tsx | 10 +- .../src/components/VCombobox/VCombobox.tsx | 10 +- .../src/components/VDataTable/MobileRow.ts | 69 -- .../vuetify/src/components/VDataTable/Row.ts | 70 -- .../src/components/VDataTable/RowGroup.ts | 51 -- .../src/components/VDataTable/VDataTable.sass | 98 --- .../src/components/VDataTable/VDataTable.ts | 653 ------------------ .../VDataTable/VDataTableHeader.sass | 80 --- .../components/VDataTable/VDataTableHeader.ts | 45 -- .../VDataTable/VDataTableHeaderDesktop.ts | 124 ---- .../VDataTable/VDataTableHeaderMobile.ts | 106 --- .../components/VDataTable/VEditDialog.sass | 22 - .../src/components/VDataTable/VEditDialog.ts | 142 ---- .../components/VDataTable/VVirtualTable.sass | 13 - .../components/VDataTable/VVirtualTable.ts | 166 ----- .../src/components/VDataTable/_variables.scss | 24 - .../src/components/VDataTable/index.ts | 25 - .../__snapshots__/header.spec.ts.snap | 81 --- .../mixins/__tests__/header.spec.ts | 112 --- .../components/VDataTable/mixins/header.ts | 87 --- .../vuetify/src/components/VTable/VTable.sass | 27 +- .../vuetify/src/components/VTable/VTable.tsx | 2 +- .../src/components/VTable/_variables.scss | 6 +- .../src/composables/__tests__/filter.spec.ts | 21 +- packages/vuetify/src/composables/filter.ts | 35 +- packages/vuetify/src/composables/icons.tsx | 7 +- packages/vuetify/src/iconsets/fa.ts | 3 +- packages/vuetify/src/iconsets/fa4.ts | 3 +- packages/vuetify/src/iconsets/md.ts | 3 +- packages/vuetify/src/iconsets/mdi-svg.ts | 3 +- packages/vuetify/src/iconsets/mdi.ts | 3 +- .../src/labs/VDataTable/VDataTable.sass | 106 +++ .../src/labs/VDataTable/VDataTable.tsx | 167 +++++ .../src/labs/VDataTable/VDataTableColumn.tsx | 39 ++ .../src/labs/VDataTable/VDataTableFooter.sass | 23 + .../src/labs/VDataTable/VDataTableFooter.tsx | 105 +++ .../VDataTable/VDataTableGroupHeaderRow.tsx | 84 +++ .../src/labs/VDataTable/VDataTableHeaders.tsx | 170 +++++ .../src/labs/VDataTable/VDataTableRow.tsx | 97 +++ .../src/labs/VDataTable/VDataTableRows.tsx | 94 +++ .../src/labs/VDataTable/VDataTableServer.tsx | 142 ++++ .../src/labs/VDataTable/VDataTableVirtual.tsx | 157 +++++ .../VDataTable/__tests__/MobileRow.spec.ts | 0 .../VDataTable/__tests__/Row.spec.ts | 0 .../VDataTable/__tests__/RowGroup.spec.ts | 0 .../VDataTable/__tests__/VDataTable.spec.ts | 0 .../__tests__/VDataTableHeader.spec.ts | 0 .../VDataTable/__tests__/VEditDialog.spec.ts | 0 .../VDataTable/__tests__/VSimpleTable.spec.ts | 0 .../__tests__/VVirtualTable.spec.ts | 0 .../__snapshots__/MobileRow.spec.ts.snap | 0 .../__tests__/__snapshots__/Row.spec.ts.snap | 0 .../__snapshots__/RowGroup.spec.ts.snap | 0 .../__snapshots__/VDataTable.spec.ts.snap | 0 .../VDataTableHeader.spec.ts.snap | 0 .../__snapshots__/VEditDialog.spec.ts.snap | 0 .../__snapshots__/VSimpleTable.spec.ts.snap | 0 .../__snapshots__/VVirtualTable.spec.ts.snap | 0 .../labs/VDataTable/__tests__/sort.spec.ts | 204 ++++++ .../src/labs/VDataTable/_variables.scss | 6 + .../src/labs/VDataTable/composables/expand.ts | 76 ++ .../src/labs/VDataTable/composables/group.ts | 151 ++++ .../labs/VDataTable/composables/headers.ts | 126 ++++ .../src/labs/VDataTable/composables/items.ts | 36 + .../labs/VDataTable/composables/options.ts | 51 ++ .../labs/VDataTable/composables/paginate.ts | 95 +++ .../src/labs/VDataTable/composables/select.ts | 83 +++ .../src/labs/VDataTable/composables/sort.ts | 141 ++++ .../labs/VDataTable/composables/virtual.ts | 99 +++ packages/vuetify/src/labs/VDataTable/index.ts | 5 + packages/vuetify/src/labs/VDataTable/types.ts | 43 ++ packages/vuetify/src/labs/components.ts | 4 +- .../src/util/__tests__/helpers.spec.ts | 170 ----- packages/vuetify/src/util/defineComponent.tsx | 14 + packages/vuetify/src/util/helpers.ts | 52 -- 123 files changed, 4399 insertions(+), 3129 deletions(-) create mode 100644 packages/docs/src/examples/v-data-table/prop-sort-by.vue create mode 100644 packages/docs/src/examples/v-data-table/server.vue create mode 100644 packages/docs/src/examples/v-data-table/virtual.vue delete mode 100644 packages/docs/src/pages/en/components/data-tables.md create mode 100644 packages/docs/src/pages/en/components/data-tables/basics.md create mode 100644 packages/docs/src/pages/en/components/data-tables/filtering.md create mode 100644 packages/docs/src/pages/en/components/data-tables/grouping.md create mode 100644 packages/docs/src/pages/en/components/data-tables/headers.md create mode 100644 packages/docs/src/pages/en/components/data-tables/pagination.md create mode 100644 packages/docs/src/pages/en/components/data-tables/server-side-tables.md create mode 100644 packages/docs/src/pages/en/components/data-tables/sorting.md create mode 100644 packages/docs/src/pages/en/components/data-tables/virtual-tables.md create mode 100644 packages/vuetify/dev/Playground.datatable.vue create mode 100644 packages/vuetify/dev/Playground.slider.vue delete mode 100644 packages/vuetify/src/components/VDataTable/MobileRow.ts delete mode 100644 packages/vuetify/src/components/VDataTable/Row.ts delete mode 100644 packages/vuetify/src/components/VDataTable/RowGroup.ts delete mode 100644 packages/vuetify/src/components/VDataTable/VDataTable.sass delete mode 100644 packages/vuetify/src/components/VDataTable/VDataTable.ts delete mode 100644 packages/vuetify/src/components/VDataTable/VDataTableHeader.sass delete mode 100644 packages/vuetify/src/components/VDataTable/VDataTableHeader.ts delete mode 100644 packages/vuetify/src/components/VDataTable/VDataTableHeaderDesktop.ts delete mode 100644 packages/vuetify/src/components/VDataTable/VDataTableHeaderMobile.ts delete mode 100644 packages/vuetify/src/components/VDataTable/VEditDialog.sass delete mode 100644 packages/vuetify/src/components/VDataTable/VEditDialog.ts delete mode 100644 packages/vuetify/src/components/VDataTable/VVirtualTable.sass delete mode 100644 packages/vuetify/src/components/VDataTable/VVirtualTable.ts delete mode 100644 packages/vuetify/src/components/VDataTable/_variables.scss delete mode 100644 packages/vuetify/src/components/VDataTable/index.ts delete mode 100644 packages/vuetify/src/components/VDataTable/mixins/__tests__/__snapshots__/header.spec.ts.snap delete mode 100644 packages/vuetify/src/components/VDataTable/mixins/__tests__/header.spec.ts delete mode 100644 packages/vuetify/src/components/VDataTable/mixins/header.ts create mode 100644 packages/vuetify/src/labs/VDataTable/VDataTable.sass create mode 100644 packages/vuetify/src/labs/VDataTable/VDataTable.tsx create mode 100644 packages/vuetify/src/labs/VDataTable/VDataTableColumn.tsx create mode 100644 packages/vuetify/src/labs/VDataTable/VDataTableFooter.sass create mode 100644 packages/vuetify/src/labs/VDataTable/VDataTableFooter.tsx create mode 100644 packages/vuetify/src/labs/VDataTable/VDataTableGroupHeaderRow.tsx create mode 100644 packages/vuetify/src/labs/VDataTable/VDataTableHeaders.tsx create mode 100644 packages/vuetify/src/labs/VDataTable/VDataTableRow.tsx create mode 100644 packages/vuetify/src/labs/VDataTable/VDataTableRows.tsx create mode 100644 packages/vuetify/src/labs/VDataTable/VDataTableServer.tsx create mode 100644 packages/vuetify/src/labs/VDataTable/VDataTableVirtual.tsx rename packages/vuetify/src/{components => labs}/VDataTable/__tests__/MobileRow.spec.ts (100%) rename packages/vuetify/src/{components => labs}/VDataTable/__tests__/Row.spec.ts (100%) rename packages/vuetify/src/{components => labs}/VDataTable/__tests__/RowGroup.spec.ts (100%) rename packages/vuetify/src/{components => labs}/VDataTable/__tests__/VDataTable.spec.ts (100%) rename packages/vuetify/src/{components => labs}/VDataTable/__tests__/VDataTableHeader.spec.ts (100%) rename packages/vuetify/src/{components => labs}/VDataTable/__tests__/VEditDialog.spec.ts (100%) rename packages/vuetify/src/{components => labs}/VDataTable/__tests__/VSimpleTable.spec.ts (100%) rename packages/vuetify/src/{components => labs}/VDataTable/__tests__/VVirtualTable.spec.ts (100%) rename packages/vuetify/src/{components => labs}/VDataTable/__tests__/__snapshots__/MobileRow.spec.ts.snap (100%) rename packages/vuetify/src/{components => labs}/VDataTable/__tests__/__snapshots__/Row.spec.ts.snap (100%) rename packages/vuetify/src/{components => labs}/VDataTable/__tests__/__snapshots__/RowGroup.spec.ts.snap (100%) rename packages/vuetify/src/{components => labs}/VDataTable/__tests__/__snapshots__/VDataTable.spec.ts.snap (100%) rename packages/vuetify/src/{components => labs}/VDataTable/__tests__/__snapshots__/VDataTableHeader.spec.ts.snap (100%) rename packages/vuetify/src/{components => labs}/VDataTable/__tests__/__snapshots__/VEditDialog.spec.ts.snap (100%) rename packages/vuetify/src/{components => labs}/VDataTable/__tests__/__snapshots__/VSimpleTable.spec.ts.snap (100%) rename packages/vuetify/src/{components => labs}/VDataTable/__tests__/__snapshots__/VVirtualTable.spec.ts.snap (100%) create mode 100644 packages/vuetify/src/labs/VDataTable/__tests__/sort.spec.ts create mode 100644 packages/vuetify/src/labs/VDataTable/_variables.scss create mode 100644 packages/vuetify/src/labs/VDataTable/composables/expand.ts create mode 100644 packages/vuetify/src/labs/VDataTable/composables/group.ts create mode 100644 packages/vuetify/src/labs/VDataTable/composables/headers.ts create mode 100644 packages/vuetify/src/labs/VDataTable/composables/items.ts create mode 100644 packages/vuetify/src/labs/VDataTable/composables/options.ts create mode 100644 packages/vuetify/src/labs/VDataTable/composables/paginate.ts create mode 100644 packages/vuetify/src/labs/VDataTable/composables/select.ts create mode 100644 packages/vuetify/src/labs/VDataTable/composables/sort.ts create mode 100644 packages/vuetify/src/labs/VDataTable/composables/virtual.ts create mode 100644 packages/vuetify/src/labs/VDataTable/index.ts create mode 100644 packages/vuetify/src/labs/VDataTable/types.ts diff --git a/packages/api-generator/src/types.ts b/packages/api-generator/src/types.ts index 1450787b868..e22569d9da2 100644 --- a/packages/api-generator/src/types.ts +++ b/packages/api-generator/src/types.ts @@ -243,6 +243,7 @@ const allowedRefs = [ 'SelectStrategyFn', 'SubmitEventPromise', 'ValidationRule', + 'SortItem', ] function formatDefinition (definition: Definition) { diff --git a/packages/docs/src/components/app/list/List.vue b/packages/docs/src/components/app/list/List.vue index 58b94b870c5..b2212d0739b 100644 --- a/packages/docs/src/components/app/list/List.vue +++ b/packages/docs/src/components/app/list/List.vue @@ -55,6 +55,7 @@ divider?: boolean to?: RouteLocationRaw href?: string + subfolder?: boolean } function generateApiItems (locale: string) { @@ -88,9 +89,10 @@ type: 'subheader', } } else if (item.items) { + const p = item.subfolder ? `${item.subfolder}/${item.title}` : path return { title: t(item.title!), - children: item.items.map(item => generateListItem(item, path, locale, t)), + children: item.items.map(item => generateListItem(item, p, locale, t)), } } diff --git a/packages/docs/src/components/examples/Example.vue b/packages/docs/src/components/examples/Example.vue index b00fa74f2aa..305b92b6ce2 100644 --- a/packages/docs/src/components/examples/Example.vue +++ b/packages/docs/src/components/examples/Example.vue @@ -77,7 +77,7 @@ class="pa-4 rounded-b" with-background > - + diff --git a/packages/docs/src/components/examples/ExampleMissing.vue b/packages/docs/src/components/examples/ExampleMissing.vue index 860b09ae283..64d2f69cf5b 100644 --- a/packages/docs/src/components/examples/ExampleMissing.vue +++ b/packages/docs/src/components/examples/ExampleMissing.vue @@ -1,12 +1,21 @@