UNPKG

material-dynamic-table

Version:

Dynamic table component for angular built on top of angular material table. It offers sorting, pagination, filtering per column and the ability to specify content types and components used for displaying them.

74 lines 10.9 kB
/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ import { ChangeDetectionStrategy, Component, ElementRef, Inject, NgZone, ViewChild, ViewEncapsulation, } from '@angular/core'; import { DOCUMENT } from '@angular/common'; import { CdkColumnDef, _CoalescedStyleScheduler, _COALESCED_STYLE_SCHEDULER, } from '@angular/cdk/table'; import { Directionality } from '@angular/cdk/bidi'; import { ResizeOverlayHandle } from './cdk-overlay-handle'; import { ColumnResize } from './column-resize'; import { ColumnResizeNotifierSource } from './column-resize-notifier'; import { HeaderRowEventDispatcher } from './event-dispatcher'; import { ResizeRef } from './resize-ref'; import * as i0 from "@angular/core"; import * as i1 from "@angular/cdk/table"; import * as i2 from "./column-resize"; import * as i3 from "@angular/cdk/bidi"; import * as i4 from "./event-dispatcher"; import * as i5 from "./column-resize-notifier"; import * as i6 from "./resize-ref"; /** * Component shown over the edge of a resizable column that is responsible * for handling column resize mouse events and displaying a vertical line along the column edge. */ export class MatColumnResizeOverlayHandle extends ResizeOverlayHandle { constructor(columnDef, columnResize, directionality, elementRef, eventDispatcher, ngZone, resizeNotifier, resizeRef, styleScheduler, document) { super(); this.columnDef = columnDef; this.columnResize = columnResize; this.directionality = directionality; this.elementRef = elementRef; this.eventDispatcher = eventDispatcher; this.ngZone = ngZone; this.resizeNotifier = resizeNotifier; this.resizeRef = resizeRef; this.styleScheduler = styleScheduler; this.document = document; } updateResizeActive(active) { super.updateResizeActive(active); const originHeight = this.resizeRef.origin.nativeElement.offsetHeight; this.topElement.nativeElement.style.height = `${originHeight}px`; this.resizeRef.overlayRef.updateSize({ height: active ? this.columnResize.getTableHeight() : originHeight, }); } /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MatColumnResizeOverlayHandle, deps: [{ token: i1.CdkColumnDef }, { token: i2.ColumnResize }, { token: i3.Directionality }, { token: i0.ElementRef }, { token: i4.HeaderRowEventDispatcher }, { token: i0.NgZone }, { token: i5.ColumnResizeNotifierSource }, { token: i6.ResizeRef }, { token: _COALESCED_STYLE_SCHEDULER }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); } /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MatColumnResizeOverlayHandle, isStandalone: true, selector: "ng-component", host: { classAttribute: "mat-column-resize-overlay-thumb" }, viewQueries: [{ propertyName: "topElement", first: true, predicate: ["top"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: '<div #top class="mat-column-resize-overlay-thumb-top"></div>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MatColumnResizeOverlayHandle, decorators: [{ type: Component, args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'mat-column-resize-overlay-thumb' }, template: '<div #top class="mat-column-resize-overlay-thumb-top"></div>', standalone: true, }] }], ctorParameters: () => [{ type: i1.CdkColumnDef }, { type: i2.ColumnResize }, { type: i3.Directionality }, { type: i0.ElementRef }, { type: i4.HeaderRowEventDispatcher }, { type: i0.NgZone }, { type: i5.ColumnResizeNotifierSource }, { type: i6.ResizeRef }, { type: i1._CoalescedStyleScheduler, decorators: [{ type: Inject, args: [_COALESCED_STYLE_SCHEDULER] }] }, { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT] }] }], propDecorators: { topElement: [{ type: ViewChild, args: ['top', { static: true }] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1oYW5kbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1keW5hbWljLXRhYmxlL3NyYy9saWIvY29sdW1uLXJlc2l6ZS9vdmVybGF5LWhhbmRsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLHdCQUF3QixFQUN4QiwwQkFBMEIsR0FDM0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7O0FBRXpDOzs7R0FHRztBQVFILE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxtQkFBbUI7SUFLbkUsWUFDcUIsU0FBdUIsRUFDdkIsWUFBMEIsRUFDMUIsY0FBOEIsRUFDOUIsVUFBc0IsRUFDdEIsZUFBeUMsRUFDekMsTUFBYyxFQUNkLGNBQTBDLEVBQzFDLFNBQW9CLEVBRXBCLGNBQXdDLEVBQ3pDLFFBQWE7UUFFL0IsS0FBSyxFQUFFLENBQUM7UUFaVyxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3ZCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLG9CQUFlLEdBQWYsZUFBZSxDQUEwQjtRQUN6QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQTRCO1FBQzFDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFFcEIsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBSTNELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFa0Isa0JBQWtCLENBQUMsTUFBZTtRQUNuRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFakMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztRQUN0RSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsWUFBWSxJQUFJLENBQUM7UUFDakUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1lBQ25DLE1BQU0sRUFBRSxNQUFNO2dCQUNaLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRTtnQkFDcEMsQ0FBQyxDQUFDLFlBQVk7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztrSUFoQ1UsNEJBQTRCLG1RQWM3QiwwQkFBMEIsYUFFMUIsUUFBUTtzSEFoQlAsNEJBQTRCLDZRQUg3Qiw4REFBOEQ7OzRGQUc3RCw0QkFBNEI7a0JBUHhDLFNBQVM7bUJBQUM7b0JBQ1QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUU7b0JBQ3BELFFBQVEsRUFBRSw4REFBOEQ7b0JBQ3hFLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBZUksTUFBTTsyQkFBQywwQkFBMEI7OzBCQUVqQyxNQUFNOzJCQUFDLFFBQVE7eUNBYmtCLFVBQVU7c0JBQTdDLFNBQVM7dUJBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKlxyXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxyXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXHJcbiAqL1xyXG5cclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbmplY3QsXHJcbiAgTmdab25lLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIENka0NvbHVtbkRlZixcclxuICBfQ29hbGVzY2VkU3R5bGVTY2hlZHVsZXIsXHJcbiAgX0NPQUxFU0NFRF9TVFlMRV9TQ0hFRFVMRVIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RhYmxlJztcclxuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCB7IFJlc2l6ZU92ZXJsYXlIYW5kbGUgfSBmcm9tICcuL2Nkay1vdmVybGF5LWhhbmRsZSc7XHJcbmltcG9ydCB7IENvbHVtblJlc2l6ZSB9IGZyb20gJy4vY29sdW1uLXJlc2l6ZSc7XHJcbmltcG9ydCB7IENvbHVtblJlc2l6ZU5vdGlmaWVyU291cmNlIH0gZnJvbSAnLi9jb2x1bW4tcmVzaXplLW5vdGlmaWVyJztcclxuaW1wb3J0IHsgSGVhZGVyUm93RXZlbnREaXNwYXRjaGVyIH0gZnJvbSAnLi9ldmVudC1kaXNwYXRjaGVyJztcclxuaW1wb3J0IHsgUmVzaXplUmVmIH0gZnJvbSAnLi9yZXNpemUtcmVmJztcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnQgc2hvd24gb3ZlciB0aGUgZWRnZSBvZiBhIHJlc2l6YWJsZSBjb2x1bW4gdGhhdCBpcyByZXNwb25zaWJsZVxyXG4gKiBmb3IgaGFuZGxpbmcgY29sdW1uIHJlc2l6ZSBtb3VzZSBldmVudHMgYW5kIGRpc3BsYXlpbmcgYSB2ZXJ0aWNhbCBsaW5lIGFsb25nIHRoZSBjb2x1bW4gZWRnZS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgaG9zdDogeyAnY2xhc3MnOiAnbWF0LWNvbHVtbi1yZXNpemUtb3ZlcmxheS10aHVtYicgfSxcclxuICB0ZW1wbGF0ZTogJzxkaXYgI3RvcCBjbGFzcz1cIm1hdC1jb2x1bW4tcmVzaXplLW92ZXJsYXktdGh1bWItdG9wXCI+PC9kaXY+JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0Q29sdW1uUmVzaXplT3ZlcmxheUhhbmRsZSBleHRlbmRzIFJlc2l6ZU92ZXJsYXlIYW5kbGUge1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBkb2N1bWVudDogRG9jdW1lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3RvcCcsIHsgc3RhdGljOiB0cnVlIH0pIHRvcEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBjb2x1bW5EZWY6IENka0NvbHVtbkRlZixcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBjb2x1bW5SZXNpemU6IENvbHVtblJlc2l6ZSxcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBkaXJlY3Rpb25hbGl0eTogRGlyZWN0aW9uYWxpdHksXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBldmVudERpc3BhdGNoZXI6IEhlYWRlclJvd0V2ZW50RGlzcGF0Y2hlcixcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByb3RlY3RlZCByZWFkb25seSByZXNpemVOb3RpZmllcjogQ29sdW1uUmVzaXplTm90aWZpZXJTb3VyY2UsXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVzaXplUmVmOiBSZXNpemVSZWYsXHJcbiAgICBASW5qZWN0KF9DT0FMRVNDRURfU1RZTEVfU0NIRURVTEVSKVxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0eWxlU2NoZWR1bGVyOiBfQ29hbGVzY2VkU3R5bGVTY2hlZHVsZXIsXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBkb2N1bWVudDogYW55LFxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudDtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGVSZXNpemVBY3RpdmUoYWN0aXZlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBzdXBlci51cGRhdGVSZXNpemVBY3RpdmUoYWN0aXZlKTtcclxuXHJcbiAgICBjb25zdCBvcmlnaW5IZWlnaHQgPSB0aGlzLnJlc2l6ZVJlZi5vcmlnaW4ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcbiAgICB0aGlzLnRvcEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHtvcmlnaW5IZWlnaHR9cHhgO1xyXG4gICAgdGhpcy5yZXNpemVSZWYub3ZlcmxheVJlZi51cGRhdGVTaXplKHtcclxuICAgICAgaGVpZ2h0OiBhY3RpdmVcclxuICAgICAgICA/IHRoaXMuY29sdW1uUmVzaXplLmdldFRhYmxlSGVpZ2h0KClcclxuICAgICAgICA6IG9yaWdpbkhlaWdodCxcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=