angular2-ladda
Version:
Angular Ladda module
98 lines • 12.3 kB
JavaScript
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==