Table

Organize and display data in a structured and resizable tabular format.

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>
  );
}

功能

  • 启用创建和编辑具有高级行为的表格。
  • 箭头导航(上/下)。
  • 网格单元格选择。
  • 使用 Shift+箭头 键扩展单元格选择。
  • 复制和粘贴单元格。

安装

npm install @udecode/plate-table

用法

// ...
import { TablePlugin } from '@udecode/plate-table/react';
 
const plugins = [
  // ...其他插件,
  TablePlugin.configure({
    options: {
      initialTableWidth: 600,
    },
  }),
];

不支持合并

Loading...
Files
components/table-nomerge-demo.tsx
'use client';

import React from 'react';

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

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

export default function TableMergeDemo() {
  const editor = useCreateEditor({
    plugins: [
      ...editorPlugins,
      TablePlugin.configure({
        options: {
          enableMerging: false,
        },
      }),
    ],
    value: tableValue,
  });

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

插件

TablePlugin

Options

Collapse all

    禁用在插入单元格时扩展表格。

    禁用表格第一列的左侧调整器。

    禁用在表格只有一列时取消设置第一列的宽度。如果你想在只有一列时调整表格宽度,请设置为 true。如果你有全宽表格,请保持为 false

    如果定义了此值,规范器会将每个未定义的表格 colSizes 设置为此值除以列数的结果。注意目前不支持合并单元格。

    表格中列的最小宽度。

    • 默认: 48

TableRowPlugin

表格行插件。

TableCellPlugin

表格单元格插件。

TableCellHeaderPlugin

表格表头单元格插件。

API

editor.api.create.cell

创建表格的空单元格节点。

Parameters

Collapse all

    创建单元格的选项。

Returns

Collapse all

    单元格节点。

editor.api.table.getCellChildren

获取表格单元格的子元素。

Parameters

Collapse all

    表格单元格元素。

Returns

Collapse all

    表格单元格的子元素。

editor.tf.insert.tableColumn

在当前选择或指定单元格路径处插入列。

Parameters

Collapse all

editor.tf.insert.tableRow

在当前选择或指定行路径处插入行。

Parameters

Collapse all

deleteColumn

删除表格中包含选定单元格的列。

Parameters

Collapse all

    编辑器实例。

deleteRow

删除表格中包含选定单元格的行。

Parameters

Collapse all

    编辑器实例。

deleteTable

删除整个表格。

Parameters

Collapse all

    编辑器实例。

getCellInNextTableRow

获取下一行中的单元格。

Parameters

Collapse all

    编辑器实例。

    当前行的路径。

Returns

Collapse all

    下一行中单元格的节点entry,如果当前行是最后一行则返回 undefined

getCellInPreviousTableRow

获取上一行中单元格的节点entry,给定当前行的路径。

Parameters

Collapse all

    编辑器实例。

    当前行的路径。

Returns

Collapse all

    上一行中单元格的节点entry,如果当前行是第一行则返回 undefined

getCellType

获取插件单元格类型。

Parameters

Collapse all

    编辑器实例。

Returns

Collapse all

    编辑器中表格单元格(td 和 th)的元素类型数组。

getEmptyCellNode

返回表格的空单元格节点。

Parameters

Collapse all

    编辑器实例。

    创建单元格的选项。

Returns

Collapse all

    单元格节点。

getEmptyRowNode

创建具有指定列数的空行节点。

Parameters

Collapse all

    编辑器实例。

    扩展 GetEmptyCellNodeOptions

Returns

Collapse all

    行节点。

getEmptyTableNode

Parameters

Collapse all

    编辑器实例。

    扩展 GetEmptyRowNodeOptions

Returns

Collapse all

    表格节点。

getLeftTableCell

获取表格中当前单元格左侧的单元格。

Parameters

Collapse all

    编辑器实例。

Returns

Collapse all

    当前单元格左侧单元格的节点entry,如果当前单元格是行中的第一个单元格则返回 undefined

getNextTableCell

获取表格中的下一个单元格。

Parameters

Collapse all

    编辑器实例。

    当前单元格的entry。

    当前单元格的路径。

    当前行的entry。

Returns

Collapse all

    下一行中单元格的节点entry,如果当前行是最后一行则返回 undefined

getPreviousTableCell

获取表格中的上一个单元格。

Parameters

Collapse all

    编辑器实例。

    当前单元格的entry。

    当前单元格的路径。

    当前行的entry。

Returns

Collapse all

    上一行中单元格的节点entry,如果当前行是第一行则返回 undefined

getTableAbove

获取当前选择上方的表格节点。

Parameters

Collapse all

    编辑器实例。

Returns

Collapse all

    当前选择上方的表格节点entry,如果不存在则返回 undefined

getTableColumnCount

获取表格中的列数。

Parameters

Collapse all

    要获取列数的表格节点。

Returns

Collapse all

    表格中的列数。

getTableColumnIndex

获取表格中单元格节点的列索引。

Parameters

Collapse all

    编辑器实例。

    要获取列索引的单元格节点。

Returns

Collapse all

    单元格节点的列索引。

getTableEntries

根据当前选择或指定位置获取表格、行和单元格节点entry。

Parameters

Collapse all

    编辑器实例。

Returns

Collapse all

    表格节点entry。

    行节点entry。

    单元格节点entry。

getTableGridAbove

根据指定格式(表格或单元格)获取锚点和焦点位置上方的子表格。

Parameters

Collapse all

    编辑器实例。

Returns

Collapse all

    子表格entry。

getTableGridByRange

获取给定范围内两个单元格路径之间的子表格。

Parameters

Collapse all

    编辑器实例。

Returns

Collapse all

    子表格entry。

getTableOverriddenColSizes

获取表格节点的列大小,如果提供了覆盖值则应用覆盖。

Parameters

Collapse all

    要获取列大小的表格节点。

    列大小的可选覆盖值。它应该是一个类似地图的对象,其中键是列索引,值是覆盖的大小。

Returns

Collapse all

    列大小数组,如果提供了覆盖值则应用覆盖。如果表格节点中未定义列大小,则返回一个填充为 0 的数组。

getTableRowIndex

获取表格中单元格节点的行索引。

Parameters

Collapse all

    编辑器实例。

    要获取行索引的单元格节点。

Returns

Collapse all

    单元格节点的行索引。

getTopTableCell

获取表格中当前单元格上方的单元格。

Parameters

Collapse all

    编辑器实例。

    当前单元格的路径。如果未提供,函数将在编辑器中搜索当前单元格。

Returns

Collapse all

    单元格节点entry。

insertTable

如果编辑器中不存在表格,则在当前选择处插入表格。选择插入表格的起始位置。

Parameters

Collapse all

    编辑器实例。

    扩展 GetEmptyRowNodeOptions

    插入表格节点的选项。

insertTableColumn

在当前选择或指定的单元格路径处向表格插入列。

Parameters

Collapse all

    编辑器实例。

insertTableRow

在当前选择或指定的行路径处向表格插入行。

Parameters

Collapse all

    编辑器实例。

isTableBorderHidden

根据指定的边框方向检查表格单元格或表格本身的边框是否隐藏。

Parameters

Collapse all

    编辑器实例。

    要检查的边框方向。

Returns

Collapse all

    如果边框隐藏则返回 true,否则返回 false

moveSelectionFromCell

在表格内按单元格单位移动选择。

Parameters

Collapse all

    编辑器实例。

overrideSelectionFromCell

如果前一个选择和新选择在不同的单元格中,则覆盖新选择。

Parameters

Collapse all

    编辑器实例。

    要检查和覆盖的新选择。

setBorderSize

设置表格单元格指定边框的大小。

Parameters

Collapse all

    编辑器实例。

    边框大小。

setTableColSize

设置表格中特定列的宽度。

Parameters

Collapse all

    编辑器实例。

    用于查找表格节点的其他选项。

setTableMarginLeft

设置表格的左边距。

Parameters

Collapse all

    编辑器实例。

    用于查找表格节点的其他选项。

setTableRowSize

设置表格行的大小(高度)。

Parameters

Collapse all

    编辑器实例。

    用于查找表格节点的其他选项。

API 插件

onKeyDownTable

处理表格的键盘事件。

Parameters

Collapse all

    编辑器实例。

    plate 插件。

Returns

Collapse all

    键盘处理程序返回类型。

withDeleteTable

防止删除表格中的单元格。

Parameters

Collapse all

    编辑器实例。

withGetFragmentTable

如果选择在表格内,它会检索选择上方的子表格作为片段。这在复制和粘贴表格单元格时很有用。

Parameters

Collapse all

    编辑器实例。

withInsertFragmentTable

如果插入表格:

  • 如果选择锚点上方的块是表格,则用插入的表格替换上方的每个单元格,直到超出边界。选择插入的单元格。
  • 如果锚点上方没有表格,检查选择是否在表格内。如果是,找到锚点位置的单元格并用插入的片段替换其子元素。

Parameters

Collapse all

    编辑器实例。

    plate 插件。

withInsertTextTable

如果选择已展开:

  • 检查选择是否在表格内。如果是,将选择折叠到焦点边缘。

Parameters

Collapse all

    编辑器实例。

    plate 插件。

withNormalizeTable

通过执行以下操作规范化表格结构:

  • 如果单元格子元素是文本,则将其包装在段落中。
  • 解包不是有效表格元素的节点。
  • 如果指定了初始列大小,则设置表格的初始列大小。

Parameters

Collapse all

    编辑器实例。

withSelectionTable

通过执行以下操作处理表格选择:

  • 当锚点在表格内且焦点在表格前后的块中时,调整选择的焦点。
  • 当焦点在表格内且锚点在表格前后的块中时,调整选择的焦点。
  • 如果前一个选择和新选择在不同的单元格中,则从单元格覆盖选择。

Parameters

Collapse all

    编辑器实例。

withSetFragmentDataTable

通过执行以下操作处理复制或剪切表格数据时设置到剪贴板的数据:

  • 检查是否存在表格entry和选定的单元格entry。
  • 通过复制单元格内容而不是表格结构来处理单个单元格的复制或剪切操作。
  • 使用选定单元格的内容创建表格结构。
  • 将文本、HTML、CSV、TSV 和 Slate 片段数据设置到剪贴板。

Parameters

Collapse all

    编辑器实例。

withTable

通过应用以下高阶函数增强编辑器实例的表格相关功能:

  • withNormalizeTable:规范化表格结构和内容。
  • withDeleteTable:防止在表格内删除单元格。
  • withGetFragmentTable:处理复制或剪切表格单元格时获取片段数据。
  • withInsertFragmentTable:处理插入表格片段。
  • withInsertTextTable:处理在表格内插入文本。
  • withSelectionTable:处理调整表格内的选择。
  • withSetFragmentDataTable:处理复制或剪切表格数据时设置片段数据。

Parameters

Collapse all

    编辑器实例。

    plate 插件。

API 组件

useTableCellElementResizableState

表格调整大小手柄的状态。

Options

Collapse all

    单元格的列索引。

    单元格的行索引。

    调整表格单元格元素大小的步长。

    水平调整表格单元格元素大小的步长。

    • Default: step

    垂直调整表格单元格元素大小的步长。

    • Default: step

Returns

Collapse all

    是否禁用左边距。

    单元格的列索引。

    单元格的行索引。

    水平调整表格单元格元素大小的步长。

    垂直调整表格单元格元素大小的步长。

useTableCellElementResizable

表格调整大小手柄的行为钩子。

Parameters

Collapse all

Returns

Collapse all

    右侧调整大小手柄的属性。

    底部调整大小手柄的属性。

    左侧调整大小手柄的属性。

    左侧调整大小手柄是否隐藏。

getOnSelectTableBorderFactory

获取表格单元格元素的 onSelectTableBorder 处理程序。

Parameters

Collapse all

    编辑器实例。

    选定的单元格。

getTableCellBorders

获取表格单元格的边框样式。

Parameters

Collapse all

    表格单元格元素。

Returns

Collapse all

    单元格底部的边框样式。

    单元格右侧的边框样式。

    单元格左侧的边框样式。仅当 isFirstCelltrue 时存在。

    • 仅当 isFirstCelltrue 时存在。

    单元格顶部的边框样式。仅当 isFirstRowtrue 时存在。

    • 仅当 isFirstRowtrue 时存在。

roundCellSizeToStep

将单元格大小四舍五入到最接近的步长值,如果未设置步长则返回原始大小。

Parameters

Collapse all

    需要四舍五入的单元格大小。

    用于四舍五入的步长值。如果未提供,则返回原始大小。

useTableStore

表格存储用于存储表格插件的状态。

Attributes

Collapse all

    列大小覆盖。

    行大小覆盖。

    左边距覆盖。

    悬停列的索引。

    选中的单元格。

useIsCellSelected

检查表格单元格是否被选中的自定义钩子。

Parameters

Collapse all

    要检查的表格单元格元素。

useSelectedCells

管理表格中单元格选择的钩子。

它会跟踪当前选中的单元格,并根据编辑器选择的变化更新它们。

useTableBordersDropdownMenuContentState

表格边框下拉菜单内容的状态钩子。

Returns

Collapse all

    一个具有以下属性的对象:

    表示选中的表格单元格是否有底部边框。

    表示选中的表格单元格是否有顶部边框。

    表示选中的表格单元格是否有左侧边框。

    表示选中的表格单元格是否有右侧边框。

    表示选中的表格单元格是否没有边框。

    表示选中的表格单元格是否有外部边框(即所有边都有边框)。

    返回特定边框类型的 onSelectTableBorder 处理程序的工厂函数。

    • onSelectTableBorder 处理程序负责设置选中表格单元格的边框样式。

useTableColSizes

返回应用覆盖后的表格列大小的自定义钩子。如果表格的 colCount 更新为 1 且启用了 enableUnsetSingleColSize 选项,它会取消设置 colSizes 节点。

Parameters

Collapse all

    表格节点。

    附加选项。

Returns

Collapse all

    应用覆盖后的表格列大小。

useTableElement

表格元素的行为钩子。

Returns

Collapse all

    表格元素的属性。

    表格元素的属性。

useTableElementState

表格元素的状态钩子。

Parameters

Collapse all

Returns

Collapse all

    表格的列大小。

    表示用户当前是否正在选择单元格。

    最小列宽。

    表格的左边距。

useTableCellElement

表格单元格元素的行为钩子。

Parameters

Collapse all

Returns

Collapse all

    表格单元格元素的属性。

useTableCellElementState

表格单元格元素的状态钩子。

Parameters

Collapse all

Returns

Collapse all

    表格单元格的列索引。

    表格单元格的行索引。

    表示表格单元格是否为只读。

    表示表格单元格是否被选中。

    表示表格单元格是否被悬停。

    表示表格单元格的左侧是否被悬停。

    表格单元格的行大小。

    表格单元格的边框样式。

    表示用户当前是否正在选择单元格。