
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
quill-table-better
Advanced tools
A module that enhances the table functionality of Quill.
quill-table-better Codepen Demo(JS)
quill-table-better Codesandbox Demo(React)
quill-table-better Codesandbox Demo(Vue)
quill-table-better Codesandbox Demo(Angular)
quill-table-better Codesandbox Demo(Next)
quill.js >= v2.0.0
Note:
setContentscauses the table to not display properly, replace withupdateContents.
The method is as follows (Used when initializing data):
const delta = quill.clipboard.convert({ html });
const [range] = quill.selection.getRange();
quill.updateContents(delta, Quill.sources.USER);
quill.setSelection(
delta.length() - (range?.length || 0),
Quill.sources.SILENT
);
quill.scrollSelectionIntoView();
npm
import Quill from 'quill';
import QuillTableBetter from 'quill-table-better';
import 'quill/dist/quill.snow.css';
import 'quill-table-better/dist/quill-table-better.css'
Quill.register({
'modules/table-better': QuillTableBetter
}, true);
const toolbarOptions = [
['bold', 'italic', 'underline', 'strike'],
['table-better']
];
const options = {
theme: 'snow',
modules: {
table: false,
toolbar: toolbarOptions,
'table-better': {
language: 'en_US',
menus: ['column', 'row', 'merge', 'table', 'cell', 'wrap', 'copy', 'delete'],
toolbarTable: true
},
keyboard: {
bindings: QuillTableBetter.keyboardBindings
}
}
};
const quill = new Quill('#root', options);
cdn
<link href="https://cdn.jsdelivr.net/npm/quill@2/dist/quill.snow.css" rel="stylesheet" />
<link href="https://cdn.jsdelivr.net/npm/quill-table-better@1/dist/quill-table-better.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/quill@2/dist/quill.js"></script>
<script src="https://cdn.jsdelivr.net/npm/quill-table-better@1/dist/quill-table-better.js"></script>
<div id="root"></div>
<script>
Quill.register({
'modules/table-better': QuillTableBetter
}, true);
const toolbarOptions = [
['bold', 'italic', 'underline', 'strike'],
['table-better']
];
const options = {
theme: 'snow',
modules: {
table: false,
toolbar: toolbarOptions,
'table-better': {
language: 'en_US',
menus: ['column', 'row', 'merge', 'table', 'cell', 'wrap', 'copy', 'delete'],
toolbarTable: true
},
keyboard: {
bindings: QuillTableBetter.keyboardBindings
}
}
};
const quill = new Quill('#root', options);
</script>
The language parameter has two types:
en_US| Language | Code |
|---|---|
| Chinese | zh_CN |
| Chinese(Taiwan) | zh_TW |
| English | en_US |
| French | fr_FR |
| Polish | pl_PL |
| German | de_DE |
| Russian | ru_RU |
| Turkish | tr_TR |
| Portuguese | pt_PT |
| Japanese | ja_JP |
| Brazilian Portuguese | pt_BR |
| Czech | cs_CZ |
| Danish | da_DK |
| Norwegian Bokmål | nb_NO |
| Italian | it_IT |
| Swedish | sv_SE |
'en_UK', content: en_US } (For content, please refer to en_US)menus are used to configure the action bar, and those not in the array are not displayed.
Empty array or no configuration default all display (Except for copy).
The functions of the operation bar are as follows:
In addition, the menus supports customization:
'table-better': {
menus: [
{ name: 'column', icon: '<span>column</span>' },
{ name: 'row', icon: '<svg></svg>' },
'merge',
'table',
'cell',
'wrap',
'copy',
'delete'
]
}
toolbarTable is used to add a button to insert a table on the toolbar (true or false).
And table-better needs to be added to toolbarOptions, for example:
const toolbarOptions = [
['bold', 'italic', 'underline', 'strike'],
['table-better']
];
toolbarButtons is used when focusing on the table, you can specify which buttons to disable and which not.
whiteList supports simultaneous operations on multiple cells, default WHITE_LIST.
Note: The configured
whiteListis preferably a subset ofWHITE_LIST, other formats may have problems.
singleWhiteList only supports formatting for a single cell, default SINGLE_WHITE_LIST.
Note:
singleWhiteListmust be a subset ofwhiteList.
toolbarButtons: {
whiteList: ['link', 'image'],
singleWhiteList: ['link', 'image']
};
'table-better': {
language: 'en_US',
menus: ['column', 'row', 'merge', 'table', 'cell', 'wrap', 'copy', 'delete'],
toolbarButtons: {
whiteList: ['link', 'image'],
singleWhiteList: ['link', 'image']
},
toolbarTable: true
}
The table supports the following formats and supports simultaneous operations on multiple cells:
const WHITE_LIST = [
'bold',
'italic',
'underline',
'strike',
'size',
'color',
'background',
'font',
'list',
'header',
'align',
'link',
'image'
];
Only supports formatting for a single cell.
const SINGLE_WHITE_LIST = ['link', 'image'];
Ctrl + Backspace or Ctrl + Delete)const module = quill.getModule('table-better');
module.deleteTable();
When you need to submit data(html or delta) to the server, you should use this function, for example:
// Delta
module.hideTools();
const delta = quill.getContents();
axios.post(url, delta);
// HTML
// deleteTableTemporary(source = Quill.sources.API)
module.deleteTableTemporary();
const html = quill.getSemanticHTML();
axios.post(url, html);
Function return [table, row, cell, offset]
module.getTable();
module.insertTable(3, 3);
npm i quill-table-better
<link href="https://cdn.jsdelivr.net/npm/quill-table-better@1/dist/quill-table-better.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/npm/quill-table-better@1/dist/quill-table-better.js"></script>
FAQs
A module that enhances the table functionality of Quill
The npm package quill-table-better receives a total of 13,809 weekly downloads. As such, quill-table-better popularity was classified as popular.
We found that quill-table-better demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.