diff --git a/packages/editor/src/extensions/heading/__tests__/__snapshots__/heading.test.ts.snap b/packages/editor/src/extensions/heading/__tests__/__snapshots__/heading.test.ts.snap index 36f948208..61e8cb4cc 100644 --- a/packages/editor/src/extensions/heading/__tests__/__snapshots__/heading.test.ts.snap +++ b/packages/editor/src/extensions/heading/__tests__/__snapshots__/heading.test.ts.snap @@ -4,6 +4,8 @@ exports[`collapse heading > heading collapsed 1`] = `"

exports[`collapse heading > heading uncollapsed 1`] = `"

Main Heading

paragraph.

Subheading

subheading paragraph

Main heading 2

paragraph another

"`; +exports[`converting collapsed heading to lower level should unhide higher level headings 1`] = `"

Level 1 (to be changed)

Level 2

Paragraph under level 2

"`; + exports[`replacing collapsed heading with another heading level should not unhide content 1`] = `"

A collapsed heading

Hidden paragraph

"`; exports[`replacing collapsed heading with another node (blockquote) should unhide content 1`] = `"

A collpased heading

Hidden paragraph

"`; diff --git a/packages/editor/src/extensions/heading/__tests__/heading.test.ts b/packages/editor/src/extensions/heading/__tests__/heading.test.ts index ac007953c..420e01ffc 100644 --- a/packages/editor/src/extensions/heading/__tests__/heading.test.ts +++ b/packages/editor/src/extensions/heading/__tests__/heading.test.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { test, expect } from "vitest"; +import { test, expect, describe } from "vitest"; import { createEditor, h } from "../../../../test-utils/index.js"; import { Heading } from "../heading.js"; import { Editor } from "@tiptap/core"; @@ -125,3 +125,22 @@ test("empty heading should have empty class", () => { editor.commands.insertContent("Some content"); expect(headingElement?.classList.contains("empty")).toBe(false); }); + +test("converting collapsed heading to lower level should unhide higher level headings", () => { + const el = h("div", [ + h("h1", ["Level 1 (to be changed)"], { "data-collapsed": "true" }), + h("h2", ["Level 2"], { "data-hidden": "true", "data-collapsed": "true" }), + h("p", ["Paragraph under level 2"], { "data-hidden": "true" }) + ]); + const { editor } = createEditor({ + extensions: { + heading: Heading.configure({ levels: [1, 2, 3, 4, 5, 6] }) + }, + initialContent: el.outerHTML + }); + + editor.commands.setTextSelection(0); + editor.commands.setHeading({ level: 3 }); + + expect(editor.getHTML()).toMatchSnapshot(); +});