enh: task list rich text input
This commit is contained in:
33
src/app.css
33
src/app.css
@@ -330,6 +330,39 @@ input[type='number'] {
|
||||
@apply line-clamp-1 absolute;
|
||||
}
|
||||
|
||||
.tiptap ul[data-type='taskList'] {
|
||||
list-style: none;
|
||||
margin-left: 0;
|
||||
padding: 0;
|
||||
|
||||
li {
|
||||
align-items: center;
|
||||
|
||||
display: flex;
|
||||
|
||||
> label {
|
||||
flex: 0 0 auto;
|
||||
margin-right: 0.5rem;
|
||||
user-select: none;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
> div {
|
||||
flex: 1 1 auto;
|
||||
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
input[type='checkbox'] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
ul[data-type='taskList'] {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
.ProseMirror p.is-editor-empty:first-child::before {
|
||||
color: #757575;
|
||||
|
||||
@@ -11,6 +11,18 @@
|
||||
// Use turndown-plugin-gfm for proper GFM table support
|
||||
turndownService.use(gfm);
|
||||
|
||||
turndownService.addRule('taskListItems', {
|
||||
filter: (node) =>
|
||||
node.nodeName === 'LI' &&
|
||||
(node.getAttribute('data-checked') === 'true' ||
|
||||
node.getAttribute('data-checked') === 'false'),
|
||||
replacement: function (content, node) {
|
||||
const checked = node.getAttribute('data-checked') === 'true';
|
||||
content = content.replace(/^\s+/, '');
|
||||
return `- [${checked ? 'x' : ' '}] ${content}\n`;
|
||||
}
|
||||
});
|
||||
|
||||
import { onMount, onDestroy, tick } from 'svelte';
|
||||
import { createEventDispatcher } from 'svelte';
|
||||
|
||||
@@ -27,6 +39,9 @@
|
||||
import TableHeader from '@tiptap/extension-table-header';
|
||||
import TableCell from '@tiptap/extension-table-cell';
|
||||
|
||||
import TaskItem from '@tiptap/extension-task-item';
|
||||
import TaskList from '@tiptap/extension-task-list';
|
||||
|
||||
import CodeBlockLowlight from '@tiptap/extension-code-block-lowlight';
|
||||
import Placeholder from '@tiptap/extension-placeholder';
|
||||
import StarterKit from '@tiptap/starter-kit';
|
||||
@@ -437,6 +452,10 @@
|
||||
TableRow,
|
||||
TableHeader,
|
||||
TableCell,
|
||||
TaskList,
|
||||
TaskItem.configure({
|
||||
nested: true
|
||||
}),
|
||||
...(autocomplete
|
||||
? [
|
||||
AIAutocompletion.configure({
|
||||
@@ -464,6 +483,8 @@
|
||||
|
||||
const htmlValue = editor.getHTML();
|
||||
const jsonValue = editor.getJSON();
|
||||
|
||||
console.log(htmlValue, jsonValue);
|
||||
let mdValue = turndownService
|
||||
.turndown(
|
||||
htmlValue
|
||||
|
||||
Reference in New Issue
Block a user