ltbxd-actorle/assets/controllers/game_config_controller.js

42 lines
1.2 KiB
JavaScript
Raw Normal View History

import { Controller } from '@hotwired/stimulus';
export default class extends Controller {
static targets = ['hintType', 'awardSection', 'allAwards', 'awardType'];
toggleAwardSection() {
const awardChecked = this.hintTypeTargets.find(
(el) => el.name === 'hint_award'
)?.checked;
this.awardSectionTarget.style.display = awardChecked ? '' : 'none';
}
toggleAllAwards() {
const checked = this.allAwardsTarget.checked;
this.awardTypeTargets.forEach((el) => {
el.checked = checked;
});
}
syncAllAwards() {
const allChecked = this.awardTypeTargets.every((el) => el.checked);
this.allAwardsTarget.checked = allChecked;
}
hintTypeTargetConnected() {
this.#bindMinOneChecked();
}
#bindMinOneChecked() {
this.hintTypeTargets.forEach((el) => {
el.addEventListener('change', () => {
const checked = this.hintTypeTargets.filter((e) => e.checked);
if (checked.length === 0) {
el.checked = true;
}
this.toggleAwardSection();
});
});
}
}