checklists.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. BlazeComponent.extendComponent({
  2. addChecklist(event) {
  3. event.preventDefault();
  4. const textarea = this.find('textarea.js-add-checklist-item');
  5. const title = textarea.value.trim();
  6. const cardId = this.currentData().cardId;
  7. Checklists.insert({
  8. cardId,
  9. title,
  10. });
  11. },
  12. addChecklistItem(event) {
  13. event.preventDefault();
  14. const textarea = this.find('textarea.js-add-checklist-item');
  15. const title = textarea.value.trim();
  16. const checklist = this.currentData().checklist;
  17. checklist.addItem(title);
  18. },
  19. editChecklist(event) {
  20. event.preventDefault();
  21. const textarea = this.find('textarea.js-edit-checklist-item');
  22. const title = textarea.value.trim();
  23. const checklist = this.currentData().checklist;
  24. checklist.setTitle(title);
  25. },
  26. editChecklistItem(event) {
  27. event.preventDefault();
  28. const textarea = this.find('textarea.js-edit-checklist-item');
  29. const title = textarea.value.trim();
  30. const itemId = this.currentData().item._id;
  31. const checklist = this.currentData().checklist;
  32. checklist.editItem(itemId, title);
  33. },
  34. deleteItem() {
  35. const checklist = this.currentData().checklist;
  36. const item = this.currentData().item;
  37. if (checklist && item && item._id) {
  38. checklist.removeItem(item._id);
  39. }
  40. },
  41. deleteChecklist() {
  42. const checklist = this.currentData().checklist;
  43. if (checklist && checklist._id) {
  44. Checklists.remove(checklist._id);
  45. }
  46. },
  47. pressKey(event) {
  48. //If user press enter key inside a form, submit it, so user doesn't have to leave keyboard to submit a form.
  49. if (event.keyCode === 13) {
  50. event.preventDefault();
  51. const $form = $(event.currentTarget).closest('form');
  52. $form.find('button[type=submit]').click();
  53. }
  54. },
  55. events() {
  56. return [{
  57. 'submit .js-add-checklist': this.addChecklist,
  58. 'submit .js-edit-checklist-title': this.editChecklist,
  59. 'submit .js-add-checklist-item': this.addChecklistItem,
  60. 'submit .js-edit-checklist-item': this.editChecklistItem,
  61. 'click .js-delete-checklist-item': this.deleteItem,
  62. 'click .js-delete-checklist': this.deleteChecklist,
  63. keydown: this.pressKey,
  64. }];
  65. },
  66. }).register('checklists');
  67. BlazeComponent.extendComponent({
  68. toggleItem() {
  69. const checklist = this.currentData().checklist;
  70. const item = this.currentData().item;
  71. if (checklist && item && item._id) {
  72. checklist.toggleItem(item._id);
  73. }
  74. },
  75. events() {
  76. return [{
  77. 'click .item .check-box': this.toggleItem,
  78. }];
  79. },
  80. }).register('itemDetail');