@taiga-ui/addon-table
Version:
A library to display tabled data with filters, search, group actions, etc.
59 lines • 8.09 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1ieS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi10YWJsZS9jb21wb25lbnRzL3RhYmxlL2RpcmVjdGl2ZXMvc29ydC1ieS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRXBELE9BQU8sRUFBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR3JFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDOztBQUVwRCxNQUlhLGNBQWM7SUFKM0I7UUFNcUIsY0FBUyxHQUFtQyxXQUFXLENBQUM7UUFFeEQsVUFBSyxHQUFHLE1BQU0sQ0FBQyxDQUFBLGlCQUFvQixDQUFBLENBQUMsQ0FBQztRQUV0RDs7V0FFRztRQUVhLG9CQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSTtRQUMxRCwwR0FBMEc7UUFDMUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNSLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFDckMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQ3ZDLENBQUM7UUFHYyxrQkFBYSxHQUFpQyxhQUFhLENBQUM7WUFDeEUsSUFBSSxDQUFDLGVBQWU7WUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlO1NBQzdCLENBQUMsQ0FBQyxJQUFJLENBQ0gsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUNmLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQy9CLE1BQU0sRUFBRSxPQUFPO1lBQ2YsT0FBTyxFQUFFLGFBQWE7WUFDdEIsT0FBTztZQUNQLGFBQWE7U0FDaEIsQ0FBQyxDQUFDLENBQ04sQ0FBQztRQUVLLGNBQVMsR0FBNEIsSUFBSSxDQUFDO0tBZXBEO0lBYkcsSUFDVyxNQUFNLENBQUMsTUFBK0I7UUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFUyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sTUFBTSxDQUFDLE1BQStCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQztJQUN4RSxDQUFDOytHQTdDUSxjQUFjO21HQUFkLGNBQWMsOE9BQ04sZ0JBQWdCOztTQUR4QixjQUFjOzRGQUFkLGNBQWM7a0JBSjFCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSw0QkFBNEI7aUJBQ3pDOzhCQUdvQixTQUFTO3NCQUR6QixlQUFlO3VCQUFDLGdCQUFnQixFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQztnQkFTdEMsZUFBZTtzQkFEOUIsTUFBTTtnQkFTUyxhQUFhO3NCQUQ1QixNQUFNO2dCQWlCSSxNQUFNO3NCQURoQixLQUFLO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7UXVlcnlMaXN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIGluamVjdCwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7VHVpQ29tcGFyYXRvcn0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLXRhYmxlL3R5cGVzJztcbmltcG9ydCB7RU1QVFlfUVVFUll9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgZGVib3VuY2VUaW1lLCBkZWxheSwgZmlsdGVyLCBtYXB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgdHlwZSB7VHVpU29ydENoYW5nZX0gZnJvbSAnLi4vdGFibGUub3B0aW9ucyc7XG5pbXBvcnQge1R1aVRhYmxlU29ydGFibGV9IGZyb20gJy4vc29ydGFibGUuZGlyZWN0aXZlJztcbmltcG9ydCB7VHVpVGFibGVEaXJlY3RpdmV9IGZyb20gJy4vdGFibGUuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3RhYmxlW3R1aVRhYmxlXVt0dWlTb3J0QnldJyxcbn0pXG5leHBvcnQgY2xhc3MgVHVpVGFibGVTb3J0Qnk8VCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPGtleW9mIFQsIGFueT4+PiB7XG4gICAgQENvbnRlbnRDaGlsZHJlbihUdWlUYWJsZVNvcnRhYmxlLCB7ZGVzY2VuZGFudHM6IHRydWV9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgc29ydGFibGVzOiBRdWVyeUxpc3Q8VHVpVGFibGVTb3J0YWJsZTxUPj4gPSBFTVBUWV9RVUVSWTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFibGUgPSBpbmplY3QoVHVpVGFibGVEaXJlY3RpdmU8VD4pO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQ6IHVzZSB0dWlTb3J0Q2hhbmdlXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IHR1aVNvcnRCeUNoYW5nZSA9IHRoaXMudGFibGUuc29ydGVyQ2hhbmdlLnBpcGUoXG4gICAgICAgIC8vIGRlbGF5IGlzIGZvciBnZXR0aW5nIGFjdHVhbCBDb250ZW50Q2hpbGRyZW4gKHNvcnRhYmxlcykgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMzg5NzZcbiAgICAgICAgZGVsYXkoMCksXG4gICAgICAgIGZpbHRlcigoKSA9PiAhIXRoaXMuc29ydGFibGVzLmxlbmd0aCksXG4gICAgICAgIG1hcCgoc29ydGVyKSA9PiB0aGlzLmdldEtleShzb3J0ZXIpKSxcbiAgICApO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IHR1aVNvcnRDaGFuZ2U6IE9ic2VydmFibGU8VHVpU29ydENoYW5nZTxUPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy50dWlTb3J0QnlDaGFuZ2UsXG4gICAgICAgIHRoaXMudGFibGUuZGlyZWN0aW9uQ2hhbmdlLFxuICAgIF0pLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgwKSxcbiAgICAgICAgbWFwKChbc29ydEtleSwgc29ydERpcmVjdGlvbl0pID0+ICh7XG4gICAgICAgICAgICBzb3J0Qnk6IHNvcnRLZXksXG4gICAgICAgICAgICBvcmRlckJ5OiBzb3J0RGlyZWN0aW9uLFxuICAgICAgICAgICAgc29ydEtleSxcbiAgICAgICAgICAgIHNvcnREaXJlY3Rpb24sXG4gICAgICAgIH0pKSxcbiAgICApO1xuXG4gICAgcHVibGljIHR1aVNvcnRCeTogc3RyaW5nIHwga2V5b2YgVCB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KCd0dWlTb3J0QnknKVxuICAgIHB1YmxpYyBzZXQgc29ydEJ5KHNvcnRCeTogc3RyaW5nIHwga2V5b2YgVCB8IG51bGwpIHtcbiAgICAgICAgdGhpcy50dWlTb3J0QnkgPSBzb3J0Qnk7XG4gICAgICAgIHRoaXMuY2hlY2tTb3J0YWJsZXMoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY2hlY2tTb3J0YWJsZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc29ydGFibGVzLmZvckVhY2goKHMpID0+IHMuY2hlY2soKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRLZXkoc29ydGVyOiBUdWlDb21wYXJhdG9yPFQ+IHwgbnVsbCk6IGtleW9mIFQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc29ydGFibGVzLmZpbmQoKHMpID0+IHMuc29ydGVyID09PSBzb3J0ZXIpPy5rZXkgfHwgbnVsbDtcbiAgICB9XG59XG4iXX0=