kopia lustrzana https://github.com/simonw/datasette
datalist autocomplete for facet filters, refs #1890
rodzic
187d91d686
commit
e15ff2d86e
|
@ -235,3 +235,39 @@ var DROPDOWN_ICON_SVG = `<svg xmlns="http://www.w3.org/2000/svg" width="14" heig
|
|||
}
|
||||
});
|
||||
})();
|
||||
|
||||
/* Set up datalist autocomplete for filter values */
|
||||
(function () {
|
||||
function createDataLists() {
|
||||
var facetResults = document.querySelectorAll(".facet-results [data-column]");
|
||||
Array.from(facetResults).forEach(function (facetResult) {
|
||||
// Use link text from all links in the facet result
|
||||
var linkTexts = Array.from(
|
||||
facetResult.querySelectorAll("li:not(.facet-truncated) a")
|
||||
).map(function (link) {
|
||||
return link.textContent;
|
||||
});
|
||||
// Create a datalist element
|
||||
var datalist = document.createElement("datalist");
|
||||
datalist.id = "datalist-" + facetResult.dataset.column;
|
||||
// Create an option element for each link text
|
||||
linkTexts.forEach(function (linkText) {
|
||||
var option = document.createElement("option");
|
||||
option.value = linkText;
|
||||
datalist.appendChild(option);
|
||||
});
|
||||
// Add the datalist to the facet result
|
||||
facetResult.appendChild(datalist);
|
||||
});
|
||||
}
|
||||
createDataLists();
|
||||
// When any select with name=_filter_column changes, update the datalist
|
||||
document.body.addEventListener("change", function (event) {
|
||||
if (event.target.name === "_filter_column") {
|
||||
event.target
|
||||
.closest(".filter-row")
|
||||
.querySelector(".filter-value")
|
||||
.setAttribute("list", "datalist-" + event.target.value);
|
||||
}
|
||||
});
|
||||
})();
|
||||
|
|
Ładowanie…
Reference in New Issue