From aa3737ca399cfc27d8e6260d6ccb8ec85dc68f1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Jablo=C3=B1ski?= <43938777+GermanJablo@users.noreply.github.com> Date: Tue, 18 Mar 2025 13:55:29 -0300 Subject: [PATCH] fix(richtext-lexical): remove undefined rel and target attributes in link HTML converter (#11754) When converting lexical to HTML, links without "open in new tab" checked were incorrectly rendering with rel=undefined and target=undefined attributes. This fix ensures those attributes are only added when newTab is true. Fixes: #11752 --- .../src/utilities/lexical/converters/link.ts | 6 +----- .../converters/lexicalToHtml/async/converters/link.ts | 10 ++-------- .../converters/lexicalToHtml/sync/converters/link.ts | 10 ++-------- .../richtext-lexical/src/features/link/server/index.ts | 10 ++-------- 4 files changed, 7 insertions(+), 29 deletions(-) diff --git a/packages/plugin-form-builder/src/utilities/lexical/converters/link.ts b/packages/plugin-form-builder/src/utilities/lexical/converters/link.ts index 36592214da..829f1a99ad 100644 --- a/packages/plugin-form-builder/src/utilities/lexical/converters/link.ts +++ b/packages/plugin-form-builder/src/utilities/lexical/converters/link.ts @@ -15,17 +15,13 @@ export const LinkHTMLConverter: HTMLConverter = { submissionData, }) - const rel: string = node.fields.newTab ? ' rel="noopener noreferrer"' : '' - const target: string = node.fields.newTab ? ' target="_blank"' : '' - let href: string = node.fields.linkType === 'custom' ? node.fields.url : node.fields.doc?.value?.id if (submissionData) { href = replaceDoubleCurlys(href, submissionData) } - - return `${childrenText}` + return `${childrenText}` }, nodeTypes: ['link'], } diff --git a/packages/richtext-lexical/src/features/converters/lexicalToHtml/async/converters/link.ts b/packages/richtext-lexical/src/features/converters/lexicalToHtml/async/converters/link.ts index b5e2fd7c3d..402976203a 100644 --- a/packages/richtext-lexical/src/features/converters/lexicalToHtml/async/converters/link.ts +++ b/packages/richtext-lexical/src/features/converters/lexicalToHtml/async/converters/link.ts @@ -16,10 +16,7 @@ export const LinkHTMLConverterAsync: (args: { }) ).join('') - const rel: string | undefined = node.fields.newTab ? 'noopener noreferrer' : undefined - const target: string | undefined = node.fields.newTab ? '_blank' : undefined - - return ` + return ` ${children} ` }, @@ -30,9 +27,6 @@ export const LinkHTMLConverterAsync: (args: { }) ).join('') - const rel: string | undefined = node.fields.newTab ? 'noopener noreferrer' : undefined - const target: string | undefined = node.fields.newTab ? '_blank' : undefined - let href: string = node.fields.url ?? '' if (node.fields.linkType === 'internal') { if (internalDocToHref) { @@ -45,7 +39,7 @@ export const LinkHTMLConverterAsync: (args: { } } - return ` + return ` ${children} ` }, diff --git a/packages/richtext-lexical/src/features/converters/lexicalToHtml/sync/converters/link.ts b/packages/richtext-lexical/src/features/converters/lexicalToHtml/sync/converters/link.ts index 591ec22038..b186fd5650 100644 --- a/packages/richtext-lexical/src/features/converters/lexicalToHtml/sync/converters/link.ts +++ b/packages/richtext-lexical/src/features/converters/lexicalToHtml/sync/converters/link.ts @@ -9,10 +9,7 @@ export const LinkHTMLConverter: (args: { nodes: node.children, }).join('') - const rel: string | undefined = node.fields.newTab ? 'noopener noreferrer' : undefined - const target: string | undefined = node.fields.newTab ? '_blank' : undefined - - return ` + return ` ${children} ` }, @@ -21,9 +18,6 @@ export const LinkHTMLConverter: (args: { nodes: node.children, }).join('') - const rel: string | undefined = node.fields.newTab ? 'noopener noreferrer' : undefined - const target: string | undefined = node.fields.newTab ? '_blank' : undefined - let href: string = node.fields.url ?? '' if (node.fields.linkType === 'internal') { if (internalDocToHref) { @@ -36,7 +30,7 @@ export const LinkHTMLConverter: (args: { } } - return ` + return ` ${children} ` }, diff --git a/packages/richtext-lexical/src/features/link/server/index.ts b/packages/richtext-lexical/src/features/link/server/index.ts index cd6b399c6d..1a044c5a10 100644 --- a/packages/richtext-lexical/src/features/link/server/index.ts +++ b/packages/richtext-lexical/src/features/link/server/index.ts @@ -191,9 +191,6 @@ export const LinkFeature = createServerFeature< showHiddenFields, }) - const rel: string = node.fields.newTab ? ' rel="noopener noreferrer"' : '' - const target: string = node.fields.newTab ? ' target="_blank"' : '' - let href: string = node.fields.url ?? '' if (node.fields.linkType === 'internal') { href = @@ -202,7 +199,7 @@ export const LinkFeature = createServerFeature< : String(node.fields.doc?.value?.id) } - return `${childrenText}` + return `${childrenText}` }, nodeTypes: [AutoLinkNode.getType()], }, @@ -240,15 +237,12 @@ export const LinkFeature = createServerFeature< showHiddenFields, }) - const rel: string = node.fields.newTab ? ' rel="noopener noreferrer"' : '' - const target: string = node.fields.newTab ? ' target="_blank"' : '' - const href: string = node.fields.linkType === 'custom' ? escapeHTML(node.fields.url) : (node.fields.doc?.value as string) - return `${childrenText}` + return `${childrenText}` }, nodeTypes: [LinkNode.getType()], },