Revision 544c6df3
Added by koszko about 2 years ago
html/options_main.js | ||
---|---|---|
32 | 32 |
chbx_component_li_template.removeAttribute("id"); |
33 | 33 |
radio_component_li_template.removeAttribute("id"); |
34 | 34 |
|
35 |
function list_set_scrollbar(list_elem) |
|
36 |
{ |
|
37 |
const op = ((list_elem.children.length === 1 && |
|
38 |
list_elem.children[0].classList.contains("hide")) || |
|
39 |
list_elem.children.length < 1) ? "remove" : "add"; |
|
40 |
list_elem.parentElement.parentElement.classList[op]("always_scrollbar"); |
|
41 |
} |
|
42 |
|
|
35 | 43 |
function item_li_id(prefix, item) |
36 | 44 |
{ |
37 | 45 |
return `li_${prefix}_${item}`; |
... | ... | |
66 | 74 |
continue; |
67 | 75 |
|
68 | 76 |
ul.ul.insertBefore(li, element); |
69 |
return;
|
|
77 |
break;
|
|
70 | 78 |
} |
71 | 79 |
} |
80 |
if (!li.parentElement) |
|
81 |
ul.ul.appendChild(li); |
|
72 | 82 |
|
73 |
ul.ul.appendChild(li);
|
|
83 |
list_set_scrollbar(ul.ul);
|
|
74 | 84 |
} |
75 | 85 |
|
76 | 86 |
const chbx_components_ul = by_id("chbx_components_ul"); |
... | ... | |
98 | 108 |
li.setAttribute("data-prefix", prefix); |
99 | 109 |
li.setAttribute("data-name", name); |
100 | 110 |
|
101 |
let chbx = li.firstElementChild; |
|
111 |
let chbx = li.firstElementChild.firstElementChild;
|
|
102 | 112 |
let span = chbx.nextElementSibling; |
103 | 113 |
|
104 | 114 |
span.textContent = nice_name(prefix, name); |
105 | 115 |
|
106 | 116 |
chbx_components_ul.appendChild(li); |
117 |
list_set_scrollbar(chbx_components_ul); |
|
107 | 118 |
} |
108 | 119 |
|
109 | 120 |
var radio_component_none_li = by_id("radio_component_none_li"); |
... | ... | |
118 | 129 |
li.setAttribute("data-prefix", prefix); |
119 | 130 |
li.setAttribute("data-name", name); |
120 | 131 |
|
121 |
let radio = li.firstElementChild; |
|
132 |
let radio = li.firstElementChild.firstElementChild;
|
|
122 | 133 |
let span = radio.nextElementSibling; |
123 | 134 |
|
124 | 135 |
span.textContent = nice_name(prefix, name); |
125 | 136 |
|
126 |
radio_components_ul.insertBefore(li, radio_component_none_li); |
|
137 |
radio_component_none_li.before(li); |
|
138 |
list_set_scrollbar(radio_components_ul); |
|
127 | 139 |
} |
128 | 140 |
|
129 | 141 |
/* Used to reset edited repo. */ |
... | ... | |
191 | 203 |
const empty_bag_component_li = by_id("empty_bag_component_li"); |
192 | 204 |
var bag_components_ul = by_id("bag_components_ul"); |
193 | 205 |
|
206 |
function remove_bag_component_entry(entry) |
|
207 |
{ |
|
208 |
const list = entry.parentElement; |
|
209 |
entry.remove(); |
|
210 |
list_set_scrollbar(list); |
|
211 |
} |
|
212 |
|
|
194 | 213 |
/* Used to construct and update components list of edited bag. */ |
195 | 214 |
function add_bag_components(components) |
196 | 215 |
{ |
... | ... | |
199 | 218 |
let li = bag_component_li_template.cloneNode(true); |
200 | 219 |
li.setAttribute("data-prefix", prefix); |
201 | 220 |
li.setAttribute("data-name", name); |
221 |
|
|
202 | 222 |
let span = li.firstElementChild; |
203 | 223 |
span.textContent = nice_name(prefix, name); |
204 | 224 |
let remove_but = span.nextElementSibling; |
205 |
remove_but.addEventListener("click", () =>
|
|
206 |
bag_components_ul.removeChild(li));
|
|
225 |
remove_but.addEventListener("click", |
|
226 |
() => remove_bag_component_entry(li));
|
|
207 | 227 |
bag_components_ul.appendChild(li); |
208 | 228 |
} |
209 | 229 |
|
210 | 230 |
bag_components_ul.appendChild(empty_bag_component_li); |
231 |
list_set_scrollbar(bag_components_ul); |
|
211 | 232 |
} |
212 | 233 |
|
213 | 234 |
/* Used to reset edited bag. */ |
... | ... | |
219 | 240 |
let old_components_ul = bag_components_ul; |
220 | 241 |
bag_components_ul = old_components_ul.cloneNode(false); |
221 | 242 |
|
222 |
ul.work_li.insertBefore(bag_components_ul, old_components_ul); |
|
223 |
ul.work_li.removeChild(old_components_ul); |
|
243 |
old_components_ul.replaceWith(bag_components_ul); |
|
224 | 244 |
|
225 | 245 |
add_bag_components(components); |
226 | 246 |
} |
... | ... | |
228 | 248 |
/* Used to get edited bag data for saving. */ |
229 | 249 |
function work_bag_li_data(ul) |
230 | 250 |
{ |
231 |
let components_ul = ul.work_name_input.nextElementSibling; |
|
232 |
let component_li = components_ul.firstElementChild; |
|
251 |
let component_li = bag_components_ul.firstElementChild; |
|
233 | 252 |
|
234 | 253 |
let components = []; |
235 | 254 |
|
... | ... | |
285 | 304 |
} |
286 | 305 |
|
287 | 306 |
ul.work_li.classList.add("hide"); |
307 |
ul.ul.append(ul.work_li); |
|
308 |
list_set_scrollbar(ul.ul); |
|
288 | 309 |
ul.state = UL_STATE.IDLE; |
289 | 310 |
} |
290 | 311 |
|
... | ... | |
323 | 344 |
ul.ul.insertBefore(ul.work_li, li); |
324 | 345 |
ul.ul.removeChild(li); |
325 | 346 |
ul.work_li.classList.remove("hide"); |
347 |
list_set_scrollbar(ul.ul); |
|
326 | 348 |
|
327 | 349 |
ul.state = UL_STATE.EDITING_ENTRY; |
328 | 350 |
ul.edited_item = item; |
... | ... | |
380 | 402 |
ul.reset_work_li(ul); |
381 | 403 |
ul.work_li.classList.remove("hide"); |
382 | 404 |
ul.ul.appendChild(ul.work_li); |
405 |
list_set_scrollbar(ul.ul); |
|
383 | 406 |
|
384 | 407 |
if (name !== undefined) |
385 | 408 |
ul.work_name_input.value = name; |
... | ... | |
394 | 417 |
radio_components_window.classList.add("hide"); |
395 | 418 |
|
396 | 419 |
for (let li of chbx_components_ul.children) { |
397 |
let chbx = li.firstElementChild; |
|
420 |
let chbx = li.firstElementChild.firstElementChild;
|
|
398 | 421 |
chbx.checked = false; |
399 | 422 |
} |
400 | 423 |
} |
... | ... | |
404 | 427 |
let selected = []; |
405 | 428 |
|
406 | 429 |
for (let li of chbx_components_ul.children) { |
407 |
let chbx = li.firstElementChild; |
|
430 |
let chbx = li.firstElementChild.firstElementChild;
|
|
408 | 431 |
if (!chbx.checked) |
409 | 432 |
continue; |
410 | 433 |
|
... | ... | |
432 | 455 |
|
433 | 456 |
let [prefix, item] = components; |
434 | 457 |
let li = by_id(radio_li_id(prefix, item)); |
458 |
|
|
435 | 459 |
if (li === null) |
436 | 460 |
radio_component_none_input.checked = false; |
437 | 461 |
else |
438 |
li.firstElementChild.checked = true; |
|
462 |
li.firstElementChild.firstElementChild.checked = true;
|
|
439 | 463 |
} |
440 | 464 |
|
441 | 465 |
function commit_page_components() |
... | ... | |
443 | 467 |
let components = null; |
444 | 468 |
|
445 | 469 |
for (let li of radio_components_ul.children) { |
446 |
let radio = li.firstElementChild; |
|
470 |
let radio = li.firstElementChild.firstElementChild;
|
|
447 | 471 |
if (!radio.checked) |
448 | 472 |
continue; |
449 | 473 |
|
... | ... | |
710 | 734 |
for (let [components_ul, id_creator] of uls_creators) { |
711 | 735 |
let li = by_id(id_creator(change.prefix, change.item)); |
712 | 736 |
components_ul.removeChild(li); |
737 |
list_set_scrollbar(components_ul); |
|
713 | 738 |
} |
714 | 739 |
} |
715 | 740 |
|
Also available in: Unified diff
add styling for options page\n\nThis does not include styling for contents of the import popup