From 64d6163f1330ff00a97f372da72472629e68bd77 Mon Sep 17 00:00:00 2001 From: Jacob Fletcher Date: Thu, 21 Mar 2024 11:23:51 -0400 Subject: [PATCH] chore(ui): consolidates field label, error, and description components --- .../fields/Iterable/index.tsx | 14 ++++--- .../fields/Nested/index.tsx | 14 ++++--- .../fields/Relationship/index.tsx | 4 +- .../RenderFieldsToDiff/fields/Text/index.tsx | 1 + packages/payload/src/admin/forms/Error.ts | 1 + packages/payload/src/admin/forms/Label.ts | 1 + .../elements/TableColumns/buildColumns.tsx | 10 ++++- packages/ui/src/fields/Array/index.tsx | 10 ++--- packages/ui/src/fields/Blocks/index.tsx | 10 ++--- packages/ui/src/fields/Checkbox/Input.tsx | 2 +- packages/ui/src/fields/Checkbox/index.tsx | 2 +- packages/ui/src/fields/Code/index.tsx | 4 +- packages/ui/src/fields/Collapsible/index.tsx | 8 +--- packages/ui/src/fields/DateTime/index.tsx | 4 +- packages/ui/src/fields/Email/index.tsx | 4 +- packages/ui/src/fields/JSON/index.tsx | 4 +- packages/ui/src/fields/Number/index.tsx | 4 +- packages/ui/src/fields/Password/index.tsx | 4 +- packages/ui/src/fields/Point/index.tsx | 6 +-- packages/ui/src/fields/RadioGroup/index.tsx | 4 +- packages/ui/src/fields/Relationship/index.tsx | 4 +- packages/ui/src/fields/Select/index.tsx | 4 +- packages/ui/src/fields/Text/Input.tsx | 4 +- packages/ui/src/fields/Textarea/Input.tsx | 4 +- packages/ui/src/fields/Upload/Input.tsx | 4 +- .../ui/src/forms/FieldDescription/index.tsx | 12 +++++- .../ui/src/forms/FieldDescription/types.ts | 1 + packages/ui/src/forms/FieldError/index.tsx | 12 +++++- packages/ui/src/forms/FieldLabel/index.tsx | 13 +++++- .../WatchChildErrors/buildPathSegments.ts | 42 ++++++++++--------- 30 files changed, 124 insertions(+), 87 deletions(-) diff --git a/packages/next/src/views/Version/RenderFieldsToDiff/fields/Iterable/index.tsx b/packages/next/src/views/Version/RenderFieldsToDiff/fields/Iterable/index.tsx index c158151597..3b674a5fdf 100644 --- a/packages/next/src/views/Version/RenderFieldsToDiff/fields/Iterable/index.tsx +++ b/packages/next/src/views/Version/RenderFieldsToDiff/fields/Iterable/index.tsx @@ -28,12 +28,14 @@ const Iterable: React.FC = ({ return (
- {'label' in field.fieldComponentProps && field.fieldComponentProps.label && ( - - )} + {'label' in field.fieldComponentProps && + field.fieldComponentProps.label && + typeof field.fieldComponentProps.label !== 'function' && ( + + )} {maxRows > 0 && ( {Array.from(Array(maxRows).keys()).map((row, i) => { diff --git a/packages/next/src/views/Version/RenderFieldsToDiff/fields/Nested/index.tsx b/packages/next/src/views/Version/RenderFieldsToDiff/fields/Nested/index.tsx index 9258368430..86fd30c00b 100644 --- a/packages/next/src/views/Version/RenderFieldsToDiff/fields/Nested/index.tsx +++ b/packages/next/src/views/Version/RenderFieldsToDiff/fields/Nested/index.tsx @@ -23,12 +23,14 @@ const Nested: React.FC = ({ }) => { return (
- {'label' in field.fieldComponentProps && field.fieldComponentProps.label && ( - - )} + {'label' in field.fieldComponentProps && + field.fieldComponentProps.label && + typeof field.fieldComponentProps.label !== 'function' && ( + + )}
= ({ comparison, field, i18n, locale, versio } const label = - 'label' in field.fieldComponentProps && typeof field.fieldComponentProps.label !== 'boolean' + 'label' in field.fieldComponentProps && + typeof field.fieldComponentProps.label !== 'boolean' && + typeof field.fieldComponentProps.label !== 'function' ? field.fieldComponentProps.label : '' diff --git a/packages/next/src/views/Version/RenderFieldsToDiff/fields/Text/index.tsx b/packages/next/src/views/Version/RenderFieldsToDiff/fields/Text/index.tsx index 2fc22b61f3..1a59bab27b 100644 --- a/packages/next/src/views/Version/RenderFieldsToDiff/fields/Text/index.tsx +++ b/packages/next/src/views/Version/RenderFieldsToDiff/fields/Text/index.tsx @@ -36,6 +36,7 @@ const Text: React.FC = ({ | false | string required?: boolean diff --git a/packages/ui/src/elements/TableColumns/buildColumns.tsx b/packages/ui/src/elements/TableColumns/buildColumns.tsx index f3f7f2e3ef..d6d1a77049 100644 --- a/packages/ui/src/elements/TableColumns/buildColumns.tsx +++ b/packages/ui/src/elements/TableColumns/buildColumns.tsx @@ -79,7 +79,9 @@ export const buildColumns = (args: { undefined } label={ - 'label' in field.fieldComponentProps && field.fieldComponentProps.label + 'label' in field.fieldComponentProps && + field.fieldComponentProps.label && + typeof field.fieldComponentProps.label !== 'function' ? field.fieldComponentProps.label : 'name' in field ? field.name @@ -102,7 +104,11 @@ export const buildColumns = (args: { Cell, Heading, }, - label: 'label' in field.fieldComponentProps ? field.fieldComponentProps.label : undefined, + label: + 'label' in field.fieldComponentProps && + typeof field.fieldComponentProps.label !== 'function' + ? field.fieldComponentProps.label + : undefined, } acc.push(column) diff --git a/packages/ui/src/fields/Array/index.tsx b/packages/ui/src/fields/Array/index.tsx index 41ba5ddb76..0e64d1f538 100644 --- a/packages/ui/src/fields/Array/index.tsx +++ b/packages/ui/src/fields/Array/index.tsx @@ -198,14 +198,14 @@ export const ArrayField: React.FC = (props) => { > {showError && (
- {CustomError !== undefined ? CustomError : } +
)}

- {CustomLabel !== undefined ? CustomLabel : } +

{fieldHasErrors && fieldErrorCount > 0 && ( @@ -234,11 +234,7 @@ export const ArrayField: React.FC = (props) => { )}
- {CustomDescription !== undefined ? ( - CustomDescription - ) : ( - - )} +
{(rows.length > 0 || (!valid && (showRequired || showMinRows))) && ( diff --git a/packages/ui/src/fields/Blocks/index.tsx b/packages/ui/src/fields/Blocks/index.tsx index 1b4be4edb2..c619f86507 100644 --- a/packages/ui/src/fields/Blocks/index.tsx +++ b/packages/ui/src/fields/Blocks/index.tsx @@ -208,14 +208,14 @@ export const BlocksField: React.FC = (props) => { > {showError && (
- {CustomError !== undefined ? CustomError : } +
)}

- {CustomLabel !== undefined ? CustomLabel : } +

{fieldHasErrors && fieldErrorCount > 0 && ( @@ -244,11 +244,7 @@ export const BlocksField: React.FC = (props) => { )}
- {CustomDescription !== undefined ? ( - CustomDescription - ) : ( - - )} +
{(rows.length > 0 || (!valid && (showRequired || showMinRows))) && ( diff --git a/packages/ui/src/fields/Checkbox/Input.tsx b/packages/ui/src/fields/Checkbox/Input.tsx index fb90d61433..b6aea9ad6a 100644 --- a/packages/ui/src/fields/Checkbox/Input.tsx +++ b/packages/ui/src/fields/Checkbox/Input.tsx @@ -74,7 +74,7 @@ export const CheckboxInput: React.FC = ({ {AfterInput}
- {CustomLabel !== undefined ? CustomLabel : } +
) } diff --git a/packages/ui/src/fields/Checkbox/index.tsx b/packages/ui/src/fields/Checkbox/index.tsx index 3c23188009..43c52d0eda 100644 --- a/packages/ui/src/fields/Checkbox/index.tsx +++ b/packages/ui/src/fields/Checkbox/index.tsx @@ -90,7 +90,7 @@ const CheckboxField: React.FC = (props) => { }} >
- {CustomError !== undefined ? CustomError : } +
= (props) => { width, }} > - {CustomError !== undefined ? CustomError : } - {CustomLabel !== undefined ? CustomLabel : } + +
{BeforeInput} = (props) => { collapsibleStyle={fieldHasErrors ? 'error' : 'default'} header={
- {CustomLabel !== undefined ? CustomLabel : } + {fieldHasErrors && }
} @@ -141,11 +141,7 @@ const CollapsibleField: React.FC = (props) => { schemaPath={schemaPath} /> - {CustomDescription !== undefined ? ( - CustomDescription - ) : ( - - )} +
) diff --git a/packages/ui/src/fields/DateTime/index.tsx b/packages/ui/src/fields/DateTime/index.tsx index fc88ae243d..124f6a0e6a 100644 --- a/packages/ui/src/fields/DateTime/index.tsx +++ b/packages/ui/src/fields/DateTime/index.tsx @@ -87,9 +87,9 @@ const DateTimeField: React.FC = (props) => { }} >
- {CustomError !== undefined ? CustomError : } +
- {CustomLabel !== undefined ? CustomLabel : } +
{BeforeInput} = (props) => { width, }} > - {CustomError !== undefined ? CustomError : } - {CustomLabel !== undefined ? CustomLabel : } + +
{BeforeInput} = (props) => { width, }} > - {CustomError !== undefined ? CustomError : } - {CustomLabel !== undefined ? CustomLabel : } + +
{BeforeInput} = (props) => { width, }} > - {CustomLabel !== undefined ? CustomLabel : } - {CustomError !== undefined ? CustomError : } + + {hasMany ? ( = (props) => { width, }} > - {CustomError !== undefined ? CustomError : } - {CustomLabel !== undefined ? CustomLabel : } + + = (props) => { width, }} > - {CustomError !== undefined ? CustomError : } +
  • - {CustomLabel !== undefined ? CustomLabel : } +
    {BeforeInput} = (props) => {
  • - {CustomLabel !== undefined ? CustomLabel : } +
    {BeforeInput} = (props) => { }} >
    - {CustomError !== undefined ? CustomError : } +
    - {CustomLabel !== undefined ? CustomLabel : } +
      {options.map((option) => { let optionValue = '' diff --git a/packages/ui/src/fields/Relationship/index.tsx b/packages/ui/src/fields/Relationship/index.tsx index 6ec6e59920..4296ce3db2 100644 --- a/packages/ui/src/fields/Relationship/index.tsx +++ b/packages/ui/src/fields/Relationship/index.tsx @@ -440,8 +440,8 @@ const RelationshipField: React.FC = (props) => { width, }} > - {CustomError !== undefined ? CustomError : } - {CustomLabel !== undefined ? CustomLabel : } + + {!errorLoading && (
      = (props) => { width, }} > - {CustomError !== undefined ? CustomError : } - {CustomLabel !== undefined ? CustomLabel : } + +
      {BeforeInput} = (props) => { width, }} > - {CustomError !== undefined ? CustomError : } - {CustomLabel !== undefined ? CustomLabel : } + + {hasMany ? ( = (props) => { width, }} > - {CustomError !== undefined ? CustomError : } - {CustomLabel !== undefined ? CustomLabel : } + + {BeforeInput}