quill-better-table:赋予quill富⽂本编辑器强⼤的表格编辑功
能!
背景
接触quilljs是因为公司之前的富⽂本编辑器已经⽆法满⾜更多的内容⽣产场景,于是计划研发⼀款更加定制化的编辑器。经过⼀番调研,被quilljs强⼤的可扩展性,和它独有的parchment,delta的设计所吸引,选定了它(当然2W+的star也是⼀个重要原因)。但是“表格编辑功能”⼀直困扰着这个优秀的富⽂本编辑器,具体可从quill的第117号issue: 了解⼀⼆。
按照quill作者的计划,quilljs 2.0将会⽀持表格编辑,但是功能⾮常有限,⽐如:表格中⽆法换⾏、⽆法合并/拆分单元格等。于是决定努⼒为quilljs补充这⼀功能缺失。
quill-better-table
基于quilljs v2.0.0-dev.x版本的表格模块,⽀持多种常⽤功能,旨在改善quill编辑器在表格编辑⽅⾯的弱势。
git仓库:
在线demo:
功能特性
⽀持表格单元格内(enter键)换⾏;
通过拖拽拖选多个单元格(表格区域),有蓝⾊框⾼亮提⽰;
使⽤右键菜单在所选表格区域的左/右添加新列;
使⽤右键菜单在所选表格区域的上/下添加新⾏;
删除位于拖选区域内的⾏/列;
批量合并/拆分单元格;
拖拽表格顶部的列控制⼯具,可改变相应表格列的宽度。
使⽤须知
quill-better-table 基于quilljs 2.0版本实现,quilljs 2.0版⽬前并未发布稳定版,须谨慎选择使⽤(O(∩_∩)O~我已经把2.0⽤到⽣产环quill-better-table
境了,hold住)。
由于我使⽤webpack externals指定外部引⼊依赖的⽅式打包,所以请务必将Quill对象暴露到window对象上,或者通过script标签的⽅式引⼊quilljs,以便quill-better-table获取依赖。
安装
npm install quill-better-table
复制代码
⽤法
1. 加载外部依赖:
<script src="cdnjs.cloudflare/ajax/libs/quill/2.0.0-dev.3/quill.min.js" type="text/javascript"></script>
复制代码
<link href="cdnjs.cloudflare/ajax/libs/quill/2.0.0-dev.3/quill.snow.min.css" rel="stylesheet"
>
<link href="unpkg/quill-better-table@1.1.0/dist/quill-better-table.css" rel="stylesheet">
复制代码
2. ES6具体⽤法:
import QuillBetterTable from 'quill-better-table'
'modules/better-table': QuillBetterTable
}, true)
const quill = new Quill('#editor-wrapper', {
theme: 'snow',
modules: {
table: false, // disable table module
'better-table': {
operationMenu: {
items: {
unmergeCells: {
text: 'Another unmerge cells name'
}
}
}
},优秀的富文本编辑器
keyboard: {
bindings: QuillBetterTable.keyboardBindings
}
}
})
document.body.querySelector('#insert-table')
.onclick = () => {
let tableModule = Module('better-table')
tableModule.insertTable(3, 3)
}
}
复制代码
模块API
⾸先,可以使⽤Module(module_name)获取quill-better-table:
let tableModule = Module('better-table')
复制代码
发表评论