Column

Add columns to your document.

Loading...
Files
components/demo.tsx
'use client';

import React from 'react';

import { Plate } from '@udecode/plate-common/react';

import { editorPlugins } from '@/components/editor/plugins/editor-plugins';
import { useCreateEditor } from '@/components/editor/use-create-editor';
import { Editor, EditorContainer } from '@/components/plate-ui/editor';

import { DEMO_VALUES } from './values/demo-values';

export default function Demo({ id }: { id: string }) {
  const editor = useCreateEditor({
    plugins: [...editorPlugins],
    value: DEMO_VALUES[id],
  });

  return (
    <Plate editor={editor}>
      <EditorContainer variant="demo">
        <Editor />
      </EditorContainer>
    </Plate>
  );
}

Features

  • Add columns to your document.
  • Choose from a variety of column layouts using column-group-element toolbar.
  • Resizable columns

Installation

npm install @udecode/plate-layout

Usage

import { ColumnPlugin, ColumnItemPlugin } from '@udecode/plate-layout/react';
 
const plugins = [
  // ...otherPlugins,
  ColumnPlugin,
];

Plugins

ColumnPlugin

Add Column Plugin to your document.

ColumnItemPlugin

Add Column Item Plugin to your document.

API

TColumnGroupElement

Attributes

    Extends TElement.

TColumnElement

Attributes

Collapse all

    Extends TElement.

    The Column's width end with %

insertColumnGroup

Insert a columnGroup with two empty columns.

Parameters

Collapse all

    The editor instance.

    • columns: Array of column widths or number of equal-width columns (default: 2)
    • Other InsertNodesOptions to control insert behavior

insertColumn

Insert an empty column. You can set the width by options.width default is "33%"

Parameters

Collapse all

    The editor instance.

    InsertNodesOptions and width to set the insert behavior.

moveMiddleColumn

Move the middle column to the left or right by options.direction. If the middle node is empty, return false and remove it.

Parameters

Collapse all

    The editor instance.

    The node entry of column element

    Control the direction the middle column moves to

toggleColumnGroup

Converts a block into a column group layout or updates an existing column group's layout.

Parameters

Collapse all

    The editor instance.

Behavior:

  • If the target block is not a column group, wraps it in a new column group with the specified number of columns
  • If the target block is already a column group, updates its column layout using setColumns
  • The original content becomes the content of the first column
  • Additional columns are created with empty paragraphs

setColumns

Updates the column layout of an existing column group by modifying the number and widths of columns.

Parameters

Collapse all

    The editor instance.

Behavior:

  • When increasing columns:
    • Keeps existing column content
    • Adds new empty columns with specified widths
  • When decreasing columns:
    • Merges content from removed columns into the last remaining column
    • Updates widths of remaining columns
  • When keeping same number of columns:
    • Only updates column widths

API Components

useDebouncePopoverOpen

Returns

Collapse all

    Control whether the popover is open or not