@intzi1992/mat-table-exporter
Version:
Provides exporting support for @angular/material tables
91 lines • 9.79 kB
JavaScript
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