ngx-deferred-loader
Version:
Defer displaying loading placeholders until given period of time passes ⏱
90 lines (84 loc) • 6.49 kB
JavaScript
import { Directive, Input, TemplateRef, ViewContainerRef, NgModule } from '@angular/core';
import 'rxjs';
import { CommonModule } from '@angular/common';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
var NgxDeferredLoaderDirective = /** @class */ (function () {
function NgxDeferredLoaderDirective(templateRef, viewContainer) {
this.templateRef = templateRef;
this.viewContainer = viewContainer;
this.DEFAULT_WAIT_LIMIT = 200;
}
/**
* @param {?} changes
* @return {?}
*/
NgxDeferredLoaderDirective.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
var _this = this;
if (changes.deferredLoader.previousValue) {
this.isObservableCompleted = false;
}
if (changes.deferredLoader.currentValue) {
changes.deferredLoader.currentValue.subscribe({
complete: function () {
_this.isObservableCompleted = true;
_this.viewContainer.clear();
}
});
setTimeout(function () {
if (!_this.isObservableCompleted) {
_this.viewContainer.createEmbeddedView(_this.templateRef);
}
}, this.deferredLoaderWaitMs || this.DEFAULT_WAIT_LIMIT);
}
};
NgxDeferredLoaderDirective.decorators = [
{ type: Directive, args: [{
selector: '[deferredLoader]',
},] }
];
/** @nocollapse */
NgxDeferredLoaderDirective.ctorParameters = function () { return [
{ type: TemplateRef },
{ type: ViewContainerRef }
]; };
NgxDeferredLoaderDirective.propDecorators = {
deferredLoader: [{ type: Input }],
deferredLoaderWaitMs: [{ type: Input }]
};
return NgxDeferredLoaderDirective;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
var DeferredLoaderModule = /** @class */ (function () {
function DeferredLoaderModule() {
}
DeferredLoaderModule.decorators = [
{ type: NgModule, args: [{
declarations: [NgxDeferredLoaderDirective],
imports: [
CommonModule
],
exports: [NgxDeferredLoaderDirective]
},] }
];
return DeferredLoaderModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
export { NgxDeferredLoaderDirective, DeferredLoaderModule };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRlZmVycmVkLWxvYWRlci5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vbmd4LWRlZmVycmVkLWxvYWRlci9saWIvbmd4LWRlZmVycmVkLWxvYWRlci5kaXJlY3RpdmUudHMiLCJuZzovL25neC1kZWZlcnJlZC1sb2FkZXIvbGliL25neC1kZWZlcnJlZC1sb2FkZXIubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tkZWZlcnJlZExvYWRlcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hEZWZlcnJlZExvYWRlckRpcmVjdGl2ZSB7XG5cbiAgcHJpdmF0ZSBERUZBVUxUX1dBSVRfTElNSVQgPSAyMDA7XG4gIHByaXZhdGUgaXNPYnNlcnZhYmxlQ29tcGxldGVkXG5cbiAgQElucHV0KClcbiAgZGVmZXJyZWRMb2FkZXI6IE9ic2VydmFibGU8YW55PjtcblxuICBASW5wdXQoKVxuICBkZWZlcnJlZExvYWRlcldhaXRNczogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmXG4gICkgeyB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmRlZmVycmVkTG9hZGVyLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgIHRoaXMuaXNPYnNlcnZhYmxlQ29tcGxldGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuZGVmZXJyZWRMb2FkZXIuY3VycmVudFZhbHVlKSB7XG5cbiAgICAgIGNoYW5nZXMuZGVmZXJyZWRMb2FkZXIuY3VycmVudFZhbHVlLnN1YnNjcmliZSh7XG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc09ic2VydmFibGVDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT2JzZXJ2YWJsZUNvbXBsZXRlZCkge1xuICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XG4gICAgICAgIH1cbiAgICAgIH0sIHRoaXMuZGVmZXJyZWRMb2FkZXJXYWl0TXMgfHwgdGhpcy5ERUZBVUxUX1dBSVRfTElNSVQpXG4gICAgfVxuICB9XG5cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hEZWZlcnJlZExvYWRlckRpcmVjdGl2ZSB9IGZyb20gJy4vbmd4LWRlZmVycmVkLWxvYWRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTmd4RGVmZXJyZWRMb2FkZXJEaXJlY3RpdmVdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtOZ3hEZWZlcnJlZExvYWRlckRpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgRGVmZXJyZWRMb2FkZXJNb2R1bGUgeyB9XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtJQWlCRSxvQ0FDVSxXQUE2QixFQUM3QixhQUErQjtRQUQvQixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBWGpDLHVCQUFrQixHQUFHLEdBQUcsQ0FBQztLQVk1Qjs7Ozs7SUFFTCxnREFBVzs7OztJQUFYLFVBQVksT0FBc0I7UUFBbEMsaUJBb0JDO1FBbkJDLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUU7WUFDeEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztTQUNwQztRQUVELElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUU7WUFFdkMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO2dCQUM1QyxRQUFRLEVBQUU7b0JBQ1IsS0FBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztvQkFDbEMsS0FBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDNUI7YUFDRixDQUFDLENBQUE7WUFFRixVQUFVLENBQUM7Z0JBQ1QsSUFBSSxDQUFDLEtBQUksQ0FBQyxxQkFBcUIsRUFBRTtvQkFDL0IsS0FBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQ3pEO2FBQ0YsRUFBRSxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUE7U0FDekQ7S0FDRjs7Z0JBdkNGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2lCQUM3Qjs7OztnQkFMMEIsV0FBVztnQkFBRSxnQkFBZ0I7OztpQ0FXckQsS0FBSzt1Q0FHTCxLQUFLOztJQThCUixpQ0FBQztDQXpDRDs7Ozs7O0FDSEE7SUFJQTtLQU9xQzs7Z0JBUHBDLFFBQVEsU0FBQztvQkFDUixZQUFZLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztvQkFDMUMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7aUJBQ3RDOztJQUNtQywyQkFBQztDQVByQzs7Ozs7Ozs7Ozs7Ozs7In0=