pm-controls
Version:
ProModel Controls
57 lines (48 loc) • 1.78 kB
text/typescript
import {
ChangeDetectorRef,
Component,
EventEmitter,
Input,
Output
} from '@angular/core';
export class SwitchComponent {
constructor(public changeDetectorRef: ChangeDetectorRef) { }
ngOnInit() {
this.changeDetectorRef.detectChanges();
this.OnSetState();
}
IsDisabled: boolean;
IsCheckedChange: EventEmitter<any> = new EventEmitter<any>();
SwitchTheme: string = "default";
SwitchButtonClass: string = "switch-thumb-is-unchecked-default";
SwitchBarClass: string = "switch-bar-is-unchecked";
OnClick() {
if (this.IsDisabled) return;
this.IsChecked = !this.IsChecked;
this.IsCheckedChange.emit(this.IsChecked);
this.changeDetectorRef.detectChanges();
}
OnSetState() {
if (!this.IsDisabled) {
this.SwitchButtonClass = this.IsChecked ? "switch-thumb-is-checked-" + this.SwitchTheme : "switch-thumb-is-unchecked";
this.SwitchBarClass = this.IsChecked ? "switch-bar-is-checked-" + this.SwitchTheme : "switch-bar-is-unchecked";
} else {
this.SwitchButtonClass = this.IsChecked ? "switch-thumb-is-checked-disabled" : "switch-thumb-is-unchecked-disabled";
this.SwitchBarClass = "switch-bar-is-unchecked-disabled";
}
}
private isChecked: boolean;
get IsChecked(): boolean {
return this.isChecked;
}
set IsChecked(value: boolean) {
this.isChecked = value;
this.OnSetState();
}
}