ng-ytl-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
83 lines (73 loc) • 2.02 kB
text/typescript
/* tslint:disable:no-any */
import {
forwardRef,
AfterContentInit,
Component,
ElementRef,
Input,
OnInit,
Renderer,
ViewEncapsulation,
} from '@angular/core';
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
import { toBoolean } from '../util/convert';
({
selector : 'nz-checkbox-group',
encapsulation: ViewEncapsulation.None,
template : `
<label
[class.ant-checkbox-vertical]="nzType=='vertical'"
nz-checkbox
*ngFor="let option of _options"
[nzDisabled]="option.disabled||nzDisabled"
[(ngModel)]="option.checked"
(ngModelChange)="_optionChange()">
<span>{{ option.label }}</span>
</label>`,
providers : [
{
provide : NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => NzCheckboxGroupComponent),
multi : true
}
],
styleUrls : [
'./style/index.less'
]
})
export class NzCheckboxGroupComponent implements ControlValueAccessor {
private _disabled = false;
_el: HTMLElement;
_options: any[];
_prefixCls = 'ant-checkbox-group';
// ngModel Access
onChange: any = Function.prototype;
onTouched: any = Function.prototype;
() nzType: string;
()
set nzDisabled(value: boolean) {
this._disabled = toBoolean(value);
}
get nzDisabled(): boolean {
return this._disabled;
}
_optionChange(): void {
this.onChange(this._options);
}
constructor(private _elementRef: ElementRef, private _render: Renderer) {
this._el = this._elementRef.nativeElement;
this._render.setElementClass(this._el, `${this._prefixCls}`, true);
}
writeValue(value: any): void {
this._options = value;
}
registerOnChange(fn: (_: any) => {}): void {
this.onChange = fn;
}
registerOnTouched(fn: () => {}): void {
this.onTouched = fn;
}
setDisabledState(isDisabled: boolean): void {
this.nzDisabled = isDisabled;
}
}