ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â ð shadcn/directory/udecode/plate/(plugins)/(elements)/list-classic.cn â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â
title: ç»å žå衚 docs:
æ€ç»å žå衚æä»¶ - å ·æäž¥æ Œåµå¥è§åçäŒ ç» HTML è§èå衚ïŒ
ul/ol > liïŒå衚æä»¶ - çµæŽ»çåºäºçŒ©è¿çå衚ïŒ
æ ¹æ®æšç鿱鿩ïŒ
笊å HTML çå衚ïŒ
ul/ol > li ç»æå衚类åïŒ
ææŸïŒ
å¿«æ·é®ïŒ
-ã*ã1.ã[ ]ïŒå建å衚éå¶ïŒäœ¿çš å衚æä»¶ è·åè¿äºåèœïŒïŒ
å¯¹äºæŽçµæŽ»çã类䌌 Word çæ¹æ³ïŒè¯·åé å衚æä»¶ã
</PackageInfo>æ·»å å衚åèœçæå¿«æ¹æ³æ¯äœ¿çš 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,
],
});
</Steps>
npm install @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ïŒå®å
嫿æå衚类åïŒé¡¹ç®ç¬Šå·ãçŒå·åä»»å¡å衚ïŒã
ListPluginBulletedListPluginçšäºæ åºïŒé¡¹ç®ç¬Šå·ïŒå衚çæä»¶ã
NumberedListPluginçšäºæåºïŒçŒå·ïŒå衚çæä»¶ã
TaskListPluginçšäºåžŠå€éæ¡çä»»å¡å衚çæä»¶ã
ListItemPluginçšäºå衚项çæä»¶ã
ListItemContentPluginçšäºå衚项å 容çæä»¶ã
tf.ul.toggle()忢项ç®ç¬Šå·å衚ïŒulïŒã
瀺äŸå¿«æ·é®ïŒMod+Alt+5
tf.ol.toggle()忢çŒå·å衚ïŒolïŒã
瀺äŸå¿«æ·é®ïŒMod+Alt+6
tf.taskList.toggle()åæ¢åžŠå€éæ¡çä»»å¡å衚ã
瀺äŸå¿«æ·é®ïŒMod+Alt+7
getHighestEmptyListæ¥æŸå¯ä»¥å é€çæé«ç«¯å衚ãå衚çè·¯åŸåºè¯¥äž diffListPath äžåãåŠææé«ç«¯å衚æ 2 äžªææŽå€é¡¹ç®ïŒåè¿å liPathãå®äŒåäžéåç¶å衚ïŒçŽå°ïŒ
diffListPathgetListItemEntryè¿åç»å®è·¯åŸçæè¿ li å ul/ol å
è£
èç¹æ¡ç®ïŒé»è®€ = éæ©ïŒã
getListRootåäžæçŽ¢æ ¹å衚å çŽ ã
<API name="getListRoot"> <APIParameters> <APIItem name="at" type="Path | TRange | Point | null" optional> åŒå§æçŽ¢çäœçœ®ã - **é»è®€ïŒ** `editor.selection` </APIItem> </APIParameters> <APIReturns type="ElementEntry | undefined"> æ ¹å衚å çŽ æ¡ç®ã </APIReturns> </API>getListTypesè·åæ¯æçåè¡šç±»åæ°ç»ã
<API name="getListTypes"> <APIReturns type="string[]"> æ¯æçåè¡šç±»åæ°ç»ã </APIReturns> </API>getTaskListPropsæ ¹æ®æäŸçç±»åè¿åä»»å¡å衚项ç屿§ã
<API name="getTaskListProps"> <APIParameters> <APIItem name="type" type="string"> èŠæ£æ¥çå衚类åã </APIItem> <APIItem name="options" type="object" optional> ä»»å¡å衚é项ã </APIItem> <APISubList> <APISubListItem parent="options" name="checked" type="boolean"> ä»»å¡é¡¹æ¯åŠåºè¢«éäžã - **é»è®€ïŒ** `false` </APISubListItem> </APISubList> </APIParameters> <APIReturns type="object | undefined"> åŠæç±»åæ¯ä»»å¡å衚ïŒåè¿å垊æ `checked` 屿§ç对象ïŒåŠåè¿å `undefined`ã </APIReturns> </API>moveListSiblingsAfterCursorå°å æ åçå衚å åŒé¡¹ç§»åšå°æå®è·¯åŸã
<API name="moveListSiblingsAfterCursor"> <APIOptions type="options"> <APIItem name="at" type="Path"> å æ äœçœ®è·¯åŸã </APIItem> <APIItem name="to" type="Path"> ç®æ è·¯åŸã </APIItem> </APIOptions> <APIReturns type="number"> ç§»åšçå åŒé¡¹æ°éã </APIReturns> </API>removeFirstListItemåŠææªåµå¥äžäžæ¯ç¬¬äžäžªå项ïŒåå é€ç¬¬äžäžªå衚项ã
<API name="removeFirstListItem"> <APIOptions type="options"> <APIItem name="list" type="ElementEntry"> å å«é¡¹çå衚æ¡ç®ã </APIItem> <APIItem name="listItem" type="ElementEntry"> èŠå é€çå衚项ã </APIItem> </APIOptions> <APIReturns type="boolean"> 项æ¯åŠè¢«å é€ã </APIReturns> </API>removeListItemå é€å衚项ïŒåŠææåå衚åç§»åšå°ç¶çº§ã
<API name="removeListItem"> <APIOptions type="RemoveListItemOptions"> <APIItem name="list" type="ElementEntry"> å å«é¡¹çå衚æ¡ç®ã </APIItem> <APIItem name="listItem" type="ElementEntry"> èŠå é€çå衚项ã </APIItem> <APIItem name="reverse" type="boolean" optional> æ¯åŠå蜬åå衚项ã - **é»è®€ïŒ** `true` </APIItem> </APIOptions> <APIReturns type="boolean"> 项æ¯åŠè¢«å é€ã </APIReturns> </API>someListæ£æ¥éæ©æ¯åŠåšç¹å®ç±»åçå衚å ã
<API name="someList"> <APIParameters> <APIItem name="type" type="string"> èŠæ£æ¥çå衚类åã </APIItem> </APIParameters> <APIReturns type="boolean"> éæ©æ¯åŠåšæå®çå衚类åäžã </APIReturns> </API>unindentListItemsåå°å衚项ç猩è¿çº§å«ã
<API name="unindentListItems"> <APIOptions type="UnindentListItemsOptions"> åæ¶çŒ©è¿çç®æ è·¯åŸã </APIOptions> </API>unwrapListç§»é€éäžé¡¹çåè¡šæ ŒåŒã
<API name="unwrapList"> <APIOptions type="options"> <APIItem name="at" type="Path" optional> åæ¶å è£ çç®æ è·¯åŸã </APIItem> </APIOptions> </API>useListToolbarButtonåè¡šå·¥å ·æ æé®çè¡äžºé©åã
<API name="useListToolbarButton"> <APIState> <APIItem name="pressed" type="boolean"> æé®æäžç¶æã </APIItem> <APIItem name="nodeType" type="string"> å衚èç¹ç±»åã - **é»è®€ïŒ** `BulletedListPlugin.key` </APIItem> </APIState> <APIReturns type="object"> <APIItem name="props" type="object"> å·¥å ·æ æé®ç屿§ã </APIItem> <APISubList> <APISubListItem parent="props" name="pressed" type="boolean"> æé®æäžç¶æã </APISubListItem> <APISubListItem parent="props" name="onClick" type="function"> 忢å衚并èçŠçŒèŸåšçå€çåœæ°ã </APISubListItem> </APISubList> </APIReturns> </API>useTodoListElementState管çä»»å¡åè¡šé¡¹ç¶æçé©åã
<API name="useTodoListElementState"> <APIState> <APIItem name="element" type="TTodoListItemElement"> ä»»å¡å衚项å çŽ ã </APIItem> </APIState> <APIReturns type="object"> <APIItem name="checked" type="boolean"> ä»»å¡é¡¹æ¯åŠè¢«éäžã </APIItem> <APIItem name="readOnly" type="boolean"> çŒèŸåšæ¯åŠå€äºåªè¯»æš¡åŒã </APIItem> <APIItem name="onCheckedChange" type="function"> 忢éäžç¶æçå€çåœæ°ã </APIItem> </APIReturns> </API>useTodoListElementè·åä»»å¡å衚项å€éæ¡å±æ§çé©åã
<API name="useTodoListElement"> <APIState> <APIItem name="checked" type="boolean"> ä»»å¡é¡¹æ¯åŠè¢«éäžã </APIItem> <APIItem name="readOnly" type="boolean"> çŒèŸåšæ¯åŠå€äºåªè¯»æš¡åŒã </APIItem> <APIItem name="onCheckedChange" type="function"> 忢éäžç¶æçå€çåœæ°ã </APIItem> </APIState> <APIReturns type="object"> <APIItem name="checkboxProps" type="object"> èŠæ©å±å°å€éæ¡ç»ä»¶ç屿§ã </APIItem> </APIReturns> </API>â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ