From 1b90445b693bfe5eba461ead48ae224222507f71 Mon Sep 17 00:00:00 2001 From: gjulivan Date: Wed, 18 Mar 2026 11:19:59 +0100 Subject: [PATCH 1/3] fix: infinite empty line kept being added by quill at the end of the editor --- .../rich-text-web/CHANGELOG.md | 4 ++++ .../src/components/EditorWrapper.tsx | 16 +++++++------- .../rich-text-web/src/utils/MxQuill.ts | 22 ++++++++++++++++++- .../rich-text-web/src/utils/formats/block.ts | 14 ++++++++++++ 4 files changed, 47 insertions(+), 9 deletions(-) diff --git a/packages/pluggableWidgets/rich-text-web/CHANGELOG.md b/packages/pluggableWidgets/rich-text-web/CHANGELOG.md index 0c26f238ab..98d241556c 100644 --- a/packages/pluggableWidgets/rich-text-web/CHANGELOG.md +++ b/packages/pluggableWidgets/rich-text-web/CHANGELOG.md @@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] +### Fixed + +- We fixed an issue where the editor kept adding infinite empty lines at the end by limiting it to only 1 empty line. + ## [4.11.2] - 2026-03-05 ### Fixed diff --git a/packages/pluggableWidgets/rich-text-web/src/components/EditorWrapper.tsx b/packages/pluggableWidgets/rich-text-web/src/components/EditorWrapper.tsx index ecc50a2021..b52ddbefc3 100644 --- a/packages/pluggableWidgets/rich-text-web/src/components/EditorWrapper.tsx +++ b/packages/pluggableWidgets/rich-text-web/src/components/EditorWrapper.tsx @@ -74,12 +74,12 @@ function EditorWrapperInner(props: EditorWrapperProps): ReactElement { const calculateCounts = useCallback( (quill: Quill | null): void => { - if (enableStatusBar) { + if (enableStatusBar && quill) { if (statusBarContent === "wordCount") { const text = quill?.getText().trim(); setWordCount(text && text.length > 0 ? text.split(/\s+/).length : 0); } else if (statusBarContent === "characterCount") { - const text = quill?.getText() || ""; + const text = quill?.getText().trimEnd() || ""; setWordCount(text.length); } else if (statusBarContent === "characterCountHtml") { const html = quill?.getSemanticHTML() || ""; @@ -95,7 +95,7 @@ function EditorWrapperInner(props: EditorWrapperProps): ReactElement { calculateCounts(quillRef.current); } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [stringAttribute.value, calculateCounts, quillRef.current]); + }, [stringAttribute.value]); useEffect(() => { if (quillRef.current) { @@ -117,15 +117,15 @@ function EditorWrapperInner(props: EditorWrapperProps): ReactElement { } } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [quillRef.current, onChange?.isExecuting]); + }, [quillRef.current]); const onTextChange = useCallback(() => { - if (stringAttribute.value !== quillRef?.current?.getSemanticHTML()) { - setAttributeValueDebounce(quillRef?.current?.getSemanticHTML()); + const semanticHTML = quillRef.current?.getSemanticHTML() || ""; + if (stringAttribute.value !== semanticHTML) { + setAttributeValueDebounce(semanticHTML); } - calculateCounts(quillRef.current); // eslint-disable-next-line react-hooks/exhaustive-deps - }, [quillRef.current, stringAttribute, calculateCounts, onChange?.isExecuting]); + }, [quillRef.current, stringAttribute, calculateCounts]); const toolbarId = `widget_${id.replaceAll(".", "_")}_toolbar`; const shouldHideToolbar = (stringAttribute.readOnly && readOnlyStyle !== "text") || toolbarLocation === "hide"; diff --git a/packages/pluggableWidgets/rich-text-web/src/utils/MxQuill.ts b/packages/pluggableWidgets/rich-text-web/src/utils/MxQuill.ts index cdff902b9d..64560f8824 100644 --- a/packages/pluggableWidgets/rich-text-web/src/utils/MxQuill.ts +++ b/packages/pluggableWidgets/rich-text-web/src/utils/MxQuill.ts @@ -36,12 +36,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * this file overrides Quill instance. * allowing us to override certain function that is not easy to extend. */ -import { type Blot, ParentBlot } from "parchment"; +import { type Blot, ParentBlot, ScrollBlot } from "parchment"; import Quill, { EmitterSource, QuillOptions } from "quill"; import TextBlot, { escapeText } from "quill/blots/text"; import { Delta, Op } from "quill/core"; import Editor from "quill/core/editor"; import { STANDARD_LIST_TYPES } from "./formats/customList"; +import MxBlock from "./formats/block"; interface ListItem { child: Blot; @@ -128,6 +129,21 @@ function getExpectedType(type: string | undefined, indent: number): string { return expectedType === "ordered" ? "decimal" : expectedType === "bullet" ? "disc" : expectedType; } +// removes empty tail block that quill adds at the end of document +// which causes extra newline when copying content with trailing newline +function findEmptyTailBlock(blot: Blot): Blot | null { + let skippedBlots = null; + + if (blot instanceof ScrollBlot && blot.statics.blotName === "scroll" && !blot.parent) { + if (MxBlock.IsMxBlock(blot.children.tail) && (blot.children.tail as MxBlock).isEmptyTailBlock()) { + if (MxBlock.IsMxBlock(blot.children.tail.prev) && (blot.children.tail.prev as MxBlock).isEmptyTailBlock()) { + skippedBlots = blot.children.tail; + } + } + } + return skippedBlots; +} + /** * Copy with modification from https://github.com/slab/quill/blob/main/packages/quill/src/core/editor.ts */ @@ -193,7 +209,11 @@ function convertHTML(blot: Blot, index: number, length: number, isRoot = false): return convertListHTML(items, -1, []); } const parts: string[] = []; + const skippedBlots = findEmptyTailBlock(blot); blot.children.forEachAt(index, length, (child, offset, childLength) => { + if (child === skippedBlots) { + return; + } parts.push(convertHTML(child, offset, childLength)); }); if (isRoot || blot.statics.blotName === "list") { diff --git a/packages/pluggableWidgets/rich-text-web/src/utils/formats/block.ts b/packages/pluggableWidgets/rich-text-web/src/utils/formats/block.ts index 802cc43001..0248acfb2d 100644 --- a/packages/pluggableWidgets/rich-text-web/src/utils/formats/block.ts +++ b/packages/pluggableWidgets/rich-text-web/src/utils/formats/block.ts @@ -1,6 +1,14 @@ +import { Blot } from "parchment"; import Block from "quill/blots/block"; class MxBlock extends Block { + isEmptyTailBlock(): boolean { + const hasNoValidChildren = + this.children.length === 0 || + (this.children.length === 1 && this.children.head?.statics.tagName.toString().toUpperCase() === "BR"); + return this.prev !== null && hasNoValidChildren; + } + html(): string { // quill return empty paragraph when there is no content (just empty line) // to preserve the line breaks, we add empty space @@ -13,5 +21,11 @@ class MxBlock extends Block { return this.domNode.outerHTML; } } + + static IsMxBlock(blot: Blot | null): blot is MxBlock { + return blot?.statics.blotName === "mx-block"; + } } + +MxBlock.blotName = "mx-block"; export default MxBlock; From 5a117ffd7504469fa8b7fd84d27783b12c515b33 Mon Sep 17 00:00:00 2001 From: gjulivan Date: Thu, 19 Mar 2026 13:49:38 +0100 Subject: [PATCH 2/3] fix: allow no validation links url --- .../rich-text-web/src/RichText.xml | 4 ++ .../rich-text-web/src/components/Editor.tsx | 29 ++++++++------ .../src/components/EditorWrapper.tsx | 10 ++++- .../rich-text-web/src/utils/MxQuill.ts | 38 +++++++++++++++++-- .../src/utils/customPluginRegisters.ts | 2 - .../rich-text-web/src/utils/formats/block.ts | 4 +- .../rich-text-web/src/utils/formats/link.ts | 36 ++++++++++-------- .../rich-text-web/typings/RichTextProps.d.ts | 2 + 8 files changed, 90 insertions(+), 35 deletions(-) diff --git a/packages/pluggableWidgets/rich-text-web/src/RichText.xml b/packages/pluggableWidgets/rich-text-web/src/RichText.xml index 47ee1a2202..8fb841b775 100644 --- a/packages/pluggableWidgets/rich-text-web/src/RichText.xml +++ b/packages/pluggableWidgets/rich-text-web/src/RichText.xml @@ -171,6 +171,10 @@ Enable spell checking + + Enable link URL validation + If enabled, only valid URLs will be accepted in links. + Default font family diff --git a/packages/pluggableWidgets/rich-text-web/src/components/Editor.tsx b/packages/pluggableWidgets/rich-text-web/src/components/Editor.tsx index 7992afab38..432d461dc6 100644 --- a/packages/pluggableWidgets/rich-text-web/src/components/Editor.tsx +++ b/packages/pluggableWidgets/rich-text-web/src/components/Editor.tsx @@ -10,26 +10,23 @@ import { useLayoutEffect, useRef } from "react"; -import { CustomFontsType, RichTextContainerProps } from "../../typings/RichTextProps"; +import { RichTextContainerProps } from "../../typings/RichTextProps"; import { EditorDispatchContext } from "../store/EditorProvider"; import { SET_FULLSCREEN_ACTION } from "../store/store"; import "../utils/customPluginRegisters"; -import { FontStyleAttributor, formatCustomFonts } from "../utils/formats/fonts"; import "../utils/formats/quill-table-better/assets/css/quill-table-better.scss"; import { getResizeModuleConfig } from "../utils/formats/resizeModuleConfig"; import { ACTION_DISPATCHER } from "../utils/helpers"; import { getKeyboardBindings } from "../utils/modules/keyboard"; import { getIndentHandler } from "../utils/modules/toolbarHandlers"; import MxUploader from "../utils/modules/uploader"; -import MxQuill from "../utils/MxQuill"; +import MxQuill, { MxQuillModulesOptions } from "../utils/MxQuill"; import { useEmbedModal } from "./CustomToolbars/useEmbedModal"; import Dialog from "./ModalDialog/Dialog"; -export interface EditorProps extends Pick< - RichTextContainerProps, - "imageSource" | "imageSourceContent" | "enableDefaultUpload" -> { - customFonts: CustomFontsType[]; +export interface EditorProps + extends Pick { + options: MxQuillModulesOptions; defaultValue?: string; onTextChange?: (...args: [delta: Delta, oldContent: Delta, source: EmitterSource]) => void; onSelectionChange?: (...args: [range: Range, oldRange: Range, source: EmitterSource]) => void; @@ -43,10 +40,17 @@ export interface EditorProps extends Pick< // Editor is an uncontrolled React component const Editor = forwardRef((props: EditorProps, ref: MutableRefObject) => { - const fonts = formatCustomFonts(props.customFonts); - const FontStyle = new FontStyleAttributor(fonts); - Quill.register(FontStyle, true); - const { theme, defaultValue, style, className, toolbarId, onTextChange, onSelectionChange, readOnly } = props; + const { + theme, + defaultValue, + style, + className, + toolbarId, + onTextChange, + onSelectionChange, + readOnly, + options: mxOptions + } = props; const containerRef = useRef(null); const modalRef = useRef(null); const onTextChangeRef = useRef(onTextChange); @@ -127,6 +131,7 @@ const Editor = forwardRef((props: EditorProps, ref: MutableRefObject 0) { - results = foundLinks[0].href; - } - - return results; -} - /** * Custom Link handler, allowing extra config: target and default protocol. */ @@ -24,7 +12,7 @@ export default class CustomLink extends Link { } else if ((value as linkConfigType)?.href !== undefined) { const linkConfig = value as linkConfigType; // @ts-expect-error the constructor is generic function, ts will consider sanitize not exist - this.domNode.setAttribute("href", getLink(this.constructor.sanitize(linkConfig.href))); + this.domNode.setAttribute("href", this.constructor.getLink(this.constructor.sanitize(linkConfig.href))); this.domNode.textContent = linkConfig.text ?? linkConfig.href; if (linkConfig.target) { this.domNode.setAttribute("target", linkConfig.target); @@ -34,7 +22,7 @@ export default class CustomLink extends Link { } } else { // @ts-expect-error the constructor is generic function, ts will consider sanitize not exist - this.domNode.setAttribute("href", getLink(this.constructor.sanitize(value))); + this.domNode.setAttribute("href", this.constructor.getLink(this.constructor.sanitize(value))); } } @@ -42,7 +30,7 @@ export default class CustomLink extends Link { if ((value as linkConfigType)?.href !== undefined) { const linkConfig = value as linkConfigType; const node = super.create(linkConfig.href) as HTMLElement; - node.setAttribute("href", getLink(this.sanitize(linkConfig.href))); + node.setAttribute("href", this.getLink(this.sanitize(linkConfig.href))); node.setAttribute("rel", "noopener noreferrer"); node.setAttribute("title", linkConfig.title ?? linkConfig.href); node.setAttribute("target", linkConfig.target || "_blank"); @@ -52,4 +40,22 @@ export default class CustomLink extends Link { return super.create(value); } } + + static getLink(url: string): string { + const foundLinks = linkify.find(url, { + defaultProtocol: "https" + }); + let results = url; + if (foundLinks && foundLinks.length > 0) { + results = foundLinks[0].href; + } + + return results; + } +} + +export class CustomLinkNoValidation extends CustomLink { + static getLink(url: string): string { + return url; + } } diff --git a/packages/pluggableWidgets/rich-text-web/typings/RichTextProps.d.ts b/packages/pluggableWidgets/rich-text-web/typings/RichTextProps.d.ts index ac21fb4659..685894966f 100644 --- a/packages/pluggableWidgets/rich-text-web/typings/RichTextProps.d.ts +++ b/packages/pluggableWidgets/rich-text-web/typings/RichTextProps.d.ts @@ -75,6 +75,7 @@ export interface RichTextContainerProps { onLoad?: ActionValue; onChangeType: OnChangeTypeEnum; spellCheck: boolean; + linkValidation: boolean; defaultFontFamily?: DynamicValue; defaultFontSize?: DynamicValue; customFonts: CustomFontsType[]; @@ -124,6 +125,7 @@ export interface RichTextPreviewProps { onLoad: {} | null; onChangeType: OnChangeTypeEnum; spellCheck: boolean; + linkValidation: boolean; defaultFontFamily: string; defaultFontSize: string; customFonts: CustomFontsPreviewType[]; From 089b6bfb39498809fee5ceb56b9e3b0823a3fc7c Mon Sep 17 00:00:00 2001 From: gjulivan Date: Fri, 20 Mar 2026 09:38:02 +0100 Subject: [PATCH 3/3] fix: snapshot and test and changelog --- .../rich-text-web/CHANGELOG.md | 8 ++++++++ .../rich-text-web/e2e/RichText.spec.js | 1 - .../richTextModal-chromium-linux.png | Bin 35462 -> 35422 bytes .../rich-text-web/src/RichText.tsx | 1 + .../src/__tests__/RichText.spec.tsx | 3 ++- .../__snapshots__/RichText.spec.tsx.snap | 2 +- .../rich-text-web/src/components/Editor.tsx | 6 ++++-- 7 files changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/pluggableWidgets/rich-text-web/CHANGELOG.md b/packages/pluggableWidgets/rich-text-web/CHANGELOG.md index 98d241556c..2aaf5d1bd0 100644 --- a/packages/pluggableWidgets/rich-text-web/CHANGELOG.md +++ b/packages/pluggableWidgets/rich-text-web/CHANGELOG.md @@ -6,10 +6,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] +### Added + +- We added new configuration to make link Url validation optional. This will allow user to put non-standard Url into the link format. + ### Fixed - We fixed an issue where the editor kept adding infinite empty lines at the end by limiting it to only 1 empty line. +### Changed + +- We added `trimEnd` functionality to make character count on status bar correctly count characters without including new line and empty character. + ## [4.11.2] - 2026-03-05 ### Fixed diff --git a/packages/pluggableWidgets/rich-text-web/e2e/RichText.spec.js b/packages/pluggableWidgets/rich-text-web/e2e/RichText.spec.js index 96ed1c1335..782a344759 100644 --- a/packages/pluggableWidgets/rich-text-web/e2e/RichText.spec.js +++ b/packages/pluggableWidgets/rich-text-web/e2e/RichText.spec.js @@ -138,7 +138,6 @@ test.describe("RichText", () => { await page.waitForLoadState("networkidle"); await page.click(".mx-navbar-item [title='Demo']"); - await expect(page.locator(".mx-name-customWidget1").first()).toHaveScreenshot(`richTextModal.png`); await page.click(".mx-name-customWidget1 .ql-toolbar button.ql-video"); await expect(page.locator(".widget-rich-text .widget-rich-text-modal-body").first()).toHaveScreenshot( diff --git a/packages/pluggableWidgets/rich-text-web/e2e/RichText.spec.js-snapshots/richTextModal-chromium-linux.png b/packages/pluggableWidgets/rich-text-web/e2e/RichText.spec.js-snapshots/richTextModal-chromium-linux.png index a3822f190395a208ef8bd73caec8c3ba57fd3fee..d86cc6fe4eeeddec6a1d089e778cb04c054cc94b 100644 GIT binary patch literal 35422 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 z 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 diff --git a/packages/pluggableWidgets/rich-text-web/src/RichText.tsx b/packages/pluggableWidgets/rich-text-web/src/RichText.tsx index 36850a0d07..283829650c 100644 --- a/packages/pluggableWidgets/rich-text-web/src/RichText.tsx +++ b/packages/pluggableWidgets/rich-text-web/src/RichText.tsx @@ -29,6 +29,7 @@ export default function RichText(props: RichTextContainerProps): ReactElement { childList: true }); } else { + // eslint-disable-next-line react-hooks/set-state-in-effect setIsIncubator(false); } diff --git a/packages/pluggableWidgets/rich-text-web/src/__tests__/RichText.spec.tsx b/packages/pluggableWidgets/rich-text-web/src/__tests__/RichText.spec.tsx index d921094d4a..1ab4c89bad 100644 --- a/packages/pluggableWidgets/rich-text-web/src/__tests__/RichText.spec.tsx +++ b/packages/pluggableWidgets/rich-text-web/src/__tests__/RichText.spec.tsx @@ -46,7 +46,8 @@ describe("Rich Text", () => { OverflowY: "auto", customFonts: [], enableDefaultUpload: true, - formOrientation: "vertical" + formOrientation: "vertical", + linkValidation: true }; }); diff --git a/packages/pluggableWidgets/rich-text-web/src/__tests__/__snapshots__/RichText.spec.tsx.snap b/packages/pluggableWidgets/rich-text-web/src/__tests__/__snapshots__/RichText.spec.tsx.snap index 3b208a808c..731af18ef6 100644 --- a/packages/pluggableWidgets/rich-text-web/src/__tests__/__snapshots__/RichText.spec.tsx.snap +++ b/packages/pluggableWidgets/rich-text-web/src/__tests__/__snapshots__/RichText.spec.tsx.snap @@ -6022,7 +6022,7 @@ exports[`Rich Text renders with character count status bar 1`] = ` > - 25 + 23 character diff --git a/packages/pluggableWidgets/rich-text-web/src/components/Editor.tsx b/packages/pluggableWidgets/rich-text-web/src/components/Editor.tsx index 432d461dc6..a13fdd1730 100644 --- a/packages/pluggableWidgets/rich-text-web/src/components/Editor.tsx +++ b/packages/pluggableWidgets/rich-text-web/src/components/Editor.tsx @@ -24,8 +24,10 @@ import MxQuill, { MxQuillModulesOptions } from "../utils/MxQuill"; import { useEmbedModal } from "./CustomToolbars/useEmbedModal"; import Dialog from "./ModalDialog/Dialog"; -export interface EditorProps - extends Pick { +export interface EditorProps extends Pick< + RichTextContainerProps, + "imageSource" | "imageSourceContent" | "enableDefaultUpload" +> { options: MxQuillModulesOptions; defaultValue?: string; onTextChange?: (...args: [delta: Delta, oldContent: Delta, source: EmitterSource]) => void;