ng2-iq-select2-exe 16.2.7 → 16.2.8

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.
@@ -22,6 +22,8 @@ export class IqSelect2Component {
22
22
  this.clientMode = false;
23
23
  this.badgeColor = 'info';
24
24
  this.wrapSelectedText = 'nowrap';
25
+ this.preventDeselect = false;
26
+ this.consecutiveMultipleSelection = true;
25
27
  this.debounceDelay = 250;
26
28
  this.debounceLength = 2;
27
29
  this.iconCaret = '▼';
@@ -41,6 +43,12 @@ export class IqSelect2Component {
41
43
  }
42
44
  ngAfterViewInit() {
43
45
  this.subscribeToChangesAndLoadDataFromObservable();
46
+ document.addEventListener("mousedown", event => {
47
+ if (!this.container.nativeElement.contains(event.target)) {
48
+ this.resultsVisible = false;
49
+ this.searchFocused = false;
50
+ }
51
+ });
44
52
  }
45
53
  writeValue(selectedValues) {
46
54
  if (selectedValues) {
@@ -166,10 +174,7 @@ export class IqSelect2Component {
166
174
  }
167
175
  this.onChangeCallback(this.buildValue());
168
176
  this.term.patchValue('', { emitEvent: false });
169
- if (this.multiple) {
170
- setTimeout(() => this.focusAndShowResults(), 1);
171
- }
172
- else {
177
+ if (!this.multiple || !this.consecutiveMultipleSelection) {
173
178
  this.resultsVisible = false;
174
179
  this.placeholderSelected = item.text;
175
180
  this.termInput.nativeElement.blur();
@@ -211,8 +216,6 @@ export class IqSelect2Component {
211
216
  }
212
217
  onBlur() {
213
218
  this.term.patchValue('', { emitEvent: false });
214
- this.searchFocused = false;
215
- this.resultsVisible = false;
216
219
  this.onTouchedCallback();
217
220
  }
218
221
  focus() {
@@ -280,11 +283,11 @@ export class IqSelect2Component {
280
283
  return this.placeholder;
281
284
  }
282
285
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: IqSelect2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
283
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: IqSelect2Component, selector: "iq-select2", inputs: { dataSourceProvider: "dataSourceProvider", selectedProvider: "selectedProvider", iqSelect2ItemAdapter: "iqSelect2ItemAdapter", referenceMode: "referenceMode", multiple: "multiple", inputContainerClass: "inputContainerClass", placeholder: "placeholder", disabled: "disabled", maxResults: "maxResults", clientMode: "clientMode", badgeColor: "badgeColor", wrapSelectedText: "wrapSelectedText", debounceDelay: "debounceDelay", debounceLength: "debounceLength", iconCaret: "iconCaret", iconDelete: "iconDelete", messageMoreResults: "messageMoreResults", messageNoResults: "messageNoResults" }, outputs: { onSelect: "onSelect", onRemove: "onRemove" }, providers: [{
286
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: IqSelect2Component, selector: "iq-select2", inputs: { dataSourceProvider: "dataSourceProvider", selectedProvider: "selectedProvider", iqSelect2ItemAdapter: "iqSelect2ItemAdapter", referenceMode: "referenceMode", multiple: "multiple", inputContainerClass: "inputContainerClass", placeholder: "placeholder", disabled: "disabled", maxResults: "maxResults", clientMode: "clientMode", badgeColor: "badgeColor", wrapSelectedText: "wrapSelectedText", preventDeselect: "preventDeselect", consecutiveMultipleSelection: "consecutiveMultipleSelection", debounceDelay: "debounceDelay", debounceLength: "debounceLength", iconCaret: "iconCaret", iconDelete: "iconDelete", messageMoreResults: "messageMoreResults", messageNoResults: "messageNoResults" }, outputs: { onSelect: "onSelect", onRemove: "onRemove" }, providers: [{
284
287
  provide: NG_VALUE_ACCESSOR,
285
288
  useExisting: forwardRef(() => IqSelect2Component),
286
289
  multi: true
287
- }], viewQueries: [{ propertyName: "termInput", first: true, predicate: ["termInput"], descendants: true }, { propertyName: "results", first: true, predicate: ["results"], descendants: true }], ngImport: i0, template: "<div class=\"select2-container\">\r\n <div\r\n class=\"select2-inner-container\" [ngClass]=\"inputContainerClass ? inputContainerClass : ''\"\r\n [class.simple-selection]=\"!multiple\" [class.multiple-selection]=\"multiple\" [class.readonly]=\"disabled\"\r\n (click)=\"focusAndShowResults()\"\r\n >\r\n <ul class=\"select2-selection-container\">\r\n <ng-container *ngIf=\"!multiple; then input\"></ng-container>\r\n\r\n <li *ngFor=\"let item of selectedItems\" class=\"select2-selected\">\r\n <span class=\"select2-selected-item\" [ngStyle]=\"{whiteSpace: wrapSelectedText}\" [title]=\"item.text\">{{item.text}}</span>\r\n <button *ngIf=\"!disabled\" class=\"select2-icon\" aria-label=\"Close\" (click)=\"removeItem(item)\">\r\n <span class=\"select2-selection-remove\" [innerHTML]=\"iconDelete\"></span>\r\n </button>\r\n </li>\r\n\r\n\r\n <ng-container *ngIf=\"multiple; then input\"></ng-container>\r\n\r\n <ng-template #input>\r\n <li *ngIf=\"!disabled\" class=\"select2-input-container\">\r\n <input #termInput [formControl]=\"term\" type=\"text\" [placeholder]=\"getPlaceholder()\" autocomplete=\"off\"\r\n (focus)=\"onFocus()\" (blur)=\"onBlur()\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\"\r\n />\r\n </li>\r\n </ng-template>\r\n </ul>\r\n\r\n <div *ngIf=\"(multiple || (!multiple && selectedItems.length === 0))\" class=\"select2-icon\">\r\n <span class=\"select2-selection-caret\" [innerHTML]=\"iconCaret\"></span>\r\n </div>\r\n </div>\r\n\r\n <iq-select2-results *ngIf=\"!disabled\" #results [resultsVisible]=\"resultsVisible\"\r\n [items]=\"listData\" [selectedItems]=\"selectedItems\" [maxResults]=\"maxResults\"\r\n [messageMoreResults]=\"messageMoreResults\" [messageNoResults]=\"messageNoResults\"\r\n [templateRef]=\"templateRef\" (onItemSelected)=\"onItemSelected($event);\"\r\n >\r\n </iq-select2-results>\r\n</div>\r\n", styles: [".select2-container{position:relative;width:100%;--select2-color-background: hsl(0, 0%, 96%);--select2-color-border: hsl(0, 0%, 90%);--select2-color-disabled: hsl(220, 20%, 90%);--select2-color-focused-border: hsl(220, 100%, 80%);--select2-color-focused-shadow: hsla(220, 80%, 40%);--select2-color-scrollbar-track: hsl(0, 0%, 90%);--select2-color-scrollbar-thumb: hsl(220, 25%, 25%);--select2-color-item-text: hsl(0, 0%, 96%);--select2-color-item-background: hsl(200, 90%, 50%);--select2-color-list-active: hsl(200, 70%, 70%);--select2-color-list-selected: hsl(200, 70%, 50%)}.select2-inner-container{display:flex;flex-flow:row nowrap;align-items:baseline;justify-content:space-between;gap:.2em}.select2-inner-container:focus-within{color:invert(var(--select2-color-item-text));background-color:var(--select2-color-background);border-color:var(--select2-color-focused-border);outline:0;box-shadow:0 0 0 .1rem var(--select2-color-focused-shadow)}.simple-selection .select2-selection-container{display:grid;grid-auto-columns:100%;padding-right:.1em}.simple-selection .select2-selection-container>*{grid-area:1 / 1}.simple-selection:focus-within .select2-selected-item{opacity:0}.simple-selection .select2-selected{width:100%;padding:0}.multiple-selection .select2-selected{color:var(--select2-color-item-text);background-color:var(--select2-color-item-background);padding:.1em .4em;border-radius:.25em;max-width:100%}.select2-selection-container{width:100%;display:flex;flex-flow:row wrap;align-items:baseline;justify-content:flex-start;gap:.2em;overflow:hidden;list-style-type:none;padding:0;margin:0}.select2-selected{display:inline-flex;flex-flow:row nowrap;align-items:baseline;justify-content:space-between;gap:.2em;padding:.25em}.select2-input-container{flex-grow:1}.select2-input-container input{background-color:transparent;border:none;outline:none;padding:0;width:100%}.select2-icon{color:inherit;font-size:1em;width:1em;height:1em;z-index:5;display:grid;place-content:center}.select2-icon:is(button){background-color:transparent;border:0;outline:0}.select2-icon:is(button):focus{border:1px solid var(--select2-color-focused-border);border-radius:50%;box-shadow:0 0 0 .1rem var(--select2-color-focused-shadow)}:not(.readonly)>.select2-icon{cursor:pointer}.select2-selected-item{width:100%;overflow:hidden;text-overflow:ellipsis}.readonly{background-color:var(--select2-color-disabled);cursor:not-allowed}\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: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.IqSelect2ResultsComponent, selector: "iq-select2-results", inputs: ["items", "maxResults", "messageMoreResults", "messageNoResults", "resultsVisible", "selectedItems", "templateRef"], outputs: ["onItemSelected"] }] }); }
290
+ }], viewQueries: [{ propertyName: "container", first: true, predicate: ["selectContainer"], descendants: true }, { propertyName: "termInput", first: true, predicate: ["termInput"], descendants: true }, { propertyName: "results", first: true, predicate: ["results"], descendants: true }], ngImport: i0, template: "<div #selectContainer class=\"select2-container\">\r\n <div\r\n class=\"select2-inner-container\" [ngClass]=\"inputContainerClass ? inputContainerClass : ''\"\r\n [class.simple-selection]=\"!multiple\" [class.multiple-selection]=\"multiple\" [class.readonly]=\"disabled\"\r\n (click)=\"focusAndShowResults()\"\r\n >\r\n <ul class=\"select2-selection-container\">\r\n <ng-container *ngIf=\"!multiple; then input\"></ng-container>\r\n\r\n <li *ngFor=\"let item of selectedItems\" class=\"select2-selected\">\r\n <span class=\"select2-selected-item\" [ngStyle]=\"{whiteSpace: wrapSelectedText}\" [title]=\"item.text\">{{item.text}}</span>\r\n <button *ngIf=\"!preventDeselect && !disabled\" class=\"select2-icon select2-remove-button\" aria-label=\"Close\" (click)=\"removeItem(item)\">\r\n <span class=\"select2-selection-remove\" [innerHTML]=\"iconDelete\"></span>\r\n </button>\r\n </li>\r\n\r\n <ng-container *ngIf=\"multiple; then input\"></ng-container>\r\n\r\n <ng-template #input>\r\n <li *ngIf=\"!disabled\" class=\"select2-input-container\">\r\n <input #termInput [formControl]=\"term\" type=\"text\" [placeholder]=\"getPlaceholder()\" autocomplete=\"off\"\r\n (focus)=\"onFocus()\" (blur)=\"onBlur()\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\"\r\n />\r\n </li>\r\n </ng-template>\r\n </ul>\r\n\r\n <div *ngIf=\"(multiple || (!multiple && selectedItems.length === 0))\" class=\"select2-icon\">\r\n <span class=\"select2-selection-caret\" [innerHTML]=\"iconCaret\"></span>\r\n </div>\r\n </div>\r\n\r\n <iq-select2-results *ngIf=\"!disabled\" #results [resultsVisible]=\"resultsVisible\"\r\n [items]=\"listData\" [selectedItems]=\"selectedItems\" [maxResults]=\"maxResults\"\r\n [messageMoreResults]=\"messageMoreResults\" [messageNoResults]=\"messageNoResults\"\r\n [templateRef]=\"templateRef\" (onItemSelected)=\"onItemSelected($event);\"\r\n >\r\n </iq-select2-results>\r\n</div>\r\n", styles: [".select2-container{position:relative;width:100%;--select2-color-background: hsl(0, 0%, 96%);--select2-color-border: hsl(0, 0%, 90%);--select2-color-disabled: hsl(220, 20%, 90%);--select2-color-focused-border: hsl(220, 100%, 80%);--select2-color-focused-shadow: hsla(220, 80%, 40%);--select2-color-scrollbar-track: hsl(0, 0%, 90%);--select2-color-scrollbar-thumb: hsl(220, 25%, 25%);--select2-color-item-text: hsl(0, 0%, 96%);--select2-color-item-background: hsl(200, 90%, 50%);--select2-color-list-active: hsl(200, 70%, 70%);--select2-color-list-selected: hsl(200, 70%, 50%)}.select2-inner-container{display:flex;flex-flow:row nowrap;align-items:baseline;justify-content:space-between;gap:.2em}.select2-inner-container:focus-within{color:invert(var(--select2-color-item-text));background-color:var(--select2-color-background);border-color:var(--select2-color-focused-border);outline:0;box-shadow:0 0 0 .1rem var(--select2-color-focused-shadow)}.simple-selection .select2-selection-container{display:grid;grid-auto-columns:100%;padding-right:.1em}.simple-selection .select2-selection-container>*{grid-area:1 / 1}.simple-selection:focus-within .select2-selected-item{opacity:0}.simple-selection .select2-selected{width:100%;padding:0}.multiple-selection .select2-selected{color:var(--select2-color-item-text);background-color:var(--select2-color-item-background);padding:.1em .4em;border-radius:.25em;max-width:100%}.select2-selection-container{width:100%;display:flex;flex-flow:row wrap;align-items:baseline;justify-content:flex-start;gap:.2em;overflow:hidden;list-style-type:none;padding:0;margin:0}.select2-selected{display:inline-flex;flex-flow:row nowrap;align-items:baseline;justify-content:space-between;gap:.2em;padding:.25em}.select2-input-container{flex-grow:1}.select2-input-container input{background-color:transparent;border:none;outline:none;padding:0;width:100%}.select2-icon{color:inherit;font-size:1em;width:1em;height:1em;z-index:10;display:grid;place-content:center}.select2-icon:is(button){background-color:transparent;border:0;outline:0}.select2-icon:is(button):focus{border:1px solid var(--select2-color-focused-border);border-radius:50%;box-shadow:0 0 0 .1rem var(--select2-color-focused-shadow)}:not(.readonly)>.select2-icon{cursor:pointer}.select2-selected-item{width:100%;overflow:hidden;text-overflow:ellipsis}.readonly{background-color:var(--select2-color-disabled);cursor:not-allowed}\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: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.IqSelect2ResultsComponent, selector: "iq-select2-results", inputs: ["items", "maxResults", "messageMoreResults", "messageNoResults", "resultsVisible", "selectedItems", "templateRef"], outputs: ["onItemSelected"] }] }); }
288
291
  }
289
292
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: IqSelect2Component, decorators: [{
290
293
  type: Component,
@@ -292,7 +295,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImpor
292
295
  provide: NG_VALUE_ACCESSOR,
293
296
  useExisting: forwardRef(() => IqSelect2Component),
294
297
  multi: true
295
- }], template: "<div class=\"select2-container\">\r\n <div\r\n class=\"select2-inner-container\" [ngClass]=\"inputContainerClass ? inputContainerClass : ''\"\r\n [class.simple-selection]=\"!multiple\" [class.multiple-selection]=\"multiple\" [class.readonly]=\"disabled\"\r\n (click)=\"focusAndShowResults()\"\r\n >\r\n <ul class=\"select2-selection-container\">\r\n <ng-container *ngIf=\"!multiple; then input\"></ng-container>\r\n\r\n <li *ngFor=\"let item of selectedItems\" class=\"select2-selected\">\r\n <span class=\"select2-selected-item\" [ngStyle]=\"{whiteSpace: wrapSelectedText}\" [title]=\"item.text\">{{item.text}}</span>\r\n <button *ngIf=\"!disabled\" class=\"select2-icon\" aria-label=\"Close\" (click)=\"removeItem(item)\">\r\n <span class=\"select2-selection-remove\" [innerHTML]=\"iconDelete\"></span>\r\n </button>\r\n </li>\r\n\r\n\r\n <ng-container *ngIf=\"multiple; then input\"></ng-container>\r\n\r\n <ng-template #input>\r\n <li *ngIf=\"!disabled\" class=\"select2-input-container\">\r\n <input #termInput [formControl]=\"term\" type=\"text\" [placeholder]=\"getPlaceholder()\" autocomplete=\"off\"\r\n (focus)=\"onFocus()\" (blur)=\"onBlur()\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\"\r\n />\r\n </li>\r\n </ng-template>\r\n </ul>\r\n\r\n <div *ngIf=\"(multiple || (!multiple && selectedItems.length === 0))\" class=\"select2-icon\">\r\n <span class=\"select2-selection-caret\" [innerHTML]=\"iconCaret\"></span>\r\n </div>\r\n </div>\r\n\r\n <iq-select2-results *ngIf=\"!disabled\" #results [resultsVisible]=\"resultsVisible\"\r\n [items]=\"listData\" [selectedItems]=\"selectedItems\" [maxResults]=\"maxResults\"\r\n [messageMoreResults]=\"messageMoreResults\" [messageNoResults]=\"messageNoResults\"\r\n [templateRef]=\"templateRef\" (onItemSelected)=\"onItemSelected($event);\"\r\n >\r\n </iq-select2-results>\r\n</div>\r\n", styles: [".select2-container{position:relative;width:100%;--select2-color-background: hsl(0, 0%, 96%);--select2-color-border: hsl(0, 0%, 90%);--select2-color-disabled: hsl(220, 20%, 90%);--select2-color-focused-border: hsl(220, 100%, 80%);--select2-color-focused-shadow: hsla(220, 80%, 40%);--select2-color-scrollbar-track: hsl(0, 0%, 90%);--select2-color-scrollbar-thumb: hsl(220, 25%, 25%);--select2-color-item-text: hsl(0, 0%, 96%);--select2-color-item-background: hsl(200, 90%, 50%);--select2-color-list-active: hsl(200, 70%, 70%);--select2-color-list-selected: hsl(200, 70%, 50%)}.select2-inner-container{display:flex;flex-flow:row nowrap;align-items:baseline;justify-content:space-between;gap:.2em}.select2-inner-container:focus-within{color:invert(var(--select2-color-item-text));background-color:var(--select2-color-background);border-color:var(--select2-color-focused-border);outline:0;box-shadow:0 0 0 .1rem var(--select2-color-focused-shadow)}.simple-selection .select2-selection-container{display:grid;grid-auto-columns:100%;padding-right:.1em}.simple-selection .select2-selection-container>*{grid-area:1 / 1}.simple-selection:focus-within .select2-selected-item{opacity:0}.simple-selection .select2-selected{width:100%;padding:0}.multiple-selection .select2-selected{color:var(--select2-color-item-text);background-color:var(--select2-color-item-background);padding:.1em .4em;border-radius:.25em;max-width:100%}.select2-selection-container{width:100%;display:flex;flex-flow:row wrap;align-items:baseline;justify-content:flex-start;gap:.2em;overflow:hidden;list-style-type:none;padding:0;margin:0}.select2-selected{display:inline-flex;flex-flow:row nowrap;align-items:baseline;justify-content:space-between;gap:.2em;padding:.25em}.select2-input-container{flex-grow:1}.select2-input-container input{background-color:transparent;border:none;outline:none;padding:0;width:100%}.select2-icon{color:inherit;font-size:1em;width:1em;height:1em;z-index:5;display:grid;place-content:center}.select2-icon:is(button){background-color:transparent;border:0;outline:0}.select2-icon:is(button):focus{border:1px solid var(--select2-color-focused-border);border-radius:50%;box-shadow:0 0 0 .1rem var(--select2-color-focused-shadow)}:not(.readonly)>.select2-icon{cursor:pointer}.select2-selected-item{width:100%;overflow:hidden;text-overflow:ellipsis}.readonly{background-color:var(--select2-color-disabled);cursor:not-allowed}\n"] }]
298
+ }], template: "<div #selectContainer class=\"select2-container\">\r\n <div\r\n class=\"select2-inner-container\" [ngClass]=\"inputContainerClass ? inputContainerClass : ''\"\r\n [class.simple-selection]=\"!multiple\" [class.multiple-selection]=\"multiple\" [class.readonly]=\"disabled\"\r\n (click)=\"focusAndShowResults()\"\r\n >\r\n <ul class=\"select2-selection-container\">\r\n <ng-container *ngIf=\"!multiple; then input\"></ng-container>\r\n\r\n <li *ngFor=\"let item of selectedItems\" class=\"select2-selected\">\r\n <span class=\"select2-selected-item\" [ngStyle]=\"{whiteSpace: wrapSelectedText}\" [title]=\"item.text\">{{item.text}}</span>\r\n <button *ngIf=\"!preventDeselect && !disabled\" class=\"select2-icon select2-remove-button\" aria-label=\"Close\" (click)=\"removeItem(item)\">\r\n <span class=\"select2-selection-remove\" [innerHTML]=\"iconDelete\"></span>\r\n </button>\r\n </li>\r\n\r\n <ng-container *ngIf=\"multiple; then input\"></ng-container>\r\n\r\n <ng-template #input>\r\n <li *ngIf=\"!disabled\" class=\"select2-input-container\">\r\n <input #termInput [formControl]=\"term\" type=\"text\" [placeholder]=\"getPlaceholder()\" autocomplete=\"off\"\r\n (focus)=\"onFocus()\" (blur)=\"onBlur()\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\"\r\n />\r\n </li>\r\n </ng-template>\r\n </ul>\r\n\r\n <div *ngIf=\"(multiple || (!multiple && selectedItems.length === 0))\" class=\"select2-icon\">\r\n <span class=\"select2-selection-caret\" [innerHTML]=\"iconCaret\"></span>\r\n </div>\r\n </div>\r\n\r\n <iq-select2-results *ngIf=\"!disabled\" #results [resultsVisible]=\"resultsVisible\"\r\n [items]=\"listData\" [selectedItems]=\"selectedItems\" [maxResults]=\"maxResults\"\r\n [messageMoreResults]=\"messageMoreResults\" [messageNoResults]=\"messageNoResults\"\r\n [templateRef]=\"templateRef\" (onItemSelected)=\"onItemSelected($event);\"\r\n >\r\n </iq-select2-results>\r\n</div>\r\n", styles: [".select2-container{position:relative;width:100%;--select2-color-background: hsl(0, 0%, 96%);--select2-color-border: hsl(0, 0%, 90%);--select2-color-disabled: hsl(220, 20%, 90%);--select2-color-focused-border: hsl(220, 100%, 80%);--select2-color-focused-shadow: hsla(220, 80%, 40%);--select2-color-scrollbar-track: hsl(0, 0%, 90%);--select2-color-scrollbar-thumb: hsl(220, 25%, 25%);--select2-color-item-text: hsl(0, 0%, 96%);--select2-color-item-background: hsl(200, 90%, 50%);--select2-color-list-active: hsl(200, 70%, 70%);--select2-color-list-selected: hsl(200, 70%, 50%)}.select2-inner-container{display:flex;flex-flow:row nowrap;align-items:baseline;justify-content:space-between;gap:.2em}.select2-inner-container:focus-within{color:invert(var(--select2-color-item-text));background-color:var(--select2-color-background);border-color:var(--select2-color-focused-border);outline:0;box-shadow:0 0 0 .1rem var(--select2-color-focused-shadow)}.simple-selection .select2-selection-container{display:grid;grid-auto-columns:100%;padding-right:.1em}.simple-selection .select2-selection-container>*{grid-area:1 / 1}.simple-selection:focus-within .select2-selected-item{opacity:0}.simple-selection .select2-selected{width:100%;padding:0}.multiple-selection .select2-selected{color:var(--select2-color-item-text);background-color:var(--select2-color-item-background);padding:.1em .4em;border-radius:.25em;max-width:100%}.select2-selection-container{width:100%;display:flex;flex-flow:row wrap;align-items:baseline;justify-content:flex-start;gap:.2em;overflow:hidden;list-style-type:none;padding:0;margin:0}.select2-selected{display:inline-flex;flex-flow:row nowrap;align-items:baseline;justify-content:space-between;gap:.2em;padding:.25em}.select2-input-container{flex-grow:1}.select2-input-container input{background-color:transparent;border:none;outline:none;padding:0;width:100%}.select2-icon{color:inherit;font-size:1em;width:1em;height:1em;z-index:10;display:grid;place-content:center}.select2-icon:is(button){background-color:transparent;border:0;outline:0}.select2-icon:is(button):focus{border:1px solid var(--select2-color-focused-border);border-radius:50%;box-shadow:0 0 0 .1rem var(--select2-color-focused-shadow)}:not(.readonly)>.select2-icon{cursor:pointer}.select2-selected-item{width:100%;overflow:hidden;text-overflow:ellipsis}.readonly{background-color:var(--select2-color-disabled);cursor:not-allowed}\n"] }]
296
299
  }], ctorParameters: function () { return []; }, propDecorators: { dataSourceProvider: [{
297
300
  type: Input
298
301
  }], selectedProvider: [{
@@ -317,6 +320,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImpor
317
320
  type: Input
318
321
  }], wrapSelectedText: [{
319
322
  type: Input
323
+ }], preventDeselect: [{
324
+ type: Input
325
+ }], consecutiveMultipleSelection: [{
326
+ type: Input
320
327
  }], debounceDelay: [{
321
328
  type: Input
322
329
  }], debounceLength: [{
@@ -333,6 +340,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImpor
333
340
  type: Output
334
341
  }], onRemove: [{
335
342
  type: Output
343
+ }], container: [{
344
+ type: ViewChild,
345
+ args: ['selectContainer']
336
346
  }], termInput: [{
337
347
  type: ViewChild,
338
348
  args: ['termInput']
@@ -340,4 +350,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImpor
340
350
  type: ViewChild,
341
351
  args: ['results']
342
352
  }] } });
343
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXEtc2VsZWN0Mi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZzItaXEtc2VsZWN0Mi9zcmMvbGliL2lxLXNlbGVjdDIvaXEtc2VsZWN0Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZzItaXEtc2VsZWN0Mi9zcmMvbGliL2lxLXNlbGVjdDIvaXEtc2VsZWN0Mi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFlLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVwSSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUM3RixPQUFPLEVBQXVCLGlCQUFpQixFQUFFLGtCQUFrQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0YsT0FBTyxFQUFhLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUMsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RyxPQUFPLFFBQVEsTUFBTSxZQUFZLENBQUM7Ozs7O0FBRWxDLE1BQU0sbUJBQW1CLEdBQUcsV0FBVyxDQUFDO0FBQ3hDLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDO0FBQ3BDLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQztBQUMvQixNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUM7QUFDakMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBWWpDLE1BQU0sT0FBTyxrQkFBa0I7SUF5QzdCO1FBbkNTLGtCQUFhLEdBQW9CLElBQUksQ0FBQztRQUN0QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpC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RGhCYSxrQkFBa0I7a0JBVjlCLFNBQVM7K0JBQ0UsWUFBWSxhQUdYLENBQUM7NEJBQ1YsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7NEJBQ2pELEtBQUssRUFBRSxJQUFJO3lCQUNaLENBQUM7MEVBSU8sa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBRWlCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDQSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtJcVNlbGVjdDJJdGVtfSBmcm9tICcuL2lxLXNlbGVjdDItaXRlbSc7XHJcbmltcG9ydCB7SXFTZWxlY3QyUmVzdWx0c0NvbXBvbmVudH0gZnJvbSAnLi4vaXEtc2VsZWN0Mi1yZXN1bHRzL2lxLXNlbGVjdDItcmVzdWx0cy5jb21wb25lbnQnO1xyXG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgVW50eXBlZEZvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge2RlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBtZXJnZU1hcCwgc3dpdGNoTWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IE1lc3NhZ2VzIGZyb20gXCIuL21lc3NhZ2VzXCI7XHJcblxyXG5jb25zdCBLRVlfQ09ERV9ET1dOX0FSUk9XID0gJ0Fycm93RG93bic7XHJcbmNvbnN0IEtFWV9DT0RFX1VQX0FSUk9XID0gJ0Fycm93VXAnO1xyXG5jb25zdCBLRVlfQ09ERV9FTlRFUiA9ICdFbnRlcic7XHJcbmNvbnN0IEtFWV9DT0RFX0VTQ0FQRSA9ICdFc2NhcGUnO1xyXG5jb25zdCBLRVlfQ09ERV9ERUxFVEUgPSAnRGVsZXRlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaXEtc2VsZWN0MicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lxLXNlbGVjdDIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lxLXNlbGVjdDIuY29tcG9uZW50LmNzcyddLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSXFTZWxlY3QyQ29tcG9uZW50KSxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIElxU2VsZWN0MkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZVByb3ZpZGVyOiAodGVybTogc3RyaW5nLCBzZWxlY3RlZD86IGFueVtdKSA9PiBPYnNlcnZhYmxlPGFueVtdPjtcclxuICBASW5wdXQoKSBzZWxlY3RlZFByb3ZpZGVyOiAoaWRzOiBzdHJpbmdbXSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgQElucHV0KCkgaXFTZWxlY3QySXRlbUFkYXB0ZXI6IChlbnRpdHk6IGFueSkgPT4gSXFTZWxlY3QySXRlbTtcclxuXHJcbiAgQElucHV0KCkgcmVmZXJlbmNlTW9kZTogJ2lkJyB8ICdlbnRpdHknID0gJ2lkJztcclxuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlucHV0Q29udGFpbmVyQ2xhc3M6IHN0cmluZztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbWF4UmVzdWx0czogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGNsaWVudE1vZGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBiYWRnZUNvbG9yID0gJ2luZm8nO1xyXG4gIEBJbnB1dCgpIHdyYXBTZWxlY3RlZFRleHQgPSAnbm93cmFwJ1xyXG5cclxuICBASW5wdXQoKSBkZWJvdW5jZURlbGF5ID0gMjUwXHJcbiAgQElucHV0KCkgZGVib3VuY2VMZW5ndGggPSAyXHJcbiAgQElucHV0KCkgaWNvbkNhcmV0ID0gJyYjOTY2MDsnXHJcbiAgQElucHV0KCkgaWNvbkRlbGV0ZSA9ICcmIzIxNTsnXHJcbiAgQElucHV0KCkgbWVzc2FnZU1vcmVSZXN1bHRzOiBzdHJpbmcgPSBNZXNzYWdlcy5NT1JFX1JFU1VMVFM7XHJcbiAgQElucHV0KCkgbWVzc2FnZU5vUmVzdWx0czogc3RyaW5nID0gTWVzc2FnZXMuTk9fUkVTVUxUUztcclxuXHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0OiBFdmVudEVtaXR0ZXI8SXFTZWxlY3QySXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyPElxU2VsZWN0Mkl0ZW0+KCk7XHJcbiAgQE91dHB1dCgpIG9uUmVtb3ZlOiBFdmVudEVtaXR0ZXI8SXFTZWxlY3QySXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyPElxU2VsZWN0Mkl0ZW0+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3Rlcm1JbnB1dCcpIHRlcm1JbnB1dDogRWxlbWVudFJlZlxyXG4gIEBWaWV3Q2hpbGQoJ3Jlc3VsdHMnKSByZXN1bHRzOiBJcVNlbGVjdDJSZXN1bHRzQ29tcG9uZW50O1xyXG5cclxuICB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcclxuICB0ZXJtID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xyXG4gIHJlc3VsdHNWaXNpYmxlID0gZmFsc2U7XHJcbiAgc2VhcmNoRm9jdXNlZCA9IGZhbHNlO1xyXG4gIGxpc3REYXRhOiBJcVNlbGVjdDJJdGVtW10gPSBbXVxyXG4gIGZ1bGxEYXRhTGlzdDogSXFTZWxlY3QySXRlbVtdO1xyXG4gIHNlbGVjdGVkSXRlbXM6IElxU2VsZWN0Mkl0ZW1bXSA9IFtdO1xyXG4gIHByaXZhdGUgcGxhY2Vob2xkZXJTZWxlY3RlZCA9ICcnO1xyXG5cclxuICBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9ICgpID0+IGZhbHNlXHJcbiAgb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9ICgpID0+IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG9DaGFuZ2VzQW5kTG9hZERhdGFGcm9tT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShzZWxlY3RlZFZhbHVlczogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoc2VsZWN0ZWRWYWx1ZXMpIHtcclxuICAgICAgaWYgKHRoaXMucmVmZXJlbmNlTW9kZSA9PT0gJ2lkJykge1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVJdGVtc0Zyb21JZHMoc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVJdGVtc0Zyb21FbnRpdGllcyhzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXJTZWxlY3RlZCA9ICcnO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0NoYW5nZXNBbmRMb2FkRGF0YUZyb21PYnNlcnZhYmxlKCkge1xyXG4gICAgdGhpcy5zdWJzY3JpYmVUb1Jlc3VsdHModGhpcy50ZXJtLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlRGVsYXkpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvUmVzdWx0cyhvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPHN0cmluZz4pOiB2b2lkIHtcclxuICAgIG9ic2VydmFibGUucGlwZShcclxuICAgICAgdGFwKCgpID0+IHRoaXMucmVzdWx0c1Zpc2libGUgPSBmYWxzZSksXHJcbiAgICAgIGZpbHRlcigodGVybSkgPT4gdGVybS5sZW5ndGggPj0gdGhpcy5kZWJvdW5jZUxlbmd0aCksXHJcbiAgICAgIHN3aXRjaE1hcCh0ZXJtID0+IHRoaXMubG9hZERhdGFGcm9tT2JzZXJ2YWJsZSh0ZXJtKSksXHJcbiAgICAgIG1hcChpdGVtcyA9PiBpdGVtcy5maWx0ZXIoaXRlbSA9PiAhKHRoaXMubXVsdGlwbGUgJiYgdGhpcy5hbHJlYWR5U2VsZWN0ZWQoaXRlbSkpKSksXHJcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnJlc3VsdHNWaXNpYmxlID0gdGhpcy5zZWFyY2hGb2N1c2VkKVxyXG4gICAgKS5zdWJzY3JpYmUoKGl0ZW1zKSA9PiB0aGlzLmxpc3REYXRhID0gaXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkRGF0YUZyb21PYnNlcnZhYmxlKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8SXFTZWxlY3QySXRlbVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5jbGllbnRNb2RlID8gdGhpcy5mZXRjaEFuZEZpbHRlckxvY2FsRGF0YSh0ZXJtKSA6IHRoaXMuZmV0Y2hEYXRhKHRlcm0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaEFuZEZpbHRlckxvY2FsRGF0YSh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElxU2VsZWN0Mkl0ZW1bXT4ge1xyXG4gICAgaWYgKCF0aGlzLmZ1bGxEYXRhTGlzdCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mZXRjaERhdGEoJycpLnBpcGUoXHJcbiAgICAgICAgbWVyZ2VNYXAoKGl0ZW1zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZ1bGxEYXRhTGlzdCA9IGl0ZW1zO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyTG9jYWxEYXRhKHRlcm0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJMb2NhbERhdGEodGVybSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbHRlckxvY2FsRGF0YSh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElxU2VsZWN0Mkl0ZW1bXT4ge1xyXG4gICAgcmV0dXJuIG9mKHRoaXMuZnVsbERhdGFMaXN0LmZpbHRlcihpdGVtID0+IGl0ZW0udGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0udG9Mb3dlckNhc2UoKSkpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hEYXRhKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8SXFTZWxlY3QySXRlbVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlUHJvdmlkZXIodGVybSwgdGhpcy5idWlsZFZhbHVlKCkpLnBpcGUobWFwKChpdGVtczogYW55W10pID0+IGl0ZW1zLm1hcCgoaXRlbSkgPT4gdGhpcy5pcVNlbGVjdDJJdGVtQWRhcHRlcihpdGVtKSkpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcG9wdWxhdGVJdGVtc0Zyb21FbnRpdGllcyhzZWxlY3RlZFZhbHVlczogYW55KSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLmhhbmRsZU11bHRpcGxlV2l0aEVudGl0aWVzKHNlbGVjdGVkVmFsdWVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGlxU2VsZWN0Mkl0ZW0gPSB0aGlzLmlxU2VsZWN0Mkl0ZW1BZGFwdGVyKHNlbGVjdGVkVmFsdWVzKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW2lxU2VsZWN0Mkl0ZW1dO1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWQgPSBpcVNlbGVjdDJJdGVtLnRleHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZU11bHRpcGxlV2l0aEVudGl0aWVzKHNlbGVjdGVkVmFsdWVzOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG5cclxuICAgIHNlbGVjdGVkVmFsdWVzLmZvckVhY2goKGVudGl0eSkgPT4ge1xyXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5pcVNlbGVjdDJJdGVtQWRhcHRlcihlbnRpdHkpO1xyXG4gICAgICBjb25zdCBpZHMgPSB0aGlzLmdldFNlbGVjdGVkSWRzKCk7XHJcblxyXG4gICAgICBpZiAoaWRzLmluZGV4T2YoaXRlbS5pZCkgPT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwb3B1bGF0ZUl0ZW1zRnJvbUlkcyhzZWxlY3RlZFZhbHVlczogYW55KSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLmhhbmRsZU11bHRpcGxlV2l0aElkcyhzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhhbmRsZVNpbmdsZVdpdGhJZChzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZU11bHRpcGxlV2l0aElkcyhzZWxlY3RlZFZhbHVlczogYW55KSB7XHJcbiAgICBpZiAoc2VsZWN0ZWRWYWx1ZXMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkUHJvdmlkZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCB1bmlxdWVJZHMgPSBbXTtcclxuICAgICAgc2VsZWN0ZWRWYWx1ZXMuZm9yRWFjaCgoaWQpID0+IHtcclxuICAgICAgICBpZiAodW5pcXVlSWRzLmluZGV4T2YoaWQpID09PSAtMSkge1xyXG4gICAgICAgICAgdW5pcXVlSWRzLnB1c2goaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdmlkZXIodW5pcXVlSWRzKS5zdWJzY3JpYmUoKGl0ZW1zOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGl0ZW1zLm1hcCh0aGlzLmlxU2VsZWN0Mkl0ZW1BZGFwdGVyKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVNpbmdsZVdpdGhJZChpZDogYW55KSB7XHJcbiAgICBpZiAoaWQgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkUHJvdmlkZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdmlkZXIoW2lkXSkuc3Vic2NyaWJlKChpdGVtczogYW55W10pID0+IHtcclxuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpcVNlbGVjdDJJdGVtID0gdGhpcy5pcVNlbGVjdDJJdGVtQWRhcHRlcihpdGVtKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtpcVNlbGVjdDJJdGVtXTtcclxuICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXJTZWxlY3RlZCA9IGlxU2VsZWN0Mkl0ZW0udGV4dDtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFscmVhZHlTZWxlY3RlZChpdGVtOiBJcVNlbGVjdDJJdGVtKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goc2VsZWN0ZWRJdGVtID0+IHtcclxuICAgICAgaWYgKHNlbGVjdGVkSXRlbS5pZCA9PT0gaXRlbS5pZCkge1xyXG4gICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBvbkl0ZW1TZWxlY3RlZChpdGVtOiBJcVNlbGVjdDJJdGVtKSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmxpc3REYXRhLmluZGV4T2YoaXRlbSwgMCk7XHJcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgdGhpcy5saXN0RGF0YS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID0gMDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMuYnVpbGRWYWx1ZSgpKTtcclxuICAgIHRoaXMudGVybS5wYXRjaFZhbHVlKCcnLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG5cclxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5mb2N1c0FuZFNob3dSZXN1bHRzKCksIDEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZXN1bHRzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWQgPSBpdGVtLnRleHQ7XHJcbiAgICAgIHRoaXMudGVybUlucHV0Lm5hdGl2ZUVsZW1lbnQuYmx1cigpXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vblNlbGVjdC5lbWl0KGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZElkcygpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5tYXAoaXRlbSA9PiBpdGVtLmlkKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDAgPyBudWxsIDogdGhpcy5zZWxlY3RlZEl0ZW1zWzBdLmlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFbnRpdGllcygpOiBhbnlbXSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLm1hcChpdGVtID0+IGl0ZW0uZW50aXR5KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDAgPyBudWxsIDogdGhpcy5zZWxlY3RlZEl0ZW1zWzBdLmVudGl0eTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUl0ZW0oaXRlbTogSXFTZWxlY3QySXRlbSkge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkSXRlbXMuaW5kZXhPZihpdGVtLCAwKTtcclxuXHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodGhpcy5idWlsZFZhbHVlKCkpO1xyXG4gICAgdGhpcy5vblJlbW92ZS5lbWl0KGl0ZW0pO1xyXG5cclxuICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWQgPSAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRWYWx1ZSgpIHtcclxuICAgIHJldHVybiAnaWQnID09PSB0aGlzLnJlZmVyZW5jZU1vZGUgPyB0aGlzLmdldFNlbGVjdGVkSWRzKCkgOiB0aGlzLmdldEVudGl0aWVzKCk7XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKCkge1xyXG4gICAgdGhpcy5zZWFyY2hGb2N1c2VkID0gdHJ1ZVxyXG4gIH1cclxuXHJcbiAgb25CbHVyKCkge1xyXG4gICAgdGhpcy50ZXJtLnBhdGNoVmFsdWUoJycsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICB0aGlzLnNlYXJjaEZvY3VzZWQgPSBmYWxzZTtcclxuICAgIHRoaXMucmVzdWx0c1Zpc2libGUgPSBmYWxzZTtcclxuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2soKTtcclxuICB9XHJcblxyXG4gIGZvY3VzKCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMudGVybUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgdGhpcy5yZXN1bHRzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VhcmNoRm9jdXNlZCA9ICF0aGlzLmRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNBbmRTaG93UmVzdWx0cygpIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnRlcm1JbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgIHRoaXMuc3Vic2NyaWJlVG9SZXN1bHRzKG9mKCcnKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWFyY2hGb2N1c2VkID0gIXRoaXMuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBvbktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5yZXN1bHRzKSB7XHJcbiAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWV9DT0RFX0VOVEVSKSB7XHJcbiAgICAgICAgdGhpcy5yZXN1bHRzLnNlbGVjdEN1cnJlbnRJdGVtKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmRlYm91bmNlTGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZX0NPREVfRU5URVIgfHwgZXZlbnQua2V5ID09PSBLRVlfQ09ERV9ET1dOX0FSUk9XKSB7XHJcbiAgICAgICAgICB0aGlzLmZvY3VzQW5kU2hvd1Jlc3VsdHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZX0NPREVfRU5URVIpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMucmVzdWx0c1Zpc2libGUgJiYgZXZlbnQua2V5LmluY2x1ZGVzKCdBcnJvdycpKSB7XHJcbiAgICAgIHRoaXMucmVzdWx0c1Zpc2libGUgPSB0cnVlXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZX0NPREVfRVNDQVBFKSB7XHJcbiAgICAgIHRoaXMucmVzdWx0c1Zpc2libGUgPSBmYWxzZVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChldmVudC5rZXkgPT09IEtFWV9DT0RFX0RFTEVURSkge1xyXG4gICAgICBjb25zdCB0ZXh0RW50ZXJlZCA9ICF0aGlzLnRlcm0udmFsdWUgfHwgdGhpcy50ZXJtLnZhbHVlLmxlbmd0aCA9PT0gMDtcclxuICAgICAgaWYgKHRleHRFbnRlcmVkICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVJdGVtKHRoaXMuc2VsZWN0ZWRJdGVtc1t0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucmVzdWx0cykge1xyXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlfQ09ERV9ET1dOX0FSUk9XKSB7XHJcbiAgICAgICAgdGhpcy5yZXN1bHRzLmFjdGl2ZU5leHQoKTtcclxuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09IEtFWV9DT0RFX1VQX0FSUk9XKSB7XHJcbiAgICAgICAgdGhpcy5yZXN1bHRzLmFjdGl2ZVByZXZpb3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKCF0aGlzLm11bHRpcGxlICYmICF0aGlzLnNlYXJjaEZvY3VzZWQpIHtcclxuICAgICAgICByZXR1cm4gJydcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlclNlbGVjdGVkXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlclxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInNlbGVjdDItY29udGFpbmVyXCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJzZWxlY3QyLWlubmVyLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cImlucHV0Q29udGFpbmVyQ2xhc3MgPyBpbnB1dENvbnRhaW5lckNsYXNzIDogJydcIlxyXG4gICAgW2NsYXNzLnNpbXBsZS1zZWxlY3Rpb25dPVwiIW11bHRpcGxlXCIgW2NsYXNzLm11bHRpcGxlLXNlbGVjdGlvbl09XCJtdWx0aXBsZVwiIFtjbGFzcy5yZWFkb25seV09XCJkaXNhYmxlZFwiXHJcbiAgICAoY2xpY2spPVwiZm9jdXNBbmRTaG93UmVzdWx0cygpXCJcclxuICA+XHJcbiAgICA8dWwgY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbi1jb250YWluZXJcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtdWx0aXBsZTsgdGhlbiBpbnB1dFwiPjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkSXRlbXNcIiBjbGFzcz1cInNlbGVjdDItc2VsZWN0ZWRcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VsZWN0ZWQtaXRlbVwiIFtuZ1N0eWxlXT1cInt3aGl0ZVNwYWNlOiB3cmFwU2VsZWN0ZWRUZXh0fVwiIFt0aXRsZV09XCJpdGVtLnRleHRcIj57e2l0ZW0udGV4dH19PC9zcGFuPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCIhZGlzYWJsZWRcIiBjbGFzcz1cInNlbGVjdDItaWNvblwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJyZW1vdmVJdGVtKGl0ZW0pXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uLXJlbW92ZVwiIFtpbm5lckhUTUxdPVwiaWNvbkRlbGV0ZVwiPjwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9saT5cclxuXHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGlwbGU7IHRoZW4gaW5wdXRcIj48L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjaW5wdXQ+XHJcbiAgICAgICAgPGxpICpuZ0lmPVwiIWRpc2FibGVkXCIgY2xhc3M9XCJzZWxlY3QyLWlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGlucHV0ICN0ZXJtSW5wdXQgW2Zvcm1Db250cm9sXT1cInRlcm1cIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCIgKGJsdXIpPVwib25CbHVyKClcIiAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQpXCIgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC91bD5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiKG11bHRpcGxlIHx8ICghbXVsdGlwbGUgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDApKVwiIGNsYXNzPVwic2VsZWN0Mi1pY29uXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb24tY2FyZXRcIiBbaW5uZXJIVE1MXT1cImljb25DYXJldFwiPjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8aXEtc2VsZWN0Mi1yZXN1bHRzICpuZ0lmPVwiIWRpc2FibGVkXCIgI3Jlc3VsdHMgW3Jlc3VsdHNWaXNpYmxlXT1cInJlc3VsdHNWaXNpYmxlXCJcclxuICAgIFtpdGVtc109XCJsaXN0RGF0YVwiIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkSXRlbXNcIiBbbWF4UmVzdWx0c109XCJtYXhSZXN1bHRzXCJcclxuICAgIFttZXNzYWdlTW9yZVJlc3VsdHNdPVwibWVzc2FnZU1vcmVSZXN1bHRzXCIgW21lc3NhZ2VOb1Jlc3VsdHNdPVwibWVzc2FnZU5vUmVzdWx0c1wiXHJcbiAgICBbdGVtcGxhdGVSZWZdPVwidGVtcGxhdGVSZWZcIiAob25JdGVtU2VsZWN0ZWQpPVwib25JdGVtU2VsZWN0ZWQoJGV2ZW50KTtcIlxyXG4gID5cclxuICA8L2lxLXNlbGVjdDItcmVzdWx0cz5cclxuPC9kaXY+XHJcbiJdfQ==
353
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXEtc2VsZWN0Mi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZzItaXEtc2VsZWN0Mi9zcmMvbGliL2lxLXNlbGVjdDIvaXEtc2VsZWN0Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZzItaXEtc2VsZWN0Mi9zcmMvbGliL2lxLXNlbGVjdDIvaXEtc2VsZWN0Mi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFlLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVwSSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUM3RixPQUFPLEVBQXVCLGlCQUFpQixFQUFFLGtCQUFrQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0YsT0FBTyxFQUFhLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUMsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RyxPQUFPLFFBQVEsTUFBTSxZQUFZLENBQUM7Ozs7O0FBRWxDLE1BQU0sbUJBQW1CLEdBQUcsV0FBVyxDQUFDO0FBQ3hDLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDO0FBQ3BDLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQztBQUMvQixNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUM7QUFDakMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBWWpDLE1BQU0sT0FBTyxrQkFBa0I7SUE0QzdCO1FBdENTLGtCQUFhLEdBQW9CLElBQUksQ0FBQztRQUN0QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpC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QUMsV0FBVztnQkFDQSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtJcVNlbGVjdDJJdGVtfSBmcm9tICcuL2lxLXNlbGVjdDItaXRlbSc7XHJcbmltcG9ydCB7SXFTZWxlY3QyUmVzdWx0c0NvbXBvbmVudH0gZnJvbSAnLi4vaXEtc2VsZWN0Mi1yZXN1bHRzL2lxLXNlbGVjdDItcmVzdWx0cy5jb21wb25lbnQnO1xyXG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgVW50eXBlZEZvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge2RlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBtZXJnZU1hcCwgc3dpdGNoTWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IE1lc3NhZ2VzIGZyb20gXCIuL21lc3NhZ2VzXCI7XHJcblxyXG5jb25zdCBLRVlfQ09ERV9ET1dOX0FSUk9XID0gJ0Fycm93RG93bic7XHJcbmNvbnN0IEtFWV9DT0RFX1VQX0FSUk9XID0gJ0Fycm93VXAnO1xyXG5jb25zdCBLRVlfQ09ERV9FTlRFUiA9ICdFbnRlcic7XHJcbmNvbnN0IEtFWV9DT0RFX0VTQ0FQRSA9ICdFc2NhcGUnO1xyXG5jb25zdCBLRVlfQ09ERV9ERUxFVEUgPSAnRGVsZXRlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaXEtc2VsZWN0MicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lxLXNlbGVjdDIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lxLXNlbGVjdDIuY29tcG9uZW50LmNzcyddLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSXFTZWxlY3QyQ29tcG9uZW50KSxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIElxU2VsZWN0MkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZVByb3ZpZGVyOiAodGVybTogc3RyaW5nLCBzZWxlY3RlZD86IGFueVtdKSA9PiBPYnNlcnZhYmxlPGFueVtdPjtcclxuICBASW5wdXQoKSBzZWxlY3RlZFByb3ZpZGVyOiAoaWRzOiBzdHJpbmdbXSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgQElucHV0KCkgaXFTZWxlY3QySXRlbUFkYXB0ZXI6IChlbnRpdHk6IGFueSkgPT4gSXFTZWxlY3QySXRlbTtcclxuXHJcbiAgQElucHV0KCkgcmVmZXJlbmNlTW9kZTogJ2lkJyB8ICdlbnRpdHknID0gJ2lkJztcclxuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlucHV0Q29udGFpbmVyQ2xhc3M6IHN0cmluZztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbWF4UmVzdWx0czogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGNsaWVudE1vZGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBiYWRnZUNvbG9yID0gJ2luZm8nO1xyXG4gIEBJbnB1dCgpIHdyYXBTZWxlY3RlZFRleHQgPSAnbm93cmFwJ1xyXG4gIEBJbnB1dCgpIHByZXZlbnREZXNlbGVjdCA9IGZhbHNlXHJcbiAgQElucHV0KCkgY29uc2VjdXRpdmVNdWx0aXBsZVNlbGVjdGlvbiA9IHRydWVcclxuXHJcbiAgQElucHV0KCkgZGVib3VuY2VEZWxheSA9IDI1MFxyXG4gIEBJbnB1dCgpIGRlYm91bmNlTGVuZ3RoID0gMlxyXG4gIEBJbnB1dCgpIGljb25DYXJldCA9ICcmIzk2NjA7J1xyXG4gIEBJbnB1dCgpIGljb25EZWxldGUgPSAnJiMyMTU7J1xyXG4gIEBJbnB1dCgpIG1lc3NhZ2VNb3JlUmVzdWx0czogc3RyaW5nID0gTWVzc2FnZXMuTU9SRV9SRVNVTFRTO1xyXG4gIEBJbnB1dCgpIG1lc3NhZ2VOb1Jlc3VsdHM6IHN0cmluZyA9IE1lc3NhZ2VzLk5PX1JFU1VMVFM7XHJcblxyXG4gIEBPdXRwdXQoKSBvblNlbGVjdDogRXZlbnRFbWl0dGVyPElxU2VsZWN0Mkl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcjxJcVNlbGVjdDJJdGVtPigpO1xyXG4gIEBPdXRwdXQoKSBvblJlbW92ZTogRXZlbnRFbWl0dGVyPElxU2VsZWN0Mkl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcjxJcVNlbGVjdDJJdGVtPigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdzZWxlY3RDb250YWluZXInKSBjb250YWluZXI6IEVsZW1lbnRSZWZcclxuICBAVmlld0NoaWxkKCd0ZXJtSW5wdXQnKSB0ZXJtSW5wdXQ6IEVsZW1lbnRSZWZcclxuICBAVmlld0NoaWxkKCdyZXN1bHRzJykgcmVzdWx0czogSXFTZWxlY3QyUmVzdWx0c0NvbXBvbmVudDtcclxuXHJcbiAgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgdGVybSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcclxuICByZXN1bHRzVmlzaWJsZSA9IGZhbHNlO1xyXG4gIHNlYXJjaEZvY3VzZWQgPSBmYWxzZTtcclxuICBsaXN0RGF0YTogSXFTZWxlY3QySXRlbVtdID0gW11cclxuICBmdWxsRGF0YUxpc3Q6IElxU2VsZWN0Mkl0ZW1bXTtcclxuICBzZWxlY3RlZEl0ZW1zOiBJcVNlbGVjdDJJdGVtW10gPSBbXTtcclxuICBwcml2YXRlIHBsYWNlaG9sZGVyU2VsZWN0ZWQgPSAnJztcclxuXHJcbiAgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSAoKSA9PiBmYWxzZVxyXG4gIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSAoKSA9PiBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnN1YnNjcmliZVRvQ2hhbmdlc0FuZExvYWREYXRhRnJvbU9ic2VydmFibGUoKTtcclxuXHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIGV2ZW50ID0+IHtcclxuICAgICAgaWYgKCEodGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XHJcbiAgICAgICAgdGhpcy5yZXN1bHRzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoRm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShzZWxlY3RlZFZhbHVlczogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoc2VsZWN0ZWRWYWx1ZXMpIHtcclxuICAgICAgaWYgKHRoaXMucmVmZXJlbmNlTW9kZSA9PT0gJ2lkJykge1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVJdGVtc0Zyb21JZHMoc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVJdGVtc0Zyb21FbnRpdGllcyhzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXJTZWxlY3RlZCA9ICcnO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0NoYW5nZXNBbmRMb2FkRGF0YUZyb21PYnNlcnZhYmxlKCkge1xyXG4gICAgdGhpcy5zdWJzY3JpYmVUb1Jlc3VsdHModGhpcy50ZXJtLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlRGVsYXkpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvUmVzdWx0cyhvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPHN0cmluZz4pOiB2b2lkIHtcclxuICAgIG9ic2VydmFibGUucGlwZShcclxuICAgICAgdGFwKCgpID0+IHRoaXMucmVzdWx0c1Zpc2libGUgPSBmYWxzZSksXHJcbiAgICAgIGZpbHRlcigodGVybSkgPT4gdGVybS5sZW5ndGggPj0gdGhpcy5kZWJvdW5jZUxlbmd0aCksXHJcbiAgICAgIHN3aXRjaE1hcCh0ZXJtID0+IHRoaXMubG9hZERhdGFGcm9tT2JzZXJ2YWJsZSh0ZXJtKSksXHJcbiAgICAgIG1hcChpdGVtcyA9PiBpdGVtcy5maWx0ZXIoaXRlbSA9PiAhKHRoaXMubXVsdGlwbGUgJiYgdGhpcy5hbHJlYWR5U2VsZWN0ZWQoaXRlbSkpKSksXHJcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnJlc3VsdHNWaXNpYmxlID0gdGhpcy5zZWFyY2hGb2N1c2VkKVxyXG4gICAgKS5zdWJzY3JpYmUoKGl0ZW1zKSA9PiB0aGlzLmxpc3REYXRhID0gaXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkRGF0YUZyb21PYnNlcnZhYmxlKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8SXFTZWxlY3QySXRlbVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5jbGllbnRNb2RlID8gdGhpcy5mZXRjaEFuZEZpbHRlckxvY2FsRGF0YSh0ZXJtKSA6IHRoaXMuZmV0Y2hEYXRhKHRlcm0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaEFuZEZpbHRlckxvY2FsRGF0YSh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElxU2VsZWN0Mkl0ZW1bXT4ge1xyXG4gICAgaWYgKCF0aGlzLmZ1bGxEYXRhTGlzdCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mZXRjaERhdGEoJycpLnBpcGUoXHJcbiAgICAgICAgbWVyZ2VNYXAoKGl0ZW1zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZ1bGxEYXRhTGlzdCA9IGl0ZW1zO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyTG9jYWxEYXRhKHRlcm0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJMb2NhbERhdGEodGVybSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbHRlckxvY2FsRGF0YSh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElxU2VsZWN0Mkl0ZW1bXT4ge1xyXG4gICAgcmV0dXJuIG9mKHRoaXMuZnVsbERhdGFMaXN0LmZpbHRlcihpdGVtID0+IGl0ZW0udGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0udG9Mb3dlckNhc2UoKSkpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hEYXRhKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8SXFTZWxlY3QySXRlbVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlUHJvdmlkZXIodGVybSwgdGhpcy5idWlsZFZhbHVlKCkpLnBpcGUobWFwKChpdGVtczogYW55W10pID0+IGl0ZW1zLm1hcCgoaXRlbSkgPT4gdGhpcy5pcVNlbGVjdDJJdGVtQWRhcHRlcihpdGVtKSkpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcG9wdWxhdGVJdGVtc0Zyb21FbnRpdGllcyhzZWxlY3RlZFZhbHVlczogYW55KSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLmhhbmRsZU11bHRpcGxlV2l0aEVudGl0aWVzKHNlbGVjdGVkVmFsdWVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGlxU2VsZWN0Mkl0ZW0gPSB0aGlzLmlxU2VsZWN0Mkl0ZW1BZGFwdGVyKHNlbGVjdGVkVmFsdWVzKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW2lxU2VsZWN0Mkl0ZW1dO1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWQgPSBpcVNlbGVjdDJJdGVtLnRleHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZU11bHRpcGxlV2l0aEVudGl0aWVzKHNlbGVjdGVkVmFsdWVzOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG5cclxuICAgIHNlbGVjdGVkVmFsdWVzLmZvckVhY2goKGVudGl0eSkgPT4ge1xyXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5pcVNlbGVjdDJJdGVtQWRhcHRlcihlbnRpdHkpO1xyXG4gICAgICBjb25zdCBpZHMgPSB0aGlzLmdldFNlbGVjdGVkSWRzKCk7XHJcblxyXG4gICAgICBpZiAoaWRzLmluZGV4T2YoaXRlbS5pZCkgPT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwb3B1bGF0ZUl0ZW1zRnJvbUlkcyhzZWxlY3RlZFZhbHVlczogYW55KSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLmhhbmRsZU11bHRpcGxlV2l0aElkcyhzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhhbmRsZVNpbmdsZVdpdGhJZChzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZU11bHRpcGxlV2l0aElkcyhzZWxlY3RlZFZhbHVlczogYW55KSB7XHJcbiAgICBpZiAoc2VsZWN0ZWRWYWx1ZXMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkUHJvdmlkZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCB1bmlxdWVJZHMgPSBbXTtcclxuICAgICAgc2VsZWN0ZWRWYWx1ZXMuZm9yRWFjaCgoaWQpID0+IHtcclxuICAgICAgICBpZiAodW5pcXVlSWRzLmluZGV4T2YoaWQpID09PSAtMSkge1xyXG4gICAgICAgICAgdW5pcXVlSWRzLnB1c2goaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdmlkZXIodW5pcXVlSWRzKS5zdWJzY3JpYmUoKGl0ZW1zOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGl0ZW1zLm1hcCh0aGlzLmlxU2VsZWN0Mkl0ZW1BZGFwdGVyKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVNpbmdsZVdpdGhJZChpZDogYW55KSB7XHJcbiAgICBpZiAoaWQgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkUHJvdmlkZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdmlkZXIoW2lkXSkuc3Vic2NyaWJlKChpdGVtczogYW55W10pID0+IHtcclxuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpcVNlbGVjdDJJdGVtID0gdGhpcy5pcVNlbGVjdDJJdGVtQWRhcHRlcihpdGVtKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtpcVNlbGVjdDJJdGVtXTtcclxuICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXJTZWxlY3RlZCA9IGlxU2VsZWN0Mkl0ZW0udGV4dDtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFscmVhZHlTZWxlY3RlZChpdGVtOiBJcVNlbGVjdDJJdGVtKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goc2VsZWN0ZWRJdGVtID0+IHtcclxuICAgICAgaWYgKHNlbGVjdGVkSXRlbS5pZCA9PT0gaXRlbS5pZCkge1xyXG4gICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBvbkl0ZW1TZWxlY3RlZChpdGVtOiBJcVNlbGVjdDJJdGVtKSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmxpc3REYXRhLmluZGV4T2YoaXRlbSwgMCk7XHJcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgdGhpcy5saXN0RGF0YS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID0gMDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMuYnVpbGRWYWx1ZSgpKTtcclxuICAgIHRoaXMudGVybS5wYXRjaFZhbHVlKCcnLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG5cclxuICAgIGlmICghdGhpcy5tdWx0aXBsZSB8fCAhdGhpcy5jb25zZWN1dGl2ZU11bHRpcGxlU2VsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMucmVzdWx0c1Zpc2libGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5wbGFjZWhvbGRlclNlbGVjdGVkID0gaXRlbS50ZXh0O1xyXG4gICAgICB0aGlzLnRlcm1JbnB1dC5uYXRpdmVFbGVtZW50LmJsdXIoKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25TZWxlY3QuZW1pdChpdGVtKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWRJZHMoKTogYW55IHtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMubWFwKGl0ZW0gPT4gaXRlbS5pZClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwID8gbnVsbCA6IHRoaXMuc2VsZWN0ZWRJdGVtc1swXS5pZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RW50aXRpZXMoKTogYW55W10ge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5tYXAoaXRlbSA9PiBpdGVtLmVudGl0eSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwID8gbnVsbCA6IHRoaXMuc2VsZWN0ZWRJdGVtc1swXS5lbnRpdHk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVJdGVtKGl0ZW06IElxU2VsZWN0Mkl0ZW0pIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmluZGV4T2YoaXRlbSwgMCk7XHJcblxyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMuYnVpbGRWYWx1ZSgpKTtcclxuICAgIHRoaXMub25SZW1vdmUuZW1pdChpdGVtKTtcclxuXHJcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5wbGFjZWhvbGRlclNlbGVjdGVkID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkVmFsdWUoKSB7XHJcbiAgICByZXR1cm4gJ2lkJyA9PT0gdGhpcy5yZWZlcmVuY2VNb2RlID8gdGhpcy5nZXRTZWxlY3RlZElkcygpIDogdGhpcy5nZXRFbnRpdGllcygpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cygpIHtcclxuICAgIHRoaXMuc2VhcmNoRm9jdXNlZCA9IHRydWVcclxuICB9XHJcblxyXG4gIG9uQmx1cigpIHtcclxuICAgIHRoaXMudGVybS5wYXRjaFZhbHVlKCcnLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjaygpO1xyXG4gIH1cclxuXHJcbiAgZm9jdXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy50ZXJtSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB0aGlzLnJlc3VsdHNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWFyY2hGb2N1c2VkID0gIXRoaXMuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBmb2N1c0FuZFNob3dSZXN1bHRzKCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMudGVybUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVUb1Jlc3VsdHMob2YoJycpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlYXJjaEZvY3VzZWQgPSAhdGhpcy5kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnJlc3VsdHMpIHtcclxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZX0NPREVfRU5URVIpIHtcclxuICAgICAgICB0aGlzLnJlc3VsdHMuc2VsZWN0Q3VycmVudEl0ZW0oKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZGVib3VuY2VMZW5ndGggPT09IDApIHtcclxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlfQ09ERV9FTlRFUiB8fCBldmVudC5rZXkgPT09IEtFWV9DT0RFX0RPV05fQVJST1cpIHtcclxuICAgICAgICAgIHRoaXMuZm9jdXNBbmRTaG93UmVzdWx0cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlfQ09ERV9FTlRFUikge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5yZXN1bHRzVmlzaWJsZSAmJiBldmVudC5rZXkuaW5jbHVkZXMoJ0Fycm93JykpIHtcclxuICAgICAgdGhpcy5yZXN1bHRzVmlzaWJsZSA9IHRydWVcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlfQ09ERV9FU0NBUEUpIHtcclxuICAgICAgdGhpcy5yZXN1bHRzVmlzaWJsZSA9IGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZX0NPREVfREVMRVRFKSB7XHJcbiAgICAgIGNvbnN0IHRleHRFbnRlcmVkID0gIXRoaXMudGVybS52YWx1ZSB8fCB0aGlzLnRlcm0udmFsdWUubGVuZ3RoID09PSAwO1xyXG4gICAgICBpZiAodGV4dEVudGVyZWQgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnJlbW92ZUl0ZW0odGhpcy5zZWxlY3RlZEl0ZW1zW3RoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggLSAxXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yZXN1bHRzKSB7XHJcbiAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWV9DT0RFX0RPV05fQVJST1cpIHtcclxuICAgICAgICB0aGlzLnJlc3VsdHMuYWN0aXZlTmV4dCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gS0VZX0NPREVfVVBfQVJST1cpIHtcclxuICAgICAgICB0aGlzLnJlc3VsdHMuYWN0aXZlUHJldmlvdXMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAoIXRoaXMubXVsdGlwbGUgJiYgIXRoaXMuc2VhcmNoRm9jdXNlZCkge1xyXG4gICAgICAgIHJldHVybiAnJ1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWRcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICNzZWxlY3RDb250YWluZXIgY2xhc3M9XCJzZWxlY3QyLWNvbnRhaW5lclwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwic2VsZWN0Mi1pbm5lci1jb250YWluZXJcIiBbbmdDbGFzc109XCJpbnB1dENvbnRhaW5lckNsYXNzID8gaW5wdXRDb250YWluZXJDbGFzcyA6ICcnXCJcclxuICAgIFtjbGFzcy5zaW1wbGUtc2VsZWN0aW9uXT1cIiFtdWx0aXBsZVwiIFtjbGFzcy5tdWx0aXBsZS1zZWxlY3Rpb25dPVwibXVsdGlwbGVcIiBbY2xhc3MucmVhZG9ubHldPVwiZGlzYWJsZWRcIlxyXG4gICAgKGNsaWNrKT1cImZvY3VzQW5kU2hvd1Jlc3VsdHMoKVwiXHJcbiAgPlxyXG4gICAgPHVsIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb24tY29udGFpbmVyXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbXVsdGlwbGU7IHRoZW4gaW5wdXRcIj48L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZEl0ZW1zXCIgY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGVkXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGVkLWl0ZW1cIiBbbmdTdHlsZV09XCJ7d2hpdGVTcGFjZTogd3JhcFNlbGVjdGVkVGV4dH1cIiBbdGl0bGVdPVwiaXRlbS50ZXh0XCI+e3tpdGVtLnRleHR9fTwvc3Bhbj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIXByZXZlbnREZXNlbGVjdCAmJiAhZGlzYWJsZWRcIiBjbGFzcz1cInNlbGVjdDItaWNvbiBzZWxlY3QyLXJlbW92ZS1idXR0b25cIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwicmVtb3ZlSXRlbShpdGVtKVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbi1yZW1vdmVcIiBbaW5uZXJIVE1MXT1cImljb25EZWxldGVcIj48L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbGk+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGlwbGU7IHRoZW4gaW5wdXRcIj48L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjaW5wdXQ+XHJcbiAgICAgICAgPGxpICpuZ0lmPVwiIWRpc2FibGVkXCIgY2xhc3M9XCJzZWxlY3QyLWlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGlucHV0ICN0ZXJtSW5wdXQgW2Zvcm1Db250cm9sXT1cInRlcm1cIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCIgKGJsdXIpPVwib25CbHVyKClcIiAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQpXCIgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC91bD5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiKG11bHRpcGxlIHx8ICghbXVsdGlwbGUgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDApKVwiIGNsYXNzPVwic2VsZWN0Mi1pY29uXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb24tY2FyZXRcIiBbaW5uZXJIVE1MXT1cImljb25DYXJldFwiPjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8aXEtc2VsZWN0Mi1yZXN1bHRzICpuZ0lmPVwiIWRpc2FibGVkXCIgI3Jlc3VsdHMgW3Jlc3VsdHNWaXNpYmxlXT1cInJlc3VsdHNWaXNpYmxlXCJcclxuICAgIFtpdGVtc109XCJsaXN0RGF0YVwiIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkSXRlbXNcIiBbbWF4UmVzdWx0c109XCJtYXhSZXN1bHRzXCJcclxuICAgIFttZXNzYWdlTW9yZVJlc3VsdHNdPVwibWVzc2FnZU1vcmVSZXN1bHRzXCIgW21lc3NhZ2VOb1Jlc3VsdHNdPVwibWVzc2FnZU5vUmVzdWx0c1wiXHJcbiAgICBbdGVtcGxhdGVSZWZdPVwidGVtcGxhdGVSZWZcIiAob25JdGVtU2VsZWN0ZWQpPVwib25JdGVtU2VsZWN0ZWQoJGV2ZW50KTtcIlxyXG4gID5cclxuICA8L2lxLXNlbGVjdDItcmVzdWx0cz5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -68,11 +68,11 @@ export class IqSelect2ResultsComponent {
68
68
  .replace(Messages.MAX_COUNT_VAR, String(this.items.length + this.selectedItems.length));
69
69
  }
70
70
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: IqSelect2ResultsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
71
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: IqSelect2ResultsComponent, selector: "iq-select2-results", inputs: { items: "items", maxResults: "maxResults", messageMoreResults: "messageMoreResults", messageNoResults: "messageNoResults", resultsVisible: "resultsVisible", selectedItems: "selectedItems", templateRef: "templateRef" }, outputs: { onItemSelected: "onItemSelected" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div #container class=\"select2-dropdown\" [attr.data-visible]=\"resultsVisible\">\r\n <div *ngIf=\"maxResults && items.length + selectedItems.length > maxResults\" class=\"select2-message\">\r\n {{getCountMessage()}}\r\n </div>\r\n\r\n <div *ngIf=\"items.length === 0\" class=\"select2-message no-results\">\r\n {{messageNoResults}}\r\n </div>\r\n\r\n <div *ngFor=\"let item of items | slice : 0 : maxResults; let i = index;\" id=\"item_{{i}}\" [attr.data-item-id]=\"item.id\" [title]=\"item.text\"\r\n class=\"select2-dropdown-item\" [class.selected]=\"isSelected(item)\" [class.active]=\"i === activeIndex\"\r\n (mousedown)=\"selectItem(item)\" (mouseover)=\"onMouseOver(i)\" (mouseenter)=\"onHovering($event)\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"{$item:item, $entity: item.entity, $id:item.id, $index:i}\"></ng-container>\r\n <ng-container *ngIf=\"!templateRef\">{{item.text}}</ng-container>\r\n </div>\r\n</div>\r\n", styles: ["::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--select2-color-scrollbar-track)}::-webkit-scrollbar-thumb{background-color:var(--select2-color-scrollbar-thumb);border-radius:1em;border:transparent}.select2-dropdown{position:absolute;top:100%;width:100%;z-index:10;border:1px solid var(--select2-color-border);background-color:var(--select2-color-background);padding:.1em;max-height:20vh;overflow-x:hidden;overflow-y:auto}.select2-dropdown[data-visible=false]{display:none;visibility:hidden}.select2-message{width:100%;padding:.2em}.select2-dropdown-item{width:100%;padding:.2em;cursor:pointer;overflow-wrap:break-word;word-break:break-word}.selected{color:invert(var(--select2-color-item-text));background-color:var(--select2-color-list-selected)}.active{color:var(--select2-color-item-text);background-color:var(--select2-color-list-active)}\n"], dependencies: [{ 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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] }); }
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: IqSelect2ResultsComponent, selector: "iq-select2-results", inputs: { items: "items", maxResults: "maxResults", messageMoreResults: "messageMoreResults", messageNoResults: "messageNoResults", resultsVisible: "resultsVisible", selectedItems: "selectedItems", templateRef: "templateRef" }, outputs: { onItemSelected: "onItemSelected" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div #container class=\"select2-dropdown\" [attr.data-visible]=\"resultsVisible\">\r\n <div *ngIf=\"maxResults && items.length + selectedItems.length > maxResults\" class=\"select2-message\">\r\n {{getCountMessage()}}\r\n </div>\r\n\r\n <div *ngIf=\"items.length === 0\" class=\"select2-message no-results\">\r\n {{messageNoResults}}\r\n </div>\r\n\r\n <div *ngFor=\"let item of items | slice : 0 : maxResults; let i = index;\" id=\"item_{{i}}\" [attr.data-item-id]=\"item.id\" [title]=\"item.text\"\r\n class=\"select2-dropdown-item\" [class.selected]=\"isSelected(item)\" [class.active]=\"i === activeIndex\"\r\n (click)=\"selectItem(item)\" (mouseover)=\"onMouseOver(i)\" (mouseenter)=\"onHovering($event)\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"{$item:item, $entity: item.entity, $id:item.id, $index:i}\"></ng-container>\r\n <ng-container *ngIf=\"!templateRef\">{{item.text}}</ng-container>\r\n </div>\r\n</div>\r\n", styles: ["::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--select2-color-scrollbar-track)}::-webkit-scrollbar-thumb{background-color:var(--select2-color-scrollbar-thumb);border-radius:1em;border:transparent}.select2-dropdown{position:absolute;top:100%;width:100%;z-index:100;border:1px solid var(--select2-color-border);background-color:var(--select2-color-background);padding:.1em;max-height:20vh;overflow-x:hidden;overflow-y:auto}.select2-dropdown[data-visible=false]{display:none;visibility:hidden}.select2-message{width:100%;padding:.2em}.select2-dropdown-item{width:100%;padding:.2em;cursor:pointer;overflow-wrap:break-word;word-break:break-word}.selected{color:invert(var(--select2-color-item-text));background-color:var(--select2-color-list-selected)}.active{color:var(--select2-color-item-text);background-color:var(--select2-color-list-active)}\n"], dependencies: [{ 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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] }); }
72
72
  }
73
73
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: IqSelect2ResultsComponent, decorators: [{
74
74
  type: Component,
75
- args: [{ selector: 'iq-select2-results', template: "<div #container class=\"select2-dropdown\" [attr.data-visible]=\"resultsVisible\">\r\n <div *ngIf=\"maxResults && items.length + selectedItems.length > maxResults\" class=\"select2-message\">\r\n {{getCountMessage()}}\r\n </div>\r\n\r\n <div *ngIf=\"items.length === 0\" class=\"select2-message no-results\">\r\n {{messageNoResults}}\r\n </div>\r\n\r\n <div *ngFor=\"let item of items | slice : 0 : maxResults; let i = index;\" id=\"item_{{i}}\" [attr.data-item-id]=\"item.id\" [title]=\"item.text\"\r\n class=\"select2-dropdown-item\" [class.selected]=\"isSelected(item)\" [class.active]=\"i === activeIndex\"\r\n (mousedown)=\"selectItem(item)\" (mouseover)=\"onMouseOver(i)\" (mouseenter)=\"onHovering($event)\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"{$item:item, $entity: item.entity, $id:item.id, $index:i}\"></ng-container>\r\n <ng-container *ngIf=\"!templateRef\">{{item.text}}</ng-container>\r\n </div>\r\n</div>\r\n", styles: ["::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--select2-color-scrollbar-track)}::-webkit-scrollbar-thumb{background-color:var(--select2-color-scrollbar-thumb);border-radius:1em;border:transparent}.select2-dropdown{position:absolute;top:100%;width:100%;z-index:10;border:1px solid var(--select2-color-border);background-color:var(--select2-color-background);padding:.1em;max-height:20vh;overflow-x:hidden;overflow-y:auto}.select2-dropdown[data-visible=false]{display:none;visibility:hidden}.select2-message{width:100%;padding:.2em}.select2-dropdown-item{width:100%;padding:.2em;cursor:pointer;overflow-wrap:break-word;word-break:break-word}.selected{color:invert(var(--select2-color-item-text));background-color:var(--select2-color-list-selected)}.active{color:var(--select2-color-item-text);background-color:var(--select2-color-list-active)}\n"] }]
75
+ args: [{ selector: 'iq-select2-results', template: "<div #container class=\"select2-dropdown\" [attr.data-visible]=\"resultsVisible\">\r\n <div *ngIf=\"maxResults && items.length + selectedItems.length > maxResults\" class=\"select2-message\">\r\n {{getCountMessage()}}\r\n </div>\r\n\r\n <div *ngIf=\"items.length === 0\" class=\"select2-message no-results\">\r\n {{messageNoResults}}\r\n </div>\r\n\r\n <div *ngFor=\"let item of items | slice : 0 : maxResults; let i = index;\" id=\"item_{{i}}\" [attr.data-item-id]=\"item.id\" [title]=\"item.text\"\r\n class=\"select2-dropdown-item\" [class.selected]=\"isSelected(item)\" [class.active]=\"i === activeIndex\"\r\n (click)=\"selectItem(item)\" (mouseover)=\"onMouseOver(i)\" (mouseenter)=\"onHovering($event)\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"{$item:item, $entity: item.entity, $id:item.id, $index:i}\"></ng-container>\r\n <ng-container *ngIf=\"!templateRef\">{{item.text}}</ng-container>\r\n </div>\r\n</div>\r\n", styles: ["::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--select2-color-scrollbar-track)}::-webkit-scrollbar-thumb{background-color:var(--select2-color-scrollbar-thumb);border-radius:1em;border:transparent}.select2-dropdown{position:absolute;top:100%;width:100%;z-index:100;border:1px solid var(--select2-color-border);background-color:var(--select2-color-background);padding:.1em;max-height:20vh;overflow-x:hidden;overflow-y:auto}.select2-dropdown[data-visible=false]{display:none;visibility:hidden}.select2-message{width:100%;padding:.2em}.select2-dropdown-item{width:100%;padding:.2em;cursor:pointer;overflow-wrap:break-word;word-break:break-word}.selected{color:invert(var(--select2-color-item-text));background-color:var(--select2-color-list-selected)}.active{color:var(--select2-color-item-text);background-color:var(--select2-color-list-active)}\n"] }]
76
76
  }], ctorParameters: function () { return []; }, propDecorators: { container: [{
77
77
  type: ViewChild,
78
78
  args: ['container']
@@ -93,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImpor
93
93
  }], onItemSelected: [{
94
94
  type: Output
95
95
  }] } });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXEtc2VsZWN0Mi1yZXN1bHRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nMi1pcS1zZWxlY3QyL3NyYy9saWIvaXEtc2VsZWN0Mi1yZXN1bHRzL2lxLXNlbGVjdDItcmVzdWx0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZzItaXEtc2VsZWN0Mi9zcmMvbGliL2lxLXNlbGVjdDItcmVzdWx0cy9pcS1zZWxlY3QyLXJlc3VsdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLFFBQVEsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBTzlDLE1BQU0sT0FBTyx5QkFBeUI7SUFpQnBDO1FBYlMsVUFBSyxHQUFvQixFQUFFLENBQUE7UUFPMUIsbUJBQWMsR0FBZ0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUzRSxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUVSLGNBQVMsR0FBRyxLQUFLLENBQUM7SUFHMUIsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQW1CO1FBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsRSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztTQUN0QjthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO1FBRUQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDMUM7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtRQUVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVwRSxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFLO1FBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELFVBQVUsQ0FBQyxXQUFXO1FBQ3BCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUVuQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoQyxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssV0FBVyxDQUFDLEVBQUUsRUFBRTtnQkFDOUIsTUFBTSxHQUFHLElBQUksQ0FBQzthQUNmO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN4RixPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzVGLENBQUM7OEdBekZVLHlCQUF5QjtrR0FBekIseUJBQXlCLHFiQ1R0Qyw2K0JBaUJBOzsyRkRSYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usb0JBQW9COzBFQU1OLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFFYixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0lxU2VsZWN0Mkl0ZW19IGZyb20gJy4uL2lxLXNlbGVjdDIvaXEtc2VsZWN0Mi1pdGVtJztcclxuaW1wb3J0IE1lc3NhZ2VzIGZyb20gXCIuLi9pcS1zZWxlY3QyL21lc3NhZ2VzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lxLXNlbGVjdDItcmVzdWx0cycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lxLXNlbGVjdDItcmVzdWx0cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaXEtc2VsZWN0Mi1yZXN1bHRzLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSXFTZWxlY3QyUmVzdWx0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lcjogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KCkgaXRlbXM6IElxU2VsZWN0Mkl0ZW1bXSA9IFtdXHJcbiAgQElucHV0KCkgbWF4UmVzdWx0czogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIG1lc3NhZ2VNb3JlUmVzdWx0czogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1lc3NhZ2VOb1Jlc3VsdHM6IHN0cmluZztcclxuICBASW5wdXQoKSByZXN1bHRzVmlzaWJsZTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1zOiBJcVNlbGVjdDJJdGVtW107XHJcbiAgQElucHV0KCkgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQE91dHB1dCgpIG9uSXRlbVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8SXFTZWxlY3QySXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGFjdGl2ZUluZGV4ID0gMDtcclxuXHJcbiAgcHJpdmF0ZSB1c2luZ0tleXMgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICB9XHJcblxyXG4gIHNlbGVjdEl0ZW0oaXRlbTogSXFTZWxlY3QySXRlbSkge1xyXG4gICAgdGhpcy5vbkl0ZW1TZWxlY3RlZC5lbWl0KGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlTmV4dCgpIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4ID49ICh0aGlzLm1heFJlc3VsdHMgPz8gdGhpcy5pdGVtcy5sZW5ndGgpIC0gMSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlSW5kZXgrKztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNjcm9sbFRvRWxlbWVudCgpO1xyXG4gICAgdGhpcy51c2luZ0tleXMgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlUHJldmlvdXMoKSB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVJbmRleCAtIDEgPCAwKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFjdGl2ZUluZGV4LS07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zY3JvbGxUb0VsZW1lbnQoKTtcclxuICAgIHRoaXMudXNpbmdLZXlzID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHNjcm9sbFRvRWxlbWVudCgpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbV8nICsgdGhpcy5hY3RpdmVJbmRleCk7XHJcblxyXG4gICAgaWYgKGVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSBlbGVtZW50Lm9mZnNldFRvcDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEN1cnJlbnRJdGVtKCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbXNbdGhpcy5hY3RpdmVJbmRleF0pIHtcclxuICAgICAgdGhpcy5zZWxlY3RJdGVtKHRoaXMuaXRlbXNbdGhpcy5hY3RpdmVJbmRleF0pO1xyXG4gICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTW91c2VPdmVyKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmICghdGhpcy51c2luZ0tleXMpIHtcclxuICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IGluZGV4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Ib3ZlcmluZyhldmVudCkge1xyXG4gICAgdGhpcy51c2luZ0tleXMgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzU2VsZWN0ZWQoY3VycmVudEl0ZW0pIHtcclxuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgaWYgKGl0ZW0uaWQgPT09IGN1cnJlbnRJdGVtLmlkKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIGdldENvdW50TWVzc2FnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZU1vcmVSZXN1bHRzLnJlcGxhY2UoTWVzc2FnZXMuVklTSUJMRV9DT1VOVF9WQVIsIFN0cmluZyh0aGlzLm1heFJlc3VsdHMpKVxyXG4gICAgICAucmVwbGFjZShNZXNzYWdlcy5NQVhfQ09VTlRfVkFSLCBTdHJpbmcodGhpcy5pdGVtcy5sZW5ndGggKyB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoKSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICNjb250YWluZXIgY2xhc3M9XCJzZWxlY3QyLWRyb3Bkb3duXCIgW2F0dHIuZGF0YS12aXNpYmxlXT1cInJlc3VsdHNWaXNpYmxlXCI+XHJcbiAgPGRpdiAqbmdJZj1cIm1heFJlc3VsdHMgJiYgaXRlbXMubGVuZ3RoICsgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiBtYXhSZXN1bHRzXCIgY2xhc3M9XCJzZWxlY3QyLW1lc3NhZ2VcIj5cclxuICAgIHt7Z2V0Q291bnRNZXNzYWdlKCl9fVxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwiaXRlbXMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJzZWxlY3QyLW1lc3NhZ2Ugbm8tcmVzdWx0c1wiPlxyXG4gICAge3ttZXNzYWdlTm9SZXN1bHRzfX1cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtcyB8IHNsaWNlIDogMCA6IG1heFJlc3VsdHM7IGxldCBpID0gaW5kZXg7XCIgaWQ9XCJpdGVtX3t7aX19XCIgW2F0dHIuZGF0YS1pdGVtLWlkXT1cIml0ZW0uaWRcIiBbdGl0bGVdPVwiaXRlbS50ZXh0XCJcclxuICAgICAgIGNsYXNzPVwic2VsZWN0Mi1kcm9wZG93bi1pdGVtXCIgW2NsYXNzLnNlbGVjdGVkXT1cImlzU2VsZWN0ZWQoaXRlbSlcIiBbY2xhc3MuYWN0aXZlXT1cImkgPT09IGFjdGl2ZUluZGV4XCJcclxuICAgICAgIChtb3VzZWRvd24pPVwic2VsZWN0SXRlbShpdGVtKVwiIChtb3VzZW92ZXIpPVwib25Nb3VzZU92ZXIoaSlcIiAobW91c2VlbnRlcik9XCJvbkhvdmVyaW5nKCRldmVudClcIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyRpdGVtOml0ZW0sICRlbnRpdHk6IGl0ZW0uZW50aXR5LCAkaWQ6aXRlbS5pZCwgJGluZGV4Oml9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRlbXBsYXRlUmVmXCI+e3tpdGVtLnRleHR9fTwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXEtc2VsZWN0Mi1yZXN1bHRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nMi1pcS1zZWxlY3QyL3NyYy9saWIvaXEtc2VsZWN0Mi1yZXN1bHRzL2lxLXNlbGVjdDItcmVzdWx0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZzItaXEtc2VsZWN0Mi9zcmMvbGliL2lxLXNlbGVjdDItcmVzdWx0cy9pcS1zZWxlY3QyLXJlc3VsdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLFFBQVEsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBTzlDLE1BQU0sT0FBTyx5QkFBeUI7SUFpQnBDO1FBYlMsVUFBSyxHQUFvQixFQUFFLENBQUE7UUFPMUIsbUJBQWMsR0FBZ0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUzRSxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUVSLGNBQVMsR0FBRyxLQUFLLENBQUM7SUFHMUIsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQW1CO1FBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsRSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztTQUN0QjthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO1FBRUQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDMUM7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtRQUVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVwRSxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFLO1FBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELFVBQVUsQ0FBQyxXQUFXO1FBQ3BCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUVuQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoQyxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssV0FBVyxDQUFDLEVBQUUsRUFBRTtnQkFDOUIsTUFBTSxHQUFHLElBQUksQ0FBQzthQUNmO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN4RixPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzVGLENBQUM7OEdBekZVLHlCQUF5QjtrR0FBekIseUJBQXlCLHFiQ1R0Qyx5K0JBaUJBOzsyRkRSYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usb0JBQW9COzBFQU1OLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFFYixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0lxU2VsZWN0Mkl0ZW19IGZyb20gJy4uL2lxLXNlbGVjdDIvaXEtc2VsZWN0Mi1pdGVtJztcclxuaW1wb3J0IE1lc3NhZ2VzIGZyb20gXCIuLi9pcS1zZWxlY3QyL21lc3NhZ2VzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lxLXNlbGVjdDItcmVzdWx0cycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lxLXNlbGVjdDItcmVzdWx0cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaXEtc2VsZWN0Mi1yZXN1bHRzLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSXFTZWxlY3QyUmVzdWx0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lcjogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KCkgaXRlbXM6IElxU2VsZWN0Mkl0ZW1bXSA9IFtdXHJcbiAgQElucHV0KCkgbWF4UmVzdWx0czogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIG1lc3NhZ2VNb3JlUmVzdWx0czogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1lc3NhZ2VOb1Jlc3VsdHM6IHN0cmluZztcclxuICBASW5wdXQoKSByZXN1bHRzVmlzaWJsZTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1zOiBJcVNlbGVjdDJJdGVtW107XHJcbiAgQElucHV0KCkgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQE91dHB1dCgpIG9uSXRlbVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8SXFTZWxlY3QySXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGFjdGl2ZUluZGV4ID0gMDtcclxuXHJcbiAgcHJpdmF0ZSB1c2luZ0tleXMgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICB9XHJcblxyXG4gIHNlbGVjdEl0ZW0oaXRlbTogSXFTZWxlY3QySXRlbSkge1xyXG4gICAgdGhpcy5vbkl0ZW1TZWxlY3RlZC5lbWl0KGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlTmV4dCgpIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4ID49ICh0aGlzLm1heFJlc3VsdHMgPz8gdGhpcy5pdGVtcy5sZW5ndGgpIC0gMSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlSW5kZXgrKztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNjcm9sbFRvRWxlbWVudCgpO1xyXG4gICAgdGhpcy51c2luZ0tleXMgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlUHJldmlvdXMoKSB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVJbmRleCAtIDEgPCAwKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFjdGl2ZUluZGV4LS07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zY3JvbGxUb0VsZW1lbnQoKTtcclxuICAgIHRoaXMudXNpbmdLZXlzID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHNjcm9sbFRvRWxlbWVudCgpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbV8nICsgdGhpcy5hY3RpdmVJbmRleCk7XHJcblxyXG4gICAgaWYgKGVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSBlbGVtZW50Lm9mZnNldFRvcDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEN1cnJlbnRJdGVtKCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbXNbdGhpcy5hY3RpdmVJbmRleF0pIHtcclxuICAgICAgdGhpcy5zZWxlY3RJdGVtKHRoaXMuaXRlbXNbdGhpcy5hY3RpdmVJbmRleF0pO1xyXG4gICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTW91c2VPdmVyKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmICghdGhpcy51c2luZ0tleXMpIHtcclxuICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IGluZGV4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Ib3ZlcmluZyhldmVudCkge1xyXG4gICAgdGhpcy51c2luZ0tleXMgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzU2VsZWN0ZWQoY3VycmVudEl0ZW0pIHtcclxuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgaWYgKGl0ZW0uaWQgPT09IGN1cnJlbnRJdGVtLmlkKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIGdldENvdW50TWVzc2FnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZU1vcmVSZXN1bHRzLnJlcGxhY2UoTWVzc2FnZXMuVklTSUJMRV9DT1VOVF9WQVIsIFN0cmluZyh0aGlzLm1heFJlc3VsdHMpKVxyXG4gICAgICAucmVwbGFjZShNZXNzYWdlcy5NQVhfQ09VTlRfVkFSLCBTdHJpbmcodGhpcy5pdGVtcy5sZW5ndGggKyB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoKSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICNjb250YWluZXIgY2xhc3M9XCJzZWxlY3QyLWRyb3Bkb3duXCIgW2F0dHIuZGF0YS12aXNpYmxlXT1cInJlc3VsdHNWaXNpYmxlXCI+XHJcbiAgPGRpdiAqbmdJZj1cIm1heFJlc3VsdHMgJiYgaXRlbXMubGVuZ3RoICsgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiBtYXhSZXN1bHRzXCIgY2xhc3M9XCJzZWxlY3QyLW1lc3NhZ2VcIj5cclxuICAgIHt7Z2V0Q291bnRNZXNzYWdlKCl9fVxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwiaXRlbXMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJzZWxlY3QyLW1lc3NhZ2Ugbm8tcmVzdWx0c1wiPlxyXG4gICAge3ttZXNzYWdlTm9SZXN1bHRzfX1cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtcyB8IHNsaWNlIDogMCA6IG1heFJlc3VsdHM7IGxldCBpID0gaW5kZXg7XCIgaWQ9XCJpdGVtX3t7aX19XCIgW2F0dHIuZGF0YS1pdGVtLWlkXT1cIml0ZW0uaWRcIiBbdGl0bGVdPVwiaXRlbS50ZXh0XCJcclxuICAgICAgIGNsYXNzPVwic2VsZWN0Mi1kcm9wZG93bi1pdGVtXCIgW2NsYXNzLnNlbGVjdGVkXT1cImlzU2VsZWN0ZWQoaXRlbSlcIiBbY2xhc3MuYWN0aXZlXT1cImkgPT09IGFjdGl2ZUluZGV4XCJcclxuICAgICAgIChjbGljayk9XCJzZWxlY3RJdGVtKGl0ZW0pXCIgKG1vdXNlb3Zlcik9XCJvbk1vdXNlT3ZlcihpKVwiIChtb3VzZWVudGVyKT1cIm9uSG92ZXJpbmcoJGV2ZW50KVwiXHJcbiAgPlxyXG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGl0ZW06aXRlbSwgJGVudGl0eTogaXRlbS5lbnRpdHksICRpZDppdGVtLmlkLCAkaW5kZXg6aX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGVtcGxhdGVSZWZcIj57e2l0ZW0udGV4dH19PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -81,11 +81,11 @@ class IqSelect2ResultsComponent {
81
81
  .replace(Messages.MAX_COUNT_VAR, String(this.items.length + this.selectedItems.length));
82
82
  }
83
83
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: IqSelect2ResultsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
84
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: IqSelect2ResultsComponent, selector: "iq-select2-results", inputs: { items: "items", maxResults: "maxResults", messageMoreResults: "messageMoreResults", messageNoResults: "messageNoResults", resultsVisible: "resultsVisible", selectedItems: "selectedItems", templateRef: "templateRef" }, outputs: { onItemSelected: "onItemSelected" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div #container class=\"select2-dropdown\" [attr.data-visible]=\"resultsVisible\">\r\n <div *ngIf=\"maxResults && items.length + selectedItems.length > maxResults\" class=\"select2-message\">\r\n {{getCountMessage()}}\r\n </div>\r\n\r\n <div *ngIf=\"items.length === 0\" class=\"select2-message no-results\">\r\n {{messageNoResults}}\r\n </div>\r\n\r\n <div *ngFor=\"let item of items | slice : 0 : maxResults; let i = index;\" id=\"item_{{i}}\" [attr.data-item-id]=\"item.id\" [title]=\"item.text\"\r\n class=\"select2-dropdown-item\" [class.selected]=\"isSelected(item)\" [class.active]=\"i === activeIndex\"\r\n (mousedown)=\"selectItem(item)\" (mouseover)=\"onMouseOver(i)\" (mouseenter)=\"onHovering($event)\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"{$item:item, $entity: item.entity, $id:item.id, $index:i}\"></ng-container>\r\n <ng-container *ngIf=\"!templateRef\">{{item.text}}</ng-container>\r\n </div>\r\n</div>\r\n", styles: ["::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--select2-color-scrollbar-track)}::-webkit-scrollbar-thumb{background-color:var(--select2-color-scrollbar-thumb);border-radius:1em;border:transparent}.select2-dropdown{position:absolute;top:100%;width:100%;z-index:10;border:1px solid var(--select2-color-border);background-color:var(--select2-color-background);padding:.1em;max-height:20vh;overflow-x:hidden;overflow-y:auto}.select2-dropdown[data-visible=false]{display:none;visibility:hidden}.select2-message{width:100%;padding:.2em}.select2-dropdown-item{width:100%;padding:.2em;cursor:pointer;overflow-wrap:break-word;word-break:break-word}.selected{color:invert(var(--select2-color-item-text));background-color:var(--select2-color-list-selected)}.active{color:var(--select2-color-item-text);background-color:var(--select2-color-list-active)}\n"], dependencies: [{ 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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] }); }
84
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: IqSelect2ResultsComponent, selector: "iq-select2-results", inputs: { items: "items", maxResults: "maxResults", messageMoreResults: "messageMoreResults", messageNoResults: "messageNoResults", resultsVisible: "resultsVisible", selectedItems: "selectedItems", templateRef: "templateRef" }, outputs: { onItemSelected: "onItemSelected" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div #container class=\"select2-dropdown\" [attr.data-visible]=\"resultsVisible\">\r\n <div *ngIf=\"maxResults && items.length + selectedItems.length > maxResults\" class=\"select2-message\">\r\n {{getCountMessage()}}\r\n </div>\r\n\r\n <div *ngIf=\"items.length === 0\" class=\"select2-message no-results\">\r\n {{messageNoResults}}\r\n </div>\r\n\r\n <div *ngFor=\"let item of items | slice : 0 : maxResults; let i = index;\" id=\"item_{{i}}\" [attr.data-item-id]=\"item.id\" [title]=\"item.text\"\r\n class=\"select2-dropdown-item\" [class.selected]=\"isSelected(item)\" [class.active]=\"i === activeIndex\"\r\n (click)=\"selectItem(item)\" (mouseover)=\"onMouseOver(i)\" (mouseenter)=\"onHovering($event)\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"{$item:item, $entity: item.entity, $id:item.id, $index:i}\"></ng-container>\r\n <ng-container *ngIf=\"!templateRef\">{{item.text}}</ng-container>\r\n </div>\r\n</div>\r\n", styles: ["::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--select2-color-scrollbar-track)}::-webkit-scrollbar-thumb{background-color:var(--select2-color-scrollbar-thumb);border-radius:1em;border:transparent}.select2-dropdown{position:absolute;top:100%;width:100%;z-index:100;border:1px solid var(--select2-color-border);background-color:var(--select2-color-background);padding:.1em;max-height:20vh;overflow-x:hidden;overflow-y:auto}.select2-dropdown[data-visible=false]{display:none;visibility:hidden}.select2-message{width:100%;padding:.2em}.select2-dropdown-item{width:100%;padding:.2em;cursor:pointer;overflow-wrap:break-word;word-break:break-word}.selected{color:invert(var(--select2-color-item-text));background-color:var(--select2-color-list-selected)}.active{color:var(--select2-color-item-text);background-color:var(--select2-color-list-active)}\n"], dependencies: [{ 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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] }); }
85
85
  }
86
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: IqSelect2ResultsComponent, decorators: [{
87
87
  type: Component,
88
- args: [{ selector: 'iq-select2-results', template: "<div #container class=\"select2-dropdown\" [attr.data-visible]=\"resultsVisible\">\r\n <div *ngIf=\"maxResults && items.length + selectedItems.length > maxResults\" class=\"select2-message\">\r\n {{getCountMessage()}}\r\n </div>\r\n\r\n <div *ngIf=\"items.length === 0\" class=\"select2-message no-results\">\r\n {{messageNoResults}}\r\n </div>\r\n\r\n <div *ngFor=\"let item of items | slice : 0 : maxResults; let i = index;\" id=\"item_{{i}}\" [attr.data-item-id]=\"item.id\" [title]=\"item.text\"\r\n class=\"select2-dropdown-item\" [class.selected]=\"isSelected(item)\" [class.active]=\"i === activeIndex\"\r\n (mousedown)=\"selectItem(item)\" (mouseover)=\"onMouseOver(i)\" (mouseenter)=\"onHovering($event)\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"{$item:item, $entity: item.entity, $id:item.id, $index:i}\"></ng-container>\r\n <ng-container *ngIf=\"!templateRef\">{{item.text}}</ng-container>\r\n </div>\r\n</div>\r\n", styles: ["::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--select2-color-scrollbar-track)}::-webkit-scrollbar-thumb{background-color:var(--select2-color-scrollbar-thumb);border-radius:1em;border:transparent}.select2-dropdown{position:absolute;top:100%;width:100%;z-index:10;border:1px solid var(--select2-color-border);background-color:var(--select2-color-background);padding:.1em;max-height:20vh;overflow-x:hidden;overflow-y:auto}.select2-dropdown[data-visible=false]{display:none;visibility:hidden}.select2-message{width:100%;padding:.2em}.select2-dropdown-item{width:100%;padding:.2em;cursor:pointer;overflow-wrap:break-word;word-break:break-word}.selected{color:invert(var(--select2-color-item-text));background-color:var(--select2-color-list-selected)}.active{color:var(--select2-color-item-text);background-color:var(--select2-color-list-active)}\n"] }]
88
+ args: [{ selector: 'iq-select2-results', template: "<div #container class=\"select2-dropdown\" [attr.data-visible]=\"resultsVisible\">\r\n <div *ngIf=\"maxResults && items.length + selectedItems.length > maxResults\" class=\"select2-message\">\r\n {{getCountMessage()}}\r\n </div>\r\n\r\n <div *ngIf=\"items.length === 0\" class=\"select2-message no-results\">\r\n {{messageNoResults}}\r\n </div>\r\n\r\n <div *ngFor=\"let item of items | slice : 0 : maxResults; let i = index;\" id=\"item_{{i}}\" [attr.data-item-id]=\"item.id\" [title]=\"item.text\"\r\n class=\"select2-dropdown-item\" [class.selected]=\"isSelected(item)\" [class.active]=\"i === activeIndex\"\r\n (click)=\"selectItem(item)\" (mouseover)=\"onMouseOver(i)\" (mouseenter)=\"onHovering($event)\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"{$item:item, $entity: item.entity, $id:item.id, $index:i}\"></ng-container>\r\n <ng-container *ngIf=\"!templateRef\">{{item.text}}</ng-container>\r\n </div>\r\n</div>\r\n", styles: ["::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--select2-color-scrollbar-track)}::-webkit-scrollbar-thumb{background-color:var(--select2-color-scrollbar-thumb);border-radius:1em;border:transparent}.select2-dropdown{position:absolute;top:100%;width:100%;z-index:100;border:1px solid var(--select2-color-border);background-color:var(--select2-color-background);padding:.1em;max-height:20vh;overflow-x:hidden;overflow-y:auto}.select2-dropdown[data-visible=false]{display:none;visibility:hidden}.select2-message{width:100%;padding:.2em}.select2-dropdown-item{width:100%;padding:.2em;cursor:pointer;overflow-wrap:break-word;word-break:break-word}.selected{color:invert(var(--select2-color-item-text));background-color:var(--select2-color-list-selected)}.active{color:var(--select2-color-item-text);background-color:var(--select2-color-list-active)}\n"] }]
89
89
  }], ctorParameters: function () { return []; }, propDecorators: { container: [{
90
90
  type: ViewChild,
91
91
  args: ['container']
@@ -121,6 +121,8 @@ class IqSelect2Component {
121
121
  this.clientMode = false;
122
122
  this.badgeColor = 'info';
123
123
  this.wrapSelectedText = 'nowrap';
124
+ this.preventDeselect = false;
125
+ this.consecutiveMultipleSelection = true;
124
126
  this.debounceDelay = 250;
125
127
  this.debounceLength = 2;
126
128
  this.iconCaret = '&#9660;';
@@ -140,6 +142,12 @@ class IqSelect2Component {
140
142
  }
141
143
  ngAfterViewInit() {
142
144
  this.subscribeToChangesAndLoadDataFromObservable();
145
+ document.addEventListener("mousedown", event => {
146
+ if (!this.container.nativeElement.contains(event.target)) {
147
+ this.resultsVisible = false;
148
+ this.searchFocused = false;
149
+ }
150
+ });
143
151
  }
144
152
  writeValue(selectedValues) {
145
153
  if (selectedValues) {
@@ -265,10 +273,7 @@ class IqSelect2Component {
265
273
  }
266
274
  this.onChangeCallback(this.buildValue());
267
275
  this.term.patchValue('', { emitEvent: false });
268
- if (this.multiple) {
269
- setTimeout(() => this.focusAndShowResults(), 1);
270
- }
271
- else {
276
+ if (!this.multiple || !this.consecutiveMultipleSelection) {
272
277
  this.resultsVisible = false;
273
278
  this.placeholderSelected = item.text;
274
279
  this.termInput.nativeElement.blur();
@@ -310,8 +315,6 @@ class IqSelect2Component {
310
315
  }
311
316
  onBlur() {
312
317
  this.term.patchValue('', { emitEvent: false });
313
- this.searchFocused = false;
314
- this.resultsVisible = false;
315
318
  this.onTouchedCallback();
316
319
  }
317
320
  focus() {
@@ -379,11 +382,11 @@ class IqSelect2Component {
379
382
  return this.placeholder;
380
383
  }
381
384
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: IqSelect2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
382
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: IqSelect2Component, selector: "iq-select2", inputs: { dataSourceProvider: "dataSourceProvider", selectedProvider: "selectedProvider", iqSelect2ItemAdapter: "iqSelect2ItemAdapter", referenceMode: "referenceMode", multiple: "multiple", inputContainerClass: "inputContainerClass", placeholder: "placeholder", disabled: "disabled", maxResults: "maxResults", clientMode: "clientMode", badgeColor: "badgeColor", wrapSelectedText: "wrapSelectedText", debounceDelay: "debounceDelay", debounceLength: "debounceLength", iconCaret: "iconCaret", iconDelete: "iconDelete", messageMoreResults: "messageMoreResults", messageNoResults: "messageNoResults" }, outputs: { onSelect: "onSelect", onRemove: "onRemove" }, providers: [{
385
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: IqSelect2Component, selector: "iq-select2", inputs: { dataSourceProvider: "dataSourceProvider", selectedProvider: "selectedProvider", iqSelect2ItemAdapter: "iqSelect2ItemAdapter", referenceMode: "referenceMode", multiple: "multiple", inputContainerClass: "inputContainerClass", placeholder: "placeholder", disabled: "disabled", maxResults: "maxResults", clientMode: "clientMode", badgeColor: "badgeColor", wrapSelectedText: "wrapSelectedText", preventDeselect: "preventDeselect", consecutiveMultipleSelection: "consecutiveMultipleSelection", debounceDelay: "debounceDelay", debounceLength: "debounceLength", iconCaret: "iconCaret", iconDelete: "iconDelete", messageMoreResults: "messageMoreResults", messageNoResults: "messageNoResults" }, outputs: { onSelect: "onSelect", onRemove: "onRemove" }, providers: [{
383
386
  provide: NG_VALUE_ACCESSOR,
384
387
  useExisting: forwardRef(() => IqSelect2Component),
385
388
  multi: true
386
- }], viewQueries: [{ propertyName: "termInput", first: true, predicate: ["termInput"], descendants: true }, { propertyName: "results", first: true, predicate: ["results"], descendants: true }], ngImport: i0, template: "<div class=\"select2-container\">\r\n <div\r\n class=\"select2-inner-container\" [ngClass]=\"inputContainerClass ? inputContainerClass : ''\"\r\n [class.simple-selection]=\"!multiple\" [class.multiple-selection]=\"multiple\" [class.readonly]=\"disabled\"\r\n (click)=\"focusAndShowResults()\"\r\n >\r\n <ul class=\"select2-selection-container\">\r\n <ng-container *ngIf=\"!multiple; then input\"></ng-container>\r\n\r\n <li *ngFor=\"let item of selectedItems\" class=\"select2-selected\">\r\n <span class=\"select2-selected-item\" [ngStyle]=\"{whiteSpace: wrapSelectedText}\" [title]=\"item.text\">{{item.text}}</span>\r\n <button *ngIf=\"!disabled\" class=\"select2-icon\" aria-label=\"Close\" (click)=\"removeItem(item)\">\r\n <span class=\"select2-selection-remove\" [innerHTML]=\"iconDelete\"></span>\r\n </button>\r\n </li>\r\n\r\n\r\n <ng-container *ngIf=\"multiple; then input\"></ng-container>\r\n\r\n <ng-template #input>\r\n <li *ngIf=\"!disabled\" class=\"select2-input-container\">\r\n <input #termInput [formControl]=\"term\" type=\"text\" [placeholder]=\"getPlaceholder()\" autocomplete=\"off\"\r\n (focus)=\"onFocus()\" (blur)=\"onBlur()\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\"\r\n />\r\n </li>\r\n </ng-template>\r\n </ul>\r\n\r\n <div *ngIf=\"(multiple || (!multiple && selectedItems.length === 0))\" class=\"select2-icon\">\r\n <span class=\"select2-selection-caret\" [innerHTML]=\"iconCaret\"></span>\r\n </div>\r\n </div>\r\n\r\n <iq-select2-results *ngIf=\"!disabled\" #results [resultsVisible]=\"resultsVisible\"\r\n [items]=\"listData\" [selectedItems]=\"selectedItems\" [maxResults]=\"maxResults\"\r\n [messageMoreResults]=\"messageMoreResults\" [messageNoResults]=\"messageNoResults\"\r\n [templateRef]=\"templateRef\" (onItemSelected)=\"onItemSelected($event);\"\r\n >\r\n </iq-select2-results>\r\n</div>\r\n", styles: [".select2-container{position:relative;width:100%;--select2-color-background: hsl(0, 0%, 96%);--select2-color-border: hsl(0, 0%, 90%);--select2-color-disabled: hsl(220, 20%, 90%);--select2-color-focused-border: hsl(220, 100%, 80%);--select2-color-focused-shadow: hsla(220, 80%, 40%);--select2-color-scrollbar-track: hsl(0, 0%, 90%);--select2-color-scrollbar-thumb: hsl(220, 25%, 25%);--select2-color-item-text: hsl(0, 0%, 96%);--select2-color-item-background: hsl(200, 90%, 50%);--select2-color-list-active: hsl(200, 70%, 70%);--select2-color-list-selected: hsl(200, 70%, 50%)}.select2-inner-container{display:flex;flex-flow:row nowrap;align-items:baseline;justify-content:space-between;gap:.2em}.select2-inner-container:focus-within{color:invert(var(--select2-color-item-text));background-color:var(--select2-color-background);border-color:var(--select2-color-focused-border);outline:0;box-shadow:0 0 0 .1rem var(--select2-color-focused-shadow)}.simple-selection .select2-selection-container{display:grid;grid-auto-columns:100%;padding-right:.1em}.simple-selection .select2-selection-container>*{grid-area:1 / 1}.simple-selection:focus-within .select2-selected-item{opacity:0}.simple-selection .select2-selected{width:100%;padding:0}.multiple-selection .select2-selected{color:var(--select2-color-item-text);background-color:var(--select2-color-item-background);padding:.1em .4em;border-radius:.25em;max-width:100%}.select2-selection-container{width:100%;display:flex;flex-flow:row wrap;align-items:baseline;justify-content:flex-start;gap:.2em;overflow:hidden;list-style-type:none;padding:0;margin:0}.select2-selected{display:inline-flex;flex-flow:row nowrap;align-items:baseline;justify-content:space-between;gap:.2em;padding:.25em}.select2-input-container{flex-grow:1}.select2-input-container input{background-color:transparent;border:none;outline:none;padding:0;width:100%}.select2-icon{color:inherit;font-size:1em;width:1em;height:1em;z-index:5;display:grid;place-content:center}.select2-icon:is(button){background-color:transparent;border:0;outline:0}.select2-icon:is(button):focus{border:1px solid var(--select2-color-focused-border);border-radius:50%;box-shadow:0 0 0 .1rem var(--select2-color-focused-shadow)}:not(.readonly)>.select2-icon{cursor:pointer}.select2-selected-item{width:100%;overflow:hidden;text-overflow:ellipsis}.readonly{background-color:var(--select2-color-disabled);cursor:not-allowed}\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: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IqSelect2ResultsComponent, selector: "iq-select2-results", inputs: ["items", "maxResults", "messageMoreResults", "messageNoResults", "resultsVisible", "selectedItems", "templateRef"], outputs: ["onItemSelected"] }] }); }
389
+ }], viewQueries: [{ propertyName: "container", first: true, predicate: ["selectContainer"], descendants: true }, { propertyName: "termInput", first: true, predicate: ["termInput"], descendants: true }, { propertyName: "results", first: true, predicate: ["results"], descendants: true }], ngImport: i0, template: "<div #selectContainer class=\"select2-container\">\r\n <div\r\n class=\"select2-inner-container\" [ngClass]=\"inputContainerClass ? inputContainerClass : ''\"\r\n [class.simple-selection]=\"!multiple\" [class.multiple-selection]=\"multiple\" [class.readonly]=\"disabled\"\r\n (click)=\"focusAndShowResults()\"\r\n >\r\n <ul class=\"select2-selection-container\">\r\n <ng-container *ngIf=\"!multiple; then input\"></ng-container>\r\n\r\n <li *ngFor=\"let item of selectedItems\" class=\"select2-selected\">\r\n <span class=\"select2-selected-item\" [ngStyle]=\"{whiteSpace: wrapSelectedText}\" [title]=\"item.text\">{{item.text}}</span>\r\n <button *ngIf=\"!preventDeselect && !disabled\" class=\"select2-icon select2-remove-button\" aria-label=\"Close\" (click)=\"removeItem(item)\">\r\n <span class=\"select2-selection-remove\" [innerHTML]=\"iconDelete\"></span>\r\n </button>\r\n </li>\r\n\r\n <ng-container *ngIf=\"multiple; then input\"></ng-container>\r\n\r\n <ng-template #input>\r\n <li *ngIf=\"!disabled\" class=\"select2-input-container\">\r\n <input #termInput [formControl]=\"term\" type=\"text\" [placeholder]=\"getPlaceholder()\" autocomplete=\"off\"\r\n (focus)=\"onFocus()\" (blur)=\"onBlur()\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\"\r\n />\r\n </li>\r\n </ng-template>\r\n </ul>\r\n\r\n <div *ngIf=\"(multiple || (!multiple && selectedItems.length === 0))\" class=\"select2-icon\">\r\n <span class=\"select2-selection-caret\" [innerHTML]=\"iconCaret\"></span>\r\n </div>\r\n </div>\r\n\r\n <iq-select2-results *ngIf=\"!disabled\" #results [resultsVisible]=\"resultsVisible\"\r\n [items]=\"listData\" [selectedItems]=\"selectedItems\" [maxResults]=\"maxResults\"\r\n [messageMoreResults]=\"messageMoreResults\" [messageNoResults]=\"messageNoResults\"\r\n [templateRef]=\"templateRef\" (onItemSelected)=\"onItemSelected($event);\"\r\n >\r\n </iq-select2-results>\r\n</div>\r\n", styles: [".select2-container{position:relative;width:100%;--select2-color-background: hsl(0, 0%, 96%);--select2-color-border: hsl(0, 0%, 90%);--select2-color-disabled: hsl(220, 20%, 90%);--select2-color-focused-border: hsl(220, 100%, 80%);--select2-color-focused-shadow: hsla(220, 80%, 40%);--select2-color-scrollbar-track: hsl(0, 0%, 90%);--select2-color-scrollbar-thumb: hsl(220, 25%, 25%);--select2-color-item-text: hsl(0, 0%, 96%);--select2-color-item-background: hsl(200, 90%, 50%);--select2-color-list-active: hsl(200, 70%, 70%);--select2-color-list-selected: hsl(200, 70%, 50%)}.select2-inner-container{display:flex;flex-flow:row nowrap;align-items:baseline;justify-content:space-between;gap:.2em}.select2-inner-container:focus-within{color:invert(var(--select2-color-item-text));background-color:var(--select2-color-background);border-color:var(--select2-color-focused-border);outline:0;box-shadow:0 0 0 .1rem var(--select2-color-focused-shadow)}.simple-selection .select2-selection-container{display:grid;grid-auto-columns:100%;padding-right:.1em}.simple-selection .select2-selection-container>*{grid-area:1 / 1}.simple-selection:focus-within .select2-selected-item{opacity:0}.simple-selection .select2-selected{width:100%;padding:0}.multiple-selection .select2-selected{color:var(--select2-color-item-text);background-color:var(--select2-color-item-background);padding:.1em .4em;border-radius:.25em;max-width:100%}.select2-selection-container{width:100%;display:flex;flex-flow:row wrap;align-items:baseline;justify-content:flex-start;gap:.2em;overflow:hidden;list-style-type:none;padding:0;margin:0}.select2-selected{display:inline-flex;flex-flow:row nowrap;align-items:baseline;justify-content:space-between;gap:.2em;padding:.25em}.select2-input-container{flex-grow:1}.select2-input-container input{background-color:transparent;border:none;outline:none;padding:0;width:100%}.select2-icon{color:inherit;font-size:1em;width:1em;height:1em;z-index:10;display:grid;place-content:center}.select2-icon:is(button){background-color:transparent;border:0;outline:0}.select2-icon:is(button):focus{border:1px solid var(--select2-color-focused-border);border-radius:50%;box-shadow:0 0 0 .1rem var(--select2-color-focused-shadow)}:not(.readonly)>.select2-icon{cursor:pointer}.select2-selected-item{width:100%;overflow:hidden;text-overflow:ellipsis}.readonly{background-color:var(--select2-color-disabled);cursor:not-allowed}\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: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IqSelect2ResultsComponent, selector: "iq-select2-results", inputs: ["items", "maxResults", "messageMoreResults", "messageNoResults", "resultsVisible", "selectedItems", "templateRef"], outputs: ["onItemSelected"] }] }); }
387
390
  }
388
391
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: IqSelect2Component, decorators: [{
389
392
  type: Component,
@@ -391,7 +394,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImpor
391
394
  provide: NG_VALUE_ACCESSOR,
392
395
  useExisting: forwardRef(() => IqSelect2Component),
393
396
  multi: true
394
- }], template: "<div class=\"select2-container\">\r\n <div\r\n class=\"select2-inner-container\" [ngClass]=\"inputContainerClass ? inputContainerClass : ''\"\r\n [class.simple-selection]=\"!multiple\" [class.multiple-selection]=\"multiple\" [class.readonly]=\"disabled\"\r\n (click)=\"focusAndShowResults()\"\r\n >\r\n <ul class=\"select2-selection-container\">\r\n <ng-container *ngIf=\"!multiple; then input\"></ng-container>\r\n\r\n <li *ngFor=\"let item of selectedItems\" class=\"select2-selected\">\r\n <span class=\"select2-selected-item\" [ngStyle]=\"{whiteSpace: wrapSelectedText}\" [title]=\"item.text\">{{item.text}}</span>\r\n <button *ngIf=\"!disabled\" class=\"select2-icon\" aria-label=\"Close\" (click)=\"removeItem(item)\">\r\n <span class=\"select2-selection-remove\" [innerHTML]=\"iconDelete\"></span>\r\n </button>\r\n </li>\r\n\r\n\r\n <ng-container *ngIf=\"multiple; then input\"></ng-container>\r\n\r\n <ng-template #input>\r\n <li *ngIf=\"!disabled\" class=\"select2-input-container\">\r\n <input #termInput [formControl]=\"term\" type=\"text\" [placeholder]=\"getPlaceholder()\" autocomplete=\"off\"\r\n (focus)=\"onFocus()\" (blur)=\"onBlur()\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\"\r\n />\r\n </li>\r\n </ng-template>\r\n </ul>\r\n\r\n <div *ngIf=\"(multiple || (!multiple && selectedItems.length === 0))\" class=\"select2-icon\">\r\n <span class=\"select2-selection-caret\" [innerHTML]=\"iconCaret\"></span>\r\n </div>\r\n </div>\r\n\r\n <iq-select2-results *ngIf=\"!disabled\" #results [resultsVisible]=\"resultsVisible\"\r\n [items]=\"listData\" [selectedItems]=\"selectedItems\" [maxResults]=\"maxResults\"\r\n [messageMoreResults]=\"messageMoreResults\" [messageNoResults]=\"messageNoResults\"\r\n [templateRef]=\"templateRef\" (onItemSelected)=\"onItemSelected($event);\"\r\n >\r\n </iq-select2-results>\r\n</div>\r\n", styles: [".select2-container{position:relative;width:100%;--select2-color-background: hsl(0, 0%, 96%);--select2-color-border: hsl(0, 0%, 90%);--select2-color-disabled: hsl(220, 20%, 90%);--select2-color-focused-border: hsl(220, 100%, 80%);--select2-color-focused-shadow: hsla(220, 80%, 40%);--select2-color-scrollbar-track: hsl(0, 0%, 90%);--select2-color-scrollbar-thumb: hsl(220, 25%, 25%);--select2-color-item-text: hsl(0, 0%, 96%);--select2-color-item-background: hsl(200, 90%, 50%);--select2-color-list-active: hsl(200, 70%, 70%);--select2-color-list-selected: hsl(200, 70%, 50%)}.select2-inner-container{display:flex;flex-flow:row nowrap;align-items:baseline;justify-content:space-between;gap:.2em}.select2-inner-container:focus-within{color:invert(var(--select2-color-item-text));background-color:var(--select2-color-background);border-color:var(--select2-color-focused-border);outline:0;box-shadow:0 0 0 .1rem var(--select2-color-focused-shadow)}.simple-selection .select2-selection-container{display:grid;grid-auto-columns:100%;padding-right:.1em}.simple-selection .select2-selection-container>*{grid-area:1 / 1}.simple-selection:focus-within .select2-selected-item{opacity:0}.simple-selection .select2-selected{width:100%;padding:0}.multiple-selection .select2-selected{color:var(--select2-color-item-text);background-color:var(--select2-color-item-background);padding:.1em .4em;border-radius:.25em;max-width:100%}.select2-selection-container{width:100%;display:flex;flex-flow:row wrap;align-items:baseline;justify-content:flex-start;gap:.2em;overflow:hidden;list-style-type:none;padding:0;margin:0}.select2-selected{display:inline-flex;flex-flow:row nowrap;align-items:baseline;justify-content:space-between;gap:.2em;padding:.25em}.select2-input-container{flex-grow:1}.select2-input-container input{background-color:transparent;border:none;outline:none;padding:0;width:100%}.select2-icon{color:inherit;font-size:1em;width:1em;height:1em;z-index:5;display:grid;place-content:center}.select2-icon:is(button){background-color:transparent;border:0;outline:0}.select2-icon:is(button):focus{border:1px solid var(--select2-color-focused-border);border-radius:50%;box-shadow:0 0 0 .1rem var(--select2-color-focused-shadow)}:not(.readonly)>.select2-icon{cursor:pointer}.select2-selected-item{width:100%;overflow:hidden;text-overflow:ellipsis}.readonly{background-color:var(--select2-color-disabled);cursor:not-allowed}\n"] }]
397
+ }], template: "<div #selectContainer class=\"select2-container\">\r\n <div\r\n class=\"select2-inner-container\" [ngClass]=\"inputContainerClass ? inputContainerClass : ''\"\r\n [class.simple-selection]=\"!multiple\" [class.multiple-selection]=\"multiple\" [class.readonly]=\"disabled\"\r\n (click)=\"focusAndShowResults()\"\r\n >\r\n <ul class=\"select2-selection-container\">\r\n <ng-container *ngIf=\"!multiple; then input\"></ng-container>\r\n\r\n <li *ngFor=\"let item of selectedItems\" class=\"select2-selected\">\r\n <span class=\"select2-selected-item\" [ngStyle]=\"{whiteSpace: wrapSelectedText}\" [title]=\"item.text\">{{item.text}}</span>\r\n <button *ngIf=\"!preventDeselect && !disabled\" class=\"select2-icon select2-remove-button\" aria-label=\"Close\" (click)=\"removeItem(item)\">\r\n <span class=\"select2-selection-remove\" [innerHTML]=\"iconDelete\"></span>\r\n </button>\r\n </li>\r\n\r\n <ng-container *ngIf=\"multiple; then input\"></ng-container>\r\n\r\n <ng-template #input>\r\n <li *ngIf=\"!disabled\" class=\"select2-input-container\">\r\n <input #termInput [formControl]=\"term\" type=\"text\" [placeholder]=\"getPlaceholder()\" autocomplete=\"off\"\r\n (focus)=\"onFocus()\" (blur)=\"onBlur()\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\"\r\n />\r\n </li>\r\n </ng-template>\r\n </ul>\r\n\r\n <div *ngIf=\"(multiple || (!multiple && selectedItems.length === 0))\" class=\"select2-icon\">\r\n <span class=\"select2-selection-caret\" [innerHTML]=\"iconCaret\"></span>\r\n </div>\r\n </div>\r\n\r\n <iq-select2-results *ngIf=\"!disabled\" #results [resultsVisible]=\"resultsVisible\"\r\n [items]=\"listData\" [selectedItems]=\"selectedItems\" [maxResults]=\"maxResults\"\r\n [messageMoreResults]=\"messageMoreResults\" [messageNoResults]=\"messageNoResults\"\r\n [templateRef]=\"templateRef\" (onItemSelected)=\"onItemSelected($event);\"\r\n >\r\n </iq-select2-results>\r\n</div>\r\n", styles: [".select2-container{position:relative;width:100%;--select2-color-background: hsl(0, 0%, 96%);--select2-color-border: hsl(0, 0%, 90%);--select2-color-disabled: hsl(220, 20%, 90%);--select2-color-focused-border: hsl(220, 100%, 80%);--select2-color-focused-shadow: hsla(220, 80%, 40%);--select2-color-scrollbar-track: hsl(0, 0%, 90%);--select2-color-scrollbar-thumb: hsl(220, 25%, 25%);--select2-color-item-text: hsl(0, 0%, 96%);--select2-color-item-background: hsl(200, 90%, 50%);--select2-color-list-active: hsl(200, 70%, 70%);--select2-color-list-selected: hsl(200, 70%, 50%)}.select2-inner-container{display:flex;flex-flow:row nowrap;align-items:baseline;justify-content:space-between;gap:.2em}.select2-inner-container:focus-within{color:invert(var(--select2-color-item-text));background-color:var(--select2-color-background);border-color:var(--select2-color-focused-border);outline:0;box-shadow:0 0 0 .1rem var(--select2-color-focused-shadow)}.simple-selection .select2-selection-container{display:grid;grid-auto-columns:100%;padding-right:.1em}.simple-selection .select2-selection-container>*{grid-area:1 / 1}.simple-selection:focus-within .select2-selected-item{opacity:0}.simple-selection .select2-selected{width:100%;padding:0}.multiple-selection .select2-selected{color:var(--select2-color-item-text);background-color:var(--select2-color-item-background);padding:.1em .4em;border-radius:.25em;max-width:100%}.select2-selection-container{width:100%;display:flex;flex-flow:row wrap;align-items:baseline;justify-content:flex-start;gap:.2em;overflow:hidden;list-style-type:none;padding:0;margin:0}.select2-selected{display:inline-flex;flex-flow:row nowrap;align-items:baseline;justify-content:space-between;gap:.2em;padding:.25em}.select2-input-container{flex-grow:1}.select2-input-container input{background-color:transparent;border:none;outline:none;padding:0;width:100%}.select2-icon{color:inherit;font-size:1em;width:1em;height:1em;z-index:10;display:grid;place-content:center}.select2-icon:is(button){background-color:transparent;border:0;outline:0}.select2-icon:is(button):focus{border:1px solid var(--select2-color-focused-border);border-radius:50%;box-shadow:0 0 0 .1rem var(--select2-color-focused-shadow)}:not(.readonly)>.select2-icon{cursor:pointer}.select2-selected-item{width:100%;overflow:hidden;text-overflow:ellipsis}.readonly{background-color:var(--select2-color-disabled);cursor:not-allowed}\n"] }]
395
398
  }], ctorParameters: function () { return []; }, propDecorators: { dataSourceProvider: [{
396
399
  type: Input
397
400
  }], selectedProvider: [{
@@ -416,6 +419,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImpor
416
419
  type: Input
417
420
  }], wrapSelectedText: [{
418
421
  type: Input
422
+ }], preventDeselect: [{
423
+ type: Input
424
+ }], consecutiveMultipleSelection: [{
425
+ type: Input
419
426
  }], debounceDelay: [{
420
427
  type: Input
421
428
  }], debounceLength: [{
@@ -432,6 +439,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImpor
432
439
  type: Output
433
440
  }], onRemove: [{
434
441
  type: Output
442
+ }], container: [{
443
+ type: ViewChild,
444
+ args: ['selectContainer']
435
445
  }], termInput: [{
436
446
  type: ViewChild,
437
447
  args: ['termInput']
@@ -1 +1 @@
1
- {"version":3,"file":"ng2-iq-select2-exe.mjs","sources":["../../../projects/ng2-iq-select2/src/lib/iq-select2/messages.ts","../../../projects/ng2-iq-select2/src/lib/iq-select2-results/iq-select2-results.component.ts","../../../projects/ng2-iq-select2/src/lib/iq-select2-results/iq-select2-results.component.html","../../../projects/ng2-iq-select2/src/lib/iq-select2/iq-select2.component.ts","../../../projects/ng2-iq-select2/src/lib/iq-select2/iq-select2.component.html","../../../projects/ng2-iq-select2/src/lib/iq-select2-template/iq-select2-template.directive.ts","../../../projects/ng2-iq-select2/src/lib/iq-select2.module.ts","../../../projects/ng2-iq-select2/src/public_api.ts","../../../projects/ng2-iq-select2/src/ng2-iq-select2-exe.ts"],"sourcesContent":["export default class Messages {\r\n\r\n static readonly VISIBLE_COUNT_VAR = '%VISIBLE_COUNT%';\r\n static readonly MAX_COUNT_VAR = '%MAX_COUNT%';\r\n\r\n static readonly MORE_RESULTS = 'Showing ' + this.VISIBLE_COUNT_VAR + ' of ' + this.MAX_COUNT_VAR + ' results. Refine your search to show more results.';\r\n static readonly NO_RESULTS = 'No results available'\r\n\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild} from '@angular/core';\r\nimport {IqSelect2Item} from '../iq-select2/iq-select2-item';\r\nimport Messages from \"../iq-select2/messages\";\r\n\r\n@Component({\r\n selector: 'iq-select2-results',\r\n templateUrl: './iq-select2-results.component.html',\r\n styleUrls: ['./iq-select2-results.component.css']\r\n})\r\nexport class IqSelect2ResultsComponent implements OnInit {\r\n\r\n @ViewChild('container') container: ElementRef;\r\n\r\n @Input() items: IqSelect2Item[] = []\r\n @Input() maxResults: number;\r\n @Input() messageMoreResults: string;\r\n @Input() messageNoResults: string;\r\n @Input() resultsVisible: boolean;\r\n @Input() selectedItems: IqSelect2Item[];\r\n @Input() templateRef: TemplateRef<any>;\r\n @Output() onItemSelected: EventEmitter<IqSelect2Item> = new EventEmitter();\r\n\r\n activeIndex = 0;\r\n\r\n private usingKeys = false;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n selectItem(item: IqSelect2Item) {\r\n this.onItemSelected.emit(item);\r\n }\r\n\r\n activeNext() {\r\n if (this.activeIndex >= (this.maxResults ?? this.items.length) - 1) {\r\n this.activeIndex = 0;\r\n } else {\r\n this.activeIndex++;\r\n }\r\n\r\n this.scrollToElement();\r\n this.usingKeys = true;\r\n }\r\n\r\n activePrevious() {\r\n if (this.activeIndex - 1 < 0) {\r\n this.activeIndex = this.items.length - 1;\r\n } else {\r\n this.activeIndex--;\r\n }\r\n\r\n this.scrollToElement();\r\n this.usingKeys = true;\r\n }\r\n\r\n scrollToElement() {\r\n const element = document.getElementById('item_' + this.activeIndex);\r\n\r\n if (element) {\r\n this.container.nativeElement.scrollTop = element.offsetTop;\r\n }\r\n }\r\n\r\n selectCurrentItem() {\r\n if (this.items[this.activeIndex]) {\r\n this.selectItem(this.items[this.activeIndex]);\r\n this.activeIndex = 0;\r\n }\r\n }\r\n\r\n onMouseOver(index: number) {\r\n if (!this.usingKeys) {\r\n this.activeIndex = index;\r\n }\r\n }\r\n\r\n onHovering(event) {\r\n this.usingKeys = false;\r\n }\r\n\r\n isSelected(currentItem) {\r\n let result = false;\r\n\r\n this.selectedItems.forEach(item => {\r\n if (item.id === currentItem.id) {\r\n result = true;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n getCountMessage(): string {\r\n return this.messageMoreResults.replace(Messages.VISIBLE_COUNT_VAR, String(this.maxResults))\r\n .replace(Messages.MAX_COUNT_VAR, String(this.items.length + this.selectedItems.length));\r\n }\r\n\r\n}\r\n","<div #container class=\"select2-dropdown\" [attr.data-visible]=\"resultsVisible\">\r\n <div *ngIf=\"maxResults && items.length + selectedItems.length > maxResults\" class=\"select2-message\">\r\n {{getCountMessage()}}\r\n </div>\r\n\r\n <div *ngIf=\"items.length === 0\" class=\"select2-message no-results\">\r\n {{messageNoResults}}\r\n </div>\r\n\r\n <div *ngFor=\"let item of items | slice : 0 : maxResults; let i = index;\" id=\"item_{{i}}\" [attr.data-item-id]=\"item.id\" [title]=\"item.text\"\r\n class=\"select2-dropdown-item\" [class.selected]=\"isSelected(item)\" [class.active]=\"i === activeIndex\"\r\n (mousedown)=\"selectItem(item)\" (mouseover)=\"onMouseOver(i)\" (mouseenter)=\"onHovering($event)\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"{$item:item, $entity: item.entity, $id:item.id, $index:i}\"></ng-container>\r\n <ng-container *ngIf=\"!templateRef\">{{item.text}}</ng-container>\r\n </div>\r\n</div>\r\n","import {AfterViewInit, Component, ElementRef, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewChild} from '@angular/core';\r\nimport {IqSelect2Item} from './iq-select2-item';\r\nimport {IqSelect2ResultsComponent} from '../iq-select2-results/iq-select2-results.component';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR, UntypedFormControl} from '@angular/forms';\r\nimport {Observable, of} from 'rxjs';\r\nimport {debounceTime, distinctUntilChanged, filter, map, mergeMap, switchMap, tap} from 'rxjs/operators';\r\nimport Messages from \"./messages\";\r\n\r\nconst KEY_CODE_DOWN_ARROW = 'ArrowDown';\r\nconst KEY_CODE_UP_ARROW = 'ArrowUp';\r\nconst KEY_CODE_ENTER = 'Enter';\r\nconst KEY_CODE_ESCAPE = 'Escape';\r\nconst KEY_CODE_DELETE = 'Delete';\r\n\r\n@Component({\r\n selector: 'iq-select2',\r\n templateUrl: './iq-select2.component.html',\r\n styleUrls: ['./iq-select2.component.css'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => IqSelect2Component),\r\n multi: true\r\n }]\r\n})\r\nexport class IqSelect2Component implements AfterViewInit, ControlValueAccessor {\r\n\r\n @Input() dataSourceProvider: (term: string, selected?: any[]) => Observable<any[]>;\r\n @Input() selectedProvider: (ids: string[]) => Observable<any[]>;\r\n @Input() iqSelect2ItemAdapter: (entity: any) => IqSelect2Item;\r\n\r\n @Input() referenceMode: 'id' | 'entity' = 'id';\r\n @Input() multiple = false;\r\n @Input() inputContainerClass: string;\r\n @Input() placeholder = '';\r\n @Input() disabled = false;\r\n @Input() maxResults: number;\r\n @Input() clientMode = false;\r\n @Input() badgeColor = 'info';\r\n @Input() wrapSelectedText = 'nowrap'\r\n\r\n @Input() debounceDelay = 250\r\n @Input() debounceLength = 2\r\n @Input() iconCaret = '&#9660;'\r\n @Input() iconDelete = '&#215;'\r\n @Input() messageMoreResults: string = Messages.MORE_RESULTS;\r\n @Input() messageNoResults: string = Messages.NO_RESULTS;\r\n\r\n @Output() onSelect: EventEmitter<IqSelect2Item> = new EventEmitter<IqSelect2Item>();\r\n @Output() onRemove: EventEmitter<IqSelect2Item> = new EventEmitter<IqSelect2Item>();\r\n\r\n @ViewChild('termInput') termInput: ElementRef\r\n @ViewChild('results') results: IqSelect2ResultsComponent;\r\n\r\n templateRef: TemplateRef<any>;\r\n term = new UntypedFormControl();\r\n resultsVisible = false;\r\n searchFocused = false;\r\n listData: IqSelect2Item[] = []\r\n fullDataList: IqSelect2Item[];\r\n selectedItems: IqSelect2Item[] = [];\r\n private placeholderSelected = '';\r\n\r\n onTouchedCallback: () => void = () => false\r\n onChangeCallback: (_: any) => void = () => false;\r\n\r\n constructor() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.subscribeToChangesAndLoadDataFromObservable();\r\n }\r\n\r\n writeValue(selectedValues: any): void {\r\n if (selectedValues) {\r\n if (this.referenceMode === 'id') {\r\n this.populateItemsFromIds(selectedValues);\r\n } else {\r\n this.populateItemsFromEntities(selectedValues);\r\n }\r\n } else {\r\n this.placeholderSelected = '';\r\n this.selectedItems = [];\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n private subscribeToChangesAndLoadDataFromObservable() {\r\n this.subscribeToResults(this.term.valueChanges.pipe(debounceTime(this.debounceDelay), distinctUntilChanged()));\r\n }\r\n\r\n private subscribeToResults(observable: Observable<string>): void {\r\n observable.pipe(\r\n tap(() => this.resultsVisible = false),\r\n filter((term) => term.length >= this.debounceLength),\r\n switchMap(term => this.loadDataFromObservable(term)),\r\n map(items => items.filter(item => !(this.multiple && this.alreadySelected(item)))),\r\n tap(() => this.resultsVisible = this.searchFocused)\r\n ).subscribe((items) => this.listData = items);\r\n }\r\n\r\n private loadDataFromObservable(term: string): Observable<IqSelect2Item[]> {\r\n return this.clientMode ? this.fetchAndFilterLocalData(term) : this.fetchData(term);\r\n }\r\n\r\n private fetchAndFilterLocalData(term: string): Observable<IqSelect2Item[]> {\r\n if (!this.fullDataList) {\r\n return this.fetchData('').pipe(\r\n mergeMap((items) => {\r\n this.fullDataList = items;\r\n return this.filterLocalData(term);\r\n })\r\n );\r\n } else {\r\n return this.filterLocalData(term);\r\n }\r\n }\r\n\r\n private filterLocalData(term: string): Observable<IqSelect2Item[]> {\r\n return of(this.fullDataList.filter(item => item.text.toLowerCase().includes(term.toLowerCase())));\r\n }\r\n\r\n private fetchData(term: string): Observable<IqSelect2Item[]> {\r\n return this.dataSourceProvider(term, this.buildValue()).pipe(map((items: any[]) => items.map((item) => this.iqSelect2ItemAdapter(item))));\r\n }\r\n\r\n private populateItemsFromEntities(selectedValues: any) {\r\n if (this.multiple) {\r\n this.handleMultipleWithEntities(selectedValues);\r\n } else {\r\n const iqSelect2Item = this.iqSelect2ItemAdapter(selectedValues);\r\n this.selectedItems = [iqSelect2Item];\r\n this.placeholderSelected = iqSelect2Item.text;\r\n }\r\n }\r\n\r\n private handleMultipleWithEntities(selectedValues: any) {\r\n this.selectedItems = [];\r\n\r\n selectedValues.forEach((entity) => {\r\n const item = this.iqSelect2ItemAdapter(entity);\r\n const ids = this.getSelectedIds();\r\n\r\n if (ids.indexOf(item.id) === -1) {\r\n this.selectedItems.push(item);\r\n }\r\n });\r\n }\r\n\r\n private populateItemsFromIds(selectedValues: any) {\r\n if (this.multiple) {\r\n this.handleMultipleWithIds(selectedValues);\r\n } else {\r\n this.handleSingleWithId(selectedValues);\r\n }\r\n }\r\n\r\n private handleMultipleWithIds(selectedValues: any) {\r\n if (selectedValues !== undefined && this.selectedProvider !== undefined) {\r\n const uniqueIds = [];\r\n selectedValues.forEach((id) => {\r\n if (uniqueIds.indexOf(id) === -1) {\r\n uniqueIds.push(id);\r\n }\r\n });\r\n\r\n this.selectedProvider(uniqueIds).subscribe((items: any[]) => {\r\n this.selectedItems = items.map(this.iqSelect2ItemAdapter);\r\n });\r\n }\r\n }\r\n\r\n private handleSingleWithId(id: any) {\r\n if (id !== undefined && this.selectedProvider !== undefined) {\r\n this.selectedProvider([id]).subscribe((items: any[]) => {\r\n items.forEach((item) => {\r\n const iqSelect2Item = this.iqSelect2ItemAdapter(item);\r\n this.selectedItems = [iqSelect2Item];\r\n this.placeholderSelected = iqSelect2Item.text;\r\n });\r\n });\r\n }\r\n }\r\n\r\n private alreadySelected(item: IqSelect2Item): boolean {\r\n let result = false;\r\n\r\n this.selectedItems.forEach(selectedItem => {\r\n if (selectedItem.id === item.id) {\r\n result = true;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n onItemSelected(item: IqSelect2Item) {\r\n if (this.multiple) {\r\n this.selectedItems.push(item);\r\n const index = this.listData.indexOf(item, 0);\r\n if (index > -1) {\r\n this.listData.splice(index, 1);\r\n }\r\n } else {\r\n this.selectedItems.length = 0;\r\n this.selectedItems.push(item);\r\n }\r\n\r\n this.onChangeCallback(this.buildValue());\r\n this.term.patchValue('', {emitEvent: false});\r\n\r\n if (this.multiple) {\r\n setTimeout(() => this.focusAndShowResults(), 1);\r\n } else {\r\n this.resultsVisible = false;\r\n this.placeholderSelected = item.text;\r\n this.termInput.nativeElement.blur()\r\n }\r\n\r\n this.onSelect.emit(item);\r\n }\r\n\r\n private getSelectedIds(): any {\r\n if (this.multiple) {\r\n return this.selectedItems.map(item => item.id)\r\n } else {\r\n return this.selectedItems.length === 0 ? null : this.selectedItems[0].id;\r\n }\r\n }\r\n\r\n private getEntities(): any[] {\r\n if (this.multiple) {\r\n return this.selectedItems.map(item => item.entity)\r\n } else {\r\n return this.selectedItems.length === 0 ? null : this.selectedItems[0].entity;\r\n }\r\n }\r\n\r\n removeItem(item: IqSelect2Item) {\r\n const index = this.selectedItems.indexOf(item, 0);\r\n\r\n if (index > -1) {\r\n this.selectedItems.splice(index, 1);\r\n }\r\n\r\n this.onChangeCallback(this.buildValue());\r\n this.onRemove.emit(item);\r\n\r\n if (!this.multiple) {\r\n this.placeholderSelected = '';\r\n }\r\n }\r\n\r\n private buildValue() {\r\n return 'id' === this.referenceMode ? this.getSelectedIds() : this.getEntities();\r\n }\r\n\r\n onFocus() {\r\n this.searchFocused = true\r\n }\r\n\r\n onBlur() {\r\n this.term.patchValue('', {emitEvent: false});\r\n this.searchFocused = false;\r\n this.resultsVisible = false;\r\n this.onTouchedCallback();\r\n }\r\n\r\n focus() {\r\n if (!this.disabled) {\r\n this.termInput.nativeElement.focus();\r\n this.resultsVisible = false;\r\n }\r\n\r\n this.searchFocused = !this.disabled;\r\n }\r\n\r\n focusAndShowResults() {\r\n if (!this.disabled) {\r\n this.termInput.nativeElement.focus();\r\n this.subscribeToResults(of(''));\r\n }\r\n\r\n this.searchFocused = !this.disabled;\r\n }\r\n\r\n onKeyUp(event: KeyboardEvent) {\r\n if (this.results) {\r\n if (event.key === KEY_CODE_ENTER) {\r\n this.results.selectCurrentItem();\r\n }\r\n } else {\r\n if (this.debounceLength === 0) {\r\n if (event.key === KEY_CODE_ENTER || event.key === KEY_CODE_DOWN_ARROW) {\r\n this.focusAndShowResults();\r\n }\r\n }\r\n }\r\n }\r\n\r\n onKeyDown(event: KeyboardEvent) {\r\n if (event.key === KEY_CODE_ENTER) {\r\n event.preventDefault();\r\n }\r\n\r\n if (!this.resultsVisible && event.key.includes('Arrow')) {\r\n this.resultsVisible = true\r\n }\r\n\r\n if (event.key === KEY_CODE_ESCAPE) {\r\n this.resultsVisible = false\r\n }\r\n\r\n if (event.key === KEY_CODE_DELETE) {\r\n const textEntered = !this.term.value || this.term.value.length === 0;\r\n if (textEntered && this.selectedItems.length > 0) {\r\n this.removeItem(this.selectedItems[this.selectedItems.length - 1]);\r\n }\r\n }\r\n\r\n if (this.results) {\r\n if (event.key === KEY_CODE_DOWN_ARROW) {\r\n this.results.activeNext();\r\n } else if (event.key === KEY_CODE_UP_ARROW) {\r\n this.results.activePrevious();\r\n }\r\n }\r\n }\r\n\r\n getPlaceholder(): string {\r\n if (this.selectedItems.length > 0) {\r\n if (!this.multiple && !this.searchFocused) {\r\n return ''\r\n } else {\r\n return this.placeholderSelected\r\n }\r\n }\r\n\r\n return this.placeholder\r\n }\r\n\r\n}\r\n","<div class=\"select2-container\">\r\n <div\r\n class=\"select2-inner-container\" [ngClass]=\"inputContainerClass ? inputContainerClass : ''\"\r\n [class.simple-selection]=\"!multiple\" [class.multiple-selection]=\"multiple\" [class.readonly]=\"disabled\"\r\n (click)=\"focusAndShowResults()\"\r\n >\r\n <ul class=\"select2-selection-container\">\r\n <ng-container *ngIf=\"!multiple; then input\"></ng-container>\r\n\r\n <li *ngFor=\"let item of selectedItems\" class=\"select2-selected\">\r\n <span class=\"select2-selected-item\" [ngStyle]=\"{whiteSpace: wrapSelectedText}\" [title]=\"item.text\">{{item.text}}</span>\r\n <button *ngIf=\"!disabled\" class=\"select2-icon\" aria-label=\"Close\" (click)=\"removeItem(item)\">\r\n <span class=\"select2-selection-remove\" [innerHTML]=\"iconDelete\"></span>\r\n </button>\r\n </li>\r\n\r\n\r\n <ng-container *ngIf=\"multiple; then input\"></ng-container>\r\n\r\n <ng-template #input>\r\n <li *ngIf=\"!disabled\" class=\"select2-input-container\">\r\n <input #termInput [formControl]=\"term\" type=\"text\" [placeholder]=\"getPlaceholder()\" autocomplete=\"off\"\r\n (focus)=\"onFocus()\" (blur)=\"onBlur()\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\"\r\n />\r\n </li>\r\n </ng-template>\r\n </ul>\r\n\r\n <div *ngIf=\"(multiple || (!multiple && selectedItems.length === 0))\" class=\"select2-icon\">\r\n <span class=\"select2-selection-caret\" [innerHTML]=\"iconCaret\"></span>\r\n </div>\r\n </div>\r\n\r\n <iq-select2-results *ngIf=\"!disabled\" #results [resultsVisible]=\"resultsVisible\"\r\n [items]=\"listData\" [selectedItems]=\"selectedItems\" [maxResults]=\"maxResults\"\r\n [messageMoreResults]=\"messageMoreResults\" [messageNoResults]=\"messageNoResults\"\r\n [templateRef]=\"templateRef\" (onItemSelected)=\"onItemSelected($event);\"\r\n >\r\n </iq-select2-results>\r\n</div>\r\n","/**\r\n * @author:msms\r\n * 11-Jun-17\r\n */\r\nimport {Directive, Host, TemplateRef} from '@angular/core';\r\nimport {IqSelect2Component} from '../iq-select2/iq-select2.component';\r\n\r\n@Directive({selector: '[iq-select2-template]'})\r\nexport class IqSelect2TemplateDirective<T> {\r\n constructor(private templateRef: TemplateRef<T>, @Host() host: IqSelect2Component) {\r\n if (host instanceof IqSelect2Component) {\r\n host.templateRef = templateRef;\r\n }\r\n }\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {IqSelect2Component} from './iq-select2/iq-select2.component';\r\nimport {IqSelect2TemplateDirective} from './iq-select2-template/iq-select2-template.directive';\r\nimport {IqSelect2ResultsComponent} from './iq-select2-results/iq-select2-results.component';\r\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\r\nimport {HttpClientModule} from '@angular/common/http';\r\nimport {CommonModule} from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule,\r\n ReactiveFormsModule\r\n ],\r\n declarations: [\r\n IqSelect2Component,\r\n IqSelect2ResultsComponent,\r\n IqSelect2TemplateDirective\r\n ],\r\n exports: [\r\n IqSelect2Component,\r\n IqSelect2ResultsComponent,\r\n IqSelect2TemplateDirective\r\n ]\r\n})\r\nexport class IqSelect2Module { }\r\n","/*\r\n * Public API Surface of ng2-iq-select2\r\n */\r\n\r\nexport * from './lib/iq-select2.module';\r\nexport * from './lib/iq-select2/iq-select2.component';\r\nexport * from './lib/iq-select2/iq-select2-item';\r\nexport * from './lib/iq-select2-results/iq-select2-results.component';\r\nexport * from './lib/iq-select2-template/iq-select2-template.directive';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3.IqSelect2ResultsComponent","i1.IqSelect2Component"],"mappings":"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"}
1
+ {"version":3,"file":"ng2-iq-select2-exe.mjs","sources":["../../../projects/ng2-iq-select2/src/lib/iq-select2/messages.ts","../../../projects/ng2-iq-select2/src/lib/iq-select2-results/iq-select2-results.component.ts","../../../projects/ng2-iq-select2/src/lib/iq-select2-results/iq-select2-results.component.html","../../../projects/ng2-iq-select2/src/lib/iq-select2/iq-select2.component.ts","../../../projects/ng2-iq-select2/src/lib/iq-select2/iq-select2.component.html","../../../projects/ng2-iq-select2/src/lib/iq-select2-template/iq-select2-template.directive.ts","../../../projects/ng2-iq-select2/src/lib/iq-select2.module.ts","../../../projects/ng2-iq-select2/src/public_api.ts","../../../projects/ng2-iq-select2/src/ng2-iq-select2-exe.ts"],"sourcesContent":["export default class Messages {\r\n\r\n static readonly VISIBLE_COUNT_VAR = '%VISIBLE_COUNT%';\r\n static readonly MAX_COUNT_VAR = '%MAX_COUNT%';\r\n\r\n static readonly MORE_RESULTS = 'Showing ' + this.VISIBLE_COUNT_VAR + ' of ' + this.MAX_COUNT_VAR + ' results. Refine your search to show more results.';\r\n static readonly NO_RESULTS = 'No results available'\r\n\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild} from '@angular/core';\r\nimport {IqSelect2Item} from '../iq-select2/iq-select2-item';\r\nimport Messages from \"../iq-select2/messages\";\r\n\r\n@Component({\r\n selector: 'iq-select2-results',\r\n templateUrl: './iq-select2-results.component.html',\r\n styleUrls: ['./iq-select2-results.component.css']\r\n})\r\nexport class IqSelect2ResultsComponent implements OnInit {\r\n\r\n @ViewChild('container') container: ElementRef;\r\n\r\n @Input() items: IqSelect2Item[] = []\r\n @Input() maxResults: number;\r\n @Input() messageMoreResults: string;\r\n @Input() messageNoResults: string;\r\n @Input() resultsVisible: boolean;\r\n @Input() selectedItems: IqSelect2Item[];\r\n @Input() templateRef: TemplateRef<any>;\r\n @Output() onItemSelected: EventEmitter<IqSelect2Item> = new EventEmitter();\r\n\r\n activeIndex = 0;\r\n\r\n private usingKeys = false;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n selectItem(item: IqSelect2Item) {\r\n this.onItemSelected.emit(item);\r\n }\r\n\r\n activeNext() {\r\n if (this.activeIndex >= (this.maxResults ?? this.items.length) - 1) {\r\n this.activeIndex = 0;\r\n } else {\r\n this.activeIndex++;\r\n }\r\n\r\n this.scrollToElement();\r\n this.usingKeys = true;\r\n }\r\n\r\n activePrevious() {\r\n if (this.activeIndex - 1 < 0) {\r\n this.activeIndex = this.items.length - 1;\r\n } else {\r\n this.activeIndex--;\r\n }\r\n\r\n this.scrollToElement();\r\n this.usingKeys = true;\r\n }\r\n\r\n scrollToElement() {\r\n const element = document.getElementById('item_' + this.activeIndex);\r\n\r\n if (element) {\r\n this.container.nativeElement.scrollTop = element.offsetTop;\r\n }\r\n }\r\n\r\n selectCurrentItem() {\r\n if (this.items[this.activeIndex]) {\r\n this.selectItem(this.items[this.activeIndex]);\r\n this.activeIndex = 0;\r\n }\r\n }\r\n\r\n onMouseOver(index: number) {\r\n if (!this.usingKeys) {\r\n this.activeIndex = index;\r\n }\r\n }\r\n\r\n onHovering(event) {\r\n this.usingKeys = false;\r\n }\r\n\r\n isSelected(currentItem) {\r\n let result = false;\r\n\r\n this.selectedItems.forEach(item => {\r\n if (item.id === currentItem.id) {\r\n result = true;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n getCountMessage(): string {\r\n return this.messageMoreResults.replace(Messages.VISIBLE_COUNT_VAR, String(this.maxResults))\r\n .replace(Messages.MAX_COUNT_VAR, String(this.items.length + this.selectedItems.length));\r\n }\r\n\r\n}\r\n","<div #container class=\"select2-dropdown\" [attr.data-visible]=\"resultsVisible\">\r\n <div *ngIf=\"maxResults && items.length + selectedItems.length > maxResults\" class=\"select2-message\">\r\n {{getCountMessage()}}\r\n </div>\r\n\r\n <div *ngIf=\"items.length === 0\" class=\"select2-message no-results\">\r\n {{messageNoResults}}\r\n </div>\r\n\r\n <div *ngFor=\"let item of items | slice : 0 : maxResults; let i = index;\" id=\"item_{{i}}\" [attr.data-item-id]=\"item.id\" [title]=\"item.text\"\r\n class=\"select2-dropdown-item\" [class.selected]=\"isSelected(item)\" [class.active]=\"i === activeIndex\"\r\n (click)=\"selectItem(item)\" (mouseover)=\"onMouseOver(i)\" (mouseenter)=\"onHovering($event)\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"{$item:item, $entity: item.entity, $id:item.id, $index:i}\"></ng-container>\r\n <ng-container *ngIf=\"!templateRef\">{{item.text}}</ng-container>\r\n </div>\r\n</div>\r\n","import {AfterViewInit, Component, ElementRef, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewChild} from '@angular/core';\r\nimport {IqSelect2Item} from './iq-select2-item';\r\nimport {IqSelect2ResultsComponent} from '../iq-select2-results/iq-select2-results.component';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR, UntypedFormControl} from '@angular/forms';\r\nimport {Observable, of} from 'rxjs';\r\nimport {debounceTime, distinctUntilChanged, filter, map, mergeMap, switchMap, tap} from 'rxjs/operators';\r\nimport Messages from \"./messages\";\r\n\r\nconst KEY_CODE_DOWN_ARROW = 'ArrowDown';\r\nconst KEY_CODE_UP_ARROW = 'ArrowUp';\r\nconst KEY_CODE_ENTER = 'Enter';\r\nconst KEY_CODE_ESCAPE = 'Escape';\r\nconst KEY_CODE_DELETE = 'Delete';\r\n\r\n@Component({\r\n selector: 'iq-select2',\r\n templateUrl: './iq-select2.component.html',\r\n styleUrls: ['./iq-select2.component.css'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => IqSelect2Component),\r\n multi: true\r\n }]\r\n})\r\nexport class IqSelect2Component implements AfterViewInit, ControlValueAccessor {\r\n\r\n @Input() dataSourceProvider: (term: string, selected?: any[]) => Observable<any[]>;\r\n @Input() selectedProvider: (ids: string[]) => Observable<any[]>;\r\n @Input() iqSelect2ItemAdapter: (entity: any) => IqSelect2Item;\r\n\r\n @Input() referenceMode: 'id' | 'entity' = 'id';\r\n @Input() multiple = false;\r\n @Input() inputContainerClass: string;\r\n @Input() placeholder = '';\r\n @Input() disabled = false;\r\n @Input() maxResults: number;\r\n @Input() clientMode = false;\r\n @Input() badgeColor = 'info';\r\n @Input() wrapSelectedText = 'nowrap'\r\n @Input() preventDeselect = false\r\n @Input() consecutiveMultipleSelection = true\r\n\r\n @Input() debounceDelay = 250\r\n @Input() debounceLength = 2\r\n @Input() iconCaret = '&#9660;'\r\n @Input() iconDelete = '&#215;'\r\n @Input() messageMoreResults: string = Messages.MORE_RESULTS;\r\n @Input() messageNoResults: string = Messages.NO_RESULTS;\r\n\r\n @Output() onSelect: EventEmitter<IqSelect2Item> = new EventEmitter<IqSelect2Item>();\r\n @Output() onRemove: EventEmitter<IqSelect2Item> = new EventEmitter<IqSelect2Item>();\r\n\r\n @ViewChild('selectContainer') container: ElementRef\r\n @ViewChild('termInput') termInput: ElementRef\r\n @ViewChild('results') results: IqSelect2ResultsComponent;\r\n\r\n templateRef: TemplateRef<any>;\r\n term = new UntypedFormControl();\r\n resultsVisible = false;\r\n searchFocused = false;\r\n listData: IqSelect2Item[] = []\r\n fullDataList: IqSelect2Item[];\r\n selectedItems: IqSelect2Item[] = [];\r\n private placeholderSelected = '';\r\n\r\n onTouchedCallback: () => void = () => false\r\n onChangeCallback: (_: any) => void = () => false;\r\n\r\n constructor() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.subscribeToChangesAndLoadDataFromObservable();\r\n\r\n document.addEventListener(\"mousedown\", event => {\r\n if (!(this.container.nativeElement as HTMLElement).contains(event.target as Node)) {\r\n this.resultsVisible = false;\r\n this.searchFocused = false;\r\n }\r\n })\r\n }\r\n\r\n writeValue(selectedValues: any): void {\r\n if (selectedValues) {\r\n if (this.referenceMode === 'id') {\r\n this.populateItemsFromIds(selectedValues);\r\n } else {\r\n this.populateItemsFromEntities(selectedValues);\r\n }\r\n } else {\r\n this.placeholderSelected = '';\r\n this.selectedItems = [];\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n private subscribeToChangesAndLoadDataFromObservable() {\r\n this.subscribeToResults(this.term.valueChanges.pipe(debounceTime(this.debounceDelay), distinctUntilChanged()));\r\n }\r\n\r\n private subscribeToResults(observable: Observable<string>): void {\r\n observable.pipe(\r\n tap(() => this.resultsVisible = false),\r\n filter((term) => term.length >= this.debounceLength),\r\n switchMap(term => this.loadDataFromObservable(term)),\r\n map(items => items.filter(item => !(this.multiple && this.alreadySelected(item)))),\r\n tap(() => this.resultsVisible = this.searchFocused)\r\n ).subscribe((items) => this.listData = items);\r\n }\r\n\r\n private loadDataFromObservable(term: string): Observable<IqSelect2Item[]> {\r\n return this.clientMode ? this.fetchAndFilterLocalData(term) : this.fetchData(term);\r\n }\r\n\r\n private fetchAndFilterLocalData(term: string): Observable<IqSelect2Item[]> {\r\n if (!this.fullDataList) {\r\n return this.fetchData('').pipe(\r\n mergeMap((items) => {\r\n this.fullDataList = items;\r\n return this.filterLocalData(term);\r\n })\r\n );\r\n } else {\r\n return this.filterLocalData(term);\r\n }\r\n }\r\n\r\n private filterLocalData(term: string): Observable<IqSelect2Item[]> {\r\n return of(this.fullDataList.filter(item => item.text.toLowerCase().includes(term.toLowerCase())));\r\n }\r\n\r\n private fetchData(term: string): Observable<IqSelect2Item[]> {\r\n return this.dataSourceProvider(term, this.buildValue()).pipe(map((items: any[]) => items.map((item) => this.iqSelect2ItemAdapter(item))));\r\n }\r\n\r\n private populateItemsFromEntities(selectedValues: any) {\r\n if (this.multiple) {\r\n this.handleMultipleWithEntities(selectedValues);\r\n } else {\r\n const iqSelect2Item = this.iqSelect2ItemAdapter(selectedValues);\r\n this.selectedItems = [iqSelect2Item];\r\n this.placeholderSelected = iqSelect2Item.text;\r\n }\r\n }\r\n\r\n private handleMultipleWithEntities(selectedValues: any) {\r\n this.selectedItems = [];\r\n\r\n selectedValues.forEach((entity) => {\r\n const item = this.iqSelect2ItemAdapter(entity);\r\n const ids = this.getSelectedIds();\r\n\r\n if (ids.indexOf(item.id) === -1) {\r\n this.selectedItems.push(item);\r\n }\r\n });\r\n }\r\n\r\n private populateItemsFromIds(selectedValues: any) {\r\n if (this.multiple) {\r\n this.handleMultipleWithIds(selectedValues);\r\n } else {\r\n this.handleSingleWithId(selectedValues);\r\n }\r\n }\r\n\r\n private handleMultipleWithIds(selectedValues: any) {\r\n if (selectedValues !== undefined && this.selectedProvider !== undefined) {\r\n const uniqueIds = [];\r\n selectedValues.forEach((id) => {\r\n if (uniqueIds.indexOf(id) === -1) {\r\n uniqueIds.push(id);\r\n }\r\n });\r\n\r\n this.selectedProvider(uniqueIds).subscribe((items: any[]) => {\r\n this.selectedItems = items.map(this.iqSelect2ItemAdapter);\r\n });\r\n }\r\n }\r\n\r\n private handleSingleWithId(id: any) {\r\n if (id !== undefined && this.selectedProvider !== undefined) {\r\n this.selectedProvider([id]).subscribe((items: any[]) => {\r\n items.forEach((item) => {\r\n const iqSelect2Item = this.iqSelect2ItemAdapter(item);\r\n this.selectedItems = [iqSelect2Item];\r\n this.placeholderSelected = iqSelect2Item.text;\r\n });\r\n });\r\n }\r\n }\r\n\r\n private alreadySelected(item: IqSelect2Item): boolean {\r\n let result = false;\r\n\r\n this.selectedItems.forEach(selectedItem => {\r\n if (selectedItem.id === item.id) {\r\n result = true;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n onItemSelected(item: IqSelect2Item) {\r\n if (this.multiple) {\r\n this.selectedItems.push(item);\r\n const index = this.listData.indexOf(item, 0);\r\n if (index > -1) {\r\n this.listData.splice(index, 1);\r\n }\r\n } else {\r\n this.selectedItems.length = 0;\r\n this.selectedItems.push(item);\r\n }\r\n\r\n this.onChangeCallback(this.buildValue());\r\n this.term.patchValue('', {emitEvent: false});\r\n\r\n if (!this.multiple || !this.consecutiveMultipleSelection) {\r\n this.resultsVisible = false;\r\n this.placeholderSelected = item.text;\r\n this.termInput.nativeElement.blur()\r\n }\r\n\r\n this.onSelect.emit(item);\r\n }\r\n\r\n private getSelectedIds(): any {\r\n if (this.multiple) {\r\n return this.selectedItems.map(item => item.id)\r\n } else {\r\n return this.selectedItems.length === 0 ? null : this.selectedItems[0].id;\r\n }\r\n }\r\n\r\n private getEntities(): any[] {\r\n if (this.multiple) {\r\n return this.selectedItems.map(item => item.entity)\r\n } else {\r\n return this.selectedItems.length === 0 ? null : this.selectedItems[0].entity;\r\n }\r\n }\r\n\r\n removeItem(item: IqSelect2Item) {\r\n const index = this.selectedItems.indexOf(item, 0);\r\n\r\n if (index > -1) {\r\n this.selectedItems.splice(index, 1);\r\n }\r\n\r\n this.onChangeCallback(this.buildValue());\r\n this.onRemove.emit(item);\r\n\r\n if (!this.multiple) {\r\n this.placeholderSelected = '';\r\n }\r\n }\r\n\r\n private buildValue() {\r\n return 'id' === this.referenceMode ? this.getSelectedIds() : this.getEntities();\r\n }\r\n\r\n onFocus() {\r\n this.searchFocused = true\r\n }\r\n\r\n onBlur() {\r\n this.term.patchValue('', {emitEvent: false});\r\n this.onTouchedCallback();\r\n }\r\n\r\n focus() {\r\n if (!this.disabled) {\r\n this.termInput.nativeElement.focus();\r\n this.resultsVisible = false;\r\n }\r\n\r\n this.searchFocused = !this.disabled;\r\n }\r\n\r\n focusAndShowResults() {\r\n if (!this.disabled) {\r\n this.termInput.nativeElement.focus();\r\n this.subscribeToResults(of(''));\r\n }\r\n\r\n this.searchFocused = !this.disabled;\r\n }\r\n\r\n onKeyUp(event: KeyboardEvent) {\r\n if (this.results) {\r\n if (event.key === KEY_CODE_ENTER) {\r\n this.results.selectCurrentItem();\r\n }\r\n } else {\r\n if (this.debounceLength === 0) {\r\n if (event.key === KEY_CODE_ENTER || event.key === KEY_CODE_DOWN_ARROW) {\r\n this.focusAndShowResults();\r\n }\r\n }\r\n }\r\n }\r\n\r\n onKeyDown(event: KeyboardEvent) {\r\n if (event.key === KEY_CODE_ENTER) {\r\n event.preventDefault();\r\n }\r\n\r\n if (!this.resultsVisible && event.key.includes('Arrow')) {\r\n this.resultsVisible = true\r\n }\r\n\r\n if (event.key === KEY_CODE_ESCAPE) {\r\n this.resultsVisible = false\r\n }\r\n\r\n if (event.key === KEY_CODE_DELETE) {\r\n const textEntered = !this.term.value || this.term.value.length === 0;\r\n if (textEntered && this.selectedItems.length > 0) {\r\n this.removeItem(this.selectedItems[this.selectedItems.length - 1]);\r\n }\r\n }\r\n\r\n if (this.results) {\r\n if (event.key === KEY_CODE_DOWN_ARROW) {\r\n this.results.activeNext();\r\n } else if (event.key === KEY_CODE_UP_ARROW) {\r\n this.results.activePrevious();\r\n }\r\n }\r\n }\r\n\r\n getPlaceholder(): string {\r\n if (this.selectedItems.length > 0) {\r\n if (!this.multiple && !this.searchFocused) {\r\n return ''\r\n } else {\r\n return this.placeholderSelected\r\n }\r\n }\r\n\r\n return this.placeholder\r\n }\r\n\r\n}\r\n","<div #selectContainer class=\"select2-container\">\r\n <div\r\n class=\"select2-inner-container\" [ngClass]=\"inputContainerClass ? inputContainerClass : ''\"\r\n [class.simple-selection]=\"!multiple\" [class.multiple-selection]=\"multiple\" [class.readonly]=\"disabled\"\r\n (click)=\"focusAndShowResults()\"\r\n >\r\n <ul class=\"select2-selection-container\">\r\n <ng-container *ngIf=\"!multiple; then input\"></ng-container>\r\n\r\n <li *ngFor=\"let item of selectedItems\" class=\"select2-selected\">\r\n <span class=\"select2-selected-item\" [ngStyle]=\"{whiteSpace: wrapSelectedText}\" [title]=\"item.text\">{{item.text}}</span>\r\n <button *ngIf=\"!preventDeselect && !disabled\" class=\"select2-icon select2-remove-button\" aria-label=\"Close\" (click)=\"removeItem(item)\">\r\n <span class=\"select2-selection-remove\" [innerHTML]=\"iconDelete\"></span>\r\n </button>\r\n </li>\r\n\r\n <ng-container *ngIf=\"multiple; then input\"></ng-container>\r\n\r\n <ng-template #input>\r\n <li *ngIf=\"!disabled\" class=\"select2-input-container\">\r\n <input #termInput [formControl]=\"term\" type=\"text\" [placeholder]=\"getPlaceholder()\" autocomplete=\"off\"\r\n (focus)=\"onFocus()\" (blur)=\"onBlur()\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\"\r\n />\r\n </li>\r\n </ng-template>\r\n </ul>\r\n\r\n <div *ngIf=\"(multiple || (!multiple && selectedItems.length === 0))\" class=\"select2-icon\">\r\n <span class=\"select2-selection-caret\" [innerHTML]=\"iconCaret\"></span>\r\n </div>\r\n </div>\r\n\r\n <iq-select2-results *ngIf=\"!disabled\" #results [resultsVisible]=\"resultsVisible\"\r\n [items]=\"listData\" [selectedItems]=\"selectedItems\" [maxResults]=\"maxResults\"\r\n [messageMoreResults]=\"messageMoreResults\" [messageNoResults]=\"messageNoResults\"\r\n [templateRef]=\"templateRef\" (onItemSelected)=\"onItemSelected($event);\"\r\n >\r\n </iq-select2-results>\r\n</div>\r\n","/**\r\n * @author:msms\r\n * 11-Jun-17\r\n */\r\nimport {Directive, Host, TemplateRef} from '@angular/core';\r\nimport {IqSelect2Component} from '../iq-select2/iq-select2.component';\r\n\r\n@Directive({selector: '[iq-select2-template]'})\r\nexport class IqSelect2TemplateDirective<T> {\r\n constructor(private templateRef: TemplateRef<T>, @Host() host: IqSelect2Component) {\r\n if (host instanceof IqSelect2Component) {\r\n host.templateRef = templateRef;\r\n }\r\n }\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {IqSelect2Component} from './iq-select2/iq-select2.component';\r\nimport {IqSelect2TemplateDirective} from './iq-select2-template/iq-select2-template.directive';\r\nimport {IqSelect2ResultsComponent} from './iq-select2-results/iq-select2-results.component';\r\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\r\nimport {HttpClientModule} from '@angular/common/http';\r\nimport {CommonModule} from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule,\r\n ReactiveFormsModule\r\n ],\r\n declarations: [\r\n IqSelect2Component,\r\n IqSelect2ResultsComponent,\r\n IqSelect2TemplateDirective\r\n ],\r\n exports: [\r\n IqSelect2Component,\r\n IqSelect2ResultsComponent,\r\n IqSelect2TemplateDirective\r\n ]\r\n})\r\nexport class IqSelect2Module { }\r\n","/*\r\n * Public API Surface of ng2-iq-select2\r\n */\r\n\r\nexport * from './lib/iq-select2.module';\r\nexport * from './lib/iq-select2/iq-select2.component';\r\nexport * from './lib/iq-select2/iq-select2-item';\r\nexport * from './lib/iq-select2-results/iq-select2-results.component';\r\nexport * from './lib/iq-select2-template/iq-select2-template.directive';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3.IqSelect2ResultsComponent","i1.IqSelect2Component"],"mappings":"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"}
@@ -17,6 +17,8 @@ export declare class IqSelect2Component implements AfterViewInit, ControlValueAc
17
17
  clientMode: boolean;
18
18
  badgeColor: string;
19
19
  wrapSelectedText: string;
20
+ preventDeselect: boolean;
21
+ consecutiveMultipleSelection: boolean;
20
22
  debounceDelay: number;
21
23
  debounceLength: number;
22
24
  iconCaret: string;
@@ -25,6 +27,7 @@ export declare class IqSelect2Component implements AfterViewInit, ControlValueAc
25
27
  messageNoResults: string;
26
28
  onSelect: EventEmitter<IqSelect2Item>;
27
29
  onRemove: EventEmitter<IqSelect2Item>;
30
+ container: ElementRef;
28
31
  termInput: ElementRef;
29
32
  results: IqSelect2ResultsComponent;
30
33
  templateRef: TemplateRef<any>;
@@ -68,5 +71,5 @@ export declare class IqSelect2Component implements AfterViewInit, ControlValueAc
68
71
  onKeyDown(event: KeyboardEvent): void;
69
72
  getPlaceholder(): string;
70
73
  static ɵfac: i0.ɵɵFactoryDeclaration<IqSelect2Component, never>;
71
- static ɵcmp: i0.ɵɵComponentDeclaration<IqSelect2Component, "iq-select2", never, { "dataSourceProvider": { "alias": "dataSourceProvider"; "required": false; }; "selectedProvider": { "alias": "selectedProvider"; "required": false; }; "iqSelect2ItemAdapter": { "alias": "iqSelect2ItemAdapter"; "required": false; }; "referenceMode": { "alias": "referenceMode"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "inputContainerClass": { "alias": "inputContainerClass"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "maxResults": { "alias": "maxResults"; "required": false; }; "clientMode": { "alias": "clientMode"; "required": false; }; "badgeColor": { "alias": "badgeColor"; "required": false; }; "wrapSelectedText": { "alias": "wrapSelectedText"; "required": false; }; "debounceDelay": { "alias": "debounceDelay"; "required": false; }; "debounceLength": { "alias": "debounceLength"; "required": false; }; "iconCaret": { "alias": "iconCaret"; "required": false; }; "iconDelete": { "alias": "iconDelete"; "required": false; }; "messageMoreResults": { "alias": "messageMoreResults"; "required": false; }; "messageNoResults": { "alias": "messageNoResults"; "required": false; }; }, { "onSelect": "onSelect"; "onRemove": "onRemove"; }, never, never, false, never>;
74
+ static ɵcmp: i0.ɵɵComponentDeclaration<IqSelect2Component, "iq-select2", never, { "dataSourceProvider": { "alias": "dataSourceProvider"; "required": false; }; "selectedProvider": { "alias": "selectedProvider"; "required": false; }; "iqSelect2ItemAdapter": { "alias": "iqSelect2ItemAdapter"; "required": false; }; "referenceMode": { "alias": "referenceMode"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "inputContainerClass": { "alias": "inputContainerClass"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "maxResults": { "alias": "maxResults"; "required": false; }; "clientMode": { "alias": "clientMode"; "required": false; }; "badgeColor": { "alias": "badgeColor"; "required": false; }; "wrapSelectedText": { "alias": "wrapSelectedText"; "required": false; }; "preventDeselect": { "alias": "preventDeselect"; "required": false; }; "consecutiveMultipleSelection": { "alias": "consecutiveMultipleSelection"; "required": false; }; "debounceDelay": { "alias": "debounceDelay"; "required": false; }; "debounceLength": { "alias": "debounceLength"; "required": false; }; "iconCaret": { "alias": "iconCaret"; "required": false; }; "iconDelete": { "alias": "iconDelete"; "required": false; }; "messageMoreResults": { "alias": "messageMoreResults"; "required": false; }; "messageNoResults": { "alias": "messageNoResults"; "required": false; }; }, { "onSelect": "onSelect"; "onRemove": "onRemove"; }, never, never, false, never>;
72
75
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ng2-iq-select2-exe",
3
3
  "repository": "rlunak/ng2-iq-select2",
4
- "version": "16.2.7",
4
+ "version": "16.2.8",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^16.2.0",
7
7
  "@angular/core": "^16.2.0"