mirror of https://github.com/nealey/vail.git
40 lines
1003 B
JavaScript
40 lines
1003 B
JavaScript
|
/**
|
||
|
* If the user clicked on the little down arrow,
|
||
|
* clear the input field so all autocomplete options are shown.
|
||
|
*
|
||
|
* This kludge may not work properly on every browser.
|
||
|
*
|
||
|
* @param event Triggering event
|
||
|
*/
|
||
|
function maybeDropdown(event) {
|
||
|
let el = event.target
|
||
|
switch (event.type) {
|
||
|
case "click":
|
||
|
let offset = el.clientWidth + el.offsetLeft - event.clientX;
|
||
|
if (el.value) {
|
||
|
el.dataset.value = el.value
|
||
|
}
|
||
|
if (offset < 0) {
|
||
|
el.value = ""
|
||
|
}
|
||
|
break
|
||
|
case "mouseleave":
|
||
|
if (!el.value) {
|
||
|
el.value = el.dataset.value
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function init() {
|
||
|
let rep = document.querySelector("#repeater")
|
||
|
rep.addEventListener("click", maybeDropdown)
|
||
|
rep.addEventListener("mouseleave", maybeDropdown)
|
||
|
}
|
||
|
|
||
|
if (document.readyState === "loading") {
|
||
|
document.addEventListener("DOMContentLoaded", init)
|
||
|
} else {
|
||
|
init()
|
||
|
}
|