right-angled
Version:
Lightweight and easy to use angular data grids. Integrates with your markup and styles rather than generating its own.
109 lines • 15.7 kB
JavaScript
import { Directive, HostListener, Input, SkipSelf } from '@angular/core';
import { SortDirection } from '../core/sort-parameter';
import * as i0 from "@angular/core";
import * as i1 from "./providers/list";
import * as i2 from "./providers/sortings.service";
export class SortDirective {
static { this.settings = {
sortAscClassName: 'rt-sort-asc',
sortDescClassName: 'rt-sort-desc',
sortableClassName: 'rt-sortable'
}; }
constructor(listService, sortingsService, renderer, el, differs) {
this.listService = listService;
this.sortingsService = sortingsService;
this.renderer = renderer;
this.sortItemRemovedCallback = (removedItem) => {
if (removedItem.item && removedItem.item.fieldName === this.fieldName) {
this.removeSortClasses();
}
};
this.sortItemAddedCallback = (addedItem) => {
if (addedItem.item && addedItem.item.fieldName === this.fieldName) {
this.setSortClasses(addedItem.item);
}
};
this.sortingsDiffer = differs.find([]).create(null);
this.nativeEl = el.nativeElement;
}
ngOnInit() {
if (SortDirective.settings.sortableClassName) {
this.renderer.addClass(this.nativeEl, SortDirective.settings.sortableClassName);
}
this.sortingsService.sortings.some(sortParameter => {
if (sortParameter.fieldName === this.fieldName) {
this.setSortClasses(sortParameter);
return true;
}
return false;
});
}
clickHandler(ctrlKeyPressed) {
if (this.listService.ready && !this.disableSort) {
this.sortingsService.setSort(this.fieldName, ctrlKeyPressed, this.startSortDirection);
this.listService.reloadData();
}
}
ngDoCheck() {
const changes = this.sortingsDiffer.diff(this.sortingsService.sortings);
if (changes) {
changes.forEachRemovedItem(this.sortItemRemovedCallback);
changes.forEachAddedItem(this.sortItemAddedCallback);
}
}
ngOnChanges(changes) {
if (changes.disableSort && changes.disableSort.currentValue) {
this.sortingsService.removeSort(this.fieldName);
}
}
removeSortClasses() {
if (SortDirective.settings.sortAscClassName) {
this.renderer.removeClass(this.nativeEl, SortDirective.settings.sortAscClassName);
}
if (SortDirective.settings.sortDescClassName) {
this.renderer.removeClass(this.nativeEl, SortDirective.settings.sortDescClassName);
}
}
setSortClasses(sortParameter) {
const direction = sortParameter.direction;
if (SortDirective.settings.sortAscClassName) {
if (direction === SortDirection.Asc) {
this.renderer.addClass(this.nativeEl, SortDirective.settings.sortAscClassName);
}
else {
this.renderer.removeClass(this.nativeEl, SortDirective.settings.sortAscClassName);
}
}
if (SortDirective.settings.sortDescClassName) {
if (direction === SortDirection.Desc) {
this.renderer.addClass(this.nativeEl, SortDirective.settings.sortDescClassName);
}
else {
this.renderer.removeClass(this.nativeEl, SortDirective.settings.sortDescClassName);
}
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SortDirective, deps: [{ token: i1.RTList, skipSelf: true }, { token: i2.RTSortingsService, skipSelf: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SortDirective, selector: "[rtSort]", inputs: { fieldName: ["rtSort", "fieldName"], disableSort: "disableSort", startSortDirection: "startSortDirection" }, host: { listeners: { "click": "clickHandler($event.ctrlKey)" } }, usesOnChanges: true, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SortDirective, decorators: [{
type: Directive,
args: [{
selector: '[rtSort]'
}]
}], ctorParameters: function () { return [{ type: i1.RTList, decorators: [{
type: SkipSelf
}] }, { type: i2.RTSortingsService, decorators: [{
type: SkipSelf
}] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.IterableDiffers }]; }, propDecorators: { fieldName: [{
type: Input,
args: ['rtSort']
}], disableSort: [{
type: Input
}], startSortDirection: [{
type: Input
}], clickHandler: [{
type: HostListener,
args: ['click', ['$event.ctrlKey']]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaWdodC1hbmdsZWQvc3JjL2xpYi9saXN0cy9zb3J0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUdULFlBQVksRUFDWixLQUFLLEVBT0wsUUFBUSxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBaUIsYUFBYSxFQUFvQixNQUFNLHdCQUF3QixDQUFDOzs7O0FBS3hGLE1BQU0sT0FBTyxhQUFhO2FBQ1IsYUFBUSxHQUlsQjtRQUNBLGdCQUFnQixFQUFFLGFBQWE7UUFDL0IsaUJBQWlCLEVBQUUsY0FBYztRQUNqQyxpQkFBaUIsRUFBRSxhQUFhO0tBQ25DLEFBUnFCLENBUXBCO0lBT0YsWUFDd0IsV0FBbUIsRUFDbkIsZUFBa0MsRUFDOUMsUUFBbUIsRUFDM0IsRUFBYyxFQUNkLE9BQXdCO1FBSkosZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBQzlDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFzQ3ZCLDRCQUF1QixHQUFHLENBQUMsV0FBZ0IsRUFBUSxFQUFFO1lBQ3pELElBQUksV0FBVyxDQUFDLElBQUksSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNuRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUM1QjtRQUNMLENBQUMsQ0FBQztRQUNNLDBCQUFxQixHQUFHLENBQUMsU0FBYyxFQUFRLEVBQUU7WUFDckQsSUFBSSxTQUFTLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQy9ELElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZDO1FB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QVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2FBQ3JGO1NBQ0o7UUFDRCxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUU7WUFDMUMsSUFBSSxTQUFTLEtBQUssYUFBYSxDQUFDLElBQUksRUFBRTtnQkFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDbkY7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDdEY7U0FDSjtJQUNMLENBQUM7K0dBM0ZRLGFBQWE7bUdBQWIsYUFBYTs7NEZBQWIsYUFBYTtrQkFIekIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsVUFBVTtpQkFDdkI7OzBCQWtCUSxRQUFROzswQkFDUixRQUFROzJIQVJXLFNBQVM7c0JBQWhDLEtBQUs7dUJBQUMsUUFBUTtnQkFDQyxXQUFXO3NCQUExQixLQUFLO2dCQUNVLGtCQUFrQjtzQkFBakMsS0FBSztnQkEyQkMsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBEaXJlY3RpdmUsXHJcbiAgICBEb0NoZWNrLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIElucHV0LFxyXG4gICAgSXRlcmFibGVEaWZmZXIsXHJcbiAgICBJdGVyYWJsZURpZmZlcnMsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkluaXQsXHJcbiAgICBSZW5kZXJlcjIsXHJcbiAgICBTaW1wbGVDaGFuZ2UsXHJcbiAgICBTa2lwU2VsZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSVExpc3QgfSBmcm9tICcuL3Byb3ZpZGVycy9saXN0JztcclxuaW1wb3J0IHsgUlRTb3J0aW5nc1NlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9zb3J0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU29ydFBhcmFtZXRlciwgU29ydERpcmVjdGlvbiwgU29ydERpcmVjdGlvblN0ciB9IGZyb20gJy4uL2NvcmUvc29ydC1wYXJhbWV0ZXInO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tydFNvcnRdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU29ydERpcmVjdGl2ZSBpbXBsZW1lbnRzIERvQ2hlY2ssIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICAgIHB1YmxpYyBzdGF0aWMgc2V0dGluZ3M6IHtcclxuICAgICAgICBzb3J0QXNjQ2xhc3NOYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgc29ydERlc2NDbGFzc05hbWU6IHN0cmluZztcclxuICAgICAgICBzb3J0YWJsZUNsYXNzTmFtZTogc3RyaW5nO1xyXG4gICAgfSA9IHtcclxuICAgICAgICBzb3J0QXNjQ2xhc3NOYW1lOiAncnQtc29ydC1hc2MnLFxyXG4gICAgICAgIHNvcnREZXNjQ2xhc3NOYW1lOiAncnQtc29ydC1kZXNjJyxcclxuICAgICAgICBzb3J0YWJsZUNsYXNzTmFtZTogJ3J0LXNvcnRhYmxlJ1xyXG4gICAgfTtcclxuICAgIEBJbnB1dCgncnRTb3J0JykgcHVibGljIGZpZWxkTmFtZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcHVibGljIGRpc2FibGVTb3J0OiBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBzdGFydFNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uU3RyO1xyXG4gICAgcHJpdmF0ZSBuYXRpdmVFbDogSFRNTEVsZW1lbnQ7XHJcbiAgICBwcml2YXRlIHNvcnRpbmdzRGlmZmVyOiBJdGVyYWJsZURpZmZlcjxTb3J0UGFyYW1ldGVyPjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBAU2tpcFNlbGYoKSBwcml2YXRlIGxpc3RTZXJ2aWNlOiBSVExpc3QsXHJcbiAgICAgICAgQFNraXBTZWxmKCkgcHJpdmF0ZSBzb3J0aW5nc1NlcnZpY2U6IFJUU29ydGluZ3NTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICBlbDogRWxlbWVudFJlZixcclxuICAgICAgICBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnNcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuc29ydGluZ3NEaWZmZXIgPSBkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZShudWxsKTtcclxuICAgICAgICB0aGlzLm5hdGl2ZUVsID0gZWwubmF0aXZlRWxlbWVudDtcclxuICAgIH1cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoU29ydERpcmVjdGl2ZS5zZXR0aW5ncy5zb3J0YWJsZUNsYXNzTmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMubmF0aXZlRWwsIFNvcnREaXJlY3RpdmUuc2V0dGluZ3Muc29ydGFibGVDbGFzc05hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNvcnRpbmdzU2VydmljZS5zb3J0aW5ncy5zb21lKHNvcnRQYXJhbWV0ZXIgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc29ydFBhcmFtZXRlci5maWVsZE5hbWUgPT09IHRoaXMuZmllbGROYW1lKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNvcnRDbGFzc2VzKHNvcnRQYXJhbWV0ZXIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudC5jdHJsS2V5J10pXHJcbiAgICBwdWJsaWMgY2xpY2tIYW5kbGVyKGN0cmxLZXlQcmVzc2VkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMubGlzdFNlcnZpY2UucmVhZHkgJiYgIXRoaXMuZGlzYWJsZVNvcnQpIHtcclxuICAgICAgICAgICAgdGhpcy5zb3J0aW5nc1NlcnZpY2Uuc2V0U29ydCh0aGlzLmZpZWxkTmFtZSwgY3RybEtleVByZXNzZWQsIHRoaXMuc3RhcnRTb3J0RGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgdGhpcy5saXN0U2VydmljZS5yZWxvYWREYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5zb3J0aW5nc0RpZmZlci5kaWZmKHRoaXMuc29ydGluZ3NTZXJ2aWNlLnNvcnRpbmdzKTtcclxuICAgICAgICBpZiAoY2hhbmdlcykge1xyXG4gICAgICAgICAgICBjaGFuZ2VzLmZvckVhY2hSZW1vdmVkSXRlbSh0aGlzLnNvcnRJdGVtUmVtb3ZlZENhbGxiYWNrKTtcclxuICAgICAgICAgICAgY2hhbmdlcy5mb3JFYWNoQWRkZWRJdGVtKHRoaXMuc29ydEl0ZW1BZGRlZENhbGxiYWNrKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogeyBkaXNhYmxlU29ydD86IFNpbXBsZUNoYW5nZSB9KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXMuZGlzYWJsZVNvcnQgJiYgY2hhbmdlcy5kaXNhYmxlU29ydC5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5zb3J0aW5nc1NlcnZpY2UucmVtb3ZlU29ydCh0aGlzLmZpZWxkTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBzb3J0SXRlbVJlbW92ZWRDYWxsYmFjayA9IChyZW1vdmVkSXRlbTogYW55KTogdm9pZCA9PiB7XHJcbiAgICAgICAgaWYgKHJlbW92ZWRJdGVtLml0ZW0gJiYgcmVtb3ZlZEl0ZW0uaXRlbS5maWVsZE5hbWUgPT09IHRoaXMuZmllbGROYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlU29ydENsYXNzZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcHJpdmF0ZSBzb3J0SXRlbUFkZGVkQ2FsbGJhY2sgPSAoYWRkZWRJdGVtOiBhbnkpOiB2b2lkID0+IHtcclxuICAgICAgICBpZiAoYWRkZWRJdGVtLml0ZW0gJiYgYWRkZWRJdGVtLml0ZW0uZmllbGROYW1lID09PSB0aGlzLmZpZWxkTmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFNvcnRDbGFzc2VzKGFkZGVkSXRlbS5pdGVtKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcHJpdmF0ZSByZW1vdmVTb3J0Q2xhc3NlcygpOiB2b2lkIHtcclxuICAgICAgICBpZiAoU29ydERpcmVjdGl2ZS5zZXR0aW5ncy5zb3J0QXNjQ2xhc3NOYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5uYXRpdmVFbCwgU29ydERpcmVjdGl2ZS5zZXR0aW5ncy5zb3J0QXNjQ2xhc3NOYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFNvcnREaXJlY3RpdmUuc2V0dGluZ3Muc29ydERlc2NDbGFzc05hbWUpIHtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLm5hdGl2ZUVsLCBTb3J0RGlyZWN0aXZlLnNldHRpbmdzLnNvcnREZXNjQ2xhc3NOYW1lKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIHNldFNvcnRDbGFzc2VzKHNvcnRQYXJhbWV0ZXI6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNvcnRQYXJhbWV0ZXIuZGlyZWN0aW9uO1xyXG4gICAgICAgIGlmIChTb3J0RGlyZWN0aXZlLnNldHRpbmdzLnNvcnRBc2NDbGFzc05hbWUpIHtcclxuICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gU29ydERpcmVjdGlvbi5Bc2MpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5uYXRpdmVFbCwgU29ydERpcmVjdGl2ZS5zZXR0aW5ncy5zb3J0QXNjQ2xhc3NOYW1lKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5uYXRpdmVFbCwgU29ydERpcmVjdGl2ZS5zZXR0aW5ncy5zb3J0QXNjQ2xhc3NOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoU29ydERpcmVjdGl2ZS5zZXR0aW5ncy5zb3J0RGVzY0NsYXNzTmFtZSkge1xyXG4gICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09PSBTb3J0RGlyZWN0aW9uLkRlc2MpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5uYXRpdmVFbCwgU29ydERpcmVjdGl2ZS5zZXR0aW5ncy5zb3J0RGVzY0NsYXNzTmFtZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMubmF0aXZlRWwsIFNvcnREaXJlY3RpdmUuc2V0dGluZ3Muc29ydERlc2NDbGFzc05hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==