ngx-load
Version:
A simple angular library for adding loaders.
74 lines • 8.44 kB
JavaScript
import { Directive, Input } from '@angular/core';
import * as i0 from "@angular/core";
export class ReplacementLoaderDirective {
constructor(templateRef, elementRef, renderer, viewContainer) {
this.templateRef = templateRef;
this.elementRef = elementRef;
this.renderer = renderer;
this.viewContainer = viewContainer;
this._loaded = false;
}
set loadReplacementLoader(value) {
this.unsubscribe();
this.setIsLoading();
this.currentSubscription = value.subscribe({
next: () => this.setIsLoaded(),
error: () => this.setIsLoaded(),
complete: () => this.setIsLoaded()
});
}
;
unsubscribe() {
if (this.currentSubscription) {
this.currentSubscription.unsubscribe();
}
}
setIsLoaded() {
this._loaded = true;
this.render();
}
setIsLoading() {
this._loaded = false;
this.render();
}
set loadReplacementLoaderWithComponent(value) {
this._replacementComponent = value;
this.render();
}
render() {
if (this._loaded) {
this.displayInitialComponent();
}
else {
this.displayReplacementComponent();
}
}
displayReplacementComponent() {
if (this._replacementComponent) {
this.viewContainer.clear();
this.viewContainer.createEmbeddedView(this._replacementComponent);
}
}
displayInitialComponent() {
this.viewContainer.clear();
this.viewContainer.createEmbeddedView(this.templateRef);
}
ngOnInit() {
}
ngOnDestroy() {
this.unsubscribe();
}
}
ReplacementLoaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: ReplacementLoaderDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
ReplacementLoaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.0", type: ReplacementLoaderDirective, selector: "[loadReplacementLoader]", inputs: { loadReplacementLoader: "loadReplacementLoader", loadReplacementLoaderWithComponent: "loadReplacementLoaderWithComponent" }, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: ReplacementLoaderDirective, decorators: [{
type: Directive,
args: [{
selector: '[loadReplacementLoader]'
}]
}], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }]; }, propDecorators: { loadReplacementLoader: [{
type: Input
}], loadReplacementLoaderWithComponent: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZW1lbnQtbG9hZGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xvYWQvc3JjL2xpYi9yZXBsYWNlbWVudC9yZXBsYWNlbWVudC1sb2FkZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsS0FBSyxFQU1SLE1BQU0sZUFBZSxDQUFDOztBQU12QixNQUFNLE9BQU8sMEJBQTBCO0lBNkRuQyxZQUNZLFdBQTZCLEVBQzdCLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLGFBQStCO1FBSC9CLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBOUQzQyxZQUFPLEdBQVksS0FBSyxDQUFBO0lBZ0V4QixDQUFDO0lBN0RELElBQ0kscUJBQXFCLENBQUMsS0FBc0I7UUFDNUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNuQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FDdEM7WUFDSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUM5QixLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUMvQixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtTQUNyQyxDQUNKLENBQUE7SUFDTCxDQUFDO0lBQUEsQ0FBQztJQUVNLFdBQVc7UUFDZixJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUE7U0FDekM7SUFDTCxDQUFDO0lBRU8sV0FBVztRQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRU8sWUFBWTtRQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtRQUNwQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQ0ksa0NBQWtDLENBQUMsS0FBdUI7UUFDMUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQTtRQUNsQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVPLE1BQU07UUFDVixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQTtTQUNqQzthQUFNO1lBQ0gsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7U0FDdEM7SUFDTCxDQUFDO0lBRU8sMkJBQTJCO1FBQy9CLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzVCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQTtTQUNwRTtJQUNMLENBQUM7SUFFTyx1QkFBdUI7UUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBVUQsUUFBUTtJQUNSLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ3RCLENBQUM7O3VIQTFFUSwwQkFBMEI7MkdBQTFCLDBCQUEwQjsyRkFBMUIsMEJBQTBCO2tCQUh0QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5QkFBeUI7aUJBQ3RDO2tMQVFPLHFCQUFxQjtzQkFEeEIsS0FBSztnQkE4QkYsa0NBQWtDO3NCQURyQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFJlbmRlcmVyMixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbG9hZFJlcGxhY2VtZW50TG9hZGVyXSdcbn0pXG5leHBvcnQgY2xhc3MgUmVwbGFjZW1lbnRMb2FkZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBfcmVwbGFjZW1lbnRDb21wb25lbnQ6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgICBfbG9hZGVkOiBib29sZWFuID0gZmFsc2VcbiAgICBjdXJyZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWRcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGxvYWRSZXBsYWNlbWVudExvYWRlcih2YWx1ZTogT2JzZXJ2YWJsZTxhbnk+KSB7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5zZXRJc0xvYWRpbmcoKVxuICAgICAgICB0aGlzLmN1cnJlbnRTdWJzY3JpcHRpb24gPSB2YWx1ZS5zdWJzY3JpYmUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmV4dDogKCkgPT4gdGhpcy5zZXRJc0xvYWRlZCgpLFxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB0aGlzLnNldElzTG9hZGVkKCksXG4gICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHRoaXMuc2V0SXNMb2FkZWQoKVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfTtcblxuICAgIHByaXZhdGUgdW5zdWJzY3JpYmUoKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldElzTG9hZGVkKCkge1xuICAgICAgICB0aGlzLl9sb2FkZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0SXNMb2FkaW5nKCkge1xuICAgICAgICB0aGlzLl9sb2FkZWQgPSBmYWxzZVxuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGxvYWRSZXBsYWNlbWVudExvYWRlcldpdGhDb21wb25lbnQodmFsdWU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICAgICAgdGhpcy5fcmVwbGFjZW1lbnRDb21wb25lbnQgPSB2YWx1ZVxuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVuZGVyKCkge1xuICAgICAgICBpZiAodGhpcy5fbG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlJbml0aWFsQ29tcG9uZW50KClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVJlcGxhY2VtZW50Q29tcG9uZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRpc3BsYXlSZXBsYWNlbWVudENvbXBvbmVudCgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3JlcGxhY2VtZW50Q29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fcmVwbGFjZW1lbnRDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRpc3BsYXlJbml0aWFsQ29tcG9uZW50KCkge1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgICApIHtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpXG4gICAgfVxuXG5cbn1cblxuIl19