ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
651 lines (638 loc) • 21 kB
JavaScript
import { CommonModule } from '@angular/common';
import { NzIconModule } from 'ng-zorro-antd/icon';
import { FormControl, FormControlName, NgControl, NgModel } from '@angular/forms';
import { MediaMatcher, LayoutModule } from '@angular/cdk/layout';
import { Platform, PlatformModule } from '@angular/cdk/platform';
import { NzRowDirective, NzColDirective, NzGridModule } from 'ng-zorro-antd/grid';
import { __decorate, __metadata } from 'tslib';
import { ChangeDetectionStrategy, Component, ElementRef, Renderer2, ViewEncapsulation, ChangeDetectorRef, ContentChildren, Input, NgZone, ContentChild, Host, Optional, Directive, NgModule } from '@angular/core';
import { Subject } from 'rxjs';
import { takeUntil, startWith } from 'rxjs/operators';
import { helpMotion, InputBoolean, NzUpdateHostClassService, toBoolean } from 'ng-zorro-antd/core';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class NzFormExplainComponent {
/**
* @param {?} elementRef
* @param {?} renderer
*/
constructor(elementRef, renderer) {
this.elementRef = elementRef;
this.renderer = renderer;
this.renderer.addClass(this.elementRef.nativeElement, 'ant-form-explain');
}
}
NzFormExplainComponent.decorators = [
{ type: Component, args: [{
selector: 'nz-form-explain',
exportAs: 'nzFormExplain',
preserveWhitespaces: false,
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush,
animations: [helpMotion],
template: "<div [@helpMotion]>\n <ng-content></ng-content>\n</div>",
styles: [`
nz-form-explain {
display: block;
}
`]
}] }
];
/** @nocollapse */
NzFormExplainComponent.ctorParameters = () => [
{ type: ElementRef },
{ type: Renderer2 }
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* should add nz-row directive to host, track https://github.com/angular/angular/issues/8785 *
*/
class NzFormItemComponent extends NzRowDirective {
/**
* @param {?} elementRef
* @param {?} renderer
* @param {?} nzUpdateHostClassService
* @param {?} mediaMatcher
* @param {?} ngZone
* @param {?} platform
* @param {?} cdr
*/
constructor(elementRef, renderer, nzUpdateHostClassService, mediaMatcher, ngZone, platform, cdr) {
super(elementRef, renderer, nzUpdateHostClassService, mediaMatcher, ngZone, platform);
this.cdr = cdr;
this.nzFlex = false;
renderer.addClass(elementRef.nativeElement, 'ant-form-item');
}
/**
* @return {?}
*/
ngAfterContentInit() {
if (this.listOfNzFormExplainComponent) {
this.listOfNzFormExplainComponent.changes.pipe(takeUntil(this.destroy$)).subscribe((/**
* @return {?}
*/
() => {
this.cdr.markForCheck();
}));
}
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
super.ngOnChanges(changes);
if (changes.hasOwnProperty('nzFlex')) {
/** @type {?} */
const flex = changes.nzFlex.currentValue;
if (flex) {
this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'flex');
}
else {
this.renderer.removeStyle(this.elementRef.nativeElement, 'display');
}
}
}
}
NzFormItemComponent.decorators = [
{ type: Component, args: [{
selector: 'nz-form-item',
exportAs: 'nzFormItem',
preserveWhitespaces: false,
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None,
providers: [NzUpdateHostClassService],
template: "<ng-content></ng-content>",
host: {
'[class.ant-form-item-with-help]': 'listOfNzFormExplainComponent && (listOfNzFormExplainComponent.length > 0)'
},
styles: [`
nz-form-item {
display: block;
}
`]
}] }
];
/** @nocollapse */
NzFormItemComponent.ctorParameters = () => [
{ type: ElementRef },
{ type: Renderer2 },
{ type: NzUpdateHostClassService },
{ type: MediaMatcher },
{ type: NgZone },
{ type: Platform },
{ type: ChangeDetectorRef }
];
NzFormItemComponent.propDecorators = {
nzFlex: [{ type: Input }],
listOfNzFormExplainComponent: [{ type: ContentChildren, args: [NzFormExplainComponent, { descendants: true },] }]
};
__decorate([
InputBoolean(),
__metadata("design:type", Boolean)
], NzFormItemComponent.prototype, "nzFlex", void 0);
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class NzFormControlComponent extends NzColDirective {
/**
* @param {?} nzUpdateHostClassService
* @param {?} elementRef
* @param {?} nzFormItemComponent
* @param {?} nzRowDirective
* @param {?} cdr
* @param {?} renderer
*/
constructor(nzUpdateHostClassService, elementRef, nzFormItemComponent, nzRowDirective, cdr, renderer) {
super(nzUpdateHostClassService, elementRef, nzFormItemComponent || nzRowDirective, renderer);
this.cdr = cdr;
this._hasFeedback = false;
this.controlClassMap = {};
renderer.addClass(elementRef.nativeElement, 'ant-form-item-control-wrapper');
}
/**
* @param {?} value
* @return {?}
*/
set nzHasFeedback(value) {
this._hasFeedback = toBoolean(value);
this.setControlClassMap();
}
/**
* @return {?}
*/
get nzHasFeedback() {
return this._hasFeedback;
}
/**
* @param {?} value
* @return {?}
*/
set nzValidateStatus(value) {
if (value instanceof FormControl || value instanceof NgModel) {
this.validateControl = value;
this.validateString = null;
this.watchControl();
}
else if (value instanceof FormControlName) {
this.validateControl = value.control;
this.validateString = null;
this.watchControl();
}
else {
this.validateString = value;
this.validateControl = null;
this.setControlClassMap();
}
}
/**
* @return {?}
*/
removeSubscribe() {
if (this.validateChanges) {
this.validateChanges.unsubscribe();
this.validateChanges = null;
}
}
/**
* @return {?}
*/
watchControl() {
this.removeSubscribe();
/** miss detect https://github.com/angular/angular/issues/10887 **/
if (this.validateControl && this.validateControl.statusChanges) {
this.validateChanges = this.validateControl.statusChanges.pipe(startWith(null)).subscribe((/**
* @return {?}
*/
() => {
this.setControlClassMap();
this.cdr.markForCheck();
}));
}
}
/**
* @param {?} status
* @return {?}
*/
validateControlStatus(status) {
return (/** @type {?} */ ((!!this.validateControl &&
(this.validateControl.dirty || this.validateControl.touched) &&
this.validateControl.status === status)));
}
/**
* @return {?}
*/
setControlClassMap() {
if (this.validateString === 'warning') {
this.status = 'warning';
this.iconType = 'exclamation-circle-fill';
}
else if (this.validateString === 'validating' ||
this.validateString === 'pending' ||
this.validateControlStatus('PENDING')) {
this.status = 'validating';
this.iconType = 'loading';
}
else if (this.validateString === 'error' || this.validateControlStatus('INVALID')) {
this.status = 'error';
this.iconType = 'close-circle-fill';
}
else if (this.validateString === 'success' || this.validateControlStatus('VALID')) {
this.status = 'success';
this.iconType = 'check-circle-fill';
}
else {
this.status = 'init';
this.iconType = '';
}
this.controlClassMap = {
[`has-warning`]: this.status === 'warning',
[`is-validating`]: this.status === 'validating',
[`has-error`]: this.status === 'error',
[`has-success`]: this.status === 'success',
[`has-feedback`]: this.nzHasFeedback
};
}
/**
* @return {?}
*/
ngOnInit() {
super.ngOnInit();
this.setControlClassMap();
}
/**
* @return {?}
*/
ngOnDestroy() {
this.removeSubscribe();
super.ngOnDestroy();
}
/**
* @return {?}
*/
ngAfterContentInit() {
if (this.defaultValidateControl && !this.validateControl && !this.validateString) {
this.nzValidateStatus = this.defaultValidateControl;
}
}
/**
* @return {?}
*/
ngAfterViewInit() {
super.ngAfterViewInit();
}
}
NzFormControlComponent.decorators = [
{ type: Component, args: [{
selector: 'nz-form-control',
exportAs: 'nzFormControl',
preserveWhitespaces: false,
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush,
providers: [NzUpdateHostClassService],
template: "<div class=\"ant-form-item-control\" [ngClass]=\"controlClassMap\">\n <span class=\"ant-form-item-children\">\n <ng-content></ng-content>\n <span class=\"ant-form-item-children-icon\">\n <i *ngIf=\"nzHasFeedback && iconType\" nz-icon [type]=\"iconType\"></i>\n </span>\n </span>\n <ng-content select=\"nz-form-explain\"></ng-content>\n</div>",
styles: [`
nz-form-control {
display: block;
}
`]
}] }
];
/** @nocollapse */
NzFormControlComponent.ctorParameters = () => [
{ type: NzUpdateHostClassService },
{ type: ElementRef },
{ type: NzFormItemComponent, decorators: [{ type: Optional }, { type: Host }] },
{ type: NzRowDirective, decorators: [{ type: Optional }, { type: Host }] },
{ type: ChangeDetectorRef },
{ type: Renderer2 }
];
NzFormControlComponent.propDecorators = {
defaultValidateControl: [{ type: ContentChild, args: [NgControl,] }],
nzHasFeedback: [{ type: Input }],
nzValidateStatus: [{ type: Input }]
};
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class NzFormExtraComponent {
/**
* @param {?} elementRef
* @param {?} renderer
*/
constructor(elementRef, renderer) {
this.elementRef = elementRef;
this.renderer = renderer;
this.renderer.addClass(this.elementRef.nativeElement, 'ant-form-extra');
}
}
NzFormExtraComponent.decorators = [
{ type: Component, args: [{
selector: 'nz-form-extra',
exportAs: 'nzFormExtra',
template: "<ng-content></ng-content>",
preserveWhitespaces: false,
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush,
styles: [`
nz-form-extra {
display: block;
}
`]
}] }
];
/** @nocollapse */
NzFormExtraComponent.ctorParameters = () => [
{ type: ElementRef },
{ type: Renderer2 }
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class NzFormLabelComponent extends NzColDirective {
/**
* @param {?} nzUpdateHostClassService
* @param {?} elementRef
* @param {?} nzFormItemComponent
* @param {?} nzRowDirective
* @param {?} renderer
* @param {?} cdr
*/
constructor(nzUpdateHostClassService, elementRef, nzFormItemComponent, nzRowDirective, renderer, cdr) {
super(nzUpdateHostClassService, elementRef, nzFormItemComponent || nzRowDirective, renderer);
this.cdr = cdr;
this.nzRequired = false;
this.defaultNoColon = false;
this.noColon = 'default';
renderer.addClass(elementRef.nativeElement, 'ant-form-item-label');
}
/**
* @param {?} value
* @return {?}
*/
set nzNoColon(value) {
this.noColon = toBoolean(value);
}
/**
* @return {?}
*/
get nzNoColon() {
return !!this.noColon;
}
/**
* @param {?} value
* @return {?}
*/
setDefaultNoColon(value) {
this.defaultNoColon = toBoolean(value);
this.cdr.markForCheck();
}
/**
* @return {?}
*/
ngOnDestroy() {
super.ngOnDestroy();
}
/**
* @return {?}
*/
ngAfterViewInit() {
super.ngAfterViewInit();
}
}
NzFormLabelComponent.decorators = [
{ type: Component, args: [{
selector: 'nz-form-label',
exportAs: 'nzFormLabel',
providers: [NzUpdateHostClassService],
preserveWhitespaces: false,
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush,
template: "<label [attr.for]=\"nzFor\"\n [class.ant-form-item-no-colon]=\"noColon === 'default' ? defaultNoColon : nzNoColon\"\n [class.ant-form-item-required]=\"nzRequired\">\n <ng-content></ng-content>\n</label>"
}] }
];
/** @nocollapse */
NzFormLabelComponent.ctorParameters = () => [
{ type: NzUpdateHostClassService },
{ type: ElementRef },
{ type: NzFormItemComponent, decorators: [{ type: Optional }, { type: Host }] },
{ type: NzRowDirective, decorators: [{ type: Optional }, { type: Host }] },
{ type: Renderer2 },
{ type: ChangeDetectorRef }
];
NzFormLabelComponent.propDecorators = {
nzFor: [{ type: Input }],
nzRequired: [{ type: Input }],
nzNoColon: [{ type: Input }]
};
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzFormLabelComponent.prototype, "nzRequired", void 0);
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class NzFormSplitComponent {
/**
* @param {?} elementRef
* @param {?} renderer
*/
constructor(elementRef, renderer) {
this.elementRef = elementRef;
this.renderer = renderer;
this.renderer.addClass(this.elementRef.nativeElement, 'ant-form-split');
}
}
NzFormSplitComponent.decorators = [
{ type: Component, args: [{
selector: 'nz-form-split',
exportAs: 'nzFormSplit',
preserveWhitespaces: false,
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush,
template: "<ng-content></ng-content>"
}] }
];
/** @nocollapse */
NzFormSplitComponent.ctorParameters = () => [
{ type: ElementRef },
{ type: Renderer2 }
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class NzFormTextComponent {
/**
* @param {?} elementRef
* @param {?} renderer
*/
constructor(elementRef, renderer) {
this.elementRef = elementRef;
this.renderer = renderer;
this.renderer.addClass(this.elementRef.nativeElement, 'ant-form-text');
}
}
NzFormTextComponent.decorators = [
{ type: Component, args: [{
selector: 'nz-form-text',
exportAs: 'nzFormText',
preserveWhitespaces: false,
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None,
template: "<ng-content></ng-content>"
}] }
];
/** @nocollapse */
NzFormTextComponent.ctorParameters = () => [
{ type: ElementRef },
{ type: Renderer2 }
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class NzFormDirective {
/**
* @param {?} elementRef
* @param {?} renderer
* @param {?} nzUpdateHostClassService
*/
constructor(elementRef, renderer, nzUpdateHostClassService) {
this.elementRef = elementRef;
this.renderer = renderer;
this.nzUpdateHostClassService = nzUpdateHostClassService;
this.nzLayout = 'horizontal';
this.nzNoColon = false;
this.destroy$ = new Subject();
this.renderer.addClass(elementRef.nativeElement, 'ant-form');
}
/**
* @return {?}
*/
setClassMap() {
this.nzUpdateHostClassService.updateHostClass(this.elementRef.nativeElement, {
[`ant-form-${this.nzLayout}`]: this.nzLayout
});
}
/**
* @return {?}
*/
updateItemsDefaultColon() {
if (this.nzFormLabelComponent) {
this.nzFormLabelComponent.forEach((/**
* @param {?} item
* @return {?}
*/
item => item.setDefaultNoColon(this.nzNoColon)));
}
}
/**
* @return {?}
*/
ngOnInit() {
this.setClassMap();
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
this.setClassMap();
if (changes.hasOwnProperty('nzNoColon')) {
this.updateItemsDefaultColon();
}
}
/**
* @return {?}
*/
ngAfterContentInit() {
this.nzFormLabelComponent.changes
.pipe(startWith(null), takeUntil(this.destroy$))
.subscribe((/**
* @return {?}
*/
() => {
this.updateItemsDefaultColon();
}));
}
/**
* @return {?}
*/
ngOnDestroy() {
this.destroy$.next();
this.destroy$.complete();
}
}
NzFormDirective.decorators = [
{ type: Directive, args: [{
selector: '[nz-form]',
exportAs: 'nzForm',
providers: [NzUpdateHostClassService]
},] }
];
/** @nocollapse */
NzFormDirective.ctorParameters = () => [
{ type: ElementRef },
{ type: Renderer2 },
{ type: NzUpdateHostClassService }
];
NzFormDirective.propDecorators = {
nzLayout: [{ type: Input }],
nzNoColon: [{ type: Input }],
nzFormLabelComponent: [{ type: ContentChildren, args: [NzFormLabelComponent, { descendants: true },] }]
};
__decorate([
InputBoolean(),
__metadata("design:type", Boolean)
], NzFormDirective.prototype, "nzNoColon", void 0);
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class NzFormModule {
}
NzFormModule.decorators = [
{ type: NgModule, args: [{
declarations: [
NzFormExtraComponent,
NzFormLabelComponent,
NzFormDirective,
NzFormItemComponent,
NzFormControlComponent,
NzFormExplainComponent,
NzFormTextComponent,
NzFormSplitComponent
],
exports: [
NzFormExtraComponent,
NzFormLabelComponent,
NzFormDirective,
NzFormItemComponent,
NzFormControlComponent,
NzFormExplainComponent,
NzFormTextComponent,
NzFormSplitComponent
],
imports: [CommonModule, NzGridModule, NzIconModule, LayoutModule, PlatformModule]
},] }
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { NzFormModule, NzFormDirective, NzFormControlComponent, NzFormExplainComponent, NzFormItemComponent, NzFormExtraComponent, NzFormLabelComponent, NzFormSplitComponent, NzFormTextComponent };
//# sourceMappingURL=ng-zorro-antd-form.js.map