UNPKG

@taiga-ui/addon-table

Version:

A library to display tabled data with filters, search, group actions, etc.

33 lines 9.26 kB
import { AsyncPipe, NgForOf, NgIf, NgTemplateOutlet } from '@angular/common'; import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, forwardRef, inject, } from '@angular/core'; import { EMPTY_QUERY } from '@taiga-ui/cdk/constants'; import { map, startWith } from 'rxjs'; import { TuiTableHead } from '../directives/head.directive'; import { TuiTableDirective } from '../directives/table.directive'; import { TUI_TABLE_PROVIDER } from '../providers/table.provider'; import { TuiTableTh } from '../th/th.component'; import * as i0 from "@angular/core"; class TuiTableThGroup { constructor() { this.heads = EMPTY_QUERY; this.heads$ = null; this.table = inject(forwardRef(() => TuiTableDirective)); } ngAfterContentInit() { this.heads$ = this.heads.changes.pipe(startWith(null), map(() => this.heads.reduce((record, item) => ({ ...record, [item.tuiHead]: item }), {}))); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTableThGroup, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiTableThGroup, isStandalone: true, selector: "tr[tuiThGroup]", providers: [TUI_TABLE_PROVIDER], queries: [{ propertyName: "th", first: true, predicate: i0.forwardRef(function () { return TuiTableTh; }), descendants: true }, { propertyName: "heads", predicate: i0.forwardRef(function () { return TuiTableHead; }) }], ngImport: i0, template: "<ng-content />\n<ng-container *ngIf=\"heads$ | async as headings\">\n <ng-container\n *ngFor=\"let key of table.columns\"\n [ngTemplateOutlet]=\"headings?.[key]?.template || plain\"\n [ngTemplateOutletContext]=\"{$implicit: key}\"\n />\n <ng-template\n #plain\n let-key\n >\n <th\n *ngIf=\"!th && !heads.length\"\n tuiTh\n >\n {{ key.toString() }}\n </th>\n </ng-template>\n</ng-container>\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: TuiTableTh, selector: "th[tuiTh]", inputs: ["minWidth", "maxWidth", "sorter", "resizable", "sticky", "requiredSort"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } export { TuiTableThGroup }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTableThGroup, decorators: [{ type: Component, args: [{ standalone: true, selector: 'tr[tuiThGroup]', imports: [AsyncPipe, NgForOf, NgIf, NgTemplateOutlet, TuiTableTh], changeDetection: ChangeDetectionStrategy.OnPush, providers: [TUI_TABLE_PROVIDER], template: "<ng-content />\n<ng-container *ngIf=\"heads$ | async as headings\">\n <ng-container\n *ngFor=\"let key of table.columns\"\n [ngTemplateOutlet]=\"headings?.[key]?.template || plain\"\n [ngTemplateOutletContext]=\"{$implicit: key}\"\n />\n <ng-template\n #plain\n let-key\n >\n <th\n *ngIf=\"!th && !heads.length\"\n tuiTh\n >\n {{ key.toString() }}\n </th>\n </ng-template>\n</ng-container>\n" }] }], propDecorators: { th: [{ type: ContentChild, args: [forwardRef(() => TuiTableTh)] }], heads: [{ type: ContentChildren, args: [forwardRef(() => TuiTableHead)] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGgtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tdGFibGUvY29tcG9uZW50cy90YWJsZS90aC1ncm91cC90aC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi10YWJsZS9jb21wb25lbnRzL3RhYmxlL3RoLWdyb3VwL3RoLWdyb3VwLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDM0UsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsTUFBTSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsR0FBRyxFQUFtQixTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFOUMsTUFRYSxlQUFlO0lBUjVCO1FBZXVCLFVBQUssR0FBK0IsV0FBVyxDQUFDO1FBRXpELFdBQU0sR0FBaUUsSUFBSSxDQUFDO1FBRW5FLFVBQUssR0FBRyxNQUFNLENBQzdCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUN0QyxDQUFDO0tBYUw7SUFYVSxrQkFBa0I7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ2pDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixHQUFHLENBQUMsR0FBRyxFQUFFLENBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ2IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFDLENBQUMsRUFDckQsRUFBK0MsQ0FDbEQsQ0FDSixDQUNKLENBQUM7SUFDTixDQUFDOytHQXpCUSxlQUFlO21HQUFmLGVBQWUsNkRBRmIsQ0FBQyxrQkFBa0IsQ0FBQyw2RkFLQSxVQUFVLGtHQUdQLFlBQVksaUNDakNsRCxpZkFtQkEsdUNER2MsU0FBUyw4Q0FBRSxPQUFPLG1IQUFFLElBQUksNkZBQUUsZ0JBQWdCLG9KQUFFLFVBQVU7O1NBS3ZELGVBQWU7NEZBQWYsZUFBZTtrQkFSM0IsU0FBUztpQ0FDTSxJQUFJLFlBQ04sZ0JBQWdCLFdBQ2pCLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLG1CQUVoRCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsa0JBQWtCLENBQUM7OEJBTVosRUFBRTtzQkFEcEIsWUFBWTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDO2dCQUl2QixLQUFLO3NCQUR2QixlQUFlO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgdHlwZSBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIHR5cGUgUXVlcnlMaXN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RU1QVFlfUVVFUll9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB7bWFwLCB0eXBlIE9ic2VydmFibGUsIHN0YXJ0V2l0aH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7VHVpVGFibGVIZWFkfSBmcm9tICcuLi9kaXJlY3RpdmVzL2hlYWQuZGlyZWN0aXZlJztcbmltcG9ydCB7VHVpVGFibGVEaXJlY3RpdmV9IGZyb20gJy4uL2RpcmVjdGl2ZXMvdGFibGUuZGlyZWN0aXZlJztcbmltcG9ydCB7VFVJX1RBQkxFX1BST1ZJREVSfSBmcm9tICcuLi9wcm92aWRlcnMvdGFibGUucHJvdmlkZXInO1xuaW1wb3J0IHtUdWlUYWJsZVRofSBmcm9tICcuLi90aC90aC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHJbdHVpVGhHcm91cF0nLFxuICAgIGltcG9ydHM6IFtBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQsIFR1aVRhYmxlVGhdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90aC1ncm91cC50ZW1wbGF0ZS5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtUVUlfVEFCTEVfUFJPVklERVJdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlUYWJsZVRoR3JvdXA8XG4gICAgVCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPGtleW9mIFQsIHVua25vd24+Pixcbj4gaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gVHVpVGFibGVUaCkpXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRoITogVHVpVGFibGVUaDxUPjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBUdWlUYWJsZUhlYWQpKVxuICAgIHByb3RlY3RlZCByZWFkb25seSBoZWFkczogUXVlcnlMaXN0PFR1aVRhYmxlSGVhZDxUPj4gPSBFTVBUWV9RVUVSWTtcblxuICAgIHByb3RlY3RlZCBoZWFkcyQ6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZyB8IGtleW9mIFQsIFR1aVRhYmxlSGVhZDxUPj4+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFibGUgPSBpbmplY3Q8VHVpVGFibGVEaXJlY3RpdmU8VD4+KFxuICAgICAgICBmb3J3YXJkUmVmKCgpID0+IFR1aVRhYmxlRGlyZWN0aXZlKSxcbiAgICApO1xuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oZWFkcyQgPSB0aGlzLmhlYWRzLmNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgICAgIG1hcCgoKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuaGVhZHMucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAocmVjb3JkLCBpdGVtKSA9PiAoey4uLnJlY29yZCwgW2l0ZW0udHVpSGVhZF06IGl0ZW19KSxcbiAgICAgICAgICAgICAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZyB8IGtleW9mIFQsIFR1aVRhYmxlSGVhZDxUPj4sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRlbnQgLz5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkcyQgfCBhc3luYyBhcyBoZWFkaW5nc1wiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nRm9yPVwibGV0IGtleSBvZiB0YWJsZS5jb2x1bW5zXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGluZ3M/LltrZXldPy50ZW1wbGF0ZSB8fCBwbGFpblwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0OiBrZXl9XCJcbiAgICAvPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAjcGxhaW5cbiAgICAgICAgbGV0LWtleVxuICAgID5cbiAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdJZj1cIiF0aCAmJiAhaGVhZHMubGVuZ3RoXCJcbiAgICAgICAgICAgIHR1aVRoXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IGtleS50b1N0cmluZygpIH19XG4gICAgICAgIDwvdGg+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19