pm-controls
Version:
ProModel Controls
70 lines (60 loc) • 2.04 kB
text/typescript
import {
ChangeDetectorRef,
Component,
EventEmitter,
Input,
Output
} from '@angular/core';
export class RadioButtonComponent {
constructor(public changeDetectorRef: ChangeDetectorRef) {
this.changeDetectorRef.detach();
}
ngOnInit() {
this.changeDetectorRef.detectChanges();
}
IsDisabled: boolean;
Label: string;
Value: any;
RadioGroup: any;
RadioGroupChange: EventEmitter<any> = new EventEmitter<any>();
RadioButtonOuterTheme: string = "radio-button-default-outer-selected";
RadioButtonInnerTheme: string = "radio-button-default-inner-selected";
OnClick() {
if (this.IsChecked || this.IsDisabled) return;
this.IsChecked = true;
this.RadioGroupChange.emit(this.Value);
this.changeDetectorRef.detectChanges();
}
public get OuterClass() {
if (this.IsChecked) {
if (this.IsDisabled)
return "radio-button-outer-selected-disabled";
return this.RadioButtonOuterTheme;
}
if (this.IsDisabled)
return "radio-button-outer-not-selected-disabled";
return "radio-button-outer-not-selected";
}
public get InnerClass() {
if (this.IsChecked) {
if (this.IsDisabled)
return "radio-button-inner-selected-disabled";
return this.RadioButtonInnerTheme;
}
return "radio-button-inner-not-selected";
}
private isChecked: boolean;
get IsChecked(): boolean {
return this.isChecked;
}
set IsChecked(value: boolean) {
this.isChecked = value;
this.changeDetectorRef.detectChanges();
}
}