(function(window) { "use strict"; window.ls.container.get("view").add({ selector: "data-forms-color", controller: function(element) { var preview = document.createElement("div"); var picker = document.createElement("input"); picker.type = "color"; preview.className = "color-preview"; preview.appendChild(picker); picker.addEventListener("change", syncA); picker.addEventListener("input", syncA); element.addEventListener("input", update); element.addEventListener("change", update); function update() { if (element.validity.valid) { preview.style.background = element.value; syncB(); } } function syncA() { element.value = picker.value; update(); } function syncB() { picker.value = element.value; } element.parentNode.insertBefore(preview, element); update(); syncB(); } }); })(window);