BlazeComponent.extendComponent({ addChecklist(event) { event.preventDefault(); const textarea = this.find('textarea.js-add-checklist-item'); const title = textarea.value.trim(); const cardId = this.currentData().cardId; Checklists.insert({ cardId, title, }); }, addChecklistItem(event) { event.preventDefault(); const textarea = this.find('textarea.js-add-checklist-item'); const title = textarea.value.trim(); const checklist = this.currentData().checklist; checklist.addItem(title); }, editChecklist(event) { event.preventDefault(); const textarea = this.find('textarea.js-edit-checklist-item'); const title = textarea.value.trim(); const checklist = this.currentData().checklist; checklist.setTitle(title); }, canModifyCard() { return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly(); }, editChecklistItem(event) { event.preventDefault(); const textarea = this.find('textarea.js-edit-checklist-item'); const title = textarea.value.trim(); const itemId = this.currentData().item._id; const checklist = this.currentData().checklist; checklist.editItem(itemId, title); }, deleteItem() { const checklist = this.currentData().checklist; const item = this.currentData().item; if (checklist && item && item._id) { checklist.removeItem(item._id); } }, deleteChecklist() { const checklist = this.currentData().checklist; if (checklist && checklist._id) { Checklists.remove(checklist._id); } }, pressKey(event) { //If user press enter key inside a form, submit it, so user doesn't have to leave keyboard to submit a form. if (event.keyCode === 13) { event.preventDefault(); const $form = $(event.currentTarget).closest('form'); $form.find('button[type=submit]').click(); } }, events() { return [{ 'submit .js-add-checklist': this.addChecklist, 'submit .js-edit-checklist-title': this.editChecklist, 'submit .js-add-checklist-item': this.addChecklistItem, 'submit .js-edit-checklist-item': this.editChecklistItem, 'click .js-delete-checklist-item': this.deleteItem, 'click .js-delete-checklist': this.deleteChecklist, keydown: this.pressKey, }]; }, }).register('checklists'); BlazeComponent.extendComponent({ toggleItem() { const checklist = this.currentData().checklist; const item = this.currentData().item; if (checklist && item && item._id) { checklist.toggleItem(item._id); } }, events() { return [{ 'click .item .check-box': this.toggleItem, }]; }, }).register('itemDetail');