UNPKG

angular2-ladda

Version:
98 lines 12.3 kB
import { isPlatformBrowser } from '@angular/common'; import { Directive, Input, Optional, Inject, PLATFORM_ID } from '@angular/core'; import { create as createLadda } from 'ladda'; import { LaddaConfig } from './ladda-config'; import * as i0 from "@angular/core"; import * as i1 from "./ladda-config"; export class LaddaDirective { constructor(el, config, platformId) { this.platformId = platformId; this.ladda = undefined; this.disabled = false; this.el = el.nativeElement; if (!config) { return; } if (config.style && !this.el.getAttribute('data-style')) { this.el.setAttribute('data-style', config.style); } if (config.spinnerSize && !this.el.getAttribute('data-spinner-size')) { this.el.setAttribute('data-spinner-size', config.spinnerSize.toString()); } if (config.spinnerColor && !this.el.getAttribute('data-spinner-color')) { this.el.setAttribute('data-spinner-color', config.spinnerColor); } if (config.spinnerLines && !this.el.getAttribute('data-spinner-lines')) { this.el.setAttribute('data-spinner-lines', config.spinnerLines.toString()); } } ngOnChanges(changes) { if (!this.ladda) { return; // needed since ngOnChanges is called before ngOnInit } if (changes.loading) { this.updateLadda(changes.loading.previousValue); } if (changes.disabled) { this.updateDisabled(); } } ngOnInit() { if (!isPlatformBrowser(this.platformId)) { return; } this.ladda = createLadda(this.el); // if the initial loading value isn't false, a timeout of 0 ms // is necessary for the calculated spinner size to be correct. setTimeout(() => { this.updateLadda(false); }, 0); } ngOnDestroy() { if (this.ladda) { this.ladda.remove(); } } updateLadda(previousValue) { if (!this.ladda) { return; } let loading = typeof this.loading === 'number' || !!this.loading; let wasLoading = typeof previousValue === 'number' || !!previousValue; if (!loading) { if (wasLoading) { this.ladda.stop(); } return this.updateDisabled(); } if (!wasLoading) { this.ladda.start(); } if (typeof this.loading === 'number') { this.ladda.setProgress(this.loading); } } updateDisabled() { this.el.disabled = this.disabled; } } LaddaDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LaddaDirective, deps: [{ token: i0.ElementRef }, { token: LaddaConfig, optional: true }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive }); LaddaDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: LaddaDirective, selector: "[ladda]", inputs: { loading: ["ladda", "loading"], disabled: "disabled" }, usesOnChanges: true, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LaddaDirective, decorators: [{ type: Directive, args: [{ selector: '[ladda]', }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LaddaConfigArgs, decorators: [{ type: Inject, args: [LaddaConfig] }, { type: Optional }] }, { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID] }] }]; }, propDecorators: { loading: [{ type: Input, args: ['ladda'] }], disabled: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFkZGEuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbGFkZGEvc3JjL2xpYi9sYWRkYS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFNBQVMsRUFBYyxLQUFLLEVBQStDLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZJLE9BQU8sRUFBQyxNQUFNLElBQUksV0FBVyxFQUFjLE1BQU0sT0FBTyxDQUFDO0FBQ3pELE9BQU8sRUFBQyxXQUFXLEVBQWtCLE1BQU0sZ0JBQWdCLENBQUM7OztBQU81RCxNQUFNLE9BQU8sY0FBYztJQU92QixZQUNJLEVBQWMsRUFDbUIsTUFBdUIsRUFDM0IsVUFBa0I7UUFBbEIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQVIzQyxVQUFLLEdBQTRCLFNBQVMsQ0FBQztRQUcxQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBT3RCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUUzQixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBRUQsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDckQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwRDtRQUVELElBQUksTUFBTSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDbEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLFdBQVcs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QUFPO3NCQUF0QixLQUFLO3VCQUFDLE9BQU87Z0JBQ0wsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNQbGF0Zm9ybUJyb3dzZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT3B0aW9uYWwsIEluamVjdCwgUExBVEZPUk1fSUR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge2NyZWF0ZSBhcyBjcmVhdGVMYWRkYSwgTGFkZGFCdXR0b259IGZyb20gJ2xhZGRhJztcclxuaW1wb3J0IHtMYWRkYUNvbmZpZywgTGFkZGFDb25maWdBcmdzfSBmcm9tICcuL2xhZGRhLWNvbmZpZyc7XHJcblxyXG5leHBvcnQgdHlwZSBMYWRkYVZhbHVlID0gYm9vbGVhbiB8IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGw7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW2xhZGRhXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYWRkYURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG4gICAgcHJpdmF0ZSBlbDogSFRNTEJ1dHRvbkVsZW1lbnQ7XHJcbiAgICBwcml2YXRlIGxhZGRhOiBMYWRkYUJ1dHRvbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICBASW5wdXQoJ2xhZGRhJykgbG9hZGluZzogTGFkZGFWYWx1ZTtcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgZWw6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgQEluamVjdChMYWRkYUNvbmZpZykgQE9wdGlvbmFsKCkgY29uZmlnOiBMYWRkYUNvbmZpZ0FyZ3MsXHJcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QsXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLmVsID0gZWwubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgaWYgKCFjb25maWcpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNvbmZpZy5zdHlsZSAmJiAhdGhpcy5lbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3R5bGUnKSkge1xyXG4gICAgICAgICAgICB0aGlzLmVsLnNldEF0dHJpYnV0ZSgnZGF0YS1zdHlsZScsIGNvbmZpZy5zdHlsZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY29uZmlnLnNwaW5uZXJTaXplICYmICF0aGlzLmVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zcGlubmVyLXNpemUnKSkge1xyXG4gICAgICAgICAgICB0aGlzLmVsLnNldEF0dHJpYnV0ZSgnZGF0YS1zcGlubmVyLXNpemUnLCBjb25maWcuc3Bpbm5lclNpemUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY29uZmlnLnNwaW5uZXJDb2xvciAmJiAhdGhpcy5lbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3Bpbm5lci1jb2xvcicpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZWwuc2V0QXR0cmlidXRlKCdkYXRhLXNwaW5uZXItY29sb3InLCBjb25maWcuc3Bpbm5lckNvbG9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjb25maWcuc3Bpbm5lckxpbmVzICYmICF0aGlzLmVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zcGlubmVyLWxpbmVzJykpIHtcclxuICAgICAgICAgICAgdGhpcy5lbC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3Bpbm5lci1saW5lcycsIGNvbmZpZy5zcGlubmVyTGluZXMudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBpZiAoIXRoaXMubGFkZGEpIHtcclxuICAgICAgICAgICAgcmV0dXJuOyAvLyBuZWVkZWQgc2luY2UgbmdPbkNoYW5nZXMgaXMgY2FsbGVkIGJlZm9yZSBuZ09uSW5pdFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXMubG9hZGluZykge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxhZGRhKGNoYW5nZXMubG9hZGluZy5wcmV2aW91c1ZhbHVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRGlzYWJsZWQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubGFkZGEgPSBjcmVhdGVMYWRkYSh0aGlzLmVsKTtcclxuXHJcbiAgICAgICAgLy8gaWYgdGhlIGluaXRpYWwgbG9hZGluZyB2YWx1ZSBpc24ndCBmYWxzZSwgYSB0aW1lb3V0IG9mIDAgbXNcclxuICAgICAgICAvLyBpcyBuZWNlc3NhcnkgZm9yIHRoZSBjYWxjdWxhdGVkIHNwaW5uZXIgc2l6ZSB0byBiZSBjb3JyZWN0LlxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge3RoaXMudXBkYXRlTGFkZGEoZmFsc2UpO30sIDApO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmxhZGRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMubGFkZGEucmVtb3ZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlTGFkZGEocHJldmlvdXNWYWx1ZTogTGFkZGFWYWx1ZSk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5sYWRkYSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbG9hZGluZzogYm9vbGVhbiA9IHR5cGVvZiB0aGlzLmxvYWRpbmcgPT09ICdudW1iZXInIHx8ICEhdGhpcy5sb2FkaW5nO1xyXG4gICAgICAgIGxldCB3YXNMb2FkaW5nOiBib29sZWFuID0gdHlwZW9mIHByZXZpb3VzVmFsdWUgPT09ICdudW1iZXInIHx8ICEhcHJldmlvdXNWYWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKCFsb2FkaW5nKSB7XHJcbiAgICAgICAgICAgIGlmICh3YXNMb2FkaW5nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhZGRhLnN0b3AoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlRGlzYWJsZWQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghd2FzTG9hZGluZykge1xyXG4gICAgICAgICAgICB0aGlzLmxhZGRhLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubG9hZGluZyA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgdGhpcy5sYWRkYS5zZXRQcm9ncmVzcyh0aGlzLmxvYWRpbmcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZURpc2FibGVkKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZWwuZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==