From fd8e7d1f110ed04d66d7c0a991cf1fdd9c9e55e9 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Fri, 17 Apr 2026 06:36:14 +0200 Subject: [PATCH 1/2] TipTap: Declare Clear Formatting toolbar button's extension dependencies --- .../src/packages/tiptap/extensions/clear-formatting/manifests.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/clear-formatting/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/clear-formatting/manifests.ts index 5516bef1fb66..3fccf5d2c574 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/clear-formatting/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/clear-formatting/manifests.ts @@ -5,6 +5,7 @@ export const manifests: Array = [ alias: 'Umb.Tiptap.Toolbar.ClearFormatting', name: 'Clear Formatting Tiptap Toolbar Extension', api: () => import('./clear-formatting.tiptap-toolbar-api.js'), + forExtensions: ['Umb.Tiptap.HtmlAttributeClass', 'Umb.Tiptap.HtmlAttributeStyle'], meta: { alias: 'clear-formatting', icon: 'icon-clear-formatting', From 0efc2586fd063512e2a5d0b164865610548f5b6a Mon Sep 17 00:00:00 2001 From: leekelleher Date: Fri, 17 Apr 2026 11:05:06 +0100 Subject: [PATCH 2/2] Reworked to have a loose dependency on the `class` and `style` attribute extensions --- .../clear-formatting.tiptap-toolbar-api.ts | 9 +++++++-- .../tiptap/extensions/clear-formatting/manifests.ts | 1 - 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/clear-formatting/clear-formatting.tiptap-toolbar-api.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/clear-formatting/clear-formatting.tiptap-toolbar-api.ts index 0ee6d1efbede..ff1376fc7a39 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/clear-formatting/clear-formatting.tiptap-toolbar-api.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/clear-formatting/clear-formatting.tiptap-toolbar-api.ts @@ -1,8 +1,13 @@ -import type { Editor } from '../../externals.js'; +import type { CommandProps, Editor } from '../../externals.js'; import { UmbTiptapToolbarElementApiBase } from '../tiptap-toolbar-element-api-base.js'; export default class UmbTiptapToolbarClearFormattingExtensionApi extends UmbTiptapToolbarElementApiBase { override execute(editor?: Editor) { - editor?.chain().focus().clearNodes().unsetAllMarks().unsetClassName().unsetStyles().run(); + const unsetAttrs: (props: CommandProps) => boolean = ({ commands }) => { + commands.unsetClassName?.(); + commands.unsetStyles?.(); + return true; + }; + editor?.chain().focus()?.clearNodes().unsetAllMarks().command(unsetAttrs).run(); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/clear-formatting/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/clear-formatting/manifests.ts index 3fccf5d2c574..5516bef1fb66 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/clear-formatting/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/clear-formatting/manifests.ts @@ -5,7 +5,6 @@ export const manifests: Array = [ alias: 'Umb.Tiptap.Toolbar.ClearFormatting', name: 'Clear Formatting Tiptap Toolbar Extension', api: () => import('./clear-formatting.tiptap-toolbar-api.js'), - forExtensions: ['Umb.Tiptap.HtmlAttributeClass', 'Umb.Tiptap.HtmlAttributeStyle'], meta: { alias: 'clear-formatting', icon: 'icon-clear-formatting',