diff options
Diffstat (limited to 'app/assets/javascripts/task_list.js')
-rw-r--r-- | app/assets/javascripts/task_list.js | 21 |
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() { |