summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/task_list.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/task_list.js')
-rw-r--r--app/assets/javascripts/task_list.js21
1 files changed, 19 insertions, 2 deletions
diff --git a/app/assets/javascripts/task_list.js b/app/assets/javascripts/task_list.js
index bc8a8e425dd..3b2210b9ef2 100644
--- a/app/assets/javascripts/task_list.js
+++ b/app/assets/javascripts/task_list.js
@@ -40,20 +40,37 @@ export default class TaskList {
taskListField.value = taskListField.dataset.value;
});
- $(this.taskListContainerSelector).taskList('enable');
- $(document).on('tasklist:changed', this.taskListContainerSelector, this.updateHandler);
+ this.enable();
}
getTaskListTarget(e) {
return e && e.currentTarget ? $(e.currentTarget) : $(this.taskListContainerSelector);
}
+ // Disable any task items that don't have a data-sourcepos attribute, on the
+ // assumption that if it doesn't then it wasn't generated from our markdown parser.
+ // This covers the case of markdown not being able to handle task lists inside
+ // markdown tables. It also includes hand coded HTML lists.
+ disableNonMarkdownTaskListItems(e) {
+ this.getTaskListTarget(e)
+ .find('.task-list-item')
+ .not('[data-sourcepos]')
+ .find('.task-list-item-checkbox')
+ .prop('disabled', true);
+ }
+
disableTaskListItems(e) {
this.getTaskListTarget(e).taskList('disable');
}
enableTaskListItems(e) {
this.getTaskListTarget(e).taskList('enable');
+ this.disableNonMarkdownTaskListItems(e);
+ }
+
+ enable() {
+ this.enableTaskListItems();
+ $(document).on('tasklist:changed', this.taskListContainerSelector, this.updateHandler);
}
disable() {