All files / site/inputs switch.ts

14.28% Statements 2/14
0% Branches 0/4
0% Functions 0/4
15.38% Lines 2/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28  2x   2x                                                
import type Community from '../index'
import {BaseInput} from './index'
 
export class InputSwitch extends BaseInput {
  type: 'switch' = 'switch'
  e: HTMLInputElement
  source: boolean
  constructor(e: HTMLElement, site: Community) {
    super(e, site)
    this.listen = this.listen.bind(this)
    e.addEventListener('change', this.listen)
  }
  get() {
    this.set(this.e.checked)
  }
  set(v: string | boolean) {
    Iif ('string' === typeof v) v = 'on' === v || 'true' === v
    Iif (v !== this.source) {
      this.previous = this.e.checked
      this.e.checked = this.source = v
      this.site.request_queue(this.id)
    }
  }
  listen(e: MouseEvent) {
    this.set(this.e.checked)
  }
}