From 4e1748fb8a3554586b377e60738130d03ec12f38 Mon Sep 17 00:00:00 2001 From: Jacob Fletcher Date: Fri, 10 Mar 2023 08:56:31 -0500 Subject: [PATCH 1/4] fix: renders presentational table columns --- .../elements/TableColumns/buildColumns.tsx | 2 +- test/admin/config.ts | 15 ++++++++++++++- test/admin/e2e.spec.ts | 6 ++++++ 3 files changed, 21 insertions(+), 2 deletions(-) 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', () => { From 1df3d149e06cc955a61c4371371b601c0d9aad2b Mon Sep 17 00:00:00 2001 From: Elliot Lintz <45725915+Elliot67@users.noreply.github.com> Date: Mon, 13 Mar 2023 15:12:41 +0100 Subject: [PATCH 2/4] feat: #2280 Improve UX of paginator (#2293) --- .../Paginator/ClickableArrow/index.scss | 9 +++++++-- .../components/elements/Paginator/index.scss | 4 ++++ .../components/elements/Paginator/index.tsx | 20 +++++++++---------- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/admin/components/elements/Paginator/ClickableArrow/index.scss b/src/admin/components/elements/Paginator/ClickableArrow/index.scss index 487496c06f..01166e6c23 100644 --- a/src/admin/components/elements/Paginator/ClickableArrow/index.scss +++ b/src/admin/components/elements/Paginator/ClickableArrow/index.scss @@ -2,9 +2,14 @@ .clickable-arrow { cursor: pointer; - transform: rotate(-90deg); - &--left { + &--right { + .icon { + transform: rotate(-90deg); + } + } + + &--left .icon { transform: rotate(90deg); } diff --git a/src/admin/components/elements/Paginator/index.scss b/src/admin/components/elements/Paginator/index.scss index 45d3ef4be7..637f6cdc3f 100644 --- a/src/admin/components/elements/Paginator/index.scss +++ b/src/admin/components/elements/Paginator/index.scss @@ -18,6 +18,10 @@ } } + .clickable-arrow--right { + margin-right: base(.25); + } + .clickable-arrow, &__page { @extend %btn-reset; diff --git a/src/admin/components/elements/Paginator/index.tsx b/src/admin/components/elements/Paginator/index.tsx index 6d9f1448c3..f723fab665 100644 --- a/src/admin/components/elements/Paginator/index.tsx +++ b/src/admin/components/elements/Paginator/index.tsx @@ -93,16 +93,7 @@ const Pagination: React.FC = (props) => { } // Add prev and next arrows based on necessity - nodes.push({ - type: 'ClickableArrow', - props: { - updatePage: () => updatePage(prevPage), - isDisabled: !hasPrevPage, - direction: 'left', - }, - }); - - nodes.push({ + nodes.unshift({ type: 'ClickableArrow', props: { updatePage: () => updatePage(nextPage), @@ -111,6 +102,15 @@ const Pagination: React.FC = (props) => { }, }); + nodes.unshift({ + type: 'ClickableArrow', + props: { + updatePage: () => updatePage(prevPage), + isDisabled: !hasPrevPage, + direction: 'left', + }, + }); + return (
{nodes.map((node, i) => { From abebde6b120a9dddc9971325b616b9cb31bcba90 Mon Sep 17 00:00:00 2001 From: James Date: Mon, 13 Mar 2023 10:58:02 -0400 Subject: [PATCH 3/4] feat: exposes useTheme hook --- components/utilities.js | 1 + 1 file changed, 1 insertion(+) diff --git a/components/utilities.js b/components/utilities.js index f19df00f9f..0fd9792631 100644 --- a/components/utilities.js +++ b/components/utilities.js @@ -4,3 +4,4 @@ exports.useDocumentInfo = require('../dist/admin/components/utilities/DocumentIn exports.useConfig = require('../dist/admin/components/utilities/Config').useConfig; exports.useAuth = require('../dist/admin/components/utilities/Auth').useAuth; exports.useEditDepth = require('../dist/admin/components/utilities/EditDepth').useEditDepth; +exports.useTheme = require('../dist/admin/components/utilities/Theme').useTheme; From 657aa65e993d13e9a294456b73adcd57f20d7c87 Mon Sep 17 00:00:00 2001 From: James Date: Mon, 13 Mar 2023 11:12:11 -0400 Subject: [PATCH 4/4] fix: removes forced require on array, block, group ts --- src/utilities/entityToJSONSchema.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/utilities/entityToJSONSchema.ts b/src/utilities/entityToJSONSchema.ts index 307d90114f..af0379c396 100644 --- a/src/utilities/entityToJSONSchema.ts +++ b/src/utilities/entityToJSONSchema.ts @@ -8,10 +8,9 @@ import deepCopyObject from './deepCopyObject'; import { toWords } from './formatLabels'; import { SanitizedConfig } from '../config/types'; -const nonOptionalFieldTypes = ['group', 'array', 'blocks']; const propertyIsOptional = (field: Field) => { - return fieldAffectsData(field) && (('required' in field && field.required === true) || nonOptionalFieldTypes.includes(field.type)); + return fieldAffectsData(field) && (('required' in field && field.required === true)); }; function getCollectionIDType(collections: SanitizedCollectionConfig[], slug: string): 'string' | 'number' {