26 lines
744 B
JavaScript
26 lines
744 B
JavaScript
import { Controller } from '@hotwired/stimulus';
|
|
|
|
export default class extends Controller {
|
|
static targets = ['row'];
|
|
|
|
connect() {
|
|
this.rowTargets.forEach(row => this.#syncRow(row));
|
|
}
|
|
|
|
toggle(event) {
|
|
this.#syncRow(event.target.closest('[data-mod-optional-target="row"]'));
|
|
}
|
|
|
|
#syncRow(row) {
|
|
const modCheckbox = row.querySelector('[data-mod-checkbox]');
|
|
const toggle = row.querySelector('[data-opt-toggle]');
|
|
const uiOpt = row.querySelector('[data-ui-opt]');
|
|
|
|
if (!modCheckbox || !toggle) return;
|
|
|
|
const checked = modCheckbox.checked;
|
|
toggle.classList.toggle('d-none', !checked);
|
|
|
|
if (!checked && uiOpt) uiOpt.checked = false;
|
|
}
|
|
}
|