33 lines
834 B
JavaScript
33 lines
834 B
JavaScript
import { Controller } from '@hotwired/stimulus'
|
|
|
|
export default class extends Controller {
|
|
|
|
static classes = [ 'hidden' ]
|
|
static targets = [ 'container', 'checkboxGroup' ]
|
|
static values = { visible: Boolean }
|
|
|
|
connect() {
|
|
this.updateVisibility()
|
|
}
|
|
|
|
check() {
|
|
this.updateVisibility()
|
|
}
|
|
|
|
updateVisibility() {
|
|
if (!this.hasCheckboxGroupTarget) {
|
|
return
|
|
}
|
|
|
|
const checkboxes = this.checkboxGroupTarget.querySelectorAll('input[type="checkbox"]')
|
|
const hasChecked = Array.from(checkboxes).some(checkbox => checkbox.checked)
|
|
this.visibleValue = hasChecked
|
|
}
|
|
|
|
visibleValueChanged(visible) {
|
|
if (this.hasContainerTarget) {
|
|
this.containerTarget.classList.toggle(this.hiddenClass, false === visible)
|
|
}
|
|
}
|
|
}
|