UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

226 lines 17.4 kB
/** * @fileoverview added by tsickle * Generated from: row.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { __read } from "tslib"; /** * @license * Copyright Alibaba.com All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ import { MediaMatcher } from '@angular/cdk/layout'; import { Platform } from '@angular/cdk/platform'; import { Directive, ElementRef, Input, NgZone, Renderer2 } from '@angular/core'; import { gridResponsiveMap, NzBreakpointService } from 'ng-zorro-antd/core/services'; import { ReplaySubject, Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; var NzRowDirective = /** @class */ (function () { function NzRowDirective(elementRef, renderer, mediaMatcher, ngZone, platform, breakpointService) { this.elementRef = elementRef; this.renderer = renderer; this.mediaMatcher = mediaMatcher; this.ngZone = ngZone; this.platform = platform; this.breakpointService = breakpointService; this.nzAlign = null; this.nzJustify = null; this.nzGutter = null; this.actualGutter$ = new ReplaySubject(1); this.destroy$ = new Subject(); } /** * @return {?} */ NzRowDirective.prototype.getGutter = /** * @return {?} */ function () { var _this = this; /** @type {?} */ var results = [0, 0]; /** @type {?} */ var gutter = this.nzGutter || 0; /** @type {?} */ var normalizedGutter = Array.isArray(gutter) ? gutter : [gutter, 0]; normalizedGutter.forEach((/** * @param {?} g * @param {?} index * @return {?} */ function (g, index) { if (typeof g === 'object') { results[index] = 0; Object.keys(gridResponsiveMap).map((/** * @param {?} screen * @return {?} */ function (screen) { /** @type {?} */ var bp = (/** @type {?} */ (screen)); if (_this.mediaMatcher.matchMedia(gridResponsiveMap[bp]).matches && g[bp]) { results[index] = (/** @type {?} */ ((/** @type {?} */ (g))[bp])); } })); } else { results[index] = g || 0; } })); return results; }; /** * @return {?} */ NzRowDirective.prototype.setGutterStyle = /** * @return {?} */ function () { var _this = this; var _a = __read(this.getGutter(), 2), horizontalGutter = _a[0], verticalGutter = _a[1]; this.actualGutter$.next([horizontalGutter, verticalGutter]); /** @type {?} */ var renderGutter = (/** * @param {?} name * @param {?} gutter * @return {?} */ function (name, gutter) { /** @type {?} */ var nativeElement = _this.elementRef.nativeElement; _this.renderer.setStyle(nativeElement, name, "-" + gutter / 2 + "px"); }); if (horizontalGutter > 0) { renderGutter('margin-left', horizontalGutter); renderGutter('margin-right', horizontalGutter); } if (verticalGutter > 0) { renderGutter('margin-top', verticalGutter); renderGutter('margin-bottom', verticalGutter); } }; /** * @return {?} */ NzRowDirective.prototype.ngOnInit = /** * @return {?} */ function () { this.setGutterStyle(); }; /** * @param {?} changes * @return {?} */ NzRowDirective.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { if (changes.nzGutter) { this.setGutterStyle(); } }; /** * @return {?} */ NzRowDirective.prototype.ngAfterViewInit = /** * @return {?} */ function () { var _this = this; if (this.platform.isBrowser) { this.breakpointService .subscribe(gridResponsiveMap) .pipe(takeUntil(this.destroy$)) .subscribe((/** * @return {?} */ function () { _this.setGutterStyle(); })); } }; /** * @return {?} */ NzRowDirective.prototype.ngOnDestroy = /** * @return {?} */ function () { this.destroy$.next(); this.destroy$.complete(); }; NzRowDirective.decorators = [ { type: Directive, args: [{ selector: '[nz-row],nz-row,nz-form-item', exportAs: 'nzRow', host: { '[class.ant-row]': "true", '[class.ant-row-top]': "nzAlign === 'top'", '[class.ant-row-middle]': "nzAlign === 'middle'", '[class.ant-row-bottom]': "nzAlign === 'bottom'", '[class.ant-row-start]': "nzJustify === 'start'", '[class.ant-row-end]': "nzJustify === 'end'", '[class.ant-row-center]': "nzJustify === 'center'", '[class.ant-row-space-around]': "nzJustify === 'space-around'", '[class.ant-row-space-between]': "nzJustify === 'space-between'" } },] } ]; /** @nocollapse */ NzRowDirective.ctorParameters = function () { return [ { type: ElementRef }, { type: Renderer2 }, { type: MediaMatcher }, { type: NgZone }, { type: Platform }, { type: NzBreakpointService } ]; }; NzRowDirective.propDecorators = { nzType: [{ type: Input }], nzAlign: [{ type: Input }], nzJustify: [{ type: Input }], nzGutter: [{ type: Input }] }; return NzRowDirective; }()); export { NzRowDirective }; if (false) { /** * @deprecated don't need nzType="flex" after 9.0 * @type {?} */ NzRowDirective.prototype.nzType; /** @type {?} */ NzRowDirective.prototype.nzAlign; /** @type {?} */ NzRowDirective.prototype.nzJustify; /** @type {?} */ NzRowDirective.prototype.nzGutter; /** @type {?} */ NzRowDirective.prototype.actualGutter$; /** * @type {?} * @private */ NzRowDirective.prototype.destroy$; /** @type {?} */ NzRowDirective.prototype.elementRef; /** @type {?} */ NzRowDirective.prototype.renderer; /** @type {?} */ NzRowDirective.prototype.mediaMatcher; /** @type {?} */ NzRowDirective.prototype.ngZone; /** @type {?} */ NzRowDirective.prototype.platform; /** * @type {?} * @private */ NzRowDirective.prototype.breakpointService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQvZ3JpZC8iLCJzb3VyY2VzIjpbInJvdy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQVFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWdDLFNBQVMsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFFLGlCQUFpQixFQUFtQixtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXRHLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUszQztJQWlFRSx3QkFDUyxVQUFzQixFQUN0QixRQUFtQixFQUNuQixZQUEwQixFQUMxQixNQUFjLEVBQ2QsUUFBa0IsRUFDakIsaUJBQXNDO1FBTHZDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNqQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFCO1FBbkR2QyxZQUFPLEdBQW1CLElBQUksQ0FBQztRQUMvQixjQUFTLEdBQXFCLElBQUksQ0FBQztRQUNuQyxhQUFRLEdBQTRGLElBQUksQ0FBQztRQUV6RyxrQkFBYSxHQUFHLElBQUksYUFBYSxDQUFtQixDQUFDLENBQUMsQ0FBQztRQUUvQyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQThDdkMsQ0FBQzs7OztJQTVDSixr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TjtJQUNILENBQUM7Ozs7SUFFRCxvQ0FBVzs7O0lBQVg7UUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7Z0JBbEdGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxRQUFRLEVBQUUsT0FBTztvQkFDakIsSUFBSSxFQUFFO3dCQUNKLGlCQUFpQixFQUFFLE1BQU07d0JBQ3pCLHFCQUFxQixFQUFFLG1CQUFtQjt3QkFDMUMsd0JBQXdCLEVBQUUsc0JBQXNCO3dCQUNoRCx3QkFBd0IsRUFBRSxzQkFBc0I7d0JBQ2hELHVCQUF1QixFQUFFLHVCQUF1Qjt3QkFDaEQscUJBQXFCLEVBQUUscUJBQXFCO3dCQUM1Qyx3QkFBd0IsRUFBRSx3QkFBd0I7d0JBQ2xELDhCQUE4QixFQUFFLDhCQUE4Qjt3QkFDOUQsK0JBQStCLEVBQUUsK0JBQStCO3FCQUNqRTtpQkFDRjs7OztnQkF2QmtDLFVBQVU7Z0JBQStDLFNBQVM7Z0JBRjVGLFlBQVk7Z0JBRWlDLE1BQU07Z0JBRG5ELFFBQVE7Z0JBRTRCLG1CQUFtQjs7O3lCQTJCN0QsS0FBSzswQkFDTCxLQUFLOzRCQUNMLEtBQUs7MkJBQ0wsS0FBSzs7SUE2RVIscUJBQUM7Q0FBQSxBQW5HRCxJQW1HQztTQXBGWSxjQUFjOzs7Ozs7SUFJekIsZ0NBQStCOztJQUMvQixpQ0FBd0M7O0lBQ3hDLG1DQUE0Qzs7SUFDNUMsa0NBQWtIOztJQUVsSCx1Q0FBZ0U7Ozs7O0lBRWhFLGtDQUEwQzs7SUF3Q3hDLG9DQUE2Qjs7SUFDN0Isa0NBQTBCOztJQUMxQixzQ0FBaUM7O0lBQ2pDLGdDQUFxQjs7SUFDckIsa0NBQXlCOzs7OztJQUN6QiwyQ0FBOEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgTWVkaWFNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBOZ1pvbmUsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ3JpZFJlc3BvbnNpdmVNYXAsIE56QnJlYWtwb2ludEtleSwgTnpCcmVha3BvaW50U2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBJbmRleGFibGVPYmplY3QgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgdHlwZSBOekp1c3RpZnkgPSAnc3RhcnQnIHwgJ2VuZCcgfCAnY2VudGVyJyB8ICdzcGFjZS1hcm91bmQnIHwgJ3NwYWNlLWJldHdlZW4nO1xuZXhwb3J0IHR5cGUgTnpBbGlnbiA9ICd0b3AnIHwgJ21pZGRsZScgfCAnYm90dG9tJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW256LXJvd10sbnotcm93LG56LWZvcm0taXRlbScsXG4gIGV4cG9ydEFzOiAnbnpSb3cnLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5hbnQtcm93XSc6IGB0cnVlYCxcbiAgICAnW2NsYXNzLmFudC1yb3ctdG9wXSc6IGBuekFsaWduID09PSAndG9wJ2AsXG4gICAgJ1tjbGFzcy5hbnQtcm93LW1pZGRsZV0nOiBgbnpBbGlnbiA9PT0gJ21pZGRsZSdgLFxuICAgICdbY2xhc3MuYW50LXJvdy1ib3R0b21dJzogYG56QWxpZ24gPT09ICdib3R0b20nYCxcbiAgICAnW2NsYXNzLmFudC1yb3ctc3RhcnRdJzogYG56SnVzdGlmeSA9PT0gJ3N0YXJ0J2AsXG4gICAgJ1tjbGFzcy5hbnQtcm93LWVuZF0nOiBgbnpKdXN0aWZ5ID09PSAnZW5kJ2AsXG4gICAgJ1tjbGFzcy5hbnQtcm93LWNlbnRlcl0nOiBgbnpKdXN0aWZ5ID09PSAnY2VudGVyJ2AsXG4gICAgJ1tjbGFzcy5hbnQtcm93LXNwYWNlLWFyb3VuZF0nOiBgbnpKdXN0aWZ5ID09PSAnc3BhY2UtYXJvdW5kJ2AsXG4gICAgJ1tjbGFzcy5hbnQtcm93LXNwYWNlLWJldHdlZW5dJzogYG56SnVzdGlmeSA9PT0gJ3NwYWNlLWJldHdlZW4nYFxuICB9XG59KVxuZXhwb3J0IGNsYXNzIE56Um93RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBkb24ndCBuZWVkIG56VHlwZT1cImZsZXhcIiBhZnRlciA5LjBcbiAgICovXG4gIEBJbnB1dCgpIG56VHlwZTogJ2ZsZXgnIHwgbnVsbDtcbiAgQElucHV0KCkgbnpBbGlnbjogTnpBbGlnbiB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBuekp1c3RpZnk6IE56SnVzdGlmeSB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBuekd1dHRlcjogbnVtYmVyIHwgSW5kZXhhYmxlT2JqZWN0IHwgW251bWJlciwgbnVtYmVyXSB8IFtJbmRleGFibGVPYmplY3QsIEluZGV4YWJsZU9iamVjdF0gfCBudWxsID0gbnVsbDtcblxuICByZWFkb25seSBhY3R1YWxHdXR0ZXIkID0gbmV3IFJlcGxheVN1YmplY3Q8W251bWJlciwgbnVtYmVyXT4oMSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgZ2V0R3V0dGVyKCk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgIGNvbnN0IHJlc3VsdHM6IFtudW1iZXIsIG51bWJlcl0gPSBbMCwgMF07XG4gICAgY29uc3QgZ3V0dGVyID0gdGhpcy5uekd1dHRlciB8fCAwO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRHdXR0ZXIgPSBBcnJheS5pc0FycmF5KGd1dHRlcikgPyBndXR0ZXIgOiBbZ3V0dGVyLCAwXTtcbiAgICBub3JtYWxpemVkR3V0dGVyLmZvckVhY2goKGcsIGluZGV4KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGcgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJlc3VsdHNbaW5kZXhdID0gMDtcbiAgICAgICAgT2JqZWN0LmtleXMoZ3JpZFJlc3BvbnNpdmVNYXApLm1hcCgoc2NyZWVuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBjb25zdCBicCA9IHNjcmVlbiBhcyBOekJyZWFrcG9pbnRLZXk7XG4gICAgICAgICAgaWYgKHRoaXMubWVkaWFNYXRjaGVyLm1hdGNoTWVkaWEoZ3JpZFJlc3BvbnNpdmVNYXBbYnBdKS5tYXRjaGVzICYmIGdbYnBdKSB7XG4gICAgICAgICAgICByZXN1bHRzW2luZGV4XSA9IGchW2JwXSBhcyBudW1iZXI7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdHNbaW5kZXhdID0gZyB8fCAwO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgc2V0R3V0dGVyU3R5bGUoKTogdm9pZCB7XG4gICAgY29uc3QgW2hvcml6b250YWxHdXR0ZXIsIHZlcnRpY2FsR3V0dGVyXSA9IHRoaXMuZ2V0R3V0dGVyKCk7XG4gICAgdGhpcy5hY3R1YWxHdXR0ZXIkLm5leHQoW2hvcml6b250YWxHdXR0ZXIsIHZlcnRpY2FsR3V0dGVyXSk7XG4gICAgY29uc3QgcmVuZGVyR3V0dGVyID0gKG5hbWU6IHN0cmluZywgZ3V0dGVyOiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUobmF0aXZlRWxlbWVudCwgbmFtZSwgYC0ke2d1dHRlciAvIDJ9cHhgKTtcbiAgICB9O1xuICAgIGlmIChob3Jpem9udGFsR3V0dGVyID4gMCkge1xuICAgICAgcmVuZGVyR3V0dGVyKCdtYXJnaW4tbGVmdCcsIGhvcml6b250YWxHdXR0ZXIpO1xuICAgICAgcmVuZGVyR3V0dGVyKCdtYXJnaW4tcmlnaHQnLCBob3Jpem9udGFsR3V0dGVyKTtcbiAgICB9XG4gICAgaWYgKHZlcnRpY2FsR3V0dGVyID4gMCkge1xuICAgICAgcmVuZGVyR3V0dGVyKCdtYXJnaW4tdG9wJywgdmVydGljYWxHdXR0ZXIpO1xuICAgICAgcmVuZGVyR3V0dGVyKCdtYXJnaW4tYm90dG9tJywgdmVydGljYWxHdXR0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHB1YmxpYyBtZWRpYU1hdGNoZXI6IE1lZGlhTWF0Y2hlcixcbiAgICBwdWJsaWMgbmdab25lOiBOZ1pvbmUsXG4gICAgcHVibGljIHBsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRTZXJ2aWNlOiBOekJyZWFrcG9pbnRTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEd1dHRlclN0eWxlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMubnpHdXR0ZXIpIHtcbiAgICAgIHRoaXMuc2V0R3V0dGVyU3R5bGUoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICB0aGlzLmJyZWFrcG9pbnRTZXJ2aWNlXG4gICAgICAgIC5zdWJzY3JpYmUoZ3JpZFJlc3BvbnNpdmVNYXApXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRHdXR0ZXJTdHlsZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==