Sha256: 07f4330ecbad1f2d90395b5e722e3a24f8b619a671379757bc0223356c4fc67e

Contents?: true

Size: 798 Bytes

Versions: 30

Compression:

Stored size: 798 Bytes

Contents

import { Controller } from "@hotwired/stimulus"

export default class extends Controller {
  static targets = [ "dependee", "dependant" ]

  connect() {
    this.#checkDependee()
  }

  check({ target }) {
    target === this.dependeeTarget ? this.#checkDependants() : this.#checkDependee()
  }

  #checkDependants() {
    this.dependantTargets.forEach(e => e.checked = this.dependeeTarget.checked)
  }

  #checkDependee() {
    this.dependeeTarget.checked = this.#allChecked
    this.dependeeTarget.indeterminate = this.#indeterminate
  }

  get #indeterminate() {
    return this.#atLeastOneChecked && !this.#allChecked
  }

  get #atLeastOneChecked() {
    return this.dependantTargets.some(e => e.checked)
  }

  get #allChecked() {
    return this.dependantTargets.every(e => e.checked)
  }
}

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
css-zero-1.0.6 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-1.0.5 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-1.0.4 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-1.0.3 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-1.0.2 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-1.0.1 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-1.0.0 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-0.0.98 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-0.0.97 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-0.0.96 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-0.0.95 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-0.0.94 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-0.0.93 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-0.0.92 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-0.0.91 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-0.0.90 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-0.0.89 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-0.0.88 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-0.0.87 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js
css-zero-0.0.86 lib/generators/css_zero/add/templates/app/javascript/controllers/check_all_controller.js