@wizishop/angular-components 0.0.110 → 0.0.113

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,6 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import { interval } from 'rxjs';
3
+ import { takeWhile } from 'rxjs/operators';
2
4
  export class ButtonComponent {
3
5
  constructor() {
4
6
  this.extraClasses = 'is-info';
@@ -28,9 +30,10 @@ export class ButtonComponent {
28
30
  this.buttonWidthDelete = '0px';
29
31
  this.currentLoading = 0;
30
32
  }
31
- set isLoading(value) {
32
- this._isLoading = value;
33
- this.isLoadingChange.next(value);
33
+ set isLoading(isLoading) {
34
+ this._isLoading = isLoading;
35
+ this.isLoadingChange.next(isLoading);
36
+ this.toggleLoading();
34
37
  }
35
38
  get isLoading() {
36
39
  return this._isLoading;
@@ -40,24 +43,13 @@ export class ButtonComponent {
40
43
  this.waitForConfirmDelete = true;
41
44
  }
42
45
  }
43
- launchLoading() {
44
- if (this.isLoading || this.interval !== null) {
45
- return;
46
- }
47
- this.isLoading = true;
48
- this.currentLoading = 10;
49
- this.interval = setInterval(() => {
46
+ toggleLoading() {
47
+ this.currentLoading = this.isLoading ? 10 : 100;
48
+ interval(200).pipe(takeWhile(time => this.isLoading)).subscribe(() => {
50
49
  if (this.currentLoading < 85) {
51
50
  this.currentLoading += Math.floor(Math.random() * 15);
52
51
  }
53
- if (!this.isLoading) {
54
- this.currentLoading = 100;
55
- setTimeout(() => {
56
- clearInterval(this.interval);
57
- this.interval = null;
58
- }, 100);
59
- }
60
- }, 200);
52
+ });
61
53
  }
62
54
  addMaxWidth() {
63
55
  this.buttonMaxWidth = this.buttonWidth + 'px';
@@ -74,20 +66,24 @@ export class ButtonComponent {
74
66
  }
75
67
  onButtonClick(event) {
76
68
  event.stopPropagation();
77
- if (!this.disabled) {
78
- if (this.hasLoader) {
79
- this.launchLoading();
80
- }
81
- if (!this.waitForConfirmDelete) {
82
- this.click.emit(event);
83
- if (this.confirmDelete) {
84
- this.resetMaxWidthDelete();
85
- }
86
- }
87
- else {
88
- this.waitForConfirmDelete = false;
69
+ if (this.disabled) {
70
+ return;
71
+ }
72
+ if (this.hasLoader) {
73
+ this.isLoading = false;
74
+ setTimeout(() => {
75
+ this.isLoading = true;
76
+ }, 0);
77
+ }
78
+ if (!this.waitForConfirmDelete) {
79
+ this.click.emit(event);
80
+ if (this.confirmDelete) {
81
+ this.resetMaxWidthDelete();
89
82
  }
90
83
  }
84
+ else {
85
+ this.waitForConfirmDelete = false;
86
+ }
91
87
  }
92
88
  ngAfterViewInit() {
93
89
  setTimeout(() => {
@@ -103,7 +99,7 @@ export class ButtonComponent {
103
99
  ButtonComponent.decorators = [
104
100
  { type: Component, args: [{
105
101
  selector: 'wac-button',
106
- template: "<a\n [class]=\"'wac-button ' + extraClasses\"\n (click)=\"confirmDelete && waitForConfirmDelete ? addMaxWidthDelete() : '';onButtonClick($event);\"\n (mouseleave)=\"animation ? resetMaxWidth() : '';\"\n (mouseenter)=\"animation ? addMaxWidth() : '';\"\n wzAutoHide (clickOutside)=\"confirmDelete && !waitForConfirmDelete ? resetMaxWidthDelete() : ''\"\n [ngClass]=\"[\n label === '' ? 'alone' : '',\n animationRight ? 'animation-right' : '',\n animation ? 'animationText' : '',\n isLoading ? 'is-loading' : '',\n opacity ? 'opacity' : '',\n disabled ? 'disabled' : '',\n widthAuto ? 'width-auto' : '',\n whiteSpaceNowrap ? 'white-space-no-wrap' : '',\n !waitForConfirmDelete && confirmDelete ? 'step-delete' : '',\n confirmDelete ? 'deletePosition-' + confirmDeletePosition : ''\n ]\"\n [ngStyle]=\"{\n 'text-align': contentHorizontalPosition\n }\"\n>\n <span class=\"wac-button__wrapper\">\n <i *ngIf=\"icon !== ''\" [ngClass]=\"icon\" [style.font-size.px]=\"iconFontSize\"></i>\n {{ label }}\n <i *ngIf=\"iconNext !== ''\" [ngClass]=\"iconNext\" [style.font-size.px]=\"iconFontSize\"></i>\n </span>\n <span class=\"wac-button__animation\" [style.maxWidth]=\"buttonMaxWidth\" [style.width]=\"buttonWidth + 'px'\">\n <span #calculWidth class=\"wac-button__animation__text\" [innerHTML]=\"animationText\"></span>\n </span>\n <span class=\"wac-button__confirmDelete\" [style.maxWidth]=\"buttonMaxWidthDelete\" [style.width]=\"buttonWidthDelete + 'px'\">\n <span #calculWidthDelete class=\"wac-button__confirmDelete__text\" [innerHTML]=\"confirmDeleteText\"></span>\n </span>\n <span\n class=\"wac-button__loader\"\n [ngClass]=\"extraClasses.includes('is-outlined') ? 'outlined' : ''\"\n *ngIf=\"isLoading || interval !== null\"\n [style.width]=\"currentLoading + '%'\"\n >\n <span *ngIf=\"extraClasses.includes('is-outlined')\">\n <i *ngIf=\"icon !== ''\" [ngClass]=\"icon\" [style.font-size.px]=\"iconFontSize\"></i>\n {{ label }}\n <i *ngIf=\"iconNext !== ''\" [ngClass]=\"iconNext\" [style.font-size.px]=\"iconFontSize\"></i>\n </span>\n\n </span>\n</a>\n"
102
+ template: "<a\n [class]=\"'wac-button ' + extraClasses\"\n (click)=\"confirmDelete && waitForConfirmDelete ? addMaxWidthDelete() : '';onButtonClick($event);\"\n (mouseleave)=\"animation ? resetMaxWidth() : '';\"\n (mouseenter)=\"animation ? addMaxWidth() : '';\"\n wzAutoHide (clickOutside)=\"confirmDelete && !waitForConfirmDelete ? resetMaxWidthDelete() : ''\"\n [ngClass]=\"[\n label === '' ? 'alone' : '',\n animationRight ? 'animation-right' : '',\n animation ? 'animationText' : '',\n isLoading ? 'is-loading' : '',\n opacity ? 'opacity' : '',\n disabled ? 'disabled' : '',\n widthAuto ? 'width-auto' : '',\n whiteSpaceNowrap ? 'white-space-no-wrap' : '',\n !waitForConfirmDelete && confirmDelete ? 'step-delete' : '',\n confirmDelete ? 'deletePosition-' + confirmDeletePosition : ''\n ]\"\n [ngStyle]=\"{\n 'text-align': contentHorizontalPosition\n }\"\n>\n <span class=\"wac-button__wrapper\">\n <i *ngIf=\"icon !== ''\" [ngClass]=\"icon\" [style.font-size.px]=\"iconFontSize\"></i>\n {{ label }}\n <i *ngIf=\"iconNext !== ''\" [ngClass]=\"iconNext\" [style.font-size.px]=\"iconFontSize\"></i>\n </span>\n <span class=\"wac-button__animation\" [style.maxWidth]=\"buttonMaxWidth\" [style.width]=\"buttonWidth + 'px'\">\n <span #calculWidth class=\"wac-button__animation__text\" [innerHTML]=\"animationText\"></span>\n </span>\n <span class=\"wac-button__confirmDelete\" [style.maxWidth]=\"buttonMaxWidthDelete\" [style.width]=\"buttonWidthDelete + 'px'\">\n <span #calculWidthDelete class=\"wac-button__confirmDelete__text\" [innerHTML]=\"confirmDeleteText\"></span>\n </span>\n <span\n class=\"wac-button__loader\"\n [ngClass]=\"extraClasses.includes('is-outlined') ? 'outlined' : ''\"\n *ngIf=\"isLoading\"\n [style.width]=\"currentLoading + '%'\"\n >\n <span *ngIf=\"extraClasses.includes('is-outlined')\">\n <i *ngIf=\"icon !== ''\" [ngClass]=\"icon\" [style.font-size.px]=\"iconFontSize\"></i>\n {{ label }}\n <i *ngIf=\"iconNext !== ''\" [ngClass]=\"iconNext\" [style.font-size.px]=\"iconFontSize\"></i>\n </span>\n\n </span>\n</a>\n"
107
103
  },] }
108
104
  ];
109
105
  ButtonComponent.ctorParameters = () => [];
@@ -131,4 +127,4 @@ ButtonComponent.propDecorators = {
131
127
  calculWidth: [{ type: ViewChild, args: ['calculWidth',] }],
132
128
  calculWidthDelete: [{ type: ViewChild, args: ['calculWidthDelete',] }]
133
129
  };
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBTW5ILE1BQU0sT0FBTyxlQUFlO0lBc0YxQjtRQXBGQSxpQkFBWSxHQUFHLFNBQVMsQ0FBQztRQUd6QixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBR1gsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQU1WLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFHbEIsOEJBQXlCLEdBQWdDLFFBQVEsQ0FBQztRQUdsRSxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUdsQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBR2xCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHakIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBR3pCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFHaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUdsQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUd2QixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUduQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUd0QixzQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFHdkIsMEJBQXFCLEdBQUcsT0FBTyxDQUFDO1FBRWYsVUFBSyxHQUE2QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBTzVELG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQU1oRCxlQUFVLEdBQVksS0FBSyxDQUFDO1FBR3BDLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFFaEIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBRTdCLG1CQUFjLEdBQUcsS0FB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LENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQzthQUMvRDtZQUNELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO2FBQzNFO1FBQ0gsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7O1lBbEtGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsK25FQUFzQzthQUN2Qzs7OzsyQkFFRSxLQUFLO29CQUdMLEtBQUs7bUJBR0wsS0FBSzt1QkFHTCxLQUFLO3dCQUdMLEtBQUs7d0NBR0wsS0FBSzsyQkFHTCxLQUFLO3dCQUdMLEtBQUs7dUJBR0wsS0FBSzsrQkFHTCxLQUFLO3NCQUdMLEtBQUs7d0JBR0wsS0FBSzs2QkFHTCxLQUFLOzRCQUdMLEtBQUs7NEJBR0wsS0FBSztnQ0FHTCxLQUFLO29DQUdMLEtBQUs7b0JBR0wsTUFBTTt3QkFFTixLQUFLOzhCQUtMLE1BQU07MEJBcUJOLFNBQVMsU0FBQyxhQUFhO2dDQUd2QixTQUFTLFNBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3YWMtYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KClcbiAgZXh0cmFDbGFzc2VzID0gJ2lzLWluZm8nO1xuXG4gIEBJbnB1dCgpXG4gIGxhYmVsID0gJyc7XG5cbiAgQElucHV0KClcbiAgaWNvbiA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGljb25OZXh0OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgd2lkdGhBdXRvID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgY29udGVudEhvcml6b250YWxQb3NpdGlvbjogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnID0gJ2NlbnRlcic7XG5cbiAgQElucHV0KClcbiAgaWNvbkZvbnRTaXplID0gMTI7XG5cbiAgQElucHV0KClcbiAgaGFzTG9hZGVyID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICB3aGl0ZVNwYWNlTm93cmFwID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgb3BhY2l0eSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGFuaW1hdGlvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGFuaW1hdGlvblJpZ2h0ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgYW5pbWF0aW9uVGV4dCA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGNvbmZpcm1EZWxldGUgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBjb25maXJtRGVsZXRlVGV4dCA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGNvbmZpcm1EZWxldGVQb3NpdGlvbiA9ICdyaWdodCc7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBjbGljazogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpIHNldCBpc0xvYWRpbmcodmFsdWUgOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNMb2FkaW5nID0gdmFsdWU7XG4gICAgdGhpcy5pc0xvYWRpbmdDaGFuZ2UubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBAT3V0cHV0KCkgaXNMb2FkaW5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGdldCBpc0xvYWRpbmcoKSA6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0xvYWRpbmc7XG4gIH1cblxuICBwcml2YXRlIF9pc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuXG4gIGludGVydmFsID0gbnVsbDtcblxuICB3YWl0Rm9yQ29uZmlybURlbGV0ZSA9IGZhbHNlO1xuXG4gIGJ1dHRvbk1heFdpZHRoID0gJzBweCc7XG4gIGJ1dHRvbldpZHRoID0gJzBweCc7XG5cbiAgYnV0dG9uTWF4V2lkdGhEZWxldGUgPSAnMHB4JztcbiAgYnV0dG9uV2lkdGhEZWxldGUgPSAnMHB4JztcblxuICBjdXJyZW50TG9hZGluZyA9IDA7XG5cbiAgQFZpZXdDaGlsZCgnY2FsY3VsV2lkdGgnKVxuICBjYWxjdWxXaWR0aDogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdjYWxjdWxXaWR0aERlbGV0ZScpXG4gIGNhbGN1bFdpZHRoRGVsZXRlOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5jb25maXJtRGVsZXRlKSB7XG4gICAgICB0aGlzLndhaXRGb3JDb25maXJtRGVsZXRlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBsYXVuY2hMb2FkaW5nKCkge1xuICAgIGlmICh0aGlzLmlzTG9hZGluZyB8fCB0aGlzLmludGVydmFsICE9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuY3VycmVudExvYWRpbmcgPSAxMDtcblxuICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50TG9hZGluZyA8IDg1KSB7XG4gICAgICAgIHRoaXMuY3VycmVudExvYWRpbmcgKz0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTUpO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmlzTG9hZGluZykge1xuICAgICAgICB0aGlzLmN1cnJlbnRMb2FkaW5nID0gMTAwO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XG4gICAgICAgICAgdGhpcy5pbnRlcnZhbCA9IG51bGw7XG4gICAgICAgIH0sIDEwMCk7XG4gICAgICB9XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIGFkZE1heFdpZHRoKCkge1xuICAgIHRoaXMuYnV0dG9uTWF4V2lkdGggPSB0aGlzLmJ1dHRvbldpZHRoICsgJ3B4JztcbiAgfVxuXG4gIHJlc2V0TWF4V2lkdGgoKSB7XG4gICAgdGhpcy5idXR0b25NYXhXaWR0aCA9ICcwcHgnO1xuICB9XG5cbiAgYWRkTWF4V2lkdGhEZWxldGUoKSB7XG4gICAgdGhpcy5idXR0b25NYXhXaWR0aERlbGV0ZSA9IHRoaXMuYnV0dG9uV2lkdGhEZWxldGUgKyAncHgnO1xuICB9XG5cbiAgcmVzZXRNYXhXaWR0aERlbGV0ZSgpIHtcbiAgICB0aGlzLmJ1dHRvbk1heFdpZHRoRGVsZXRlID0gJzBweCc7XG4gICAgdGhpcy53YWl0Rm9yQ29uZmlybURlbGV0ZSA9IHRydWU7XG4gIH1cblxuICBvbkJ1dHRvbkNsaWNrKGV2ZW50KXtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGlmICh0aGlzLmhhc0xvYWRlcikgeyB0aGlzLmxhdW5jaExvYWRpbmcoKTsgfVxuICAgICAgaWYgKCF0aGlzLndhaXRGb3JDb25maXJtRGVsZXRlKSB7XG4gICAgICAgIHRoaXMuY2xpY2suZW1pdChldmVudCk7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpcm1EZWxldGUpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0TWF4V2lkdGhEZWxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53YWl0Rm9yQ29uZmlybURlbGV0ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmFuaW1hdGlvbikge1xuICAgICAgICB0aGlzLmJ1dHRvbldpZHRoID0gdGhpcy5jYWxjdWxXaWR0aC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY29uZmlybURlbGV0ZSkge1xuICAgICAgICB0aGlzLmJ1dHRvbldpZHRoRGVsZXRlID0gdGhpcy5jYWxjdWxXaWR0aERlbGV0ZS5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgfVxuICAgIH0sIDEwMDApO1xuICB9XG59XG4iXX0=
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTTNDLE1BQU0sT0FBTyxlQUFlO0lBdUYxQjtRQXJGQSxpQkFBWSxHQUFHLFNBQVMsQ0FBQztRQUd6QixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBR1gsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQU1WLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFHbEIsOEJBQXlCLEdBQWdDLFFBQVEsQ0FBQztRQUdsRSxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUdsQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBR2xCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHakIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBR3pCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFHaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUdsQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUd2QixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUduQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUd0QixzQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFHdkIsMEJBQXFCLEdBQUcsT0FBTyxDQUFDO1FBRWYsVUFBSyxHQUE2QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBUTVELG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQU1oRCxlQUFVLEdBQVks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QVcsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO2FBQy9EO1lBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN0QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7YUFDM0U7UUFDSCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDOzs7WUEvSkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxZQUFZO2dCQUN0QiwwbUVBQXNDO2FBQ3ZDOzs7OzJCQUVFLEtBQUs7b0JBR0wsS0FBSzttQkFHTCxLQUFLO3VCQUdMLEtBQUs7d0JBR0wsS0FBSzt3Q0FHTCxLQUFLOzJCQUdMLEtBQUs7d0JBR0wsS0FBSzt1QkFHTCxLQUFLOytCQUdMLEtBQUs7c0JBR0wsS0FBSzt3QkFHTCxLQUFLOzZCQUdMLEtBQUs7NEJBR0wsS0FBSzs0QkFHTCxLQUFLO2dDQUdMLEtBQUs7b0NBR0wsS0FBSztvQkFHTCxNQUFNO3dCQUVOLEtBQUs7OEJBTUwsTUFBTTswQkFxQk4sU0FBUyxTQUFDLGFBQWE7Z0NBR3ZCLFNBQVMsU0FBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3YWMtYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KClcbiAgZXh0cmFDbGFzc2VzID0gJ2lzLWluZm8nO1xuXG4gIEBJbnB1dCgpXG4gIGxhYmVsID0gJyc7XG5cbiAgQElucHV0KClcbiAgaWNvbiA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGljb25OZXh0OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgd2lkdGhBdXRvID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgY29udGVudEhvcml6b250YWxQb3NpdGlvbjogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnID0gJ2NlbnRlcic7XG5cbiAgQElucHV0KClcbiAgaWNvbkZvbnRTaXplID0gMTI7XG5cbiAgQElucHV0KClcbiAgaGFzTG9hZGVyID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICB3aGl0ZVNwYWNlTm93cmFwID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgb3BhY2l0eSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGFuaW1hdGlvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGFuaW1hdGlvblJpZ2h0ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgYW5pbWF0aW9uVGV4dCA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGNvbmZpcm1EZWxldGUgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBjb25maXJtRGVsZXRlVGV4dCA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGNvbmZpcm1EZWxldGVQb3NpdGlvbiA9ICdyaWdodCc7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBjbGljazogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpIHNldCBpc0xvYWRpbmcoaXNMb2FkaW5nIDogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzTG9hZGluZyA9IGlzTG9hZGluZztcbiAgICB0aGlzLmlzTG9hZGluZ0NoYW5nZS5uZXh0KGlzTG9hZGluZyk7XG4gICAgdGhpcy50b2dnbGVMb2FkaW5nKCk7XG4gIH1cblxuICBAT3V0cHV0KCkgaXNMb2FkaW5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGdldCBpc0xvYWRpbmcoKSA6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0xvYWRpbmc7XG4gIH1cblxuICBwcml2YXRlIF9pc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuXG4gIGludGVydmFsID0gbnVsbDtcblxuICB3YWl0Rm9yQ29uZmlybURlbGV0ZSA9IGZhbHNlO1xuXG4gIGJ1dHRvbk1heFdpZHRoID0gJzBweCc7XG4gIGJ1dHRvbldpZHRoID0gJzBweCc7XG5cbiAgYnV0dG9uTWF4V2lkdGhEZWxldGUgPSAnMHB4JztcbiAgYnV0dG9uV2lkdGhEZWxldGUgPSAnMHB4JztcblxuICBjdXJyZW50TG9hZGluZyA9IDA7XG5cbiAgQFZpZXdDaGlsZCgnY2FsY3VsV2lkdGgnKVxuICBjYWxjdWxXaWR0aDogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdjYWxjdWxXaWR0aERlbGV0ZScpXG4gIGNhbGN1bFdpZHRoRGVsZXRlOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5jb25maXJtRGVsZXRlKSB7XG4gICAgICB0aGlzLndhaXRGb3JDb25maXJtRGVsZXRlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVMb2FkaW5nKCkge1xuICAgIHRoaXMuY3VycmVudExvYWRpbmcgPSB0aGlzLmlzTG9hZGluZyA/IDEwIDogMTAwO1xuXG4gICAgaW50ZXJ2YWwoMjAwKS5waXBlKHRha2VXaGlsZSggdGltZT0+IHRoaXMuaXNMb2FkaW5nKSkuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50TG9hZGluZyA8IDg1KSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50TG9hZGluZyArPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxNSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgYWRkTWF4V2lkdGgoKSB7XG4gICAgdGhpcy5idXR0b25NYXhXaWR0aCA9IHRoaXMuYnV0dG9uV2lkdGggKyAncHgnO1xuICB9XG5cbiAgcmVzZXRNYXhXaWR0aCgpIHtcbiAgICB0aGlzLmJ1dHRvbk1heFdpZHRoID0gJzBweCc7XG4gIH1cblxuICBhZGRNYXhXaWR0aERlbGV0ZSgpIHtcbiAgICB0aGlzLmJ1dHRvbk1heFdpZHRoRGVsZXRlID0gdGhpcy5idXR0b25XaWR0aERlbGV0ZSArICdweCc7XG4gIH1cblxuICByZXNldE1heFdpZHRoRGVsZXRlKCkge1xuICAgIHRoaXMuYnV0dG9uTWF4V2lkdGhEZWxldGUgPSAnMHB4JztcbiAgICB0aGlzLndhaXRGb3JDb25maXJtRGVsZXRlID0gdHJ1ZTtcbiAgfVxuXG4gIG9uQnV0dG9uQ2xpY2soZXZlbnQpe1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0xvYWRlcikge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4geyAvLyB0cmljayB0byByZXNldCB0aGUgYW5pbWF0aW9uIGxvYWRpbmdcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLndhaXRGb3JDb25maXJtRGVsZXRlKSB7XG4gICAgICB0aGlzLmNsaWNrLmVtaXQoZXZlbnQpO1xuICAgICAgaWYgKHRoaXMuY29uZmlybURlbGV0ZSkge1xuICAgICAgICB0aGlzLnJlc2V0TWF4V2lkdGhEZWxldGUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53YWl0Rm9yQ29uZmlybURlbGV0ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmFuaW1hdGlvbikge1xuICAgICAgICB0aGlzLmJ1dHRvbldpZHRoID0gdGhpcy5jYWxjdWxXaWR0aC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY29uZmlybURlbGV0ZSkge1xuICAgICAgICB0aGlzLmJ1dHRvbldpZHRoRGVsZXRlID0gdGhpcy5jYWxjdWxXaWR0aERlbGV0ZS5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgfVxuICAgIH0sIDEwMDApO1xuICB9XG59XG4iXX0=
@@ -1,6 +1,7 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  export class SelectedListComponent {
3
3
  constructor() {
4
+ this._options = [];
4
5
  this.enableSelectAll = true;
5
6
  this.selectedItemsIndex = new EventEmitter();
6
7
  this.selectedItemsAll = new EventEmitter();
@@ -8,49 +9,47 @@ export class SelectedListComponent {
8
9
  this.selectedOptionIndex = [];
9
10
  this.switchSelectAll = false;
10
11
  }
12
+ set options(options) {
13
+ this._options = options;
14
+ this.handleSwitchSelectAll();
15
+ }
16
+ get options() {
17
+ return this._options;
18
+ }
11
19
  ngOnInit() {
12
- if (typeof this.options !== typeof undefined) {
13
- this.checkSelectedItem();
14
- if (this.selectedOptionIndex.length === this.options.length) {
15
- this.switchSelectAll = true;
16
- }
17
- }
18
20
  }
19
- selectAll() {
20
- this.selectedOptionIndex = [];
21
- this.options.forEach((eln, i) => {
22
- this.options[i].checked = true;
23
- this.selectedOptionIndex.push(i);
21
+ onSelectAll() {
22
+ this.selectedOptionIndex = this.options.map((option, index) => {
23
+ option.checked = true;
24
+ return index;
24
25
  });
25
26
  this.switchSelectAll = true;
26
27
  this.selectedItemsAll.emit(this.selectedOptionIndex);
27
28
  }
28
- checkSelectedItem() {
29
- this.selectedOptionIndex = [];
30
- this.options.forEach((eln, i) => {
31
- if (eln.checked) {
32
- this.selectedOptionIndex.push(i);
33
- }
34
- });
35
- }
36
- unSelectAll() {
37
- this.selectedOptionIndex = [];
38
- this.options.forEach((eln, i) => {
39
- this.options[i].checked = false;
29
+ onUnSelectAll() {
30
+ this.selectedOptionIndex = this.options.map((option, index) => {
31
+ option.checked = false;
32
+ return index;
40
33
  });
41
34
  this.switchSelectAll = false;
42
35
  this.unSelectedItemsAll.emit(this.selectedOptionIndex);
43
36
  }
44
- selectItem(i) {
45
- this.options[i].checked = !this.options[i].checked;
46
- this.checkSelectedItem();
47
- this.selectedItemsIndex.emit(i);
37
+ onSelectItem(index) {
38
+ this.options[index].checked = !this.options[index].checked;
39
+ this.handleSwitchSelectAll();
40
+ this.selectedItemsIndex.emit(index);
41
+ }
42
+ areAllOptionsChecked() {
43
+ return !this.options.some(option => !option.checked);
44
+ }
45
+ handleSwitchSelectAll() {
46
+ this.switchSelectAll = this.areAllOptionsChecked();
48
47
  }
49
48
  }
50
49
  SelectedListComponent.decorators = [
51
50
  { type: Component, args: [{
52
51
  selector: 'wac-selected-list',
53
- template: "<div class=\"selected-list\">\n <div class=\"selected-list__wrapper\">\n <div class=\"selected-list__wrapper__head\">\n <p *ngIf=\"label\" [innerHTML]=\"label\"></p>\n <span *ngIf=\"textSelectAll && !switchSelectAll\" [innerHTML]=\"textSelectAll\" (click)=\"selectAll()\"></span>\n <span *ngIf=\"textUnSelectAll && switchSelectAll\" [innerHTML]=\"textUnSelectAll\" (click)=\"unSelectAll()\"></span>\n </div>\n <div class=\"selected-list__wrapper__content\">\n <div class=\"selected-list__wrapper__content__item\" *ngFor=\"let item of options;let i = index;\" [ngClass]=\"{'active': item.checked}\" (click)=\"selectItem(i)\">\n <span [innerHTML]=\"item.label\"></span>\n <i class=\"fas fa-check\"></i>\n </div>\n </div>\n </div>\n</div>\n"
52
+ template: "<div class=\"selected-list\">\n <div class=\"selected-list__wrapper\">\n <div class=\"selected-list__wrapper__head\">\n <p *ngIf=\"label\" [innerHTML]=\"label\"></p>\n <span *ngIf=\"textSelectAll && !switchSelectAll\" [innerHTML]=\"textSelectAll\" (click)=\"onSelectAll()\"></span>\n <span *ngIf=\"textUnSelectAll && switchSelectAll\" [innerHTML]=\"textUnSelectAll\" (click)=\"onUnSelectAll()\"></span>\n </div>\n <div class=\"selected-list__wrapper__content\">\n <div class=\"selected-list__wrapper__content__item\" *ngFor=\"let item of options;let i = index;\" [ngClass]=\"{'active': item.checked}\" (click)=\"onSelectItem(i)\">\n <span [innerHTML]=\"item.label\"></span>\n <i class=\"fas fa-check\"></i>\n </div>\n </div>\n </div>\n</div>\n"
54
53
  },] }
55
54
  ];
56
55
  SelectedListComponent.propDecorators = {
@@ -63,4 +62,4 @@ SelectedListComponent.propDecorators = {
63
62
  selectedItemsAll: [{ type: Output }],
64
63
  unSelectedItemsAll: [{ type: Output }]
65
64
  };
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0ZWQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdGVkLWxpc3Qvc2VsZWN0ZWQtbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQU83RSxNQUFNLE9BQU8scUJBQXFCO0lBSmxDO1FBVVcsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdEIsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO1FBQ2hELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFFNUQsd0JBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO0lBNkMxQixDQUFDO0lBM0NDLFFBQVE7UUFDTixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxPQUFPLFNBQVMsRUFBRTtZQUM1QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO2FBQzdCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQy9CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzlCLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRTtnQkFDZixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2xDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsVUFBVSxDQUFDLENBQUM7UUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ25ELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7O1lBM0RGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixreUJBQTZDO2FBQzlDOzs7c0JBR0UsS0FBSztvQkFDTCxLQUFLOzRCQUNMLEtBQUs7OEJBQ0wsS0FBSzs4QkFDTCxLQUFLO2lDQUNMLE1BQU07K0JBQ04sTUFBTTtpQ0FDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U2VsZWN0ZWRMaXN0T3B0aW9ufSBmcm9tICcuL3NoYXJlZC9zZWxlY3RlZC1saXN0LW9wdGlvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dhYy1zZWxlY3RlZC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdGVkLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RlZExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIG9wdGlvbnM6IFNlbGVjdGVkTGlzdE9wdGlvbltdO1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0U2VsZWN0QWxsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHRVblNlbGVjdEFsbDogc3RyaW5nO1xuICBASW5wdXQoKSBlbmFibGVTZWxlY3RBbGwgPSB0cnVlO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtc0luZGV4ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1zQWxsID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJbXT4oKTtcbiAgQE91dHB1dCgpIHVuU2VsZWN0ZWRJdGVtc0FsbCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyW10+KCk7XG5cbiAgc2VsZWN0ZWRPcHRpb25JbmRleCA9IFtdO1xuICBzd2l0Y2hTZWxlY3RBbGwgPSBmYWxzZTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucyAhPT0gdHlwZW9mIHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jaGVja1NlbGVjdGVkSXRlbSgpO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRPcHRpb25JbmRleC5sZW5ndGggPT09IHRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5zd2l0Y2hTZWxlY3RBbGwgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEFsbCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uSW5kZXggPSBbXTtcbiAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaCgoZWxuLCBpKSA9PiB7XG4gICAgICB0aGlzLm9wdGlvbnNbaV0uY2hlY2tlZCA9IHRydWU7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uSW5kZXgucHVzaChpKTtcbiAgICB9KTtcbiAgICB0aGlzLnN3aXRjaFNlbGVjdEFsbCA9IHRydWU7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zQWxsLmVtaXQodGhpcy5zZWxlY3RlZE9wdGlvbkluZGV4KTtcbiAgfVxuXG4gIGNoZWNrU2VsZWN0ZWRJdGVtKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25JbmRleCA9IFtdO1xuICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKChlbG4sIGkpID0+IHtcbiAgICAgIGlmIChlbG4uY2hlY2tlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uSW5kZXgucHVzaChpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHVuU2VsZWN0QWxsKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25JbmRleCA9IFtdO1xuICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKChlbG4sIGkpID0+IHtcbiAgICAgIHRoaXMub3B0aW9uc1tpXS5jaGVja2VkID0gZmFsc2U7XG4gICAgfSk7XG4gICAgdGhpcy5zd2l0Y2hTZWxlY3RBbGwgPSBmYWxzZTtcbiAgICB0aGlzLnVuU2VsZWN0ZWRJdGVtc0FsbC5lbWl0KHRoaXMuc2VsZWN0ZWRPcHRpb25JbmRleCk7XG4gIH1cblxuICBzZWxlY3RJdGVtKGkpIHtcbiAgICB0aGlzLm9wdGlvbnNbaV0uY2hlY2tlZCA9ICF0aGlzLm9wdGlvbnNbaV0uY2hlY2tlZDtcbiAgICB0aGlzLmNoZWNrU2VsZWN0ZWRJdGVtKCk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zSW5kZXguZW1pdChpKTtcbiAgfVxuXG59XG4iXX0=
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0ZWQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdGVkLWxpc3Qvc2VsZWN0ZWQtbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQU83RSxNQUFNLE9BQU8scUJBQXFCO0lBSmxDO1FBTUUsYUFBUSxHQUF5QixFQUFFLENBQUM7UUFjM0Isb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdEIsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO1FBQ2hELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFFNUQsd0JBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO0lBcUMxQixDQUFDO0lBdkRDLElBQWEsT0FBTyxDQUFDLE9BQThCO1FBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQWFELFFBQVE7SUFDUixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM1RCxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUN0QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM1RCxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUN2QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUMzRCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLHFCQUFxQjtRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQ3ZELENBQUM7OztZQTdERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0Isd3lCQUE2QzthQUM5Qzs7O3NCQUtFLEtBQUs7b0JBU0wsS0FBSzs0QkFDTCxLQUFLOzhCQUNMLEtBQUs7OEJBQ0wsS0FBSztpQ0FDTCxNQUFNOytCQUNOLE1BQU07aUNBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NlbGVjdGVkTGlzdE9wdGlvbn0gZnJvbSAnLi9zaGFyZWQvc2VsZWN0ZWQtbGlzdC1vcHRpb24ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3YWMtc2VsZWN0ZWQtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3RlZC1saXN0LmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0ZWRMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBfb3B0aW9uczogU2VsZWN0ZWRMaXN0T3B0aW9uW10gPSBbXTtcblxuICBASW5wdXQoKSBzZXQgb3B0aW9ucyhvcHRpb25zIDogU2VsZWN0ZWRMaXN0T3B0aW9uW10pIHtcbiAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLmhhbmRsZVN3aXRjaFNlbGVjdEFsbCgpO1xuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKSA6IFNlbGVjdGVkTGlzdE9wdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHRTZWxlY3RBbGw6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dFVuU2VsZWN0QWxsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGVuYWJsZVNlbGVjdEFsbCA9IHRydWU7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1zSW5kZXggPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbXNBbGwgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcltdPigpO1xuICBAT3V0cHV0KCkgdW5TZWxlY3RlZEl0ZW1zQWxsID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJbXT4oKTtcblxuICBzZWxlY3RlZE9wdGlvbkluZGV4ID0gW107XG4gIHN3aXRjaFNlbGVjdEFsbCA9IGZhbHNlO1xuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cbiAgb25TZWxlY3RBbGwoKSB7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbkluZGV4ID0gdGhpcy5vcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgb3B0aW9uLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH0pO1xuICAgIHRoaXMuc3dpdGNoU2VsZWN0QWxsID0gdHJ1ZTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXNBbGwuZW1pdCh0aGlzLnNlbGVjdGVkT3B0aW9uSW5kZXgpO1xuICB9XG5cbiAgb25VblNlbGVjdEFsbCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uSW5kZXggPSB0aGlzLm9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiB7XG4gICAgICBvcHRpb24uY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH0pO1xuICAgIHRoaXMuc3dpdGNoU2VsZWN0QWxsID0gZmFsc2U7XG4gICAgdGhpcy51blNlbGVjdGVkSXRlbXNBbGwuZW1pdCh0aGlzLnNlbGVjdGVkT3B0aW9uSW5kZXgpO1xuICB9XG5cbiAgb25TZWxlY3RJdGVtKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLm9wdGlvbnNbaW5kZXhdLmNoZWNrZWQgPSAhdGhpcy5vcHRpb25zW2luZGV4XS5jaGVja2VkO1xuICAgIHRoaXMuaGFuZGxlU3dpdGNoU2VsZWN0QWxsKCk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zSW5kZXguZW1pdChpbmRleCk7XG4gIH1cblxuICBhcmVBbGxPcHRpb25zQ2hlY2tlZCgpIHtcbiAgICByZXR1cm4gIXRoaXMub3B0aW9ucy5zb21lKG9wdGlvbiA9PiAhb3B0aW9uLmNoZWNrZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTd2l0Y2hTZWxlY3RBbGwoKSB7XG4gICAgICB0aGlzLnN3aXRjaFNlbGVjdEFsbCA9IHRoaXMuYXJlQWxsT3B0aW9uc0NoZWNrZWQoKTtcbiAgfVxuXG59XG4iXX0=
@@ -3,8 +3,8 @@ import { Component, ViewEncapsulation, Input, EventEmitter, Output, Directive, H
3
3
  import { CommonModule, DOCUMENT } from '@angular/common';
4
4
  import { NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';
5
5
  import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';
6
- import { Subject, ReplaySubject } from 'rxjs';
7
- import { takeUntil, debounceTime, distinctUntilChanged, tap } from 'rxjs/operators';
6
+ import { Subject, ReplaySubject, interval } from 'rxjs';
7
+ import { takeUntil, debounceTime, distinctUntilChanged, tap, takeWhile } from 'rxjs/operators';
8
8
  import { OverlayContainer } from '@angular/cdk/overlay';
9
9
  import { CdkTableModule } from '@angular/cdk/table';
10
10
  import { trigger, transition, style, animate, state } from '@angular/animations';
@@ -605,9 +605,10 @@ class ButtonComponent {
605
605
  this.buttonWidthDelete = '0px';
606
606
  this.currentLoading = 0;
607
607
  }
608
- set isLoading(value) {
609
- this._isLoading = value;
610
- this.isLoadingChange.next(value);
608
+ set isLoading(isLoading) {
609
+ this._isLoading = isLoading;
610
+ this.isLoadingChange.next(isLoading);
611
+ this.toggleLoading();
611
612
  }
612
613
  get isLoading() {
613
614
  return this._isLoading;
@@ -617,24 +618,13 @@ class ButtonComponent {
617
618
  this.waitForConfirmDelete = true;
618
619
  }
619
620
  }
620
- launchLoading() {
621
- if (this.isLoading || this.interval !== null) {
622
- return;
623
- }
624
- this.isLoading = true;
625
- this.currentLoading = 10;
626
- this.interval = setInterval(() => {
621
+ toggleLoading() {
622
+ this.currentLoading = this.isLoading ? 10 : 100;
623
+ interval(200).pipe(takeWhile(time => this.isLoading)).subscribe(() => {
627
624
  if (this.currentLoading < 85) {
628
625
  this.currentLoading += Math.floor(Math.random() * 15);
629
626
  }
630
- if (!this.isLoading) {
631
- this.currentLoading = 100;
632
- setTimeout(() => {
633
- clearInterval(this.interval);
634
- this.interval = null;
635
- }, 100);
636
- }
637
- }, 200);
627
+ });
638
628
  }
639
629
  addMaxWidth() {
640
630
  this.buttonMaxWidth = this.buttonWidth + 'px';
@@ -651,20 +641,24 @@ class ButtonComponent {
651
641
  }
652
642
  onButtonClick(event) {
653
643
  event.stopPropagation();
654
- if (!this.disabled) {
655
- if (this.hasLoader) {
656
- this.launchLoading();
657
- }
658
- if (!this.waitForConfirmDelete) {
659
- this.click.emit(event);
660
- if (this.confirmDelete) {
661
- this.resetMaxWidthDelete();
662
- }
663
- }
664
- else {
665
- this.waitForConfirmDelete = false;
644
+ if (this.disabled) {
645
+ return;
646
+ }
647
+ if (this.hasLoader) {
648
+ this.isLoading = false;
649
+ setTimeout(() => {
650
+ this.isLoading = true;
651
+ }, 0);
652
+ }
653
+ if (!this.waitForConfirmDelete) {
654
+ this.click.emit(event);
655
+ if (this.confirmDelete) {
656
+ this.resetMaxWidthDelete();
666
657
  }
667
658
  }
659
+ else {
660
+ this.waitForConfirmDelete = false;
661
+ }
668
662
  }
669
663
  ngAfterViewInit() {
670
664
  setTimeout(() => {
@@ -680,7 +674,7 @@ class ButtonComponent {
680
674
  ButtonComponent.decorators = [
681
675
  { type: Component, args: [{
682
676
  selector: 'wac-button',
683
- template: "<a\n [class]=\"'wac-button ' + extraClasses\"\n (click)=\"confirmDelete && waitForConfirmDelete ? addMaxWidthDelete() : '';onButtonClick($event);\"\n (mouseleave)=\"animation ? resetMaxWidth() : '';\"\n (mouseenter)=\"animation ? addMaxWidth() : '';\"\n wzAutoHide (clickOutside)=\"confirmDelete && !waitForConfirmDelete ? resetMaxWidthDelete() : ''\"\n [ngClass]=\"[\n label === '' ? 'alone' : '',\n animationRight ? 'animation-right' : '',\n animation ? 'animationText' : '',\n isLoading ? 'is-loading' : '',\n opacity ? 'opacity' : '',\n disabled ? 'disabled' : '',\n widthAuto ? 'width-auto' : '',\n whiteSpaceNowrap ? 'white-space-no-wrap' : '',\n !waitForConfirmDelete && confirmDelete ? 'step-delete' : '',\n confirmDelete ? 'deletePosition-' + confirmDeletePosition : ''\n ]\"\n [ngStyle]=\"{\n 'text-align': contentHorizontalPosition\n }\"\n>\n <span class=\"wac-button__wrapper\">\n <i *ngIf=\"icon !== ''\" [ngClass]=\"icon\" [style.font-size.px]=\"iconFontSize\"></i>\n {{ label }}\n <i *ngIf=\"iconNext !== ''\" [ngClass]=\"iconNext\" [style.font-size.px]=\"iconFontSize\"></i>\n </span>\n <span class=\"wac-button__animation\" [style.maxWidth]=\"buttonMaxWidth\" [style.width]=\"buttonWidth + 'px'\">\n <span #calculWidth class=\"wac-button__animation__text\" [innerHTML]=\"animationText\"></span>\n </span>\n <span class=\"wac-button__confirmDelete\" [style.maxWidth]=\"buttonMaxWidthDelete\" [style.width]=\"buttonWidthDelete + 'px'\">\n <span #calculWidthDelete class=\"wac-button__confirmDelete__text\" [innerHTML]=\"confirmDeleteText\"></span>\n </span>\n <span\n class=\"wac-button__loader\"\n [ngClass]=\"extraClasses.includes('is-outlined') ? 'outlined' : ''\"\n *ngIf=\"isLoading || interval !== null\"\n [style.width]=\"currentLoading + '%'\"\n >\n <span *ngIf=\"extraClasses.includes('is-outlined')\">\n <i *ngIf=\"icon !== ''\" [ngClass]=\"icon\" [style.font-size.px]=\"iconFontSize\"></i>\n {{ label }}\n <i *ngIf=\"iconNext !== ''\" [ngClass]=\"iconNext\" [style.font-size.px]=\"iconFontSize\"></i>\n </span>\n\n </span>\n</a>\n"
677
+ template: "<a\n [class]=\"'wac-button ' + extraClasses\"\n (click)=\"confirmDelete && waitForConfirmDelete ? addMaxWidthDelete() : '';onButtonClick($event);\"\n (mouseleave)=\"animation ? resetMaxWidth() : '';\"\n (mouseenter)=\"animation ? addMaxWidth() : '';\"\n wzAutoHide (clickOutside)=\"confirmDelete && !waitForConfirmDelete ? resetMaxWidthDelete() : ''\"\n [ngClass]=\"[\n label === '' ? 'alone' : '',\n animationRight ? 'animation-right' : '',\n animation ? 'animationText' : '',\n isLoading ? 'is-loading' : '',\n opacity ? 'opacity' : '',\n disabled ? 'disabled' : '',\n widthAuto ? 'width-auto' : '',\n whiteSpaceNowrap ? 'white-space-no-wrap' : '',\n !waitForConfirmDelete && confirmDelete ? 'step-delete' : '',\n confirmDelete ? 'deletePosition-' + confirmDeletePosition : ''\n ]\"\n [ngStyle]=\"{\n 'text-align': contentHorizontalPosition\n }\"\n>\n <span class=\"wac-button__wrapper\">\n <i *ngIf=\"icon !== ''\" [ngClass]=\"icon\" [style.font-size.px]=\"iconFontSize\"></i>\n {{ label }}\n <i *ngIf=\"iconNext !== ''\" [ngClass]=\"iconNext\" [style.font-size.px]=\"iconFontSize\"></i>\n </span>\n <span class=\"wac-button__animation\" [style.maxWidth]=\"buttonMaxWidth\" [style.width]=\"buttonWidth + 'px'\">\n <span #calculWidth class=\"wac-button__animation__text\" [innerHTML]=\"animationText\"></span>\n </span>\n <span class=\"wac-button__confirmDelete\" [style.maxWidth]=\"buttonMaxWidthDelete\" [style.width]=\"buttonWidthDelete + 'px'\">\n <span #calculWidthDelete class=\"wac-button__confirmDelete__text\" [innerHTML]=\"confirmDeleteText\"></span>\n </span>\n <span\n class=\"wac-button__loader\"\n [ngClass]=\"extraClasses.includes('is-outlined') ? 'outlined' : ''\"\n *ngIf=\"isLoading\"\n [style.width]=\"currentLoading + '%'\"\n >\n <span *ngIf=\"extraClasses.includes('is-outlined')\">\n <i *ngIf=\"icon !== ''\" [ngClass]=\"icon\" [style.font-size.px]=\"iconFontSize\"></i>\n {{ label }}\n <i *ngIf=\"iconNext !== ''\" [ngClass]=\"iconNext\" [style.font-size.px]=\"iconFontSize\"></i>\n </span>\n\n </span>\n</a>\n"
684
678
  },] }
685
679
  ];
686
680
  ButtonComponent.ctorParameters = () => [];
@@ -3270,6 +3264,7 @@ SearchComponent.propDecorators = {
3270
3264
 
3271
3265
  class SelectedListComponent {
3272
3266
  constructor() {
3267
+ this._options = [];
3273
3268
  this.enableSelectAll = true;
3274
3269
  this.selectedItemsIndex = new EventEmitter();
3275
3270
  this.selectedItemsAll = new EventEmitter();
@@ -3277,49 +3272,47 @@ class SelectedListComponent {
3277
3272
  this.selectedOptionIndex = [];
3278
3273
  this.switchSelectAll = false;
3279
3274
  }
3275
+ set options(options) {
3276
+ this._options = options;
3277
+ this.handleSwitchSelectAll();
3278
+ }
3279
+ get options() {
3280
+ return this._options;
3281
+ }
3280
3282
  ngOnInit() {
3281
- if (typeof this.options !== typeof undefined) {
3282
- this.checkSelectedItem();
3283
- if (this.selectedOptionIndex.length === this.options.length) {
3284
- this.switchSelectAll = true;
3285
- }
3286
- }
3287
3283
  }
3288
- selectAll() {
3289
- this.selectedOptionIndex = [];
3290
- this.options.forEach((eln, i) => {
3291
- this.options[i].checked = true;
3292
- this.selectedOptionIndex.push(i);
3284
+ onSelectAll() {
3285
+ this.selectedOptionIndex = this.options.map((option, index) => {
3286
+ option.checked = true;
3287
+ return index;
3293
3288
  });
3294
3289
  this.switchSelectAll = true;
3295
3290
  this.selectedItemsAll.emit(this.selectedOptionIndex);
3296
3291
  }
3297
- checkSelectedItem() {
3298
- this.selectedOptionIndex = [];
3299
- this.options.forEach((eln, i) => {
3300
- if (eln.checked) {
3301
- this.selectedOptionIndex.push(i);
3302
- }
3303
- });
3304
- }
3305
- unSelectAll() {
3306
- this.selectedOptionIndex = [];
3307
- this.options.forEach((eln, i) => {
3308
- this.options[i].checked = false;
3292
+ onUnSelectAll() {
3293
+ this.selectedOptionIndex = this.options.map((option, index) => {
3294
+ option.checked = false;
3295
+ return index;
3309
3296
  });
3310
3297
  this.switchSelectAll = false;
3311
3298
  this.unSelectedItemsAll.emit(this.selectedOptionIndex);
3312
3299
  }
3313
- selectItem(i) {
3314
- this.options[i].checked = !this.options[i].checked;
3315
- this.checkSelectedItem();
3316
- this.selectedItemsIndex.emit(i);
3300
+ onSelectItem(index) {
3301
+ this.options[index].checked = !this.options[index].checked;
3302
+ this.handleSwitchSelectAll();
3303
+ this.selectedItemsIndex.emit(index);
3304
+ }
3305
+ areAllOptionsChecked() {
3306
+ return !this.options.some(option => !option.checked);
3307
+ }
3308
+ handleSwitchSelectAll() {
3309
+ this.switchSelectAll = this.areAllOptionsChecked();
3317
3310
  }
3318
3311
  }
3319
3312
  SelectedListComponent.decorators = [
3320
3313
  { type: Component, args: [{
3321
3314
  selector: 'wac-selected-list',
3322
- template: "<div class=\"selected-list\">\n <div class=\"selected-list__wrapper\">\n <div class=\"selected-list__wrapper__head\">\n <p *ngIf=\"label\" [innerHTML]=\"label\"></p>\n <span *ngIf=\"textSelectAll && !switchSelectAll\" [innerHTML]=\"textSelectAll\" (click)=\"selectAll()\"></span>\n <span *ngIf=\"textUnSelectAll && switchSelectAll\" [innerHTML]=\"textUnSelectAll\" (click)=\"unSelectAll()\"></span>\n </div>\n <div class=\"selected-list__wrapper__content\">\n <div class=\"selected-list__wrapper__content__item\" *ngFor=\"let item of options;let i = index;\" [ngClass]=\"{'active': item.checked}\" (click)=\"selectItem(i)\">\n <span [innerHTML]=\"item.label\"></span>\n <i class=\"fas fa-check\"></i>\n </div>\n </div>\n </div>\n</div>\n"
3315
+ template: "<div class=\"selected-list\">\n <div class=\"selected-list__wrapper\">\n <div class=\"selected-list__wrapper__head\">\n <p *ngIf=\"label\" [innerHTML]=\"label\"></p>\n <span *ngIf=\"textSelectAll && !switchSelectAll\" [innerHTML]=\"textSelectAll\" (click)=\"onSelectAll()\"></span>\n <span *ngIf=\"textUnSelectAll && switchSelectAll\" [innerHTML]=\"textUnSelectAll\" (click)=\"onUnSelectAll()\"></span>\n </div>\n <div class=\"selected-list__wrapper__content\">\n <div class=\"selected-list__wrapper__content__item\" *ngFor=\"let item of options;let i = index;\" [ngClass]=\"{'active': item.checked}\" (click)=\"onSelectItem(i)\">\n <span [innerHTML]=\"item.label\"></span>\n <i class=\"fas fa-check\"></i>\n </div>\n </div>\n </div>\n</div>\n"
3323
3316
  },] }
3324
3317
  ];
3325
3318
  SelectedListComponent.propDecorators = {