From 9df5ab8a10a35ad34615d7e4da024f59ff037e0e Mon Sep 17 00:00:00 2001 From: Alessio Gravili Date: Thu, 9 May 2024 09:46:03 -0400 Subject: [PATCH] feat(richtext-lexical)!: remove LexicalBlock, RichTextFieldRequiredEditor and FieldWithRichTextRequiredEditor types (#6279) BREAKING: `LexicalBlock`, `RichTextFieldRequiredEditor` and `FieldWithRichTextRequiredEditor` types have been removed. Instead of `LexicalBlock`, use `Block`. Instead of `RichTextFieldRequiredEditor`, use `RichTextField`. And instead of `FieldWithRichTextRequiredEditor`, use `Field`. --- packages/payload/src/exports/types.ts | 2 -- packages/payload/src/fields/config/types.ts | 12 ----------- .../src/field/features/Blocks/index.ts | 12 +++-------- .../src/field/features/Link/index.ts | 10 +++------ .../src/field/features/Upload/index.ts | 4 ++-- packages/richtext-lexical/src/index.ts | 2 +- test/fields/collections/Lexical/blocks.ts | 21 +++++++++---------- test/fields/collections/RichText/blocks.ts | 10 ++++----- 8 files changed, 24 insertions(+), 49 deletions(-) diff --git a/packages/payload/src/exports/types.ts b/packages/payload/src/exports/types.ts index 740f9a8de5..53c5cdfee4 100644 --- a/packages/payload/src/exports/types.ts +++ b/packages/payload/src/exports/types.ts @@ -68,7 +68,6 @@ export type { FieldWithMany, FieldWithMaxDepth, FieldWithPath, - FieldWithRichTextRequiredEditor, FieldWithSubFields, FilterOptions, FilterOptionsProps, @@ -87,7 +86,6 @@ export type { RelationshipField, RelationshipValue, RichTextField, - RichTextFieldRequiredEditor, RowAdmin, RowField, SelectField, diff --git a/packages/payload/src/fields/config/types.ts b/packages/payload/src/fields/config/types.ts index ba0fae4a98..f037f41244 100644 --- a/packages/payload/src/fields/config/types.ts +++ b/packages/payload/src/fields/config/types.ts @@ -558,14 +558,6 @@ export type RichTextField< type: 'richText' } & ExtraProperties -export type RichTextFieldRequiredEditor< - Value extends object = any, - AdapterProps = any, - ExtraProperties = object, -> = Omit, 'editor'> & { - editor: RichTextAdapter -} - export type ArrayField = FieldBase & { admin?: Admin & { components?: { @@ -683,10 +675,6 @@ export type Field = | UIField | UploadField -export type FieldWithRichTextRequiredEditor = - | Exclude - | RichTextFieldRequiredEditor - export type FieldAffectingData = | ArrayField | BlockField diff --git a/packages/richtext-lexical/src/field/features/Blocks/index.ts b/packages/richtext-lexical/src/field/features/Blocks/index.ts index d847076cea..2019d48f26 100644 --- a/packages/richtext-lexical/src/field/features/Blocks/index.ts +++ b/packages/richtext-lexical/src/field/features/Blocks/index.ts @@ -1,4 +1,4 @@ -import type { Block, BlockField, FieldWithRichTextRequiredEditor } from 'payload/types' +import type { Block, BlockField, Field } from 'payload/types' import { baseBlockFields, sanitizeFields } from 'payload/config' import { fieldsToJSONSchema, formatLabels, getTranslation } from 'payload/utilities' @@ -12,12 +12,8 @@ import { INSERT_BLOCK_COMMAND } from './plugin/commands' import { blockPopulationPromiseHOC } from './populationPromise' import { blockValidationHOC } from './validate' -export type LexicalBlock = Omit & { - fields: FieldWithRichTextRequiredEditor[] -} - export type BlocksFeatureProps = { - blocks: LexicalBlock[] + blocks: Block[] } export const BlocksFeature = (props?: BlocksFeatureProps): FeatureProvider => { @@ -26,9 +22,7 @@ export const BlocksFeature = (props?: BlocksFeatureProps): FeatureProvider => { props.blocks = props.blocks.map((block) => { const blockCopy = cloneDeep(block) - blockCopy.fields = blockCopy.fields.concat( - baseBlockFields as FieldWithRichTextRequiredEditor[], - ) + blockCopy.fields = blockCopy.fields.concat(baseBlockFields) blockCopy.labels = !blockCopy.labels ? formatLabels(blockCopy.slug) : blockCopy.labels return blockCopy }) diff --git a/packages/richtext-lexical/src/field/features/Link/index.ts b/packages/richtext-lexical/src/field/features/Link/index.ts index a89a875037..4c57386e54 100644 --- a/packages/richtext-lexical/src/field/features/Link/index.ts +++ b/packages/richtext-lexical/src/field/features/Link/index.ts @@ -1,6 +1,6 @@ import type { i18n } from 'i18next' import type { SanitizedConfig } from 'payload/config' -import type { FieldWithRichTextRequiredEditor } from 'payload/types' +import type { Field } from 'payload/types' import { $findMatchingParent } from '@lexical/utils' import { $getSelection, $isRangeSelection } from 'lexical' @@ -46,12 +46,8 @@ export type LinkFeatureProps = ExclusiveLinkCollectionsProps & { * displayed in the link editor drawer. */ fields?: - | ((args: { - config: SanitizedConfig - defaultFields: FieldWithRichTextRequiredEditor[] - i18n: i18n - }) => FieldWithRichTextRequiredEditor[]) - | FieldWithRichTextRequiredEditor[] + | ((args: { config: SanitizedConfig; defaultFields: Field[]; i18n: i18n }) => Field[]) + | Field[] /** * Sets a maximum population depth for the internal doc default field of link, regardless of the remaining depth when the field is reached. * This behaves exactly like the maxDepth properties of relationship and upload fields. diff --git a/packages/richtext-lexical/src/field/features/Upload/index.ts b/packages/richtext-lexical/src/field/features/Upload/index.ts index b2a5b61de9..923f8adba7 100644 --- a/packages/richtext-lexical/src/field/features/Upload/index.ts +++ b/packages/richtext-lexical/src/field/features/Upload/index.ts @@ -1,4 +1,4 @@ -import type { FieldWithRichTextRequiredEditor } from 'payload/types' +import type { Field } from 'payload/types' import payload from 'payload' @@ -15,7 +15,7 @@ import { uploadValidation } from './validate' export type UploadFeatureProps = { collections: { [collection: string]: { - fields: FieldWithRichTextRequiredEditor[] + fields: Field[] } } /** diff --git a/packages/richtext-lexical/src/index.ts b/packages/richtext-lexical/src/index.ts index 804cb810f9..4188e26fc9 100644 --- a/packages/richtext-lexical/src/index.ts +++ b/packages/richtext-lexical/src/index.ts @@ -220,7 +220,7 @@ export function lexicalEditor(props?: LexicalEditorProps): LexicalRichTextAdapte } export { BlockQuoteFeature } from './field/features/BlockQuote' -export { BlocksFeature, type BlocksFeatureProps, type LexicalBlock } from './field/features/Blocks' +export { BlocksFeature, type BlocksFeatureProps } from './field/features/Blocks' export { $createBlockNode, $isBlockNode, diff --git a/test/fields/collections/Lexical/blocks.ts b/test/fields/collections/Lexical/blocks.ts index 8388234095..663989dea0 100644 --- a/test/fields/collections/Lexical/blocks.ts +++ b/test/fields/collections/Lexical/blocks.ts @@ -1,5 +1,4 @@ -import type { ArrayField } from '../../../../packages/payload/src/fields/config/types' -import type { LexicalBlock } from '../../../../packages/richtext-lexical/src' +import type { ArrayField, Block } from '../../../../packages/payload/src/fields/config/types' import { lexicalEditor } from '../../../../packages/richtext-lexical/src' import { textFieldsSlug } from '../Text/shared' @@ -18,7 +17,7 @@ export const BlockColumns = ({ name }: { name: string }): ArrayField => ({ }, ], }) -export const ConditionalLayoutBlock: LexicalBlock = { +export const ConditionalLayoutBlock: Block = { fields: [ { label: 'Layout', @@ -62,7 +61,7 @@ export const ConditionalLayoutBlock: LexicalBlock = { slug: 'conditionalLayout', } -export const TextBlock: LexicalBlock = { +export const TextBlock: Block = { fields: [ { name: 'text', @@ -73,7 +72,7 @@ export const TextBlock: LexicalBlock = { slug: 'text', } -export const RadioButtonsBlock: LexicalBlock = { +export const RadioButtonsBlock: Block = { interfaceName: 'LexicalBlocksRadioButtonsBlock', fields: [ { @@ -98,7 +97,7 @@ export const RadioButtonsBlock: LexicalBlock = { slug: 'radioButtons', } -export const RichTextBlock: LexicalBlock = { +export const RichTextBlock: Block = { fields: [ { name: 'richText', @@ -109,7 +108,7 @@ export const RichTextBlock: LexicalBlock = { slug: 'richText', } -export const UploadAndRichTextBlock: LexicalBlock = { +export const UploadAndRichTextBlock: Block = { fields: [ { name: 'upload', @@ -126,7 +125,7 @@ export const UploadAndRichTextBlock: LexicalBlock = { slug: 'uploadAndRichText', } -export const RelationshipHasManyBlock: LexicalBlock = { +export const RelationshipHasManyBlock: Block = { fields: [ { name: 'rel', @@ -138,7 +137,7 @@ export const RelationshipHasManyBlock: LexicalBlock = { ], slug: 'relationshipHasManyBlock', } -export const RelationshipBlock: LexicalBlock = { +export const RelationshipBlock: Block = { fields: [ { name: 'rel', @@ -150,7 +149,7 @@ export const RelationshipBlock: LexicalBlock = { slug: 'relationshipBlock', } -export const SelectFieldBlock: LexicalBlock = { +export const SelectFieldBlock: Block = { fields: [ { name: 'select', @@ -182,7 +181,7 @@ export const SelectFieldBlock: LexicalBlock = { slug: 'select', } -export const SubBlockBlock: LexicalBlock = { +export const SubBlockBlock: Block = { slug: 'subBlock', fields: [ { diff --git a/test/fields/collections/RichText/blocks.ts b/test/fields/collections/RichText/blocks.ts index 3e4b884650..568dcd2cb0 100644 --- a/test/fields/collections/RichText/blocks.ts +++ b/test/fields/collections/RichText/blocks.ts @@ -1,8 +1,8 @@ -import type { LexicalBlock } from '../../../../packages/richtext-lexical/src' +import type { Block } from 'payload/types' import { lexicalEditor } from '../../../../packages/richtext-lexical/src' -export const TextBlock: LexicalBlock = { +export const TextBlock: Block = { fields: [ { name: 'text', @@ -13,7 +13,7 @@ export const TextBlock: LexicalBlock = { slug: 'text', } -export const UploadAndRichTextBlock: LexicalBlock = { +export const UploadAndRichTextBlock: Block = { fields: [ { name: 'upload', @@ -30,7 +30,7 @@ export const UploadAndRichTextBlock: LexicalBlock = { slug: 'uploadAndRichText', } -export const RelationshipBlock: LexicalBlock = { +export const RelationshipBlock: Block = { fields: [ { name: 'rel', @@ -42,7 +42,7 @@ export const RelationshipBlock: LexicalBlock = { slug: 'relationshipBlock', } -export const SelectFieldBlock: LexicalBlock = { +export const SelectFieldBlock: Block = { fields: [ { name: 'select',