nc-planner/scripts/dom-utils.js

21 lines
937 B
JavaScript

export function getElements(dataType, dataValue, props = {}) {
// props: { additionalDataFilters: [key, value][], additionalPropertyFilters: [key, value][] }
const queryString = [
...[[dataType, dataValue], ...(props.additionalDataFilters ?? [])]
.map(([k, v]) => [`data-${k}`, v]),
...(props.additionalPropertyFilters ?? []),
].map(([k, v]) => v === '*' ? `[${k}]` : `[${k}='${v}']`).join("");
return document.querySelectorAll(queryString);
}
export function addEventToElement(dataType, dataValue, event, callback, props = {}) {
getElements(dataType, dataValue, props).forEach(e => e.addEventListener(event, callback));
}
export function addEventToInput(dataValue, event, callback, props = {}) {
addEventToElement("input", dataValue, event, callback, props);
}
export function addEventToButton(dataValue, event, callback, props = {}) {
addEventToElement("button", dataValue, event, callback, props);
}