|
| 1 | +const InputComponents = (() => { |
| 2 | + setInputEvents(); |
| 3 | + |
| 4 | + function setInputEvents() { |
| 5 | + // Make the checkboxes toggleable |
| 6 | + let checkboxes = document.getElementsByClassName("checkbox"); |
| 7 | + for (let i=0; i<checkboxes.length; i++) { |
| 8 | + Events.on("click", checkboxes[i], toggleBox); |
| 9 | + } |
| 10 | + } |
| 11 | + |
| 12 | + function toggleBox(event) { |
| 13 | + if (event.target.classList.contains("checked")) |
| 14 | + event.target.classList.remove("checked"); |
| 15 | + else |
| 16 | + event.target.classList.add("checked"); |
| 17 | + } |
| 18 | + |
| 19 | + function createCheckbox(id, label) { |
| 20 | + let element = document.createElement("div"); |
| 21 | + let inner = document.createElement("div"); |
| 22 | + let hiddenInput = document.createElement("input"); |
| 23 | + let box = document.createElement("div"); |
| 24 | + let labelEl = document.createElement("label"); |
| 25 | + |
| 26 | + labelEl.innerHTML = label; |
| 27 | + box.innerHTML = '\ |
| 28 | + <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\ |
| 29 | + width="405.272px" height="405.272px" viewBox="0 0 405.272 405.272" style="enable-background:new 0 0 405.272 405.272;"\ |
| 30 | + xml:space="preserve">\ |
| 31 | + <g>\ |
| 32 | + <path d="M393.401,124.425L179.603,338.208c-15.832,15.835-41.514,15.835-57.361,0L11.878,227.836\ |
| 33 | + c-15.838-15.835-15.838-41.52,0-57.358c15.841-15.841,41.521-15.841,57.355-0.006l81.698,81.699L336.037,67.064\ |
| 34 | + c15.841-15.841,41.523-15.829,57.358,0C409.23,82.902,409.23,108.578,393.401,124.425z"/>\ |
| 35 | + </g>\ |
| 36 | + </svg>'; |
| 37 | + |
| 38 | + element.className = "checkbox-holder"; |
| 39 | + inner.className = "checkbox"; |
| 40 | + hiddenInput.type = "hidden"; |
| 41 | + box.className = "box"; |
| 42 | + box.id = id; |
| 43 | + |
| 44 | + inner.appendChild(labelEl); |
| 45 | + inner.appendChild(hiddenInput); |
| 46 | + inner.appendChild(box); |
| 47 | + element.appendChild(inner); |
| 48 | + |
| 49 | + } |
| 50 | + |
| 51 | + function updated() { |
| 52 | + setInputEvents(); |
| 53 | + } |
| 54 | + |
| 55 | + return { |
| 56 | + updated, |
| 57 | + createCheckbox |
| 58 | + } |
| 59 | +})(); |
0 commit comments