diff --git a/packages/payload/src/admin/fields/Array.ts b/packages/payload/src/admin/fields/Array.ts index 1faf941b71d..91b72ef7586 100644 --- a/packages/payload/src/admin/fields/Array.ts +++ b/packages/payload/src/admin/fields/Array.ts @@ -39,15 +39,11 @@ export type ArrayFieldServerComponent = FieldServerComponent< ArrayFieldBaseServerProps > -export type ArrayFieldClientComponent = FieldClientComponent< - ArrayFieldClientWithoutType, - ArrayFieldBaseClientProps -> +export type ArrayFieldClientComponent = {}> = + FieldClientComponent -export type ArrayFieldLabelServerComponent = FieldLabelServerComponent< - ArrayField, - ArrayFieldClientWithoutType -> +export type ArrayFieldLabelServerComponent = {}> = + FieldLabelServerComponent export type ArrayFieldLabelClientComponent = FieldLabelClientComponent diff --git a/packages/payload/src/admin/fields/Blocks.ts b/packages/payload/src/admin/fields/Blocks.ts index b9dae8d617e..0ed4b86ee9e 100644 --- a/packages/payload/src/admin/fields/Blocks.ts +++ b/packages/payload/src/admin/fields/Blocks.ts @@ -34,16 +34,11 @@ export type BlocksFieldClientProps = BlocksFieldBaseClientProps & export type BlocksFieldServerProps = BlocksFieldBaseServerProps & ServerFieldBase -export type BlocksFieldServerComponent = FieldServerComponent< - BlocksField, - BlocksFieldClientWithoutType, - BlocksFieldBaseServerProps -> +export type BlocksFieldServerComponent = {}> = + FieldServerComponent -export type BlocksFieldClientComponent = FieldClientComponent< - BlocksFieldClientWithoutType, - BlocksFieldBaseClientProps -> +export type BlocksFieldClientComponent = {}> = + FieldClientComponent export type BlocksFieldLabelServerComponent = FieldLabelServerComponent< BlocksField, diff --git a/packages/payload/src/admin/fields/Checkbox.ts b/packages/payload/src/admin/fields/Checkbox.ts index 7cba3026662..57f549a1132 100644 --- a/packages/payload/src/admin/fields/Checkbox.ts +++ b/packages/payload/src/admin/fields/Checkbox.ts @@ -39,16 +39,15 @@ export type CheckboxFieldClientProps = CheckboxFieldBaseClientProps & export type CheckboxFieldServerProps = CheckboxFieldBaseServerProps & ServerFieldBase -export type CheckboxFieldServerComponent = FieldServerComponent< - CheckboxField, - CheckboxFieldClientWithoutType, - CheckboxFieldBaseServerProps -> - -export type CheckboxFieldClientComponent = FieldClientComponent< - CheckboxFieldClientWithoutType, - CheckboxFieldBaseClientProps -> +export type CheckboxFieldServerComponent = {}> = + FieldServerComponent< + CheckboxField, + CheckboxFieldClientWithoutType, + CheckboxFieldBaseServerProps & T + > + +export type CheckboxFieldClientComponent = {}> = + FieldClientComponent export type CheckboxFieldLabelServerComponent = FieldLabelServerComponent< CheckboxField, diff --git a/packages/payload/src/admin/fields/Code.ts b/packages/payload/src/admin/fields/Code.ts index f959031e62e..24940f1c092 100644 --- a/packages/payload/src/admin/fields/Code.ts +++ b/packages/payload/src/admin/fields/Code.ts @@ -37,15 +37,15 @@ export type CodeFieldClientProps = ClientFieldBase & export type CodeFieldServerProps = CodeFieldBaseServerProps & ServerFieldBase -export type CodeFieldServerComponent = FieldServerComponent< +export type CodeFieldServerComponent = {}> = FieldServerComponent< CodeField, CodeFieldClientWithoutType, - CodeFieldBaseServerProps + CodeFieldBaseServerProps & T > -export type CodeFieldClientComponent = FieldClientComponent< +export type CodeFieldClientComponent = {}> = FieldClientComponent< CodeFieldClientWithoutType, - CodeFieldBaseClientProps + CodeFieldBaseClientProps & T > export type CodeFieldLabelServerComponent = FieldLabelServerComponent< diff --git a/packages/payload/src/admin/fields/Collapsible.ts b/packages/payload/src/admin/fields/Collapsible.ts index cd2d1edfcec..5160f8049c8 100644 --- a/packages/payload/src/admin/fields/Collapsible.ts +++ b/packages/payload/src/admin/fields/Collapsible.ts @@ -30,15 +30,11 @@ export type CollapsibleFieldServerProps = ServerFieldBase< CollapsibleFieldClientWithoutType > -export type CollapsibleFieldServerComponent = FieldServerComponent< - CollapsibleField, - CollapsibleFieldClientWithoutType -> +export type CollapsibleFieldServerComponent = {}> = + FieldServerComponent -export type CollapsibleFieldClientComponent = FieldClientComponent< - CollapsibleFieldClientWithoutType, - CollapsibleFieldBaseClientProps -> +export type CollapsibleFieldClientComponent = {}> = + FieldClientComponent export type CollapsibleFieldLabelServerComponent = FieldLabelServerComponent< CollapsibleField, diff --git a/packages/payload/src/admin/fields/Date.ts b/packages/payload/src/admin/fields/Date.ts index 14cce086907..da6a1ec2ecd 100644 --- a/packages/payload/src/admin/fields/Date.ts +++ b/packages/payload/src/admin/fields/Date.ts @@ -34,15 +34,15 @@ export type DateFieldClientProps = ClientFieldBase & export type DateFieldServerProps = DateFieldBaseServerProps & ServerFieldBase -export type DateFieldServerComponent = FieldServerComponent< +export type DateFieldServerComponent = {}> = FieldServerComponent< DateField, DateFieldClientWithoutType, - DateFieldBaseServerProps + DateFieldBaseServerProps & T > -export type DateFieldClientComponent = FieldClientComponent< +export type DateFieldClientComponent = {}> = FieldClientComponent< DateFieldClientWithoutType, - DateFieldBaseClientProps + DateFieldBaseClientProps & T > export type DateFieldLabelServerComponent = FieldLabelServerComponent< diff --git a/packages/payload/src/admin/fields/Email.ts b/packages/payload/src/admin/fields/Email.ts index 659c6d109eb..bdb340c52dc 100644 --- a/packages/payload/src/admin/fields/Email.ts +++ b/packages/payload/src/admin/fields/Email.ts @@ -34,16 +34,11 @@ export type EmailFieldClientProps = ClientFieldBase export type EmailFieldServerProps = EmailFieldBaseServerProps & ServerFieldBase -export type EmailFieldServerComponent = FieldServerComponent< - EmailField, - EmailFieldClientWithoutType, - EmailFieldBaseServerProps -> +export type EmailFieldServerComponent = {}> = + FieldServerComponent -export type EmailFieldClientComponent = FieldClientComponent< - EmailFieldClientWithoutType, - EmailFieldBaseClientProps -> +export type EmailFieldClientComponent = {}> = + FieldClientComponent export type EmailFieldLabelServerComponent = FieldLabelServerComponent< EmailField, diff --git a/packages/payload/src/admin/fields/Group.ts b/packages/payload/src/admin/fields/Group.ts index cbc893e90fe..8a77305a1c5 100644 --- a/packages/payload/src/admin/fields/Group.ts +++ b/packages/payload/src/admin/fields/Group.ts @@ -30,16 +30,11 @@ export type GroupFieldClientProps = ClientFieldBase export type GroupFieldServerProps = GroupFieldBaseServerProps & ServerFieldBase -export type GroupFieldServerComponent = FieldServerComponent< - GroupField, - GroupFieldClientWithoutType, - GroupFieldBaseServerProps -> +export type GroupFieldServerComponent = {}> = + FieldServerComponent -export type GroupFieldClientComponent = FieldClientComponent< - GroupFieldClientWithoutType, - GroupFieldBaseClientProps -> +export type GroupFieldClientComponent = {}> = + FieldClientComponent export type GroupFieldLabelServerComponent = FieldLabelServerComponent< GroupField, diff --git a/packages/payload/src/admin/fields/JSON.ts b/packages/payload/src/admin/fields/JSON.ts index 1ae3cb6ecab..df07988117d 100644 --- a/packages/payload/src/admin/fields/JSON.ts +++ b/packages/payload/src/admin/fields/JSON.ts @@ -34,15 +34,15 @@ export type JSONFieldClientProps = ClientFieldBase & export type JSONFieldServerProps = JSONFieldBaseServerProps & ServerFieldBase -export type JSONFieldServerComponent = FieldServerComponent< +export type JSONFieldServerComponent = {}> = FieldServerComponent< JSONField, JSONFieldClientWithoutType, - JSONFieldBaseServerProps + JSONFieldBaseServerProps & T > -export type JSONFieldClientComponent = FieldClientComponent< +export type JSONFieldClientComponent = {}> = FieldClientComponent< JSONFieldClientWithoutType, - JSONFieldBaseClientProps + JSONFieldBaseClientProps & T > export type JSONFieldLabelServerComponent = FieldLabelServerComponent< diff --git a/packages/payload/src/admin/fields/Join.ts b/packages/payload/src/admin/fields/Join.ts index ecf1edd4ff1..a6e6ba64530 100644 --- a/packages/payload/src/admin/fields/Join.ts +++ b/packages/payload/src/admin/fields/Join.ts @@ -31,15 +31,15 @@ export type JoinFieldClientProps = ClientFieldBase & export type JoinFieldServerProps = JoinFieldBaseServerProps & ServerFieldBase -export type JoinFieldServerComponent = FieldServerComponent< +export type JoinFieldServerComponent = {}> = FieldServerComponent< JoinField, JoinFieldClientWithoutType, - JoinFieldBaseServerProps + JoinFieldBaseServerProps & T > -export type JoinFieldClientComponent = FieldClientComponent< +export type JoinFieldClientComponent = {}> = FieldClientComponent< JoinFieldClientWithoutType, - JoinFieldBaseClientProps + JoinFieldBaseClientProps & T > export type JoinFieldLabelServerComponent = FieldLabelServerComponent diff --git a/packages/payload/src/admin/fields/Number.ts b/packages/payload/src/admin/fields/Number.ts index 7cd5bffeb03..1003ac1ac46 100644 --- a/packages/payload/src/admin/fields/Number.ts +++ b/packages/payload/src/admin/fields/Number.ts @@ -35,16 +35,11 @@ export type NumberFieldClientProps = ClientFieldBase -export type NumberFieldServerComponent = FieldServerComponent< - NumberField, - NumberFieldClientWithoutType, - NumberFieldBaseServerProps -> +export type NumberFieldServerComponent = {}> = + FieldServerComponent -export type NumberFieldClientComponent = FieldClientComponent< - NumberFieldClientWithoutType, - NumberFieldBaseClientProps -> +export type NumberFieldClientComponent = {}> = + FieldClientComponent export type NumberFieldLabelServerComponent = FieldLabelServerComponent< NumberField, diff --git a/packages/payload/src/admin/fields/Point.ts b/packages/payload/src/admin/fields/Point.ts index 31412914c52..3fc6f836e5f 100644 --- a/packages/payload/src/admin/fields/Point.ts +++ b/packages/payload/src/admin/fields/Point.ts @@ -34,16 +34,11 @@ export type PointFieldClientProps = ClientFieldBase export type PointFieldServerProps = PointFieldBaseServerProps & ServerFieldBase -export type PointFieldServerComponent = FieldServerComponent< - PointField, - PointFieldClientWithoutType, - PointFieldBaseServerProps -> +export type PointFieldServerComponent = {}> = + FieldServerComponent -export type PointFieldClientComponent = FieldClientComponent< - PointFieldClientWithoutType, - PointFieldBaseClientProps -> +export type PointFieldClientComponent = {}> = + FieldClientComponent export type PointFieldLabelServerComponent = FieldLabelServerComponent< PointField, diff --git a/packages/payload/src/admin/fields/Radio.ts b/packages/payload/src/admin/fields/Radio.ts index 7abec01a3c9..0a806558f18 100644 --- a/packages/payload/src/admin/fields/Radio.ts +++ b/packages/payload/src/admin/fields/Radio.ts @@ -40,16 +40,11 @@ export type RadioFieldClientProps = ClientFieldBase export type RadioFieldServerProps = RadioFieldBaseServerProps & ServerFieldBase -export type RadioFieldServerComponent = FieldServerComponent< - RadioField, - RadioFieldClientWithoutType, - RadioFieldBaseServerProps -> +export type RadioFieldServerComponent = {}> = + FieldServerComponent -export type RadioFieldClientComponent = FieldClientComponent< - RadioFieldClientWithoutType, - RadioFieldBaseClientProps -> +export type RadioFieldClientComponent = {}> = + FieldClientComponent type OnChange = (value: T) => void diff --git a/packages/payload/src/admin/fields/Relationship.ts b/packages/payload/src/admin/fields/Relationship.ts index 78024b587eb..58b90edc174 100644 --- a/packages/payload/src/admin/fields/Relationship.ts +++ b/packages/payload/src/admin/fields/Relationship.ts @@ -34,16 +34,15 @@ export type RelationshipFieldClientProps = ClientFieldBase -export type RelationshipFieldServerComponent = FieldServerComponent< - RelationshipField, - RelationshipFieldClientWithoutType, - RelationshipFieldBaseServerProps -> - -export type RelationshipFieldClientComponent = FieldClientComponent< - RelationshipFieldClientWithoutType, - RelationshipFieldBaseClientProps -> +export type RelationshipFieldServerComponent = {}> = + FieldServerComponent< + RelationshipField, + RelationshipFieldClientWithoutType, + RelationshipFieldBaseServerProps & T + > + +export type RelationshipFieldClientComponent = {}> = + FieldClientComponent export type RelationshipFieldLabelServerComponent = FieldLabelServerComponent< RelationshipField, diff --git a/packages/payload/src/admin/fields/RichText.ts b/packages/payload/src/admin/fields/RichText.ts index 71d2ad82fed..c9ddc0e0b67 100644 --- a/packages/payload/src/admin/fields/RichText.ts +++ b/packages/payload/src/admin/fields/RichText.ts @@ -46,16 +46,15 @@ export type RichTextFieldClientProps< export type RichTextFieldServerProps = RichTextFieldBaseServerProps & ServerFieldBase -export type RichTextFieldServerComponent = FieldServerComponent< - RichTextField, - RichTextFieldClientWithoutType, - RichTextFieldBaseServerProps -> - -export type RichTextFieldClientComponent = FieldClientComponent< - RichTextFieldClientWithoutType, - RichTextFieldBaseClientProps -> +export type RichTextFieldServerComponent = {}> = + FieldServerComponent< + RichTextField, + RichTextFieldClientWithoutType, + RichTextFieldBaseServerProps & T + > + +export type RichTextFieldClientComponent = {}> = + FieldClientComponent export type RichTextFieldLabelServerComponent = FieldLabelServerComponent< RichTextField, diff --git a/packages/payload/src/admin/fields/Row.ts b/packages/payload/src/admin/fields/Row.ts index 6ca2e72648c..80eeeb087bf 100644 --- a/packages/payload/src/admin/fields/Row.ts +++ b/packages/payload/src/admin/fields/Row.ts @@ -30,11 +30,14 @@ export type RowFieldClientProps = Omit -export type RowFieldServerComponent = FieldServerComponent +export type RowFieldServerComponent = {}> = FieldServerComponent< + RowField, + RowFieldClientWithoutType & T +> -export type RowFieldClientComponent = FieldClientComponent< +export type RowFieldClientComponent = {}> = FieldClientComponent< RowFieldClientWithoutType, - RowFieldBaseClientProps + RowFieldBaseClientProps & T > export type RowFieldLabelServerComponent = FieldLabelServerComponent< diff --git a/packages/payload/src/admin/fields/Select.ts b/packages/payload/src/admin/fields/Select.ts index 8ebe8453c4d..312f8f14f12 100644 --- a/packages/payload/src/admin/fields/Select.ts +++ b/packages/payload/src/admin/fields/Select.ts @@ -36,16 +36,11 @@ export type SelectFieldClientProps = ClientFieldBase -export type SelectFieldServerComponent = FieldServerComponent< - SelectField, - SelectFieldClientWithoutType, - SelectFieldBaseServerProps -> +export type SelectFieldServerComponent = {}> = + FieldServerComponent -export type SelectFieldClientComponent = FieldClientComponent< - SelectFieldClientWithoutType, - SelectFieldBaseClientProps -> +export type SelectFieldClientComponent = {}> = + FieldClientComponent export type SelectFieldLabelServerComponent = FieldLabelServerComponent< SelectField, diff --git a/packages/payload/src/admin/fields/Tabs.ts b/packages/payload/src/admin/fields/Tabs.ts index 1751cf59459..2ae7160ecc4 100644 --- a/packages/payload/src/admin/fields/Tabs.ts +++ b/packages/payload/src/admin/fields/Tabs.ts @@ -40,11 +40,14 @@ export type TabsFieldClientProps = ClientFieldBase & export type TabsFieldServerProps = ServerFieldBase -export type TabsFieldServerComponent = FieldServerComponent +export type TabsFieldServerComponent = {}> = FieldServerComponent< + TabsField, + T & TabsFieldClientWithoutType +> -export type TabsFieldClientComponent = FieldClientComponent< +export type TabsFieldClientComponent = {}> = FieldClientComponent< TabsFieldClientWithoutType, - TabsFieldBaseClientProps + T & TabsFieldBaseClientProps > export type TabsFieldLabelServerComponent = FieldLabelServerComponent< diff --git a/packages/payload/src/admin/fields/Text.ts b/packages/payload/src/admin/fields/Text.ts index a305972475b..c3fae203350 100644 --- a/packages/payload/src/admin/fields/Text.ts +++ b/packages/payload/src/admin/fields/Text.ts @@ -43,15 +43,13 @@ export type TextFieldServerComponent = FieldServerComponent< TextFieldBaseServerProps > -export type TextFieldClientComponent = FieldClientComponent< +export type TextFieldClientComponent = {}> = FieldClientComponent< TextFieldClientWithoutType, - TextFieldBaseClientProps + T & TextFieldBaseClientProps > -export type TextFieldLabelServerComponent = FieldLabelServerComponent< - TextField, - TextFieldClientWithoutType -> +export type TextFieldLabelServerComponent = {}> = + FieldLabelServerComponent export type TextFieldLabelClientComponent = FieldLabelClientComponent diff --git a/packages/payload/src/admin/fields/Textarea.ts b/packages/payload/src/admin/fields/Textarea.ts index ddf59c88ad8..7fab9056129 100644 --- a/packages/payload/src/admin/fields/Textarea.ts +++ b/packages/payload/src/admin/fields/Textarea.ts @@ -40,16 +40,15 @@ export type TextareaFieldServerProps = ServerFieldBase< > & TextareaFieldBaseServerProps -export type TextareaFieldServerComponent = FieldServerComponent< - TextareaField, - TextareaFieldClientWithoutType, - TextareaFieldBaseServerProps -> - -export type TextareaFieldClientComponent = FieldClientComponent< - TextareaFieldClientWithoutType, - TextareaFieldBaseClientProps -> +export type TextareaFieldServerComponent = {}> = + FieldServerComponent< + TextareaField, + TextareaFieldClientWithoutType, + T & TextareaFieldBaseServerProps + > + +export type TextareaFieldClientComponent = {}> = + FieldClientComponent export type TextareaFieldLabelServerComponent = FieldLabelServerComponent< TextareaField, diff --git a/packages/payload/src/admin/fields/UI.ts b/packages/payload/src/admin/fields/UI.ts index 73cc11dd4b5..b20bf272889 100644 --- a/packages/payload/src/admin/fields/UI.ts +++ b/packages/payload/src/admin/fields/UI.ts @@ -24,15 +24,15 @@ export type UIFieldClientProps = ClientFieldBase & UIF export type UIFieldServerProps = ServerFieldBase & UIFieldBaseServerProps -export type UIFieldClientComponent = FieldClientComponent< +export type UIFieldClientComponent = {}> = FieldClientComponent< UIFieldClientWithoutType, - UIFieldBaseClientProps + T & UIFieldBaseClientProps > -export type UIFieldServerComponent = FieldServerComponent< +export type UIFieldServerComponent = {}> = FieldServerComponent< UIField, UIFieldClientWithoutType, - UIFieldBaseServerProps + T & UIFieldBaseServerProps > export type UIFieldDiffServerComponent = FieldDiffServerComponent diff --git a/packages/payload/src/admin/fields/Upload.ts b/packages/payload/src/admin/fields/Upload.ts index bc398dccd8a..26849752245 100644 --- a/packages/payload/src/admin/fields/Upload.ts +++ b/packages/payload/src/admin/fields/Upload.ts @@ -34,16 +34,11 @@ export type UploadFieldClientProps = ClientFieldBase & UploadFieldBaseServerProps -export type UploadFieldServerComponent = FieldServerComponent< - UploadField, - UploadFieldClientWithoutType, - UploadFieldBaseServerProps -> +export type UploadFieldServerComponent = {}> = + FieldServerComponent -export type UploadFieldClientComponent = FieldClientComponent< - UploadFieldClientWithoutType, - UploadFieldBaseClientProps -> +export type UploadFieldClientComponent = {}> = + FieldClientComponent export type UploadFieldLabelServerComponent = FieldLabelServerComponent< UploadField, diff --git a/test/admin/collections/CustomFields/fields/Text/FieldClient.tsx b/test/admin/collections/CustomFields/fields/Text/FieldClient.tsx index 876562bb811..b5e945030ea 100644 --- a/test/admin/collections/CustomFields/fields/Text/FieldClient.tsx +++ b/test/admin/collections/CustomFields/fields/Text/FieldClient.tsx @@ -2,8 +2,15 @@ import type { TextFieldClientComponent } from 'payload' import { TextField } from '@payloadcms/ui' -import React from 'react' +import React, { Fragment } from 'react' -export const CustomClientField: TextFieldClientComponent = (props) => { - return +import type { CustomProps } from './types.js' + +export const CustomClientField: TextFieldClientComponent = (props) => { + return ( + +
{props.customProp}
+ +
+ ) } diff --git a/test/admin/collections/CustomFields/fields/Text/types.ts b/test/admin/collections/CustomFields/fields/Text/types.ts new file mode 100644 index 00000000000..e8a592c3617 --- /dev/null +++ b/test/admin/collections/CustomFields/fields/Text/types.ts @@ -0,0 +1,3 @@ +export type CustomProps = { + customProp: string +} diff --git a/test/admin/collections/CustomFields/index.ts b/test/admin/collections/CustomFields/index.ts index ce5017c65a9..555e932d0d0 100644 --- a/test/admin/collections/CustomFields/index.ts +++ b/test/admin/collections/CustomFields/index.ts @@ -1,5 +1,7 @@ import type { CollectionConfig } from 'payload' +import type { CustomProps } from './fields/Text/types.js' + import { customFieldsSlug } from '../../slugs.js' export const CustomFields: CollectionConfig = { @@ -32,7 +34,12 @@ export const CustomFields: CollectionConfig = { afterInput: ['/collections/CustomFields/AfterInput.js#AfterInput'], beforeInput: ['/collections/CustomFields/BeforeInput.js#BeforeInput'], Label: '/collections/CustomFields/fields/Text/LabelClient.js#CustomClientLabel', - Field: '/collections/CustomFields/fields/Text/FieldClient.js#CustomClientField', + Field: { + path: '/collections/CustomFields/fields/Text/FieldClient.js#CustomClientField', + clientProps: { + customProp: 'This is a custom prop', + } satisfies CustomProps, + }, Description: '/collections/CustomFields/fields/Text/DescriptionClient.js#CustomClientDescription', Error: '/collections/CustomFields/CustomError.js#CustomError', diff --git a/test/admin/components/Banner/index.tsx b/test/admin/components/Banner/index.tsx index dd54be158aa..80b2fcb29d8 100644 --- a/test/admin/components/Banner/index.tsx +++ b/test/admin/components/Banner/index.tsx @@ -4,6 +4,7 @@ export function Banner(props: { message?: string }) { const { children, description, message } = props + return (