UNPKG

right-angled

Version:

Lightweight and easy to use angular data grids. Integrates with your markup and styles rather than generating its own.

123 lines 16.4 kB
import { Directive, EventEmitter, Input, Output, Self } from '@angular/core'; import { LIST_PROVIDERS } from './providers/list'; import * as i0 from "@angular/core"; import * as i1 from "./providers/list"; import * as i2 from "./providers/sortings.service"; export class ListDirective { set fetchMethod(value) { this.listService.fetchMethod = value; } constructor(listService, sortingsService) { this.listService = listService; this.sortingsService = sortingsService; this.listInit = new EventEmitter(false); this.afterListInit = new EventEmitter(false); this.loadSucceed = new EventEmitter(); this.loadFailed = new EventEmitter(); this.loadStarted = new EventEmitter(); this.loadOnInit = true; this.keepRecordsOnLoad = false; this.appendStreamedData = null; this.successSubscription = listService.loadSucceed.subscribe((response) => { this.loadSucceed.emit(response); }); this.failSubscription = listService.loadFailed.subscribe(() => { this.loadFailed.emit(); }); this.loadStartedSubscription = listService.loadStarted.subscribe(() => { this.loadStarted.emit(); }); this.items$ = this.listService.items$; this.busy$ = this.listService.busy$; this.ready$ = this.listService.ready$; } ngAfterViewInit() { // We call init in ngAfterViewInit to: // 1. allow all child controls to be applied to markup and regiter themself in filtersService // 2. give ability to all child controls to apply their default values // 3. overwrite theese default values by values passed via persistence services // 4. execute all ngAfterViewInit for custom services registration (setTimeout) setTimeout(() => { this.listInit.emit(this.listService); this.listService.init(); this.afterListInit.emit(this.listService); if (this.loadOnInit) { this.listService.loadData(); } }, 0); } ngOnDestroy() { this.listService.destroy(); this.successSubscription.unsubscribe(); this.failSubscription.unsubscribe(); this.loadStartedSubscription.unsubscribe(); } ngOnChanges(changes) { if (changes.defaultSortings) { this.sortingsService.defaultSortings = changes.defaultSortings.currentValue; } if (changes.keepRecordsOnLoad) { this.listService.keepRecordsOnLoad = changes.keepRecordsOnLoad.currentValue; } if (changes.appendStreamedData) { this.listService.appendStreamedData = changes.appendStreamedData.currentValue; } } reloadData() { return this.listService.reloadData(); } loadData() { return this.listService.loadData(); } resetSettings() { this.listService.resetSettings(); } cancelRequests() { this.listService.cancelRequests(); } get items() { return this.listService.items; } get busy() { return this.listService.busy; } get ready() { return this.listService.ready; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListDirective, deps: [{ token: i1.RTList, self: true }, { token: i2.RTSortingsService, self: true }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ListDirective, selector: "[rtList]", inputs: { defaultSortings: "defaultSortings", loadOnInit: "loadOnInit", keepRecordsOnLoad: "keepRecordsOnLoad", appendStreamedData: "appendStreamedData", fetchMethod: ["rtList", "fetchMethod"] }, outputs: { listInit: "listInit", afterListInit: "afterListInit", loadSucceed: "loadSucceed", loadFailed: "loadFailed", loadStarted: "loadStarted" }, providers: [LIST_PROVIDERS], exportAs: ["rtList"], usesOnChanges: true, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListDirective, decorators: [{ type: Directive, args: [{ exportAs: 'rtList', providers: [LIST_PROVIDERS], selector: '[rtList]' }] }], ctorParameters: function () { return [{ type: i1.RTList, decorators: [{ type: Self }] }, { type: i2.RTSortingsService, decorators: [{ type: Self }] }]; }, propDecorators: { listInit: [{ type: Output }], afterListInit: [{ type: Output }], loadSucceed: [{ type: Output }], loadFailed: [{ type: Output }], loadStarted: [{ type: Output }], defaultSortings: [{ type: Input }], loadOnInit: [{ type: Input }], keepRecordsOnLoad: [{ type: Input }], appendStreamedData: [{ type: Input }], fetchMethod: [{ type: Input, args: ['rtList'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaWdodC1hbmdsZWQvc3JjL2xpYi9saXN0cy9saXN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUF3QixNQUFNLEVBQUUsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUVoSSxPQUFPLEVBQUUsY0FBYyxFQUFVLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFXMUQsTUFBTSxPQUFPLGFBQWE7SUFzQnRCLElBQ1csV0FBVyxDQUNsQixLQUFtSTtRQUVuSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDekMsQ0FBQztJQU1ELFlBQTJCLFdBQW1CLEVBQWlCLGVBQWtDO1FBQXRFLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQWlCLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQS9CakYsYUFBUSxHQUF5QixJQUFJLFlBQVksQ0FBUyxLQUFLLENBQUMsQ0FBQztRQUVqRSxrQkFBYSxHQUF5QixJQUFJLFlBQVksQ0FBUyxLQUFLLENBQUMsQ0FBQztRQUV0RSxnQkFBVyxHQUE0QyxJQUFJLFlBQVksRUFBNkIsQ0FBQztRQUVyRyxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFeEQsZ0JBQVcsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUlwRSxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRWxCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUUxQix1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFnQjdCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQW1DLEVBQUUsRUFBRTtZQUNqRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMs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SSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQzsrR0FuR1EsYUFBYTttR0FBYixhQUFhLDRYQUhYLENBQUMsY0FBYyxDQUFDOzs0RkFHbEIsYUFBYTtrQkFMekIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsUUFBUTtvQkFDbEIsU0FBUyxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUMzQixRQUFRLEVBQUUsVUFBVTtpQkFDdkI7OzBCQWtDZ0IsSUFBSTs7MEJBQWdDLElBQUk7NENBL0JyQyxRQUFRO3NCQUR2QixNQUFNO2dCQUdTLGFBQWE7c0JBRDVCLE1BQU07Z0JBR1MsV0FBVztzQkFEMUIsTUFBTTtnQkFHUyxVQUFVO3NCQUR6QixNQUFNO2dCQUdTLFdBQVc7c0JBRDFCLE1BQU07Z0JBR0EsZUFBZTtzQkFEckIsS0FBSztnQkFHQyxVQUFVO3NCQURoQixLQUFLO2dCQUdDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFHQyxrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBTUssV0FBVztzQkFEckIsS0FBSzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT3V0cHV0LCBTZWxmLCBTaW1wbGVDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IExJU1RfUFJPVklERVJTLCBSVExpc3QgfSBmcm9tICcuL3Byb3ZpZGVycy9saXN0JztcclxuaW1wb3J0IHsgTGlzdFJlc3BvbnNlIH0gZnJvbSAnLi4vY29yZS9saXN0LXJlc3BvbnNlJztcclxuaW1wb3J0IHsgU29ydFBhcmFtZXRlciB9IGZyb20gJy4uL2NvcmUvc29ydC1wYXJhbWV0ZXInO1xyXG5pbXBvcnQgeyBMaXN0UmVxdWVzdCB9IGZyb20gJy4uL2NvcmUvbGlzdC1yZXF1ZXN0JztcclxuaW1wb3J0IHsgUlRTb3J0aW5nc1NlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9zb3J0aW5ncy5zZXJ2aWNlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgZXhwb3J0QXM6ICdydExpc3QnLFxyXG4gICAgcHJvdmlkZXJzOiBbTElTVF9QUk9WSURFUlNdLFxyXG4gICAgc2VsZWN0b3I6ICdbcnRMaXN0XSdcclxufSlcclxuZXhwb3J0IGNsYXNzIExpc3REaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyByZWFkb25seSBsaXN0SW5pdDogRXZlbnRFbWl0dGVyPFJUTGlzdD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJUTGlzdD4oZmFsc2UpO1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgYWZ0ZXJMaXN0SW5pdDogRXZlbnRFbWl0dGVyPFJUTGlzdD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJUTGlzdD4oZmFsc2UpO1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbG9hZFN1Y2NlZWQ6IEV2ZW50RW1pdHRlcjxMaXN0UmVzcG9uc2U8YW55PiB8IGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdFJlc3BvbnNlPGFueT4gfCBhbnlbXT4oKTtcclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHJlYWRvbmx5IGxvYWRGYWlsZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyByZWFkb25seSBsb2FkU3RhcnRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkZWZhdWx0U29ydGluZ3M6IFNvcnRQYXJhbWV0ZXJbXTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbG9hZE9uSW5pdCA9IHRydWU7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGtlZXBSZWNvcmRzT25Mb2FkID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGFwcGVuZFN0cmVhbWVkRGF0YSA9IG51bGw7XHJcbiAgICBwdWJsaWMgaXRlbXMkOiBPYnNlcnZhYmxlPGFueVtdPjtcclxuICAgIHB1YmxpYyBidXN5JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICAgIHB1YmxpYyByZWFkeSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICBASW5wdXQoJ3J0TGlzdCcpXHJcbiAgICBwdWJsaWMgc2V0IGZldGNoTWV0aG9kKFxyXG4gICAgICAgIHZhbHVlOiAocmVxdWVzdFBhcmFtczogTGlzdFJlcXVlc3QpID0+IFByb21pc2U8TGlzdFJlc3BvbnNlPGFueT4+IHwgT2JzZXJ2YWJsZTxMaXN0UmVzcG9uc2U8YW55Pj4gfCBFdmVudEVtaXR0ZXI8TGlzdFJlc3BvbnNlPGFueT4+XHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLmxpc3RTZXJ2aWNlLmZldGNoTWV0aG9kID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdWNjZXNzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIGZhaWxTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgbG9hZFN0YXJ0ZWRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihAU2VsZigpIHB1YmxpYyBsaXN0U2VydmljZTogUlRMaXN0LCBAU2VsZigpIHB1YmxpYyBzb3J0aW5nc1NlcnZpY2U6IFJUU29ydGluZ3NTZXJ2aWNlKSB7XHJcbiAgICAgICAgdGhpcy5zdWNjZXNzU3Vic2NyaXB0aW9uID0gbGlzdFNlcnZpY2UubG9hZFN1Y2NlZWQuc3Vic2NyaWJlKChyZXNwb25zZTogTGlzdFJlc3BvbnNlPGFueT4gfCBhbnlbXSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRTdWNjZWVkLmVtaXQocmVzcG9uc2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZmFpbFN1YnNjcmlwdGlvbiA9IGxpc3RTZXJ2aWNlLmxvYWRGYWlsZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkRmFpbGVkLmVtaXQoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmxvYWRTdGFydGVkU3Vic2NyaXB0aW9uID0gbGlzdFNlcnZpY2UubG9hZFN0YXJ0ZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkU3RhcnRlZC5lbWl0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5pdGVtcyQgPSB0aGlzLmxpc3RTZXJ2aWNlLml0ZW1zJDtcclxuICAgICAgICB0aGlzLmJ1c3kkID0gdGhpcy5saXN0U2VydmljZS5idXN5JDtcclxuICAgICAgICB0aGlzLnJlYWR5JCA9IHRoaXMubGlzdFNlcnZpY2UucmVhZHkkO1xyXG4gICAgfVxyXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICAvLyBXZSBjYWxsIGluaXQgaW4gbmdBZnRlclZpZXdJbml0IHRvOlxyXG4gICAgICAgIC8vIDEuIGFsbG93IGFsbCBjaGlsZCBjb250cm9scyB0byBiZSBhcHBsaWVkIHRvIG1hcmt1cCBhbmQgcmVnaXRlciB0aGVtc2VsZiBpbiBmaWx0ZXJzU2VydmljZVxyXG4gICAgICAgIC8vIDIuIGdpdmUgYWJpbGl0eSB0byBhbGwgY2hpbGQgY29udHJvbHMgdG8gYXBwbHkgdGhlaXIgZGVmYXVsdCB2YWx1ZXNcclxuICAgICAgICAvLyAzLiBvdmVyd3JpdGUgdGhlZXNlIGRlZmF1bHQgdmFsdWVzIGJ5IHZhbHVlcyBwYXNzZWQgdmlhIHBlcnNpc3RlbmNlIHNlcnZpY2VzXHJcbiAgICAgICAgLy8gNC4gZXhlY3V0ZSBhbGwgbmdBZnRlclZpZXdJbml0IGZvciBjdXN0b20gc2VydmljZXMgcmVnaXN0cmF0aW9uIChzZXRUaW1lb3V0KVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxpc3RJbml0LmVtaXQodGhpcy5saXN0U2VydmljZSk7XHJcbiAgICAgICAgICAgIHRoaXMubGlzdFNlcnZpY2UuaW5pdCgpO1xyXG4gICAgICAgICAgICB0aGlzLmFmdGVyTGlzdEluaXQuZW1pdCh0aGlzLmxpc3RTZXJ2aWNlKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMubG9hZE9uSW5pdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5saXN0U2VydmljZS5sb2FkRGF0YSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMCk7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5saXN0U2VydmljZS5kZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5zdWNjZXNzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5mYWlsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5sb2FkU3RhcnRlZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHsga2VlcFJlY29yZHNPbkxvYWQ/OiBTaW1wbGVDaGFuZ2U7IGRlZmF1bHRTb3J0aW5ncz86IFNpbXBsZUNoYW5nZTsgYXBwZW5kU3RyZWFtZWREYXRhPzogU2ltcGxlQ2hhbmdlIH0pOiB2b2lkIHtcclxuICAgICAgICBpZiAoY2hhbmdlcy5kZWZhdWx0U29ydGluZ3MpIHtcclxuICAgICAgICAgICAgdGhpcy5zb3J0aW5nc1NlcnZpY2UuZGVmYXVsdFNvcnRpbmdzID0gY2hhbmdlcy5kZWZhdWx0U29ydGluZ3MuY3VycmVudFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2hhbmdlcy5rZWVwUmVjb3Jkc09uTG9hZCkge1xyXG4gICAgICAgICAgICB0aGlzLmxpc3RTZXJ2aWNlLmtlZXBSZWNvcmRzT25Mb2FkID0gY2hhbmdlcy5rZWVwUmVjb3Jkc09uTG9hZC5jdXJyZW50VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjaGFuZ2VzLmFwcGVuZFN0cmVhbWVkRGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLmxpc3RTZXJ2aWNlLmFwcGVuZFN0cmVhbWVkRGF0YSA9IGNoYW5nZXMuYXBwZW5kU3RyZWFtZWREYXRhLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgcmVsb2FkRGF0YSgpOiBPYnNlcnZhYmxlPGFueT4gfCBQcm9taXNlPGFueT4gfCBFdmVudEVtaXR0ZXI8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdFNlcnZpY2UucmVsb2FkRGF0YSgpO1xyXG4gICAgfVxyXG4gICAgcHVibGljIGxvYWREYXRhKCk6IE9ic2VydmFibGU8YW55PiB8IFByb21pc2U8YW55PiB8IEV2ZW50RW1pdHRlcjxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5saXN0U2VydmljZS5sb2FkRGF0YSgpO1xyXG4gICAgfVxyXG4gICAgcHVibGljIHJlc2V0U2V0dGluZ3MoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5saXN0U2VydmljZS5yZXNldFNldHRpbmdzKCk7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgY2FuY2VsUmVxdWVzdHMoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5saXN0U2VydmljZS5jYW5jZWxSZXF1ZXN0cygpO1xyXG4gICAgfVxyXG4gICAgcHVibGljIGdldCBpdGVtcygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdFNlcnZpY2UuaXRlbXM7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgZ2V0IGJ1c3koKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdFNlcnZpY2UuYnVzeTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBnZXQgcmVhZHkoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdFNlcnZpY2UucmVhZHk7XHJcbiAgICB9XHJcbn1cclxuIl19