From b7f99932dc619c86466da3abfc60696eb0ed23f3 Mon Sep 17 00:00:00 2001 From: Matthew Lipski Date: Mon, 20 Apr 2026 18:45:54 +0200 Subject: [PATCH] Fixed text color not applying to table block --- packages/core/src/blocks/Table/block.ts | 26 ++++++++++++++++++ tests/src/end-to-end/colors/colors.test.ts | 24 ++++++++++++++++ .../blockTextColorTable-chromium-linux.png | Bin 0 -> 8518 bytes .../blockTextColorTable-firefox-linux.png | Bin 0 -> 25404 bytes .../blockTextColorTable-webkit-linux.png | Bin 0 -> 28499 bytes 5 files changed, 50 insertions(+) create mode 100644 tests/src/end-to-end/colors/colors.test.ts-snapshots/blockTextColorTable-chromium-linux.png create mode 100644 tests/src/end-to-end/colors/colors.test.ts-snapshots/blockTextColorTable-firefox-linux.png create mode 100644 tests/src/end-to-end/colors/colors.test.ts-snapshots/blockTextColorTable-webkit-linux.png diff --git a/packages/core/src/blocks/Table/block.ts b/packages/core/src/blocks/Table/block.ts index 9a23d227aa..c71d9ffb7d 100644 --- a/packages/core/src/blocks/Table/block.ts +++ b/packages/core/src/blocks/Table/block.ts @@ -10,6 +10,7 @@ import { TableContent, } from "../../schema/index.js"; import { mergeCSSClasses } from "../../util/browser.js"; +import { camelToDataKebab } from "../../util/string.js"; import { createDefaultBlockDOMOutputSpec } from "../defaultBlockHelpers.js"; import { defaultProps } from "../defaultProps.js"; import { EMPTY_CELL_WIDTH, TableExtension } from "./TableExtension.js"; @@ -252,6 +253,31 @@ const TiptapTableNode = Node.create({ super.ignoreMutation(record) ); } + + // `TableView` implements its own `update` method, as the view needs to + // be persisted across updates for column resizing to work properly. + // However, it doesn't do anything else, so we have to re-apply the + // HTML attributes from props manually. This isn't an issue for node + // views created e.g. by custom blocks, as those aren't persisted + // across updates (they are reinstantiated each time), and so + // `HTMLAttributes` is always up-to-date for those. + update(updatedNode: PMNode): boolean { + if (!super.update(updatedNode)) { + return false; + } + + for (const [propName, propSpec] of Object.entries(tablePropSchema)) { + const attrName = camelToDataKebab(propName); + const value = updatedNode.attrs[propName]; + if (value !== propSpec.default) { + this.dom.setAttribute(attrName, String(value)); + } else { + this.dom.removeAttribute(attrName); + } + } + + return true; + } } return new BlockNoteTableView(node, EMPTY_CELL_WIDTH, { diff --git a/tests/src/end-to-end/colors/colors.test.ts b/tests/src/end-to-end/colors/colors.test.ts index 7751a72cf9..6c8f00f2b7 100644 --- a/tests/src/end-to-end/colors/colors.test.ts +++ b/tests/src/end-to-end/colors/colors.test.ts @@ -7,10 +7,12 @@ import { DRAG_HANDLE_MENU_SELECTOR, DRAG_HANDLE_SELECTOR, H_TWO_BLOCK_SELECTOR, + TABLE_SELECTOR, TEXT_COLOR_SELECTOR, } from "../../utils/const.js"; import { insertHeading, insertParagraph } from "../../utils/copypaste.js"; import { focusOnEditor } from "../../utils/editor.js"; +import { executeSlashCommand } from "../../utils/slashmenu.js"; test.beforeEach(async ({ page }) => { await page.goto(BASE_URL, { waitUntil: "networkidle" }); @@ -109,4 +111,26 @@ test.describe("Check Background & Text Color Functionality", () => { expect(await page.screenshot()).toMatchSnapshot("blockBackgroundColor.png"); }); + // Regression test: prosemirror-tables' TableView.update() preserves the + // NodeView's DOM without re-applying node attrs, so prop changes (e.g. + // textColor) wouldn't propagate to the blockContent wrapper. BlockNoteTableView + // overrides update() to sync prop-derived data-* attributes. + test("Should be able to set block text color on a table", async ({ + page, + }) => { + await focusOnEditor(page); + await executeSlashCommand(page, "table"); + await page.keyboard.type("Table Cell"); + + await page.hover(TABLE_SELECTOR); + await page.click(DRAG_HANDLE_SELECTOR); + await page.waitForSelector(DRAG_HANDLE_MENU_SELECTOR); + await page.hover("text=Colors"); + + const element = page.locator(TEXT_COLOR_SELECTOR("red")); + const boundingBox = (await element.boundingBox())!; + await page.mouse.click(boundingBox.x + 10, boundingBox.y + 10); + + expect(await page.screenshot()).toMatchSnapshot("blockTextColorTable.png"); + }); }); diff --git a/tests/src/end-to-end/colors/colors.test.ts-snapshots/blockTextColorTable-chromium-linux.png b/tests/src/end-to-end/colors/colors.test.ts-snapshots/blockTextColorTable-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..ae74e34095dd421a69dc348a3fa1a164440117e6 GIT binary patch literal 8518 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 ncMtG5N;;qNpW@C`aw>dJB5IWB#oVxX%`Cg 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%0D-l%;GA?jy7acK>#~6EG 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 H{`EfqDDob7 literal 0 HcmV?d00001