套件使用
安装
添加列表功能的最快方法是使用 ListKit
,它包含预配置的列表插件,带有 Plate UI 组件和键盘快捷键。
BulletedListElement
:渲染无序列表元素。NumberedListElement
:渲染有序列表元素。TaskListElement
:渲染带复选框的任务列表元素。
添加套件
将套件添加到您的插件中:
import { createPlateEditor } from 'platejs/react';
import { ListKit } from '@/components/editor/plugins/list-classic-kit';
const editor = createPlateEditor({
plugins: [
// ...其他插件,
...ListKit,
],
});
手动使用
安装
pnpm add @platejs/list-classic
添加插件
在创建编辑器时,将列表插件包含在您的 Plate 插件数组中。
import { ListPlugin, BulletedListPlugin, NumberedListPlugin, TaskListPlugin, ListItemPlugin } from '@platejs/list-classic/react';
import { createPlateEditor } from 'platejs/react';
const editor = createPlateEditor({
plugins: [
// ...其他插件,
ListPlugin,
BulletedListPlugin,
NumberedListPlugin,
TaskListPlugin,
ListItemPlugin,
],
});
配置插件
使用自定义组件和键盘快捷键配置插件。
import { ListPlugin, BulletedListPlugin, NumberedListPlugin, TaskListPlugin, ListItemPlugin } from '@platejs/list-classic/react';
import { createPlateEditor } from 'platejs/react';
import { BulletedListElement, NumberedListElement, TaskListElement } from '@/components/ui/list-classic-node';
const editor = createPlateEditor({
plugins: [
// ...其他插件,
ListPlugin,
BulletedListPlugin.configure({
node: { component: BulletedListElement },
shortcuts: { toggle: { keys: 'mod+alt+5' } },
}),
NumberedListPlugin.configure({
node: { component: NumberedListElement },
shortcuts: { toggle: { keys: 'mod+alt+6' } },
}),
TaskListPlugin.configure({
node: { component: TaskListElement },
shortcuts: { toggle: { keys: 'mod+alt+7' } },
}),
ListItemPlugin,
],
});
node.component
:分配BulletedListElement
、NumberedListElement
和TaskListElement
来渲染列表元素。shortcuts.toggle
:定义键盘快捷键来切换列表类型(mod+alt+5
用于项目符号,mod+alt+6
用于编号,mod+alt+7
用于任务列表)。
添加工具栏按钮
您可以将 ListToolbarButton
添加到您的工具栏中以创建和管理列表。
转换为工具栏按钮
使用 ListPlugin
时,请使用 turn-into-toolbar-classic-button
,它包含所有列表类型(项目符号、编号和任务列表)。
插入工具栏按钮
使用 ListPlugin
时,请使用 insert-toolbar-classic-button
,它包含所有列表类型(项目符号、编号和任务列表)。
插件
ListPlugin
包含以下元素插件:
BulletedListPlugin
NumberedListPlugin
TaskListPlugin
ListItemPlugin
ListItemContentPlugin
validLiChildrenTypes optional string[]
列表项的有效子节点类型(除了
p
和ul
)。enableResetOnShiftTab optional boolean
是否应该用 Shift+Tab 重置列表缩进级别。
inheritCheckStateOnLineEndBreak optional boolean
是否在行尾插入换行符后继承上方节点的选中状态。仅适用于任务列表。
- 默认:
false
- 默认:
inheritCheckStateOnLineStartBreak optional boolean
是否在行首插入换行符后继承下方节点的选中状态。仅适用于任务列表。
- 默认:
false
- 默认:
BulletedListPlugin
用于无序(项目符号)列表的插件。
NumberedListPlugin
用于有序(编号)列表的插件。
TaskListPlugin
用于带复选框的任务列表的插件。
ListItemPlugin
用于列表项的插件。
ListItemContentPlugin
用于列表项内容的插件。
转换
tf.ul.toggle()
切换项目符号列表(ul)。
示例快捷键:Mod+Alt+5
tf.ol.toggle()
切换编号列表(ol)。
示例快捷键:Mod+Alt+6
tf.taskList.toggle()
切换带复选框的任务列表。
示例快捷键:Mod+Alt+7
API
getHighestEmptyList
查找可以删除的最高端列表。列表的路径应该与 diffListPath
不同。如果最高端列表有 2 个或更多项目,则返回 liPath
。它会向上遍历父列表,直到:
- 列表的项目少于 2 个
- 其路径不等于
diffListPath
getListItemEntry
返回给定路径的最近 li
和 ul
/ol
包装节点条目(默认 = 选择
)。
getListRoot
向上搜索根列表元素。
getListTypes
获取支持的列表类型数组。
getTaskListProps
根据提供的类型返回任务列表项的属性。
moveListSiblingsAfterCursor
将光标后的列表兄弟项移动到指定路径。
removeFirstListItem
如果未嵌套且不是第一个子项,则删除第一个列表项。
removeListItem
删除列表项,如果有子列表则移动到父级。
someList
检查选择是否在特定类型的列表内。
unindentListItems
减少列表项的缩进级别。
unwrapList
移除选中项的列表格式。
Hooks
useListToolbarButton
列表工具栏按钮的行为钩子。
useTodoListElementState
管理任务列表项状态的钩子。
useTodoListElement
获取任务列表项复选框属性的钩子。
On This Page
功能套件使用安装添加套件手动使用安装添加插件配置插件添加工具栏按钮转换为工具栏按钮插入工具栏按钮插件ListPlugin
BulletedListPlugin
NumberedListPlugin
TaskListPlugin
ListItemPlugin
ListItemContentPlugin
转换tf.ul.toggle()
tf.ol.toggle()
tf.taskList.toggle()
APIgetHighestEmptyList
getListItemEntry
getListRoot
getListTypes
getTaskListProps
moveListSiblingsAfterCursor
removeFirstListItem
removeListItem
someList
unindentListItems
unwrapList
HooksuseListToolbarButton
useTodoListElementState
useTodoListElement