Skip to content

Commit b6d96dd

Browse files
ComputelessComputerclaude
andcommitted
Fix task item collapse/expand toggle not responding to clicks
Move the toggle button from inside <label> to a sibling of <label> so WebKit's native label click-forwarding no longer swallows the button's click events. Update CSS selectors and positioning accordingly. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 8cb292a commit b6d96dd

2 files changed

Lines changed: 11 additions & 10 deletions

File tree

apps/desktop/src/components/editor/Editor.css

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
.tiptap ul[data-type="taskList"] li {
2525
min-height: var(--editor-line-height);
26+
position: relative;
2627
}
2728

2829
.tiptap ul[data-type="taskList"] li > label {
@@ -34,9 +35,9 @@
3435
display: none;
3536
}
3637

37-
.tiptap ul[data-type="taskList"] .task-item-toggle {
38+
.tiptap ul[data-type="taskList"] li > .task-item-toggle {
3839
position: absolute;
39-
right: calc(100% + 2px);
40+
left: -18px;
4041
top: 50%;
4142
width: 16px;
4243
height: 16px;
@@ -53,32 +54,32 @@
5354
transform: translateY(-50%);
5455
}
5556

56-
.tiptap ul[data-type="taskList"] .task-item-toggle svg {
57+
.tiptap ul[data-type="taskList"] li > .task-item-toggle svg {
5758
display: block;
5859
width: 16px;
5960
height: 16px;
6061
transition: transform 120ms ease;
6162
}
6263

63-
.tiptap ul[data-type="taskList"] li.task-item--has-children > label .task-item-toggle {
64+
.tiptap ul[data-type="taskList"] li.task-item--has-children > .task-item-toggle {
6465
pointer-events: auto;
6566
}
6667

6768
.tiptap ul[data-type="taskList"] li[data-type="taskItem"] ul[data-type="taskList"] .task-item-toggle {
6869
display: none;
6970
}
7071

71-
.tiptap ul[data-type="taskList"] li.task-item--has-children:hover > label .task-item-toggle,
72-
.tiptap ul[data-type="taskList"] li.task-item--has-children:focus-within > label .task-item-toggle,
73-
.tiptap ul[data-type="taskList"] li.task-item--collapsed > label .task-item-toggle {
72+
.tiptap ul[data-type="taskList"] li.task-item--has-children:hover > .task-item-toggle,
73+
.tiptap ul[data-type="taskList"] li.task-item--has-children:focus-within > .task-item-toggle,
74+
.tiptap ul[data-type="taskList"] li.task-item--collapsed > .task-item-toggle {
7475
opacity: 1;
7576
}
7677

77-
.tiptap ul[data-type="taskList"] li.task-item--has-children > label .task-item-toggle:hover {
78+
.tiptap ul[data-type="taskList"] li.task-item--has-children > .task-item-toggle:hover {
7879
color: #4b5563;
7980
}
8081

81-
.tiptap ul[data-type="taskList"] li.task-item--has-children:not(.task-item--collapsed) > label .task-item-toggle svg {
82+
.tiptap ul[data-type="taskList"] li.task-item--has-children:not(.task-item--collapsed) > .task-item-toggle svg {
8283
transform: rotate(90deg);
8384
}
8485

apps/desktop/src/components/editor/extensions/task-item/TaskItemNode.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,9 +224,9 @@ export const CustomTaskItem = TaskItem.extend({
224224

225225
listItem.dataset.checked = String(node.attrs.checked,);
226226
label.contentEditable = "false";
227-
label.appendChild(toggle,);
228227
label.appendChild(checkbox,);
229228
label.appendChild(checkboxStyler,);
229+
listItem.appendChild(toggle,);
230230
listItem.appendChild(label,);
231231
listItem.appendChild(content,);
232232

0 commit comments

Comments
 (0)