From fb4651bdadd6d80cd95410f750bddeae1bacb9fe Mon Sep 17 00:00:00 2001 From: Jacob Fletcher Date: Fri, 15 Mar 2024 17:41:48 -0400 Subject: [PATCH] chore(ui): strictly types fields (#5344) --- .../src/views/Version/Default/SetStepNav.tsx | 9 +- .../fields/Iterable/index.tsx | 48 +- .../fields/Nested/index.tsx | 2 +- .../fields/Relationship/index.tsx | 2 +- .../fields/Select/index.tsx | 10 +- .../RenderFieldsToDiff/fields/Tabs/index.tsx | 22 +- .../RenderFieldsToDiff/fields/Text/index.tsx | 2 +- .../Version/RenderFieldsToDiff/index.tsx | 14 +- packages/richtext-lexical/src/field/Field.tsx | 1 + .../blocks/component/BlockContent.tsx | 2 +- .../field/features/blocks/component/index.tsx | 2 +- .../field/features/blocks/feature.client.tsx | 2 +- .../field/features/blocks/feature.server.ts | 2 +- .../src/field/features/link/drawer/index.tsx | 2 - .../richtext-slate/src/field/RichText.tsx | 2 + packages/ui/src/elements/EditMany/index.tsx | 2 +- .../elements/TableColumns/buildColumns.tsx | 14 +- packages/ui/src/exports/forms.ts | 20 +- packages/ui/src/exports/types.ts | 1 - packages/ui/src/forms/RenderFields/index.tsx | 6 +- .../WatchChildErrors/buildPathSegments.ts | 41 +- packages/ui/src/forms/fields/Array/index.tsx | 11 +- packages/ui/src/forms/fields/Array/types.ts | 12 +- .../ui/src/forms/fields/Blocks/BlockRow.tsx | 4 +- packages/ui/src/forms/fields/Blocks/index.tsx | 13 +- packages/ui/src/forms/fields/Blocks/types.ts | 12 +- .../ui/src/forms/fields/Checkbox/index.tsx | 4 +- .../ui/src/forms/fields/Checkbox/types.ts | 6 +- packages/ui/src/forms/fields/Code/index.tsx | 4 +- packages/ui/src/forms/fields/Code/types.ts | 8 +- .../ui/src/forms/fields/Collapsible/index.tsx | 4 +- .../ui/src/forms/fields/Collapsible/types.ts | 8 +- .../forms/fields/ConfirmPassword/index.tsx | 4 +- .../src/forms/fields/ConfirmPassword/types.ts | 2 +- .../ui/src/forms/fields/DateTime/index.tsx | 12 +- .../ui/src/forms/fields/DateTime/types.ts | 10 +- packages/ui/src/forms/fields/Email/index.tsx | 4 +- packages/ui/src/forms/fields/Email/types.ts | 7 +- packages/ui/src/forms/fields/Group/index.tsx | 4 +- packages/ui/src/forms/fields/Group/types.ts | 7 +- .../ui/src/forms/fields/HiddenInput/index.tsx | 4 +- .../ui/src/forms/fields/HiddenInput/types.ts | 2 +- packages/ui/src/forms/fields/JSON/index.tsx | 8 +- packages/ui/src/forms/fields/JSON/types.ts | 7 +- packages/ui/src/forms/fields/Number/index.tsx | 15 +- packages/ui/src/forms/fields/Number/types.ts | 12 +- .../ui/src/forms/fields/Password/index.tsx | 4 +- .../ui/src/forms/fields/Password/types.ts | 2 +- packages/ui/src/forms/fields/Point/index.tsx | 7 +- packages/ui/src/forms/fields/Point/types.ts | 8 +- .../ui/src/forms/fields/RadioGroup/index.tsx | 10 +- .../ui/src/forms/fields/RadioGroup/types.ts | 8 +- .../src/forms/fields/Relationship/index.tsx | 4 +- .../ui/src/forms/fields/Relationship/types.ts | 10 +- .../ui/src/forms/fields/RichText/index.tsx | 4 +- .../ui/src/forms/fields/RichText/types.ts | 6 +- packages/ui/src/forms/fields/Row/index.tsx | 4 +- packages/ui/src/forms/fields/Row/types.ts | 5 +- packages/ui/src/forms/fields/Select/index.tsx | 4 +- packages/ui/src/forms/fields/Select/types.ts | 10 +- .../ui/src/forms/fields/Tabs/Tab/index.tsx | 2 +- packages/ui/src/forms/fields/Tabs/index.tsx | 6 +- packages/ui/src/forms/fields/Tabs/types.ts | 6 +- packages/ui/src/forms/fields/Text/Input.tsx | 6 +- packages/ui/src/forms/fields/Text/index.tsx | 4 +- packages/ui/src/forms/fields/Text/types.ts | 9 +- .../ui/src/forms/fields/Textarea/Input.tsx | 6 +- .../ui/src/forms/fields/Textarea/index.tsx | 4 +- .../ui/src/forms/fields/Textarea/types.ts | 10 +- packages/ui/src/forms/fields/Upload/Input.tsx | 5 +- packages/ui/src/forms/fields/Upload/index.tsx | 4 +- packages/ui/src/forms/fields/Upload/types.ts | 4 +- packages/ui/src/forms/fields/shared.ts | 104 +-- .../providers/ComponentMapProvider/index.tsx | 2 +- .../utilities/buildComponentMap/mapFields.tsx | 742 +++++++++++++----- .../src/utilities/buildComponentMap/types.ts | 81 +- test/_community/collections/Posts/index.ts | 8 +- test/versions/e2e.spec.ts | 8 +- 78 files changed, 933 insertions(+), 554 deletions(-) diff --git a/packages/next/src/views/Version/Default/SetStepNav.tsx b/packages/next/src/views/Version/Default/SetStepNav.tsx index 885139ee5b..09fb80ed37 100644 --- a/packages/next/src/views/Version/Default/SetStepNav.tsx +++ b/packages/next/src/views/Version/Default/SetStepNav.tsx @@ -50,10 +50,11 @@ export const SetStepNav: React.FC<{ if (mostRecentDoc) { if (useAsTitle !== 'id') { - const titleField = fieldMap.find( - ({ name: fieldName, isFieldAffectingData }) => - isFieldAffectingData && fieldName === useAsTitle, - ) as FieldAffectingData + const titleField = fieldMap.find((f) => { + const { isFieldAffectingData } = f + const fieldName = 'name' in f ? f.name : undefined + return isFieldAffectingData && fieldName === useAsTitle + }) as FieldAffectingData if (titleField && mostRecentDoc[useAsTitle]) { if (titleField.localized) { 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 6981a4e155..e8df517d37 100644 --- a/packages/next/src/views/Version/RenderFieldsToDiff/fields/Iterable/index.tsx +++ b/packages/next/src/views/Version/RenderFieldsToDiff/fields/Iterable/index.tsx @@ -28,7 +28,7 @@ const Iterable: React.FC = ({ return (
- {field.label && ( + {'label' in field && field.label && (