novo-elements
Version:
Bullhorn's NOVO Element Repository for Angular 2
76 lines (64 loc) • 2.48 kB
text/typescript
// NG2
import { Component, forwardRef, Input, OnInit, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';
import { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';
// APP
import { Helpers } from '../../../../utils/Helpers';
// Value accessor for the component (supports ngModel)
const CHECKBOX_VALUE_ACCESSOR = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => NovoCheckboxElement),
multi: true
};
const LAYOUT_DEFAULTS = { iconStyle: 'box' };
export class NovoCheckboxElement implements ControlValueAccessor, OnInit {
name: string;
label: string;
indeterminate: boolean = false;
disabled: boolean;
layoutOptions: { iconStyle?: string };
boxIcon: boolean = true;
model;
onModelChange: Function = () => {
};
onModelTouched: Function = () => {
};
constructor(private ref: ChangeDetectorRef) { }
ngOnInit() {
this.layoutOptions = Object.assign({}, LAYOUT_DEFAULTS, this.layoutOptions);
this.boxIcon = this.layoutOptions.iconStyle === 'box';
}
select(event) {
Helpers.swallowEvent(event);
this.model = !this.model;
this.onModelChange(this.model);
}
writeValue(model: any): void {
this.model = model;
this.ref.markForCheck();
}
registerOnChange(fn: Function): void {
this.onModelChange = fn;
}
registerOnTouched(fn: Function): void {
this.onModelTouched = fn;
}
}