File

projects/ngx-list-view/src/lib/directives/ngx-icheck.directive.ts

Implements

OnChanges OnInit

Metadata

selector input[icheck]

Index

Properties
Methods
Inputs
Outputs

Constructor

constructor(element: ElementRef, renderer: Renderer2)
Parameters :
Name Type Optional
element ElementRef no
renderer Renderer2 no

Inputs

icheck

Type: any

type

Default value: 'checkbox'

value

Type: any

Outputs

icheckChange $event type: EventEmitter

Methods

Public check
check()
Returns : void
Public ngOnChanges
ngOnChanges(changes: any)
Parameters :
Name Type Optional
changes any no
Returns : void
Public ngOnInit
ngOnInit()
Returns : void
Public toggleCheckbox
toggleCheckbox(event: Event)

Toggles the checkbox.

Parameters :
Name Type Optional
event Event no
Returns : void
Public unCheck
unCheck()
Returns : void
Public updateCheckStatus
updateCheckStatus(emit: )

Updates the value

Parameters :
Name Optional Default value
emit no true
Returns : void

Properties

Public element
element: ElementRef
Type : ElementRef
Public parentElement
parentElement: Element
Type : Element
Public renderer
renderer: Renderer2
Type : Renderer2
import {
  Directive, OnChanges, ElementRef, Input, Output, EventEmitter, Renderer2, OnInit
} from '@angular/core';

@Directive({
  // tslint:disable-next-line directive-selector
  selector: 'input[icheck]'
})
export class NgxIcheckDirective implements OnChanges, OnInit {

  @Input('icheck') public isChecked: any;
  @Output() public icheckChange = new EventEmitter<number>(); // This allows two way binding for this directive.
  @Input() public type = 'checkbox';
  @Input() public value: any;
  public parentElement: Element;

  constructor(public element: ElementRef, public renderer: Renderer2) {}

  /**
   * @inheritDoc
   */
  public ngOnInit() {
    this.parentElement = this.renderer.createElement('div');
    const currentParent = this.renderer.parentNode(this.element.nativeElement);
    this.renderer.insertBefore(currentParent, this.parentElement, this.element.nativeElement);
    this.renderer.addClass(this.parentElement, 'icheckbox_square-blue');
    this.renderer.setStyle(this.parentElement, 'position', 'relative');
    this.renderer.setStyle(this.element.nativeElement, 'display', 'none');
    this.renderer.listen(this.parentElement, 'click', (event) => this.toggleCheckbox(event));
  }

  /**
   * Toggles the checkbox.
   *
   * @param event
  */
  public toggleCheckbox(event: Event) {
    event.preventDefault();
    this.isChecked = !this.isChecked;
    this.updateCheckStatus();
  }

  /**
   * @inheritdoc
   */
  public ngOnChanges(changes: any) {
    this.isChecked = this.isChecked || false;
    this.updateCheckStatus(false);
  }

  /**
   * Updates the value
   */
  public updateCheckStatus(emit = true) {
    if (this.isChecked) {
      this.renderer.addClass(this.parentElement, 'checked');
    } else if (this.parentElement) {
      this.renderer.removeClass(this.parentElement, 'checked');
    }
    if (emit) {
      this.icheckChange.emit(+this.isChecked);
    }
  }

  public check() {
    this.isChecked = true;
    this.updateCheckStatus();
  }

  public unCheck() {
    this.isChecked = false;
    this.updateCheckStatus();
  }
}

results matching ""

    No results matching ""