@taiga-ui/addon-table
Version:
A library to display tabled data with filters, search, group actions, etc.
59 lines • 8.07 kB
JavaScript
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