@piserve-tech/drop-down 1.2.53 → 1.2.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, EventEmitter, HostListener, Input, Output, ViewChild, } from "@angular/core";
|
|
1
|
+
import { Component, EventEmitter, HostListener, Input, Output, ViewChild, ViewEncapsulation, } from "@angular/core";
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/forms";
|
|
4
4
|
import * as i2 from "@angular/common";
|
|
@@ -12,7 +12,7 @@ export class DropdownComponent {
|
|
|
12
12
|
this.showBorder = true;
|
|
13
13
|
this.buttonClick = new EventEmitter();
|
|
14
14
|
this.selectedItemsChange = new EventEmitter();
|
|
15
|
-
this.
|
|
15
|
+
this.onDropdownScroll = new EventEmitter();
|
|
16
16
|
this.onCreateNew = new EventEmitter();
|
|
17
17
|
this.onSearch = new EventEmitter();
|
|
18
18
|
this.dropdownOpened = false;
|
|
@@ -39,15 +39,9 @@ export class DropdownComponent {
|
|
|
39
39
|
openDropdown() {
|
|
40
40
|
this.dropdownOpened = !this.dropdownOpened;
|
|
41
41
|
}
|
|
42
|
-
|
|
43
|
-
console.log('scroll', this.scrollable);
|
|
42
|
+
dropdownScroll(event) {
|
|
44
43
|
if (this.scrollable) {
|
|
45
|
-
|
|
46
|
-
const scrollPosition = dropdownElement.scrollTop + dropdownElement.clientHeight;
|
|
47
|
-
const totalHeight = dropdownElement.scrollHeight;
|
|
48
|
-
if (scrollPosition >= totalHeight) {
|
|
49
|
-
this.onScroll.emit();
|
|
50
|
-
}
|
|
44
|
+
this.onDropdownScroll.emit(event);
|
|
51
45
|
}
|
|
52
46
|
}
|
|
53
47
|
selectItem(item) {
|
|
@@ -120,11 +114,11 @@ export class DropdownComponent {
|
|
|
120
114
|
this.buttonClick.emit();
|
|
121
115
|
}
|
|
122
116
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
123
|
-
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 }], ngImport: i0, template: "<div #dropdown class=\"dropdown\" [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\">\r\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\" (click)=\"openDropdown()\">\r\n <div *ngIf=\"selectedValues !== ''\" class=\"selected\">\r\n {{ selectedValues }}\r\n </div>\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\r\n <div *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\" class=\"selected-item\">\r\n <img *ngIf=\"selectedItem?.image\" class=\"multiSelected-icon-size\" [src]=\"selectedItem?.image\" alt=\"image\" />\r\n <span>{{ selectedItem.label }}</span> \r\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\">×</span>\r\n </div>\r\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\r\n +{{ selectedItems.length - 3 }} more\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div>\r\n <span (click)=\"unselectAll()\" *ngIf=\"\r\n (selectedItems.length > 0 || selectedItemName != '') && multiple\r\n \" class=\"deselect\">×\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div class=\"input-field\">\r\n <div *ngIf=\"multiple\">\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" (keyup)=\"search($event)\" />\r\n </div>\r\n <div *ngIf=\"!multiple\">\r\n <img *ngIf=\"selectedItemImage\" class=\"selected-icon-size\" [src]=\"selectedItemImage\" alt=\"image\" />\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" [(ngModel)]=\"selectedItemName\"\r\n (keyup)=\"search($event)\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div class=\"down-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"down-arrow-img\">\r\n <g id=\"Down Arrow\">\r\n <g id=\"Group\">\r\n <path id=\"Path\" d=\"M6 9.13741L12 15.229L18 9.13741\" stroke=\"#8E9AA0\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"up-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\">\r\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div #dropdownItems class=\"dropdown-items\" *ngIf=\"dropdownOpened\" (scroll)=\"onDropdownScroll($event)\">\r\n <div (click)=\"createNew()\" >\r\n <a class=\"create_button \"*ngIf=\"showCreateNew\">Create new</a>\r\n </div>\r\n <ng-container *ngIf=\"multiple; else singleSelection\">\r\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <div>\r\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n </div>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <div class=\"dropdown_buttons\">\r\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-template #singleSelection>\r\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <div class=\"dropdown_buttons\">\r\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-template>\r\n </div>\r\n</div>", styles: [".dropdown{background:#fff;border-radius:6px}.dropdown .dropdown-field{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:2px;border-radius:5px;font-size:small}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:2px;font-size:smaller;display:block}.dropdown .dropdown-field .input-field .dropdown_text{width:100%;border:none;padding:2px;margin-left:3px;margin-right:3px;outline:none;box-sizing:border-box;font-weight:500;font-family:Poppins;font-size:14px;font-style:normal}@media (max-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{width:53%;font-size:12px;margin-left:3px;padding-left:2px}}@media (max-width: 420px){.dropdown .dropdown-field .input-field .dropdown_text{width:53%;font-size:12px;margin-left:3px;padding-left:2px}}@media only screen and (min-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{height:15px}}@media only screen and (min-width: 992px){.dropdown .dropdown-field .input-field .dropdown_text{height:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-field .input-field .dropdown_text{height:25px}}.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;position:absolute;top:100%;left:0;width:100%;background:#fff;z-index:9999999;border:solid 1px #dbdbdb;box-shadow:0 4px 4px -5px #00000040}@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:#ebedef;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:#fff0;visibility:hidden}.dropdown.opened{border:1px #d8d8d8 solid}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background-color:#fff0}::-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}.flexSection{display:flex}.dataSection{width:calc(100% - 20px)}.iconSection{width:20px;padding:1px}.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"] }] }); }
|
|
117
|
+
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", onDropdownScroll: "onDropdownScroll", 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]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\">\r\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\" (click)=\"openDropdown()\">\r\n <div *ngIf=\"selectedValues !== ''\" class=\"selected\">\r\n {{ selectedValues }}\r\n </div>\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\r\n <div *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\" class=\"selected-item\">\r\n <img *ngIf=\"selectedItem?.image\" class=\"multiSelected-icon-size\" [src]=\"selectedItem?.image\" alt=\"image\" />\r\n <span>{{ selectedItem.label }}</span> \r\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\">×</span>\r\n </div>\r\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\r\n +{{ selectedItems.length - 3 }} more\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div>\r\n <span (click)=\"unselectAll()\" *ngIf=\"\r\n (selectedItems.length > 0 || selectedItemName != '') && multiple\r\n \" class=\"deselect\">×\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div class=\"input-field\">\r\n <div *ngIf=\"multiple\">\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" (keyup)=\"search($event)\" />\r\n </div>\r\n <div *ngIf=\"!multiple\">\r\n <img *ngIf=\"selectedItemImage\" class=\"selected-icon-size\" [src]=\"selectedItemImage\" alt=\"image\" />\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" [(ngModel)]=\"selectedItemName\"\r\n (keyup)=\"search($event)\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div class=\"down-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"down-arrow-img\">\r\n <g id=\"Down Arrow\">\r\n <g id=\"Group\">\r\n <path id=\"Path\" d=\"M6 9.13741L12 15.229L18 9.13741\" stroke=\"#8E9AA0\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"up-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\">\r\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div #dropdownItems class=\"dropdown-items\" *ngIf=\"dropdownOpened\" (scroll)=\"dropdownScroll($event)\">\r\n <div (click)=\"createNew()\" >\r\n <a class=\"create_button \"*ngIf=\"showCreateNew\">Create new</a>\r\n </div>\r\n <ng-container *ngIf=\"multiple; else singleSelection\">\r\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <div>\r\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n </div>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <div class=\"dropdown_buttons\">\r\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-template #singleSelection>\r\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <div class=\"dropdown_buttons\">\r\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-template>\r\n </div>\r\n</div>", styles: [".dropdown{background:#fff;border-radius:6px}.dropdown .dropdown-field{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:2px;border-radius:5px;font-size:small}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:2px;font-size:smaller;display:block}.dropdown .dropdown-field .input-field .dropdown_text{width:100%;border:none;padding:2px;margin-left:3px;margin-right:3px;outline:none;box-sizing:border-box;font-weight:500;font-family:Poppins;font-size:14px;font-style:normal}@media (max-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{width:53%;font-size:12px;margin-left:3px;padding-left:2px}}@media (max-width: 420px){.dropdown .dropdown-field .input-field .dropdown_text{width:53%;font-size:12px;margin-left:3px;padding-left:2px}}@media only screen and (min-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{height:15px}}@media only screen and (min-width: 992px){.dropdown .dropdown-field .input-field .dropdown_text{height:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-field .input-field .dropdown_text{height:25px}}.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;position:absolute;top:100%;left:0;width:100%;background:#fff;z-index:9999999;border:solid 1px #dbdbdb;box-shadow:0 4px 4px -5px #00000040}@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:#ebedef;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}.flexSection{display:flex}.dataSection{width:calc(100% - 20px)}.iconSection{width:20px;padding:1px}.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"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
124
118
|
}
|
|
125
119
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
126
120
|
type: Component,
|
|
127
|
-
args: [{ selector: "lib-dropdown", template: "<div #dropdown class=\"dropdown\" [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\">\r\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\" (click)=\"openDropdown()\">\r\n <div *ngIf=\"selectedValues !== ''\" class=\"selected\">\r\n {{ selectedValues }}\r\n </div>\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\r\n <div *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\" class=\"selected-item\">\r\n <img *ngIf=\"selectedItem?.image\" class=\"multiSelected-icon-size\" [src]=\"selectedItem?.image\" alt=\"image\" />\r\n <span>{{ selectedItem.label }}</span> \r\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\">×</span>\r\n </div>\r\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\r\n +{{ selectedItems.length - 3 }} more\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div>\r\n <span (click)=\"unselectAll()\" *ngIf=\"\r\n (selectedItems.length > 0 || selectedItemName != '') && multiple\r\n \" class=\"deselect\">×\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div class=\"input-field\">\r\n <div *ngIf=\"multiple\">\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" (keyup)=\"search($event)\" />\r\n </div>\r\n <div *ngIf=\"!multiple\">\r\n <img *ngIf=\"selectedItemImage\" class=\"selected-icon-size\" [src]=\"selectedItemImage\" alt=\"image\" />\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" [(ngModel)]=\"selectedItemName\"\r\n (keyup)=\"search($event)\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div class=\"down-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"down-arrow-img\">\r\n <g id=\"Down Arrow\">\r\n <g id=\"Group\">\r\n <path id=\"Path\" d=\"M6 9.13741L12 15.229L18 9.13741\" stroke=\"#8E9AA0\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"up-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\">\r\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div #dropdownItems class=\"dropdown-items\" *ngIf=\"dropdownOpened\" (scroll)=\"
|
|
121
|
+
args: [{ selector: "lib-dropdown", encapsulation: ViewEncapsulation.None, template: "<div #dropdown class=\"dropdown\" [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\">\r\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\" (click)=\"openDropdown()\">\r\n <div *ngIf=\"selectedValues !== ''\" class=\"selected\">\r\n {{ selectedValues }}\r\n </div>\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\r\n <div *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\" class=\"selected-item\">\r\n <img *ngIf=\"selectedItem?.image\" class=\"multiSelected-icon-size\" [src]=\"selectedItem?.image\" alt=\"image\" />\r\n <span>{{ selectedItem.label }}</span> \r\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\">×</span>\r\n </div>\r\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\r\n +{{ selectedItems.length - 3 }} more\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div>\r\n <span (click)=\"unselectAll()\" *ngIf=\"\r\n (selectedItems.length > 0 || selectedItemName != '') && multiple\r\n \" class=\"deselect\">×\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div class=\"input-field\">\r\n <div *ngIf=\"multiple\">\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" (keyup)=\"search($event)\" />\r\n </div>\r\n <div *ngIf=\"!multiple\">\r\n <img *ngIf=\"selectedItemImage\" class=\"selected-icon-size\" [src]=\"selectedItemImage\" alt=\"image\" />\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" [(ngModel)]=\"selectedItemName\"\r\n (keyup)=\"search($event)\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div class=\"down-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"down-arrow-img\">\r\n <g id=\"Down Arrow\">\r\n <g id=\"Group\">\r\n <path id=\"Path\" d=\"M6 9.13741L12 15.229L18 9.13741\" stroke=\"#8E9AA0\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"up-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\">\r\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div #dropdownItems class=\"dropdown-items\" *ngIf=\"dropdownOpened\" (scroll)=\"dropdownScroll($event)\">\r\n <div (click)=\"createNew()\" >\r\n <a class=\"create_button \"*ngIf=\"showCreateNew\">Create new</a>\r\n </div>\r\n <ng-container *ngIf=\"multiple; else singleSelection\">\r\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <div>\r\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n </div>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <div class=\"dropdown_buttons\">\r\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-template #singleSelection>\r\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <div class=\"dropdown_buttons\">\r\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-template>\r\n </div>\r\n</div>", styles: [".dropdown{background:#fff;border-radius:6px}.dropdown .dropdown-field{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:2px;border-radius:5px;font-size:small}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:2px;font-size:smaller;display:block}.dropdown .dropdown-field .input-field .dropdown_text{width:100%;border:none;padding:2px;margin-left:3px;margin-right:3px;outline:none;box-sizing:border-box;font-weight:500;font-family:Poppins;font-size:14px;font-style:normal}@media (max-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{width:53%;font-size:12px;margin-left:3px;padding-left:2px}}@media (max-width: 420px){.dropdown .dropdown-field .input-field .dropdown_text{width:53%;font-size:12px;margin-left:3px;padding-left:2px}}@media only screen and (min-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{height:15px}}@media only screen and (min-width: 992px){.dropdown .dropdown-field .input-field .dropdown_text{height:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-field .input-field .dropdown_text{height:25px}}.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;position:absolute;top:100%;left:0;width:100%;background:#fff;z-index:9999999;border:solid 1px #dbdbdb;box-shadow:0 4px 4px -5px #00000040}@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:#ebedef;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}.flexSection{display:flex}.dataSection{width:calc(100% - 20px)}.iconSection{width:20px;padding:1px}.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"] }]
|
|
128
122
|
}], ctorParameters: function () { return []; }, propDecorators: { multiple: [{
|
|
129
123
|
type: Input
|
|
130
124
|
}], scrollable: [{
|
|
@@ -147,7 +141,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
147
141
|
type: Output
|
|
148
142
|
}], selectedItemsChange: [{
|
|
149
143
|
type: Output
|
|
150
|
-
}],
|
|
144
|
+
}], onDropdownScroll: [{
|
|
151
145
|
type: Output
|
|
152
146
|
}], onCreateNew: [{
|
|
153
147
|
type: Output
|
|
@@ -163,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
163
157
|
type: HostListener,
|
|
164
158
|
args: ["document:click", ["$event"]]
|
|
165
159
|
}] } });
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZHJvcGRvd24vc3JjL2xpYi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kcm9wZG93bi9zcmMvbGliL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7OztBQWF2QixNQUFNLE9BQU8saUJBQWlCO0lBZ0M1QjtRQTVCUyxrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUMxQixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQUUzQixtQkFBYyxHQUFXLEVBQUUsQ0FBQztRQUM1QixrQkFBYSxHQUtoQixFQUFFLENBQUM7UUFDQSxlQUFVLEdBQVksSUFBSSxDQUFDO1FBQzFCLGdCQUFXLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7UUFDN0Qsd0JBQW1CLEdBQXdCLElBQUksWUFBWSxFQUVsRSxDQUFDO1FBQ00sYUFBUSxHQUF3QixJQUFJLFlBQVksRUFBUyxDQUFDO1FBQzFELGdCQUFXLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7UUFDN0QsYUFBUSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXRFLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixzQkFBaUIsR0FBVyxFQUFFLENBQUM7UUFDL0Isa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBQ25DLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7SUFFYixDQUFDO0lBRWpCLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxF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OzBFQU1mLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQU1HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBR0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBb0NxQixhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBa0RILFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFFckIsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5pbnRlcmZhY2UgRHJvcGRvd25JdGVtIHtcclxuICB2YWx1ZTogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgaW1hZ2U6IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLWRyb3Bkb3duXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9kcm9wZG93bi5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgbXVsdGlwbGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNjcm9sbGFibGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IFN0cmluZyA9IFwiXCI7XHJcbiAgQElucHV0KCkgaXRlbXM6IERyb3Bkb3duSXRlbVtdID0gW107XHJcbiAgQElucHV0KCkgc2hvd0NyZWF0ZU5ldyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRWYWx1ZXM6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUJ1dHRvbnM6IHtcclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcbiAgICBpY29uOiBzdHJpbmc7XHJcbiAgICBjb2xvcjogc3RyaW5nO1xyXG4gICAgYWN0aW9uOiAoKSA9PiB2b2lkO1xyXG4gIH1bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHNob3dCb3JkZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBPdXRwdXQoKSBidXR0b25DbGljazogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPFxyXG4gICAgYW55W11cclxuICA+KCk7XHJcbiAgQE91dHB1dCgpIG9uU2Nyb2xsOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgb25DcmVhdGVOZXc6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBvblNlYXJjaDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgZHJvcGRvd25PcGVuZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZEl0ZW06IGFueTtcclxuICBzZWxlY3RlZEl0ZW1OYW1lOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHNlbGVjdGVkSXRlbUltYWdlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIG9yaWdpbmFsSXRlbXM6IERyb3Bkb3duSXRlbVtdID0gW107XHJcbiAgc2VhcmNoVGVybTogc3RyaW5nID0gXCJcIjtcclxuICBpbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZSgpOyAgICBcclxuICB9XHJcblxyXG4gIGluaXRpYWxpemUoKSB7XHJcbiAgICB0aGlzLm9yaWdpbmFsSXRlbXMgPSB0aGlzLml0ZW1zLnNsaWNlKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcyAmJiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkgdGhpcy5zZWxlY3RJdGVtKHRoaXMuc2VsZWN0ZWRJdGVtc1swXSk7XHJcbiAgICAgIH1cclxuICAgIH0sIDEwMDApO1xyXG4gICAgY29uc3QgdW5pcXVlSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcigoc2VsZWN0ZWQsIGluZGV4LCBzZWxmKSA9PlxyXG4gICAgICBpbmRleCA9PT0gc2VsZi5maW5kSW5kZXgoKHQpID0+IChcclxuICAgICAgICB0LnZhbHVlID09PSBzZWxlY3RlZC52YWx1ZVxyXG4gICAgICApKVxyXG4gICAgKTtcclxuICAgIFxyXG4gICAgdGhpcy5pdGVtcyA9IHVuaXF1ZUl0ZW1zO1xyXG4gIH1cclxuXHJcbiAgb3BlbkRyb3Bkb3duKCkge1xyXG4gICAgdGhpcy5kcm9wZG93bk9wZW5lZCA9ICF0aGlzLmRyb3Bkb3duT3BlbmVkO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZChcImRyb3Bkb3duSXRlbXNcIikgZHJvcGRvd25pdGVtcyE6IEVsZW1lbnRSZWY7XHJcbiAgb25Ecm9wZG93blNjcm9sbChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygnc2Nyb2xsJyx0aGlzLnNjcm9sbGFibGUpO1xyXG4gICAgXHJcbiAgICBpZiAodGhpcy5zY3JvbGxhYmxlKSB7XHJcbiAgICAgIGNvbnN0IGRyb3Bkb3duRWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLmRyb3Bkb3duaXRlbXMubmF0aXZlRWxlbWVudDtcclxuICAgICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPVxyXG4gICAgICAgIGRyb3Bkb3duRWxlbWVudC5zY3JvbGxUb3AgKyBkcm9wZG93bkVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gICAgICBjb25zdCB0b3RhbEhlaWdodCA9IGRyb3Bkb3duRWxlbWVudC5zY3JvbGxIZWlnaHQ7XHJcblxyXG4gICAgICBpZiAoc2Nyb2xsUG9zaXRpb24gPj0gdG90YWxIZWlnaHQpIHtcclxuICAgICAgICB0aGlzLm9uU2Nyb2xsLmVtaXQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0SXRlbShpdGVtOiBhbnkpIHsgXHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhpdGVtKSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihcclxuICAgICAgICAgIChzZWxlY3RlZDogYW55KSA9PiBzZWxlY3RlZCAhPT0gaXRlbVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zWzBdID0gaXRlbTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1OYW1lID0gdGhpcy5zZWxlY3RlZEl0ZW1zWzBdPy5sYWJlbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1JbWFnZSA9IHRoaXMuc2VsZWN0ZWRJdGVtc1swXT8uaW1hZ2U7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTsgICAgICBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVuc2VsZWN0SXRlbShpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXHJcbiAgICAgIChzZWxlY3RlZDogYW55KSA9PiBzZWxlY3RlZCAhPT0gaXRlbVxyXG4gICAgKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgfVxyXG5cclxuICB1bnNlbGVjdEFsbCgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1OYW1lID0gXCJcIjtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICAvLyB0aGlzLml0ZW1zID0gdGhpcy5vcmlnaW5hbEl0ZW1zLnNsaWNlKCk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKFwiZHJvcGRvd25cIikgZHJvcGRvd24hOiBFbGVtZW50UmVmO1xyXG4gIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDpjbGlja1wiLCBbXCIkZXZlbnRcIl0pXHJcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgaXNDbGlja0luc2lkZURyb3Bkb3duID0gdGhpcy5kcm9wZG93bi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKFxyXG4gICAgICBldmVudC50YXJnZXRcclxuICAgICk7XHJcbiAgICBpZiAoIWlzQ2xpY2tJbnNpZGVEcm9wZG93bikge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duT3BlbmVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVOZXcoKSB7XHJcbiAgICB0aGlzLm9uQ3JlYXRlTmV3LmVtaXQoKTtcclxuICAgIHRoaXMuZHJvcGRvd25PcGVuZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHNlYXJjaChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcclxuICAgIHRoaXMuZHJvcGRvd25PcGVuZWQgPSB0cnVlO1xyXG4gICAgaWYgKGtleUNvZGUgPT09IDggJiYgIXRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtTmFtZSA9IFwiXCI7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtSW1hZ2UgPSBcIlwiO1xyXG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5vcmlnaW5hbEl0ZW1zLnNsaWNlKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlYXJjaFRlcm0gPSBldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgaWYgKCF0aGlzLm9uU2VhcmNoLm9ic2VydmVycy5sZW5ndGgpIHtcclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hUZXJtLnRyaW0oKSA9PT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMub3JpZ2luYWxJdGVtcy5zbGljZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5vcmlnaW5hbEl0ZW1zLmZpbHRlcihcclxuICAgICAgICAgICAgKGl0ZW0pID0+XHJcbiAgICAgICAgICAgICAgaXRlbS5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGVybSkgfHxcclxuICAgICAgICAgICAgICAoaXRlbS52YWx1ZSAmJiBpdGVtLnZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hUZXJtKSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub25TZWFyY2guZW1pdCh0aGlzLnNlYXJjaFRlcm0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVCdXR0b25DbGljayhhY3Rpb246ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGFjdGlvbigpO1xyXG4gICAgdGhpcy5idXR0b25DbGljay5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI2Ryb3Bkb3duIGNsYXNzPVwiZHJvcGRvd25cIiBbbmdDbGFzc109XCJ7XHJcbiAgICBvcGVuZWQ6IHNob3dCb3JkZXIgJiYgZHJvcGRvd25PcGVuZWQsXHJcbiAgICBjbG9zZWQ6IHNob3dCb3JkZXIgJiYgIWRyb3Bkb3duT3BlbmVkLFxyXG4gIH1cIj5cclxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZmllbGRcIiBpZD1cImRpdmlzaW9uXCIgW25nQ2xhc3NdPVwie1xyXG4gICAgICBvcGVuZWQ6IHNob3dCb3JkZXIgJiYgZHJvcGRvd25PcGVuZWQsXHJcbiAgICAgIGNsb3NlZDogc2hvd0JvcmRlciAmJiAhZHJvcGRvd25PcGVuZWQsXHJcbiAgICB9XCIgKGNsaWNrKT1cIm9wZW5Ecm9wZG93bigpXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRWYWx1ZXMgIT09ICcnXCIgY2xhc3M9XCJzZWxlY3RlZFwiPlxyXG4gICAgICB7eyBzZWxlY3RlZFZhbHVlcyB9fVxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIXNlbGVjdGVkSXRlbSAmJiBtdWx0aXBsZVwiIGNsYXNzPVwiZmxleFNlY3Rpb25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRhdGFTZWN0aW9uXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFzZWxlY3RlZEl0ZW0gJiYgbXVsdGlwbGVcIiBjbGFzcz1cInNlbGVjdGVkIHNlbGVjdGVkTGlzdFwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2VsZWN0ZWRJdGVtIG9mIHNlbGVjdGVkSXRlbXMuc2xpY2UoMCwgMylcIiBjbGFzcz1cInNlbGVjdGVkLWl0ZW1cIj5cclxuICAgICAgICAgICAgPGltZyAqbmdJZj1cInNlbGVjdGVkSXRlbT8uaW1hZ2VcIiBjbGFzcz1cIm11bHRpU2VsZWN0ZWQtaWNvbi1zaXplXCIgW3NyY109XCJzZWxlY3RlZEl0ZW0/LmltYWdlXCIgYWx0PVwiaW1hZ2VcIiAvPlxyXG4gICAgICAgICAgICA8c3Bhbj57eyBzZWxlY3RlZEl0ZW0ubGFiZWwgfX08L3NwYW4+Jm5ic3A7XHJcbiAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJ1bnNlbGVjdEl0ZW0oc2VsZWN0ZWRJdGVtKVwiIGNsYXNzPVwiY2xvc2UtaWNvblwiPiZ0aW1lczs8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZW1haW5pbmctaXRlbXNcIiAqbmdJZj1cInNlbGVjdGVkSXRlbXMubGVuZ3RoID4gM1wiPlxyXG4gICAgICAgICAgICAre3sgc2VsZWN0ZWRJdGVtcy5sZW5ndGggLSAzIH19IG1vcmVcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImljb25TZWN0aW9uXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxzcGFuIChjbGljayk9XCJ1bnNlbGVjdEFsbCgpXCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgKHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCB8fCBzZWxlY3RlZEl0ZW1OYW1lICE9ICcnKSAmJiBtdWx0aXBsZVxyXG4gICAgICAgICAgICBcIiBjbGFzcz1cImRlc2VsZWN0XCI+JnRpbWVzO1xyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXhTZWN0aW9uXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRhU2VjdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1maWVsZFwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpcGxlXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImRyb3Bkb3duX3RleHRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiAoa2V5dXApPVwic2VhcmNoKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW11bHRpcGxlXCI+XHJcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJzZWxlY3RlZEl0ZW1JbWFnZVwiIGNsYXNzPVwic2VsZWN0ZWQtaWNvbi1zaXplXCIgW3NyY109XCJzZWxlY3RlZEl0ZW1JbWFnZVwiIGFsdD1cImltYWdlXCIgLz5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZHJvcGRvd25fdGV4dFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRJdGVtTmFtZVwiXHJcbiAgICAgICAgICAgIChrZXl1cCk9XCJzZWFyY2goJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpY29uU2VjdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkb3duLWFycm93XCIgW25nQ2xhc3NdPVwieyBvcGVuZWQ6IGRyb3Bkb3duT3BlbmVkLCBjbG9zZWQ6ICFkcm9wZG93bk9wZW5lZCB9XCI+XHJcbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMWVtXCIgdmlld0JveD1cIjAgMCAyNCAyNVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwiZG93bi1hcnJvdy1pbWdcIj5cclxuICAgICAgICAgICAgPGcgaWQ9XCJEb3duIEFycm93XCI+XHJcbiAgICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJQYXRoXCIgZD1cIk02IDkuMTM3NDFMMTIgMTUuMjI5TDE4IDkuMTM3NDFcIiBzdHJva2U9XCIjOEU5QUEwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidXAtYXJyb3dcIiBbbmdDbGFzc109XCJ7IG9wZW5lZDogZHJvcGRvd25PcGVuZWQsIGNsb3NlZDogIWRyb3Bkb3duT3BlbmVkIH1cIj5cclxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIxZW1cIiB2aWV3Qm94PVwiMCAwIDI0IDI1XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgY2xhc3M9XCJ1cC1hcnJvdy1pbWdcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xOCAxNS4yMjlMMTIgOS4xMzc0TDYgMTUuMjI5XCIgc3Ryb2tlPVwiIzhFOUFBMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAjZHJvcGRvd25JdGVtcyBjbGFzcz1cImRyb3Bkb3duLWl0ZW1zXCIgKm5nSWY9XCJkcm9wZG93bk9wZW5lZFwiIChzY3JvbGwpPVwib25Ecm9wZG93blNjcm9sbCgkZXZlbnQpXCI+XHJcbiAgICA8ZGl2ICAoY2xpY2spPVwiY3JlYXRlTmV3KClcIiA+XHJcbiAgICAgIDxhIGNsYXNzPVwiY3JlYXRlX2J1dHRvbiBcIipuZ0lmPVwic2hvd0NyZWF0ZU5ld1wiPkNyZWF0ZSBuZXc8L2E+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtdWx0aXBsZTsgZWxzZSBzaW5nbGVTZWxlY3Rpb25cIj5cclxuICAgICAgPGEgY2xhc3M9XCJpdGVtcyBkLWJsb2NrXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIiAoY2xpY2spPVwic2VsZWN0SXRlbShpdGVtKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1kZXRhaWxzXCI+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPGltZyAqbmdJZj1cIml0ZW0/LmltYWdlXCIgW3NyY109XCJpdGVtPy5pbWFnZVwiIGFsdD1cIkl0ZW0gSW1hZ2VcIiBjbGFzcz1cIml0ZW0taW1hZ2UgaWNvbi1zaXplXCIgLz5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0tbGFiZWxcIj57eyBpdGVtPy5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZVwiICpuZ0lmPVwiaXRlbT8ubGFiZWxcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duX2J1dHRvbnNcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBidXR0b24gb2YgY3VzdG9tQnV0dG9uc1wiIChjbGljayk9XCJoYW5kbGVCdXR0b25DbGljayhidXR0b24uYWN0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImJ1dHRvbi5pY29uXCIgW3N0eWxlLmNvbG9yXT1cImJ1dHRvbi5jb2xvclwiPjwvaT5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9hPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNzaW5nbGVTZWxlY3Rpb24+XHJcbiAgICAgIDxhIGNsYXNzPVwiaXRlbXMgZC1ibG9ja1wiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCIgKGNsaWNrKT1cInNlbGVjdEl0ZW0oaXRlbSlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24taXRlbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tZGV0YWlsc1wiPlxyXG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiaXRlbT8uaW1hZ2VcIiBbc3JjXT1cIml0ZW0/LmltYWdlXCIgYWx0PVwiSXRlbSBJbWFnZVwiIGNsYXNzPVwiaXRlbS1pbWFnZSBpY29uLXNpemVcIiAvPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0tbGFiZWxcIj57eyBpdGVtPy5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlXCIgKm5nSWY9XCJpdGVtPy5sYWJlbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25fYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBjdXN0b21CdXR0b25zXCIgKGNsaWNrKT1cImhhbmRsZUJ1dHRvbkNsaWNrKGJ1dHRvbi5hY3Rpb24pXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiYnV0dG9uLmljb25cIiBbc3R5bGUuY29sb3JdPVwiYnV0dG9uLmNvbG9yXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2E+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZHJvcGRvd24vc3JjL2xpYi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kcm9wZG93bi9zcmMvbGliL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7Ozs7QUFjdkIsTUFBTSxPQUFPLGlCQUFpQjtJQWdDNUI7UUE1QlMsa0JBQWEsR0FBVSxFQUFFLENBQUM7UUFDMUIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFFM0IsbUJBQWMsR0FBVyxFQUFFLENBQUM7UUFDNUIsa0JBQWEsR0FLaEIsRUFBRSxDQUFDO1FBQ0EsZUFBVSxHQUFZLElBQUksQ0FBQztRQUMxQixnQkFBVyxHQUF3QixJQUFJLFlBQVksRUFBUyxDQUFDO1FBQzdELHdCQUFtQixHQUF3QixJQUFJLFlBQVksRUFFbEUsQ0FBQztRQUNNLHFCQUFnQixHQUF3QixJQUFJLFlBQVksRUFBUyxDQUFDO1FBQ2xFLGdCQUFXLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7UUFDN0QsYUFBUSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXRFLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixzQkFBaUIsR0FBVyxFQUFFLENBQUM7UUFDL0Isa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBQ25DLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7SUFFYixDQUFDO0lBRWpCLFFBQVE7UUFDTixJ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QUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBR0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFvQ3FCLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkF5Q0gsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUVyQixlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmludGVyZmFjZSBEcm9wZG93bkl0ZW0ge1xyXG4gIHZhbHVlOiBzdHJpbmc7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBpbWFnZTogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItZHJvcGRvd25cIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2Ryb3Bkb3duLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgbXVsdGlwbGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNjcm9sbGFibGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IFN0cmluZyA9IFwiXCI7XHJcbiAgQElucHV0KCkgaXRlbXM6IERyb3Bkb3duSXRlbVtdID0gW107XHJcbiAgQElucHV0KCkgc2hvd0NyZWF0ZU5ldyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRWYWx1ZXM6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUJ1dHRvbnM6IHtcclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcbiAgICBpY29uOiBzdHJpbmc7XHJcbiAgICBjb2xvcjogc3RyaW5nO1xyXG4gICAgYWN0aW9uOiAoKSA9PiB2b2lkO1xyXG4gIH1bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHNob3dCb3JkZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBPdXRwdXQoKSBidXR0b25DbGljazogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPFxyXG4gICAgYW55W11cclxuICA+KCk7XHJcbiAgQE91dHB1dCgpIG9uRHJvcGRvd25TY3JvbGw6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBvbkNyZWF0ZU5ldzogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIG9uU2VhcmNoOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBkcm9wZG93bk9wZW5lZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkSXRlbTogYW55O1xyXG4gIHNlbGVjdGVkSXRlbU5hbWU6IHN0cmluZyA9IFwiXCI7XHJcbiAgc2VsZWN0ZWRJdGVtSW1hZ2U6IHN0cmluZyA9IFwiXCI7XHJcbiAgb3JpZ2luYWxJdGVtczogRHJvcGRvd25JdGVtW10gPSBbXTtcclxuICBzZWFyY2hUZXJtOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0aWFsaXplKCk7ICAgIFxyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZSgpIHtcclxuICAgIHRoaXMub3JpZ2luYWxJdGVtcyA9IHRoaXMuaXRlbXMuc2xpY2UoKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB0aGlzLnNlbGVjdEl0ZW0odGhpcy5zZWxlY3RlZEl0ZW1zWzBdKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwMCk7XHJcbiAgICBjb25zdCB1bmlxdWVJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKChzZWxlY3RlZCwgaW5kZXgsIHNlbGYpID0+XHJcbiAgICAgIGluZGV4ID09PSBzZWxmLmZpbmRJbmRleCgodCkgPT4gKFxyXG4gICAgICAgIHQudmFsdWUgPT09IHNlbGVjdGVkLnZhbHVlXHJcbiAgICAgICkpXHJcbiAgICApO1xyXG4gICAgXHJcbiAgICB0aGlzLml0ZW1zID0gdW5pcXVlSXRlbXM7XHJcbiAgfVxyXG5cclxuICBvcGVuRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLmRyb3Bkb3duT3BlbmVkID0gIXRoaXMuZHJvcGRvd25PcGVuZWQ7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKFwiZHJvcGRvd25JdGVtc1wiKSBkcm9wZG93bml0ZW1zITogRWxlbWVudFJlZjxhbnk+O1xyXG4gIGRyb3Bkb3duU2Nyb2xsKGV2ZW50OiBhbnkpOiB2b2lkIHsgICAgXHJcbiAgICBpZiAodGhpcy5zY3JvbGxhYmxlKSB7XHJcbiAgICAgICAgdGhpcy5vbkRyb3Bkb3duU2Nyb2xsLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0SXRlbShpdGVtOiBhbnkpIHsgXHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhpdGVtKSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihcclxuICAgICAgICAgIChzZWxlY3RlZDogYW55KSA9PiBzZWxlY3RlZCAhPT0gaXRlbVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zWzBdID0gaXRlbTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1OYW1lID0gdGhpcy5zZWxlY3RlZEl0ZW1zWzBdPy5sYWJlbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1JbWFnZSA9IHRoaXMuc2VsZWN0ZWRJdGVtc1swXT8uaW1hZ2U7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTsgICAgICBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVuc2VsZWN0SXRlbShpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXHJcbiAgICAgIChzZWxlY3RlZDogYW55KSA9PiBzZWxlY3RlZCAhPT0gaXRlbVxyXG4gICAgKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgfVxyXG5cclxuICB1bnNlbGVjdEFsbCgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1OYW1lID0gXCJcIjtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICAvLyB0aGlzLml0ZW1zID0gdGhpcy5vcmlnaW5hbEl0ZW1zLnNsaWNlKCk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKFwiZHJvcGRvd25cIikgZHJvcGRvd24hOiBFbGVtZW50UmVmO1xyXG4gIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDpjbGlja1wiLCBbXCIkZXZlbnRcIl0pXHJcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgaXNDbGlja0luc2lkZURyb3Bkb3duID0gdGhpcy5kcm9wZG93bi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKFxyXG4gICAgICBldmVudC50YXJnZXRcclxuICAgICk7XHJcbiAgICBpZiAoIWlzQ2xpY2tJbnNpZGVEcm9wZG93bikge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duT3BlbmVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVOZXcoKSB7XHJcbiAgICB0aGlzLm9uQ3JlYXRlTmV3LmVtaXQoKTtcclxuICAgIHRoaXMuZHJvcGRvd25PcGVuZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHNlYXJjaChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcclxuICAgIHRoaXMuZHJvcGRvd25PcGVuZWQgPSB0cnVlO1xyXG4gICAgaWYgKGtleUNvZGUgPT09IDggJiYgIXRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtTmFtZSA9IFwiXCI7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtSW1hZ2UgPSBcIlwiO1xyXG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5vcmlnaW5hbEl0ZW1zLnNsaWNlKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlYXJjaFRlcm0gPSBldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgaWYgKCF0aGlzLm9uU2VhcmNoLm9ic2VydmVycy5sZW5ndGgpIHtcclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hUZXJtLnRyaW0oKSA9PT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMub3JpZ2luYWxJdGVtcy5zbGljZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5vcmlnaW5hbEl0ZW1zLmZpbHRlcihcclxuICAgICAgICAgICAgKGl0ZW0pID0+XHJcbiAgICAgICAgICAgICAgaXRlbS5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGVybSkgfHxcclxuICAgICAgICAgICAgICAoaXRlbS52YWx1ZSAmJiBpdGVtLnZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hUZXJtKSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub25TZWFyY2guZW1pdCh0aGlzLnNlYXJjaFRlcm0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVCdXR0b25DbGljayhhY3Rpb246ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGFjdGlvbigpO1xyXG4gICAgdGhpcy5idXR0b25DbGljay5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI2Ryb3Bkb3duIGNsYXNzPVwiZHJvcGRvd25cIiBbbmdDbGFzc109XCJ7XHJcbiAgICBvcGVuZWQ6IHNob3dCb3JkZXIgJiYgZHJvcGRvd25PcGVuZWQsXHJcbiAgICBjbG9zZWQ6IHNob3dCb3JkZXIgJiYgIWRyb3Bkb3duT3BlbmVkLFxyXG4gIH1cIj5cclxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZmllbGRcIiBpZD1cImRpdmlzaW9uXCIgW25nQ2xhc3NdPVwie1xyXG4gICAgICBvcGVuZWQ6IHNob3dCb3JkZXIgJiYgZHJvcGRvd25PcGVuZWQsXHJcbiAgICAgIGNsb3NlZDogc2hvd0JvcmRlciAmJiAhZHJvcGRvd25PcGVuZWQsXHJcbiAgICB9XCIgKGNsaWNrKT1cIm9wZW5Ecm9wZG93bigpXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRWYWx1ZXMgIT09ICcnXCIgY2xhc3M9XCJzZWxlY3RlZFwiPlxyXG4gICAgICB7eyBzZWxlY3RlZFZhbHVlcyB9fVxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIXNlbGVjdGVkSXRlbSAmJiBtdWx0aXBsZVwiIGNsYXNzPVwiZmxleFNlY3Rpb25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRhdGFTZWN0aW9uXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFzZWxlY3RlZEl0ZW0gJiYgbXVsdGlwbGVcIiBjbGFzcz1cInNlbGVjdGVkIHNlbGVjdGVkTGlzdFwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2VsZWN0ZWRJdGVtIG9mIHNlbGVjdGVkSXRlbXMuc2xpY2UoMCwgMylcIiBjbGFzcz1cInNlbGVjdGVkLWl0ZW1cIj5cclxuICAgICAgICAgICAgPGltZyAqbmdJZj1cInNlbGVjdGVkSXRlbT8uaW1hZ2VcIiBjbGFzcz1cIm11bHRpU2VsZWN0ZWQtaWNvbi1zaXplXCIgW3NyY109XCJzZWxlY3RlZEl0ZW0/LmltYWdlXCIgYWx0PVwiaW1hZ2VcIiAvPlxyXG4gICAgICAgICAgICA8c3Bhbj57eyBzZWxlY3RlZEl0ZW0ubGFiZWwgfX08L3NwYW4+Jm5ic3A7XHJcbiAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJ1bnNlbGVjdEl0ZW0oc2VsZWN0ZWRJdGVtKVwiIGNsYXNzPVwiY2xvc2UtaWNvblwiPiZ0aW1lczs8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZW1haW5pbmctaXRlbXNcIiAqbmdJZj1cInNlbGVjdGVkSXRlbXMubGVuZ3RoID4gM1wiPlxyXG4gICAgICAgICAgICAre3sgc2VsZWN0ZWRJdGVtcy5sZW5ndGggLSAzIH19IG1vcmVcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImljb25TZWN0aW9uXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxzcGFuIChjbGljayk9XCJ1bnNlbGVjdEFsbCgpXCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgKHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCB8fCBzZWxlY3RlZEl0ZW1OYW1lICE9ICcnKSAmJiBtdWx0aXBsZVxyXG4gICAgICAgICAgICBcIiBjbGFzcz1cImRlc2VsZWN0XCI+JnRpbWVzO1xyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXhTZWN0aW9uXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRhU2VjdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1maWVsZFwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpcGxlXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImRyb3Bkb3duX3RleHRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiAoa2V5dXApPVwic2VhcmNoKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW11bHRpcGxlXCI+XHJcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJzZWxlY3RlZEl0ZW1JbWFnZVwiIGNsYXNzPVwic2VsZWN0ZWQtaWNvbi1zaXplXCIgW3NyY109XCJzZWxlY3RlZEl0ZW1JbWFnZVwiIGFsdD1cImltYWdlXCIgLz5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZHJvcGRvd25fdGV4dFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRJdGVtTmFtZVwiXHJcbiAgICAgICAgICAgIChrZXl1cCk9XCJzZWFyY2goJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpY29uU2VjdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkb3duLWFycm93XCIgW25nQ2xhc3NdPVwieyBvcGVuZWQ6IGRyb3Bkb3duT3BlbmVkLCBjbG9zZWQ6ICFkcm9wZG93bk9wZW5lZCB9XCI+XHJcbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMWVtXCIgdmlld0JveD1cIjAgMCAyNCAyNVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwiZG93bi1hcnJvdy1pbWdcIj5cclxuICAgICAgICAgICAgPGcgaWQ9XCJEb3duIEFycm93XCI+XHJcbiAgICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJQYXRoXCIgZD1cIk02IDkuMTM3NDFMMTIgMTUuMjI5TDE4IDkuMTM3NDFcIiBzdHJva2U9XCIjOEU5QUEwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidXAtYXJyb3dcIiBbbmdDbGFzc109XCJ7IG9wZW5lZDogZHJvcGRvd25PcGVuZWQsIGNsb3NlZDogIWRyb3Bkb3duT3BlbmVkIH1cIj5cclxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIxZW1cIiB2aWV3Qm94PVwiMCAwIDI0IDI1XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgY2xhc3M9XCJ1cC1hcnJvdy1pbWdcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xOCAxNS4yMjlMMTIgOS4xMzc0TDYgMTUuMjI5XCIgc3Ryb2tlPVwiIzhFOUFBMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAjZHJvcGRvd25JdGVtcyBjbGFzcz1cImRyb3Bkb3duLWl0ZW1zXCIgKm5nSWY9XCJkcm9wZG93bk9wZW5lZFwiIChzY3JvbGwpPVwiZHJvcGRvd25TY3JvbGwoJGV2ZW50KVwiPlxyXG4gICAgPGRpdiAgKGNsaWNrKT1cImNyZWF0ZU5ldygpXCIgPlxyXG4gICAgICA8YSBjbGFzcz1cImNyZWF0ZV9idXR0b24gXCIqbmdJZj1cInNob3dDcmVhdGVOZXdcIj5DcmVhdGUgbmV3PC9hPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGlwbGU7IGVsc2Ugc2luZ2xlU2VsZWN0aW9uXCI+XHJcbiAgICAgIDxhIGNsYXNzPVwiaXRlbXMgZC1ibG9ja1wiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCIgKGNsaWNrKT1cInNlbGVjdEl0ZW0oaXRlbSlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24taXRlbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tZGV0YWlsc1wiPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpdGVtPy5pbWFnZVwiIFtzcmNdPVwiaXRlbT8uaW1hZ2VcIiBhbHQ9XCJJdGVtIEltYWdlXCIgY2xhc3M9XCJpdGVtLWltYWdlIGljb24tc2l6ZVwiIC8+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtLWxhYmVsXCI+e3sgaXRlbT8ubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2VcIiAqbmdJZj1cIml0ZW0/LmxhYmVsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bl9idXR0b25zXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGN1c3RvbUJ1dHRvbnNcIiAoY2xpY2spPVwiaGFuZGxlQnV0dG9uQ2xpY2soYnV0dG9uLmFjdGlvbilcIj5cclxuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJidXR0b24uaWNvblwiIFtzdHlsZS5jb2xvcl09XCJidXR0b24uY29sb3JcIj48L2k+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvYT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlU2VsZWN0aW9uPlxyXG4gICAgICA8YSBjbGFzcz1cIml0ZW1zIGQtYmxvY2tcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiIChjbGljayk9XCJzZWxlY3RJdGVtKGl0ZW0pXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWRldGFpbHNcIj5cclxuICAgICAgICAgICAgPGltZyAqbmdJZj1cIml0ZW0/LmltYWdlXCIgW3NyY109XCJpdGVtPy5pbWFnZVwiIGFsdD1cIkl0ZW0gSW1hZ2VcIiBjbGFzcz1cIml0ZW0taW1hZ2UgaWNvbi1zaXplXCIgLz5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtLWxhYmVsXCI+e3sgaXRlbT8ubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZVwiICpuZ0lmPVwiaXRlbT8ubGFiZWxcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duX2J1dHRvbnNcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBidXR0b24gb2YgY3VzdG9tQnV0dG9uc1wiIChjbGljayk9XCJoYW5kbGVCdXR0b25DbGljayhidXR0b24uYWN0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImJ1dHRvbi5pY29uXCIgW3N0eWxlLmNvbG9yXT1cImJ1dHRvbi5jb2xvclwiPjwvaT5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9hPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, EventEmitter, Component, Input, Output, ViewChild, HostListener, NgModule } from '@angular/core';
|
|
2
|
+
import { Injectable, EventEmitter, Component, ViewEncapsulation, Input, Output, ViewChild, HostListener, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/forms';
|
|
4
4
|
import { FormsModule } from '@angular/forms';
|
|
5
5
|
import * as i2 from '@angular/common';
|
|
@@ -27,7 +27,7 @@ class DropdownComponent {
|
|
|
27
27
|
this.showBorder = true;
|
|
28
28
|
this.buttonClick = new EventEmitter();
|
|
29
29
|
this.selectedItemsChange = new EventEmitter();
|
|
30
|
-
this.
|
|
30
|
+
this.onDropdownScroll = new EventEmitter();
|
|
31
31
|
this.onCreateNew = new EventEmitter();
|
|
32
32
|
this.onSearch = new EventEmitter();
|
|
33
33
|
this.dropdownOpened = false;
|
|
@@ -54,15 +54,9 @@ class DropdownComponent {
|
|
|
54
54
|
openDropdown() {
|
|
55
55
|
this.dropdownOpened = !this.dropdownOpened;
|
|
56
56
|
}
|
|
57
|
-
|
|
58
|
-
console.log('scroll', this.scrollable);
|
|
57
|
+
dropdownScroll(event) {
|
|
59
58
|
if (this.scrollable) {
|
|
60
|
-
|
|
61
|
-
const scrollPosition = dropdownElement.scrollTop + dropdownElement.clientHeight;
|
|
62
|
-
const totalHeight = dropdownElement.scrollHeight;
|
|
63
|
-
if (scrollPosition >= totalHeight) {
|
|
64
|
-
this.onScroll.emit();
|
|
65
|
-
}
|
|
59
|
+
this.onDropdownScroll.emit(event);
|
|
66
60
|
}
|
|
67
61
|
}
|
|
68
62
|
selectItem(item) {
|
|
@@ -135,11 +129,11 @@ class DropdownComponent {
|
|
|
135
129
|
this.buttonClick.emit();
|
|
136
130
|
}
|
|
137
131
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
138
|
-
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 }], ngImport: i0, template: "<div #dropdown class=\"dropdown\" [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\">\r\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\" (click)=\"openDropdown()\">\r\n <div *ngIf=\"selectedValues !== ''\" class=\"selected\">\r\n {{ selectedValues }}\r\n </div>\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\r\n <div *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\" class=\"selected-item\">\r\n <img *ngIf=\"selectedItem?.image\" class=\"multiSelected-icon-size\" [src]=\"selectedItem?.image\" alt=\"image\" />\r\n <span>{{ selectedItem.label }}</span> \r\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\">×</span>\r\n </div>\r\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\r\n +{{ selectedItems.length - 3 }} more\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div>\r\n <span (click)=\"unselectAll()\" *ngIf=\"\r\n (selectedItems.length > 0 || selectedItemName != '') && multiple\r\n \" class=\"deselect\">×\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div class=\"input-field\">\r\n <div *ngIf=\"multiple\">\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" (keyup)=\"search($event)\" />\r\n </div>\r\n <div *ngIf=\"!multiple\">\r\n <img *ngIf=\"selectedItemImage\" class=\"selected-icon-size\" [src]=\"selectedItemImage\" alt=\"image\" />\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" [(ngModel)]=\"selectedItemName\"\r\n (keyup)=\"search($event)\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div class=\"down-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"down-arrow-img\">\r\n <g id=\"Down Arrow\">\r\n <g id=\"Group\">\r\n <path id=\"Path\" d=\"M6 9.13741L12 15.229L18 9.13741\" stroke=\"#8E9AA0\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"up-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\">\r\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div #dropdownItems class=\"dropdown-items\" *ngIf=\"dropdownOpened\" (scroll)=\"onDropdownScroll($event)\">\r\n <div (click)=\"createNew()\" >\r\n <a class=\"create_button \"*ngIf=\"showCreateNew\">Create new</a>\r\n </div>\r\n <ng-container *ngIf=\"multiple; else singleSelection\">\r\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <div>\r\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n </div>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <div class=\"dropdown_buttons\">\r\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-template #singleSelection>\r\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <div class=\"dropdown_buttons\">\r\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-template>\r\n </div>\r\n</div>", styles: [".dropdown{background:#fff;border-radius:6px}.dropdown .dropdown-field{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:2px;border-radius:5px;font-size:small}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:2px;font-size:smaller;display:block}.dropdown .dropdown-field .input-field .dropdown_text{width:100%;border:none;padding:2px;margin-left:3px;margin-right:3px;outline:none;box-sizing:border-box;font-weight:500;font-family:Poppins;font-size:14px;font-style:normal}@media (max-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{width:53%;font-size:12px;margin-left:3px;padding-left:2px}}@media (max-width: 420px){.dropdown .dropdown-field .input-field .dropdown_text{width:53%;font-size:12px;margin-left:3px;padding-left:2px}}@media only screen and (min-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{height:15px}}@media only screen and (min-width: 992px){.dropdown .dropdown-field .input-field .dropdown_text{height:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-field .input-field .dropdown_text{height:25px}}.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;position:absolute;top:100%;left:0;width:100%;background:#fff;z-index:9999999;border:solid 1px #dbdbdb;box-shadow:0 4px 4px -5px #00000040}@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:#ebedef;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:#fff0;visibility:hidden}.dropdown.opened{border:1px #d8d8d8 solid}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background-color:#fff0}::-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}.flexSection{display:flex}.dataSection{width:calc(100% - 20px)}.iconSection{width:20px;padding:1px}.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", onDropdownScroll: "onDropdownScroll", 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]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\">\r\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\" (click)=\"openDropdown()\">\r\n <div *ngIf=\"selectedValues !== ''\" class=\"selected\">\r\n {{ selectedValues }}\r\n </div>\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\r\n <div *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\" class=\"selected-item\">\r\n <img *ngIf=\"selectedItem?.image\" class=\"multiSelected-icon-size\" [src]=\"selectedItem?.image\" alt=\"image\" />\r\n <span>{{ selectedItem.label }}</span> \r\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\">×</span>\r\n </div>\r\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\r\n +{{ selectedItems.length - 3 }} more\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div>\r\n <span (click)=\"unselectAll()\" *ngIf=\"\r\n (selectedItems.length > 0 || selectedItemName != '') && multiple\r\n \" class=\"deselect\">×\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div class=\"input-field\">\r\n <div *ngIf=\"multiple\">\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" (keyup)=\"search($event)\" />\r\n </div>\r\n <div *ngIf=\"!multiple\">\r\n <img *ngIf=\"selectedItemImage\" class=\"selected-icon-size\" [src]=\"selectedItemImage\" alt=\"image\" />\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" [(ngModel)]=\"selectedItemName\"\r\n (keyup)=\"search($event)\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div class=\"down-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"down-arrow-img\">\r\n <g id=\"Down Arrow\">\r\n <g id=\"Group\">\r\n <path id=\"Path\" d=\"M6 9.13741L12 15.229L18 9.13741\" stroke=\"#8E9AA0\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"up-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\">\r\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div #dropdownItems class=\"dropdown-items\" *ngIf=\"dropdownOpened\" (scroll)=\"dropdownScroll($event)\">\r\n <div (click)=\"createNew()\" >\r\n <a class=\"create_button \"*ngIf=\"showCreateNew\">Create new</a>\r\n </div>\r\n <ng-container *ngIf=\"multiple; else singleSelection\">\r\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <div>\r\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n </div>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <div class=\"dropdown_buttons\">\r\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-template #singleSelection>\r\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <div class=\"dropdown_buttons\">\r\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-template>\r\n </div>\r\n</div>", styles: [".dropdown{background:#fff;border-radius:6px}.dropdown .dropdown-field{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:2px;border-radius:5px;font-size:small}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:2px;font-size:smaller;display:block}.dropdown .dropdown-field .input-field .dropdown_text{width:100%;border:none;padding:2px;margin-left:3px;margin-right:3px;outline:none;box-sizing:border-box;font-weight:500;font-family:Poppins;font-size:14px;font-style:normal}@media (max-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{width:53%;font-size:12px;margin-left:3px;padding-left:2px}}@media (max-width: 420px){.dropdown .dropdown-field .input-field .dropdown_text{width:53%;font-size:12px;margin-left:3px;padding-left:2px}}@media only screen and (min-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{height:15px}}@media only screen and (min-width: 992px){.dropdown .dropdown-field .input-field .dropdown_text{height:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-field .input-field .dropdown_text{height:25px}}.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;position:absolute;top:100%;left:0;width:100%;background:#fff;z-index:9999999;border:solid 1px #dbdbdb;box-shadow:0 4px 4px -5px #00000040}@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:#ebedef;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}.flexSection{display:flex}.dataSection{width:calc(100% - 20px)}.iconSection{width:20px;padding:1px}.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"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
139
133
|
}
|
|
140
134
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
141
135
|
type: Component,
|
|
142
|
-
args: [{ selector: "lib-dropdown", template: "<div #dropdown class=\"dropdown\" [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\">\r\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\" (click)=\"openDropdown()\">\r\n <div *ngIf=\"selectedValues !== ''\" class=\"selected\">\r\n {{ selectedValues }}\r\n </div>\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\r\n <div *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\" class=\"selected-item\">\r\n <img *ngIf=\"selectedItem?.image\" class=\"multiSelected-icon-size\" [src]=\"selectedItem?.image\" alt=\"image\" />\r\n <span>{{ selectedItem.label }}</span> \r\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\">×</span>\r\n </div>\r\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\r\n +{{ selectedItems.length - 3 }} more\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div>\r\n <span (click)=\"unselectAll()\" *ngIf=\"\r\n (selectedItems.length > 0 || selectedItemName != '') && multiple\r\n \" class=\"deselect\">×\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div class=\"input-field\">\r\n <div *ngIf=\"multiple\">\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" (keyup)=\"search($event)\" />\r\n </div>\r\n <div *ngIf=\"!multiple\">\r\n <img *ngIf=\"selectedItemImage\" class=\"selected-icon-size\" [src]=\"selectedItemImage\" alt=\"image\" />\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" [(ngModel)]=\"selectedItemName\"\r\n (keyup)=\"search($event)\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div class=\"down-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"down-arrow-img\">\r\n <g id=\"Down Arrow\">\r\n <g id=\"Group\">\r\n <path id=\"Path\" d=\"M6 9.13741L12 15.229L18 9.13741\" stroke=\"#8E9AA0\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"up-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\">\r\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div #dropdownItems class=\"dropdown-items\" *ngIf=\"dropdownOpened\" (scroll)=\"
|
|
136
|
+
args: [{ selector: "lib-dropdown", encapsulation: ViewEncapsulation.None, template: "<div #dropdown class=\"dropdown\" [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\">\r\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\" (click)=\"openDropdown()\">\r\n <div *ngIf=\"selectedValues !== ''\" class=\"selected\">\r\n {{ selectedValues }}\r\n </div>\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\r\n <div *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\" class=\"selected-item\">\r\n <img *ngIf=\"selectedItem?.image\" class=\"multiSelected-icon-size\" [src]=\"selectedItem?.image\" alt=\"image\" />\r\n <span>{{ selectedItem.label }}</span> \r\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\">×</span>\r\n </div>\r\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\r\n +{{ selectedItems.length - 3 }} more\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div>\r\n <span (click)=\"unselectAll()\" *ngIf=\"\r\n (selectedItems.length > 0 || selectedItemName != '') && multiple\r\n \" class=\"deselect\">×\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div class=\"input-field\">\r\n <div *ngIf=\"multiple\">\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" (keyup)=\"search($event)\" />\r\n </div>\r\n <div *ngIf=\"!multiple\">\r\n <img *ngIf=\"selectedItemImage\" class=\"selected-icon-size\" [src]=\"selectedItemImage\" alt=\"image\" />\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" [(ngModel)]=\"selectedItemName\"\r\n (keyup)=\"search($event)\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div class=\"down-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"down-arrow-img\">\r\n <g id=\"Down Arrow\">\r\n <g id=\"Group\">\r\n <path id=\"Path\" d=\"M6 9.13741L12 15.229L18 9.13741\" stroke=\"#8E9AA0\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"up-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\">\r\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div #dropdownItems class=\"dropdown-items\" *ngIf=\"dropdownOpened\" (scroll)=\"dropdownScroll($event)\">\r\n <div (click)=\"createNew()\" >\r\n <a class=\"create_button \"*ngIf=\"showCreateNew\">Create new</a>\r\n </div>\r\n <ng-container *ngIf=\"multiple; else singleSelection\">\r\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <div>\r\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n </div>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <div class=\"dropdown_buttons\">\r\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-template #singleSelection>\r\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <div class=\"dropdown_buttons\">\r\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-template>\r\n </div>\r\n</div>", styles: [".dropdown{background:#fff;border-radius:6px}.dropdown .dropdown-field{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:2px;border-radius:5px;font-size:small}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:2px;font-size:smaller;display:block}.dropdown .dropdown-field .input-field .dropdown_text{width:100%;border:none;padding:2px;margin-left:3px;margin-right:3px;outline:none;box-sizing:border-box;font-weight:500;font-family:Poppins;font-size:14px;font-style:normal}@media (max-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{width:53%;font-size:12px;margin-left:3px;padding-left:2px}}@media (max-width: 420px){.dropdown .dropdown-field .input-field .dropdown_text{width:53%;font-size:12px;margin-left:3px;padding-left:2px}}@media only screen and (min-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{height:15px}}@media only screen and (min-width: 992px){.dropdown .dropdown-field .input-field .dropdown_text{height:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-field .input-field .dropdown_text{height:25px}}.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;position:absolute;top:100%;left:0;width:100%;background:#fff;z-index:9999999;border:solid 1px #dbdbdb;box-shadow:0 4px 4px -5px #00000040}@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:#ebedef;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}.flexSection{display:flex}.dataSection{width:calc(100% - 20px)}.iconSection{width:20px;padding:1px}.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"] }]
|
|
143
137
|
}], ctorParameters: function () { return []; }, propDecorators: { multiple: [{
|
|
144
138
|
type: Input
|
|
145
139
|
}], scrollable: [{
|
|
@@ -162,7 +156,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
162
156
|
type: Output
|
|
163
157
|
}], selectedItemsChange: [{
|
|
164
158
|
type: Output
|
|
165
|
-
}],
|
|
159
|
+
}], onDropdownScroll: [{
|
|
166
160
|
type: Output
|
|
167
161
|
}], onCreateNew: [{
|
|
168
162
|
type: Output
|
|
@@ -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';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DropdownService {\r\n\r\n constructor() { }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from \"@angular/core\";\r\n\r\ninterface DropdownItem {\r\n value: string;\r\n label: string;\r\n image: string;\r\n}\r\n\r\n@Component({\r\n selector: \"lib-dropdown\",\r\n templateUrl: \"./dropdown.component.html\",\r\n styleUrls: [\"./dropdown.component.scss\"],\r\n})\r\nexport class DropdownComponent implements OnInit {\r\n\r\n @Input() multiple!: boolean;\r\n @Input() scrollable!: boolean;\r\n @Input() selectedItems: any[] = [];\r\n @Input() placeholder: String = \"\";\r\n @Input() items: DropdownItem[] = [];\r\n @Input() showCreateNew!: boolean;\r\n @Input() selectedValues: string = '';\r\n @Input() customButtons: {\r\n label: string;\r\n icon: string;\r\n color: string;\r\n action: () => void;\r\n }[] = [];\r\n @Input() showBorder: boolean = true;\r\n @Output() buttonClick: EventEmitter<Event> = new EventEmitter<Event>();\r\n @Output() selectedItemsChange: EventEmitter<any[]> = new EventEmitter<\r\n any[]\r\n >();\r\n @Output() onScroll: EventEmitter<Event> = new EventEmitter<Event>();\r\n @Output() onCreateNew: EventEmitter<Event> = new EventEmitter<Event>();\r\n @Output() onSearch: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n dropdownOpened: boolean = false;\r\n selectedItem: any;\r\n selectedItemName: string = \"\";\r\n selectedItemImage: string = \"\";\r\n originalItems: DropdownItem[] = [];\r\n searchTerm: string = \"\";\r\n initialized: boolean = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.initialize(); \r\n }\r\n\r\n initialize() {\r\n this.originalItems = this.items.slice();\r\n setTimeout(() => {\r\n if (this.selectedItems && this.selectedItems.length > 0) {\r\n if (!this.multiple) this.selectItem(this.selectedItems[0]);\r\n }\r\n }, 1000);\r\n const uniqueItems = this.items.filter((selected, index, self) =>\r\n index === self.findIndex((t) => (\r\n t.value === selected.value\r\n ))\r\n );\r\n \r\n this.items = uniqueItems;\r\n }\r\n\r\n openDropdown() {\r\n this.dropdownOpened = !this.dropdownOpened;\r\n }\r\n\r\n @ViewChild(\"dropdownItems\") dropdownitems!: ElementRef;\r\n onDropdownScroll(event: any): void {\r\n console.log('scroll',this.scrollable);\r\n \r\n if (this.scrollable) {\r\n const dropdownElement: HTMLElement = this.dropdownitems.nativeElement;\r\n const scrollPosition =\r\n dropdownElement.scrollTop + dropdownElement.clientHeight;\r\n const totalHeight = dropdownElement.scrollHeight;\r\n\r\n if (scrollPosition >= totalHeight) {\r\n this.onScroll.emit();\r\n }\r\n }\r\n }\r\n\r\n selectItem(item: any) { \r\n if (this.multiple) {\r\n if (!this.selectedItems.includes(item)) {\r\n this.selectedItems.push(item);\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n } else {\r\n this.selectedItems = this.selectedItems.filter(\r\n (selected: any) => selected !== item\r\n );\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n }\r\n } else {\r\n this.selectedItems[0] = item;\r\n this.selectedItemName = this.selectedItems[0]?.label;\r\n this.selectedItemImage = this.selectedItems[0]?.image;\r\n this.dropdownOpened = false;\r\n this.selectedItemsChange.emit(this.selectedItems); \r\n }\r\n }\r\n\r\n unselectItem(item: any): void {\r\n this.selectedItems = this.selectedItems.filter(\r\n (selected: any) => selected !== item\r\n );\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n }\r\n\r\n unselectAll() {\r\n this.selectedItems = [];\r\n this.selectedItemName = \"\";\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n // this.items = this.originalItems.slice();\r\n }\r\n\r\n @ViewChild(\"dropdown\") dropdown!: ElementRef;\r\n @HostListener(\"document:click\", [\"$event\"])\r\n onDocumentClick(event: Event): void {\r\n const isClickInsideDropdown = this.dropdown.nativeElement.contains(\r\n event.target\r\n );\r\n if (!isClickInsideDropdown) {\r\n this.dropdownOpened = false;\r\n }\r\n }\r\n\r\n createNew() {\r\n this.onCreateNew.emit();\r\n this.dropdownOpened = false;\r\n }\r\n\r\n search(event: any): void {\r\n const keyCode = event.keyCode;\r\n this.dropdownOpened = true;\r\n if (keyCode === 8 && !this.multiple) {\r\n this.selectedItems = [];\r\n this.selectedItemName = \"\";\r\n this.selectedItemImage = \"\";\r\n this.items = this.originalItems.slice();\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n } else {\r\n this.searchTerm = event.target.value.toLowerCase();\r\n if (!this.onSearch.observers.length) {\r\n if (this.searchTerm.trim() === \"\") {\r\n this.items = this.originalItems.slice();\r\n } else {\r\n this.items = this.originalItems.filter(\r\n (item) =>\r\n item.label.toLowerCase().includes(this.searchTerm) ||\r\n (item.value && item.value.toLowerCase().includes(this.searchTerm))\r\n );\r\n }\r\n } else {\r\n this.onSearch.emit(this.searchTerm);\r\n }\r\n }\r\n }\r\n\r\n handleButtonClick(action: () => void): void {\r\n action();\r\n this.buttonClick.emit();\r\n }\r\n}\r\n","<div #dropdown class=\"dropdown\" [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\">\r\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\" (click)=\"openDropdown()\">\r\n <div *ngIf=\"selectedValues !== ''\" class=\"selected\">\r\n {{ selectedValues }}\r\n </div>\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\r\n <div *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\" class=\"selected-item\">\r\n <img *ngIf=\"selectedItem?.image\" class=\"multiSelected-icon-size\" [src]=\"selectedItem?.image\" alt=\"image\" />\r\n <span>{{ selectedItem.label }}</span> \r\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\">×</span>\r\n </div>\r\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\r\n +{{ selectedItems.length - 3 }} more\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div>\r\n <span (click)=\"unselectAll()\" *ngIf=\"\r\n (selectedItems.length > 0 || selectedItemName != '') && multiple\r\n \" class=\"deselect\">×\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div class=\"input-field\">\r\n <div *ngIf=\"multiple\">\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" (keyup)=\"search($event)\" />\r\n </div>\r\n <div *ngIf=\"!multiple\">\r\n <img *ngIf=\"selectedItemImage\" class=\"selected-icon-size\" [src]=\"selectedItemImage\" alt=\"image\" />\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" [(ngModel)]=\"selectedItemName\"\r\n (keyup)=\"search($event)\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div class=\"down-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"down-arrow-img\">\r\n <g id=\"Down Arrow\">\r\n <g id=\"Group\">\r\n <path id=\"Path\" d=\"M6 9.13741L12 15.229L18 9.13741\" stroke=\"#8E9AA0\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"up-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\">\r\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div #dropdownItems class=\"dropdown-items\" *ngIf=\"dropdownOpened\" (scroll)=\"onDropdownScroll($event)\">\r\n <div (click)=\"createNew()\" >\r\n <a class=\"create_button \"*ngIf=\"showCreateNew\">Create new</a>\r\n </div>\r\n <ng-container *ngIf=\"multiple; else singleSelection\">\r\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <div>\r\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n </div>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <div class=\"dropdown_buttons\">\r\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-template #singleSelection>\r\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <div class=\"dropdown_buttons\">\r\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-template>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { DropdownComponent } from './dropdown.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n DropdownComponent\r\n ],\r\n imports: [\r\n FormsModule,\r\n CommonModule,\r\n ],\r\n exports: [\r\n DropdownComponent\r\n ]\r\n})\r\nexport class DropdownModule { }\r\n","/*\r\n * Public API Surface of dropdown\r\n */\r\n\r\nexport * from './lib/dropdown.service';\r\nexport * from './lib/dropdown.component';\r\nexport * from './lib/dropdown.module';\r\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';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DropdownService {\r\n\r\n constructor() { }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from \"@angular/core\";\r\n\r\ninterface DropdownItem {\r\n value: string;\r\n label: string;\r\n image: string;\r\n}\r\n\r\n@Component({\r\n selector: \"lib-dropdown\",\r\n templateUrl: \"./dropdown.component.html\",\r\n styleUrls: [\"./dropdown.component.scss\"],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class DropdownComponent implements OnInit {\r\n\r\n @Input() multiple!: boolean;\r\n @Input() scrollable!: boolean;\r\n @Input() selectedItems: any[] = [];\r\n @Input() placeholder: String = \"\";\r\n @Input() items: DropdownItem[] = [];\r\n @Input() showCreateNew!: boolean;\r\n @Input() selectedValues: string = '';\r\n @Input() customButtons: {\r\n label: string;\r\n icon: string;\r\n color: string;\r\n action: () => void;\r\n }[] = [];\r\n @Input() showBorder: boolean = true;\r\n @Output() buttonClick: EventEmitter<Event> = new EventEmitter<Event>();\r\n @Output() selectedItemsChange: EventEmitter<any[]> = new EventEmitter<\r\n any[]\r\n >();\r\n @Output() onDropdownScroll: EventEmitter<Event> = new EventEmitter<Event>();\r\n @Output() onCreateNew: EventEmitter<Event> = new EventEmitter<Event>();\r\n @Output() onSearch: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n dropdownOpened: boolean = false;\r\n selectedItem: any;\r\n selectedItemName: string = \"\";\r\n selectedItemImage: string = \"\";\r\n originalItems: DropdownItem[] = [];\r\n searchTerm: string = \"\";\r\n initialized: boolean = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.initialize(); \r\n }\r\n\r\n initialize() {\r\n this.originalItems = this.items.slice();\r\n setTimeout(() => {\r\n if (this.selectedItems && this.selectedItems.length > 0) {\r\n if (!this.multiple) this.selectItem(this.selectedItems[0]);\r\n }\r\n }, 1000);\r\n const uniqueItems = this.items.filter((selected, index, self) =>\r\n index === self.findIndex((t) => (\r\n t.value === selected.value\r\n ))\r\n );\r\n \r\n this.items = uniqueItems;\r\n }\r\n\r\n openDropdown() {\r\n this.dropdownOpened = !this.dropdownOpened;\r\n }\r\n\r\n @ViewChild(\"dropdownItems\") dropdownitems!: ElementRef<any>;\r\n dropdownScroll(event: any): void { \r\n if (this.scrollable) {\r\n this.onDropdownScroll.emit(event);\r\n }\r\n }\r\n\r\n selectItem(item: any) { \r\n if (this.multiple) {\r\n if (!this.selectedItems.includes(item)) {\r\n this.selectedItems.push(item);\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n } else {\r\n this.selectedItems = this.selectedItems.filter(\r\n (selected: any) => selected !== item\r\n );\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n }\r\n } else {\r\n this.selectedItems[0] = item;\r\n this.selectedItemName = this.selectedItems[0]?.label;\r\n this.selectedItemImage = this.selectedItems[0]?.image;\r\n this.dropdownOpened = false;\r\n this.selectedItemsChange.emit(this.selectedItems); \r\n }\r\n }\r\n\r\n unselectItem(item: any): void {\r\n this.selectedItems = this.selectedItems.filter(\r\n (selected: any) => selected !== item\r\n );\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n }\r\n\r\n unselectAll() {\r\n this.selectedItems = [];\r\n this.selectedItemName = \"\";\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n // this.items = this.originalItems.slice();\r\n }\r\n\r\n @ViewChild(\"dropdown\") dropdown!: ElementRef;\r\n @HostListener(\"document:click\", [\"$event\"])\r\n onDocumentClick(event: Event): void {\r\n const isClickInsideDropdown = this.dropdown.nativeElement.contains(\r\n event.target\r\n );\r\n if (!isClickInsideDropdown) {\r\n this.dropdownOpened = false;\r\n }\r\n }\r\n\r\n createNew() {\r\n this.onCreateNew.emit();\r\n this.dropdownOpened = false;\r\n }\r\n\r\n search(event: any): void {\r\n const keyCode = event.keyCode;\r\n this.dropdownOpened = true;\r\n if (keyCode === 8 && !this.multiple) {\r\n this.selectedItems = [];\r\n this.selectedItemName = \"\";\r\n this.selectedItemImage = \"\";\r\n this.items = this.originalItems.slice();\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n } else {\r\n this.searchTerm = event.target.value.toLowerCase();\r\n if (!this.onSearch.observers.length) {\r\n if (this.searchTerm.trim() === \"\") {\r\n this.items = this.originalItems.slice();\r\n } else {\r\n this.items = this.originalItems.filter(\r\n (item) =>\r\n item.label.toLowerCase().includes(this.searchTerm) ||\r\n (item.value && item.value.toLowerCase().includes(this.searchTerm))\r\n );\r\n }\r\n } else {\r\n this.onSearch.emit(this.searchTerm);\r\n }\r\n }\r\n }\r\n\r\n handleButtonClick(action: () => void): void {\r\n action();\r\n this.buttonClick.emit();\r\n }\r\n}\r\n","<div #dropdown class=\"dropdown\" [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\">\r\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\" (click)=\"openDropdown()\">\r\n <div *ngIf=\"selectedValues !== ''\" class=\"selected\">\r\n {{ selectedValues }}\r\n </div>\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\r\n <div *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\" class=\"selected-item\">\r\n <img *ngIf=\"selectedItem?.image\" class=\"multiSelected-icon-size\" [src]=\"selectedItem?.image\" alt=\"image\" />\r\n <span>{{ selectedItem.label }}</span> \r\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\">×</span>\r\n </div>\r\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\r\n +{{ selectedItems.length - 3 }} more\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div>\r\n <span (click)=\"unselectAll()\" *ngIf=\"\r\n (selectedItems.length > 0 || selectedItemName != '') && multiple\r\n \" class=\"deselect\">×\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flexSection\">\r\n <div class=\"dataSection\">\r\n <div class=\"input-field\">\r\n <div *ngIf=\"multiple\">\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" (keyup)=\"search($event)\" />\r\n </div>\r\n <div *ngIf=\"!multiple\">\r\n <img *ngIf=\"selectedItemImage\" class=\"selected-icon-size\" [src]=\"selectedItemImage\" alt=\"image\" />\r\n <input class=\"dropdown_text\" [placeholder]=\"placeholder\" [(ngModel)]=\"selectedItemName\"\r\n (keyup)=\"search($event)\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"iconSection\">\r\n <div class=\"down-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"down-arrow-img\">\r\n <g id=\"Down Arrow\">\r\n <g id=\"Group\">\r\n <path id=\"Path\" d=\"M6 9.13741L12 15.229L18 9.13741\" stroke=\"#8E9AA0\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"up-arrow\" [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\">\r\n <svg width=\"1em\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\">\r\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div #dropdownItems class=\"dropdown-items\" *ngIf=\"dropdownOpened\" (scroll)=\"dropdownScroll($event)\">\r\n <div (click)=\"createNew()\" >\r\n <a class=\"create_button \"*ngIf=\"showCreateNew\">Create new</a>\r\n </div>\r\n <ng-container *ngIf=\"multiple; else singleSelection\">\r\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <div>\r\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n </div>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <div class=\"dropdown_buttons\">\r\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-template #singleSelection>\r\n <a class=\"items d-block\" *ngFor=\"let item of items\" (click)=\"selectItem(item)\">\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <img *ngIf=\"item?.image\" [src]=\"item?.image\" alt=\"Item Image\" class=\"item-image icon-size\" />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <div class=\"dropdown_buttons\">\r\n <button *ngFor=\"let button of customButtons\" (click)=\"handleButtonClick(button.action)\">\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-template>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { DropdownComponent } from './dropdown.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n DropdownComponent\r\n ],\r\n imports: [\r\n FormsModule,\r\n CommonModule,\r\n ],\r\n exports: [\r\n DropdownComponent\r\n ]\r\n})\r\nexport class DropdownModule { }\r\n","/*\r\n * Public API Surface of dropdown\r\n */\r\n\r\nexport * from './lib/dropdown.service';\r\nexport * from './lib/dropdown.component';\r\nexport * from './lib/dropdown.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ export declare class DropdownComponent implements OnInit {
|
|
|
22
22
|
showBorder: boolean;
|
|
23
23
|
buttonClick: EventEmitter<Event>;
|
|
24
24
|
selectedItemsChange: EventEmitter<any[]>;
|
|
25
|
-
|
|
25
|
+
onDropdownScroll: EventEmitter<Event>;
|
|
26
26
|
onCreateNew: EventEmitter<Event>;
|
|
27
27
|
onSearch: EventEmitter<string>;
|
|
28
28
|
dropdownOpened: boolean;
|
|
@@ -36,8 +36,8 @@ export declare class DropdownComponent implements OnInit {
|
|
|
36
36
|
ngOnInit(): void;
|
|
37
37
|
initialize(): void;
|
|
38
38
|
openDropdown(): void;
|
|
39
|
-
dropdownitems: ElementRef
|
|
40
|
-
|
|
39
|
+
dropdownitems: ElementRef<any>;
|
|
40
|
+
dropdownScroll(event: any): void;
|
|
41
41
|
selectItem(item: any): void;
|
|
42
42
|
unselectItem(item: any): void;
|
|
43
43
|
unselectAll(): void;
|
|
@@ -47,6 +47,6 @@ export declare class DropdownComponent implements OnInit {
|
|
|
47
47
|
search(event: any): void;
|
|
48
48
|
handleButtonClick(action: () => void): void;
|
|
49
49
|
static ɵfac: i0.ɵɵFactoryDeclaration<DropdownComponent, never>;
|
|
50
|
-
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"; "
|
|
50
|
+
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"; "onDropdownScroll": "onDropdownScroll"; "onCreateNew": "onCreateNew"; "onSearch": "onSearch"; }, never, never, false, never>;
|
|
51
51
|
}
|
|
52
52
|
export {};
|