-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
123 lines (115 loc) · 3.74 KB
/
app.js
File metadata and controls
123 lines (115 loc) · 3.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
document.addEventListener('DOMContentLoaded', () => {
const form = document.getElementById("registrar");
const input = form.querySelector("input");
const mainDiv = document.querySelector('.main');
const ul = document.getElementById("invitedList");
const div = document.createElement('div');
const filterLabel = document.createElement('label');
const filterCheckbox = document.createElement('input');
filterLabel.innerHTML = "Hide those who haven't responded";
filterCheckbox.type = "Checkbox";
div.appendChild(filterLabel);
div.appendChild(filterCheckbox);
mainDiv.insertBefore(div, ul);
filterCheckbox.addEventListener('change', (e) => {
const isChecked = e.target.checked;
const lis = ul.children;
if(isChecked){
for (let i = 0; i < lis.length; i++){
let li = lis[i];
if(li.className === "responded"){
li.style.display = '';
}else {
li.style.display = 'none';
}
}
} else {
for (let i = 0; i < lis.length; i++){
let li = lis[i];
li.style.display = '';
}
}
});
// This code is to create LI elements
const createLI = (text) => {
const createElement = (elementName, property, value) => {
const element = document.createElement(elementName);
element[property] = value;
return element;
}
const appendTOLI = (elementName, property, value) => {
const element = createElement(elementName, property, value);
li.appendChild(element);
return li;
}
const li = document.createElement('li');
appendTOLI('span', 'innerHTML', text);
const label = createElement('label', 'innerHTML', 'Confirmed');
const checkbox = createElement('input', 'type', 'checkbox');
label.appendChild(checkbox);
li.appendChild(label);
appendTOLI('button', 'innerHTML', 'Edit');
appendTOLI('button', 'innerHTML', 'Remove');
return li;
}
// Event handler for submit button
form.addEventListener('submit', (e) => {
e.preventDefault();
if(input.value === "" || input.value === " "){
alert("Please type a name of a person!!!");
ul.removeChild(li);
}
const text = input.value;
input.value = " ";
const li = createLI(text);
ul.appendChild(li);
});
//Event handler for checkbox
ul.addEventListener('change', (e) => {
const checkbox = e.target;
const checked = checkbox.checked;
const li = checkbox.parentNode.parentNode;
if(checked){
li.className = "responded";
} else {
li.className = " ";
}
})
// Event handler for remove, edit and save button. And code for edit state to save state and vice versa
ul.addEventListener('click', (e) => {
if(e.target.tagName == "BUTTON"){
const button = e.target;
const li = button.parentNode;
const ul = li.parentNode;
const nameActions = {
remove: () => {
ul.removeChild(li);
},
edit: () => {
const span = li.firstChild;
const input = document.createElement('input');
input.value = span.innerHTML;
li.insertBefore(input, span);
input.type = 'text';
li.removeChild(span);
button.innerHTML = "Save";
},
save: () => {
button.innerHTML = "Edit";
const input = li.firstChild;
const span = document.createElement('span');
span.innerHTML = input.value;
li.insertBefore(span, input);
li.removeChild(input);
}
};
if (button.innerHTML == "Remove"){
nameActions.remove();
} else if (button.innerHTML == "Edit"){
nameActions.edit();
} else if (button.innerHTML == "Save"){
nameActions.save();
}
}
});
});