Skip to content

feat(xl-multi-column): migrate columns onto the container block API - #2998

Open
nperez0111 wants to merge 1 commit into
container-blocks/corefrom
container-blocks/multi-column
Open

feat(xl-multi-column): migrate columns onto the container block API#2998
nperez0111 wants to merge 1 commit into
container-blocks/corefrom
container-blocks/multi-column

Conversation

@nperez0111

Copy link
Copy Markdown
Contributor

Part 2 of 3 of the container blocks stack (1: core API, 2: multi-column migration ← you are here, 3: docs & examples). Stacked on #2997.

What this does

Migrates @blocknote/xl-multi-column from hand-written ProseMirror nodes onto the container block API from the previous PR, and deletes the legacy compatibility shims that PR carried for it.

  • column / columnList are now regular createBlockSpec container blocks (pm-nodes/Column.ts and pm-nodes/ColumnList.ts deleted):
    • columnList: children: { allow: ["column"], min: 2, whenEmptied: "unwrap" }
    • column: placement: "containerOnly", so it can only ever live inside a columnList
    • both meta.draggable: false, matching the previous side-menu behavior
  • Column keyboard behavior, repair (collapsing emptied columns, unwrapping single-column lists), drag & drop, and HTML round-trips now come entirely from the generic container machinery; the bespoke column code paths in core are gone.
  • Core cleanup: fixColumnList.ts deleted along with every // Legacy shim from the previous PR (blockToNode, internal HTML serializer, UniqueID types, Exporter.isContainerBlock, containerUI, fragmentToBlocks, fixContainer).
  • Column resizing moves fully into ColumnResizeExtension (widths are no longer a schema prop concern of core).

Behavior notes

  • Conversion snapshots change shape slightly (attribute order, data-children-of markers on the children hosts, data-width now handled by the resize extension).
  • insertBlocks with a partial columnList (missing columns/children) now auto-fills from the container config instead of throwing, matching every other container block.

Testing

  • fixColumnLists.test.tsfixContainer.test.ts (same scenarios against the generic repair), new enter.test.ts and columnResize.test.ts.
  • Multi-column e2e suite (tests/src/end-to-end/multicolumn) extended for the migrated behavior; full suite green.

@vercel

vercel Bot commented Aug 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
blocknote Ready Ready Preview Aug 21, 2026 7:55pm
blocknote-website Ready Ready Preview Aug 21, 2026 7:55pm

Request Review

@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 9577fb5d-4a8c-40be-831c-3c49d013a265

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@pkg-pr-new

pkg-pr-new Bot commented Aug 21, 2026

Copy link
Copy Markdown

Open in StackBlitz

@blocknote/ariakit

npm i https://pkg.pr.new/@blocknote/ariakit@2998

@blocknote/code-block

npm i https://pkg.pr.new/@blocknote/code-block@2998

@blocknote/core

npm i https://pkg.pr.new/@blocknote/core@2998

@blocknote/diagram-block

npm i https://pkg.pr.new/@blocknote/diagram-block@2998

@blocknote/mantine

npm i https://pkg.pr.new/@blocknote/mantine@2998

@blocknote/math-block

npm i https://pkg.pr.new/@blocknote/math-block@2998

@blocknote/react

npm i https://pkg.pr.new/@blocknote/react@2998

@blocknote/server-util

npm i https://pkg.pr.new/@blocknote/server-util@2998

@blocknote/shadcn

npm i https://pkg.pr.new/@blocknote/shadcn@2998

@blocknote/xl-ai

npm i https://pkg.pr.new/@blocknote/xl-ai@2998

@blocknote/xl-docx-exporter

npm i https://pkg.pr.new/@blocknote/xl-docx-exporter@2998

@blocknote/xl-email-exporter

npm i https://pkg.pr.new/@blocknote/xl-email-exporter@2998

@blocknote/xl-multi-column

npm i https://pkg.pr.new/@blocknote/xl-multi-column@2998

@blocknote/xl-odt-exporter

npm i https://pkg.pr.new/@blocknote/xl-odt-exporter@2998

@blocknote/xl-pdf-exporter

npm i https://pkg.pr.new/@blocknote/xl-pdf-exporter@2998

commit: d6275a0

@github-actions

Copy link
Copy Markdown
PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://TypeCellOS.github.io/BlockNote/pr-preview/pr-2998/

Built to branch gh-pages at 2026-08-21 19:58 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant