@intzi1992/mat-table-exporter
Version:
Provides exporting support for @angular/material tables
135 lines (129 loc) • 5.29 kB
JavaScript
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