From 461551fdf7083c5b29b84de80233de049f16f44d Mon Sep 17 00:00:00 2001 From: Aman Harwara Date: Tue, 7 Feb 2023 16:02:57 +0530 Subject: [PATCH] fix: Fixed issue in Super notes where collapsible block title alignment would not persist --- .../CollapsiblePlugin/CollapsibleTitleNode.ts | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/packages/blocks-editor/src/Lexical/Plugins/CollapsiblePlugin/CollapsibleTitleNode.ts b/packages/blocks-editor/src/Lexical/Plugins/CollapsiblePlugin/CollapsibleTitleNode.ts index ffd9edb32..86487bd63 100644 --- a/packages/blocks-editor/src/Lexical/Plugins/CollapsiblePlugin/CollapsibleTitleNode.ts +++ b/packages/blocks-editor/src/Lexical/Plugins/CollapsiblePlugin/CollapsibleTitleNode.ts @@ -11,9 +11,11 @@ import { $isElementNode, DOMConversionMap, EditorConfig, + ElementFormatType, ElementNode, LexicalEditor, LexicalNode, + NodeKey, RangeSelection, SerializedElementNode, Spread, @@ -35,13 +37,22 @@ export class CollapsibleTitleNode extends ElementNode { return 'collapsible-title' } + constructor({ formatType, key }: { formatType?: ElementFormatType; key?: NodeKey }) { + super(key) + if (formatType) { + super.setFormat(formatType) + } + } + static override clone(node: CollapsibleTitleNode): CollapsibleTitleNode { - return new CollapsibleTitleNode(node.__key) + return new CollapsibleTitleNode({ key: node.__key }) } override createDOM(_config: EditorConfig, editor: LexicalEditor): HTMLElement { const dom = document.createElement('summary') dom.classList.add('Collapsible__title') + const format = this.getFormatType() + dom.style.textAlign = format dom.onclick = (event) => { event.preventDefault() event.stopPropagation() @@ -63,8 +74,8 @@ export class CollapsibleTitleNode extends ElementNode { return {} } - static override importJSON(_serializedNode: SerializedCollapsibleTitleNode): CollapsibleTitleNode { - return $createCollapsibleTitleNode() + static override importJSON(serializedNode: SerializedCollapsibleTitleNode): CollapsibleTitleNode { + return $createCollapsibleTitleNode(serializedNode.format) } override exportJSON(): SerializedCollapsibleTitleNode { @@ -109,8 +120,10 @@ export class CollapsibleTitleNode extends ElementNode { } } -export function $createCollapsibleTitleNode(): CollapsibleTitleNode { - return new CollapsibleTitleNode() +export function $createCollapsibleTitleNode(formatType?: ElementFormatType): CollapsibleTitleNode { + return new CollapsibleTitleNode({ + formatType, + }) } export function $isCollapsibleTitleNode(node: LexicalNode | null | undefined): node is CollapsibleTitleNode {