ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
105 lines • 16 kB
JavaScript
/**
* 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';
import * as i0 from "@angular/core";
export class NzTableStyleService {
constructor() {
this.theadTemplate$ = new ReplaySubject(1);
this.tfootTemplate$ = new ReplaySubject(1);
this.tfootFixed$ = 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(([widthConfig, listOfWidth]) => (widthConfig.length ? widthConfig : listOfWidth)));
this.listOfAutoWidthPx$ = new ReplaySubject(1);
this.listOfListOfThWidthPx$ = merge(
/** init with manual width **/
this.manualWidthConfigPx$, combineLatest([this.listOfAutoWidthPx$, this.manualWidthConfigPx$]).pipe(map(([autoWidth, manualWidth]) => {
/** use autoWidth until column length match **/
if (autoWidth.length === manualWidth.length) {
return autoWidth.map((width, index) => {
if (width === '0px') {
return manualWidth[index] || null;
}
else {
return manualWidth[index] || width;
}
});
}
else {
return manualWidth;
}
})));
this.listOfMeasureColumn$ = new ReplaySubject(1);
this.listOfListOfThWidth$ = this.listOfAutoWidthPx$.pipe(map(list => list.map(width => parseInt(width, 10))));
this.enableAutoMeasure$ = new ReplaySubject(1);
}
setTheadTemplate(template) {
this.theadTemplate$.next(template);
}
setTfootTemplate(template) {
this.tfootTemplate$.next(template);
}
setTfootFixed(fixed) {
this.tfootFixed$.next(fixed);
}
setHasFixLeft(hasFixLeft) {
this.hasFixLeft$.next(hasFixLeft);
}
setHasFixRight(hasFixRight) {
this.hasFixRight$.next(hasFixRight);
}
setTableWidthConfig(widthConfig) {
this.tableWidthConfigPx$.next(widthConfig);
}
setListOfTh(listOfTh) {
let columnCount = 0;
listOfTh.forEach(th => {
columnCount += (th.colspan && +th.colspan) || (th.colSpan && +th.colSpan) || 1;
});
const listOfThPx = listOfTh.map(item => item.nzWidth);
this.columnCount$.next(columnCount);
this.listOfThWidthConfigPx$.next(listOfThPx);
}
setListOfMeasureColumn(listOfTh) {
const listOfKeys = [];
listOfTh.forEach(th => {
const length = (th.colspan && +th.colspan) || (th.colSpan && +th.colSpan) || 1;
for (let i = 0; i < length; i++) {
listOfKeys.push(`measure_key_${i}`);
}
});
this.listOfMeasureColumn$.next(listOfKeys);
}
setListOfAutoWidth(listOfAutoWidth) {
this.listOfAutoWidthPx$.next(listOfAutoWidth.map(width => `${width}px`));
}
setShowEmpty(showEmpty) {
this.showEmpty$.next(showEmpty);
}
setNoResult(noResult) {
this.noResult$.next(noResult);
}
setScroll(scrollX, scrollY) {
const enableAutoMeasure = !!(scrollX || scrollY);
if (!enableAutoMeasure) {
this.setListOfAutoWidth([]);
}
this.enableAutoMeasure$.next(enableAutoMeasure);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NzTableStyleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NzTableStyleService }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NzTableStyleService, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc3R5bGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvdGFibGUvc3JjL3RhYmxlLXN0eWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFRckMsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVFLG1CQUFjLEdBQUcsSUFBSSxhQUFhLENBQXlCLENBQUMsQ0FBQyxDQUFDO1FBQzlELG1CQUFjLEdBQUcsSUFBSSxhQUFhLENBQXlCLENBQUMsQ0FBQyxDQUFDO1FBQzlELGdCQUFXLEdBQUcsSUFBSSxhQUFhLENBQWlDLENBQUMsQ0FBQyxDQUFDO1FBQ25FLGdCQUFXLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUM7UUFDNUMsaUJBQVksR0FBRyxJQUFJLGFBQWEsQ0FBVSxDQUFDLENBQUMsQ0FBQztRQUM3QyxlQUFVLEdBQUcsSUFBSSxhQUFhLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsaUJBQVksR0FBRyxJQUFJLGFBQWEsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1QyxlQUFVLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsY0FBUyxHQUFHLElBQUksYUFBYSxDQUE4QyxDQUFDLENBQUMsQ0FBQztRQUN0RSwyQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBK0IsRUFBRSxDQUFDLENBQUM7UUFDL0Usd0JBQW1CLEdBQUcsSUFBSSxlQUFlLENBQStCLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLHlCQUFvQixHQUFHLGFBQWEsQ0FBQyxD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QUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQXFEO1FBQy9ELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBc0IsRUFBRSxPQUFzQjtRQUN0RCxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNsRCxDQUFDOzhHQXZHVSxtQkFBbUI7a0hBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1lcmdlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbmltcG9ydCB7IE56VGhNZWFzdXJlRGlyZWN0aXZlIH0gZnJvbSAnLi9jZWxsL3RoLW1lYXN1cmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IE56VGFibGVTdW1tYXJ5Rml4ZWRUeXBlIH0gZnJvbSAnLi90YWJsZS50eXBlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOelRhYmxlU3R5bGVTZXJ2aWNlIHtcbiAgdGhlYWRUZW1wbGF0ZSQgPSBuZXcgUmVwbGF5U3ViamVjdDxUZW1wbGF0ZVJlZjxOelNhZmVBbnk+PigxKTtcbiAgdGZvb3RUZW1wbGF0ZSQgPSBuZXcgUmVwbGF5U3ViamVjdDxUZW1wbGF0ZVJlZjxOelNhZmVBbnk+PigxKTtcbiAgdGZvb3RGaXhlZCQgPSBuZXcgUmVwbGF5U3ViamVjdDxOelRhYmxlU3VtbWFyeUZpeGVkVHlwZSB8IG51bGw+KDEpO1xuICBoYXNGaXhMZWZ0JCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KDEpO1xuICBoYXNGaXhSaWdodCQgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgaG9zdFdpZHRoJCA9IG5ldyBSZXBsYXlTdWJqZWN0PG51bWJlcj4oMSk7XG4gIGNvbHVtbkNvdW50JCA9IG5ldyBSZXBsYXlTdWJqZWN0PG51bWJlcj4oMSk7XG4gIHNob3dFbXB0eSQgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgbm9SZXN1bHQkID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nIHwgVGVtcGxhdGVSZWY8TnpTYWZlQW55PiB8IHVuZGVmaW5lZD4oMSk7XG4gIHByaXZhdGUgbGlzdE9mVGhXaWR0aENvbmZpZ1B4JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudWxsPj4oW10pO1xuICBwcml2YXRlIHRhYmxlV2lkdGhDb25maWdQeCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVsbD4+KFtdKTtcbiAgbWFudWFsV2lkdGhDb25maWdQeCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnRhYmxlV2lkdGhDb25maWdQeCQsIHRoaXMubGlzdE9mVGhXaWR0aENvbmZpZ1B4JF0pLnBpcGUoXG4gICAgbWFwKChbd2lkdGhDb25maWcsIGxpc3RPZldpZHRoXSkgPT4gKHdpZHRoQ29uZmlnLmxlbmd0aCA/IHdpZHRoQ29uZmlnIDogbGlzdE9mV2lkdGgpKVxuICApO1xuICBwcml2YXRlIGxpc3RPZkF1dG9XaWR0aFB4JCA9IG5ldyBSZXBsYXlTdWJqZWN0PHJlYWRvbmx5IHN0cmluZ1tdPigxKTtcbiAgbGlzdE9mTGlzdE9mVGhXaWR0aFB4JCA9IG1lcmdlKFxuICAgIC8qKiBpbml0IHdpdGggbWFudWFsIHdpZHRoICoqL1xuICAgIHRoaXMubWFudWFsV2lkdGhDb25maWdQeCQsXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5saXN0T2ZBdXRvV2lkdGhQeCQsIHRoaXMubWFudWFsV2lkdGhDb25maWdQeCRdKS5waXBlKFxuICAgICAgbWFwKChbYXV0b1dpZHRoLCBtYW51YWxXaWR0aF0pID0+IHtcbiAgICAgICAgLyoqIHVzZSBhdXRvV2lkdGggdW50aWwgY29sdW1uIGxlbmd0aCBtYXRjaCAqKi9cbiAgICAgICAgaWYgKGF1dG9XaWR0aC5sZW5ndGggPT09IG1hbnVhbFdpZHRoLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBhdXRvV2lkdGgubWFwKCh3aWR0aCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICh3aWR0aCA9PT0gJzBweCcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG1hbnVhbFdpZHRoW2luZGV4XSB8fCBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG1hbnVhbFdpZHRoW2luZGV4XSB8fCB3aWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbWFudWFsV2lkdGg7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICApO1xuICBsaXN0T2ZNZWFzdXJlQ29sdW1uJCA9IG5ldyBSZXBsYXlTdWJqZWN0PHJlYWRvbmx5IHN0cmluZ1tdPigxKTtcbiAgbGlzdE9mTGlzdE9mVGhXaWR0aCQgPSB0aGlzLmxpc3RPZkF1dG9XaWR0aFB4JC5waXBlKG1hcChsaXN0ID0+IGxpc3QubWFwKHdpZHRoID0+IHBhcnNlSW50KHdpZHRoLCAxMCkpKSk7XG4gIGVuYWJsZUF1dG9NZWFzdXJlJCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KDEpO1xuXG4gIHNldFRoZWFkVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlUmVmPE56U2FmZUFueT4pOiB2b2lkIHtcbiAgICB0aGlzLnRoZWFkVGVtcGxhdGUkLm5leHQodGVtcGxhdGUpO1xuICB9XG5cbiAgc2V0VGZvb3RUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8TnpTYWZlQW55Pik6IHZvaWQge1xuICAgIHRoaXMudGZvb3RUZW1wbGF0ZSQubmV4dCh0ZW1wbGF0ZSk7XG4gIH1cblxuICBzZXRUZm9vdEZpeGVkKGZpeGVkOiBOelRhYmxlU3VtbWFyeUZpeGVkVHlwZSB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLnRmb290Rml4ZWQkLm5leHQoZml4ZWQpO1xuICB9XG5cbiAgc2V0SGFzRml4TGVmdChoYXNGaXhMZWZ0OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5oYXNGaXhMZWZ0JC5uZXh0KGhhc0ZpeExlZnQpO1xuICB9XG5cbiAgc2V0SGFzRml4UmlnaHQoaGFzRml4UmlnaHQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmhhc0ZpeFJpZ2h0JC5uZXh0KGhhc0ZpeFJpZ2h0KTtcbiAgfVxuXG4gIHNldFRhYmxlV2lkdGhDb25maWcod2lkdGhDb25maWc6IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVsbD4pOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlV2lkdGhDb25maWdQeCQubmV4dCh3aWR0aENvbmZpZyk7XG4gIH1cblxuICBzZXRMaXN0T2ZUaChsaXN0T2ZUaDogcmVhZG9ubHkgTnpUaE1lYXN1cmVEaXJlY3RpdmVbXSk6IHZvaWQge1xuICAgIGxldCBjb2x1bW5Db3VudCA9IDA7XG4gICAgbGlzdE9mVGguZm9yRWFjaCh0aCA9PiB7XG4gICAgICBjb2x1bW5Db3VudCArPSAodGguY29sc3BhbiAmJiArdGguY29sc3BhbikgfHwgKHRoLmNvbFNwYW4gJiYgK3RoLmNvbFNwYW4pIHx8IDE7XG4gICAgfSk7XG4gICAgY29uc3QgbGlzdE9mVGhQeCA9IGxpc3RPZlRoLm1hcChpdGVtID0+IGl0ZW0ubnpXaWR0aCk7XG4gICAgdGhpcy5jb2x1bW5Db3VudCQubmV4dChjb2x1bW5Db3VudCk7XG4gICAgdGhpcy5saXN0T2ZUaFdpZHRoQ29uZmlnUHgkLm5leHQobGlzdE9mVGhQeCk7XG4gIH1cblxuICBzZXRMaXN0T2ZNZWFzdXJlQ29sdW1uKGxpc3RPZlRoOiByZWFkb25seSBOelRoTWVhc3VyZURpcmVjdGl2ZVtdKTogdm9pZCB7XG4gICAgY29uc3QgbGlzdE9mS2V5czogc3RyaW5nW10gPSBbXTtcbiAgICBsaXN0T2ZUaC5mb3JFYWNoKHRoID0+IHtcbiAgICAgIGNvbnN0IGxlbmd0aCA9ICh0aC5jb2xzcGFuICYmICt0aC5jb2xzcGFuKSB8fCAodGguY29sU3BhbiAmJiArdGguY29sU3BhbikgfHwgMTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGlzdE9mS2V5cy5wdXNoKGBtZWFzdXJlX2tleV8ke2l9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5saXN0T2ZNZWFzdXJlQ29sdW1uJC5uZXh0KGxpc3RPZktleXMpO1xuICB9XG5cbiAgc2V0TGlzdE9mQXV0b1dpZHRoKGxpc3RPZkF1dG9XaWR0aDogbnVtYmVyW10pOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RPZkF1dG9XaWR0aFB4JC5uZXh0KGxpc3RPZkF1dG9XaWR0aC5tYXAod2lkdGggPT4gYCR7d2lkdGh9cHhgKSk7XG4gIH1cblxuICBzZXRTaG93RW1wdHkoc2hvd0VtcHR5OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RW1wdHkkLm5leHQoc2hvd0VtcHR5KTtcbiAgfVxuXG4gIHNldE5vUmVzdWx0KG5vUmVzdWx0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxOelNhZmVBbnk+IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy5ub1Jlc3VsdCQubmV4dChub1Jlc3VsdCk7XG4gIH1cblxuICBzZXRTY3JvbGwoc2Nyb2xsWDogc3RyaW5nIHwgbnVsbCwgc2Nyb2xsWTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZUF1dG9NZWFzdXJlID0gISEoc2Nyb2xsWCB8fCBzY3JvbGxZKTtcbiAgICBpZiAoIWVuYWJsZUF1dG9NZWFzdXJlKSB7XG4gICAgICB0aGlzLnNldExpc3RPZkF1dG9XaWR0aChbXSk7XG4gICAgfVxuICAgIHRoaXMuZW5hYmxlQXV0b01lYXN1cmUkLm5leHQoZW5hYmxlQXV0b01lYXN1cmUpO1xuICB9XG59XG4iXX0=