2024-07-20 18:21:03 +00:00
|
|
|
import { Controller } from "@hotwired/stimulus";
|
2024-06-18 19:07:22 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Para poder indicar que al menos uno del grupo de checkboxes es
|
|
|
|
* obligatorio, marcamos uno como `required` (que es el que mostraría el
|
|
|
|
* error) y se lo quitamos cuando detectamos que alguno cambió.
|
|
|
|
*/
|
|
|
|
export default class extends Controller {
|
|
|
|
static targets = ["required", "checkbox"];
|
|
|
|
|
|
|
|
connect() {
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* El grupo deja de ser obligatorio cuando al menos uno está activo.
|
|
|
|
*/
|
|
|
|
change(event = undefined) {
|
|
|
|
if (event.target.checked) {
|
|
|
|
this.requiredTarget.required = false;
|
|
|
|
} else {
|
|
|
|
this.requiredTarget.required = !Array.from(this.checkboxTargets).some(x => x.checked);
|
|
|
|
}
|
2024-06-19 16:13:30 +00:00
|
|
|
|
|
|
|
for (const checkbox of this.checkboxTargets) {
|
|
|
|
if (checkbox === event.target) continue;
|
|
|
|
|
|
|
|
checkbox.required = !event.target.checked;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Si el checkbox es considerado
|
|
|
|
*/
|
|
|
|
invalid(event) {
|
|
|
|
for (const checkbox of this.checkboxTargets) {
|
|
|
|
checkbox.required = true;
|
|
|
|
}
|
2024-06-18 19:07:22 +00:00
|
|
|
}
|
|
|
|
}
|