Guest User

Untitled

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