UNPKG

ngx-load

Version:

A simple angular library for adding loaders.

74 lines 8.45 kB
import { Directive, Inject, Input } from '@angular/core'; import { ComponentPortal } from "@angular/cdk/portal"; import { CONFIGURATION_TOKEN } from "../core/loader.configuration"; import * as i0 from "@angular/core"; import * as i1 from "@angular/cdk/overlay"; export class OverlayLoaderDirective { constructor(elementRef, overlay, configuration) { this.elementRef = elementRef; this.overlay = overlay; this.configuration = configuration; this.overlayRef = this.createOverlay(); } set loadOverlayLoader(value) { this.unsubscribeCurrentSubscription(); this.subscribe(value); } ; ngOnInit() { } ngOnDestroy() { this.detachLoader(); this.unsubscribeCurrentSubscription(); } unsubscribeCurrentSubscription() { if (this.currentSubscription) { this.detachLoader(); this.currentSubscription.unsubscribe(); } } subscribe(value) { this.attachLoader(); this.currentSubscription = value.subscribe({ next: () => this.detachLoader(), complete: () => this.detachLoader(), error: () => this.detachLoader() }); } createOverlay() { return this.overlay.create({ scrollStrategy: this.overlay.scrollStrategies.reposition(), positionStrategy: this.overlay.position() .flexibleConnectedTo(this.elementRef) .withPush(false) .withPositions([ { originX: "center", originY: "center", overlayX: "center", overlayY: "center" } ]) }); } attachLoader() { this.overlayRef.attach(new ComponentPortal(this.configuration.loaderComponent)); } detachLoader() { this.overlayRef.detach(); } } OverlayLoaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OverlayLoaderDirective, deps: [{ token: i0.ElementRef }, { token: i1.Overlay }, { token: CONFIGURATION_TOKEN }], target: i0.ɵɵFactoryTarget.Directive }); OverlayLoaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.0", type: OverlayLoaderDirective, selector: "[loadOverlayLoader]", inputs: { loadOverlayLoader: "loadOverlayLoader" }, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OverlayLoaderDirective, decorators: [{ type: Directive, args: [{ selector: '[loadOverlayLoader]' }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Overlay }, { type: undefined, decorators: [{ type: Inject, args: [CONFIGURATION_TOKEN] }] }]; }, propDecorators: { loadOverlayLoader: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1sb2FkZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbG9hZC9zcmMvbGliL292ZXJsYXkvb3ZlcmxheS1sb2FkZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFeEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxtQkFBbUIsRUFBdUIsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBS3hGLE1BQU0sT0FBTyxzQkFBc0I7SUFVakMsWUFDVSxVQUFzQixFQUN0QixPQUFnQixFQUNhLGFBQWtDO1FBRi9ELGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNhLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQVp6RSxlQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBY2pDLENBQUM7SUFYRCxJQUNJLGlCQUFpQixDQUFDLEtBQXNCO1FBQzFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFBO1FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdkIsQ0FBQztJQUFBLENBQUM7SUFTRixRQUFRO0lBQ1IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDbkIsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUE7SUFDdkMsQ0FBQztJQUVPLDhCQUE4QjtRQUNwQyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUM1QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7WUFDbkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFBO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVPLFNBQVMsQ0FBQyxLQUFzQjtRQUN0QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDbkIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxTQUFTLENBQ3hDO1lBQ0UsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDL0IsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7U0FDakMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVPLGFBQWE7UUFDbkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUN6QixjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUU7WUFDMUQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7aUJBQ3RDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7aUJBQ3BDLFFBQVEsQ0FBQyxLQUFLLENBQUM7aUJBQ2YsYUFBYSxDQUNaO2dCQUNFO29CQUNFLE9BQU8sRUFBRSxRQUFRO29CQUNqQixPQUFPLEVBQUUsUUFBUTtvQkFDakIsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLFFBQVEsRUFBRSxRQUFRO2lCQUNuQjthQUNGLENBQ0Y7U0FDSixDQUFDLENBQUE7SUFDSixDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUE7SUFDakYsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUMxQixDQUFDOzttSEFwRVUsc0JBQXNCLG1FQWF2QixtQkFBbUI7dUdBYmxCLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQUhsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7aUJBQ2hDOzswQkFjSSxNQUFNOzJCQUFDLG1CQUFtQjs0Q0FSekIsaUJBQWlCO3NCQURwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBDT05GSUdVUkFUSU9OX1RPS0VOLCBMb2FkZXJDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uL2NvcmUvbG9hZGVyLmNvbmZpZ3VyYXRpb25cIjtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2xvYWRPdmVybGF5TG9hZGVyXSdcbn0pXG5leHBvcnQgY2xhc3MgT3ZlcmxheUxvYWRlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgb3ZlcmxheVJlZiA9IHRoaXMuY3JlYXRlT3ZlcmxheSgpXG4gIGN1cnJlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCgpXG4gIHNldCBsb2FkT3ZlcmxheUxvYWRlcih2YWx1ZTogT2JzZXJ2YWJsZTxhbnk+KSB7XG4gICAgdGhpcy51bnN1YnNjcmliZUN1cnJlbnRTdWJzY3JpcHRpb24oKVxuICAgIHRoaXMuc3Vic2NyaWJlKHZhbHVlKVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgQEluamVjdChDT05GSUdVUkFUSU9OX1RPS0VOKSBwcml2YXRlIGNvbmZpZ3VyYXRpb246IExvYWRlckNvbmZpZ3VyYXRpb25cbiAgKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGV0YWNoTG9hZGVyKClcbiAgICB0aGlzLnVuc3Vic2NyaWJlQ3VycmVudFN1YnNjcmlwdGlvbigpXG4gIH1cblxuICBwcml2YXRlIHVuc3Vic2NyaWJlQ3VycmVudFN1YnNjcmlwdGlvbigpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmRldGFjaExvYWRlcigpXG4gICAgICB0aGlzLmN1cnJlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlKHZhbHVlOiBPYnNlcnZhYmxlPGFueT4pIHtcbiAgICB0aGlzLmF0dGFjaExvYWRlcigpXG4gICAgdGhpcy5jdXJyZW50U3Vic2NyaXB0aW9uID0gdmFsdWUuc3Vic2NyaWJlKFxuICAgICAge1xuICAgICAgICBuZXh0OiAoKSA9PiB0aGlzLmRldGFjaExvYWRlcigpLFxuICAgICAgICBjb21wbGV0ZTogKCkgPT4gdGhpcy5kZXRhY2hMb2FkZXIoKSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHRoaXMuZGV0YWNoTG9hZGVyKClcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpXG4gICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZilcbiAgICAgICAgLndpdGhQdXNoKGZhbHNlKVxuICAgICAgICAud2l0aFBvc2l0aW9ucyhcbiAgICAgICAgICBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9yaWdpblg6IFwiY2VudGVyXCIsXG4gICAgICAgICAgICAgIG9yaWdpblk6IFwiY2VudGVyXCIsXG4gICAgICAgICAgICAgIG92ZXJsYXlYOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICBvdmVybGF5WTogXCJjZW50ZXJcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgKVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGF0dGFjaExvYWRlcigpIHtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBDb21wb25lbnRQb3J0YWwodGhpcy5jb25maWd1cmF0aW9uLmxvYWRlckNvbXBvbmVudCkpXG4gIH1cblxuICBwcml2YXRlIGRldGFjaExvYWRlcigpIHtcbiAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKClcbiAgfVxuXG59XG5cbiJdfQ==