right-angled
Version:
Lightweight and easy to use angular data grids. Integrates with your markup and styles rather than generating its own.
44 lines • 5.88 kB
JavaScript
import { Directive, Optional } from '@angular/core';
import * as i0 from "@angular/core";
export class EventsAttacherBaseDirective {
constructor(elementRef, renderer, eventListener) {
this.elementRef = elementRef;
this.renderer = renderer;
this.eventListener = eventListener;
this.unlisteners = [];
}
ngOnChanges(changes) {
if (changes.eventNames) {
this.removeEventListeners();
this.addEventListeners(this.adjustEvents(changes.eventNames.currentValue));
}
}
ngOnDestroy() {
this.removeEventListeners();
}
adjustEvents(eventsNames) {
return eventsNames ? (Array.isArray(eventsNames) ? eventsNames : [eventsNames]) : [];
}
removeEventListeners() {
this.unlisteners.forEach(listener => {
if (typeof listener === 'function') {
listener();
}
});
this.unlisteners = [];
}
addEventListeners(eventNames) {
if (!eventNames || !eventNames.length) {
return;
}
this.unlisteners = eventNames.map(eventName => this.renderer.listen(this.elementRef.nativeElement, eventName, this.eventListener));
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EventsAttacherBaseDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: EventsAttacherBaseDirective, usesOnChanges: true, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EventsAttacherBaseDirective, decorators: [{
type: Directive
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
type: Optional
}] }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLWF0dGFjaGVyLmJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaWdodC1hbmdsZWQvc3JjL2xpYi9taXNjL2V2ZW50cy1hdHRhY2hlci5iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNkQsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHL0csTUFBTSxPQUFnQiwyQkFBMkI7SUFJN0MsWUFBb0IsVUFBc0IsRUFBUyxRQUFtQixFQUFxQixhQUFrQjtRQUF6RixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFxQixrQkFBYSxHQUFiLGFBQWEsQ0FBSztRQUZ0RyxnQkFBVyxHQUFVLEVBQUUsQ0FBQztJQUVpRixDQUFDO0lBQzFHLFdBQVcsQ0FBQyxPQUFzQztRQUNyRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1NBQzlFO0lBQ0wsQ0FBQztJQUNNLFdBQVc7UUFDZCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBQ08sWUFBWSxDQUFDLFdBQThCO1FBQy9DLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDekYsQ0FBQztJQUNPLG9CQUFvQjtRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNoQyxJQUFJLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRTtnQkFDaEMsUUFBUSxFQUFFLENBQUM7YUFDZDtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNPLGlCQUFpQixDQUFDLFVBQW9CO1FBQzFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO1lBQ25DLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUN2SSxDQUFDOytHQTlCaUIsMkJBQTJCO21HQUEzQiwyQkFBMkI7OzRGQUEzQiwyQkFBMkI7a0JBRGhELFNBQVM7OzBCQUttRSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlLCBEaXJlY3RpdmUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEV2ZW50c0F0dGFjaGVyQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICAgIHB1YmxpYyBldmVudE5hbWVzOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICAgIHB1YmxpYyB1bmxpc3RlbmVyczogYW55W10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLCBAT3B0aW9uYWwoKSBwdWJsaWMgZXZlbnRMaXN0ZW5lcjogYW55KSB7fVxyXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHsgZXZlbnROYW1lcz86IFNpbXBsZUNoYW5nZSB9KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXMuZXZlbnROYW1lcykge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcnModGhpcy5hZGp1c3RFdmVudHMoY2hhbmdlcy5ldmVudE5hbWVzLmN1cnJlbnRWYWx1ZSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIGFkanVzdEV2ZW50cyhldmVudHNOYW1lczogc3RyaW5nIHwgc3RyaW5nW10pOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgcmV0dXJuIGV2ZW50c05hbWVzID8gKEFycmF5LmlzQXJyYXkoZXZlbnRzTmFtZXMpID8gZXZlbnRzTmFtZXMgOiBbZXZlbnRzTmFtZXNdKSA6IFtdO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSByZW1vdmVFdmVudExpc3RlbmVycygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnVubGlzdGVuZXJzLmZvckVhY2gobGlzdGVuZXIgPT4ge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICBsaXN0ZW5lcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy51bmxpc3RlbmVycyA9IFtdO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBhZGRFdmVudExpc3RlbmVycyhldmVudE5hbWVzOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgICAgIGlmICghZXZlbnROYW1lcyB8fCAhZXZlbnROYW1lcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVubGlzdGVuZXJzID0gZXZlbnROYW1lcy5tYXAoZXZlbnROYW1lID0+IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBldmVudE5hbWUsIHRoaXMuZXZlbnRMaXN0ZW5lcikpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==