Sha256: 98523e7bdce04ceb784cd69f6a4d98e474352041cf035e3ee2b25ea42854e4fa
Contents?: true
Size: 1.06 KB
Versions: 1
Compression:
Stored size: 1.06 KB
Contents
import ApplicationController from './application_controller' export default class extends ApplicationController { static targets = ['checkbox', 'selectAll'] toggle () { this.updateSelectAllState() } toggleAll () { const isChecked = this.selectAllTarget.checked this.checkboxTargets.forEach((checkbox) => { checkbox.checked = isChecked }) } updateSelectAllState () { const checked = this.checked const checkboxes = this.checkboxTargets if (checked.length === checkboxes.length) { // All checked this.selectAllTarget.indeterminate = false this.selectAllTarget.checked = true } else if (checked.length == 0) { // None checked this.selectAllTarget.indeterminate = false this.selectAllTarget.checked = false } else { // Some checked this.selectAllTarget.indeterminate = true } } get checked () { return this.checkboxTargets.filter((checkbox) => checkbox.checked) } get unchecked () { return this.checkboxTargets.filter((checkbox) => !checkbox.checked) } }
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
trestle-0.10.0.pre | frontend/js/controllers/checkbox_select_controller.js |