UNPKG

@intzi1992/mat-table-exporter

Version:

Provides exporting support for @angular/material tables

91 lines 9.79 kB
import { Directive, Host, Optional, Self } from '@angular/core'; import { CdkTableExporter } from '@intzi1992/cdk-table-exporter'; import * as i0 from "@angular/core"; import * as i1 from "@intzi1992/cdk-table-exporter"; import * as i2 from "@angular/material/table"; export class MatTableExporterDirective extends CdkTableExporter { /** * Overriding ngAfterViewInit of TableExporter */ ngAfterViewInit() { this.exportStarted.subscribe(_ => { this.enablePaginator(false); }); this.exportCompleted.subscribe(_ => { this.enablePaginator(true); }); } constructor(serviceLocator, dataExtractor, table) { super(serviceLocator, dataExtractor, table); } /** * MatTable implementation of getPageCount */ getPageCount() { const pageSize = this.getPageSize(); if (pageSize == 0) { return 0; } const pageCount = this.getTotalItemsCount() / this.getPageSize(); return Math.ceil(pageCount) ?? 1; } /** * MatTable implementation of getPageSize */ getPageSize() { return this.getPaginator()?.pageSize ?? 0; } /** * MatTable implementation of getCurrentPageIndex */ getCurrentPageIndex() { return this.getPaginator()?.pageIndex ?? 0; } /** * MatTable implementation of getTotalItemsCount */ getTotalItemsCount() { return this.getPaginator()?.length ?? this.getDataSource()?.data?.length ?? 0; } /** * MatTable implementation of goToPage */ goToPage(index) { const paginator = this.getPaginator(); paginator.pageIndex = index; paginator._changePageSize(paginator.pageSize); } /** * MatTable implementation of getPageChangeObservable */ getPageChangeObservable() { return this.getPaginator()?.page; } getDataSource() { return this._cdkTable.dataSource; } getPaginator() { return this.getDataSource()?.paginator; } enablePaginator(value) { const paginator = this.getPaginator(); paginator.disabled = !value; paginator._changePageSize(paginator.pageSize); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MatTableExporterDirective, deps: [{ token: i1.ServiceLocatorService }, { token: i1.DataExtractorService }, { token: i2.MatTable, host: true, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: MatTableExporterDirective, selector: "[matTableExporter]", exportAs: ["matTableExporter"], usesInheritance: true, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MatTableExporterDirective, decorators: [{ type: Directive, args: [{ selector: '[matTableExporter]', exportAs: 'matTableExporter' }] }], ctorParameters: () => [{ type: i1.ServiceLocatorService }, { type: i1.DataExtractorService }, { type: i2.MatTable, decorators: [{ type: Host }, { type: Self }, { type: Optional }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LXRhYmxlLWV4cG9ydGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21hdC10YWJsZS1leHBvcnRlci9zcmMvbGliL21hdC10YWJsZS1leHBvcnRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUFFLGdCQUFnQixFQUErQyxNQUFNLCtCQUErQixDQUFDOzs7O0FBTzlHLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxnQkFBZ0I7SUFDN0Q7O09BRUc7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFDRSxjQUFxQyxFQUNyQyxhQUFtQyxFQUNQLEtBQW9CO1FBRWhELEtBQUssQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVk7UUFDakIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLElBQUksUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsUUFBUSxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsU0FBUyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRLENBQUMsS0FBYTtRQUMzQixNQUFNLFNBQVMsR0FBaUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BELFNBQVMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQzVCLFNBQVMsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNJLHVCQUF1QjtRQUM1QixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQUVPLGFBQWE7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQXFDLENBQUM7SUFDOUQsQ0FBQztJQUVPLFlBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsU0FBeUIsQ0FBQztJQUN6RCxDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQWM7UUFDcEMsTUFBTSxTQUFTLEdBQWlCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsRCxTQUFTLENBQUMsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQzVCLFNBQVMsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7K0dBbEZVLHlCQUF5QjttR0FBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCOzswQkFpQkksSUFBSTs7MEJBQUksSUFBSTs7MEJBQUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgSG9zdCwgT3B0aW9uYWwsIFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRUYWJsZSwgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgQ2RrVGFibGVFeHBvcnRlciwgRGF0YUV4dHJhY3RvclNlcnZpY2UsIFNlcnZpY2VMb2NhdG9yU2VydmljZSB9IGZyb20gJ0BpbnR6aTE5OTIvY2RrLXRhYmxlLWV4cG9ydGVyJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSBcInJ4anNcIjtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW21hdFRhYmxlRXhwb3J0ZXJdJyxcbiAgZXhwb3J0QXM6ICdtYXRUYWJsZUV4cG9ydGVyJ1xufSlcbmV4cG9ydCBjbGFzcyBNYXRUYWJsZUV4cG9ydGVyRGlyZWN0aXZlIGV4dGVuZHMgQ2RrVGFibGVFeHBvcnRlciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAvKipcbiAgICogT3ZlcnJpZGluZyBuZ0FmdGVyVmlld0luaXQgb2YgVGFibGVFeHBvcnRlclxuICAgKi9cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZXhwb3J0U3RhcnRlZC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICB0aGlzLmVuYWJsZVBhZ2luYXRvcihmYWxzZSk7XG4gICAgfSk7XG4gICAgdGhpcy5leHBvcnRDb21wbGV0ZWQuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgdGhpcy5lbmFibGVQYWdpbmF0b3IodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBzZXJ2aWNlTG9jYXRvcjogU2VydmljZUxvY2F0b3JTZXJ2aWNlLFxuICAgIGRhdGFFeHRyYWN0b3I6IERhdGFFeHRyYWN0b3JTZXJ2aWNlLFxuICAgIEBIb3N0KCkgQFNlbGYoKSBAT3B0aW9uYWwoKSB0YWJsZTogTWF0VGFibGU8YW55PlxuICApIHtcbiAgICBzdXBlcihzZXJ2aWNlTG9jYXRvciwgZGF0YUV4dHJhY3RvciwgdGFibGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdFRhYmxlIGltcGxlbWVudGF0aW9uIG9mIGdldFBhZ2VDb3VudFxuICAgKi9cbiAgcHVibGljIGdldFBhZ2VDb3VudCgpOiBudW1iZXIge1xuICAgIGNvbnN0IHBhZ2VTaXplID0gdGhpcy5nZXRQYWdlU2l6ZSgpO1xuICAgIGlmIChwYWdlU2l6ZSA9PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY29uc3QgcGFnZUNvdW50ID0gdGhpcy5nZXRUb3RhbEl0ZW1zQ291bnQoKSAvIHRoaXMuZ2V0UGFnZVNpemUoKTtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHBhZ2VDb3VudCkgPz8gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRUYWJsZSBpbXBsZW1lbnRhdGlvbiBvZiBnZXRQYWdlU2l6ZVxuICAgKi9cbiAgcHVibGljIGdldFBhZ2VTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UGFnaW5hdG9yKCk/LnBhZ2VTaXplID8/IDA7XG4gIH1cblxuICAvKipcbiAgICogTWF0VGFibGUgaW1wbGVtZW50YXRpb24gb2YgZ2V0Q3VycmVudFBhZ2VJbmRleFxuICAgKi9cbiAgcHVibGljIGdldEN1cnJlbnRQYWdlSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRQYWdpbmF0b3IoKT8ucGFnZUluZGV4ID8/IDA7XG4gIH1cblxuICAvKipcbiAgICogTWF0VGFibGUgaW1wbGVtZW50YXRpb24gb2YgZ2V0VG90YWxJdGVtc0NvdW50XG4gICAqL1xuICBwdWJsaWMgZ2V0VG90YWxJdGVtc0NvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UGFnaW5hdG9yKCk/Lmxlbmd0aCA/PyB0aGlzLmdldERhdGFTb3VyY2UoKT8uZGF0YT8ubGVuZ3RoID8/IDA7XG4gIH1cblxuICAvKipcbiAgICogTWF0VGFibGUgaW1wbGVtZW50YXRpb24gb2YgZ29Ub1BhZ2VcbiAgICovXG4gIHB1YmxpYyBnb1RvUGFnZShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3IgPSB0aGlzLmdldFBhZ2luYXRvcigpO1xuICAgIHBhZ2luYXRvci5wYWdlSW5kZXggPSBpbmRleDtcbiAgICBwYWdpbmF0b3IuX2NoYW5nZVBhZ2VTaXplKHBhZ2luYXRvci5wYWdlU2l6ZSk7XG4gIH1cblxuICAvKipcbiAgICogTWF0VGFibGUgaW1wbGVtZW50YXRpb24gb2YgZ2V0UGFnZUNoYW5nZU9ic2VydmFibGVcbiAgICovXG4gIHB1YmxpYyBnZXRQYWdlQ2hhbmdlT2JzZXJ2YWJsZSgpOiBPYnNlcnZhYmxlPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmdldFBhZ2luYXRvcigpPy5wYWdlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREYXRhU291cmNlKCk6IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fY2RrVGFibGUuZGF0YVNvdXJjZSBhcyBNYXRUYWJsZURhdGFTb3VyY2U8YW55PjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFnaW5hdG9yKCk6IE1hdFBhZ2luYXRvciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGF0YVNvdXJjZSgpPy5wYWdpbmF0b3IgYXMgTWF0UGFnaW5hdG9yO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGVQYWdpbmF0b3IodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvciA9IHRoaXMuZ2V0UGFnaW5hdG9yKCk7XG4gICAgICBwYWdpbmF0b3IuZGlzYWJsZWQgPSAhdmFsdWU7XG4gICAgICBwYWdpbmF0b3IuX2NoYW5nZVBhZ2VTaXplKHBhZ2luYXRvci5wYWdlU2l6ZSk7XG4gIH1cblxufVxuIl19