mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
40 lines
890 B
JavaScript
40 lines
890 B
JavaScript
import { Controller } from "stimulus";
|
|
|
|
export default class extends Controller {
|
|
static targets = ["all", "checkbox", "disable"];
|
|
|
|
connect() {
|
|
this.toggleCheckbox();
|
|
}
|
|
|
|
toggleAll() {
|
|
this.checkboxTargets.forEach((checkbox) => {
|
|
checkbox.checked = this.allTarget.checked;
|
|
});
|
|
this.#toggleDisabled();
|
|
}
|
|
|
|
toggleCheckbox() {
|
|
this.allTarget.checked = this.checkboxTargets.every((checkbox) => checkbox.checked);
|
|
this.#toggleDisabled();
|
|
}
|
|
|
|
// private
|
|
|
|
#toggleDisabled() {
|
|
if (!this.hasDisableTarget) {
|
|
return;
|
|
}
|
|
|
|
if (this.#noneChecked()) {
|
|
this.disableTargets.forEach((element) => element.classList.add("disabled"));
|
|
} else {
|
|
this.disableTargets.forEach((element) => element.classList.remove("disabled"));
|
|
}
|
|
}
|
|
|
|
#noneChecked() {
|
|
return this.checkboxTargets.every((checkbox) => !checkbox.checked);
|
|
}
|
|
}
|