const html = require('choo/html'); module.exports = function(selected, options, translate, changed) { const id = `select-${Math.random()}`; let x = selected; function close() { const ul = document.getElementById(id); const body = document.querySelector('body'); ul.classList.remove('active'); body.removeEventListener('click', close); } function toggle(event) { event.stopPropagation(); const ul = document.getElementById(id); if (ul.classList.contains('active')) { close(); } else { ul.classList.add('active'); const body = document.querySelector('body'); body.addEventListener('click', close); } } function choose(event) { event.stopPropagation(); const target = event.target; const value = +target.dataset.value; target.parentNode.previousSibling.firstElementChild.textContent = translate( value ); if (x !== value) { x = value; changed(value); } close(); } return html` <div class="selectbox"> <div onclick=${toggle}> <span class="link">${translate(selected)}</span> <svg width="32" height="32"> <polygon points="8 18 17 28 26 18" fill="#0094fb"/> </svg> </div> <ul id="${id}" class="selectOptions"> ${options.map( i => html`<li class="selectOption" onclick=${choose} data-value="${i}">${i}</li>` )} </ul> </div>`; };