From 504879b11c8f984cd6f8c67eace6a616564b1d9f Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Thu, 13 Mar 2025 22:20:12 +0200 Subject: [PATCH] feat(admonitions): allow changing admonition type --- .../src/admonitioncommand.ts | 4 +++ .../src/admonitionediting.ts | 28 ++++++++++++------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/packages/ckeditor5-admonition/src/admonitioncommand.ts b/packages/ckeditor5-admonition/src/admonitioncommand.ts index 3ff85e0dc..ad6f262bc 100644 --- a/packages/ckeditor5-admonition/src/admonitioncommand.ts +++ b/packages/ckeditor5-admonition/src/admonitioncommand.ts @@ -162,6 +162,10 @@ export default class AdmonitionCommand extends Command { quote = writer.createElement( 'aside', { type }); writer.wrap( groupRange, quote ); + } else if (quote.is("element")) { + this.editor.model.change((writer) => { + writer.setAttribute("type", type, quote as Element); + }); } quotesToMerge.push( quote ); diff --git a/packages/ckeditor5-admonition/src/admonitionediting.ts b/packages/ckeditor5-admonition/src/admonitionediting.ts index ce6ac6d8b..d57d05bfc 100644 --- a/packages/ckeditor5-admonition/src/admonitionediting.ts +++ b/packages/ckeditor5-admonition/src/admonitionediting.ts @@ -70,16 +70,24 @@ export default class AdmonitionEditing extends Plugin { } }); - editor.conversion.for("downcast").elementToElement( { - model: 'aside', - view: (modelElement, { writer }) => { - return writer.createContainerElement( - "aside", { - class: [ "admonition", modelElement.getAttribute("type") ].join(" ") - } - ) - } - }); + editor.conversion.for("downcast") + .elementToElement( { + model: 'aside', + view: (modelElement, { writer }) => { + return writer.createContainerElement( + "aside", { + class: [ "admonition", modelElement.getAttribute("type") ].join(" ") + } + ) + } + }) + .attributeToAttribute({ + model: "type", + view: (value) => ({ + key: "class", + value: [ "admonition", value as string ] + }) + }); // Postfixer which cleans incorrect model states connected with block quotes. editor.model.document.registerPostFixer( writer => {