Guest User

Untitled

a guest
Nov 13th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.36 KB | None | 0 0
  1. class Todo {
  2. constructor() {
  3. let self = this;
  4.  
  5. this.list = document.querySelector('.list-items');
  6. this.render();
  7.  
  8. document.querySelector('.btn-add-item').addEventListener('click', this.create.bind(this));
  9.  
  10. document.addEventListener('click', event => {
  11. if (event.target.classList.contains('btn-delete')) {
  12. self.remove(event);
  13. }
  14. });
  15. }
  16.  
  17. // step to render edit form
  18. renderEditForm(event) {
  19. let id = event.target.getAttribute('data-id');
  20.  
  21. document.querySelector('.edit-popup').classList.remove('hide');
  22. document.querySelector('.edit-popup').classList.add('show');
  23. document.querySelector('.btn-update').setAttribute('data-id', id);
  24.  
  25. mockData.forEach(item => {
  26. if (item.id === id) {
  27. document.querySelector('.edit-item').value = item.title;
  28. }
  29. });
  30. }
  31.  
  32. render() {
  33. this.list.innerHTML = '';
  34.  
  35. mockData.forEach(item => {
  36. this.createDomElements(item.id);
  37. this.li.insertAdjacentHTML('afterbegin', item.title);
  38.  
  39. if (item.done) {
  40. this.li.classList.add('done');
  41. }
  42.  
  43. this.list.appendChild(this.li);
  44. });
  45. }
  46.  
  47. createDomElements(id) {
  48. this.li = document.createElement('li');
  49. this.edit = document.createElement('button');
  50. this.delete = document.createElement('button');
  51. this.complete = document.createElement('button');
  52.  
  53. this.edit.classList.add('btn-edit');
  54. this.delete.classList.add('btn-delete');
  55. this.complete.classList.add('btn-complete');
  56.  
  57. this.delete.setAttribute('data-id', id);
  58. this.edit.setAttribute('data-id', id);
  59. this.complete.setAttribute('data-id', id);
  60.  
  61. this.edit.innerHTML = 'Edit';
  62. this.delete.innerHTML = 'Delete';
  63. this.complete.innerHTML = 'Complete';
  64.  
  65. this.li.appendChild(this.delete);
  66. this.li.appendChild(this.edit);
  67. this.li.appendChild(this.complete);
  68. }
  69.  
  70. create() {
  71. let todoItem = document.querySelector('.item').value;
  72.  
  73. let newItem = {
  74. id: Date.now().toString(),
  75. title: todoItem,
  76. done: false,
  77. date: new Date()
  78. };
  79.  
  80. mockData.push(newItem);
  81.  
  82. document.querySelector('.item').value = '';
  83. this.render();
  84. }
  85.  
  86. remove(event) {
  87. let id = event.target.getAttribute('data-id');
  88.  
  89. mockData = mockData.filter(item => {
  90. if (item.id !== id) {
  91. return item;
  92. }
  93. });
  94.  
  95. this.render();
  96. }
  97. }
  98.  
  99. export default Todo;
Add Comment
Please, Sign In to add comment