diff --git a/packages/payload/src/config/createClientConfig.ts b/packages/payload/src/config/createClientConfig.ts index b3a1fcea4e..35f7b29dc6 100644 --- a/packages/payload/src/config/createClientConfig.ts +++ b/packages/payload/src/config/createClientConfig.ts @@ -4,7 +4,18 @@ import type { LivePreviewConfig, SanitizedConfig } from './types.js' export type ServerOnlyRootProperties = keyof Pick< SanitizedConfig, - 'db' | 'editor' | 'endpoints' | 'onInit' | 'plugins' | 'sharp' + | 'bin' + | 'cors' + | 'csrf' + | 'db' + | 'editor' + | 'endpoints' + | 'hooks' + | 'onInit' + | 'plugins' + | 'secret' + | 'sharp' + | 'typescript' > export type ServerOnlyRootAdminProperties = keyof Pick @@ -248,6 +259,12 @@ export const createClientConfig = async ( 'plugins', 'sharp', 'onInit', + 'secret', + 'hooks', + 'bin', + 'typescript', + 'cors', + 'csrf', // `admin`, `onInit`, `localization`, `collections`, and `globals` are all handled separately ] diff --git a/packages/ui/src/forms/fields/Collapsible/types.ts b/packages/ui/src/forms/fields/Collapsible/types.ts index abc431a9bf..24cabe54dd 100644 --- a/packages/ui/src/forms/fields/Collapsible/types.ts +++ b/packages/ui/src/forms/fields/Collapsible/types.ts @@ -1,13 +1,11 @@ import type { FieldMap } from '@payloadcms/ui' import type { FieldPermissions } from 'payload/auth' -import type { FieldTypes } from 'payload/config' import type { FieldBase } from 'payload/types.js' import type { FormFieldBase } from '../shared.js' export type CollapsibleFieldProps = FormFieldBase & { fieldMap: FieldMap - fieldTypes: FieldTypes indexPath: string initCollapsed?: boolean label?: FieldBase['label'] diff --git a/packages/ui/src/forms/fields/Row/types.ts b/packages/ui/src/forms/fields/Row/types.ts index 04b742c6bf..e4a4ed7ed0 100644 --- a/packages/ui/src/forms/fields/Row/types.ts +++ b/packages/ui/src/forms/fields/Row/types.ts @@ -1,12 +1,10 @@ import type { FieldMap } from '@payloadcms/ui' import type { FieldPermissions } from 'payload/auth' -import type { FieldTypes } from 'payload/config' import type { FormFieldBase } from '../shared.js' export type RowFieldProps = FormFieldBase & { fieldMap: FieldMap - fieldTypes: FieldTypes forceRender?: boolean indexPath: string path?: string diff --git a/packages/ui/src/utilities/buildComponentMap/mapFields.tsx b/packages/ui/src/utilities/buildComponentMap/mapFields.tsx index cca7ee0169..688418092a 100644 --- a/packages/ui/src/utilities/buildComponentMap/mapFields.tsx +++ b/packages/ui/src/utilities/buildComponentMap/mapFields.tsx @@ -65,6 +65,7 @@ export const mapFields = (args: { const result: FieldMap = fieldSchema.reduce((acc, field): FieldMap => { const fieldIsPresentational = fieldIsPresentationalOnly(field) let FieldComponent = field.admin?.components?.Field || fieldTypes[field.type] + let CellComponent = field.admin?.components?.Cell if (fieldIsPresentational || (!field?.hidden && field?.admin?.disabled !== true)) { if ((filter && typeof filter === 'function' && filter(field)) || !filter) { @@ -325,7 +326,6 @@ export const mapFields = (args: { className: field.admin?.className, disabled: field.admin?.disabled, fieldMap: nestedFieldMap, - fieldTypes, readOnly: field.admin?.readOnly, required: field.required, style: field.admin?.style, @@ -467,6 +467,24 @@ export const mapFields = (args: { width: field.admin?.width, } + const RichTextFieldComponent = field.editor.FieldComponent + const RichTextCellComponent = field.editor.CellComponent + + if (typeof field.editor.generateComponentMap === 'function') { + const result = field.editor.generateComponentMap({ config, schemaPath: path }) + // @ts-expect-error-next-line // TODO: the `richTextComponentMap` is not found on the union type + fieldComponentProps.richTextComponentMap = result + cellComponentProps.richTextComponentMap = result + } + + if (RichTextFieldComponent) { + FieldComponent = RichTextFieldComponent + } + + if (RichTextCellComponent) { + CellComponent = RichTextCellComponent + } + fieldComponentProps = richTextField break } @@ -476,7 +494,6 @@ export const mapFields = (args: { className: field.admin?.className, disabled: field.admin?.disabled, fieldMap: nestedFieldMap, - fieldTypes, readOnly: field.admin?.readOnly, required: field.required, style: field.admin?.style, @@ -604,34 +621,11 @@ export const mapFields = (args: { } } - let Field = - - /** - * Handle RichText Field Components, Cell Components, and component maps - */ - if (field.type === 'richText' && 'editor' in field) { - const RichTextFieldComponent = field.editor.FieldComponent - const RichTextCellComponent = field.editor.CellComponent - - if (typeof field.editor.generateComponentMap === 'function') { - const result = field.editor.generateComponentMap({ config, schemaPath: path }) - // @ts-expect-error-next-line // TODO: the `richTextComponentMap` is not found on the union type - fieldComponentProps.richTextComponentMap = result - cellComponentProps.richTextComponentMap = result - } - - if (RichTextFieldComponent) { - Field = - } - - if (RichTextCellComponent) { - cellComponentProps.CellComponentOverride = - } - } + const Field = const Cell = ( diff --git a/test/_community/collections/Posts/index.ts b/test/_community/collections/Posts/index.ts index 6faf91efb5..b04fc677cc 100644 --- a/test/_community/collections/Posts/index.ts +++ b/test/_community/collections/Posts/index.ts @@ -14,6 +14,10 @@ export const PostsCollection: CollectionConfig = { name: 'text', type: 'text', }, + { + type: 'row', + fields: [], + }, // { // name: 'richText', // type: 'richText',