UNPKG

angular-button-loader

Version:

Angular directive to display loading spinner on button and disable the button while performing async calls. It supports Angular 4+.

146 lines (139 loc) 4.58 kB
import { Subject } from 'rxjs'; import { Directive, ElementRef, HostBinding, HostListener, Input, Renderer2, NgModule } from '@angular/core'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var AngularButtonLoaderService = /** @class */ (function () { function AngularButtonLoaderService() { this.load = new Subject(); } /** * @return {?} */ AngularButtonLoaderService.prototype.displayLoader = /** * @return {?} */ function () { this.load.next(true); }; /** * @return {?} */ AngularButtonLoaderService.prototype.hideLoader = /** * @return {?} */ function () { this.load.next(false); }; return AngularButtonLoaderService; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var AngularButtonLoaderDirective = /** @class */ (function () { function AngularButtonLoaderDirective(loaderService, elementRef, renderer) { this.loaderService = loaderService; this.elementRef = elementRef; this.renderer = renderer; this.disableProperty = false; } /** * @param {?} event * @return {?} */ AngularButtonLoaderDirective.prototype.onClick = /** * @param {?} event * @return {?} */ function (event) { var _this = this; /** @type {?} */ var span = this.elementRef.nativeElement.querySelector('span'); this.subscription = this.loaderService.load.subscribe((/** * @param {?} flag * @return {?} */ function (flag) { _this.disableProperty = flag; if (flag) { _this.renderer.addClass(span, 'loader'); if (_this.loaderColor) { _this.renderer.setStyle(span, 'border-color', _this.loaderColor); } else { _this.renderer.setStyle(span, 'border-color', '#0288d1'); } _this.renderer.addClass(_this.elementRef.nativeElement, 'loader-btn'); } else { _this.renderer.removeAttribute(span, 'class'); _this.subscription.unsubscribe(); } })); }; /** * @return {?} */ AngularButtonLoaderDirective.prototype.ngOnInit = /** * @return {?} */ function () { }; AngularButtonLoaderDirective.decorators = [ { type: Directive, args: [{ selector: '[buttonLoader]', },] } ]; /** @nocollapse */ AngularButtonLoaderDirective.ctorParameters = function () { return [ { type: AngularButtonLoaderService }, { type: ElementRef }, { type: Renderer2 } ]; }; AngularButtonLoaderDirective.propDecorators = { disableProperty: [{ type: HostBinding, args: ['disabled',] }], loaderColor: [{ type: Input }], onClick: [{ type: HostListener, args: ['click',] }] }; return AngularButtonLoaderDirective; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var AngularButtonLoaderModule = /** @class */ (function () { function AngularButtonLoaderModule() { } /** * @return {?} */ AngularButtonLoaderModule.forRoot = /** * @return {?} */ function () { return { ngModule: AngularButtonLoaderModule, providers: [AngularButtonLoaderService] }; }; AngularButtonLoaderModule.decorators = [ { type: NgModule, args: [{ declarations: [AngularButtonLoaderDirective], imports: [], exports: [AngularButtonLoaderDirective], providers: [] },] } ]; return AngularButtonLoaderModule; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ export { AngularButtonLoaderService, AngularButtonLoaderModule, AngularButtonLoaderDirective as ɵa }; //# sourceMappingURL=angular-button-loader.js.map