diff --git a/packages/editor/src/extensions/task-list/component.tsx b/packages/editor/src/extensions/task-list/component.tsx index 390078a2e..b9a7ee798 100644 --- a/packages/editor/src/extensions/task-list/component.tsx +++ b/packages/editor/src/extensions/task-list/component.tsx @@ -111,12 +111,14 @@ export function TaskListComponent( if (!node) return false; const toggleState = !node.attrs.readonly; tr.setNodeMarkup(tr.mapping.map(parentPos), null, { + ...node.attrs, readonly: toggleState }); node.descendants((node, pos) => { if (node.type.name === TaskList.name) { const actualPos = pos + parentPos + 1; tr.setNodeMarkup(tr.mapping.map(actualPos), null, { + ...node.attrs, readonly: toggleState }); } diff --git a/packages/editor/src/extensions/task-list/task-list.ts b/packages/editor/src/extensions/task-list/task-list.ts index 9c61f3f73..9a00efa38 100644 --- a/packages/editor/src/extensions/task-list/task-list.ts +++ b/packages/editor/src/extensions/task-list/task-list.ts @@ -238,6 +238,7 @@ export const TaskListNode = TaskList.extend({ tr.doc.descendants((node, pos) => { if (node.type.name === TaskList.name) { tr.setNodeMarkup(pos, undefined, { + ...node.attrs, stats: countCheckedItems(node) }); return false; @@ -304,6 +305,7 @@ export const TaskListNode = TaskList.extend({ changeCount++; tr.setNodeMarkup(tr.mapping.map(parentTaskItem.pos), undefined, { + ...parentTaskItem.node.attrs, checked: allChecked }); childPos = parentTaskItem.pos; @@ -318,7 +320,10 @@ export const TaskListNode = TaskList.extend({ roots.add(root); const stats = countCheckedItems(root.node); - tr.setNodeMarkup(root.pos, undefined, { stats }); + tr.setNodeMarkup(root.pos, undefined, { + ...root.node.attrs, + stats + }); changeCount++; } }