diff --git a/src/admin/components/elements/TableColumns/buildColumns.tsx b/src/admin/components/elements/TableColumns/buildColumns.tsx index 612389733b..a86d58f013 100644 --- a/src/admin/components/elements/TableColumns/buildColumns.tsx +++ b/src/admin/components/elements/TableColumns/buildColumns.tsx @@ -44,7 +44,7 @@ const buildColumns = ({ return [...acc, field]; }, collection.fields); - const flattenedFields = flattenFields(combinedFields); + const flattenedFields = flattenFields(combinedFields, true); // sort the fields to the order of activeColumns const sortedFields = flattenedFields.sort((a, b) => { diff --git a/test/admin/config.ts b/test/admin/config.ts index c10cc9b199..9dcb5e7d1b 100644 --- a/test/admin/config.ts +++ b/test/admin/config.ts @@ -9,6 +9,8 @@ import BeforeLogin from './components/BeforeLogin'; import AfterNavLinks from './components/AfterNavLinks'; import { slug, globalSlug } from './shared'; import Logout from './components/Logout'; +import DemoUIFieldField from './components/DemoUIField/Field'; +import DemoUIFieldCell from './components/DemoUIField/Cell'; export interface Post { id: string; @@ -83,7 +85,7 @@ export default buildConfig({ listSearchableFields: ['title', 'description', 'number'], group: { en: 'One', es: 'Una' }, useAsTitle: 'title', - defaultColumns: ['id', 'number', 'title', 'description'], + defaultColumns: ['id', 'number', 'title', 'description', 'demoUIField'], }, fields: [ { @@ -111,6 +113,17 @@ export default buildConfig({ ], }, }, + { + type: 'ui', + name: 'demoUIField', + label: 'Demo UI Field', + admin: { + components: { + Field: DemoUIFieldField, + Cell: DemoUIFieldCell, + }, + }, + }, ], }, { diff --git a/test/admin/e2e.spec.ts b/test/admin/e2e.spec.ts index 2d478052b2..69ecdf4020 100644 --- a/test/admin/e2e.spec.ts +++ b/test/admin/e2e.spec.ts @@ -409,6 +409,12 @@ describe('admin', () => { // ensure that the "number" column is still deselected await expect(await page.locator('[id^=list-drawer_1_] .list-controls .column-selector .column-selector__column').first()).not.toHaveClass('column-selector__column--active'); }); + + test('should render custom table cell component', async () => { + await createPost(); + await page.goto(url.list); + await expect(await page.locator('table >> thead >> tr >> th >> text=Demo UI Field')).toBeVisible(); + }); }); describe('pagination', () => {