UNPKG

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
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==