@wizishop/angular-components 15.1.25 → 15.1.26

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.
@@ -3030,50 +3030,6 @@ wac-calendar {
3030
3030
  }
3031
3031
  }
3032
3032
  }
3033
- .wac-content-with-buttons {
3034
- display: flex;
3035
- align-items: center;
3036
- width: 100%;
3037
- @include media('<tablet') {
3038
- margin: 0 0 20px;
3039
- }
3040
- &__text {
3041
- width: 100%;
3042
- max-width: calc(100% - 100px);
3043
- &__count {
3044
- margin: 0;
3045
- width: 100%;
3046
- display: flex;
3047
- align-items: flex-end;
3048
- justify-content: flex-start;
3049
- > span {
3050
- &:first-child {
3051
- font-size: rem(12);
3052
- font-style: italic;
3053
- color: $wac-color-text-grey;
3054
- line-height: rem(16);
3055
- display: inline-block;
3056
- transform: translateY(-3px);
3057
- }
3058
- &:last-child {
3059
- display: inline-block;
3060
- margin: 0 0 0 20px;
3061
- }
3062
- }
3063
- }
3064
- }
3065
- &__cta {
3066
- display: flex;
3067
- align-items: center;
3068
- width: auto;
3069
- > div {
3070
- margin: 0 0 0 10px;
3071
- &:hover, &:focus {
3072
- z-index: 2;
3073
- }
3074
- }
3075
- }
3076
- }
3077
3033
  .wac-confirm-delete {
3078
3034
  position: absolute;
3079
3035
  right: 0;
@@ -3142,6 +3098,50 @@ wac-calendar {
3142
3098
  }
3143
3099
  }
3144
3100
  }
3101
+ .wac-content-with-buttons {
3102
+ display: flex;
3103
+ align-items: center;
3104
+ width: 100%;
3105
+ @include media('<tablet') {
3106
+ margin: 0 0 20px;
3107
+ }
3108
+ &__text {
3109
+ width: 100%;
3110
+ max-width: calc(100% - 100px);
3111
+ &__count {
3112
+ margin: 0;
3113
+ width: 100%;
3114
+ display: flex;
3115
+ align-items: flex-end;
3116
+ justify-content: flex-start;
3117
+ > span {
3118
+ &:first-child {
3119
+ font-size: rem(12);
3120
+ font-style: italic;
3121
+ color: $wac-color-text-grey;
3122
+ line-height: rem(16);
3123
+ display: inline-block;
3124
+ transform: translateY(-3px);
3125
+ }
3126
+ &:last-child {
3127
+ display: inline-block;
3128
+ margin: 0 0 0 20px;
3129
+ }
3130
+ }
3131
+ }
3132
+ }
3133
+ &__cta {
3134
+ display: flex;
3135
+ align-items: center;
3136
+ width: auto;
3137
+ > div {
3138
+ margin: 0 0 0 10px;
3139
+ &:hover, &:focus {
3140
+ z-index: 2;
3141
+ }
3142
+ }
3143
+ }
3144
+ }
3145
3145
  .wac-delete {
3146
3146
  width: 40px;
3147
3147
  height: 40px;
@@ -4672,6 +4672,23 @@ wac-calendar {
4672
4672
  }
4673
4673
  .wac-multiple-search-plus {
4674
4674
 
4675
+ &.disabled {
4676
+ pointer-events: none;
4677
+ position: relative;
4678
+ &:after {
4679
+ content: '';
4680
+ display: block;
4681
+ position: absolute;
4682
+ top: 0;
4683
+ left: 0;
4684
+ width: 100%;
4685
+ height: 52px;
4686
+ opacity: .45;
4687
+ background-color: $wac-background-color-disabled;
4688
+ z-index: 2;
4689
+ }
4690
+ }
4691
+
4675
4692
  &__wrapper {
4676
4693
  margin: rem(14) 0;
4677
4694
  width: fit-content;
@@ -4984,6 +5001,10 @@ wac-calendar {
4984
5001
  border-radius: 3px;
4985
5002
  }
4986
5003
  }
5004
+
5005
+ .wac-table__body__loader + div {
5006
+ display: none;
5007
+ }
4987
5008
  wac-optional-disable-container {
4988
5009
  position: relative;
4989
5010
  .wac-optional-disable-container {
@@ -8,6 +8,7 @@ import * as i5 from "../loader/loader.component";
8
8
  import * as i6 from "../image/image.component";
9
9
  import * as i7 from "../hn/h3/h3.component";
10
10
  import * as i8 from "../text/text.component";
11
+ import * as i9 from "@ngx-translate/core";
11
12
  export class MultipleSearchPlusComponent {
12
13
  constructor() {
13
14
  this.label = '';
@@ -15,6 +16,7 @@ export class MultipleSearchPlusComponent {
15
16
  this.openSelect = false;
16
17
  this.openSearchResults = false;
17
18
  this.isLoading = true;
19
+ this.disabled = false;
18
20
  this.searchValue = new EventEmitter();
19
21
  this.optionsChange = new EventEmitter();
20
22
  }
@@ -77,17 +79,19 @@ export class MultipleSearchPlusComponent {
77
79
  }
78
80
  }
79
81
  MultipleSearchPlusComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: MultipleSearchPlusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
80
- MultipleSearchPlusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: MultipleSearchPlusComponent, selector: "wac-multiple-search-plus", inputs: { options: "options", searchResults: "searchResults" }, outputs: { searchValue: "searchValue", optionsChange: "optionsChange" }, ngImport: i0, template: "<div class=\"wac-multiple-search-plus\" [zIndexToggle]=\"openSelect || openSearchResults\">\n <!-- Multiple select with search input -->\n <div class=\"wac-multiple-search\" [ngClass]=\"{ open: openSelect }\">\n <div class=\"wac-multiple-search__wrapper\">\n <div class=\"wac-multiple-search__wrapper__left\" *ngIf=\"options.length > 1\" [ngClass]=\"{ open: openSelect }\" wzAutoHide (clickOutside)=\"closeSelect()\">\n <span>{{ label }}</span>\n <i class=\"fal fa-chevron-down\"></i>\n <div class=\"wac-multiple-search__wrapper__left__background\" (click)=\"onToggleSelect()\"></div>\n <div class=\"wac-multiple-search__wrapper__left__select\" *ngIf=\"openSelect\">\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngFor=\"let option of options; let i = index\"\n [attr.data-index]=\"i\"\n (click)=\"resetAllVue(i); inputSearch.value = ''\"\n >\n <span>{{ option.label }}</span>\n <input type=\"hidden\" value=\"\" />\n </div>\n </div>\n </div>\n <div class=\"wac-multiple-search__wrapper__right\" wzAutoHide (clickOutside)=\"closeSearchResults()\">\n <button><i class=\"fal fa-search\"></i></button>\n <input\n #inputSearch\n type=\"text\"\n [placeholder]=\"placeholder\"\n debounceKeyUp\n [debounceTime]=\"500\"\n (onEventChange)=\"setSearchValue($event)\"\n />\n <div class=\"wac-multiple-search__wrapper__left__select\" *ngIf=\"openSearchResults\">\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngFor=\"let res of searchResults; let i = index\"\n (click)=\"addResult(i); inputSearch.value = ''\"\n >\n <wac-image *ngIf=\"res.image\" [src]=\"res.image\"></wac-image>\n <wac-text>#{{ res.id }} {{ res.name }}</wac-text>\n </div>\n <div class=\"wac-table__body__loader\" *ngIf=\"isLoading && !searchResults\">\n <wac-loader [small]=\"true\"></wac-loader>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Results checked -->\n <div *ngFor=\"let option of options; let i = index\">\n <div class=\"wac-multiple-search-plus__wrapper\" *ngIf=\"option.table.length\">\n <wac-h3>{{ option.title }}</wac-h3>\n <div class=\"wac-multiple-search-plus__wrapper__block hover default\" *ngFor=\"let item of option.table; let indexItem = index\">\n <wac-image *ngIf=\"item.image\" [src]=\"item.image\"></wac-image>\n <wac-text>{{ item.name }}</wac-text>\n <span (click)=\"deleteResult(indexItem, i)\"><i class=\"fas fa-times\"></i></span>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DebounceKeyupDirective, selector: "input[debounceKeyUp]" }, { kind: "directive", type: i3.AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }, { kind: "directive", type: i4.ZindexToggleDirective, selector: "[zIndexToggle]", inputs: ["zIndexToggle"], outputs: ["onEventChange"] }, { kind: "component", type: i5.LoaderComponent, selector: "wac-loader", inputs: ["text", "small"] }, { kind: "component", type: i6.ImageComponent, selector: "wac-image", inputs: ["src"] }, { kind: "component", type: i7.H3Component, selector: "wac-h3", inputs: ["grey"] }, { kind: "component", type: i8.TextComponent, selector: "wac-text", inputs: ["textClass"] }] });
82
+ MultipleSearchPlusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: MultipleSearchPlusComponent, selector: "wac-multiple-search-plus", inputs: { options: "options", searchResults: "searchResults", disabled: "disabled" }, outputs: { searchValue: "searchValue", optionsChange: "optionsChange" }, ngImport: i0, template: "<div class=\"wac-multiple-search-plus\" [zIndexToggle]=\"openSelect || openSearchResults\" [ngClass]=\"{ 'disabled': disabled }\">\n <!-- Multiple select with search input -->\n <div class=\"wac-multiple-search\" [ngClass]=\"{ open: openSelect }\">\n <div class=\"wac-multiple-search__wrapper\">\n <div class=\"wac-multiple-search__wrapper__left\" *ngIf=\"options.length > 1\" [ngClass]=\"{ open: openSelect }\" wzAutoHide (clickOutside)=\"closeSelect()\">\n <span>{{ label }}</span>\n <i class=\"fal fa-chevron-down\"></i>\n <div class=\"wac-multiple-search__wrapper__left__background\" (click)=\"onToggleSelect()\"></div>\n <div class=\"wac-multiple-search__wrapper__left__select\" *ngIf=\"openSelect\">\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngFor=\"let option of options; let i = index\"\n [attr.data-index]=\"i\"\n (click)=\"resetAllVue(i); inputSearch.value = ''\"\n >\n <span>{{ option.label }}</span>\n <input type=\"hidden\" value=\"\" />\n </div>\n </div>\n </div>\n <div class=\"wac-multiple-search__wrapper__right\" wzAutoHide (clickOutside)=\"closeSearchResults()\">\n <button><i class=\"fal fa-search\"></i></button>\n <input\n #inputSearch\n type=\"text\"\n [placeholder]=\"placeholder\"\n debounceKeyUp\n [debounceTime]=\"500\"\n (onEventChange)=\"setSearchValue($event)\"\n />\n <div class=\"wac-multiple-search__wrapper__left__select\" *ngIf=\"openSearchResults\">\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngFor=\"let res of searchResults; let i = index\"\n (click)=\"addResult(i); inputSearch.value = ''\"\n >\n <wac-image *ngIf=\"res.image\" [src]=\"res.image\"></wac-image>\n <wac-text>#{{ res.id }} {{ res.name }}</wac-text>\n </div>\n <div class=\"wac-table__body__loader\" *ngIf=\"isLoading && !searchResults\">\n <wac-loader [small]=\"true\"></wac-loader>\n </div>\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngIf=\"!searchResults?.length\"\n >\n <span>{{'wac.datatable.noresult' | translate}}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Results checked -->\n <div *ngFor=\"let option of options; let i = index\">\n <div class=\"wac-multiple-search-plus__wrapper\" *ngIf=\"option.table.length\">\n <wac-h3>{{ option.title }}</wac-h3>\n <div class=\"wac-multiple-search-plus__wrapper__block hover default\" *ngFor=\"let item of option.table; let indexItem = index\">\n <wac-image *ngIf=\"item.image\" [src]=\"item.image\"></wac-image>\n <wac-text>{{ item.name }}</wac-text>\n <span (click)=\"deleteResult(indexItem, i)\"><i class=\"fas fa-times\"></i></span>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DebounceKeyupDirective, selector: "input[debounceKeyUp]" }, { kind: "directive", type: i3.AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }, { kind: "directive", type: i4.ZindexToggleDirective, selector: "[zIndexToggle]", inputs: ["zIndexToggle"], outputs: ["onEventChange"] }, { kind: "component", type: i5.LoaderComponent, selector: "wac-loader", inputs: ["text", "small"] }, { kind: "component", type: i6.ImageComponent, selector: "wac-image", inputs: ["src"] }, { kind: "component", type: i7.H3Component, selector: "wac-h3", inputs: ["grey"] }, { kind: "component", type: i8.TextComponent, selector: "wac-text", inputs: ["textClass"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] });
81
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: MultipleSearchPlusComponent, decorators: [{
82
84
  type: Component,
83
- args: [{ selector: 'wac-multiple-search-plus', template: "<div class=\"wac-multiple-search-plus\" [zIndexToggle]=\"openSelect || openSearchResults\">\n <!-- Multiple select with search input -->\n <div class=\"wac-multiple-search\" [ngClass]=\"{ open: openSelect }\">\n <div class=\"wac-multiple-search__wrapper\">\n <div class=\"wac-multiple-search__wrapper__left\" *ngIf=\"options.length > 1\" [ngClass]=\"{ open: openSelect }\" wzAutoHide (clickOutside)=\"closeSelect()\">\n <span>{{ label }}</span>\n <i class=\"fal fa-chevron-down\"></i>\n <div class=\"wac-multiple-search__wrapper__left__background\" (click)=\"onToggleSelect()\"></div>\n <div class=\"wac-multiple-search__wrapper__left__select\" *ngIf=\"openSelect\">\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngFor=\"let option of options; let i = index\"\n [attr.data-index]=\"i\"\n (click)=\"resetAllVue(i); inputSearch.value = ''\"\n >\n <span>{{ option.label }}</span>\n <input type=\"hidden\" value=\"\" />\n </div>\n </div>\n </div>\n <div class=\"wac-multiple-search__wrapper__right\" wzAutoHide (clickOutside)=\"closeSearchResults()\">\n <button><i class=\"fal fa-search\"></i></button>\n <input\n #inputSearch\n type=\"text\"\n [placeholder]=\"placeholder\"\n debounceKeyUp\n [debounceTime]=\"500\"\n (onEventChange)=\"setSearchValue($event)\"\n />\n <div class=\"wac-multiple-search__wrapper__left__select\" *ngIf=\"openSearchResults\">\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngFor=\"let res of searchResults; let i = index\"\n (click)=\"addResult(i); inputSearch.value = ''\"\n >\n <wac-image *ngIf=\"res.image\" [src]=\"res.image\"></wac-image>\n <wac-text>#{{ res.id }} {{ res.name }}</wac-text>\n </div>\n <div class=\"wac-table__body__loader\" *ngIf=\"isLoading && !searchResults\">\n <wac-loader [small]=\"true\"></wac-loader>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Results checked -->\n <div *ngFor=\"let option of options; let i = index\">\n <div class=\"wac-multiple-search-plus__wrapper\" *ngIf=\"option.table.length\">\n <wac-h3>{{ option.title }}</wac-h3>\n <div class=\"wac-multiple-search-plus__wrapper__block hover default\" *ngFor=\"let item of option.table; let indexItem = index\">\n <wac-image *ngIf=\"item.image\" [src]=\"item.image\"></wac-image>\n <wac-text>{{ item.name }}</wac-text>\n <span (click)=\"deleteResult(indexItem, i)\"><i class=\"fas fa-times\"></i></span>\n </div>\n </div>\n </div>\n</div>\n" }]
85
+ args: [{ selector: 'wac-multiple-search-plus', template: "<div class=\"wac-multiple-search-plus\" [zIndexToggle]=\"openSelect || openSearchResults\" [ngClass]=\"{ 'disabled': disabled }\">\n <!-- Multiple select with search input -->\n <div class=\"wac-multiple-search\" [ngClass]=\"{ open: openSelect }\">\n <div class=\"wac-multiple-search__wrapper\">\n <div class=\"wac-multiple-search__wrapper__left\" *ngIf=\"options.length > 1\" [ngClass]=\"{ open: openSelect }\" wzAutoHide (clickOutside)=\"closeSelect()\">\n <span>{{ label }}</span>\n <i class=\"fal fa-chevron-down\"></i>\n <div class=\"wac-multiple-search__wrapper__left__background\" (click)=\"onToggleSelect()\"></div>\n <div class=\"wac-multiple-search__wrapper__left__select\" *ngIf=\"openSelect\">\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngFor=\"let option of options; let i = index\"\n [attr.data-index]=\"i\"\n (click)=\"resetAllVue(i); inputSearch.value = ''\"\n >\n <span>{{ option.label }}</span>\n <input type=\"hidden\" value=\"\" />\n </div>\n </div>\n </div>\n <div class=\"wac-multiple-search__wrapper__right\" wzAutoHide (clickOutside)=\"closeSearchResults()\">\n <button><i class=\"fal fa-search\"></i></button>\n <input\n #inputSearch\n type=\"text\"\n [placeholder]=\"placeholder\"\n debounceKeyUp\n [debounceTime]=\"500\"\n (onEventChange)=\"setSearchValue($event)\"\n />\n <div class=\"wac-multiple-search__wrapper__left__select\" *ngIf=\"openSearchResults\">\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngFor=\"let res of searchResults; let i = index\"\n (click)=\"addResult(i); inputSearch.value = ''\"\n >\n <wac-image *ngIf=\"res.image\" [src]=\"res.image\"></wac-image>\n <wac-text>#{{ res.id }} {{ res.name }}</wac-text>\n </div>\n <div class=\"wac-table__body__loader\" *ngIf=\"isLoading && !searchResults\">\n <wac-loader [small]=\"true\"></wac-loader>\n </div>\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngIf=\"!searchResults?.length\"\n >\n <span>{{'wac.datatable.noresult' | translate}}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Results checked -->\n <div *ngFor=\"let option of options; let i = index\">\n <div class=\"wac-multiple-search-plus__wrapper\" *ngIf=\"option.table.length\">\n <wac-h3>{{ option.title }}</wac-h3>\n <div class=\"wac-multiple-search-plus__wrapper__block hover default\" *ngFor=\"let item of option.table; let indexItem = index\">\n <wac-image *ngIf=\"item.image\" [src]=\"item.image\"></wac-image>\n <wac-text>{{ item.name }}</wac-text>\n <span (click)=\"deleteResult(indexItem, i)\"><i class=\"fas fa-times\"></i></span>\n </div>\n </div>\n </div>\n</div>\n" }]
84
86
  }], ctorParameters: function () { return []; }, propDecorators: { options: [{
85
87
  type: Input
86
88
  }], searchResults: [{
87
89
  type: Input
90
+ }], disabled: [{
91
+ type: Input
88
92
  }], searchValue: [{
89
93
  type: Output
90
94
  }], optionsChange: [{
91
95
  type: Output
92
96
  }] } });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGUtc2VhcmNoLXBsdXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9tdWx0aXBsZS1zZWFyY2gtcGx1cy9tdWx0aXBsZS1zZWFyY2gtcGx1cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL211bHRpcGxlLXNlYXJjaC1wbHVzL211bHRpcGxlLXNlYXJjaC1wbHVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7QUFRL0UsTUFBTSxPQUFPLDJCQUEyQjtJQWdCdEM7UUFiQSxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFMUIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUtQLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFFOUIsQ0FBQztJQUVoQixRQUFRO1FBQ04sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQVM7UUFDdEIsSUFBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUM7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElB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TSxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDOzt3SEFuRlUsMkJBQTJCOzRHQUEzQiwyQkFBMkIseU1DUnhDLGt3RkEyREE7MkZEbkRhLDJCQUEyQjtrQkFKdkMsU0FBUzsrQkFDRSwwQkFBMEI7MEVBYTNCLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE11bHRpcGxlU2VhcmNoUGx1c09wdGlvbiB9IGZyb20gJy4vc2hhcmVkL211bHRpcGxlLXNlYXJjaC1wbHVzLW9wdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBNdWx0aXBsZVNlYXJjaFBsdXNSZXN1bHRzIH0gZnJvbSAnLi9zaGFyZWQvbXVsdGlwbGUtc2VhcmNoLXBsdXMtcmVzdWx0cy5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dhYy1tdWx0aXBsZS1zZWFyY2gtcGx1cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aXBsZS1zZWFyY2gtcGx1cy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlwbGVTZWFyY2hQbHVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBjdXJyZW50T3B0aW9uOm51bWJlcjtcbiAgbGFiZWwgPSAnJztcbiAgcGxhY2Vob2xkZXIgPSAnJztcbiAgb3BlblNlbGVjdCA9IGZhbHNlO1xuICBvcGVuU2VhcmNoUmVzdWx0cyA9IGZhbHNlO1xuXG4gIGlzTG9hZGluZyA9IHRydWU7XG5cbiAgQElucHV0KCkgb3B0aW9uczpNdWx0aXBsZVNlYXJjaFBsdXNPcHRpb25bXTtcbiAgQElucHV0KCkgc2VhcmNoUmVzdWx0czpNdWx0aXBsZVNlYXJjaFBsdXNSZXN1bHRzW107XG5cbiAgQE91dHB1dCgpIHNlYXJjaFZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb3B0aW9uc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRDdXJyZW50T3B0aW9uKCk7XG4gICAgdGhpcy5zZXRQbGFjZWhvbGRlcigpO1xuICAgIHRoaXMuc2V0TGFiZWwoKTtcbiAgfVxuXG4gIHNldFNlYXJjaFZhbHVlKHZhbHVlOmFueSkge1xuICAgIGlmKHZhbHVlLnRhcmdldC52YWx1ZSAhPSAnJyl7XG4gICAgICB0aGlzLm9wZW5TZWFyY2hSZXN1bHRzID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuU2VhcmNoUmVzdWx0cyA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLnNlYXJjaFZhbHVlLmVtaXQoeyBjdXJyZW50T3B0aW9uOiB0aGlzLm9wdGlvbnNbdGhpcy5jdXJyZW50T3B0aW9uXS5jb2RlLCB2YWx1ZTogdmFsdWUudGFyZ2V0LnZhbHVlIH0pO1xuICB9XG5cbiAgc2V0Q3VycmVudE9wdGlvbih2YWx1ZT86bnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50T3B0aW9uID0gdmFsdWUgfHwgMDtcbiAgfVxuXG4gIHNldFBsYWNlaG9sZGVyKHZhbHVlPzpudW1iZXIpIHtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdmFsdWUgPyB0aGlzLm9wdGlvbnNbdmFsdWVdLnBsYWNlaG9sZGVyIDogdGhpcy5vcHRpb25zWzBdLnBsYWNlaG9sZGVyO1xuICB9XG5cbiAgc2V0TGFiZWwodmFsdWU/Om51bWJlcikge1xuICAgIHRoaXMubGFiZWwgPSB2YWx1ZSA/IHRoaXMub3B0aW9uc1t2YWx1ZV0ubGFiZWwgOiB0aGlzLm9wdGlvbnNbMF0ubGFiZWw7XG4gIH1cblxuICBvblRvZ2dsZVNlbGVjdCgpIHtcbiAgICB0aGlzLm9wZW5TZWxlY3QgPSAhdGhpcy5vcGVuU2VsZWN0O1xuICB9XG5cbiAgY2xvc2VTZWxlY3QoKSB7XG4gICAgdGhpcy5vcGVuU2VsZWN0ID0gZmFsc2U7XG4gIH1cblxuICBjbG9zZVNlYXJjaFJlc3VsdHMoKSB7XG4gICAgdGhpcy5vcGVuU2VhcmNoUmVzdWx0cyA9IGZhbHNlO1xuICB9XG5cbiAgcmVzZXRBbGxWdWUodmFsdWU6bnVtYmVyKSB7XG4gICAgdGhpcy5zZWFyY2hSZXN1bHRzID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2V0Q3VycmVudE9wdGlvbih2YWx1ZSk7XG4gICAgdGhpcy5zZXRQbGFjZWhvbGRlcih2YWx1ZSk7XG4gICAgdGhpcy5zZXRMYWJlbCh2YWx1ZSk7XG4gICAgdGhpcy5vcGVuU2VhcmNoUmVzdWx0cyA9IGZhbHNlO1xuICAgIHRoaXMuY2xvc2VTZWxlY3QoKTtcbiAgfVxuXG4gIGFkZFJlc3VsdChpbmRleDpudW1iZXIpIHtcbiAgICBsZXQgYWxyZWFkeUV4aXN0ID0gZmFsc2U7XG4gICAgdGhpcy5vcHRpb25zW3RoaXMuY3VycmVudE9wdGlvbl0udGFibGUuZm9yRWFjaChlbGVtID0+IHtcbiAgICAgIGlmKGVsZW0uaWQgPT0gdGhpcy5zZWFyY2hSZXN1bHRzW2luZGV4XS5pZCl7XG4gICAgICAgIGFscmVhZHlFeGlzdCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYoIWFscmVhZHlFeGlzdCkge1xuICAgICAgdGhpcy5vcHRpb25zW3RoaXMuY3VycmVudE9wdGlvbl0udGFibGUucHVzaCh0aGlzLnNlYXJjaFJlc3VsdHNbaW5kZXhdKTtcbiAgICB9XG4gICAgdGhpcy5yZXNldEFsbFZ1ZSh0aGlzLmN1cnJlbnRPcHRpb24pO1xuICAgIHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHsgY3VycmVudE9wdGlvbjogdGhpcy5vcHRpb25zW3RoaXMuY3VycmVudE9wdGlvbl0uY29kZSwgYWN0aW9uOiAnYWRkJ30pO1xuICB9XG5cbiAgZGVsZXRlUmVzdWx0KGluZGV4SXRlbTpudW1iZXIsIGluZGV4Om51bWJlcikge1xuICAgIHRoaXMub3B0aW9uc1tpbmRleF0udGFibGUuc3BsaWNlKGluZGV4SXRlbSwxKTtcbiAgICB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh7IGN1cnJlbnRPcHRpb246IHRoaXMub3B0aW9uc1tpbmRleF0uY29kZSwgYWN0aW9uOiAnZGVsZXRlJ30pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwid2FjLW11bHRpcGxlLXNlYXJjaC1wbHVzXCIgW3pJbmRleFRvZ2dsZV09XCJvcGVuU2VsZWN0IHx8IG9wZW5TZWFyY2hSZXN1bHRzXCI+XG4gIDwhLS0gTXVsdGlwbGUgc2VsZWN0IHdpdGggc2VhcmNoIGlucHV0IC0tPlxuICA8ZGl2IGNsYXNzPVwid2FjLW11bHRpcGxlLXNlYXJjaFwiIFtuZ0NsYXNzXT1cInsgb3Blbjogb3BlblNlbGVjdCB9XCI+XG4gICAgPGRpdiBjbGFzcz1cIndhYy1tdWx0aXBsZS1zZWFyY2hfX3dyYXBwZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtbXVsdGlwbGUtc2VhcmNoX193cmFwcGVyX19sZWZ0XCIgKm5nSWY9XCJvcHRpb25zLmxlbmd0aCA+IDFcIiBbbmdDbGFzc109XCJ7IG9wZW46IG9wZW5TZWxlY3QgfVwiIHd6QXV0b0hpZGUgKGNsaWNrT3V0c2lkZSk9XCJjbG9zZVNlbGVjdCgpXCI+XG4gICAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8aSBjbGFzcz1cImZhbCBmYS1jaGV2cm9uLWRvd25cIj48L2k+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtbXVsdGlwbGUtc2VhcmNoX193cmFwcGVyX19sZWZ0X19iYWNrZ3JvdW5kXCIgKGNsaWNrKT1cIm9uVG9nZ2xlU2VsZWN0KClcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1tdWx0aXBsZS1zZWFyY2hfX3dyYXBwZXJfX2xlZnRfX3NlbGVjdFwiICpuZ0lmPVwib3BlblNlbGVjdFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwid2FjLW11bHRpcGxlLXNlYXJjaF9fd3JhcHBlcl9fbGVmdF9fc2VsZWN0X19pdGVtXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWluZGV4XT1cImlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlc2V0QWxsVnVlKGkpOyBpbnB1dFNlYXJjaC52YWx1ZSA9ICcnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj57eyBvcHRpb24ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIHZhbHVlPVwiXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtbXVsdGlwbGUtc2VhcmNoX193cmFwcGVyX19yaWdodFwiIHd6QXV0b0hpZGUgKGNsaWNrT3V0c2lkZSk9XCJjbG9zZVNlYXJjaFJlc3VsdHMoKVwiPlxuICAgICAgICA8YnV0dG9uPjxpIGNsYXNzPVwiZmFsIGZhLXNlYXJjaFwiPjwvaT48L2J1dHRvbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgI2lucHV0U2VhcmNoXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgZGVib3VuY2VLZXlVcFxuICAgICAgICAgIFtkZWJvdW5jZVRpbWVdPVwiNTAwXCJcbiAgICAgICAgICAob25FdmVudENoYW5nZSk9XCJzZXRTZWFyY2hWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1tdWx0aXBsZS1zZWFyY2hfX3dyYXBwZXJfX2xlZnRfX3NlbGVjdFwiICpuZ0lmPVwib3BlblNlYXJjaFJlc3VsdHNcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIndhYy1tdWx0aXBsZS1zZWFyY2hfX3dyYXBwZXJfX2xlZnRfX3NlbGVjdF9faXRlbVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmVzIG9mIHNlYXJjaFJlc3VsdHM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFkZFJlc3VsdChpKTsgaW5wdXRTZWFyY2gudmFsdWUgPSAnJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHdhYy1pbWFnZSAqbmdJZj1cInJlcy5pbWFnZVwiIFtzcmNdPVwicmVzLmltYWdlXCI+PC93YWMtaW1hZ2U+XG4gICAgICAgICAgICA8d2FjLXRleHQ+I3t7IHJlcy5pZCB9fSB7eyByZXMubmFtZSB9fTwvd2FjLXRleHQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy10YWJsZV9fYm9keV9fbG9hZGVyXCIgKm5nSWY9XCJpc0xvYWRpbmcgJiYgIXNlYXJjaFJlc3VsdHNcIj5cbiAgICAgICAgICAgIDx3YWMtbG9hZGVyIFtzbWFsbF09XCJ0cnVlXCI+PC93YWMtbG9hZGVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFJlc3VsdHMgY2hlY2tlZCAtLT5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnM7IGxldCBpID0gaW5kZXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwid2FjLW11bHRpcGxlLXNlYXJjaC1wbHVzX193cmFwcGVyXCIgKm5nSWY9XCJvcHRpb24udGFibGUubGVuZ3RoXCI+XG4gICAgICA8d2FjLWgzPnt7IG9wdGlvbi50aXRsZSB9fTwvd2FjLWgzPlxuICAgICAgPGRpdiBjbGFzcz1cIndhYy1tdWx0aXBsZS1zZWFyY2gtcGx1c19fd3JhcHBlcl9fYmxvY2sgaG92ZXIgZGVmYXVsdFwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIG9wdGlvbi50YWJsZTsgbGV0IGluZGV4SXRlbSA9IGluZGV4XCI+XG4gICAgICAgIDx3YWMtaW1hZ2UgKm5nSWY9XCJpdGVtLmltYWdlXCIgW3NyY109XCJpdGVtLmltYWdlXCI+PC93YWMtaW1hZ2U+XG4gICAgICAgIDx3YWMtdGV4dD57eyBpdGVtLm5hbWUgfX08L3dhYy10ZXh0PlxuICAgICAgICA8c3BhbiAoY2xpY2spPVwiZGVsZXRlUmVzdWx0KGluZGV4SXRlbSwgaSlcIj48aSBjbGFzcz1cImZhcyBmYS10aW1lc1wiPjwvaT48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGUtc2VhcmNoLXBsdXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9tdWx0aXBsZS1zZWFyY2gtcGx1cy9tdWx0aXBsZS1zZWFyY2gtcGx1cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL211bHRpcGxlLXNlYXJjaC1wbHVzL211bHRpcGxlLXNlYXJjaC1wbHVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBUS9FLE1BQU0sT0FBTywyQkFBMkI7SUFpQnRDO1FBZEEsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRTFCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFJUixhQUFRLEdBQXFCLEtBQUssQ0FBQztRQUVsQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRTlCLENBQUM7SUFFaEIsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFTO1FBQ3RCLElBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFDO1lB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S0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQzs7d0hBcEZVLDJCQUEyQjs0R0FBM0IsMkJBQTJCLCtOQ1J4QyxpaEdBaUVBOzJGRHpEYSwyQkFBMkI7a0JBSnZDLFNBQVM7K0JBQ0UsMEJBQTBCOzBFQWEzQixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE11bHRpcGxlU2VhcmNoUGx1c09wdGlvbiB9IGZyb20gJy4vc2hhcmVkL211bHRpcGxlLXNlYXJjaC1wbHVzLW9wdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBNdWx0aXBsZVNlYXJjaFBsdXNSZXN1bHRzIH0gZnJvbSAnLi9zaGFyZWQvbXVsdGlwbGUtc2VhcmNoLXBsdXMtcmVzdWx0cy5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dhYy1tdWx0aXBsZS1zZWFyY2gtcGx1cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aXBsZS1zZWFyY2gtcGx1cy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlwbGVTZWFyY2hQbHVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBjdXJyZW50T3B0aW9uOm51bWJlcjtcbiAgbGFiZWwgPSAnJztcbiAgcGxhY2Vob2xkZXIgPSAnJztcbiAgb3BlblNlbGVjdCA9IGZhbHNlO1xuICBvcGVuU2VhcmNoUmVzdWx0cyA9IGZhbHNlO1xuXG4gIGlzTG9hZGluZyA9IHRydWU7XG5cbiAgQElucHV0KCkgb3B0aW9uczpNdWx0aXBsZVNlYXJjaFBsdXNPcHRpb25bXTtcbiAgQElucHV0KCkgc2VhcmNoUmVzdWx0czpNdWx0aXBsZVNlYXJjaFBsdXNSZXN1bHRzW107XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuIHwgc3RyaW5nID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHNlYXJjaFZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb3B0aW9uc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRDdXJyZW50T3B0aW9uKCk7XG4gICAgdGhpcy5zZXRQbGFjZWhvbGRlcigpO1xuICAgIHRoaXMuc2V0TGFiZWwoKTtcbiAgfVxuXG4gIHNldFNlYXJjaFZhbHVlKHZhbHVlOmFueSkge1xuICAgIGlmKHZhbHVlLnRhcmdldC52YWx1ZSAhPSAnJyl7XG4gICAgICB0aGlzLm9wZW5TZWFyY2hSZXN1bHRzID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuU2VhcmNoUmVzdWx0cyA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLnNlYXJjaFZhbHVlLmVtaXQoeyBjdXJyZW50T3B0aW9uOiB0aGlzLm9wdGlvbnNbdGhpcy5jdXJyZW50T3B0aW9uXS5jb2RlLCB2YWx1ZTogdmFsdWUudGFyZ2V0LnZhbHVlIH0pO1xuICB9XG5cbiAgc2V0Q3VycmVudE9wdGlvbih2YWx1ZT86bnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50T3B0aW9uID0gdmFsdWUgfHwgMDtcbiAgfVxuXG4gIHNldFBsYWNlaG9sZGVyKHZhbHVlPzpudW1iZXIpIHtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdmFsdWUgPyB0aGlzLm9wdGlvbnNbdmFsdWVdLnBsYWNlaG9sZGVyIDogdGhpcy5vcHRpb25zWzBdLnBsYWNlaG9sZGVyO1xuICB9XG5cbiAgc2V0TGFiZWwodmFsdWU/Om51bWJlcikge1xuICAgIHRoaXMubGFiZWwgPSB2YWx1ZSA/IHRoaXMub3B0aW9uc1t2YWx1ZV0ubGFiZWwgOiB0aGlzLm9wdGlvbnNbMF0ubGFiZWw7XG4gIH1cblxuICBvblRvZ2dsZVNlbGVjdCgpIHtcbiAgICB0aGlzLm9wZW5TZWxlY3QgPSAhdGhpcy5vcGVuU2VsZWN0O1xuICB9XG5cbiAgY2xvc2VTZWxlY3QoKSB7XG4gICAgdGhpcy5vcGVuU2VsZWN0ID0gZmFsc2U7XG4gIH1cblxuICBjbG9zZVNlYXJjaFJlc3VsdHMoKSB7XG4gICAgdGhpcy5vcGVuU2VhcmNoUmVzdWx0cyA9IGZhbHNlO1xuICB9XG5cbiAgcmVzZXRBbGxWdWUodmFsdWU6bnVtYmVyKSB7XG4gICAgdGhpcy5zZWFyY2hSZXN1bHRzID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2V0Q3VycmVudE9wdGlvbih2YWx1ZSk7XG4gICAgdGhpcy5zZXRQbGFjZWhvbGRlcih2YWx1ZSk7XG4gICAgdGhpcy5zZXRMYWJlbCh2YWx1ZSk7XG4gICAgdGhpcy5vcGVuU2VhcmNoUmVzdWx0cyA9IGZhbHNlO1xuICAgIHRoaXMuY2xvc2VTZWxlY3QoKTtcbiAgfVxuXG4gIGFkZFJlc3VsdChpbmRleDpudW1iZXIpIHtcbiAgICBsZXQgYWxyZWFkeUV4aXN0ID0gZmFsc2U7XG4gICAgdGhpcy5vcHRpb25zW3RoaXMuY3VycmVudE9wdGlvbl0udGFibGUuZm9yRWFjaChlbGVtID0+IHtcbiAgICAgIGlmKGVsZW0uaWQgPT0gdGhpcy5zZWFyY2hSZXN1bHRzW2luZGV4XS5pZCl7XG4gICAgICAgIGFscmVhZHlFeGlzdCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYoIWFscmVhZHlFeGlzdCkge1xuICAgICAgdGhpcy5vcHRpb25zW3RoaXMuY3VycmVudE9wdGlvbl0udGFibGUucHVzaCh0aGlzLnNlYXJjaFJlc3VsdHNbaW5kZXhdKTtcbiAgICB9XG4gICAgdGhpcy5yZXNldEFsbFZ1ZSh0aGlzLmN1cnJlbnRPcHRpb24pO1xuICAgIHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHsgY3VycmVudE9wdGlvbjogdGhpcy5vcHRpb25zW3RoaXMuY3VycmVudE9wdGlvbl0uY29kZSwgYWN0aW9uOiAnYWRkJ30pO1xuICB9XG5cbiAgZGVsZXRlUmVzdWx0KGluZGV4SXRlbTpudW1iZXIsIGluZGV4Om51bWJlcikge1xuICAgIHRoaXMub3B0aW9uc1tpbmRleF0udGFibGUuc3BsaWNlKGluZGV4SXRlbSwxKTtcbiAgICB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh7IGN1cnJlbnRPcHRpb246IHRoaXMub3B0aW9uc1tpbmRleF0uY29kZSwgYWN0aW9uOiAnZGVsZXRlJ30pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwid2FjLW11bHRpcGxlLXNlYXJjaC1wbHVzXCIgW3pJbmRleFRvZ2dsZV09XCJvcGVuU2VsZWN0IHx8IG9wZW5TZWFyY2hSZXN1bHRzXCIgW25nQ2xhc3NdPVwieyAnZGlzYWJsZWQnOiBkaXNhYmxlZCB9XCI+XG4gIDwhLS0gTXVsdGlwbGUgc2VsZWN0IHdpdGggc2VhcmNoIGlucHV0IC0tPlxuICA8ZGl2IGNsYXNzPVwid2FjLW11bHRpcGxlLXNlYXJjaFwiIFtuZ0NsYXNzXT1cInsgb3Blbjogb3BlblNlbGVjdCB9XCI+XG4gICAgPGRpdiBjbGFzcz1cIndhYy1tdWx0aXBsZS1zZWFyY2hfX3dyYXBwZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtbXVsdGlwbGUtc2VhcmNoX193cmFwcGVyX19sZWZ0XCIgKm5nSWY9XCJvcHRpb25zLmxlbmd0aCA+IDFcIiBbbmdDbGFzc109XCJ7IG9wZW46IG9wZW5TZWxlY3QgfVwiIHd6QXV0b0hpZGUgKGNsaWNrT3V0c2lkZSk9XCJjbG9zZVNlbGVjdCgpXCI+XG4gICAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8aSBjbGFzcz1cImZhbCBmYS1jaGV2cm9uLWRvd25cIj48L2k+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtbXVsdGlwbGUtc2VhcmNoX193cmFwcGVyX19sZWZ0X19iYWNrZ3JvdW5kXCIgKGNsaWNrKT1cIm9uVG9nZ2xlU2VsZWN0KClcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1tdWx0aXBsZS1zZWFyY2hfX3dyYXBwZXJfX2xlZnRfX3NlbGVjdFwiICpuZ0lmPVwib3BlblNlbGVjdFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwid2FjLW11bHRpcGxlLXNlYXJjaF9fd3JhcHBlcl9fbGVmdF9fc2VsZWN0X19pdGVtXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWluZGV4XT1cImlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlc2V0QWxsVnVlKGkpOyBpbnB1dFNlYXJjaC52YWx1ZSA9ICcnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj57eyBvcHRpb24ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIHZhbHVlPVwiXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtbXVsdGlwbGUtc2VhcmNoX193cmFwcGVyX19yaWdodFwiIHd6QXV0b0hpZGUgKGNsaWNrT3V0c2lkZSk9XCJjbG9zZVNlYXJjaFJlc3VsdHMoKVwiPlxuICAgICAgICA8YnV0dG9uPjxpIGNsYXNzPVwiZmFsIGZhLXNlYXJjaFwiPjwvaT48L2J1dHRvbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgI2lucHV0U2VhcmNoXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgZGVib3VuY2VLZXlVcFxuICAgICAgICAgIFtkZWJvdW5jZVRpbWVdPVwiNTAwXCJcbiAgICAgICAgICAob25FdmVudENoYW5nZSk9XCJzZXRTZWFyY2hWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1tdWx0aXBsZS1zZWFyY2hfX3dyYXBwZXJfX2xlZnRfX3NlbGVjdFwiICpuZ0lmPVwib3BlblNlYXJjaFJlc3VsdHNcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIndhYy1tdWx0aXBsZS1zZWFyY2hfX3dyYXBwZXJfX2xlZnRfX3NlbGVjdF9faXRlbVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmVzIG9mIHNlYXJjaFJlc3VsdHM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFkZFJlc3VsdChpKTsgaW5wdXRTZWFyY2gudmFsdWUgPSAnJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHdhYy1pbWFnZSAqbmdJZj1cInJlcy5pbWFnZVwiIFtzcmNdPVwicmVzLmltYWdlXCI+PC93YWMtaW1hZ2U+XG4gICAgICAgICAgICA8d2FjLXRleHQ+I3t7IHJlcy5pZCB9fSB7eyByZXMubmFtZSB9fTwvd2FjLXRleHQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy10YWJsZV9fYm9keV9fbG9hZGVyXCIgKm5nSWY9XCJpc0xvYWRpbmcgJiYgIXNlYXJjaFJlc3VsdHNcIj5cbiAgICAgICAgICAgIDx3YWMtbG9hZGVyIFtzbWFsbF09XCJ0cnVlXCI+PC93YWMtbG9hZGVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwid2FjLW11bHRpcGxlLXNlYXJjaF9fd3JhcHBlcl9fbGVmdF9fc2VsZWN0X19pdGVtXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIXNlYXJjaFJlc3VsdHM/Lmxlbmd0aFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+e3snd2FjLmRhdGF0YWJsZS5ub3Jlc3VsdCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBSZXN1bHRzIGNoZWNrZWQgLS0+XG4gIDxkaXYgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgPGRpdiBjbGFzcz1cIndhYy1tdWx0aXBsZS1zZWFyY2gtcGx1c19fd3JhcHBlclwiICpuZ0lmPVwib3B0aW9uLnRhYmxlLmxlbmd0aFwiPlxuICAgICAgPHdhYy1oMz57eyBvcHRpb24udGl0bGUgfX08L3dhYy1oMz5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtbXVsdGlwbGUtc2VhcmNoLXBsdXNfX3dyYXBwZXJfX2Jsb2NrIGhvdmVyIGRlZmF1bHRcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb24udGFibGU7IGxldCBpbmRleEl0ZW0gPSBpbmRleFwiPlxuICAgICAgICA8d2FjLWltYWdlICpuZ0lmPVwiaXRlbS5pbWFnZVwiIFtzcmNdPVwiaXRlbS5pbWFnZVwiPjwvd2FjLWltYWdlPlxuICAgICAgICA8d2FjLXRleHQ+e3sgaXRlbS5uYW1lIH19PC93YWMtdGV4dD5cbiAgICAgICAgPHNwYW4gKGNsaWNrKT1cImRlbGV0ZVJlc3VsdChpbmRleEl0ZW0sIGkpXCI+PGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -3883,6 +3883,7 @@ class MultipleSearchPlusComponent {
3883
3883
  this.openSelect = false;
3884
3884
  this.openSearchResults = false;
3885
3885
  this.isLoading = true;
3886
+ this.disabled = false;
3886
3887
  this.searchValue = new EventEmitter();
3887
3888
  this.optionsChange = new EventEmitter();
3888
3889
  }
@@ -3945,14 +3946,16 @@ class MultipleSearchPlusComponent {
3945
3946
  }
3946
3947
  }
3947
3948
  MultipleSearchPlusComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: MultipleSearchPlusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3948
- MultipleSearchPlusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: MultipleSearchPlusComponent, selector: "wac-multiple-search-plus", inputs: { options: "options", searchResults: "searchResults" }, outputs: { searchValue: "searchValue", optionsChange: "optionsChange" }, ngImport: i0, template: "<div class=\"wac-multiple-search-plus\" [zIndexToggle]=\"openSelect || openSearchResults\">\n <!-- Multiple select with search input -->\n <div class=\"wac-multiple-search\" [ngClass]=\"{ open: openSelect }\">\n <div class=\"wac-multiple-search__wrapper\">\n <div class=\"wac-multiple-search__wrapper__left\" *ngIf=\"options.length > 1\" [ngClass]=\"{ open: openSelect }\" wzAutoHide (clickOutside)=\"closeSelect()\">\n <span>{{ label }}</span>\n <i class=\"fal fa-chevron-down\"></i>\n <div class=\"wac-multiple-search__wrapper__left__background\" (click)=\"onToggleSelect()\"></div>\n <div class=\"wac-multiple-search__wrapper__left__select\" *ngIf=\"openSelect\">\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngFor=\"let option of options; let i = index\"\n [attr.data-index]=\"i\"\n (click)=\"resetAllVue(i); inputSearch.value = ''\"\n >\n <span>{{ option.label }}</span>\n <input type=\"hidden\" value=\"\" />\n </div>\n </div>\n </div>\n <div class=\"wac-multiple-search__wrapper__right\" wzAutoHide (clickOutside)=\"closeSearchResults()\">\n <button><i class=\"fal fa-search\"></i></button>\n <input\n #inputSearch\n type=\"text\"\n [placeholder]=\"placeholder\"\n debounceKeyUp\n [debounceTime]=\"500\"\n (onEventChange)=\"setSearchValue($event)\"\n />\n <div class=\"wac-multiple-search__wrapper__left__select\" *ngIf=\"openSearchResults\">\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngFor=\"let res of searchResults; let i = index\"\n (click)=\"addResult(i); inputSearch.value = ''\"\n >\n <wac-image *ngIf=\"res.image\" [src]=\"res.image\"></wac-image>\n <wac-text>#{{ res.id }} {{ res.name }}</wac-text>\n </div>\n <div class=\"wac-table__body__loader\" *ngIf=\"isLoading && !searchResults\">\n <wac-loader [small]=\"true\"></wac-loader>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Results checked -->\n <div *ngFor=\"let option of options; let i = index\">\n <div class=\"wac-multiple-search-plus__wrapper\" *ngIf=\"option.table.length\">\n <wac-h3>{{ option.title }}</wac-h3>\n <div class=\"wac-multiple-search-plus__wrapper__block hover default\" *ngFor=\"let item of option.table; let indexItem = index\">\n <wac-image *ngIf=\"item.image\" [src]=\"item.image\"></wac-image>\n <wac-text>{{ item.name }}</wac-text>\n <span (click)=\"deleteResult(indexItem, i)\"><i class=\"fas fa-times\"></i></span>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: DebounceKeyupDirective, selector: "input[debounceKeyUp]" }, { kind: "directive", type: AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }, { kind: "directive", type: ZindexToggleDirective, selector: "[zIndexToggle]", inputs: ["zIndexToggle"], outputs: ["onEventChange"] }, { kind: "component", type: LoaderComponent, selector: "wac-loader", inputs: ["text", "small"] }, { kind: "component", type: ImageComponent, selector: "wac-image", inputs: ["src"] }, { kind: "component", type: H3Component, selector: "wac-h3", inputs: ["grey"] }, { kind: "component", type: TextComponent, selector: "wac-text", inputs: ["textClass"] }] });
3949
+ MultipleSearchPlusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: MultipleSearchPlusComponent, selector: "wac-multiple-search-plus", inputs: { options: "options", searchResults: "searchResults", disabled: "disabled" }, outputs: { searchValue: "searchValue", optionsChange: "optionsChange" }, ngImport: i0, template: "<div class=\"wac-multiple-search-plus\" [zIndexToggle]=\"openSelect || openSearchResults\" [ngClass]=\"{ 'disabled': disabled }\">\n <!-- Multiple select with search input -->\n <div class=\"wac-multiple-search\" [ngClass]=\"{ open: openSelect }\">\n <div class=\"wac-multiple-search__wrapper\">\n <div class=\"wac-multiple-search__wrapper__left\" *ngIf=\"options.length > 1\" [ngClass]=\"{ open: openSelect }\" wzAutoHide (clickOutside)=\"closeSelect()\">\n <span>{{ label }}</span>\n <i class=\"fal fa-chevron-down\"></i>\n <div class=\"wac-multiple-search__wrapper__left__background\" (click)=\"onToggleSelect()\"></div>\n <div class=\"wac-multiple-search__wrapper__left__select\" *ngIf=\"openSelect\">\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngFor=\"let option of options; let i = index\"\n [attr.data-index]=\"i\"\n (click)=\"resetAllVue(i); inputSearch.value = ''\"\n >\n <span>{{ option.label }}</span>\n <input type=\"hidden\" value=\"\" />\n </div>\n </div>\n </div>\n <div class=\"wac-multiple-search__wrapper__right\" wzAutoHide (clickOutside)=\"closeSearchResults()\">\n <button><i class=\"fal fa-search\"></i></button>\n <input\n #inputSearch\n type=\"text\"\n [placeholder]=\"placeholder\"\n debounceKeyUp\n [debounceTime]=\"500\"\n (onEventChange)=\"setSearchValue($event)\"\n />\n <div class=\"wac-multiple-search__wrapper__left__select\" *ngIf=\"openSearchResults\">\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngFor=\"let res of searchResults; let i = index\"\n (click)=\"addResult(i); inputSearch.value = ''\"\n >\n <wac-image *ngIf=\"res.image\" [src]=\"res.image\"></wac-image>\n <wac-text>#{{ res.id }} {{ res.name }}</wac-text>\n </div>\n <div class=\"wac-table__body__loader\" *ngIf=\"isLoading && !searchResults\">\n <wac-loader [small]=\"true\"></wac-loader>\n </div>\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngIf=\"!searchResults?.length\"\n >\n <span>{{'wac.datatable.noresult' | translate}}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Results checked -->\n <div *ngFor=\"let option of options; let i = index\">\n <div class=\"wac-multiple-search-plus__wrapper\" *ngIf=\"option.table.length\">\n <wac-h3>{{ option.title }}</wac-h3>\n <div class=\"wac-multiple-search-plus__wrapper__block hover default\" *ngFor=\"let item of option.table; let indexItem = index\">\n <wac-image *ngIf=\"item.image\" [src]=\"item.image\"></wac-image>\n <wac-text>{{ item.name }}</wac-text>\n <span (click)=\"deleteResult(indexItem, i)\"><i class=\"fas fa-times\"></i></span>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: DebounceKeyupDirective, selector: "input[debounceKeyUp]" }, { kind: "directive", type: AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }, { kind: "directive", type: ZindexToggleDirective, selector: "[zIndexToggle]", inputs: ["zIndexToggle"], outputs: ["onEventChange"] }, { kind: "component", type: LoaderComponent, selector: "wac-loader", inputs: ["text", "small"] }, { kind: "component", type: ImageComponent, selector: "wac-image", inputs: ["src"] }, { kind: "component", type: H3Component, selector: "wac-h3", inputs: ["grey"] }, { kind: "component", type: TextComponent, selector: "wac-text", inputs: ["textClass"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
3949
3950
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: MultipleSearchPlusComponent, decorators: [{
3950
3951
  type: Component,
3951
- args: [{ selector: 'wac-multiple-search-plus', template: "<div class=\"wac-multiple-search-plus\" [zIndexToggle]=\"openSelect || openSearchResults\">\n <!-- Multiple select with search input -->\n <div class=\"wac-multiple-search\" [ngClass]=\"{ open: openSelect }\">\n <div class=\"wac-multiple-search__wrapper\">\n <div class=\"wac-multiple-search__wrapper__left\" *ngIf=\"options.length > 1\" [ngClass]=\"{ open: openSelect }\" wzAutoHide (clickOutside)=\"closeSelect()\">\n <span>{{ label }}</span>\n <i class=\"fal fa-chevron-down\"></i>\n <div class=\"wac-multiple-search__wrapper__left__background\" (click)=\"onToggleSelect()\"></div>\n <div class=\"wac-multiple-search__wrapper__left__select\" *ngIf=\"openSelect\">\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngFor=\"let option of options; let i = index\"\n [attr.data-index]=\"i\"\n (click)=\"resetAllVue(i); inputSearch.value = ''\"\n >\n <span>{{ option.label }}</span>\n <input type=\"hidden\" value=\"\" />\n </div>\n </div>\n </div>\n <div class=\"wac-multiple-search__wrapper__right\" wzAutoHide (clickOutside)=\"closeSearchResults()\">\n <button><i class=\"fal fa-search\"></i></button>\n <input\n #inputSearch\n type=\"text\"\n [placeholder]=\"placeholder\"\n debounceKeyUp\n [debounceTime]=\"500\"\n (onEventChange)=\"setSearchValue($event)\"\n />\n <div class=\"wac-multiple-search__wrapper__left__select\" *ngIf=\"openSearchResults\">\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngFor=\"let res of searchResults; let i = index\"\n (click)=\"addResult(i); inputSearch.value = ''\"\n >\n <wac-image *ngIf=\"res.image\" [src]=\"res.image\"></wac-image>\n <wac-text>#{{ res.id }} {{ res.name }}</wac-text>\n </div>\n <div class=\"wac-table__body__loader\" *ngIf=\"isLoading && !searchResults\">\n <wac-loader [small]=\"true\"></wac-loader>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Results checked -->\n <div *ngFor=\"let option of options; let i = index\">\n <div class=\"wac-multiple-search-plus__wrapper\" *ngIf=\"option.table.length\">\n <wac-h3>{{ option.title }}</wac-h3>\n <div class=\"wac-multiple-search-plus__wrapper__block hover default\" *ngFor=\"let item of option.table; let indexItem = index\">\n <wac-image *ngIf=\"item.image\" [src]=\"item.image\"></wac-image>\n <wac-text>{{ item.name }}</wac-text>\n <span (click)=\"deleteResult(indexItem, i)\"><i class=\"fas fa-times\"></i></span>\n </div>\n </div>\n </div>\n</div>\n" }]
3952
+ args: [{ selector: 'wac-multiple-search-plus', template: "<div class=\"wac-multiple-search-plus\" [zIndexToggle]=\"openSelect || openSearchResults\" [ngClass]=\"{ 'disabled': disabled }\">\n <!-- Multiple select with search input -->\n <div class=\"wac-multiple-search\" [ngClass]=\"{ open: openSelect }\">\n <div class=\"wac-multiple-search__wrapper\">\n <div class=\"wac-multiple-search__wrapper__left\" *ngIf=\"options.length > 1\" [ngClass]=\"{ open: openSelect }\" wzAutoHide (clickOutside)=\"closeSelect()\">\n <span>{{ label }}</span>\n <i class=\"fal fa-chevron-down\"></i>\n <div class=\"wac-multiple-search__wrapper__left__background\" (click)=\"onToggleSelect()\"></div>\n <div class=\"wac-multiple-search__wrapper__left__select\" *ngIf=\"openSelect\">\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngFor=\"let option of options; let i = index\"\n [attr.data-index]=\"i\"\n (click)=\"resetAllVue(i); inputSearch.value = ''\"\n >\n <span>{{ option.label }}</span>\n <input type=\"hidden\" value=\"\" />\n </div>\n </div>\n </div>\n <div class=\"wac-multiple-search__wrapper__right\" wzAutoHide (clickOutside)=\"closeSearchResults()\">\n <button><i class=\"fal fa-search\"></i></button>\n <input\n #inputSearch\n type=\"text\"\n [placeholder]=\"placeholder\"\n debounceKeyUp\n [debounceTime]=\"500\"\n (onEventChange)=\"setSearchValue($event)\"\n />\n <div class=\"wac-multiple-search__wrapper__left__select\" *ngIf=\"openSearchResults\">\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngFor=\"let res of searchResults; let i = index\"\n (click)=\"addResult(i); inputSearch.value = ''\"\n >\n <wac-image *ngIf=\"res.image\" [src]=\"res.image\"></wac-image>\n <wac-text>#{{ res.id }} {{ res.name }}</wac-text>\n </div>\n <div class=\"wac-table__body__loader\" *ngIf=\"isLoading && !searchResults\">\n <wac-loader [small]=\"true\"></wac-loader>\n </div>\n <div\n class=\"wac-multiple-search__wrapper__left__select__item\"\n *ngIf=\"!searchResults?.length\"\n >\n <span>{{'wac.datatable.noresult' | translate}}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Results checked -->\n <div *ngFor=\"let option of options; let i = index\">\n <div class=\"wac-multiple-search-plus__wrapper\" *ngIf=\"option.table.length\">\n <wac-h3>{{ option.title }}</wac-h3>\n <div class=\"wac-multiple-search-plus__wrapper__block hover default\" *ngFor=\"let item of option.table; let indexItem = index\">\n <wac-image *ngIf=\"item.image\" [src]=\"item.image\"></wac-image>\n <wac-text>{{ item.name }}</wac-text>\n <span (click)=\"deleteResult(indexItem, i)\"><i class=\"fas fa-times\"></i></span>\n </div>\n </div>\n </div>\n</div>\n" }]
3952
3953
  }], ctorParameters: function () { return []; }, propDecorators: { options: [{
3953
3954
  type: Input
3954
3955
  }], searchResults: [{
3955
3956
  type: Input
3957
+ }], disabled: [{
3958
+ type: Input
3956
3959
  }], searchValue: [{
3957
3960
  type: Output
3958
3961
  }], optionsChange: [{