@piserve-tech/drop-down 1.2.21 → 1.2.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,20 +1,10 @@
|
|
|
1
1
|
import { Component, EventEmitter, HostListener, Input, Output, ViewChild, } from "@angular/core";
|
|
2
|
-
import { Subject, tap } from "rxjs";
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
import * as i1 from "@angular/forms";
|
|
5
4
|
import * as i2 from "@angular/common";
|
|
6
5
|
export class DropdownComponent {
|
|
7
|
-
set selectedItems(value) {
|
|
8
|
-
this._selectedItems = value;
|
|
9
|
-
this.selectedItemsSubject.next(value);
|
|
10
|
-
}
|
|
11
|
-
get selectedItems() {
|
|
12
|
-
return this._selectedItems;
|
|
13
|
-
}
|
|
14
6
|
constructor() {
|
|
15
|
-
this.
|
|
16
|
-
this.selectedItemsSubject = new Subject();
|
|
17
|
-
this.selectedItems$ = this.selectedItemsSubject.asObservable();
|
|
7
|
+
this.selectedItems = [];
|
|
18
8
|
this.placeholder = "";
|
|
19
9
|
this.items = [];
|
|
20
10
|
this.selectedValues = '';
|
|
@@ -34,14 +24,23 @@ export class DropdownComponent {
|
|
|
34
24
|
}
|
|
35
25
|
ngOnInit() {
|
|
36
26
|
this.initialize();
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
console.log('insideIf', newItems[0], this.multiple);
|
|
27
|
+
setTimeout(() => {
|
|
28
|
+
if (this.selectedItems && this.selectedItems.length > 0) {
|
|
29
|
+
console.log('insideIf', this.selectedItems[0], this.multiple);
|
|
41
30
|
if (!this.multiple)
|
|
42
|
-
this.selectItem(
|
|
31
|
+
this.selectItem(this.selectedItems[0]);
|
|
43
32
|
}
|
|
44
|
-
})
|
|
33
|
+
}, 100);
|
|
34
|
+
}
|
|
35
|
+
ngOnChanges(changes) {
|
|
36
|
+
console.log('Onchange triggered');
|
|
37
|
+
if (changes['selectedItems'] && !changes['selectedItems'].isFirstChange()) {
|
|
38
|
+
if (this.selectedItems && this.selectedItems.length > 0) {
|
|
39
|
+
console.log('insideIf', this.selectedItems[0], this.multiple);
|
|
40
|
+
if (!this.multiple)
|
|
41
|
+
this.selectItem(this.selectedItems[0]);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
45
44
|
}
|
|
46
45
|
initialize() {
|
|
47
46
|
this.originalItems = this.items.slice();
|
|
@@ -130,17 +129,17 @@ export class DropdownComponent {
|
|
|
130
129
|
this.buttonClick.emit();
|
|
131
130
|
}
|
|
132
131
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
133
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DropdownComponent, selector: "lib-dropdown", inputs: { selectedItems: "selectedItems", multiple: "multiple", scrollable: "scrollable", placeholder: "placeholder", items: "items", showCreateNew: "showCreateNew", selectedValues: "selectedValues", customButtons: "customButtons", showBorder: "showBorder" }, outputs: { buttonClick: "buttonClick", selectedItemsChange: "selectedItemsChange", onScroll: "onScroll", onCreateNew: "onCreateNew", onSearch: "onSearch" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "dropdownitems", first: true, predicate: ["dropdownItems"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div #dropdown class=\"dropdown\" [ngClass]=\"{\n opened: showBorder && dropdownOpened,\n closed: showBorder && !dropdownOpened,\n }\">\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{\n opened: showBorder && dropdownOpened,\n closed: showBorder && !dropdownOpened,\n }\" (click)=\"openDropdown()\">\n <div *ngIf=\"selectedValues !== ''\" class=\"selected\">\n {{ selectedValues }}\n </div>\n <div class=\"dataSection\">\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\n <div *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\" class=\"selected-item\">\n <img *ngIf=\"selectedItem?.image\" class=\"multiSelected-icon-size\" [src]=\"selectedItem?.image\" alt=\"image\" />\n <span>{{ selectedItem.label }}</span> \n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\">×</span>\n </div>\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\n +{{ selectedItems.length - 3 }} more\n </div>\n </div>\n\n <div class=\"input-field\">\n <div *ngIf=\"multiple\">\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" (keyup)=\"search($event)\" />\n </div>\n <div *ngIf=\"!multiple\">\n <img *ngIf=\"selectedItemImage\" class=\"selected-icon-size\" [src]=\"selectedItemImage\" alt=\"image\" />\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" [(ngModel)]=\"selectedItemName\"\n (keyup)=\"search($event)\" />\n </div>\n </div>\n </div>\n\n <div class=\"iconSection\">\n <div class=\"down-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"down-arrow-img\">\n <g id=\"Down Arrow\">\n <g id=\"Group\">\n <path id=\"Path\" d=\"M6 9.13741L12 15.229L18 9.13741\" stroke=\"#8E9AA0\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </g>\n </svg>\n </div>\n <div class=\"up-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\">\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div>\n <span (click)=\"unselectAll()\" *ngIf=\"\n (selectedItems.length > 0 || selectedItemName != '') && multiple\n \" class=\"deselect\">×</span>\n </div>\n </div>\n </div>\n\n <div #dropdownItems class=\"dropdown-items\" *ngIf=\"dropdownOpened\" (scroll)=\"onDropdownScroll($event)\">\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\">Create new</a>\n\n <ng-container *ngIf=\"multiple; else singleSelection\">\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\n <div class=\"dropdown-item\">\n <div class=\"item-details\">\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\n <span class=\"item-label\">{{ item?.label }}</span>\n <div class=\"space\" *ngIf=\"item?.label\"></div>\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\n </button>\n </div>\n </div>\n </div>\n </a>\n </ng-container>\n\n <ng-template #singleSelection>\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\n <div class=\"dropdown-item\">\n <div class=\"item-details\">\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\n <span class=\"item-label\">{{ item?.label }}</span>\n <div class=\"space\" *ngIf=\"item?.label\"></div>\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\n </button>\n </div>\n </div>\n </div>\n </a>\n </ng-template>\n </div>\n</div>", styles: [".dropdown{background:#fff;border-radius:6px}.dropdown .dropdown-field{display:flex;background:#fff;border-radius:6px;position:relative;cursor:pointer}.dropdown .dropdown-field .selected{margin:5px}.dropdown .dropdown-field .selected.selectedList{display:flex;flex-wrap:wrap}.dropdown .dropdown-field .selected .selected-item{background:#cdd0d1;display:inline;margin:5px;padding:3px;border-radius:5px;font-size:small}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:3px;font-size:smaller;display:block}.dropdown .dropdown-field .input-field .dropdown_text{width:78%;border:none;padding:10px;margin-left:3px;outline:none;box-sizing:border-box;font-size:14px}@media (max-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{width:53%;font-size:12px;margin-left:3px;padding-left:2px}}.dropdown .dropdown-field.closed{border:1px solid #d8d8d8}.dropdown .dropdown-field.opened{border-bottom:1px solid #d8d8d8}.dropdown .dropdown-items{overflow-y:auto;overflow-x:hidden}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:5px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:7px}}.dropdown .dropdown-items .create_button{text-decoration:none;line-height:41px;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .create_button{padding-left:8px}}.dropdown .dropdown-items .items{text-decoration:none;color:inherit;line-height:41px;position:relative;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .items{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}.dropdown .dropdown-items .items:hover{background:#cdd0d1;border-radius:6px}.dropdown .dropdown-items .items:hover button{visibility:visible}.dropdown .dropdown-items .items .dropdown_buttons{display:inline;position:absolute;right:5%}.dropdown .dropdown-items .items button{border:0;background:transparent;visibility:hidden}.dropdown.opened{border:1px #d8d8d8 solid}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#b2b2b2;border-radius:6px}.space{width:10px}.item-details{display:flex;align-items:center}.icon-size{width:25px;height:20px;margin-right:7px}.smallSpace{width:3px}.selected-icon-size{width:25px;height:20px;margin-left:10px}@media (max-width: 576px){.selected-icon-size{width:21px;height:15px;margin-right:7px;margin-bottom:1px}}.multiSelected-icon-size{width:25px;height:20px;margin-left:1px;margin-bottom:1px;margin-right:3px}.dataSection{width:calc(100% - 48px)}.iconSection{width:48px;padding:6px}.down-arrow,.up-arrow,.deselect{width:20px;height:20px;font-size:18px;display:flex;align-items:center;justify-content:center;cursor:pointer}.down-arrow{cursor:pointer}.down-arrow.opened{display:none}.down-arrow.closed{display:block}.up-arrow{cursor:pointer}.up-arrow.closed{display:none}.iconSection{display:flex;flex-direction:row-reverse}\n"], dependencies: [{ kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
132
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DropdownComponent, selector: "lib-dropdown", inputs: { multiple: "multiple", scrollable: "scrollable", selectedItems: "selectedItems", placeholder: "placeholder", items: "items", showCreateNew: "showCreateNew", selectedValues: "selectedValues", customButtons: "customButtons", showBorder: "showBorder" }, outputs: { buttonClick: "buttonClick", selectedItemsChange: "selectedItemsChange", onScroll: "onScroll", onCreateNew: "onCreateNew", onSearch: "onSearch" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "dropdownitems", first: true, predicate: ["dropdownItems"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #dropdown class=\"dropdown\" [ngClass]=\"{\n opened: showBorder && dropdownOpened,\n closed: showBorder && !dropdownOpened,\n }\">\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{\n opened: showBorder && dropdownOpened,\n closed: showBorder && !dropdownOpened,\n }\" (click)=\"openDropdown()\">\n <div *ngIf=\"selectedValues !== ''\" class=\"selected\">\n {{ selectedValues }}\n </div>\n <div class=\"dataSection\">\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\n <div *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\" class=\"selected-item\">\n <img *ngIf=\"selectedItem?.image\" class=\"multiSelected-icon-size\" [src]=\"selectedItem?.image\" alt=\"image\" />\n <span>{{ selectedItem.label }}</span> \n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\">×</span>\n </div>\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\n +{{ selectedItems.length - 3 }} more\n </div>\n </div>\n\n <div class=\"input-field\">\n <div *ngIf=\"multiple\">\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" (keyup)=\"search($event)\" />\n </div>\n <div *ngIf=\"!multiple\">\n <img *ngIf=\"selectedItemImage\" class=\"selected-icon-size\" [src]=\"selectedItemImage\" alt=\"image\" />\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" [(ngModel)]=\"selectedItemName\"\n (keyup)=\"search($event)\" />\n </div>\n </div>\n </div>\n\n <div class=\"iconSection\">\n <div class=\"down-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"down-arrow-img\">\n <g id=\"Down Arrow\">\n <g id=\"Group\">\n <path id=\"Path\" d=\"M6 9.13741L12 15.229L18 9.13741\" stroke=\"#8E9AA0\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </g>\n </svg>\n </div>\n <div class=\"up-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\">\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div>\n <span (click)=\"unselectAll()\" *ngIf=\"\n (selectedItems.length > 0 || selectedItemName != '') && multiple\n \" class=\"deselect\">×</span>\n </div>\n </div>\n </div>\n\n <div #dropdownItems class=\"dropdown-items\" *ngIf=\"dropdownOpened\" (scroll)=\"onDropdownScroll($event)\">\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\">Create new</a>\n\n <ng-container *ngIf=\"multiple; else singleSelection\">\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\n <div class=\"dropdown-item\">\n <div class=\"item-details\">\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\n <span class=\"item-label\">{{ item?.label }}</span>\n <div class=\"space\" *ngIf=\"item?.label\"></div>\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\n </button>\n </div>\n </div>\n </div>\n </a>\n </ng-container>\n\n <ng-template #singleSelection>\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\n <div class=\"dropdown-item\">\n <div class=\"item-details\">\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\n <span class=\"item-label\">{{ item?.label }}</span>\n <div class=\"space\" *ngIf=\"item?.label\"></div>\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\n </button>\n </div>\n </div>\n </div>\n </a>\n </ng-template>\n </div>\n</div>", styles: [".dropdown{background:#fff;border-radius:6px}.dropdown .dropdown-field{display:flex;background:#fff;border-radius:6px;position:relative;cursor:pointer}.dropdown .dropdown-field .selected{margin:5px}.dropdown .dropdown-field .selected.selectedList{display:flex;flex-wrap:wrap}.dropdown .dropdown-field .selected .selected-item{background:#cdd0d1;display:inline;margin:5px;padding:3px;border-radius:5px;font-size:small}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:3px;font-size:smaller;display:block}.dropdown .dropdown-field .input-field .dropdown_text{width:78%;border:none;padding:10px;margin-left:3px;outline:none;box-sizing:border-box;font-size:14px}@media (max-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{width:53%;font-size:12px;margin-left:3px;padding-left:2px}}.dropdown .dropdown-field.closed{border:1px solid #d8d8d8}.dropdown .dropdown-field.opened{border-bottom:1px solid #d8d8d8}.dropdown .dropdown-items{overflow-y:auto;overflow-x:hidden}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:5px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:7px}}.dropdown .dropdown-items .create_button{text-decoration:none;line-height:41px;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .create_button{padding-left:8px}}.dropdown .dropdown-items .items{text-decoration:none;color:inherit;line-height:41px;position:relative;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .items{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}.dropdown .dropdown-items .items:hover{background:#cdd0d1;border-radius:6px}.dropdown .dropdown-items .items:hover button{visibility:visible}.dropdown .dropdown-items .items .dropdown_buttons{display:inline;position:absolute;right:5%}.dropdown .dropdown-items .items button{border:0;background:transparent;visibility:hidden}.dropdown.opened{border:1px #d8d8d8 solid}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#b2b2b2;border-radius:6px}.space{width:10px}.item-details{display:flex;align-items:center}.icon-size{width:25px;height:20px;margin-right:7px}.smallSpace{width:3px}.selected-icon-size{width:25px;height:20px;margin-left:10px}@media (max-width: 576px){.selected-icon-size{width:21px;height:15px;margin-right:7px;margin-bottom:1px}}.multiSelected-icon-size{width:25px;height:20px;margin-left:1px;margin-bottom:1px;margin-right:3px}.dataSection{width:calc(100% - 48px)}.iconSection{width:48px;padding:6px}.down-arrow,.up-arrow,.deselect{width:20px;height:20px;font-size:18px;display:flex;align-items:center;justify-content:center;cursor:pointer}.down-arrow{cursor:pointer}.down-arrow.opened{display:none}.down-arrow.closed{display:block}.up-arrow{cursor:pointer}.up-arrow.closed{display:none}.iconSection{display:flex;flex-direction:row-reverse}\n"], dependencies: [{ kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
134
133
|
}
|
|
135
134
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
136
135
|
type: Component,
|
|
137
136
|
args: [{ selector: "lib-dropdown", template: "<div #dropdown class=\"dropdown\" [ngClass]=\"{\n opened: showBorder && dropdownOpened,\n closed: showBorder && !dropdownOpened,\n }\">\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{\n opened: showBorder && dropdownOpened,\n closed: showBorder && !dropdownOpened,\n }\" (click)=\"openDropdown()\">\n <div *ngIf=\"selectedValues !== ''\" class=\"selected\">\n {{ selectedValues }}\n </div>\n <div class=\"dataSection\">\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\n <div *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\" class=\"selected-item\">\n <img *ngIf=\"selectedItem?.image\" class=\"multiSelected-icon-size\" [src]=\"selectedItem?.image\" alt=\"image\" />\n <span>{{ selectedItem.label }}</span> \n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\">×</span>\n </div>\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\n +{{ selectedItems.length - 3 }} more\n </div>\n </div>\n\n <div class=\"input-field\">\n <div *ngIf=\"multiple\">\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" (keyup)=\"search($event)\" />\n </div>\n <div *ngIf=\"!multiple\">\n <img *ngIf=\"selectedItemImage\" class=\"selected-icon-size\" [src]=\"selectedItemImage\" alt=\"image\" />\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" [(ngModel)]=\"selectedItemName\"\n (keyup)=\"search($event)\" />\n </div>\n </div>\n </div>\n\n <div class=\"iconSection\">\n <div class=\"down-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"down-arrow-img\">\n <g id=\"Down Arrow\">\n <g id=\"Group\">\n <path id=\"Path\" d=\"M6 9.13741L12 15.229L18 9.13741\" stroke=\"#8E9AA0\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </g>\n </svg>\n </div>\n <div class=\"up-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\">\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div>\n <span (click)=\"unselectAll()\" *ngIf=\"\n (selectedItems.length > 0 || selectedItemName != '') && multiple\n \" class=\"deselect\">×</span>\n </div>\n </div>\n </div>\n\n <div #dropdownItems class=\"dropdown-items\" *ngIf=\"dropdownOpened\" (scroll)=\"onDropdownScroll($event)\">\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\">Create new</a>\n\n <ng-container *ngIf=\"multiple; else singleSelection\">\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\n <div class=\"dropdown-item\">\n <div class=\"item-details\">\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\n <span class=\"item-label\">{{ item?.label }}</span>\n <div class=\"space\" *ngIf=\"item?.label\"></div>\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\n </button>\n </div>\n </div>\n </div>\n </a>\n </ng-container>\n\n <ng-template #singleSelection>\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\n <div class=\"dropdown-item\">\n <div class=\"item-details\">\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\n <span class=\"item-label\">{{ item?.label }}</span>\n <div class=\"space\" *ngIf=\"item?.label\"></div>\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\n </button>\n </div>\n </div>\n </div>\n </a>\n </ng-template>\n </div>\n</div>", styles: [".dropdown{background:#fff;border-radius:6px}.dropdown .dropdown-field{display:flex;background:#fff;border-radius:6px;position:relative;cursor:pointer}.dropdown .dropdown-field .selected{margin:5px}.dropdown .dropdown-field .selected.selectedList{display:flex;flex-wrap:wrap}.dropdown .dropdown-field .selected .selected-item{background:#cdd0d1;display:inline;margin:5px;padding:3px;border-radius:5px;font-size:small}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:3px;font-size:smaller;display:block}.dropdown .dropdown-field .input-field .dropdown_text{width:78%;border:none;padding:10px;margin-left:3px;outline:none;box-sizing:border-box;font-size:14px}@media (max-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{width:53%;font-size:12px;margin-left:3px;padding-left:2px}}.dropdown .dropdown-field.closed{border:1px solid #d8d8d8}.dropdown .dropdown-field.opened{border-bottom:1px solid #d8d8d8}.dropdown .dropdown-items{overflow-y:auto;overflow-x:hidden}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:5px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:7px}}.dropdown .dropdown-items .create_button{text-decoration:none;line-height:41px;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .create_button{padding-left:8px}}.dropdown .dropdown-items .items{text-decoration:none;color:inherit;line-height:41px;position:relative;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .items{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}.dropdown .dropdown-items .items:hover{background:#cdd0d1;border-radius:6px}.dropdown .dropdown-items .items:hover button{visibility:visible}.dropdown .dropdown-items .items .dropdown_buttons{display:inline;position:absolute;right:5%}.dropdown .dropdown-items .items button{border:0;background:transparent;visibility:hidden}.dropdown.opened{border:1px #d8d8d8 solid}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#b2b2b2;border-radius:6px}.space{width:10px}.item-details{display:flex;align-items:center}.icon-size{width:25px;height:20px;margin-right:7px}.smallSpace{width:3px}.selected-icon-size{width:25px;height:20px;margin-left:10px}@media (max-width: 576px){.selected-icon-size{width:21px;height:15px;margin-right:7px;margin-bottom:1px}}.multiSelected-icon-size{width:25px;height:20px;margin-left:1px;margin-bottom:1px;margin-right:3px}.dataSection{width:calc(100% - 48px)}.iconSection{width:48px;padding:6px}.down-arrow,.up-arrow,.deselect{width:20px;height:20px;font-size:18px;display:flex;align-items:center;justify-content:center;cursor:pointer}.down-arrow{cursor:pointer}.down-arrow.opened{display:none}.down-arrow.closed{display:block}.up-arrow{cursor:pointer}.up-arrow.closed{display:none}.iconSection{display:flex;flex-direction:row-reverse}\n"] }]
|
|
138
|
-
}], ctorParameters: function () { return []; }, propDecorators: {
|
|
139
|
-
type: Input
|
|
140
|
-
}], multiple: [{
|
|
137
|
+
}], ctorParameters: function () { return []; }, propDecorators: { multiple: [{
|
|
141
138
|
type: Input
|
|
142
139
|
}], scrollable: [{
|
|
143
140
|
type: Input
|
|
141
|
+
}], selectedItems: [{
|
|
142
|
+
type: Input
|
|
144
143
|
}], placeholder: [{
|
|
145
144
|
type: Input
|
|
146
145
|
}], items: [{
|
|
@@ -173,4 +172,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
173
172
|
type: HostListener,
|
|
174
173
|
args: ["document:click", ["$event"]]
|
|
175
174
|
}] } });
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZHJvcGRvd24vc3JjL2xpYi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kcm9wZG93bi9zcmMvbGliL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQStCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFhakUsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixJQUFhLGFBQWEsQ0FBQyxLQUFZO1FBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBb0NEO1FBbENRLG1CQUFjLEdBQVUsRUFBRSxDQUFDO1FBQzNCLHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUFTLENBQUM7UUFDcEQsbUJBQWMsR0FBc0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBS3BFLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBRTNCLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBQzVCLGtCQUFhLEdBS2hCLEVBQUUsQ0FBQztRQUNBLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFDMUIsZ0JBQVcsR0FBd0IsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUM3RCx3QkFBbUIsR0FBd0IsSUFBSSxZQUFZLEVBRWxFLENBQUM7UUFDTSxhQUFRLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7UUFDMUQsZ0JBQVcsR0FBd0IsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUM3RCxhQUFRLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFFdEUsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFFaEMscUJBQWdCLEdBQVcsRUFBRSxDQUFDO1FBQzlCLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUMvQixrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFDbkMsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixnQkFBVyxHQUFZLEtBQUssQ0FBQztJQUViLENBQUM7SUFFakIsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDdEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBQyxRQUFRLENBQUMsQ0FBQztZQUN4QyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO29CQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEQ7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRTFDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0MsQ0FBQztJQUlELGdCQUFnQixDQUFDLEtBQVU7UUFDekIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE1BQU0sZUFBZSxHQUFnQixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztZQUN0RSxNQUFNLGNBQWMsR0FDbEIsZUFBZSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUMsWUFBWSxDQUFDO1lBQzNELE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxZQUFZLENBQUM7WUFFakQsSUFBSSxjQUFjLElBQUksV0FBVyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3RCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVM7UUFDbEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ25EO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQzVDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUNyQyxDQUFDO2dCQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ25EO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBRTdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUNyRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDdEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUIsMkNBQTJDO1lBQzNDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBRW5EO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFTO1FBQ3BCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQzVDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUNyQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELDJDQUEyQztJQUM3QyxDQUFDO0lBSUQsZUFBZSxDQUFDLEtBQVk7UUFDMUIsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQ2hFLEtBQUssQ0FBQyxNQUFNLENBQ2IsQ0FBQztRQUNGLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQVU7UUFDZixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNuRDthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO2dCQUNuQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO29CQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ3pDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQ3BDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDUCxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO3dCQUNwRCxDQUFDLElBQUksQ0FBQyxLQUFLOzRCQUNULElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUMxRCxDQUFDO2lCQUNIO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3JDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBa0I7UUFDbEMsTUFBTSxFQUFFLENBQUM7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7K0dBdEtVLGlCQUFpQjttR0FBakIsaUJBQWlCLGt1QkMzQjlCLHFsSkFpR007OzRGRHRFTyxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsY0FBYzswRUFNWCxhQUFhO3NCQUF6QixLQUFLO2dCQWFHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFNRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUdHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQWtDcUIsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQW9ESCxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBRXJCLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2UsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFwIH0gZnJvbSBcInJ4anNcIjtcblxuaW50ZXJmYWNlIERyb3Bkb3duSXRlbSB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGltYWdlOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJsaWItZHJvcGRvd25cIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZHJvcGRvd24uY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBzZXQgc2VsZWN0ZWRJdGVtcyh2YWx1ZTogYW55W10pIHtcbiAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zID0gdmFsdWU7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgfVxuICBnZXQgc2VsZWN0ZWRJdGVtcygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbXM7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIHNlbGVjdGVkSXRlbXNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55W10+KCk7XG4gIHNlbGVjdGVkSXRlbXMkOiBPYnNlcnZhYmxlPGFueVtdPiA9IHRoaXMuc2VsZWN0ZWRJdGVtc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cblxuICBASW5wdXQoKSBtdWx0aXBsZSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNjcm9sbGFibGUhOiBib29sZWFuO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogU3RyaW5nID0gXCJcIjtcbiAgQElucHV0KCkgaXRlbXM6IERyb3Bkb3duSXRlbVtdID0gW107XG4gIEBJbnB1dCgpIHNob3dDcmVhdGVOZXchOiBib29sZWFuO1xuICBASW5wdXQoKSBzZWxlY3RlZFZhbHVlczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGN1c3RvbUJ1dHRvbnM6IHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGljb246IHN0cmluZztcbiAgICBjb2xvcjogc3RyaW5nO1xuICAgIGFjdGlvbjogKCkgPT4gdm9pZDtcbiAgfVtdID0gW107XG4gIEBJbnB1dCgpIHNob3dCb3JkZXI6IGJvb2xlYW4gPSB0cnVlO1xuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgYW55W11cbiAgPigpO1xuICBAT3V0cHV0KCkgb25TY3JvbGw6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgb25DcmVhdGVOZXc6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgb25TZWFyY2g6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgZHJvcGRvd25PcGVuZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRJdGVtOiBhbnk7XG4gIHNlbGVjdGVkSXRlbU5hbWU6IHN0cmluZyA9IFwiXCI7XG4gIHNlbGVjdGVkSXRlbUltYWdlOiBzdHJpbmcgPSBcIlwiO1xuICBvcmlnaW5hbEl0ZW1zOiBEcm9wZG93bkl0ZW1bXSA9IFtdO1xuICBzZWFyY2hUZXJtOiBzdHJpbmcgPSBcIlwiO1xuICBpbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zJC5waXBlKFxuICAgICAgdGFwKG5ld0l0ZW1zID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ25nQWZ0ZXJWaWV3SW5pdCcsbmV3SXRlbXMpO1xuICAgICAgICBpZiAobmV3SXRlbXMgJiYgbmV3SXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdpbnNpZGVJZicsIG5ld0l0ZW1zWzBdLCB0aGlzLm11bHRpcGxlKTtcbiAgICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHRoaXMuc2VsZWN0SXRlbShuZXdJdGVtc1swXSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKS5zdWJzY3JpYmUoKTsgXG4gIH1cblxuICBpbml0aWFsaXplKCkge1xuICAgIHRoaXMub3JpZ2luYWxJdGVtcyA9IHRoaXMuaXRlbXMuc2xpY2UoKTtcblxuICB9XG5cbiAgb3BlbkRyb3Bkb3duKCkge1xuICAgIHRoaXMuZHJvcGRvd25PcGVuZWQgPSAhdGhpcy5kcm9wZG93bk9wZW5lZDtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoXCJkcm9wZG93bkl0ZW1zXCIpIGRyb3Bkb3duaXRlbXMhOiBFbGVtZW50UmVmO1xuXG4gIG9uRHJvcGRvd25TY3JvbGwoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9uU2Nyb2xsKSB7XG4gICAgICBjb25zdCBkcm9wZG93bkVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5kcm9wZG93bml0ZW1zLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBjb25zdCBzY3JvbGxQb3NpdGlvbiA9XG4gICAgICAgIGRyb3Bkb3duRWxlbWVudC5zY3JvbGxUb3AgKyBkcm9wZG93bkVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgY29uc3QgdG90YWxIZWlnaHQgPSBkcm9wZG93bkVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuXG4gICAgICBpZiAoc2Nyb2xsUG9zaXRpb24gPj0gdG90YWxIZWlnaHQpIHtcbiAgICAgICAgdGhpcy5vblNjcm9sbC5lbWl0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0SXRlbShpdGVtOiBhbnkpIHtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkSXRlbXMuaW5jbHVkZXMoaXRlbSkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKFxuICAgICAgICAgIChzZWxlY3RlZDogYW55KSA9PiBzZWxlY3RlZCAhPT0gaXRlbVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNbMF0gPSBpdGVtO1xuXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbU5hbWUgPSB0aGlzLnNlbGVjdGVkSXRlbXNbMF0/LmxhYmVsO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1JbWFnZSA9IHRoaXMuc2VsZWN0ZWRJdGVtc1swXT8uaW1hZ2U7XG4gICAgICB0aGlzLmRyb3Bkb3duT3BlbmVkID0gZmFsc2U7XG4gICAgICAvLyB0aGlzLml0ZW1zID0gdGhpcy5vcmlnaW5hbEl0ZW1zLnNsaWNlKCk7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuXG4gICAgfVxuICB9XG5cbiAgdW5zZWxlY3RJdGVtKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXG4gICAgICAoc2VsZWN0ZWQ6IGFueSkgPT4gc2VsZWN0ZWQgIT09IGl0ZW1cbiAgICApO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gIH1cblxuICB1bnNlbGVjdEFsbCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbU5hbWUgPSBcIlwiO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgLy8gdGhpcy5pdGVtcyA9IHRoaXMub3JpZ2luYWxJdGVtcy5zbGljZSgpO1xuICB9XG5cbiAgQFZpZXdDaGlsZChcImRyb3Bkb3duXCIpIGRyb3Bkb3duITogRWxlbWVudFJlZjtcbiAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50OmNsaWNrXCIsIFtcIiRldmVudFwiXSlcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlzQ2xpY2tJbnNpZGVEcm9wZG93biA9IHRoaXMuZHJvcGRvd24ubmF0aXZlRWxlbWVudC5jb250YWlucyhcbiAgICAgIGV2ZW50LnRhcmdldFxuICAgICk7XG4gICAgaWYgKCFpc0NsaWNrSW5zaWRlRHJvcGRvd24pIHtcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVOZXcoKSB7XG4gICAgdGhpcy5vbkNyZWF0ZU5ldy5lbWl0KCk7XG4gIH1cblxuICBzZWFyY2goZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuICAgIHRoaXMuZHJvcGRvd25PcGVuZWQgPSB0cnVlO1xuICAgIGlmIChrZXlDb2RlID09PSA4ICYmICF0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtTmFtZSA9IFwiXCI7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbUltYWdlID0gXCJcIjtcbiAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLm9yaWdpbmFsSXRlbXMuc2xpY2UoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VhcmNoVGVybSA9IGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKCF0aGlzLm9uU2VhcmNoLm9ic2VydmVycy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGVybS50cmltKCkgPT09IFwiXCIpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5vcmlnaW5hbEl0ZW1zLnNsaWNlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMub3JpZ2luYWxJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAoaXRlbSkgPT5cbiAgICAgICAgICAgICAgaXRlbS5sYWJlbC50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgodGhpcy5zZWFyY2hUZXJtKSB8fFxuICAgICAgICAgICAgICAoaXRlbS52YWx1ZSAmJlxuICAgICAgICAgICAgICAgIGl0ZW0udmFsdWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHRoaXMuc2VhcmNoVGVybSkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vblNlYXJjaC5lbWl0KHRoaXMuc2VhcmNoVGVybSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQnV0dG9uQ2xpY2soYWN0aW9uOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgYWN0aW9uKCk7XG4gICAgdGhpcy5idXR0b25DbGljay5lbWl0KCk7XG4gIH1cbn1cbiIsIjxkaXYgI2Ryb3Bkb3duIGNsYXNzPVwiZHJvcGRvd25cIiBbbmdDbGFzc109XCJ7XG4gICAgb3BlbmVkOiBzaG93Qm9yZGVyICYmIGRyb3Bkb3duT3BlbmVkLFxuICAgIGNsb3NlZDogc2hvd0JvcmRlciAmJiAhZHJvcGRvd25PcGVuZWQsXG4gIH1cIj5cbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWZpZWxkXCIgaWQ9XCJkaXZpc2lvblwiIFtuZ0NsYXNzXT1cIntcbiAgICAgIG9wZW5lZDogc2hvd0JvcmRlciAmJiBkcm9wZG93bk9wZW5lZCxcbiAgICAgIGNsb3NlZDogc2hvd0JvcmRlciAmJiAhZHJvcGRvd25PcGVuZWQsXG4gICAgfVwiIChjbGljayk9XCJvcGVuRHJvcGRvd24oKVwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRWYWx1ZXMgIT09ICcnXCIgY2xhc3M9XCJzZWxlY3RlZFwiPlxuICAgICAgICAgIHt7IHNlbGVjdGVkVmFsdWVzIH19XG4gICAgICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkYXRhU2VjdGlvblwiPlxuICAgICAgPGRpdiAqbmdJZj1cIiFzZWxlY3RlZEl0ZW0gJiYgbXVsdGlwbGVcIiBjbGFzcz1cInNlbGVjdGVkIHNlbGVjdGVkTGlzdFwiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWxlY3RlZEl0ZW0gb2Ygc2VsZWN0ZWRJdGVtcy5zbGljZSgwLCAzKVwiIGNsYXNzPVwic2VsZWN0ZWQtaXRlbVwiPlxuICAgICAgICAgIDxpbWcgKm5nSWY9XCJzZWxlY3RlZEl0ZW0/LmltYWdlXCIgY2xhc3M9XCJtdWx0aVNlbGVjdGVkLWljb24tc2l6ZVwiIFtzcmNdPVwic2VsZWN0ZWRJdGVtPy5pbWFnZVwiIGFsdD1cImltYWdlXCIgLz5cbiAgICAgICAgICA8c3Bhbj57eyBzZWxlY3RlZEl0ZW0ubGFiZWwgfX08L3NwYW4+Jm5ic3A7XG4gICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInVuc2VsZWN0SXRlbShzZWxlY3RlZEl0ZW0pXCIgY2xhc3M9XCJjbG9zZS1pY29uXCI+JnRpbWVzOzwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZW1haW5pbmctaXRlbXNcIiAqbmdJZj1cInNlbGVjdGVkSXRlbXMubGVuZ3RoID4gM1wiPlxuICAgICAgICAgICt7eyBzZWxlY3RlZEl0ZW1zLmxlbmd0aCAtIDMgfX0gbW9yZVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZmllbGRcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpcGxlXCI+XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZHJvcGRvd25fdGV4dFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIChrZXl1cCk9XCJzZWFyY2goJGV2ZW50KVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIW11bHRpcGxlXCI+XG4gICAgICAgICAgPGltZyAqbmdJZj1cInNlbGVjdGVkSXRlbUltYWdlXCIgY2xhc3M9XCJzZWxlY3RlZC1pY29uLXNpemVcIiBbc3JjXT1cInNlbGVjdGVkSXRlbUltYWdlXCIgYWx0PVwiaW1hZ2VcIiAvPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImRyb3Bkb3duX3RleHRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkSXRlbU5hbWVcIlxuICAgICAgICAgICAgKGtleXVwKT1cInNlYXJjaCgkZXZlbnQpXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJpY29uU2VjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRvd24tYXJyb3dcIiBbbmdDbGFzc109XCJ7IG9wZW5lZDogZHJvcGRvd25PcGVuZWQsIGNsb3NlZDogIWRyb3Bkb3duT3BlbmVkIH1cIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjFlbVwiIHZpZXdCb3g9XCIwIDAgMjQgMjVcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImRvd24tYXJyb3ctaW1nXCI+XG4gICAgICAgICAgPGcgaWQ9XCJEb3duIEFycm93XCI+XG4gICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGlkPVwiUGF0aFwiIGQ9XCJNNiA5LjEzNzQxTDEyIDE1LjIyOUwxOCA5LjEzNzQxXCIgc3Ryb2tlPVwiIzhFOUFBMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICA8L2c+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidXAtYXJyb3dcIiBbbmdDbGFzc109XCJ7IG9wZW5lZDogZHJvcGRvd25PcGVuZWQsIGNsb3NlZDogIWRyb3Bkb3duT3BlbmVkIH1cIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjFlbVwiIHZpZXdCb3g9XCIwIDAgMjQgMjVcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cInVwLWFycm93LWltZ1wiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTggMTUuMjI5TDEyIDkuMTM3NEw2IDE1LjIyOVwiIHN0cm9rZT1cIiM4RTlBQTBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxzcGFuIChjbGljayk9XCJ1bnNlbGVjdEFsbCgpXCIgKm5nSWY9XCJcbiAgICAgICAgICAgIChzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDAgfHwgc2VsZWN0ZWRJdGVtTmFtZSAhPSAnJykgJiYgbXVsdGlwbGVcbiAgICAgICAgICBcIiBjbGFzcz1cImRlc2VsZWN0XCI+JnRpbWVzOzwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICNkcm9wZG93bkl0ZW1zIGNsYXNzPVwiZHJvcGRvd24taXRlbXNcIiAqbmdJZj1cImRyb3Bkb3duT3BlbmVkXCIgKHNjcm9sbCk9XCJvbkRyb3Bkb3duU2Nyb2xsKCRldmVudClcIj5cbiAgICA8YSBjbGFzcz1cImNyZWF0ZV9idXR0b25cIiAoY2xpY2spPVwiY3JlYXRlTmV3KClcIiAqbmdJZj1cInNob3dDcmVhdGVOZXdcIj5DcmVhdGUgbmV3PC9hPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpcGxlOyBlbHNlIHNpbmdsZVNlbGVjdGlvblwiPlxuICAgICAgPGEgY2xhc3M9XCJpdGVtcyBkLWJsb2NrXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIiAoY2xpY2spPVwic2VsZWN0SXRlbShpdGVtKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24taXRlbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWRldGFpbHNcIj5cbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpdGVtPy5pbWFnZVwiIFtzcmNdPVwiaXRlbT8uaW1hZ2VcIiBhbHQ9XCJJdGVtIEltYWdlXCIgY2xhc3M9XCJpdGVtLWltYWdlIGljb24tc2l6ZVwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0tbGFiZWxcIj57eyBpdGVtPy5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZVwiICpuZ0lmPVwiaXRlbT8ubGFiZWxcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bl9idXR0b25zXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBjdXN0b21CdXR0b25zXCIgKGNsaWNrKT1cImhhbmRsZUJ1dHRvbkNsaWNrKGJ1dHRvbi5hY3Rpb24pXCI+XG4gICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImJ1dHRvbi5pY29uXCIgW3N0eWxlLmNvbG9yXT1cImJ1dHRvbi5jb2xvclwiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2E+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI3NpbmdsZVNlbGVjdGlvbj5cbiAgICAgIDxhIGNsYXNzPVwiaXRlbXMgZC1ibG9ja1wiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCIgKGNsaWNrKT1cInNlbGVjdEl0ZW0oaXRlbSlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1kZXRhaWxzXCI+XG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiaXRlbT8uaW1hZ2VcIiBbc3JjXT1cIml0ZW0/LmltYWdlXCIgYWx0PVwiSXRlbSBJbWFnZVwiIGNsYXNzPVwiaXRlbS1pbWFnZSBpY29uLXNpemVcIiAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtLWxhYmVsXCI+e3sgaXRlbT8ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2VcIiAqbmdJZj1cIml0ZW0/LmxhYmVsXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25fYnV0dG9uc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBidXR0b24gb2YgY3VzdG9tQnV0dG9uc1wiIChjbGljayk9XCJoYW5kbGVCdXR0b25DbGljayhidXR0b24uYWN0aW9uKVwiPlxuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJidXR0b24uaWNvblwiIFtzdHlsZS5jb2xvcl09XCJidXR0b24uY29sb3JcIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZHJvcGRvd24vc3JjL2xpYi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kcm9wZG93bi9zcmMvbGliL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7OztBQWN2QixNQUFNLE9BQU8saUJBQWlCO0lBZ0M1QjtRQTVCUyxrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUMxQixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQUUzQixtQkFBYyxHQUFXLEVBQUUsQ0FBQztRQUM1QixrQkFBYSxHQUtoQixFQUFFLENBQUM7UUFDQSxlQUFVLEdBQVksSUFBSSxDQUFDO1FBQzFCLGdCQUFXLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7UUFDN0Qsd0JBQW1CLEdBQXdCLElBQUksWUFBWSxFQUVsRSxDQUFDO1FBQ00sYUFBUSxHQUF3QixJQUFJLFlBQVksRUFBUyxDQUFDO1FBQzFELGdCQUFXLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7UUFDN0QsYUFBUSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXRFLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixzQkFBaUIsR0FBVyxFQUFFLENBQUM7UUFDL0Isa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBQ25DLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7SUFFYixDQUFDO0lBRWpCLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxF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QUNyQztTQUNGO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQWtCO1FBQ2xDLE1BQU0sRUFBRSxDQUFDO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDOytHQWpLVSxpQkFBaUI7bUdBQWpCLGlCQUFpQix1dkJDM0I5QixxbEpBaUdNOzs0RkR0RU8saUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGNBQWM7MEVBTWYsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBTUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFHRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkF5Q3FCLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFvREgsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUVyQixlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuXG5pbnRlcmZhY2UgRHJvcGRvd25JdGVtIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgaW1hZ2U6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImxpYi1kcm9wZG93blwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9kcm9wZG93bi5jb21wb25lbnQuc2Nzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KCkgbXVsdGlwbGUhOiBib29sZWFuO1xuICBASW5wdXQoKSBzY3JvbGxhYmxlITogYm9vbGVhbjtcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IFN0cmluZyA9IFwiXCI7XG4gIEBJbnB1dCgpIGl0ZW1zOiBEcm9wZG93bkl0ZW1bXSA9IFtdO1xuICBASW5wdXQoKSBzaG93Q3JlYXRlTmV3ITogYm9vbGVhbjtcbiAgQElucHV0KCkgc2VsZWN0ZWRWYWx1ZXM6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBjdXN0b21CdXR0b25zOiB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBpY29uOiBzdHJpbmc7XG4gICAgY29sb3I6IHN0cmluZztcbiAgICBhY3Rpb246ICgpID0+IHZvaWQ7XG4gIH1bXSA9IFtdO1xuICBASW5wdXQoKSBzaG93Qm9yZGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIGFueVtdXG4gID4oKTtcbiAgQE91dHB1dCgpIG9uU2Nyb2xsOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIG9uQ3JlYXRlTmV3OiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIG9uU2VhcmNoOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGRyb3Bkb3duT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkSXRlbTogYW55O1xuICBzZWxlY3RlZEl0ZW1OYW1lOiBzdHJpbmcgPSBcIlwiO1xuICBzZWxlY3RlZEl0ZW1JbWFnZTogc3RyaW5nID0gXCJcIjtcbiAgb3JpZ2luYWxJdGVtczogRHJvcGRvd25JdGVtW10gPSBbXTtcbiAgc2VhcmNoVGVybTogc3RyaW5nID0gXCJcIjtcbiAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcyAmJiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zb2xlLmxvZygnaW5zaWRlSWYnLCB0aGlzLnNlbGVjdGVkSXRlbXNbMF0sIHRoaXMubXVsdGlwbGUpO1xuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHRoaXMuc2VsZWN0SXRlbSh0aGlzLnNlbGVjdGVkSXRlbXNbMF0pO1xuICAgICAgfVxuICAgIH0sIDEwMCk7XG4gIH1cbiAgXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnT25jaGFuZ2UgdHJpZ2dlcmVkJyk7XG4gICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkSXRlbXMnXSAmJiAhY2hhbmdlc1snc2VsZWN0ZWRJdGVtcyddLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcyAmJiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zb2xlLmxvZygnaW5zaWRlSWYnLCB0aGlzLnNlbGVjdGVkSXRlbXNbMF0sIHRoaXMubXVsdGlwbGUpO1xuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHRoaXMuc2VsZWN0SXRlbSh0aGlzLnNlbGVjdGVkSXRlbXNbMF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGluaXRpYWxpemUoKSB7XG4gICAgdGhpcy5vcmlnaW5hbEl0ZW1zID0gdGhpcy5pdGVtcy5zbGljZSgpO1xuXG4gIH1cblxuICBvcGVuRHJvcGRvd24oKSB7XG4gICAgdGhpcy5kcm9wZG93bk9wZW5lZCA9ICF0aGlzLmRyb3Bkb3duT3BlbmVkO1xuICB9XG5cbiAgQFZpZXdDaGlsZChcImRyb3Bkb3duSXRlbXNcIikgZHJvcGRvd25pdGVtcyE6IEVsZW1lbnRSZWY7XG5cbiAgb25Ecm9wZG93blNjcm9sbChldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMub25TY3JvbGwpIHtcbiAgICAgIGNvbnN0IGRyb3Bkb3duRWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLmRyb3Bkb3duaXRlbXMubmF0aXZlRWxlbWVudDtcbiAgICAgIGNvbnN0IHNjcm9sbFBvc2l0aW9uID1cbiAgICAgICAgZHJvcGRvd25FbGVtZW50LnNjcm9sbFRvcCArIGRyb3Bkb3duRWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICBjb25zdCB0b3RhbEhlaWdodCA9IGRyb3Bkb3duRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG5cbiAgICAgIGlmIChzY3JvbGxQb3NpdGlvbiA+PSB0b3RhbEhlaWdodCkge1xuICAgICAgICB0aGlzLm9uU2Nyb2xsLmVtaXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZWxlY3RJdGVtKGl0ZW06IGFueSkge1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhpdGVtKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgKHNlbGVjdGVkOiBhbnkpID0+IHNlbGVjdGVkICE9PSBpdGVtXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1swXSA9IGl0ZW07XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtTmFtZSA9IHRoaXMuc2VsZWN0ZWRJdGVtc1swXT8ubGFiZWw7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbUltYWdlID0gdGhpcy5zZWxlY3RlZEl0ZW1zWzBdPy5pbWFnZTtcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuZWQgPSBmYWxzZTtcbiAgICAgIC8vIHRoaXMuaXRlbXMgPSB0aGlzLm9yaWdpbmFsSXRlbXMuc2xpY2UoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG5cbiAgICB9XG4gIH1cblxuICB1bnNlbGVjdEl0ZW0oaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihcbiAgICAgIChzZWxlY3RlZDogYW55KSA9PiBzZWxlY3RlZCAhPT0gaXRlbVxuICAgICk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgfVxuXG4gIHVuc2VsZWN0QWxsKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtTmFtZSA9IFwiXCI7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAvLyB0aGlzLml0ZW1zID0gdGhpcy5vcmlnaW5hbEl0ZW1zLnNsaWNlKCk7XG4gIH1cblxuICBAVmlld0NoaWxkKFwiZHJvcGRvd25cIikgZHJvcGRvd24hOiBFbGVtZW50UmVmO1xuICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6Y2xpY2tcIiwgW1wiJGV2ZW50XCJdKVxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaXNDbGlja0luc2lkZURyb3Bkb3duID0gdGhpcy5kcm9wZG93bi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKFxuICAgICAgZXZlbnQudGFyZ2V0XG4gICAgKTtcbiAgICBpZiAoIWlzQ2xpY2tJbnNpZGVEcm9wZG93bikge1xuICAgICAgdGhpcy5kcm9wZG93bk9wZW5lZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZU5ldygpIHtcbiAgICB0aGlzLm9uQ3JlYXRlTmV3LmVtaXQoKTtcbiAgfVxuXG4gIHNlYXJjaChldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgdGhpcy5kcm9wZG93bk9wZW5lZCA9IHRydWU7XG4gICAgaWYgKGtleUNvZGUgPT09IDggJiYgIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1OYW1lID0gXCJcIjtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtSW1hZ2UgPSBcIlwiO1xuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMub3JpZ2luYWxJdGVtcy5zbGljZSgpO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWFyY2hUZXJtID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAoIXRoaXMub25TZWFyY2gub2JzZXJ2ZXJzLmxlbmd0aCkge1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hUZXJtLnRyaW0oKSA9PT0gXCJcIikge1xuICAgICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLm9yaWdpbmFsSXRlbXMuc2xpY2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5vcmlnaW5hbEl0ZW1zLmZpbHRlcihcbiAgICAgICAgICAgIChpdGVtKSA9PlxuICAgICAgICAgICAgICBpdGVtLmxhYmVsLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCh0aGlzLnNlYXJjaFRlcm0pIHx8XG4gICAgICAgICAgICAgIChpdGVtLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgaXRlbS52YWx1ZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgodGhpcy5zZWFyY2hUZXJtKSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9uU2VhcmNoLmVtaXQodGhpcy5zZWFyY2hUZXJtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVCdXR0b25DbGljayhhY3Rpb246ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBhY3Rpb24oKTtcbiAgICB0aGlzLmJ1dHRvbkNsaWNrLmVtaXQoKTtcbiAgfVxufVxuIiwiPGRpdiAjZHJvcGRvd24gY2xhc3M9XCJkcm9wZG93blwiIFtuZ0NsYXNzXT1cIntcbiAgICBvcGVuZWQ6IHNob3dCb3JkZXIgJiYgZHJvcGRvd25PcGVuZWQsXG4gICAgY2xvc2VkOiBzaG93Qm9yZGVyICYmICFkcm9wZG93bk9wZW5lZCxcbiAgfVwiPlxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZmllbGRcIiBpZD1cImRpdmlzaW9uXCIgW25nQ2xhc3NdPVwie1xuICAgICAgb3BlbmVkOiBzaG93Qm9yZGVyICYmIGRyb3Bkb3duT3BlbmVkLFxuICAgICAgY2xvc2VkOiBzaG93Qm9yZGVyICYmICFkcm9wZG93bk9wZW5lZCxcbiAgICB9XCIgKGNsaWNrKT1cIm9wZW5Ecm9wZG93bigpXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFZhbHVlcyAhPT0gJydcIiBjbGFzcz1cInNlbGVjdGVkXCI+XG4gICAgICAgICAge3sgc2VsZWN0ZWRWYWx1ZXMgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImRhdGFTZWN0aW9uXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIXNlbGVjdGVkSXRlbSAmJiBtdWx0aXBsZVwiIGNsYXNzPVwic2VsZWN0ZWQgc2VsZWN0ZWRMaXN0XCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlbGVjdGVkSXRlbSBvZiBzZWxlY3RlZEl0ZW1zLnNsaWNlKDAsIDMpXCIgY2xhc3M9XCJzZWxlY3RlZC1pdGVtXCI+XG4gICAgICAgICAgPGltZyAqbmdJZj1cInNlbGVjdGVkSXRlbT8uaW1hZ2VcIiBjbGFzcz1cIm11bHRpU2VsZWN0ZWQtaWNvbi1zaXplXCIgW3NyY109XCJzZWxlY3RlZEl0ZW0/LmltYWdlXCIgYWx0PVwiaW1hZ2VcIiAvPlxuICAgICAgICAgIDxzcGFuPnt7IHNlbGVjdGVkSXRlbS5sYWJlbCB9fTwvc3Bhbj4mbmJzcDtcbiAgICAgICAgICA8c3BhbiAoY2xpY2spPVwidW5zZWxlY3RJdGVtKHNlbGVjdGVkSXRlbSlcIiBjbGFzcz1cImNsb3NlLWljb25cIj4mdGltZXM7PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbWFpbmluZy1pdGVtc1wiICpuZ0lmPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAzXCI+XG4gICAgICAgICAgK3t7IHNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMyB9fSBtb3JlXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1maWVsZFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibXVsdGlwbGVcIj5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJkcm9wZG93bl90ZXh0XCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgKGtleXVwKT1cInNlYXJjaCgkZXZlbnQpXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhbXVsdGlwbGVcIj5cbiAgICAgICAgICA8aW1nICpuZ0lmPVwic2VsZWN0ZWRJdGVtSW1hZ2VcIiBjbGFzcz1cInNlbGVjdGVkLWljb24tc2l6ZVwiIFtzcmNdPVwic2VsZWN0ZWRJdGVtSW1hZ2VcIiBhbHQ9XCJpbWFnZVwiIC8+XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZHJvcGRvd25fdGV4dFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRJdGVtTmFtZVwiXG4gICAgICAgICAgICAoa2V5dXApPVwic2VhcmNoKCRldmVudClcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImljb25TZWN0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZG93bi1hcnJvd1wiIFtuZ0NsYXNzXT1cInsgb3BlbmVkOiBkcm9wZG93bk9wZW5lZCwgY2xvc2VkOiAhZHJvcGRvd25PcGVuZWQgfVwiPlxuICAgICAgICA8c3ZnIHdpZHRoPVwiMWVtXCIgdmlld0JveD1cIjAgMCAyNCAyNVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwiZG93bi1hcnJvdy1pbWdcIj5cbiAgICAgICAgICA8ZyBpZD1cIkRvd24gQXJyb3dcIj5cbiAgICAgICAgICAgIDxnIGlkPVwiR3JvdXBcIj5cbiAgICAgICAgICAgICAgPHBhdGggaWQ9XCJQYXRoXCIgZD1cIk02IDkuMTM3NDFMMTIgMTUuMjI5TDE4IDkuMTM3NDFcIiBzdHJva2U9XCIjOEU5QUEwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgPC9nPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ1cC1hcnJvd1wiIFtuZ0NsYXNzXT1cInsgb3BlbmVkOiBkcm9wZG93bk9wZW5lZCwgY2xvc2VkOiAhZHJvcGRvd25PcGVuZWQgfVwiPlxuICAgICAgICA8c3ZnIHdpZHRoPVwiMWVtXCIgdmlld0JveD1cIjAgMCAyNCAyNVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwidXAtYXJyb3ctaW1nXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk0xOCAxNS4yMjlMMTIgOS4xMzc0TDYgMTUuMjI5XCIgc3Ryb2tlPVwiIzhFOUFBMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPHNwYW4gKGNsaWNrKT1cInVuc2VsZWN0QWxsKClcIiAqbmdJZj1cIlxuICAgICAgICAgICAgKHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCB8fCBzZWxlY3RlZEl0ZW1OYW1lICE9ICcnKSAmJiBtdWx0aXBsZVxuICAgICAgICAgIFwiIGNsYXNzPVwiZGVzZWxlY3RcIj4mdGltZXM7PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgI2Ryb3Bkb3duSXRlbXMgY2xhc3M9XCJkcm9wZG93bi1pdGVtc1wiICpuZ0lmPVwiZHJvcGRvd25PcGVuZWRcIiAoc2Nyb2xsKT1cIm9uRHJvcGRvd25TY3JvbGwoJGV2ZW50KVwiPlxuICAgIDxhIGNsYXNzPVwiY3JlYXRlX2J1dHRvblwiIChjbGljayk9XCJjcmVhdGVOZXcoKVwiICpuZ0lmPVwic2hvd0NyZWF0ZU5ld1wiPkNyZWF0ZSBuZXc8L2E+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGlwbGU7IGVsc2Ugc2luZ2xlU2VsZWN0aW9uXCI+XG4gICAgICA8YSBjbGFzcz1cIml0ZW1zIGQtYmxvY2tcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiIChjbGljayk9XCJzZWxlY3RJdGVtKGl0ZW0pXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tZGV0YWlsc1wiPlxuICAgICAgICAgICAgPGltZyAqbmdJZj1cIml0ZW0/LmltYWdlXCIgW3NyY109XCJpdGVtPy5pbWFnZVwiIGFsdD1cIkl0ZW0gSW1hZ2VcIiBjbGFzcz1cIml0ZW0taW1hZ2UgaWNvbi1zaXplXCIgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbS1sYWJlbFwiPnt7IGl0ZW0/LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlXCIgKm5nSWY9XCJpdGVtPy5sYWJlbFwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duX2J1dHRvbnNcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGN1c3RvbUJ1dHRvbnNcIiAoY2xpY2spPVwiaGFuZGxlQnV0dG9uQ2xpY2soYnV0dG9uLmFjdGlvbilcIj5cbiAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiYnV0dG9uLmljb25cIiBbc3R5bGUuY29sb3JdPVwiYnV0dG9uLmNvbG9yXCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlU2VsZWN0aW9uPlxuICAgICAgPGEgY2xhc3M9XCJpdGVtcyBkLWJsb2NrXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIiAoY2xpY2spPVwic2VsZWN0SXRlbShpdGVtKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24taXRlbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWRldGFpbHNcIj5cbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpdGVtPy5pbWFnZVwiIFtzcmNdPVwiaXRlbT8uaW1hZ2VcIiBhbHQ9XCJJdGVtIEltYWdlXCIgY2xhc3M9XCJpdGVtLWltYWdlIGljb24tc2l6ZVwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0tbGFiZWxcIj57eyBpdGVtPy5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZVwiICpuZ0lmPVwiaXRlbT8ubGFiZWxcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bl9idXR0b25zXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBjdXN0b21CdXR0b25zXCIgKGNsaWNrKT1cImhhbmRsZUJ1dHRvbkNsaWNrKGJ1dHRvbi5hY3Rpb24pXCI+XG4gICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImJ1dHRvbi5pY29uXCIgW3N0eWxlLmNvbG9yXT1cImJ1dHRvbi5jb2xvclwiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2E+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable, EventEmitter, Component, Input, Output, ViewChild, HostListener, NgModule } from '@angular/core';
|
|
3
|
-
import { Subject, tap } from 'rxjs';
|
|
4
3
|
import * as i1 from '@angular/forms';
|
|
5
4
|
import { FormsModule } from '@angular/forms';
|
|
6
5
|
import * as i2 from '@angular/common';
|
|
@@ -19,17 +18,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
19
18
|
}], ctorParameters: function () { return []; } });
|
|
20
19
|
|
|
21
20
|
class DropdownComponent {
|
|
22
|
-
set selectedItems(value) {
|
|
23
|
-
this._selectedItems = value;
|
|
24
|
-
this.selectedItemsSubject.next(value);
|
|
25
|
-
}
|
|
26
|
-
get selectedItems() {
|
|
27
|
-
return this._selectedItems;
|
|
28
|
-
}
|
|
29
21
|
constructor() {
|
|
30
|
-
this.
|
|
31
|
-
this.selectedItemsSubject = new Subject();
|
|
32
|
-
this.selectedItems$ = this.selectedItemsSubject.asObservable();
|
|
22
|
+
this.selectedItems = [];
|
|
33
23
|
this.placeholder = "";
|
|
34
24
|
this.items = [];
|
|
35
25
|
this.selectedValues = '';
|
|
@@ -49,14 +39,23 @@ class DropdownComponent {
|
|
|
49
39
|
}
|
|
50
40
|
ngOnInit() {
|
|
51
41
|
this.initialize();
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
console.log('insideIf', newItems[0], this.multiple);
|
|
42
|
+
setTimeout(() => {
|
|
43
|
+
if (this.selectedItems && this.selectedItems.length > 0) {
|
|
44
|
+
console.log('insideIf', this.selectedItems[0], this.multiple);
|
|
56
45
|
if (!this.multiple)
|
|
57
|
-
this.selectItem(
|
|
46
|
+
this.selectItem(this.selectedItems[0]);
|
|
58
47
|
}
|
|
59
|
-
})
|
|
48
|
+
}, 100);
|
|
49
|
+
}
|
|
50
|
+
ngOnChanges(changes) {
|
|
51
|
+
console.log('Onchange triggered');
|
|
52
|
+
if (changes['selectedItems'] && !changes['selectedItems'].isFirstChange()) {
|
|
53
|
+
if (this.selectedItems && this.selectedItems.length > 0) {
|
|
54
|
+
console.log('insideIf', this.selectedItems[0], this.multiple);
|
|
55
|
+
if (!this.multiple)
|
|
56
|
+
this.selectItem(this.selectedItems[0]);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
60
59
|
}
|
|
61
60
|
initialize() {
|
|
62
61
|
this.originalItems = this.items.slice();
|
|
@@ -145,17 +144,17 @@ class DropdownComponent {
|
|
|
145
144
|
this.buttonClick.emit();
|
|
146
145
|
}
|
|
147
146
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
148
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DropdownComponent, selector: "lib-dropdown", inputs: { selectedItems: "selectedItems", multiple: "multiple", scrollable: "scrollable", placeholder: "placeholder", items: "items", showCreateNew: "showCreateNew", selectedValues: "selectedValues", customButtons: "customButtons", showBorder: "showBorder" }, outputs: { buttonClick: "buttonClick", selectedItemsChange: "selectedItemsChange", onScroll: "onScroll", onCreateNew: "onCreateNew", onSearch: "onSearch" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "dropdownitems", first: true, predicate: ["dropdownItems"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div #dropdown class=\"dropdown\" [ngClass]=\"{\n opened: showBorder && dropdownOpened,\n closed: showBorder && !dropdownOpened,\n }\">\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{\n opened: showBorder && dropdownOpened,\n closed: showBorder && !dropdownOpened,\n }\" (click)=\"openDropdown()\">\n <div *ngIf=\"selectedValues !== ''\" class=\"selected\">\n {{ selectedValues }}\n </div>\n <div class=\"dataSection\">\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\n <div *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\" class=\"selected-item\">\n <img *ngIf=\"selectedItem?.image\" class=\"multiSelected-icon-size\" [src]=\"selectedItem?.image\" alt=\"image\" />\n <span>{{ selectedItem.label }}</span> \n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\">×</span>\n </div>\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\n +{{ selectedItems.length - 3 }} more\n </div>\n </div>\n\n <div class=\"input-field\">\n <div *ngIf=\"multiple\">\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" (keyup)=\"search($event)\" />\n </div>\n <div *ngIf=\"!multiple\">\n <img *ngIf=\"selectedItemImage\" class=\"selected-icon-size\" [src]=\"selectedItemImage\" alt=\"image\" />\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" [(ngModel)]=\"selectedItemName\"\n (keyup)=\"search($event)\" />\n </div>\n </div>\n </div>\n\n <div class=\"iconSection\">\n <div class=\"down-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"down-arrow-img\">\n <g id=\"Down Arrow\">\n <g id=\"Group\">\n <path id=\"Path\" d=\"M6 9.13741L12 15.229L18 9.13741\" stroke=\"#8E9AA0\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </g>\n </svg>\n </div>\n <div class=\"up-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\">\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div>\n <span (click)=\"unselectAll()\" *ngIf=\"\n (selectedItems.length > 0 || selectedItemName != '') && multiple\n \" class=\"deselect\">×</span>\n </div>\n </div>\n </div>\n\n <div #dropdownItems class=\"dropdown-items\" *ngIf=\"dropdownOpened\" (scroll)=\"onDropdownScroll($event)\">\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\">Create new</a>\n\n <ng-container *ngIf=\"multiple; else singleSelection\">\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\n <div class=\"dropdown-item\">\n <div class=\"item-details\">\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\n <span class=\"item-label\">{{ item?.label }}</span>\n <div class=\"space\" *ngIf=\"item?.label\"></div>\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\n </button>\n </div>\n </div>\n </div>\n </a>\n </ng-container>\n\n <ng-template #singleSelection>\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\n <div class=\"dropdown-item\">\n <div class=\"item-details\">\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\n <span class=\"item-label\">{{ item?.label }}</span>\n <div class=\"space\" *ngIf=\"item?.label\"></div>\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\n </button>\n </div>\n </div>\n </div>\n </a>\n </ng-template>\n </div>\n</div>", styles: [".dropdown{background:#fff;border-radius:6px}.dropdown .dropdown-field{display:flex;background:#fff;border-radius:6px;position:relative;cursor:pointer}.dropdown .dropdown-field .selected{margin:5px}.dropdown .dropdown-field .selected.selectedList{display:flex;flex-wrap:wrap}.dropdown .dropdown-field .selected .selected-item{background:#cdd0d1;display:inline;margin:5px;padding:3px;border-radius:5px;font-size:small}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:3px;font-size:smaller;display:block}.dropdown .dropdown-field .input-field .dropdown_text{width:78%;border:none;padding:10px;margin-left:3px;outline:none;box-sizing:border-box;font-size:14px}@media (max-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{width:53%;font-size:12px;margin-left:3px;padding-left:2px}}.dropdown .dropdown-field.closed{border:1px solid #d8d8d8}.dropdown .dropdown-field.opened{border-bottom:1px solid #d8d8d8}.dropdown .dropdown-items{overflow-y:auto;overflow-x:hidden}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:5px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:7px}}.dropdown .dropdown-items .create_button{text-decoration:none;line-height:41px;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .create_button{padding-left:8px}}.dropdown .dropdown-items .items{text-decoration:none;color:inherit;line-height:41px;position:relative;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .items{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}.dropdown .dropdown-items .items:hover{background:#cdd0d1;border-radius:6px}.dropdown .dropdown-items .items:hover button{visibility:visible}.dropdown .dropdown-items .items .dropdown_buttons{display:inline;position:absolute;right:5%}.dropdown .dropdown-items .items button{border:0;background:transparent;visibility:hidden}.dropdown.opened{border:1px #d8d8d8 solid}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#b2b2b2;border-radius:6px}.space{width:10px}.item-details{display:flex;align-items:center}.icon-size{width:25px;height:20px;margin-right:7px}.smallSpace{width:3px}.selected-icon-size{width:25px;height:20px;margin-left:10px}@media (max-width: 576px){.selected-icon-size{width:21px;height:15px;margin-right:7px;margin-bottom:1px}}.multiSelected-icon-size{width:25px;height:20px;margin-left:1px;margin-bottom:1px;margin-right:3px}.dataSection{width:calc(100% - 48px)}.iconSection{width:48px;padding:6px}.down-arrow,.up-arrow,.deselect{width:20px;height:20px;font-size:18px;display:flex;align-items:center;justify-content:center;cursor:pointer}.down-arrow{cursor:pointer}.down-arrow.opened{display:none}.down-arrow.closed{display:block}.up-arrow{cursor:pointer}.up-arrow.closed{display:none}.iconSection{display:flex;flex-direction:row-reverse}\n"], dependencies: [{ kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
147
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DropdownComponent, selector: "lib-dropdown", inputs: { multiple: "multiple", scrollable: "scrollable", selectedItems: "selectedItems", placeholder: "placeholder", items: "items", showCreateNew: "showCreateNew", selectedValues: "selectedValues", customButtons: "customButtons", showBorder: "showBorder" }, outputs: { buttonClick: "buttonClick", selectedItemsChange: "selectedItemsChange", onScroll: "onScroll", onCreateNew: "onCreateNew", onSearch: "onSearch" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "dropdownitems", first: true, predicate: ["dropdownItems"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #dropdown class=\"dropdown\" [ngClass]=\"{\n opened: showBorder && dropdownOpened,\n closed: showBorder && !dropdownOpened,\n }\">\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{\n opened: showBorder && dropdownOpened,\n closed: showBorder && !dropdownOpened,\n }\" (click)=\"openDropdown()\">\n <div *ngIf=\"selectedValues !== ''\" class=\"selected\">\n {{ selectedValues }}\n </div>\n <div class=\"dataSection\">\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\n <div *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\" class=\"selected-item\">\n <img *ngIf=\"selectedItem?.image\" class=\"multiSelected-icon-size\" [src]=\"selectedItem?.image\" alt=\"image\" />\n <span>{{ selectedItem.label }}</span> \n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\">×</span>\n </div>\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\n +{{ selectedItems.length - 3 }} more\n </div>\n </div>\n\n <div class=\"input-field\">\n <div *ngIf=\"multiple\">\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" (keyup)=\"search($event)\" />\n </div>\n <div *ngIf=\"!multiple\">\n <img *ngIf=\"selectedItemImage\" class=\"selected-icon-size\" [src]=\"selectedItemImage\" alt=\"image\" />\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" [(ngModel)]=\"selectedItemName\"\n (keyup)=\"search($event)\" />\n </div>\n </div>\n </div>\n\n <div class=\"iconSection\">\n <div class=\"down-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"down-arrow-img\">\n <g id=\"Down Arrow\">\n <g id=\"Group\">\n <path id=\"Path\" d=\"M6 9.13741L12 15.229L18 9.13741\" stroke=\"#8E9AA0\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </g>\n </svg>\n </div>\n <div class=\"up-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\">\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div>\n <span (click)=\"unselectAll()\" *ngIf=\"\n (selectedItems.length > 0 || selectedItemName != '') && multiple\n \" class=\"deselect\">×</span>\n </div>\n </div>\n </div>\n\n <div #dropdownItems class=\"dropdown-items\" *ngIf=\"dropdownOpened\" (scroll)=\"onDropdownScroll($event)\">\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\">Create new</a>\n\n <ng-container *ngIf=\"multiple; else singleSelection\">\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\n <div class=\"dropdown-item\">\n <div class=\"item-details\">\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\n <span class=\"item-label\">{{ item?.label }}</span>\n <div class=\"space\" *ngIf=\"item?.label\"></div>\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\n </button>\n </div>\n </div>\n </div>\n </a>\n </ng-container>\n\n <ng-template #singleSelection>\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\n <div class=\"dropdown-item\">\n <div class=\"item-details\">\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\n <span class=\"item-label\">{{ item?.label }}</span>\n <div class=\"space\" *ngIf=\"item?.label\"></div>\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\n </button>\n </div>\n </div>\n </div>\n </a>\n </ng-template>\n </div>\n</div>", styles: [".dropdown{background:#fff;border-radius:6px}.dropdown .dropdown-field{display:flex;background:#fff;border-radius:6px;position:relative;cursor:pointer}.dropdown .dropdown-field .selected{margin:5px}.dropdown .dropdown-field .selected.selectedList{display:flex;flex-wrap:wrap}.dropdown .dropdown-field .selected .selected-item{background:#cdd0d1;display:inline;margin:5px;padding:3px;border-radius:5px;font-size:small}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:3px;font-size:smaller;display:block}.dropdown .dropdown-field .input-field .dropdown_text{width:78%;border:none;padding:10px;margin-left:3px;outline:none;box-sizing:border-box;font-size:14px}@media (max-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{width:53%;font-size:12px;margin-left:3px;padding-left:2px}}.dropdown .dropdown-field.closed{border:1px solid #d8d8d8}.dropdown .dropdown-field.opened{border-bottom:1px solid #d8d8d8}.dropdown .dropdown-items{overflow-y:auto;overflow-x:hidden}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:5px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:7px}}.dropdown .dropdown-items .create_button{text-decoration:none;line-height:41px;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .create_button{padding-left:8px}}.dropdown .dropdown-items .items{text-decoration:none;color:inherit;line-height:41px;position:relative;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .items{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}.dropdown .dropdown-items .items:hover{background:#cdd0d1;border-radius:6px}.dropdown .dropdown-items .items:hover button{visibility:visible}.dropdown .dropdown-items .items .dropdown_buttons{display:inline;position:absolute;right:5%}.dropdown .dropdown-items .items button{border:0;background:transparent;visibility:hidden}.dropdown.opened{border:1px #d8d8d8 solid}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#b2b2b2;border-radius:6px}.space{width:10px}.item-details{display:flex;align-items:center}.icon-size{width:25px;height:20px;margin-right:7px}.smallSpace{width:3px}.selected-icon-size{width:25px;height:20px;margin-left:10px}@media (max-width: 576px){.selected-icon-size{width:21px;height:15px;margin-right:7px;margin-bottom:1px}}.multiSelected-icon-size{width:25px;height:20px;margin-left:1px;margin-bottom:1px;margin-right:3px}.dataSection{width:calc(100% - 48px)}.iconSection{width:48px;padding:6px}.down-arrow,.up-arrow,.deselect{width:20px;height:20px;font-size:18px;display:flex;align-items:center;justify-content:center;cursor:pointer}.down-arrow{cursor:pointer}.down-arrow.opened{display:none}.down-arrow.closed{display:block}.up-arrow{cursor:pointer}.up-arrow.closed{display:none}.iconSection{display:flex;flex-direction:row-reverse}\n"], dependencies: [{ kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
149
148
|
}
|
|
150
149
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
151
150
|
type: Component,
|
|
152
151
|
args: [{ selector: "lib-dropdown", template: "<div #dropdown class=\"dropdown\" [ngClass]=\"{\n opened: showBorder && dropdownOpened,\n closed: showBorder && !dropdownOpened,\n }\">\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{\n opened: showBorder && dropdownOpened,\n closed: showBorder && !dropdownOpened,\n }\" (click)=\"openDropdown()\">\n <div *ngIf=\"selectedValues !== ''\" class=\"selected\">\n {{ selectedValues }}\n </div>\n <div class=\"dataSection\">\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\n <div *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\" class=\"selected-item\">\n <img *ngIf=\"selectedItem?.image\" class=\"multiSelected-icon-size\" [src]=\"selectedItem?.image\" alt=\"image\" />\n <span>{{ selectedItem.label }}</span> \n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\">×</span>\n </div>\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\n +{{ selectedItems.length - 3 }} more\n </div>\n </div>\n\n <div class=\"input-field\">\n <div *ngIf=\"multiple\">\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" (keyup)=\"search($event)\" />\n </div>\n <div *ngIf=\"!multiple\">\n <img *ngIf=\"selectedItemImage\" class=\"selected-icon-size\" [src]=\"selectedItemImage\" alt=\"image\" />\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" [(ngModel)]=\"selectedItemName\"\n (keyup)=\"search($event)\" />\n </div>\n </div>\n </div>\n\n <div class=\"iconSection\">\n <div class=\"down-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"down-arrow-img\">\n <g id=\"Down Arrow\">\n <g id=\"Group\">\n <path id=\"Path\" d=\"M6 9.13741L12 15.229L18 9.13741\" stroke=\"#8E9AA0\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </g>\n </svg>\n </div>\n <div class=\"up-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\">\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div>\n <span (click)=\"unselectAll()\" *ngIf=\"\n (selectedItems.length > 0 || selectedItemName != '') && multiple\n \" class=\"deselect\">×</span>\n </div>\n </div>\n </div>\n\n <div #dropdownItems class=\"dropdown-items\" *ngIf=\"dropdownOpened\" (scroll)=\"onDropdownScroll($event)\">\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\">Create new</a>\n\n <ng-container *ngIf=\"multiple; else singleSelection\">\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\n <div class=\"dropdown-item\">\n <div class=\"item-details\">\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\n <span class=\"item-label\">{{ item?.label }}</span>\n <div class=\"space\" *ngIf=\"item?.label\"></div>\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\n </button>\n </div>\n </div>\n </div>\n </a>\n </ng-container>\n\n <ng-template #singleSelection>\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\n <div class=\"dropdown-item\">\n <div class=\"item-details\">\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\n <span class=\"item-label\">{{ item?.label }}</span>\n <div class=\"space\" *ngIf=\"item?.label\"></div>\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\n </button>\n </div>\n </div>\n </div>\n </a>\n </ng-template>\n </div>\n</div>", styles: [".dropdown{background:#fff;border-radius:6px}.dropdown .dropdown-field{display:flex;background:#fff;border-radius:6px;position:relative;cursor:pointer}.dropdown .dropdown-field .selected{margin:5px}.dropdown .dropdown-field .selected.selectedList{display:flex;flex-wrap:wrap}.dropdown .dropdown-field .selected .selected-item{background:#cdd0d1;display:inline;margin:5px;padding:3px;border-radius:5px;font-size:small}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:3px;font-size:smaller;display:block}.dropdown .dropdown-field .input-field .dropdown_text{width:78%;border:none;padding:10px;margin-left:3px;outline:none;box-sizing:border-box;font-size:14px}@media (max-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{width:53%;font-size:12px;margin-left:3px;padding-left:2px}}.dropdown .dropdown-field.closed{border:1px solid #d8d8d8}.dropdown .dropdown-field.opened{border-bottom:1px solid #d8d8d8}.dropdown .dropdown-items{overflow-y:auto;overflow-x:hidden}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:5px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:7px}}.dropdown .dropdown-items .create_button{text-decoration:none;line-height:41px;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .create_button{padding-left:8px}}.dropdown .dropdown-items .items{text-decoration:none;color:inherit;line-height:41px;position:relative;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .items{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}.dropdown .dropdown-items .items:hover{background:#cdd0d1;border-radius:6px}.dropdown .dropdown-items .items:hover button{visibility:visible}.dropdown .dropdown-items .items .dropdown_buttons{display:inline;position:absolute;right:5%}.dropdown .dropdown-items .items button{border:0;background:transparent;visibility:hidden}.dropdown.opened{border:1px #d8d8d8 solid}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#b2b2b2;border-radius:6px}.space{width:10px}.item-details{display:flex;align-items:center}.icon-size{width:25px;height:20px;margin-right:7px}.smallSpace{width:3px}.selected-icon-size{width:25px;height:20px;margin-left:10px}@media (max-width: 576px){.selected-icon-size{width:21px;height:15px;margin-right:7px;margin-bottom:1px}}.multiSelected-icon-size{width:25px;height:20px;margin-left:1px;margin-bottom:1px;margin-right:3px}.dataSection{width:calc(100% - 48px)}.iconSection{width:48px;padding:6px}.down-arrow,.up-arrow,.deselect{width:20px;height:20px;font-size:18px;display:flex;align-items:center;justify-content:center;cursor:pointer}.down-arrow{cursor:pointer}.down-arrow.opened{display:none}.down-arrow.closed{display:block}.up-arrow{cursor:pointer}.up-arrow.closed{display:none}.iconSection{display:flex;flex-direction:row-reverse}\n"] }]
|
|
153
|
-
}], ctorParameters: function () { return []; }, propDecorators: {
|
|
154
|
-
type: Input
|
|
155
|
-
}], multiple: [{
|
|
152
|
+
}], ctorParameters: function () { return []; }, propDecorators: { multiple: [{
|
|
156
153
|
type: Input
|
|
157
154
|
}], scrollable: [{
|
|
158
155
|
type: Input
|
|
156
|
+
}], selectedItems: [{
|
|
157
|
+
type: Input
|
|
159
158
|
}], placeholder: [{
|
|
160
159
|
type: Input
|
|
161
160
|
}], items: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"piserve-tech-drop-down.mjs","sources":["../../../projects/dropdown/src/lib/dropdown.service.ts","../../../projects/dropdown/src/lib/dropdown.component.ts","../../../projects/dropdown/src/lib/dropdown.component.html","../../../projects/dropdown/src/lib/dropdown.module.ts","../../../projects/dropdown/src/public-api.ts","../../../projects/dropdown/src/piserve-tech-drop-down.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DropdownService {\n\n constructor() { }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChange,\n SimpleChanges,\n ViewChild,\n} from \"@angular/core\";\nimport { BehaviorSubject, Observable, Subject, tap } from \"rxjs\";\n\ninterface DropdownItem {\n value: string;\n label: string;\n image: string;\n}\n\n@Component({\n selector: \"lib-dropdown\",\n templateUrl: \"./dropdown.component.html\",\n styleUrls: [\"./dropdown.component.scss\"],\n})\nexport class DropdownComponent implements OnInit {\n\n @Input() set selectedItems(value: any[]) {\n this._selectedItems = value;\n this.selectedItemsSubject.next(value);\n }\n get selectedItems(): any[] {\n return this._selectedItems;\n }\n\n private _selectedItems: any[] = [];\n private selectedItemsSubject = new Subject<any[]>();\n selectedItems$: Observable<any[]> = this.selectedItemsSubject.asObservable();\n\n\n @Input() multiple!: boolean;\n @Input() scrollable!: boolean;\n @Input() placeholder: String = \"\";\n @Input() items: DropdownItem[] = [];\n @Input() showCreateNew!: boolean;\n @Input() selectedValues: string = '';\n @Input() customButtons: {\n label: string;\n icon: string;\n color: string;\n action: () => void;\n }[] = [];\n @Input() showBorder: boolean = true;\n @Output() buttonClick: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() selectedItemsChange: EventEmitter<any[]> = new EventEmitter<\n any[]\n >();\n @Output() onScroll: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onCreateNew: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onSearch: EventEmitter<string> = new EventEmitter<string>();\n\n dropdownOpened: boolean = false;\n selectedItem: any;\n selectedItemName: string = \"\";\n selectedItemImage: string = \"\";\n originalItems: DropdownItem[] = [];\n searchTerm: string = \"\";\n initialized: boolean = false;\n\n constructor() { }\n\n ngOnInit(): void {\n this.initialize();\n this.selectedItems$.pipe(\n tap(newItems => {\n console.log('ngAfterViewInit',newItems);\n if (newItems && newItems.length > 0) {\n console.log('insideIf', newItems[0], this.multiple);\n if (!this.multiple) this.selectItem(newItems[0]);\n }\n })\n ).subscribe(); \n }\n\n initialize() {\n this.originalItems = this.items.slice();\n\n }\n\n openDropdown() {\n this.dropdownOpened = !this.dropdownOpened;\n }\n\n @ViewChild(\"dropdownItems\") dropdownitems!: ElementRef;\n\n onDropdownScroll(event: any): void {\n if (this.onScroll) {\n const dropdownElement: HTMLElement = this.dropdownitems.nativeElement;\n const scrollPosition =\n dropdownElement.scrollTop + dropdownElement.clientHeight;\n const totalHeight = dropdownElement.scrollHeight;\n\n if (scrollPosition >= totalHeight) {\n this.onScroll.emit();\n }\n }\n }\n\n selectItem(item: any) {\n if (this.multiple) {\n if (!this.selectedItems.includes(item)) {\n this.selectedItems.push(item);\n this.selectedItemsChange.emit(this.selectedItems);\n } else {\n this.selectedItems = this.selectedItems.filter(\n (selected: any) => selected !== item\n );\n this.selectedItemsChange.emit(this.selectedItems);\n }\n } else {\n this.selectedItems[0] = item;\n\n this.selectedItemName = this.selectedItems[0]?.label;\n this.selectedItemImage = this.selectedItems[0]?.image;\n this.dropdownOpened = false;\n // this.items = this.originalItems.slice();\n this.selectedItemsChange.emit(this.selectedItems);\n\n }\n }\n\n unselectItem(item: any): void {\n this.selectedItems = this.selectedItems.filter(\n (selected: any) => selected !== item\n );\n this.selectedItemsChange.emit(this.selectedItems);\n }\n\n unselectAll() {\n this.selectedItems = [];\n this.selectedItemName = \"\";\n this.selectedItemsChange.emit(this.selectedItems);\n // this.items = this.originalItems.slice();\n }\n\n @ViewChild(\"dropdown\") dropdown!: ElementRef;\n @HostListener(\"document:click\", [\"$event\"])\n onDocumentClick(event: Event): void {\n const isClickInsideDropdown = this.dropdown.nativeElement.contains(\n event.target\n );\n if (!isClickInsideDropdown) {\n this.dropdownOpened = false;\n }\n }\n\n createNew() {\n this.onCreateNew.emit();\n }\n\n search(event: any): void {\n const keyCode = event.keyCode;\n this.dropdownOpened = true;\n if (keyCode === 8 && !this.multiple) {\n this.selectedItems = [];\n this.selectedItemName = \"\";\n this.selectedItemImage = \"\";\n this.items = this.originalItems.slice();\n this.selectedItemsChange.emit(this.selectedItems);\n } else {\n this.searchTerm = event.target.value.toLowerCase();\n if (!this.onSearch.observers.length) {\n if (this.searchTerm.trim() === \"\") {\n this.items = this.originalItems.slice();\n } else {\n this.items = this.originalItems.filter(\n (item) =>\n item.label.toLowerCase().startsWith(this.searchTerm) ||\n (item.value &&\n item.value.toLowerCase().startsWith(this.searchTerm))\n );\n }\n } else {\n this.onSearch.emit(this.searchTerm);\n }\n }\n }\n\n handleButtonClick(action: () => void): void {\n action();\n this.buttonClick.emit();\n }\n}\n","<div #dropdown class=\"dropdown\" [ngClass]=\"{\n opened: showBorder && dropdownOpened,\n closed: showBorder && !dropdownOpened,\n }\">\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{\n opened: showBorder && dropdownOpened,\n closed: showBorder && !dropdownOpened,\n }\" (click)=\"openDropdown()\">\n <div *ngIf=\"selectedValues !== ''\" class=\"selected\">\n {{ selectedValues }}\n </div>\n <div class=\"dataSection\">\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\n <div *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\" class=\"selected-item\">\n <img *ngIf=\"selectedItem?.image\" class=\"multiSelected-icon-size\" [src]=\"selectedItem?.image\" alt=\"image\" />\n <span>{{ selectedItem.label }}</span> \n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\">×</span>\n </div>\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\n +{{ selectedItems.length - 3 }} more\n </div>\n </div>\n\n <div class=\"input-field\">\n <div *ngIf=\"multiple\">\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" (keyup)=\"search($event)\" />\n </div>\n <div *ngIf=\"!multiple\">\n <img *ngIf=\"selectedItemImage\" class=\"selected-icon-size\" [src]=\"selectedItemImage\" alt=\"image\" />\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" [(ngModel)]=\"selectedItemName\"\n (keyup)=\"search($event)\" />\n </div>\n </div>\n </div>\n\n <div class=\"iconSection\">\n <div class=\"down-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"down-arrow-img\">\n <g id=\"Down Arrow\">\n <g id=\"Group\">\n <path id=\"Path\" d=\"M6 9.13741L12 15.229L18 9.13741\" stroke=\"#8E9AA0\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </g>\n </svg>\n </div>\n <div class=\"up-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\">\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div>\n <span (click)=\"unselectAll()\" *ngIf=\"\n (selectedItems.length > 0 || selectedItemName != '') && multiple\n \" class=\"deselect\">×</span>\n </div>\n </div>\n </div>\n\n <div #dropdownItems class=\"dropdown-items\" *ngIf=\"dropdownOpened\" (scroll)=\"onDropdownScroll($event)\">\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\">Create new</a>\n\n <ng-container *ngIf=\"multiple; else singleSelection\">\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\n <div class=\"dropdown-item\">\n <div class=\"item-details\">\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\n <span class=\"item-label\">{{ item?.label }}</span>\n <div class=\"space\" *ngIf=\"item?.label\"></div>\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\n </button>\n </div>\n </div>\n </div>\n </a>\n </ng-container>\n\n <ng-template #singleSelection>\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\n <div class=\"dropdown-item\">\n <div class=\"item-details\">\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\n <span class=\"item-label\">{{ item?.label }}</span>\n <div class=\"space\" *ngIf=\"item?.label\"></div>\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\n </button>\n </div>\n </div>\n </div>\n </a>\n </ng-template>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { DropdownComponent } from './dropdown.component';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\n\n\n@NgModule({\n declarations: [\n DropdownComponent\n ],\n imports: [\n FormsModule,\n CommonModule,\n ],\n exports: [\n DropdownComponent\n ]\n})\nexport class DropdownModule { }\n","/*\n * Public API Surface of dropdown\n */\n\nexport * from './lib/dropdown.service';\nexport * from './lib/dropdown.component';\nexport * from './lib/dropdown.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"piserve-tech-drop-down.mjs","sources":["../../../projects/dropdown/src/lib/dropdown.service.ts","../../../projects/dropdown/src/lib/dropdown.component.ts","../../../projects/dropdown/src/lib/dropdown.component.html","../../../projects/dropdown/src/lib/dropdown.module.ts","../../../projects/dropdown/src/public-api.ts","../../../projects/dropdown/src/piserve-tech-drop-down.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DropdownService {\n\n constructor() { }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChange,\n SimpleChanges,\n ViewChild,\n} from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\n\ninterface DropdownItem {\n value: string;\n label: string;\n image: string;\n}\n\n@Component({\n selector: \"lib-dropdown\",\n templateUrl: \"./dropdown.component.html\",\n styleUrls: [\"./dropdown.component.scss\"],\n})\nexport class DropdownComponent implements OnInit, OnChanges {\n\n @Input() multiple!: boolean;\n @Input() scrollable!: boolean;\n @Input() selectedItems: any[] = [];\n @Input() placeholder: String = \"\";\n @Input() items: DropdownItem[] = [];\n @Input() showCreateNew!: boolean;\n @Input() selectedValues: string = '';\n @Input() customButtons: {\n label: string;\n icon: string;\n color: string;\n action: () => void;\n }[] = [];\n @Input() showBorder: boolean = true;\n @Output() buttonClick: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() selectedItemsChange: EventEmitter<any[]> = new EventEmitter<\n any[]\n >();\n @Output() onScroll: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onCreateNew: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onSearch: EventEmitter<string> = new EventEmitter<string>();\n\n dropdownOpened: boolean = false;\n selectedItem: any;\n selectedItemName: string = \"\";\n selectedItemImage: string = \"\";\n originalItems: DropdownItem[] = [];\n searchTerm: string = \"\";\n initialized: boolean = false;\n\n constructor() { }\n\n ngOnInit(): void {\n this.initialize();\n setTimeout(() => {\n if (this.selectedItems && this.selectedItems.length > 0) {\n console.log('insideIf', this.selectedItems[0], this.multiple);\n if (!this.multiple) this.selectItem(this.selectedItems[0]);\n }\n }, 100);\n }\n \n ngOnChanges(changes: SimpleChanges): void {\n console.log('Onchange triggered');\n if (changes['selectedItems'] && !changes['selectedItems'].isFirstChange()) {\n if (this.selectedItems && this.selectedItems.length > 0) {\n console.log('insideIf', this.selectedItems[0], this.multiple);\n if (!this.multiple) this.selectItem(this.selectedItems[0]);\n }\n }\n }\n\n initialize() {\n this.originalItems = this.items.slice();\n\n }\n\n openDropdown() {\n this.dropdownOpened = !this.dropdownOpened;\n }\n\n @ViewChild(\"dropdownItems\") dropdownitems!: ElementRef;\n\n onDropdownScroll(event: any): void {\n if (this.onScroll) {\n const dropdownElement: HTMLElement = this.dropdownitems.nativeElement;\n const scrollPosition =\n dropdownElement.scrollTop + dropdownElement.clientHeight;\n const totalHeight = dropdownElement.scrollHeight;\n\n if (scrollPosition >= totalHeight) {\n this.onScroll.emit();\n }\n }\n }\n\n selectItem(item: any) {\n if (this.multiple) {\n if (!this.selectedItems.includes(item)) {\n this.selectedItems.push(item);\n this.selectedItemsChange.emit(this.selectedItems);\n } else {\n this.selectedItems = this.selectedItems.filter(\n (selected: any) => selected !== item\n );\n this.selectedItemsChange.emit(this.selectedItems);\n }\n } else {\n this.selectedItems[0] = item;\n\n this.selectedItemName = this.selectedItems[0]?.label;\n this.selectedItemImage = this.selectedItems[0]?.image;\n this.dropdownOpened = false;\n // this.items = this.originalItems.slice();\n this.selectedItemsChange.emit(this.selectedItems);\n\n }\n }\n\n unselectItem(item: any): void {\n this.selectedItems = this.selectedItems.filter(\n (selected: any) => selected !== item\n );\n this.selectedItemsChange.emit(this.selectedItems);\n }\n\n unselectAll() {\n this.selectedItems = [];\n this.selectedItemName = \"\";\n this.selectedItemsChange.emit(this.selectedItems);\n // this.items = this.originalItems.slice();\n }\n\n @ViewChild(\"dropdown\") dropdown!: ElementRef;\n @HostListener(\"document:click\", [\"$event\"])\n onDocumentClick(event: Event): void {\n const isClickInsideDropdown = this.dropdown.nativeElement.contains(\n event.target\n );\n if (!isClickInsideDropdown) {\n this.dropdownOpened = false;\n }\n }\n\n createNew() {\n this.onCreateNew.emit();\n }\n\n search(event: any): void {\n const keyCode = event.keyCode;\n this.dropdownOpened = true;\n if (keyCode === 8 && !this.multiple) {\n this.selectedItems = [];\n this.selectedItemName = \"\";\n this.selectedItemImage = \"\";\n this.items = this.originalItems.slice();\n this.selectedItemsChange.emit(this.selectedItems);\n } else {\n this.searchTerm = event.target.value.toLowerCase();\n if (!this.onSearch.observers.length) {\n if (this.searchTerm.trim() === \"\") {\n this.items = this.originalItems.slice();\n } else {\n this.items = this.originalItems.filter(\n (item) =>\n item.label.toLowerCase().startsWith(this.searchTerm) ||\n (item.value &&\n item.value.toLowerCase().startsWith(this.searchTerm))\n );\n }\n } else {\n this.onSearch.emit(this.searchTerm);\n }\n }\n }\n\n handleButtonClick(action: () => void): void {\n action();\n this.buttonClick.emit();\n }\n}\n","<div #dropdown class=\"dropdown\" [ngClass]=\"{\n opened: showBorder && dropdownOpened,\n closed: showBorder && !dropdownOpened,\n }\">\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{\n opened: showBorder && dropdownOpened,\n closed: showBorder && !dropdownOpened,\n }\" (click)=\"openDropdown()\">\n <div *ngIf=\"selectedValues !== ''\" class=\"selected\">\n {{ selectedValues }}\n </div>\n <div class=\"dataSection\">\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\n <div *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\" class=\"selected-item\">\n <img *ngIf=\"selectedItem?.image\" class=\"multiSelected-icon-size\" [src]=\"selectedItem?.image\" alt=\"image\" />\n <span>{{ selectedItem.label }}</span> \n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\">×</span>\n </div>\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\n +{{ selectedItems.length - 3 }} more\n </div>\n </div>\n\n <div class=\"input-field\">\n <div *ngIf=\"multiple\">\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" (keyup)=\"search($event)\" />\n </div>\n <div *ngIf=\"!multiple\">\n <img *ngIf=\"selectedItemImage\" class=\"selected-icon-size\" [src]=\"selectedItemImage\" alt=\"image\" />\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" [(ngModel)]=\"selectedItemName\"\n (keyup)=\"search($event)\" />\n </div>\n </div>\n </div>\n\n <div class=\"iconSection\">\n <div class=\"down-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"down-arrow-img\">\n <g id=\"Down Arrow\">\n <g id=\"Group\">\n <path id=\"Path\" d=\"M6 9.13741L12 15.229L18 9.13741\" stroke=\"#8E9AA0\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </g>\n </svg>\n </div>\n <div class=\"up-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\">\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div>\n <span (click)=\"unselectAll()\" *ngIf=\"\n (selectedItems.length > 0 || selectedItemName != '') && multiple\n \" class=\"deselect\">×</span>\n </div>\n </div>\n </div>\n\n <div #dropdownItems class=\"dropdown-items\" *ngIf=\"dropdownOpened\" (scroll)=\"onDropdownScroll($event)\">\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\">Create new</a>\n\n <ng-container *ngIf=\"multiple; else singleSelection\">\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\n <div class=\"dropdown-item\">\n <div class=\"item-details\">\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\n <span class=\"item-label\">{{ item?.label }}</span>\n <div class=\"space\" *ngIf=\"item?.label\"></div>\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\n </button>\n </div>\n </div>\n </div>\n </a>\n </ng-container>\n\n <ng-template #singleSelection>\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\n <div class=\"dropdown-item\">\n <div class=\"item-details\">\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\n <span class=\"item-label\">{{ item?.label }}</span>\n <div class=\"space\" *ngIf=\"item?.label\"></div>\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\n </button>\n </div>\n </div>\n </div>\n </a>\n </ng-template>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { DropdownComponent } from './dropdown.component';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\n\n\n@NgModule({\n declarations: [\n DropdownComponent\n ],\n imports: [\n FormsModule,\n CommonModule,\n ],\n exports: [\n DropdownComponent\n ]\n})\nexport class DropdownModule { }\n","/*\n * Public API Surface of dropdown\n */\n\nexport * from './lib/dropdown.service';\nexport * from './lib/dropdown.component';\nexport * from './lib/dropdown.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,14 @@
|
|
|
1
|
-
import { ElementRef, EventEmitter, OnInit } from "@angular/core";
|
|
2
|
-
import { Observable } from "rxjs";
|
|
1
|
+
import { ElementRef, EventEmitter, OnChanges, OnInit, SimpleChanges } from "@angular/core";
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
interface DropdownItem {
|
|
5
4
|
value: string;
|
|
6
5
|
label: string;
|
|
7
6
|
image: string;
|
|
8
7
|
}
|
|
9
|
-
export declare class DropdownComponent implements OnInit {
|
|
10
|
-
set selectedItems(value: any[]);
|
|
11
|
-
get selectedItems(): any[];
|
|
12
|
-
private _selectedItems;
|
|
13
|
-
private selectedItemsSubject;
|
|
14
|
-
selectedItems$: Observable<any[]>;
|
|
8
|
+
export declare class DropdownComponent implements OnInit, OnChanges {
|
|
15
9
|
multiple: boolean;
|
|
16
10
|
scrollable: boolean;
|
|
11
|
+
selectedItems: any[];
|
|
17
12
|
placeholder: String;
|
|
18
13
|
items: DropdownItem[];
|
|
19
14
|
showCreateNew: boolean;
|
|
@@ -39,6 +34,7 @@ export declare class DropdownComponent implements OnInit {
|
|
|
39
34
|
initialized: boolean;
|
|
40
35
|
constructor();
|
|
41
36
|
ngOnInit(): void;
|
|
37
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
42
38
|
initialize(): void;
|
|
43
39
|
openDropdown(): void;
|
|
44
40
|
dropdownitems: ElementRef;
|
|
@@ -52,6 +48,6 @@ export declare class DropdownComponent implements OnInit {
|
|
|
52
48
|
search(event: any): void;
|
|
53
49
|
handleButtonClick(action: () => void): void;
|
|
54
50
|
static ɵfac: i0.ɵɵFactoryDeclaration<DropdownComponent, never>;
|
|
55
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DropdownComponent, "lib-dropdown", never, { "
|
|
51
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DropdownComponent, "lib-dropdown", never, { "multiple": { "alias": "multiple"; "required": false; }; "scrollable": { "alias": "scrollable"; "required": false; }; "selectedItems": { "alias": "selectedItems"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "items": { "alias": "items"; "required": false; }; "showCreateNew": { "alias": "showCreateNew"; "required": false; }; "selectedValues": { "alias": "selectedValues"; "required": false; }; "customButtons": { "alias": "customButtons"; "required": false; }; "showBorder": { "alias": "showBorder"; "required": false; }; }, { "buttonClick": "buttonClick"; "selectedItemsChange": "selectedItemsChange"; "onScroll": "onScroll"; "onCreateNew": "onCreateNew"; "onSearch": "onSearch"; }, never, never, false, never>;
|
|
56
52
|
}
|
|
57
53
|
export {};
|