diff options
Diffstat (limited to 'app/assets/javascripts/behaviors/markdown/nodes/task_list_item.js')
-rw-r--r-- | app/assets/javascripts/behaviors/markdown/nodes/task_list_item.js | 70 |
1 files changed, 29 insertions, 41 deletions
diff --git a/app/assets/javascripts/behaviors/markdown/nodes/task_list_item.js b/app/assets/javascripts/behaviors/markdown/nodes/task_list_item.js index 56c2b17286d..10ffce9b1b8 100644 --- a/app/assets/javascripts/behaviors/markdown/nodes/task_list_item.js +++ b/app/assets/javascripts/behaviors/markdown/nodes/task_list_item.js @@ -1,50 +1,38 @@ -/* eslint-disable class-methods-use-this */ - -import { Node } from 'tiptap'; import { HIGHER_PARSE_RULE_PRIORITY } from '../constants'; // Transforms generated HTML back to GFM for Banzai::Filter::TaskListFilter -export default class TaskListItem extends Node { - get name() { - return 'task_list_item'; - } - - get schema() { - return { - attrs: { - done: { - default: false, - }, +export default () => ({ + name: 'task_list_item', + schema: { + attrs: { + done: { + default: false, }, - defining: true, - draggable: false, - content: 'paragraph block*', - parseDOM: [ - { - priority: HIGHER_PARSE_RULE_PRIORITY, - tag: 'li.task-list-item', - getAttrs: (el) => { - const checkbox = el.querySelector('input[type=checkbox].task-list-item-checkbox'); - return { done: checkbox && checkbox.checked }; - }, + }, + defining: true, + draggable: false, + content: 'paragraph block*', + parseDOM: [ + { + priority: HIGHER_PARSE_RULE_PRIORITY, + tag: 'li.task-list-item', + getAttrs: (el) => { + const checkbox = el.querySelector('input[type=checkbox].task-list-item-checkbox'); + return { done: checkbox && checkbox.checked }; }, - ], - toDOM(node) { - return [ - 'li', - { class: 'task-list-item' }, - [ - 'input', - { type: 'checkbox', class: 'task-list-item-checkbox', checked: node.attrs.done }, - ], - ['div', { class: 'todo-content' }, 0], - ]; }, - }; - } - + ], + toDOM(node) { + return [ + 'li', + { class: 'task-list-item' }, + ['input', { type: 'checkbox', class: 'task-list-item-checkbox', checked: node.attrs.done }], + ['div', { class: 'todo-content' }, 0], + ]; + }, + }, toMarkdown(state, node) { state.write(`[${node.attrs.done ? 'x' : ' '}] `); state.renderContent(node); - } -} + }, +}); |