UNPKG

@intzi1992/mat-table-exporter

Version:

Provides exporting support for @angular/material tables

135 lines (129 loc) 5.29 kB
import * as i0 from '@angular/core'; import { Host, Self, Optional, Directive, NgModule } from '@angular/core'; import * as i2 from '@angular/material/table'; import { MatTableModule } from '@angular/material/table'; import * as i1 from '@intzi1992/cdk-table-exporter'; import { CdkTableExporter, XLSX_LIGHTWEIGHT, CdkTableExporterModule } from '@intzi1992/cdk-table-exporter'; export * from '@intzi1992/cdk-table-exporter'; 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 }] }] }); class MatTableExporterModule { static forRoot(configuration) { return { ngModule: MatTableExporterModule, providers: [ { provide: XLSX_LIGHTWEIGHT, useValue: configuration.xlsxLightWeight } ] }; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MatTableExporterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); } static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: MatTableExporterModule, declarations: [MatTableExporterDirective], imports: [MatTableModule, CdkTableExporterModule], exports: [MatTableExporterDirective] }); } static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MatTableExporterModule, imports: [MatTableModule, CdkTableExporterModule] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MatTableExporterModule, decorators: [{ type: NgModule, args: [{ declarations: [MatTableExporterDirective], imports: [ MatTableModule, CdkTableExporterModule ], exports: [MatTableExporterDirective] }] }] }); /* * Public API Surface of mat-table-exporter */ /** * Generated bundle index. Do not edit. */ export { MatTableExporterDirective, MatTableExporterModule }; //# sourceMappingURL=intzi1992-mat-table-exporter.mjs.map