ui-dropdown
Version:
A custom dropdown element
60 lines (47 loc) • 1.89 kB
HTML
<!--ADD TO ELEMENT TEMPLATE-->
<meta name=viewport content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="../vendors/bootstrap/dist/css/bootstrap.css">
<script type="module" src="../element/controller.js"></script>
<style>
ui-dropdown {
--ui-dropdown-background-color: white;
}
</style>
<body>
<ui-dropdown value='{"name": "whatever", "label":"Hello", "options":["one","two","three"], "placeholder":"req-true-no-selec", "required": true }'></ui-dropdown>
<br>
<ui-dropdown value='{"name": "whatever", "label":"Hello", "options":["one","two","three"], "placeholder":"req-true-selec", "required": true }'></ui-dropdown>
<br>
<ui-dropdown value='{"name": "whatever", "label":"Hello", "options":["one","two","three"], "placeholder":"req-false-selec", "required": false }'></ui-dropdown>
<br>
<ui-dropdown value='{"name": "whatever", "label":"Hello", "options":["one","two","three"], "placeholder":"no-req-with-select"}'></ui-dropdown>
<br>
<ui-dropdown value='{"name": "whatever", "label":"Hello", "options":["one","two","three"], "placeholder":"no-req"}'></ui-dropdown>
<br>
<button>Submit</button>
</body>
<script>
// imports are loaded and dropdowns have been registered
const dropdowns = document.querySelectorAll("ui-dropdown");
dropdowns.forEach(element => {
element.addEventListener("response", function(e) {
//console.log("DATA", element.data)
})
})
const button = document.querySelector("button");
button.addEventListener("click", function(e){
let shouldPreventDefault = false;
dropdowns.forEach(element => {
if(element.hasInvalidResponse){
shouldPreventDefault = true;
element.showValidationError();
}
else{
element.hideValidationError();
}
})
if(shouldPreventDefault){
e.preventDefault();
}
})
</script>