UNPKG

ng-zorro-antd

Version:

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

260 lines 17.8 kB
/** * @fileoverview added by tsickle * Generated from: src/table-style.service.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 { Injectable } from '@angular/core'; import { BehaviorSubject, combineLatest, merge, ReplaySubject } from 'rxjs'; import { map } from 'rxjs/operators'; var NzTableStyleService = /** @class */ (function () { function NzTableStyleService() { this.theadTemplate$ = new ReplaySubject(1); this.hasFixLeft$ = new ReplaySubject(1); this.hasFixRight$ = new ReplaySubject(1); this.hostWidth$ = new ReplaySubject(1); this.columnCount$ = new ReplaySubject(1); this.showEmpty$ = new ReplaySubject(1); this.noResult$ = new ReplaySubject(1); this.listOfThWidthConfigPx$ = new BehaviorSubject([]); this.tableWidthConfigPx$ = new BehaviorSubject([]); this.manualWidthConfigPx$ = combineLatest([this.tableWidthConfigPx$, this.listOfThWidthConfigPx$]).pipe(map((/** * @param {?} __0 * @return {?} */ function (_a) { var _b = __read(_a, 2), widthConfig = _b[0], listOfWidth = _b[1]; return (widthConfig.length ? widthConfig : listOfWidth); }))); this.listOfAutoWidthPx$ = new ReplaySubject(1); this.listOfListOfThWidthPx$ = merge(this.manualWidthConfigPx$, combineLatest([this.listOfAutoWidthPx$, this.manualWidthConfigPx$]).pipe(map((/** * @param {?} __0 * @return {?} */ function (_a) { var _b = __read(_a, 2), autoWidth = _b[0], manualWidth = _b[1]; /** use autoWidth until column length match **/ return autoWidth.length !== manualWidth.length ? manualWidth : autoWidth; })))); this.listOfMeasureColumn$ = new ReplaySubject(1); this.listOfListOfThWidth$ = this.listOfAutoWidthPx$.pipe(map((/** * @param {?} list * @return {?} */ function (list) { return list.map((/** * @param {?} width * @return {?} */ function (width) { return parseInt(width, 10); })); }))); this.enableAutoMeasure$ = new ReplaySubject(1); } /** * @param {?} template * @return {?} */ NzTableStyleService.prototype.setTheadTemplate = /** * @param {?} template * @return {?} */ function (template) { this.theadTemplate$.next(template); }; /** * @param {?} hasFixLeft * @return {?} */ NzTableStyleService.prototype.setHasFixLeft = /** * @param {?} hasFixLeft * @return {?} */ function (hasFixLeft) { this.hasFixLeft$.next(hasFixLeft); }; /** * @param {?} hasFixRight * @return {?} */ NzTableStyleService.prototype.setHasFixRight = /** * @param {?} hasFixRight * @return {?} */ function (hasFixRight) { this.hasFixRight$.next(hasFixRight); }; /** * @param {?} widthConfig * @return {?} */ NzTableStyleService.prototype.setTableWidthConfig = /** * @param {?} widthConfig * @return {?} */ function (widthConfig) { this.tableWidthConfigPx$.next(widthConfig); }; /** * @param {?} listOfTh * @return {?} */ NzTableStyleService.prototype.setListOfTh = /** * @param {?} listOfTh * @return {?} */ function (listOfTh) { /** @type {?} */ var columnCount = 0; listOfTh.forEach((/** * @param {?} th * @return {?} */ function (th) { columnCount += (th.colspan && +th.colspan) || 1; })); /** @type {?} */ var listOfThPx = listOfTh.map((/** * @param {?} item * @return {?} */ function (item) { return item.nzWidth; })); this.columnCount$.next(columnCount); this.listOfThWidthConfigPx$.next(listOfThPx); }; /** * @param {?} listOfTh * @return {?} */ NzTableStyleService.prototype.setListOfMeasureColumn = /** * @param {?} listOfTh * @return {?} */ function (listOfTh) { /** @type {?} */ var listOfKeys = []; listOfTh.forEach((/** * @param {?} th * @return {?} */ function (th) { /** @type {?} */ var length = (th.colspan && +th.colspan) || 1; for (var i = 0; i < length; i++) { listOfKeys.push("measure_key_" + i); } })); this.listOfMeasureColumn$.next(listOfKeys); }; /** * @param {?} listOfAutoWidth * @return {?} */ NzTableStyleService.prototype.setListOfAutoWidth = /** * @param {?} listOfAutoWidth * @return {?} */ function (listOfAutoWidth) { this.listOfAutoWidthPx$.next(listOfAutoWidth.map((/** * @param {?} width * @return {?} */ function (width) { return width + "px"; }))); }; /** * @param {?} showEmpty * @return {?} */ NzTableStyleService.prototype.setShowEmpty = /** * @param {?} showEmpty * @return {?} */ function (showEmpty) { this.showEmpty$.next(showEmpty); }; /** * @param {?} noResult * @return {?} */ NzTableStyleService.prototype.setNoResult = /** * @param {?} noResult * @return {?} */ function (noResult) { this.noResult$.next(noResult); }; /** * @param {?} scrollX * @param {?} scrollY * @return {?} */ NzTableStyleService.prototype.setScroll = /** * @param {?} scrollX * @param {?} scrollY * @return {?} */ function (scrollX, scrollY) { /** @type {?} */ var enableAutoMeasure = !!(scrollX || scrollY); if (!enableAutoMeasure) { this.setListOfAutoWidth([]); } this.enableAutoMeasure$.next(enableAutoMeasure); }; NzTableStyleService.decorators = [ { type: Injectable } ]; /** @nocollapse */ NzTableStyleService.ctorParameters = function () { return []; }; return NzTableStyleService; }()); export { NzTableStyleService }; if (false) { /** @type {?} */ NzTableStyleService.prototype.theadTemplate$; /** @type {?} */ NzTableStyleService.prototype.hasFixLeft$; /** @type {?} */ NzTableStyleService.prototype.hasFixRight$; /** @type {?} */ NzTableStyleService.prototype.hostWidth$; /** @type {?} */ NzTableStyleService.prototype.columnCount$; /** @type {?} */ NzTableStyleService.prototype.showEmpty$; /** @type {?} */ NzTableStyleService.prototype.noResult$; /** * @type {?} * @private */ NzTableStyleService.prototype.listOfThWidthConfigPx$; /** * @type {?} * @private */ NzTableStyleService.prototype.tableWidthConfigPx$; /** * @type {?} * @private */ NzTableStyleService.prototype.manualWidthConfigPx$; /** * @type {?} * @private */ NzTableStyleService.prototype.listOfAutoWidthPx$; /** @type {?} */ NzTableStyleService.prototype.listOfListOfThWidthPx$; /** @type {?} */ NzTableStyleService.prototype.listOfMeasureColumn$; /** @type {?} */ NzTableStyleService.prototype.listOfListOfThWidth$; /** @type {?} */ NzTableStyleService.prototype.enableAutoMeasure$; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc3R5bGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQvdGFibGUvIiwic291cmNlcyI6WyJzcmMvdGFibGUtc3R5bGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUFFLFVBQVUsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQztJQXFGRTtRQW5GQSxtQkFBYyxHQUFHLElBQUksYUFBYSxDQUF5QixDQUFDLENBQUMsQ0FBQztRQUM5RCxnQkFBVyxHQUFHLElBQUksYUFBYSxDQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzVDLGlCQUFZLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUM7UUFDN0MsZUFBVSxHQUFHLElBQUksYUFBYSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzFDLGlCQUFZLEdBQUcsSUFBSSxhQUFhLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsZUFBVSxHQUFHLElBQUksYUFBYSxDQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzNDLGNBQVMsR0FBRyxJQUFJLGFBQWEsQ0FBOEMsQ0FBQyxDQUFDLENBQUM7UUFDdEUsMkJBQXNCLEdBQUcsSUFBSSxlQUFlLENBQXVCLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLHdCQUFtQixHQUFHLElBQUksZUFBZSxDQUF1QixFQUFFLENBQUMsQ0FBQztRQUNwRSx5QkFBb0IsR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3hHLEdBQUc7Ozs7UUFBQyxVQUFDLEVBQTBCO2dCQUExQixrQkFBMEIsRUFBekIsbUJB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QUE0Qzs7SUFDNUMseUNBQTJDOztJQUMzQyx3Q0FBOEU7Ozs7O0lBQzlFLHFEQUErRTs7Ozs7SUFDL0Usa0RBQTRFOzs7OztJQUM1RSxtREFFRTs7Ozs7SUFDRixpREFBNEQ7O0lBQzVELHFEQVFFOztJQUNGLG1EQUFzRDs7SUFDdEQsbURBQXlHOztJQUN6RyxpREFBbUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1lcmdlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOelRoTWVhc3VyZURpcmVjdGl2ZSB9IGZyb20gJy4vY2VsbC90aC1tZWFzdXJlLmRpcmVjdGl2ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOelRhYmxlU3R5bGVTZXJ2aWNlIHtcbiAgdGhlYWRUZW1wbGF0ZSQgPSBuZXcgUmVwbGF5U3ViamVjdDxUZW1wbGF0ZVJlZjxOelNhZmVBbnk+PigxKTtcbiAgaGFzRml4TGVmdCQgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgaGFzRml4UmlnaHQkID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gIGhvc3RXaWR0aCQgPSBuZXcgUmVwbGF5U3ViamVjdDxudW1iZXI+KDEpO1xuICBjb2x1bW5Db3VudCQgPSBuZXcgUmVwbGF5U3ViamVjdDxudW1iZXI+KDEpO1xuICBzaG93RW1wdHkkID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gIG5vUmVzdWx0JCA9IG5ldyBSZXBsYXlTdWJqZWN0PHN0cmluZyB8IFRlbXBsYXRlUmVmPE56U2FmZUFueT4gfCB1bmRlZmluZWQ+KDEpO1xuICBwcml2YXRlIGxpc3RPZlRoV2lkdGhDb25maWdQeCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PHN0cmluZyB8IG51bGw+PihbXSk7XG4gIHByaXZhdGUgdGFibGVXaWR0aENvbmZpZ1B4JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8c3RyaW5nIHwgbnVsbD4+KFtdKTtcbiAgcHJpdmF0ZSBtYW51YWxXaWR0aENvbmZpZ1B4JCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMudGFibGVXaWR0aENvbmZpZ1B4JCwgdGhpcy5saXN0T2ZUaFdpZHRoQ29uZmlnUHgkXSkucGlwZShcbiAgICBtYXAoKFt3aWR0aENvbmZpZywgbGlzdE9mV2lkdGhdKSA9PiAod2lkdGhDb25maWcubGVuZ3RoID8gd2lkdGhDb25maWcgOiBsaXN0T2ZXaWR0aCkpXG4gICk7XG4gIHByaXZhdGUgbGlzdE9mQXV0b1dpZHRoUHgkID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nW10+KDEpO1xuICBsaXN0T2ZMaXN0T2ZUaFdpZHRoUHgkID0gbWVyZ2UoXG4gICAgdGhpcy5tYW51YWxXaWR0aENvbmZpZ1B4JCxcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmxpc3RPZkF1dG9XaWR0aFB4JCwgdGhpcy5tYW51YWxXaWR0aENvbmZpZ1B4JF0pLnBpcGUoXG4gICAgICBtYXAoKFthdXRvV2lkdGgsIG1hbnVhbFdpZHRoXSkgPT4ge1xuICAgICAgICAvKiogdXNlIGF1dG9XaWR0aCB1bnRpbCBjb2x1bW4gbGVuZ3RoIG1hdGNoICoqL1xuICAgICAgICByZXR1cm4gYXV0b1dpZHRoLmxlbmd0aCAhPT0gbWFudWFsV2lkdGgubGVuZ3RoID8gbWFudWFsV2lkdGggOiBhdXRvV2lkdGg7XG4gICAgICB9KVxuICAgIClcbiAgKTtcbiAgbGlzdE9mTWVhc3VyZUNvbHVtbiQgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmdbXT4oMSk7XG4gIGxpc3RPZkxpc3RPZlRoV2lkdGgkID0gdGhpcy5saXN0T2ZBdXRvV2lkdGhQeCQucGlwZShtYXAobGlzdCA9PiBsaXN0Lm1hcCh3aWR0aCA9PiBwYXJzZUludCh3aWR0aCwgMTApKSkpO1xuICBlbmFibGVBdXRvTWVhc3VyZSQgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcblxuICBzZXRUaGVhZFRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxOelNhZmVBbnk+KTogdm9pZCB7XG4gICAgdGhpcy50aGVhZFRlbXBsYXRlJC5uZXh0KHRlbXBsYXRlKTtcbiAgfVxuXG4gIHNldEhhc0ZpeExlZnQoaGFzRml4TGVmdDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaGFzRml4TGVmdCQubmV4dChoYXNGaXhMZWZ0KTtcbiAgfVxuXG4gIHNldEhhc0ZpeFJpZ2h0KGhhc0ZpeFJpZ2h0OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5oYXNGaXhSaWdodCQubmV4dChoYXNGaXhSaWdodCk7XG4gIH1cblxuICBzZXRUYWJsZVdpZHRoQ29uZmlnKHdpZHRoQ29uZmlnOiBBcnJheTxzdHJpbmcgfCBudWxsPik6IHZvaWQge1xuICAgIHRoaXMudGFibGVXaWR0aENvbmZpZ1B4JC5uZXh0KHdpZHRoQ29uZmlnKTtcbiAgfVxuXG4gIHNldExpc3RPZlRoKGxpc3RPZlRoOiBOelRoTWVhc3VyZURpcmVjdGl2ZVtdKTogdm9pZCB7XG4gICAgbGV0IGNvbHVtbkNvdW50ID0gMDtcbiAgICBsaXN0T2ZUaC5mb3JFYWNoKHRoID0+IHtcbiAgICAgIGNvbHVtbkNvdW50ICs9ICh0aC5jb2xzcGFuICYmICt0aC5jb2xzcGFuKSB8fCAxO1xuICAgIH0pO1xuICAgIGNvbnN0IGxpc3RPZlRoUHggPSBsaXN0T2ZUaC5tYXAoaXRlbSA9PiBpdGVtLm56V2lkdGgpO1xuICAgIHRoaXMuY29sdW1uQ291bnQkLm5leHQoY29sdW1uQ291bnQpO1xuICAgIHRoaXMubGlzdE9mVGhXaWR0aENvbmZpZ1B4JC5uZXh0KGxpc3RPZlRoUHgpO1xuICB9XG5cbiAgc2V0TGlzdE9mTWVhc3VyZUNvbHVtbihsaXN0T2ZUaDogTnpUaE1lYXN1cmVEaXJlY3RpdmVbXSk6IHZvaWQge1xuICAgIGNvbnN0IGxpc3RPZktleXM6IHN0cmluZ1tdID0gW107XG4gICAgbGlzdE9mVGguZm9yRWFjaCh0aCA9PiB7XG4gICAgICBjb25zdCBsZW5ndGggPSAodGguY29sc3BhbiAmJiArdGguY29sc3BhbikgfHwgMTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGlzdE9mS2V5cy5wdXNoKGBtZWFzdXJlX2tleV8ke2l9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5saXN0T2ZNZWFzdXJlQ29sdW1uJC5uZXh0KGxpc3RPZktleXMpO1xuICB9XG5cbiAgc2V0TGlzdE9mQXV0b1dpZHRoKGxpc3RPZkF1dG9XaWR0aDogbnVtYmVyW10pOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RPZkF1dG9XaWR0aFB4JC5uZXh0KGxpc3RPZkF1dG9XaWR0aC5tYXAod2lkdGggPT4gYCR7d2lkdGh9cHhgKSk7XG4gIH1cblxuICBzZXRTaG93RW1wdHkoc2hvd0VtcHR5OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RW1wdHkkLm5leHQoc2hvd0VtcHR5KTtcbiAgfVxuXG4gIHNldE5vUmVzdWx0KG5vUmVzdWx0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxOelNhZmVBbnk+IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy5ub1Jlc3VsdCQubmV4dChub1Jlc3VsdCk7XG4gIH1cblxuICBzZXRTY3JvbGwoc2Nyb2xsWDogc3RyaW5nIHwgbnVsbCwgc2Nyb2xsWTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZUF1dG9NZWFzdXJlID0gISEoc2Nyb2xsWCB8fCBzY3JvbGxZKTtcbiAgICBpZiAoIWVuYWJsZUF1dG9NZWFzdXJlKSB7XG4gICAgICB0aGlzLnNldExpc3RPZkF1dG9XaWR0aChbXSk7XG4gICAgfVxuICAgIHRoaXMuZW5hYmxlQXV0b01lYXN1cmUkLm5leHQoZW5hYmxlQXV0b01lYXN1cmUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7fVxufVxuIl19