mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-13 06:32:40 +01:00
2704bf2f82
* fix turbolink 404 * fix checkbox when adding card using stripe * Fix hashed_ids problem when using PayPal * php-cs-fixer * Bump tailwind & purgecss * fix auth scope * scope to auth contact company
63 lines
1.9 KiB
JavaScript
Vendored
63 lines
1.9 KiB
JavaScript
Vendored
/**
|
|
* Invoice Ninja (https://invoiceninja.com)
|
|
*
|
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
|
*
|
|
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
|
|
*
|
|
* @license https://opensource.org/licenses/AAL
|
|
*/
|
|
|
|
class ActionSelectors {
|
|
constructor() {
|
|
this.parentElement = document.querySelector(".form-check-parent");
|
|
this.parentForm = document.getElementById("bulkActions");
|
|
}
|
|
|
|
watchCheckboxes(parentElement) {
|
|
document.querySelectorAll(".form-check-child").forEach(child => {
|
|
if (parentElement.checked) {
|
|
child.checked = parentElement.checked;
|
|
this.processChildItem(child, document.getElementById("bulkActions"));
|
|
} else {
|
|
child.checked = false;
|
|
document
|
|
.querySelectorAll(".child-hidden-input")
|
|
.forEach(element => element.remove());
|
|
}
|
|
});
|
|
}
|
|
|
|
processChildItem(element, parent, options = {}) {
|
|
if (options.hasOwnProperty("single")) {
|
|
document
|
|
.querySelectorAll(".child-hidden-input")
|
|
.forEach(element => element.remove());
|
|
}
|
|
|
|
let _temp = document.createElement("INPUT");
|
|
|
|
_temp.setAttribute("name", "invoices[]");
|
|
_temp.setAttribute("value", element.dataset.value);
|
|
_temp.setAttribute("class", "child-hidden-input");
|
|
_temp.hidden = true;
|
|
|
|
parent.append(_temp);
|
|
}
|
|
|
|
handle() {
|
|
this.parentElement.addEventListener("click", () => {
|
|
this.watchCheckboxes(this.parentElement);
|
|
});
|
|
|
|
for (let child of document.querySelectorAll(".form-check-child")) {
|
|
child.addEventListener("click", () => {
|
|
this.processChildItem(child, this.parentForm);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
/** @handle **/
|
|
new ActionSelectors().handle();
|