UNPKG

@taiga-ui/addon-table

Version:

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

59 lines 8.07 kB
import { ContentChildren, Directive, inject, Input, Output, } from '@angular/core'; import { EMPTY_QUERY } from '@taiga-ui/cdk/constants'; import { combineLatest, debounceTime, delay, filter, map } from 'rxjs'; import { TuiTableSortable } from './sortable.directive'; import { TuiTableDirective } from './table.directive'; import * as i0 from "@angular/core"; class TuiTableSortBy { constructor() { this.sortables = EMPTY_QUERY; this.table = inject((TuiTableDirective)); /** * @deprecated: use tuiSortChange */ this.tuiSortByChange = this.table.sorterChange.pipe( // delay is for getting actual ContentChildren (sortables) https://github.com/angular/angular/issues/38976 delay(0), filter(() => !!this.sortables.length), map((sorter) => this.getKey(sorter))); this.tuiSortChange = combineLatest([ this.tuiSortByChange, this.table.directionChange, ]).pipe(debounceTime(0), map(([sortKey, sortDirection]) => ({ sortBy: sortKey, orderBy: sortDirection, sortKey, sortDirection, }))); this.tuiSortBy = null; } set sortBy(sortBy) { this.tuiSortBy = sortBy; this.checkSortables(); } checkSortables() { this.sortables.forEach((s) => s.check()); } getKey(sorter) { return this.sortables.find((s) => s.sorter === sorter)?.key || null; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTableSortBy, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiTableSortBy, isStandalone: true, selector: "table[tuiTable][tuiSortBy]", inputs: { sortBy: ["tuiSortBy", "sortBy"] }, outputs: { tuiSortByChange: "tuiSortByChange", tuiSortChange: "tuiSortChange" }, queries: [{ propertyName: "sortables", predicate: TuiTableSortable, descendants: true }], ngImport: i0 }); } } export { TuiTableSortBy }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTableSortBy, decorators: [{ type: Directive, args: [{ standalone: true, selector: 'table[tuiTable][tuiSortBy]', }] }], propDecorators: { sortables: [{ type: ContentChildren, args: [TuiTableSortable, { descendants: true }] }], tuiSortByChange: [{ type: Output }], tuiSortChange: [{ type: Output }], sortBy: [{ type: Input, args: ['tuiSortBy'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1ieS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi10YWJsZS9jb21wb25lbnRzL3RhYmxlL2RpcmVjdGl2ZXMvc29ydC1ieS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGVBQWUsRUFDZixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEdBRVQsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFrQixNQUFNLE1BQU0sQ0FBQztBQUd0RixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFcEQsTUFJYSxjQUFjO0lBSjNCO1FBTXFCLGNBQVMsR0FBbUMsV0FBVyxDQUFDO1FBRXhELFVBQUssR0FBRyxNQUFNLENBQUMsQ0FBQSxpQkFBb0IsQ0FBQSxDQUFDLENBQUM7UUFFdEQ7O1dBRUc7UUFFYSxvQkFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUk7UUFDMUQsMEdBQTBHO1FBQzFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDUixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQ3JDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUN2QyxDQUFDO1FBR2Msa0JBQWEsR0FBaUMsYUFBYSxDQUFDO1lBQ3hFLElBQUksQ0FBQyxlQUFlO1lBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZTtTQUM3QixDQUFDLENBQUMsSUFBSSxDQUNILFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDZixHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMvQixNQUFNLEVBQUUsT0FBTztZQUNmLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLE9BQU87WUFDUCxhQUFhO1NBQ2hCLENBQUMsQ0FBQyxDQUNOLENBQUM7UUFFSyxjQUFTLEdBQTRCLElBQUksQ0FBQztLQWVwRDtJQWJHLElBQ1csTUFBTSxDQUFDLE1BQStCO1FBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRVMsY0FBYztRQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLE1BQU0sQ0FBQyxNQUErQjtRQUMxQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUM7SUFDeEUsQ0FBQzsrR0E3Q1EsY0FBYzttR0FBZCxjQUFjLDhPQUNOLGdCQUFnQjs7U0FEeEIsY0FBYzs0RkFBZCxjQUFjO2tCQUoxQixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsNEJBQTRCO2lCQUN6Qzs4QkFHb0IsU0FBUztzQkFEekIsZUFBZTt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUM7Z0JBU3RDLGVBQWU7c0JBRDlCLE1BQU07Z0JBU1MsYUFBYTtzQkFENUIsTUFBTTtnQkFpQkksTUFBTTtzQkFEaEIsS0FBSzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgdHlwZSBRdWVyeUxpc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0eXBlIFR1aUNvbXBhcmF0b3J9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi10YWJsZS90eXBlcyc7XG5pbXBvcnQge0VNUFRZX1FVRVJZfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge2NvbWJpbmVMYXRlc3QsIGRlYm91bmNlVGltZSwgZGVsYXksIGZpbHRlciwgbWFwLCB0eXBlIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge3R5cGUgVHVpU29ydENoYW5nZX0gZnJvbSAnLi4vdGFibGUub3B0aW9ucyc7XG5pbXBvcnQge1R1aVRhYmxlU29ydGFibGV9IGZyb20gJy4vc29ydGFibGUuZGlyZWN0aXZlJztcbmltcG9ydCB7VHVpVGFibGVEaXJlY3RpdmV9IGZyb20gJy4vdGFibGUuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3RhYmxlW3R1aVRhYmxlXVt0dWlTb3J0QnldJyxcbn0pXG5leHBvcnQgY2xhc3MgVHVpVGFibGVTb3J0Qnk8VCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPGtleW9mIFQsIHVua25vd24+Pj4ge1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVHVpVGFibGVTb3J0YWJsZSwge2Rlc2NlbmRhbnRzOiB0cnVlfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNvcnRhYmxlczogUXVlcnlMaXN0PFR1aVRhYmxlU29ydGFibGU8VD4+ID0gRU1QVFlfUVVFUlk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhYmxlID0gaW5qZWN0KFR1aVRhYmxlRGlyZWN0aXZlPFQ+KTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkOiB1c2UgdHVpU29ydENoYW5nZVxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSB0dWlTb3J0QnlDaGFuZ2UgPSB0aGlzLnRhYmxlLnNvcnRlckNoYW5nZS5waXBlKFxuICAgICAgICAvLyBkZWxheSBpcyBmb3IgZ2V0dGluZyBhY3R1YWwgQ29udGVudENoaWxkcmVuIChzb3J0YWJsZXMpIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzM4OTc2XG4gICAgICAgIGRlbGF5KDApLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gISF0aGlzLnNvcnRhYmxlcy5sZW5ndGgpLFxuICAgICAgICBtYXAoKHNvcnRlcikgPT4gdGhpcy5nZXRLZXkoc29ydGVyKSksXG4gICAgKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSB0dWlTb3J0Q2hhbmdlOiBPYnNlcnZhYmxlPFR1aVNvcnRDaGFuZ2U8VD4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMudHVpU29ydEJ5Q2hhbmdlLFxuICAgICAgICB0aGlzLnRhYmxlLmRpcmVjdGlvbkNoYW5nZSxcbiAgICBdKS5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgIG1hcCgoW3NvcnRLZXksIHNvcnREaXJlY3Rpb25dKSA9PiAoe1xuICAgICAgICAgICAgc29ydEJ5OiBzb3J0S2V5LFxuICAgICAgICAgICAgb3JkZXJCeTogc29ydERpcmVjdGlvbixcbiAgICAgICAgICAgIHNvcnRLZXksXG4gICAgICAgICAgICBzb3J0RGlyZWN0aW9uLFxuICAgICAgICB9KSksXG4gICAgKTtcblxuICAgIHB1YmxpYyB0dWlTb3J0Qnk6IHN0cmluZyB8IGtleW9mIFQgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgndHVpU29ydEJ5JylcbiAgICBwdWJsaWMgc2V0IHNvcnRCeShzb3J0Qnk6IHN0cmluZyB8IGtleW9mIFQgfCBudWxsKSB7XG4gICAgICAgIHRoaXMudHVpU29ydEJ5ID0gc29ydEJ5O1xuICAgICAgICB0aGlzLmNoZWNrU29ydGFibGVzKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNoZWNrU29ydGFibGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNvcnRhYmxlcy5mb3JFYWNoKChzKSA9PiBzLmNoZWNrKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0S2V5KHNvcnRlcjogVHVpQ29tcGFyYXRvcjxUPiB8IG51bGwpOiBrZXlvZiBUIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvcnRhYmxlcy5maW5kKChzKSA9PiBzLnNvcnRlciA9PT0gc29ydGVyKT8ua2V5IHx8IG51bGw7XG4gICAgfVxufVxuIl19