@piserve-tech/drop-down 1.0.1 → 1.0.3

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.
package/README.md CHANGED
@@ -1,28 +1,3 @@
1
- # Dropdown
2
-
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.2.0.
4
-
5
- ## Code scaffolding
6
-
7
- Run `ng generate component component-name --project dropdown` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project dropdown`.
8
- > Note: Don't forget to add `--project dropdown` or else it will be added to the default project in your `angular.json` file.
9
-
10
- ## Build
11
-
12
- Run `ng build dropdown` to build the project. The build artifacts will be stored in the `dist/` directory.
13
-
14
- ## Publishing
15
-
16
- After building your library with `ng build dropdown`, go to the dist folder `cd dist/dropdown` and run `npm publish`.
17
-
18
- ## Running unit tests
19
-
20
- Run `ng test dropdown` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
-
22
- ## Further help
23
-
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
25
-
26
1
  ## Dropdown library
27
2
 
28
3
  To use the library in a project import the library module in the imports array of which module you are going to implement the library.
@@ -27,7 +27,7 @@ export class DropdownComponent {
27
27
  }
28
28
  }
29
29
  openDropdown() {
30
- this.dropdownOpened = true;
30
+ this.dropdownOpened = !this.dropdownOpened;
31
31
  }
32
32
  onDropdownScroll(event) {
33
33
  if (this.onScroll) {
@@ -105,11 +105,11 @@ export class DropdownComponent {
105
105
  this.buttonClick.emit();
106
106
  }
107
107
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
108
- 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", label: "label", items: "items", showCreateNew: "showCreateNew", 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]=\"{'no-border': !showBorder}\">\n <div class=\"dropdown-field\" id=\"division\">\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected\">\n <div\n *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\"\n class=\"selected-item\"\n >\n {{ selectedItem[label] }}\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\"\n >&times;</span\n >\n </div>\n <div *ngIf=\"selectedItems.length > 3\" class=\"remaining-items\">\n + {{ selectedItems.length - 3 }} more\n </div>\n </div>\n\n <div class=\"input-field\" (click)=\"openDropdown()\">\n <div *ngIf=\"multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n (keyup)=\"search($event)\"\n />\n </div>\n <div *ngIf=\"!multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"selectedItemName\"\n (keyup)=\"search($event)\"\n />\n </div>\n <svg\n width=\"24\"\n height=\"25\"\n viewBox=\"0 0 24 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"arrow_img\"\n >\n <g id=\"Down Arrow\">\n <g id=\"Group\">\n <path\n id=\"Path\"\n d=\"M6 9.13741L12 15.229L18 9.13741\"\n stroke=\"#8E9AA0\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n </g>\n </svg>\n <span\n (click)=\"unselectAll()\"\n *ngIf=\"selectedItems.length > 0 || selectedItemName != ''\"\n class=\"deselect\"\n >&times;</span\n >\n </div>\n </div>\n\n <div\n #dropdownItems\n class=\"dropdown-items\"\n *ngIf=\"dropdownOpened\"\n (scroll)=\"onDropdownScroll($event)\"\n >\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\">Create new</a>\n\n <ng-container *ngIf=\"multiple; else singleSelection\">\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\"\n >\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\" [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-container>\n\n <ng-template #singleSelection>\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\"\n >\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\" [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-template>\n </div>\n</div>\n", styles: [".dropdown{background:#fff;border-radius:6px;border:2px #D8D8D8 solid}@media only screen and (min-width: 276px){.dropdown{min-height:51px;max-width:200px}}@media only screen and (min-width: 576px){.dropdown{min-height:51px;max-width:225px}}@media only screen and (min-width: 992px){.dropdown{min-height:51px;max-width:260px}}@media only screen and (min-width: 1200px){.dropdown{min-height:51px;max-width:344px}}.dropdown.no-border{border:none}.dropdown .dropdown-field{background:#fff;box-shadow:0 4px 4px -5px #00000040;border-radius:6px;position:relative;cursor:pointer}@media only screen and (min-width: 276px){.dropdown .dropdown-field{min-height:51px;max-width:200px}}@media only screen and (min-width: 576px){.dropdown .dropdown-field{min-height:51px;max-width:225px}}@media only screen and (min-width: 992px){.dropdown .dropdown-field{min-height:51px;max-width:260px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-field{min-height:51px;max-width:344px}}.dropdown .dropdown-field .selected{margin:5px}.dropdown .dropdown-field .selected .selected-item{background:#cdd0d1;display:inline;margin:5px;padding:3px;border-radius:5px}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:3px}.dropdown .dropdown-field .input-field .dropdown_text{height:51px;width:100%;border:none;padding:10px;outline:none;box-sizing:border-box}.dropdown .dropdown-field .input-field .arrow_img{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.dropdown .dropdown-field .input-field .deselect{position:absolute;top:50%;right:40px;transform:translateY(-50%)}.dropdown .dropdown-items{overflow:auto}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;max-width:200px;padding:5px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:8px;max-width:250px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:11px;max-width:344px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:15px;max-width:344px}}.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{max-width:200px;padding-left:20px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .create_button{max-width:260px;padding-left:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .create_button{max-width:344px;padding-left:20px}}.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{min-width:160px;padding-left:20px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .items{min-width:220px;padding-left:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .items{max-width:300px;padding-left:20px}}.dropdown .dropdown-items .items:hover{background:#cdd0d1;border-radius:6px}.dropdown .dropdown-items .items:hover button{visibility:visible}.dropdown .dropdown-items .items .dropdown_buttons{display:inline;position:absolute;right:5%}.dropdown .dropdown-items .items button{border:0;background:transparent;visibility:hidden}\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"] }] }); }
108
+ 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", label: "label", items: "items", showCreateNew: "showCreateNew", 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]=\"{'no-border': !showBorder}\"\n[ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected\">\n <div\n *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\"\n class=\"selected-item\">\n {{ selectedItem[label] }}\n <span (click)=\"unselectItem(selectedItem)\"\n class=\"close-icon\">&times;</span>\n </div>\n <div *ngIf=\"selectedItems.length > 3\" class=\"remaining-items\">\n + {{ selectedItems.length - 3 }} more\n </div>\n </div>\n\n <div class=\"input-field\">\n <div *ngIf=\"multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n (keyup)=\"search($event)\" />\n </div>\n <div *ngIf=\"!multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"selectedItemName\"\n (keyup)=\"search($event)\" />\n </div>\n <div class=\"down-arrow\" (click)=\"openDropdown()\">\n <svg\n width=\"24\"\n height=\"25\"\n viewBox=\"0 0 24 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"down-arrow-img\"\n [ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <g id=\"Down Arrow\">\n <g id=\"Group\">\n <path\n id=\"Path\"\n d=\"M6 9.13741L12 15.229L18 9.13741\"\n stroke=\"#8E9AA0\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </g>\n </svg>\n </div>\n <div class=\"up-arrow\" (click)=\"openDropdown()\">\n <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\" [ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\"\n stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n <span\n (click)=\"unselectAll()\"\n *ngIf=\"selectedItems.length > 0 || selectedItemName != ''\"\n class=\"deselect\">&times;</span>\n </div>\n </div>\n\n <div\n #dropdownItems\n class=\"dropdown-items\"\n *ngIf=\"dropdownOpened\"\n (scroll)=\"onDropdownScroll($event)\">\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\">Create\n new</a>\n\n <ng-container *ngIf=\"multiple; else singleSelection\">\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\">\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\"\n [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-container>\n\n <ng-template #singleSelection>\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\">\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\"\n [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-template>\n </div>\n</div>\n", styles: [".dropdown{background:#fff;border-radius:6px}@media only screen and (min-width: 576px){.dropdown{max-width:225px}}@media only screen and (min-width: 992px){.dropdown{max-width:260px}}@media only screen and (min-width: 1200px){.dropdown{max-width:344px}}.dropdown.no-border{border:none}.dropdown .dropdown-field{background:#fff;box-shadow:0 4px 4px -5px #00000040;border-radius:6px;position:relative;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-field{max-width:225px}}@media only screen and (min-width: 992px){.dropdown .dropdown-field{max-width:260px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-field{max-width:344px}}.dropdown .dropdown-field .selected{margin:5px}.dropdown .dropdown-field .selected .selected-item{background:#cdd0d1;display:inline;margin:5px;padding:3px;border-radius:5px}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:3px}.dropdown .dropdown-field .input-field .dropdown_text{width:100%;border:none;padding:10px;outline:none;box-sizing:border-box}@media only screen and (min-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{height:41px}}@media only screen and (min-width: 992px){.dropdown .dropdown-field .input-field .dropdown_text{height:46px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-field .input-field .dropdown_text{height:51px}}.dropdown .dropdown-field .input-field .down-arrow-img{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.dropdown .dropdown-field .input-field .down-arrow-img.opened{display:none}.dropdown .dropdown-field .input-field .down-arrow-img.closed{display:block}.dropdown .dropdown-field .input-field .up-arrow-img{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.dropdown .dropdown-field .input-field .up-arrow-img.closed{display:none}.dropdown .dropdown-field .input-field .deselect{position:absolute;top:50%;right:40px;transform:translateY(-50%)}.dropdown .dropdown-field.closed{border:2px solid #D8D8D8}.dropdown .dropdown-field.opened{border-bottom:2px solid #D8D8D8}.dropdown .dropdown-items{overflow:auto}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;max-width:200px;padding:5px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:8px;max-width:250px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:11px;max-width:344px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:15px;max-width:344px}}.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{max-width:200px;padding-left:20px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .create_button{max-width:260px;padding-left:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .create_button{max-width:344px;padding-left:20px}}.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{min-width:160px;padding-left:20px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .items{min-width:220px;padding-left:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .items{max-width:300px;padding-left:20px}}.dropdown .dropdown-items .items:hover{background:#cdd0d1;border-radius:6px}.dropdown .dropdown-items .items:hover button{visibility:visible}.dropdown .dropdown-items .items .dropdown_buttons{display:inline;position:absolute;right:5%}.dropdown .dropdown-items .items button{border:0;background:transparent;visibility:hidden}.dropdown.opened{border:2px #D8D8D8 solid}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#b2b2b2;border-radius:6px}\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"] }] }); }
109
109
  }
110
110
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownComponent, decorators: [{
111
111
  type: Component,
112
- args: [{ selector: 'lib-dropdown', template: "<div #dropdown class=\"dropdown\" [ngClass]=\"{'no-border': !showBorder}\">\n <div class=\"dropdown-field\" id=\"division\">\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected\">\n <div\n *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\"\n class=\"selected-item\"\n >\n {{ selectedItem[label] }}\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\"\n >&times;</span\n >\n </div>\n <div *ngIf=\"selectedItems.length > 3\" class=\"remaining-items\">\n + {{ selectedItems.length - 3 }} more\n </div>\n </div>\n\n <div class=\"input-field\" (click)=\"openDropdown()\">\n <div *ngIf=\"multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n (keyup)=\"search($event)\"\n />\n </div>\n <div *ngIf=\"!multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"selectedItemName\"\n (keyup)=\"search($event)\"\n />\n </div>\n <svg\n width=\"24\"\n height=\"25\"\n viewBox=\"0 0 24 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"arrow_img\"\n >\n <g id=\"Down Arrow\">\n <g id=\"Group\">\n <path\n id=\"Path\"\n d=\"M6 9.13741L12 15.229L18 9.13741\"\n stroke=\"#8E9AA0\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n </g>\n </svg>\n <span\n (click)=\"unselectAll()\"\n *ngIf=\"selectedItems.length > 0 || selectedItemName != ''\"\n class=\"deselect\"\n >&times;</span\n >\n </div>\n </div>\n\n <div\n #dropdownItems\n class=\"dropdown-items\"\n *ngIf=\"dropdownOpened\"\n (scroll)=\"onDropdownScroll($event)\"\n >\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\">Create new</a>\n\n <ng-container *ngIf=\"multiple; else singleSelection\">\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\"\n >\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\" [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-container>\n\n <ng-template #singleSelection>\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\"\n >\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\" [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-template>\n </div>\n</div>\n", styles: [".dropdown{background:#fff;border-radius:6px;border:2px #D8D8D8 solid}@media only screen and (min-width: 276px){.dropdown{min-height:51px;max-width:200px}}@media only screen and (min-width: 576px){.dropdown{min-height:51px;max-width:225px}}@media only screen and (min-width: 992px){.dropdown{min-height:51px;max-width:260px}}@media only screen and (min-width: 1200px){.dropdown{min-height:51px;max-width:344px}}.dropdown.no-border{border:none}.dropdown .dropdown-field{background:#fff;box-shadow:0 4px 4px -5px #00000040;border-radius:6px;position:relative;cursor:pointer}@media only screen and (min-width: 276px){.dropdown .dropdown-field{min-height:51px;max-width:200px}}@media only screen and (min-width: 576px){.dropdown .dropdown-field{min-height:51px;max-width:225px}}@media only screen and (min-width: 992px){.dropdown .dropdown-field{min-height:51px;max-width:260px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-field{min-height:51px;max-width:344px}}.dropdown .dropdown-field .selected{margin:5px}.dropdown .dropdown-field .selected .selected-item{background:#cdd0d1;display:inline;margin:5px;padding:3px;border-radius:5px}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:3px}.dropdown .dropdown-field .input-field .dropdown_text{height:51px;width:100%;border:none;padding:10px;outline:none;box-sizing:border-box}.dropdown .dropdown-field .input-field .arrow_img{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.dropdown .dropdown-field .input-field .deselect{position:absolute;top:50%;right:40px;transform:translateY(-50%)}.dropdown .dropdown-items{overflow:auto}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;max-width:200px;padding:5px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:8px;max-width:250px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:11px;max-width:344px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:15px;max-width:344px}}.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{max-width:200px;padding-left:20px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .create_button{max-width:260px;padding-left:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .create_button{max-width:344px;padding-left:20px}}.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{min-width:160px;padding-left:20px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .items{min-width:220px;padding-left:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .items{max-width:300px;padding-left:20px}}.dropdown .dropdown-items .items:hover{background:#cdd0d1;border-radius:6px}.dropdown .dropdown-items .items:hover button{visibility:visible}.dropdown .dropdown-items .items .dropdown_buttons{display:inline;position:absolute;right:5%}.dropdown .dropdown-items .items button{border:0;background:transparent;visibility:hidden}\n"] }]
112
+ args: [{ selector: 'lib-dropdown', template: "<div #dropdown class=\"dropdown\" [ngClass]=\"{'no-border': !showBorder}\"\n[ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected\">\n <div\n *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\"\n class=\"selected-item\">\n {{ selectedItem[label] }}\n <span (click)=\"unselectItem(selectedItem)\"\n class=\"close-icon\">&times;</span>\n </div>\n <div *ngIf=\"selectedItems.length > 3\" class=\"remaining-items\">\n + {{ selectedItems.length - 3 }} more\n </div>\n </div>\n\n <div class=\"input-field\">\n <div *ngIf=\"multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n (keyup)=\"search($event)\" />\n </div>\n <div *ngIf=\"!multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"selectedItemName\"\n (keyup)=\"search($event)\" />\n </div>\n <div class=\"down-arrow\" (click)=\"openDropdown()\">\n <svg\n width=\"24\"\n height=\"25\"\n viewBox=\"0 0 24 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"down-arrow-img\"\n [ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <g id=\"Down Arrow\">\n <g id=\"Group\">\n <path\n id=\"Path\"\n d=\"M6 9.13741L12 15.229L18 9.13741\"\n stroke=\"#8E9AA0\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </g>\n </svg>\n </div>\n <div class=\"up-arrow\" (click)=\"openDropdown()\">\n <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\" [ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\"\n stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n <span\n (click)=\"unselectAll()\"\n *ngIf=\"selectedItems.length > 0 || selectedItemName != ''\"\n class=\"deselect\">&times;</span>\n </div>\n </div>\n\n <div\n #dropdownItems\n class=\"dropdown-items\"\n *ngIf=\"dropdownOpened\"\n (scroll)=\"onDropdownScroll($event)\">\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\">Create\n new</a>\n\n <ng-container *ngIf=\"multiple; else singleSelection\">\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\">\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\"\n [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-container>\n\n <ng-template #singleSelection>\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\">\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\"\n [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-template>\n </div>\n</div>\n", styles: [".dropdown{background:#fff;border-radius:6px}@media only screen and (min-width: 576px){.dropdown{max-width:225px}}@media only screen and (min-width: 992px){.dropdown{max-width:260px}}@media only screen and (min-width: 1200px){.dropdown{max-width:344px}}.dropdown.no-border{border:none}.dropdown .dropdown-field{background:#fff;box-shadow:0 4px 4px -5px #00000040;border-radius:6px;position:relative;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-field{max-width:225px}}@media only screen and (min-width: 992px){.dropdown .dropdown-field{max-width:260px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-field{max-width:344px}}.dropdown .dropdown-field .selected{margin:5px}.dropdown .dropdown-field .selected .selected-item{background:#cdd0d1;display:inline;margin:5px;padding:3px;border-radius:5px}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:3px}.dropdown .dropdown-field .input-field .dropdown_text{width:100%;border:none;padding:10px;outline:none;box-sizing:border-box}@media only screen and (min-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{height:41px}}@media only screen and (min-width: 992px){.dropdown .dropdown-field .input-field .dropdown_text{height:46px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-field .input-field .dropdown_text{height:51px}}.dropdown .dropdown-field .input-field .down-arrow-img{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.dropdown .dropdown-field .input-field .down-arrow-img.opened{display:none}.dropdown .dropdown-field .input-field .down-arrow-img.closed{display:block}.dropdown .dropdown-field .input-field .up-arrow-img{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.dropdown .dropdown-field .input-field .up-arrow-img.closed{display:none}.dropdown .dropdown-field .input-field .deselect{position:absolute;top:50%;right:40px;transform:translateY(-50%)}.dropdown .dropdown-field.closed{border:2px solid #D8D8D8}.dropdown .dropdown-field.opened{border-bottom:2px solid #D8D8D8}.dropdown .dropdown-items{overflow:auto}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;max-width:200px;padding:5px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:8px;max-width:250px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:11px;max-width:344px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:15px;max-width:344px}}.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{max-width:200px;padding-left:20px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .create_button{max-width:260px;padding-left:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .create_button{max-width:344px;padding-left:20px}}.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{min-width:160px;padding-left:20px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .items{min-width:220px;padding-left:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .items{max-width:300px;padding-left:20px}}.dropdown .dropdown-items .items:hover{background:#cdd0d1;border-radius:6px}.dropdown .dropdown-items .items:hover button{visibility:visible}.dropdown .dropdown-items .items .dropdown_buttons{display:inline;position:absolute;right:5%}.dropdown .dropdown-items .items button{border:0;background:transparent;visibility:hidden}.dropdown.opened{border:2px #D8D8D8 solid}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#b2b2b2;border-radius:6px}\n"] }]
113
113
  }], propDecorators: { multiple: [{
114
114
  type: Input
115
115
  }], scrollable: [{
@@ -148,4 +148,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
148
148
  type: HostListener,
149
149
  args: ['document:click', ['$event']]
150
150
  }] } });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZHJvcGRvd24vc3JjL2xpYi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kcm9wZG93bi9zcmMvbGliL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVksWUFBWSxFQUFDLFlBQVksRUFBQyxLQUFLLEVBQVEsTUFBTSxFQUFDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQU83RyxNQUFNLE9BQU8saUJBQWlCO0lBTDlCO1FBUVcsa0JBQWEsR0FBVSxFQUFFLENBQUM7UUFDMUIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixVQUFLLEdBQVUsRUFBRSxDQUFDO1FBRWxCLGtCQUFhLEdBQXdFLEVBQUUsQ0FBQztRQUN4RixlQUFVLEdBQVksSUFBSSxDQUFDO1FBQzFCLGdCQUFXLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7UUFDN0Qsd0JBQW1CLEdBQXdCLElBQUksWUFBWSxFQUVsRSxDQUFDO1FBQ00sYUFBUSxHQUF3QixJQUFJLFlBQVksRUFBUyxDQUFDO1FBQzFELGdCQUFXLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7UUFDN0QsYUFBUSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXRFLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUMxQixlQUFVLEdBQVEsRUFBRSxDQUFDO0tBNkd0QjtJQTNHQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFJRCxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3pCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixNQUFNLGVBQWUsR0FBZ0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7WUFDdEUsTUFBTSxjQUFjLEdBQ2xCLGVBQWUsQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQztZQUMzRCxNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsWUFBWSxDQUFDO1lBRWpELElBQUksY0FBYyxJQUFJLFdBQVcsRUFBRTtnQkFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUN0QjtTQUNGO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFTO1FBQ2xCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuRDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUM1QyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsUUFBUSxLQUFLLElBQUksQ0FDckMsQ0FBQztnQkFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuRDtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFTO1FBQ3BCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQzVDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUNyQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBSUQsZUFBZSxDQUFDLEtBQVk7UUFDMUIsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQ2hFLEtBQUssQ0FBQyxNQUFNLENBQ2IsQ0FBQztRQUNGLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQVU7UUFDZixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBRTlCLElBQUksT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDekM7YUFBTTtZQUVMLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDbkMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtvQkFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUN6QztxQkFBTTtvQkFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUMzRCxDQUFDO2lCQUNIO2FBQ0Y7aUJBQ0k7Z0JBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3JDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBa0I7UUFDbEMsTUFBTSxFQUFFLENBQUM7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7K0dBaklVLGlCQUFpQjttR0FBakIsaUJBQWlCLGd0QkNQOUIsb2hHQW9HQTs7NEZEN0ZhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxjQUFjOzhCQUtmLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFHRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFtQnFCLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFpREgsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUVyQixlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsRWxlbWVudFJlZixFdmVudEVtaXR0ZXIsSG9zdExpc3RlbmVyLElucHV0LE9uSW5pdCxPdXRwdXQsVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbXVsdGlwbGUhOiBib29sZWFuO1xuICBASW5wdXQoKSBzY3JvbGxhYmxlITogYm9vbGVhbjtcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IFN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBzaG93Q3JlYXRlTmV3ITogYm9vbGVhbjtcbiAgQElucHV0KCkgY3VzdG9tQnV0dG9uczogeyBsYWJlbDogc3RyaW5nOyBpY29uOiBzdHJpbmc7IGNvbG9yOnN0cmluZyA7YWN0aW9uOiAoKSA9PiB2b2lkIH1bXSA9IFtdO1xuICBASW5wdXQoKSBzaG93Qm9yZGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIGFueVtdXG4gID4oKTtcbiAgQE91dHB1dCgpIG9uU2Nyb2xsOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIG9uQ3JlYXRlTmV3OiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIG9uU2VhcmNoOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGRyb3Bkb3duT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkSXRlbTogYW55O1xuICBzZWxlY3RlZEl0ZW1OYW1lOiBzdHJpbmcgPSAnJztcbiAgb3JpZ2luYWxJdGVtczogYW55W10gPSBbXTtcbiAgc2VhcmNoVGVybTpzdHJpbmc9Jyc7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcmlnaW5hbEl0ZW1zID0gdGhpcy5pdGVtcy5zbGljZSgpOyBcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdEl0ZW0odGhpcy5zZWxlY3RlZEl0ZW1zWzBdKTtcbiAgICB9XG4gIH1cblxuICBvcGVuRHJvcGRvd24oKSB7XG4gICAgdGhpcy5kcm9wZG93bk9wZW5lZCA9IHRydWU7XG4gIH1cblxuICBAVmlld0NoaWxkKCdkcm9wZG93bkl0ZW1zJykgZHJvcGRvd25pdGVtcyE6IEVsZW1lbnRSZWY7XG5cbiAgb25Ecm9wZG93blNjcm9sbChldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMub25TY3JvbGwpIHtcbiAgICAgIGNvbnN0IGRyb3Bkb3duRWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLmRyb3Bkb3duaXRlbXMubmF0aXZlRWxlbWVudDtcbiAgICAgIGNvbnN0IHNjcm9sbFBvc2l0aW9uID1cbiAgICAgICAgZHJvcGRvd25FbGVtZW50LnNjcm9sbFRvcCArIGRyb3Bkb3duRWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICBjb25zdCB0b3RhbEhlaWdodCA9IGRyb3Bkb3duRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG5cbiAgICAgIGlmIChzY3JvbGxQb3NpdGlvbiA+PSB0b3RhbEhlaWdodCkge1xuICAgICAgICB0aGlzLm9uU2Nyb2xsLmVtaXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZWxlY3RJdGVtKGl0ZW06IGFueSkge1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhpdGVtKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgKHNlbGVjdGVkOiBhbnkpID0+IHNlbGVjdGVkICE9PSBpdGVtXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1swXSA9IGl0ZW07XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbU5hbWUgPSB0aGlzLnNlbGVjdGVkSXRlbXNbMF1bdGhpcy5sYWJlbF07XG4gICAgICB0aGlzLmRyb3Bkb3duT3BlbmVkID0gZmFsc2U7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5vcmlnaW5hbEl0ZW1zLnNsaWNlKCk7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgIH1cbiAgfVxuXG4gIHVuc2VsZWN0SXRlbShpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKFxuICAgICAgKHNlbGVjdGVkOiBhbnkpID0+IHNlbGVjdGVkICE9PSBpdGVtXG4gICAgKTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICB9XG5cbiAgdW5zZWxlY3RBbGwoKSB7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1OYW1lID0gJyc7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICB0aGlzLml0ZW1zID0gdGhpcy5vcmlnaW5hbEl0ZW1zLnNsaWNlKCk7XG4gIH1cblxuICBAVmlld0NoaWxkKCdkcm9wZG93bicpIGRyb3Bkb3duITogRWxlbWVudFJlZjtcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaXNDbGlja0luc2lkZURyb3Bkb3duID0gdGhpcy5kcm9wZG93bi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKFxuICAgICAgZXZlbnQudGFyZ2V0XG4gICAgKTtcbiAgICBpZiAoIWlzQ2xpY2tJbnNpZGVEcm9wZG93bikge1xuICAgICAgdGhpcy5kcm9wZG93bk9wZW5lZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZU5ldygpIHtcbiAgICB0aGlzLm9uQ3JlYXRlTmV3LmVtaXQoKTtcbiAgfVxuXG4gIHNlYXJjaChldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7ICAgIFxuICBcbiAgICBpZiAoa2V5Q29kZSA9PT0gOCAmJiAhdGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbU5hbWUgPSAnJztcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5vcmlnaW5hbEl0ZW1zLnNsaWNlKCk7XG4gICAgfSBlbHNlIHtcblxuICAgICAgdGhpcy5zZWFyY2hUZXJtID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgIGlmICghdGhpcy5vblNlYXJjaC5vYnNlcnZlcnMubGVuZ3RoKSB7ICAgICAgICBcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGVybS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMub3JpZ2luYWxJdGVtcy5zbGljZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLm9yaWdpbmFsSXRlbXMuZmlsdGVyKChpdGVtKSA9PlxuICAgICAgICAgICAgaXRlbVt0aGlzLmxhYmVsXS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgodGhpcy5zZWFyY2hUZXJtKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLm9uU2VhcmNoLmVtaXQodGhpcy5zZWFyY2hUZXJtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVCdXR0b25DbGljayhhY3Rpb246ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBhY3Rpb24oKTtcbiAgICB0aGlzLmJ1dHRvbkNsaWNrLmVtaXQoKTtcbiAgfVxuICBcbn0iLCI8ZGl2ICNkcm9wZG93biBjbGFzcz1cImRyb3Bkb3duXCIgW25nQ2xhc3NdPVwieyduby1ib3JkZXInOiAhc2hvd0JvcmRlcn1cIj5cbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWZpZWxkXCIgaWQ9XCJkaXZpc2lvblwiPlxuICAgIDxkaXYgKm5nSWY9XCIhc2VsZWN0ZWRJdGVtICYmIG11bHRpcGxlXCIgY2xhc3M9XCJzZWxlY3RlZFwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdGb3I9XCJsZXQgc2VsZWN0ZWRJdGVtIG9mIHNlbGVjdGVkSXRlbXMuc2xpY2UoMCwgMylcIlxuICAgICAgICBjbGFzcz1cInNlbGVjdGVkLWl0ZW1cIlxuICAgICAgPlxuICAgICAgICB7eyBzZWxlY3RlZEl0ZW1bbGFiZWxdIH19XG4gICAgICAgIDxzcGFuIChjbGljayk9XCJ1bnNlbGVjdEl0ZW0oc2VsZWN0ZWRJdGVtKVwiIGNsYXNzPVwiY2xvc2UtaWNvblwiXG4gICAgICAgICAgPiZ0aW1lczs8L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAzXCIgY2xhc3M9XCJyZW1haW5pbmctaXRlbXNcIj5cbiAgICAgICAgKyB7eyBzZWxlY3RlZEl0ZW1zLmxlbmd0aCAtIDMgfX0gbW9yZVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZmllbGRcIiAoY2xpY2spPVwib3BlbkRyb3Bkb3duKClcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXBsZVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duX3RleHRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgKGtleXVwKT1cInNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIiFtdWx0aXBsZVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duX3RleHRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEl0ZW1OYW1lXCJcbiAgICAgICAgICAoa2V5dXApPVwic2VhcmNoKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3ZnXG4gICAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgICBoZWlnaHQ9XCIyNVwiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjVcIlxuICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICBjbGFzcz1cImFycm93X2ltZ1wiXG4gICAgICA+XG4gICAgICAgIDxnIGlkPVwiRG93biBBcnJvd1wiPlxuICAgICAgICAgIDxnIGlkPVwiR3JvdXBcIj5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGlkPVwiUGF0aFwiXG4gICAgICAgICAgICAgIGQ9XCJNNiA5LjEzNzQxTDEyIDE1LjIyOUwxOCA5LjEzNzQxXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiIzhFOUFBMFwiXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9zdmc+XG4gICAgICA8c3BhblxuICAgICAgICAoY2xpY2spPVwidW5zZWxlY3RBbGwoKVwiXG4gICAgICAgICpuZ0lmPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwIHx8IHNlbGVjdGVkSXRlbU5hbWUgIT0gJydcIlxuICAgICAgICBjbGFzcz1cImRlc2VsZWN0XCJcbiAgICAgICAgPiZ0aW1lczs8L3NwYW5cbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgICNkcm9wZG93bkl0ZW1zXG4gICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtc1wiXG4gICAgKm5nSWY9XCJkcm9wZG93bk9wZW5lZFwiXG4gICAgKHNjcm9sbCk9XCJvbkRyb3Bkb3duU2Nyb2xsKCRldmVudClcIlxuICA+XG4gICAgPGEgY2xhc3M9XCJjcmVhdGVfYnV0dG9uXCIgKGNsaWNrKT1cImNyZWF0ZU5ldygpXCIgKm5nSWY9XCJzaG93Q3JlYXRlTmV3XCI+Q3JlYXRlIG5ldzwvYT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtdWx0aXBsZTsgZWxzZSBzaW5nbGVTZWxlY3Rpb25cIj5cbiAgICAgIDxhXG4gICAgICAgIGNsYXNzPVwiaXRlbXMgZC1ibG9ja1wiXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oaXRlbSlcIlxuICAgICAgPlxuICAgICAgICB7eyBpdGVtW2xhYmVsXSB9fVxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25fYnV0dG9uc1wiPlxuICAgICAgICAgIDxidXR0b24gICpuZ0Zvcj1cImxldCBidXR0b24gb2YgY3VzdG9tQnV0dG9uc1wiXG4gICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUJ1dHRvbkNsaWNrKGJ1dHRvbi5hY3Rpb24pXCI+PGkgW2NsYXNzXT1cImJ1dHRvbi5pY29uXCIgW3N0eWxlLmNvbG9yXT1cImJ1dHRvbi5jb2xvclwiPjwvaT4gIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlU2VsZWN0aW9uPlxuICAgICAgPGFcbiAgICAgICAgY2xhc3M9XCJpdGVtcyBkLWJsb2NrXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0SXRlbShpdGVtKVwiXG4gICAgICA+XG4gICAgICAgIHt7IGl0ZW1bbGFiZWxdIH19XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bl9idXR0b25zXCI+XG4gICAgICAgICAgPGJ1dHRvbiAgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBjdXN0b21CdXR0b25zXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQnV0dG9uQ2xpY2soYnV0dG9uLmFjdGlvbilcIj48aSBbY2xhc3NdPVwiYnV0dG9uLmljb25cIiBbc3R5bGUuY29sb3JdPVwiYnV0dG9uLmNvbG9yXCI+PC9pPiAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZHJvcGRvd24vc3JjL2xpYi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kcm9wZG93bi9zcmMvbGliL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVksWUFBWSxFQUFDLFlBQVksRUFBQyxLQUFLLEVBQVEsTUFBTSxFQUFDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQU83RyxNQUFNLE9BQU8saUJBQWlCO0lBTDlCO1FBUVcsa0JBQWEsR0FBVSxFQUFFLENBQUM7UUFDMUIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixVQUFLLEdBQVUsRUFBRSxDQUFDO1FBRWxCLGtCQUFhLEdBQXdFLEVBQUUsQ0FBQztRQUN4RixlQUFVLEdBQVksSUFBSSxDQUFDO1FBQzFCLGdCQUFXLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7UUFDN0Qsd0JBQW1CLEdBQXdCLElBQUksWUFBWSxFQUVsRSxDQUFDO1FBQ00sYUFBUSxHQUF3QixJQUFJLFlBQVksRUFBUyxDQUFDO1FBQzFELGdCQUFXLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7UUFDN0QsYUFBUSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXRFLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUMxQixlQUFVLEdBQVEsRUFBRSxDQUFDO0tBNkd0QjtJQTNHQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hDLElBQUksSUFBSSxDQUFDLGFB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LFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3JDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBa0I7UUFDbEMsTUFBTSxFQUFFLENBQUM7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7K0dBaklVLGlCQUFpQjttR0FBakIsaUJBQWlCLGd0QkNQOUIsMnVIQXdHQTs7NEZEakdhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxjQUFjOzhCQUtmLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFHRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFtQnFCLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFpREgsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUVyQixlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsRWxlbWVudFJlZixFdmVudEVtaXR0ZXIsSG9zdExpc3RlbmVyLElucHV0LE9uSW5pdCxPdXRwdXQsVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbXVsdGlwbGUhOiBib29sZWFuO1xuICBASW5wdXQoKSBzY3JvbGxhYmxlITogYm9vbGVhbjtcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IFN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBzaG93Q3JlYXRlTmV3ITogYm9vbGVhbjtcbiAgQElucHV0KCkgY3VzdG9tQnV0dG9uczogeyBsYWJlbDogc3RyaW5nOyBpY29uOiBzdHJpbmc7IGNvbG9yOnN0cmluZyA7YWN0aW9uOiAoKSA9PiB2b2lkIH1bXSA9IFtdO1xuICBASW5wdXQoKSBzaG93Qm9yZGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIGFueVtdXG4gID4oKTtcbiAgQE91dHB1dCgpIG9uU2Nyb2xsOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIG9uQ3JlYXRlTmV3OiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIG9uU2VhcmNoOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGRyb3Bkb3duT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkSXRlbTogYW55O1xuICBzZWxlY3RlZEl0ZW1OYW1lOiBzdHJpbmcgPSAnJztcbiAgb3JpZ2luYWxJdGVtczogYW55W10gPSBbXTtcbiAgc2VhcmNoVGVybTpzdHJpbmc9Jyc7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcmlnaW5hbEl0ZW1zID0gdGhpcy5pdGVtcy5zbGljZSgpOyBcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdEl0ZW0odGhpcy5zZWxlY3RlZEl0ZW1zWzBdKTtcbiAgICB9XG4gIH1cblxuICBvcGVuRHJvcGRvd24oKSB7XG4gICAgdGhpcy5kcm9wZG93bk9wZW5lZCA9ICF0aGlzLmRyb3Bkb3duT3BlbmVkO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25JdGVtcycpIGRyb3Bkb3duaXRlbXMhOiBFbGVtZW50UmVmO1xuXG4gIG9uRHJvcGRvd25TY3JvbGwoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9uU2Nyb2xsKSB7XG4gICAgICBjb25zdCBkcm9wZG93bkVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5kcm9wZG93bml0ZW1zLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBjb25zdCBzY3JvbGxQb3NpdGlvbiA9XG4gICAgICAgIGRyb3Bkb3duRWxlbWVudC5zY3JvbGxUb3AgKyBkcm9wZG93bkVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgY29uc3QgdG90YWxIZWlnaHQgPSBkcm9wZG93bkVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuXG4gICAgICBpZiAoc2Nyb2xsUG9zaXRpb24gPj0gdG90YWxIZWlnaHQpIHtcbiAgICAgICAgdGhpcy5vblNjcm9sbC5lbWl0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0SXRlbShpdGVtOiBhbnkpIHtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkSXRlbXMuaW5jbHVkZXMoaXRlbSkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKFxuICAgICAgICAgIChzZWxlY3RlZDogYW55KSA9PiBzZWxlY3RlZCAhPT0gaXRlbVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNbMF0gPSBpdGVtO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1OYW1lID0gdGhpcy5zZWxlY3RlZEl0ZW1zWzBdW3RoaXMubGFiZWxdO1xuICAgICAgdGhpcy5kcm9wZG93bk9wZW5lZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMub3JpZ2luYWxJdGVtcy5zbGljZSgpO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICB9XG4gIH1cblxuICB1bnNlbGVjdEl0ZW0oaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihcbiAgICAgIChzZWxlY3RlZDogYW55KSA9PiBzZWxlY3RlZCAhPT0gaXRlbVxuICAgICk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgfVxuXG4gIHVuc2VsZWN0QWxsKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtTmFtZSA9ICcnO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgdGhpcy5pdGVtcyA9IHRoaXMub3JpZ2luYWxJdGVtcy5zbGljZSgpO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnZHJvcGRvd24nKSBkcm9wZG93biE6IEVsZW1lbnRSZWY7XG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlzQ2xpY2tJbnNpZGVEcm9wZG93biA9IHRoaXMuZHJvcGRvd24ubmF0aXZlRWxlbWVudC5jb250YWlucyhcbiAgICAgIGV2ZW50LnRhcmdldFxuICAgICk7XG4gICAgaWYgKCFpc0NsaWNrSW5zaWRlRHJvcGRvd24pIHtcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVOZXcoKSB7XG4gICAgdGhpcy5vbkNyZWF0ZU5ldy5lbWl0KCk7XG4gIH1cblxuICBzZWFyY2goZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlOyAgICBcbiAgXG4gICAgaWYgKGtleUNvZGUgPT09IDggJiYgIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1OYW1lID0gJyc7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMub3JpZ2luYWxJdGVtcy5zbGljZSgpO1xuICAgIH0gZWxzZSB7XG5cbiAgICAgIHRoaXMuc2VhcmNoVGVybSA9IGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICBpZiAoIXRoaXMub25TZWFyY2gub2JzZXJ2ZXJzLmxlbmd0aCkgeyAgICAgICAgXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRlcm0udHJpbSgpID09PSAnJykge1xuICAgICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLm9yaWdpbmFsSXRlbXMuc2xpY2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5vcmlnaW5hbEl0ZW1zLmZpbHRlcigoaXRlbSkgPT5cbiAgICAgICAgICAgIGl0ZW1bdGhpcy5sYWJlbF0udG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHRoaXMuc2VhcmNoVGVybSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5vblNlYXJjaC5lbWl0KHRoaXMuc2VhcmNoVGVybSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQnV0dG9uQ2xpY2soYWN0aW9uOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgYWN0aW9uKCk7XG4gICAgdGhpcy5idXR0b25DbGljay5lbWl0KCk7XG4gIH1cbiAgXG59IiwiPGRpdiAjZHJvcGRvd24gY2xhc3M9XCJkcm9wZG93blwiIFtuZ0NsYXNzXT1cInsnbm8tYm9yZGVyJzogIXNob3dCb3JkZXJ9XCJcbltuZ0NsYXNzXT1cInsnb3BlbmVkJzogZHJvcGRvd25PcGVuZWQsICdjbG9zZWQnOiAhZHJvcGRvd25PcGVuZWR9XCI+XG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1maWVsZFwiIGlkPVwiZGl2aXNpb25cIiBbbmdDbGFzc109XCJ7J29wZW5lZCc6IGRyb3Bkb3duT3BlbmVkLCAnY2xvc2VkJzogIWRyb3Bkb3duT3BlbmVkfVwiPlxuICAgIDxkaXYgKm5nSWY9XCIhc2VsZWN0ZWRJdGVtICYmIG11bHRpcGxlXCIgY2xhc3M9XCJzZWxlY3RlZFwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdGb3I9XCJsZXQgc2VsZWN0ZWRJdGVtIG9mIHNlbGVjdGVkSXRlbXMuc2xpY2UoMCwgMylcIlxuICAgICAgICBjbGFzcz1cInNlbGVjdGVkLWl0ZW1cIj5cbiAgICAgICAge3sgc2VsZWN0ZWRJdGVtW2xhYmVsXSB9fVxuICAgICAgICA8c3BhbiAoY2xpY2spPVwidW5zZWxlY3RJdGVtKHNlbGVjdGVkSXRlbSlcIlxuICAgICAgICAgIGNsYXNzPVwiY2xvc2UtaWNvblwiPiZ0aW1lczs8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDNcIiBjbGFzcz1cInJlbWFpbmluZy1pdGVtc1wiPlxuICAgICAgICArIHt7IHNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMyB9fSBtb3JlXG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1maWVsZFwiPlxuICAgICAgPGRpdiAqbmdJZj1cIm11bHRpcGxlXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25fdGV4dFwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAoa2V5dXApPVwic2VhcmNoKCRldmVudClcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIW11bHRpcGxlXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25fdGV4dFwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkSXRlbU5hbWVcIlxuICAgICAgICAgIChrZXl1cCk9XCJzZWFyY2goJGV2ZW50KVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkb3duLWFycm93XCIgKGNsaWNrKT1cIm9wZW5Ecm9wZG93bigpXCI+XG4gICAgICAgIDxzdmdcbiAgICAgICAgICB3aWR0aD1cIjI0XCJcbiAgICAgICAgICBoZWlnaHQ9XCIyNVwiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNVwiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIGNsYXNzPVwiZG93bi1hcnJvdy1pbWdcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnb3BlbmVkJzogZHJvcGRvd25PcGVuZWQsICdjbG9zZWQnOiAhZHJvcGRvd25PcGVuZWR9XCI+XG4gICAgICAgICAgPGcgaWQ9XCJEb3duIEFycm93XCI+XG4gICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCI+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgaWQ9XCJQYXRoXCJcbiAgICAgICAgICAgICAgICBkPVwiTTYgOS4xMzc0MUwxMiAxNS4yMjlMMTggOS4xMzc0MVwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzhFOUFBMFwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgICAgPC9nPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInVwLWFycm93XCIgKGNsaWNrKT1cIm9wZW5Ecm9wZG93bigpXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI1XCIgdmlld0JveD1cIjAgMCAyNCAyNVwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgY2xhc3M9XCJ1cC1hcnJvdy1pbWdcIiBbbmdDbGFzc109XCJ7J29wZW5lZCc6IGRyb3Bkb3duT3BlbmVkLCAnY2xvc2VkJzogIWRyb3Bkb3duT3BlbmVkfVwiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTggMTUuMjI5TDEyIDkuMTM3NEw2IDE1LjIyOVwiIHN0cm9rZT1cIiM4RTlBQTBcIlxuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhblxuICAgICAgICAoY2xpY2spPVwidW5zZWxlY3RBbGwoKVwiXG4gICAgICAgICpuZ0lmPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwIHx8IHNlbGVjdGVkSXRlbU5hbWUgIT0gJydcIlxuICAgICAgICBjbGFzcz1cImRlc2VsZWN0XCI+JnRpbWVzOzwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgICNkcm9wZG93bkl0ZW1zXG4gICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtc1wiXG4gICAgKm5nSWY9XCJkcm9wZG93bk9wZW5lZFwiXG4gICAgKHNjcm9sbCk9XCJvbkRyb3Bkb3duU2Nyb2xsKCRldmVudClcIj5cbiAgICA8YSBjbGFzcz1cImNyZWF0ZV9idXR0b25cIiAoY2xpY2spPVwiY3JlYXRlTmV3KClcIiAqbmdJZj1cInNob3dDcmVhdGVOZXdcIj5DcmVhdGVcbiAgICAgIG5ldzwvYT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtdWx0aXBsZTsgZWxzZSBzaW5nbGVTZWxlY3Rpb25cIj5cbiAgICAgIDxhXG4gICAgICAgIGNsYXNzPVwiaXRlbXMgZC1ibG9ja1wiXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oaXRlbSlcIj5cbiAgICAgICAge3sgaXRlbVtsYWJlbF0gfX1cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duX2J1dHRvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBidXR0b24gb2YgY3VzdG9tQnV0dG9uc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQnV0dG9uQ2xpY2soYnV0dG9uLmFjdGlvbilcIj48aSBbY2xhc3NdPVwiYnV0dG9uLmljb25cIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiYnV0dG9uLmNvbG9yXCI+PC9pPiA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2E+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI3NpbmdsZVNlbGVjdGlvbj5cbiAgICAgIDxhXG4gICAgICAgIGNsYXNzPVwiaXRlbXMgZC1ibG9ja1wiXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oaXRlbSlcIj5cbiAgICAgICAge3sgaXRlbVtsYWJlbF0gfX1cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duX2J1dHRvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBidXR0b24gb2YgY3VzdG9tQnV0dG9uc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQnV0dG9uQ2xpY2soYnV0dG9uLmFjdGlvbilcIj48aSBbY2xhc3NdPVwiYnV0dG9uLmljb25cIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiYnV0dG9uLmNvbG9yXCI+PC9pPiA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2E+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -42,7 +42,7 @@ class DropdownComponent {
42
42
  }
43
43
  }
44
44
  openDropdown() {
45
- this.dropdownOpened = true;
45
+ this.dropdownOpened = !this.dropdownOpened;
46
46
  }
47
47
  onDropdownScroll(event) {
48
48
  if (this.onScroll) {
@@ -120,11 +120,11 @@ class DropdownComponent {
120
120
  this.buttonClick.emit();
121
121
  }
122
122
  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", label: "label", items: "items", showCreateNew: "showCreateNew", 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]=\"{'no-border': !showBorder}\">\n <div class=\"dropdown-field\" id=\"division\">\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected\">\n <div\n *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\"\n class=\"selected-item\"\n >\n {{ selectedItem[label] }}\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\"\n >&times;</span\n >\n </div>\n <div *ngIf=\"selectedItems.length > 3\" class=\"remaining-items\">\n + {{ selectedItems.length - 3 }} more\n </div>\n </div>\n\n <div class=\"input-field\" (click)=\"openDropdown()\">\n <div *ngIf=\"multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n (keyup)=\"search($event)\"\n />\n </div>\n <div *ngIf=\"!multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"selectedItemName\"\n (keyup)=\"search($event)\"\n />\n </div>\n <svg\n width=\"24\"\n height=\"25\"\n viewBox=\"0 0 24 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"arrow_img\"\n >\n <g id=\"Down Arrow\">\n <g id=\"Group\">\n <path\n id=\"Path\"\n d=\"M6 9.13741L12 15.229L18 9.13741\"\n stroke=\"#8E9AA0\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n </g>\n </svg>\n <span\n (click)=\"unselectAll()\"\n *ngIf=\"selectedItems.length > 0 || selectedItemName != ''\"\n class=\"deselect\"\n >&times;</span\n >\n </div>\n </div>\n\n <div\n #dropdownItems\n class=\"dropdown-items\"\n *ngIf=\"dropdownOpened\"\n (scroll)=\"onDropdownScroll($event)\"\n >\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\">Create new</a>\n\n <ng-container *ngIf=\"multiple; else singleSelection\">\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\"\n >\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\" [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-container>\n\n <ng-template #singleSelection>\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\"\n >\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\" [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-template>\n </div>\n</div>\n", styles: [".dropdown{background:#fff;border-radius:6px;border:2px #D8D8D8 solid}@media only screen and (min-width: 276px){.dropdown{min-height:51px;max-width:200px}}@media only screen and (min-width: 576px){.dropdown{min-height:51px;max-width:225px}}@media only screen and (min-width: 992px){.dropdown{min-height:51px;max-width:260px}}@media only screen and (min-width: 1200px){.dropdown{min-height:51px;max-width:344px}}.dropdown.no-border{border:none}.dropdown .dropdown-field{background:#fff;box-shadow:0 4px 4px -5px #00000040;border-radius:6px;position:relative;cursor:pointer}@media only screen and (min-width: 276px){.dropdown .dropdown-field{min-height:51px;max-width:200px}}@media only screen and (min-width: 576px){.dropdown .dropdown-field{min-height:51px;max-width:225px}}@media only screen and (min-width: 992px){.dropdown .dropdown-field{min-height:51px;max-width:260px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-field{min-height:51px;max-width:344px}}.dropdown .dropdown-field .selected{margin:5px}.dropdown .dropdown-field .selected .selected-item{background:#cdd0d1;display:inline;margin:5px;padding:3px;border-radius:5px}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:3px}.dropdown .dropdown-field .input-field .dropdown_text{height:51px;width:100%;border:none;padding:10px;outline:none;box-sizing:border-box}.dropdown .dropdown-field .input-field .arrow_img{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.dropdown .dropdown-field .input-field .deselect{position:absolute;top:50%;right:40px;transform:translateY(-50%)}.dropdown .dropdown-items{overflow:auto}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;max-width:200px;padding:5px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:8px;max-width:250px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:11px;max-width:344px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:15px;max-width:344px}}.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{max-width:200px;padding-left:20px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .create_button{max-width:260px;padding-left:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .create_button{max-width:344px;padding-left:20px}}.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{min-width:160px;padding-left:20px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .items{min-width:220px;padding-left:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .items{max-width:300px;padding-left:20px}}.dropdown .dropdown-items .items:hover{background:#cdd0d1;border-radius:6px}.dropdown .dropdown-items .items:hover button{visibility:visible}.dropdown .dropdown-items .items .dropdown_buttons{display:inline;position:absolute;right:5%}.dropdown .dropdown-items .items button{border:0;background:transparent;visibility:hidden}\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"] }] }); }
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", label: "label", items: "items", showCreateNew: "showCreateNew", 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]=\"{'no-border': !showBorder}\"\n[ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected\">\n <div\n *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\"\n class=\"selected-item\">\n {{ selectedItem[label] }}\n <span (click)=\"unselectItem(selectedItem)\"\n class=\"close-icon\">&times;</span>\n </div>\n <div *ngIf=\"selectedItems.length > 3\" class=\"remaining-items\">\n + {{ selectedItems.length - 3 }} more\n </div>\n </div>\n\n <div class=\"input-field\">\n <div *ngIf=\"multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n (keyup)=\"search($event)\" />\n </div>\n <div *ngIf=\"!multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"selectedItemName\"\n (keyup)=\"search($event)\" />\n </div>\n <div class=\"down-arrow\" (click)=\"openDropdown()\">\n <svg\n width=\"24\"\n height=\"25\"\n viewBox=\"0 0 24 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"down-arrow-img\"\n [ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <g id=\"Down Arrow\">\n <g id=\"Group\">\n <path\n id=\"Path\"\n d=\"M6 9.13741L12 15.229L18 9.13741\"\n stroke=\"#8E9AA0\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </g>\n </svg>\n </div>\n <div class=\"up-arrow\" (click)=\"openDropdown()\">\n <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\" [ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\"\n stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n <span\n (click)=\"unselectAll()\"\n *ngIf=\"selectedItems.length > 0 || selectedItemName != ''\"\n class=\"deselect\">&times;</span>\n </div>\n </div>\n\n <div\n #dropdownItems\n class=\"dropdown-items\"\n *ngIf=\"dropdownOpened\"\n (scroll)=\"onDropdownScroll($event)\">\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\">Create\n new</a>\n\n <ng-container *ngIf=\"multiple; else singleSelection\">\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\">\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\"\n [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-container>\n\n <ng-template #singleSelection>\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\">\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\"\n [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-template>\n </div>\n</div>\n", styles: [".dropdown{background:#fff;border-radius:6px}@media only screen and (min-width: 576px){.dropdown{max-width:225px}}@media only screen and (min-width: 992px){.dropdown{max-width:260px}}@media only screen and (min-width: 1200px){.dropdown{max-width:344px}}.dropdown.no-border{border:none}.dropdown .dropdown-field{background:#fff;box-shadow:0 4px 4px -5px #00000040;border-radius:6px;position:relative;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-field{max-width:225px}}@media only screen and (min-width: 992px){.dropdown .dropdown-field{max-width:260px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-field{max-width:344px}}.dropdown .dropdown-field .selected{margin:5px}.dropdown .dropdown-field .selected .selected-item{background:#cdd0d1;display:inline;margin:5px;padding:3px;border-radius:5px}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:3px}.dropdown .dropdown-field .input-field .dropdown_text{width:100%;border:none;padding:10px;outline:none;box-sizing:border-box}@media only screen and (min-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{height:41px}}@media only screen and (min-width: 992px){.dropdown .dropdown-field .input-field .dropdown_text{height:46px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-field .input-field .dropdown_text{height:51px}}.dropdown .dropdown-field .input-field .down-arrow-img{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.dropdown .dropdown-field .input-field .down-arrow-img.opened{display:none}.dropdown .dropdown-field .input-field .down-arrow-img.closed{display:block}.dropdown .dropdown-field .input-field .up-arrow-img{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.dropdown .dropdown-field .input-field .up-arrow-img.closed{display:none}.dropdown .dropdown-field .input-field .deselect{position:absolute;top:50%;right:40px;transform:translateY(-50%)}.dropdown .dropdown-field.closed{border:2px solid #D8D8D8}.dropdown .dropdown-field.opened{border-bottom:2px solid #D8D8D8}.dropdown .dropdown-items{overflow:auto}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;max-width:200px;padding:5px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:8px;max-width:250px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:11px;max-width:344px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:15px;max-width:344px}}.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{max-width:200px;padding-left:20px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .create_button{max-width:260px;padding-left:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .create_button{max-width:344px;padding-left:20px}}.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{min-width:160px;padding-left:20px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .items{min-width:220px;padding-left:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .items{max-width:300px;padding-left:20px}}.dropdown .dropdown-items .items:hover{background:#cdd0d1;border-radius:6px}.dropdown .dropdown-items .items:hover button{visibility:visible}.dropdown .dropdown-items .items .dropdown_buttons{display:inline;position:absolute;right:5%}.dropdown .dropdown-items .items button{border:0;background:transparent;visibility:hidden}.dropdown.opened{border:2px #D8D8D8 solid}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#b2b2b2;border-radius:6px}\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"] }] }); }
124
124
  }
125
125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownComponent, decorators: [{
126
126
  type: Component,
127
- args: [{ selector: 'lib-dropdown', template: "<div #dropdown class=\"dropdown\" [ngClass]=\"{'no-border': !showBorder}\">\n <div class=\"dropdown-field\" id=\"division\">\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected\">\n <div\n *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\"\n class=\"selected-item\"\n >\n {{ selectedItem[label] }}\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\"\n >&times;</span\n >\n </div>\n <div *ngIf=\"selectedItems.length > 3\" class=\"remaining-items\">\n + {{ selectedItems.length - 3 }} more\n </div>\n </div>\n\n <div class=\"input-field\" (click)=\"openDropdown()\">\n <div *ngIf=\"multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n (keyup)=\"search($event)\"\n />\n </div>\n <div *ngIf=\"!multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"selectedItemName\"\n (keyup)=\"search($event)\"\n />\n </div>\n <svg\n width=\"24\"\n height=\"25\"\n viewBox=\"0 0 24 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"arrow_img\"\n >\n <g id=\"Down Arrow\">\n <g id=\"Group\">\n <path\n id=\"Path\"\n d=\"M6 9.13741L12 15.229L18 9.13741\"\n stroke=\"#8E9AA0\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n </g>\n </svg>\n <span\n (click)=\"unselectAll()\"\n *ngIf=\"selectedItems.length > 0 || selectedItemName != ''\"\n class=\"deselect\"\n >&times;</span\n >\n </div>\n </div>\n\n <div\n #dropdownItems\n class=\"dropdown-items\"\n *ngIf=\"dropdownOpened\"\n (scroll)=\"onDropdownScroll($event)\"\n >\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\">Create new</a>\n\n <ng-container *ngIf=\"multiple; else singleSelection\">\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\"\n >\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\" [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-container>\n\n <ng-template #singleSelection>\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\"\n >\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\" [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-template>\n </div>\n</div>\n", styles: [".dropdown{background:#fff;border-radius:6px;border:2px #D8D8D8 solid}@media only screen and (min-width: 276px){.dropdown{min-height:51px;max-width:200px}}@media only screen and (min-width: 576px){.dropdown{min-height:51px;max-width:225px}}@media only screen and (min-width: 992px){.dropdown{min-height:51px;max-width:260px}}@media only screen and (min-width: 1200px){.dropdown{min-height:51px;max-width:344px}}.dropdown.no-border{border:none}.dropdown .dropdown-field{background:#fff;box-shadow:0 4px 4px -5px #00000040;border-radius:6px;position:relative;cursor:pointer}@media only screen and (min-width: 276px){.dropdown .dropdown-field{min-height:51px;max-width:200px}}@media only screen and (min-width: 576px){.dropdown .dropdown-field{min-height:51px;max-width:225px}}@media only screen and (min-width: 992px){.dropdown .dropdown-field{min-height:51px;max-width:260px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-field{min-height:51px;max-width:344px}}.dropdown .dropdown-field .selected{margin:5px}.dropdown .dropdown-field .selected .selected-item{background:#cdd0d1;display:inline;margin:5px;padding:3px;border-radius:5px}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:3px}.dropdown .dropdown-field .input-field .dropdown_text{height:51px;width:100%;border:none;padding:10px;outline:none;box-sizing:border-box}.dropdown .dropdown-field .input-field .arrow_img{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.dropdown .dropdown-field .input-field .deselect{position:absolute;top:50%;right:40px;transform:translateY(-50%)}.dropdown .dropdown-items{overflow:auto}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;max-width:200px;padding:5px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:8px;max-width:250px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:11px;max-width:344px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:15px;max-width:344px}}.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{max-width:200px;padding-left:20px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .create_button{max-width:260px;padding-left:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .create_button{max-width:344px;padding-left:20px}}.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{min-width:160px;padding-left:20px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .items{min-width:220px;padding-left:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .items{max-width:300px;padding-left:20px}}.dropdown .dropdown-items .items:hover{background:#cdd0d1;border-radius:6px}.dropdown .dropdown-items .items:hover button{visibility:visible}.dropdown .dropdown-items .items .dropdown_buttons{display:inline;position:absolute;right:5%}.dropdown .dropdown-items .items button{border:0;background:transparent;visibility:hidden}\n"] }]
127
+ args: [{ selector: 'lib-dropdown', template: "<div #dropdown class=\"dropdown\" [ngClass]=\"{'no-border': !showBorder}\"\n[ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected\">\n <div\n *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\"\n class=\"selected-item\">\n {{ selectedItem[label] }}\n <span (click)=\"unselectItem(selectedItem)\"\n class=\"close-icon\">&times;</span>\n </div>\n <div *ngIf=\"selectedItems.length > 3\" class=\"remaining-items\">\n + {{ selectedItems.length - 3 }} more\n </div>\n </div>\n\n <div class=\"input-field\">\n <div *ngIf=\"multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n (keyup)=\"search($event)\" />\n </div>\n <div *ngIf=\"!multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"selectedItemName\"\n (keyup)=\"search($event)\" />\n </div>\n <div class=\"down-arrow\" (click)=\"openDropdown()\">\n <svg\n width=\"24\"\n height=\"25\"\n viewBox=\"0 0 24 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"down-arrow-img\"\n [ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <g id=\"Down Arrow\">\n <g id=\"Group\">\n <path\n id=\"Path\"\n d=\"M6 9.13741L12 15.229L18 9.13741\"\n stroke=\"#8E9AA0\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </g>\n </svg>\n </div>\n <div class=\"up-arrow\" (click)=\"openDropdown()\">\n <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\" [ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\"\n stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n <span\n (click)=\"unselectAll()\"\n *ngIf=\"selectedItems.length > 0 || selectedItemName != ''\"\n class=\"deselect\">&times;</span>\n </div>\n </div>\n\n <div\n #dropdownItems\n class=\"dropdown-items\"\n *ngIf=\"dropdownOpened\"\n (scroll)=\"onDropdownScroll($event)\">\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\">Create\n new</a>\n\n <ng-container *ngIf=\"multiple; else singleSelection\">\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\">\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\"\n [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-container>\n\n <ng-template #singleSelection>\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\">\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\"\n [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-template>\n </div>\n</div>\n", styles: [".dropdown{background:#fff;border-radius:6px}@media only screen and (min-width: 576px){.dropdown{max-width:225px}}@media only screen and (min-width: 992px){.dropdown{max-width:260px}}@media only screen and (min-width: 1200px){.dropdown{max-width:344px}}.dropdown.no-border{border:none}.dropdown .dropdown-field{background:#fff;box-shadow:0 4px 4px -5px #00000040;border-radius:6px;position:relative;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-field{max-width:225px}}@media only screen and (min-width: 992px){.dropdown .dropdown-field{max-width:260px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-field{max-width:344px}}.dropdown .dropdown-field .selected{margin:5px}.dropdown .dropdown-field .selected .selected-item{background:#cdd0d1;display:inline;margin:5px;padding:3px;border-radius:5px}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:3px}.dropdown .dropdown-field .input-field .dropdown_text{width:100%;border:none;padding:10px;outline:none;box-sizing:border-box}@media only screen and (min-width: 576px){.dropdown .dropdown-field .input-field .dropdown_text{height:41px}}@media only screen and (min-width: 992px){.dropdown .dropdown-field .input-field .dropdown_text{height:46px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-field .input-field .dropdown_text{height:51px}}.dropdown .dropdown-field .input-field .down-arrow-img{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.dropdown .dropdown-field .input-field .down-arrow-img.opened{display:none}.dropdown .dropdown-field .input-field .down-arrow-img.closed{display:block}.dropdown .dropdown-field .input-field .up-arrow-img{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.dropdown .dropdown-field .input-field .up-arrow-img.closed{display:none}.dropdown .dropdown-field .input-field .deselect{position:absolute;top:50%;right:40px;transform:translateY(-50%)}.dropdown .dropdown-field.closed{border:2px solid #D8D8D8}.dropdown .dropdown-field.opened{border-bottom:2px solid #D8D8D8}.dropdown .dropdown-items{overflow:auto}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;max-width:200px;padding:5px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:8px;max-width:250px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:11px;max-width:344px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:15px;max-width:344px}}.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{max-width:200px;padding-left:20px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .create_button{max-width:260px;padding-left:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .create_button{max-width:344px;padding-left:20px}}.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{min-width:160px;padding-left:20px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .items{min-width:220px;padding-left:20px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .items{max-width:300px;padding-left:20px}}.dropdown .dropdown-items .items:hover{background:#cdd0d1;border-radius:6px}.dropdown .dropdown-items .items:hover button{visibility:visible}.dropdown .dropdown-items .items .dropdown_buttons{display:inline;position:absolute;right:5%}.dropdown .dropdown-items .items button{border:0;background:transparent;visibility:hidden}.dropdown.opened{border:2px #D8D8D8 solid}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#b2b2b2;border-radius:6px}\n"] }]
128
128
  }], propDecorators: { multiple: [{
129
129
  type: Input
130
130
  }], scrollable: [{
@@ -1 +1 @@
1
- {"version":3,"file":"piserve-tech-drop-down.mjs","sources":["../../../projects/dropdown/src/lib/dropdown.service.ts","../../../projects/dropdown/src/lib/dropdown.component.ts","../../../projects/dropdown/src/lib/dropdown.component.html","../../../projects/dropdown/src/lib/dropdown.module.ts","../../../projects/dropdown/src/public-api.ts","../../../projects/dropdown/src/piserve-tech-drop-down.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DropdownService {\n\n constructor() { }\n}\n","import { Component,ElementRef,EventEmitter,HostListener,Input,OnInit,Output,ViewChild } from '@angular/core';\n\n@Component({\n selector: 'lib-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss'],\n})\nexport class DropdownComponent implements OnInit {\n @Input() multiple!: boolean;\n @Input() scrollable!: boolean;\n @Input() selectedItems: any[] = [];\n @Input() placeholder: String = '';\n @Input() label: string = '';\n @Input() items: any[] = [];\n @Input() showCreateNew!: boolean;\n @Input() customButtons: { label: string; icon: string; color:string ;action: () => void }[] = [];\n @Input() showBorder: boolean = true;\n @Output() buttonClick: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() selectedItemsChange: EventEmitter<any[]> = new EventEmitter<\n any[]\n >();\n @Output() onScroll: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onCreateNew: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onSearch: EventEmitter<string> = new EventEmitter<string>();\n\n dropdownOpened: boolean = false;\n selectedItem: any;\n selectedItemName: string = '';\n originalItems: any[] = [];\n searchTerm:string='';\n\n ngOnInit(): void {\n this.originalItems = this.items.slice(); \n if (this.selectedItems && this.selectedItems.length > 0) {\n this.selectItem(this.selectedItems[0]);\n }\n }\n\n openDropdown() {\n this.dropdownOpened = true;\n }\n\n @ViewChild('dropdownItems') dropdownitems!: ElementRef;\n\n onDropdownScroll(event: any): void {\n if (this.onScroll) {\n const dropdownElement: HTMLElement = this.dropdownitems.nativeElement;\n const scrollPosition =\n dropdownElement.scrollTop + dropdownElement.clientHeight;\n const totalHeight = dropdownElement.scrollHeight;\n\n if (scrollPosition >= totalHeight) {\n this.onScroll.emit();\n }\n }\n }\n\n selectItem(item: any) {\n if (this.multiple) {\n if (!this.selectedItems.includes(item)) {\n this.selectedItems.push(item);\n this.selectedItemsChange.emit(this.selectedItems);\n } else {\n this.selectedItems = this.selectedItems.filter(\n (selected: any) => selected !== item\n );\n this.selectedItemsChange.emit(this.selectedItems);\n }\n } else {\n this.selectedItems[0] = item;\n this.selectedItemName = this.selectedItems[0][this.label];\n this.dropdownOpened = false;\n this.items = this.originalItems.slice();\n this.selectedItemsChange.emit(this.selectedItems);\n }\n }\n\n unselectItem(item: any): void {\n this.selectedItems = this.selectedItems.filter(\n (selected: any) => selected !== item\n );\n this.selectedItemsChange.emit(this.selectedItems);\n }\n\n unselectAll() {\n this.selectedItems = [];\n this.selectedItemName = '';\n this.selectedItemsChange.emit(this.selectedItems);\n this.items = this.originalItems.slice();\n }\n\n @ViewChild('dropdown') dropdown!: ElementRef;\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: Event): void {\n const isClickInsideDropdown = this.dropdown.nativeElement.contains(\n event.target\n );\n if (!isClickInsideDropdown) {\n this.dropdownOpened = false;\n }\n }\n\n createNew() {\n this.onCreateNew.emit();\n }\n\n search(event: any): void {\n const keyCode = event.keyCode; \n \n if (keyCode === 8 && !this.multiple) {\n this.selectedItems = [];\n this.selectedItemName = '';\n this.selectedItemsChange.emit(this.selectedItems);\n this.items = this.originalItems.slice();\n } else {\n\n this.searchTerm = event.target.value.toLowerCase();\n\n if (!this.onSearch.observers.length) { \n if (this.searchTerm.trim() === '') {\n this.items = this.originalItems.slice();\n } else {\n this.items = this.originalItems.filter((item) =>\n item[this.label].toLowerCase().startsWith(this.searchTerm)\n );\n }\n }\n else {\n this.onSearch.emit(this.searchTerm);\n }\n }\n }\n\n handleButtonClick(action: () => void): void {\n action();\n this.buttonClick.emit();\n }\n \n}","<div #dropdown class=\"dropdown\" [ngClass]=\"{'no-border': !showBorder}\">\n <div class=\"dropdown-field\" id=\"division\">\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected\">\n <div\n *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\"\n class=\"selected-item\"\n >\n {{ selectedItem[label] }}\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\"\n >&times;</span\n >\n </div>\n <div *ngIf=\"selectedItems.length > 3\" class=\"remaining-items\">\n + {{ selectedItems.length - 3 }} more\n </div>\n </div>\n\n <div class=\"input-field\" (click)=\"openDropdown()\">\n <div *ngIf=\"multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n (keyup)=\"search($event)\"\n />\n </div>\n <div *ngIf=\"!multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"selectedItemName\"\n (keyup)=\"search($event)\"\n />\n </div>\n <svg\n width=\"24\"\n height=\"25\"\n viewBox=\"0 0 24 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"arrow_img\"\n >\n <g id=\"Down Arrow\">\n <g id=\"Group\">\n <path\n id=\"Path\"\n d=\"M6 9.13741L12 15.229L18 9.13741\"\n stroke=\"#8E9AA0\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n </g>\n </svg>\n <span\n (click)=\"unselectAll()\"\n *ngIf=\"selectedItems.length > 0 || selectedItemName != ''\"\n class=\"deselect\"\n >&times;</span\n >\n </div>\n </div>\n\n <div\n #dropdownItems\n class=\"dropdown-items\"\n *ngIf=\"dropdownOpened\"\n (scroll)=\"onDropdownScroll($event)\"\n >\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\">Create new</a>\n\n <ng-container *ngIf=\"multiple; else singleSelection\">\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\"\n >\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\" [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-container>\n\n <ng-template #singleSelection>\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\"\n >\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\" [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-template>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { DropdownComponent } from './dropdown.component';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\n\n\n@NgModule({\n declarations: [\n DropdownComponent\n ],\n imports: [\n FormsModule,\n CommonModule\n ],\n exports: [\n DropdownComponent\n ]\n})\nexport class DropdownModule { }\n","/*\n * Public API Surface of dropdown\n */\n\nexport * from './lib/dropdown.service';\nexport * from './lib/dropdown.component';\nexport * from './lib/dropdown.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"piserve-tech-drop-down.mjs","sources":["../../../projects/dropdown/src/lib/dropdown.service.ts","../../../projects/dropdown/src/lib/dropdown.component.ts","../../../projects/dropdown/src/lib/dropdown.component.html","../../../projects/dropdown/src/lib/dropdown.module.ts","../../../projects/dropdown/src/public-api.ts","../../../projects/dropdown/src/piserve-tech-drop-down.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DropdownService {\n\n constructor() { }\n}\n","import { Component,ElementRef,EventEmitter,HostListener,Input,OnInit,Output,ViewChild } from '@angular/core';\n\n@Component({\n selector: 'lib-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss'],\n})\nexport class DropdownComponent implements OnInit {\n @Input() multiple!: boolean;\n @Input() scrollable!: boolean;\n @Input() selectedItems: any[] = [];\n @Input() placeholder: String = '';\n @Input() label: string = '';\n @Input() items: any[] = [];\n @Input() showCreateNew!: boolean;\n @Input() customButtons: { label: string; icon: string; color:string ;action: () => void }[] = [];\n @Input() showBorder: boolean = true;\n @Output() buttonClick: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() selectedItemsChange: EventEmitter<any[]> = new EventEmitter<\n any[]\n >();\n @Output() onScroll: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onCreateNew: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onSearch: EventEmitter<string> = new EventEmitter<string>();\n\n dropdownOpened: boolean = false;\n selectedItem: any;\n selectedItemName: string = '';\n originalItems: any[] = [];\n searchTerm:string='';\n\n ngOnInit(): void {\n this.originalItems = this.items.slice(); \n if (this.selectedItems && this.selectedItems.length > 0) {\n this.selectItem(this.selectedItems[0]);\n }\n }\n\n openDropdown() {\n this.dropdownOpened = !this.dropdownOpened;\n }\n\n @ViewChild('dropdownItems') dropdownitems!: ElementRef;\n\n onDropdownScroll(event: any): void {\n if (this.onScroll) {\n const dropdownElement: HTMLElement = this.dropdownitems.nativeElement;\n const scrollPosition =\n dropdownElement.scrollTop + dropdownElement.clientHeight;\n const totalHeight = dropdownElement.scrollHeight;\n\n if (scrollPosition >= totalHeight) {\n this.onScroll.emit();\n }\n }\n }\n\n selectItem(item: any) {\n if (this.multiple) {\n if (!this.selectedItems.includes(item)) {\n this.selectedItems.push(item);\n this.selectedItemsChange.emit(this.selectedItems);\n } else {\n this.selectedItems = this.selectedItems.filter(\n (selected: any) => selected !== item\n );\n this.selectedItemsChange.emit(this.selectedItems);\n }\n } else {\n this.selectedItems[0] = item;\n this.selectedItemName = this.selectedItems[0][this.label];\n this.dropdownOpened = false;\n this.items = this.originalItems.slice();\n this.selectedItemsChange.emit(this.selectedItems);\n }\n }\n\n unselectItem(item: any): void {\n this.selectedItems = this.selectedItems.filter(\n (selected: any) => selected !== item\n );\n this.selectedItemsChange.emit(this.selectedItems);\n }\n\n unselectAll() {\n this.selectedItems = [];\n this.selectedItemName = '';\n this.selectedItemsChange.emit(this.selectedItems);\n this.items = this.originalItems.slice();\n }\n\n @ViewChild('dropdown') dropdown!: ElementRef;\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: Event): void {\n const isClickInsideDropdown = this.dropdown.nativeElement.contains(\n event.target\n );\n if (!isClickInsideDropdown) {\n this.dropdownOpened = false;\n }\n }\n\n createNew() {\n this.onCreateNew.emit();\n }\n\n search(event: any): void {\n const keyCode = event.keyCode; \n \n if (keyCode === 8 && !this.multiple) {\n this.selectedItems = [];\n this.selectedItemName = '';\n this.selectedItemsChange.emit(this.selectedItems);\n this.items = this.originalItems.slice();\n } else {\n\n this.searchTerm = event.target.value.toLowerCase();\n\n if (!this.onSearch.observers.length) { \n if (this.searchTerm.trim() === '') {\n this.items = this.originalItems.slice();\n } else {\n this.items = this.originalItems.filter((item) =>\n item[this.label].toLowerCase().startsWith(this.searchTerm)\n );\n }\n }\n else {\n this.onSearch.emit(this.searchTerm);\n }\n }\n }\n\n handleButtonClick(action: () => void): void {\n action();\n this.buttonClick.emit();\n }\n \n}","<div #dropdown class=\"dropdown\" [ngClass]=\"{'no-border': !showBorder}\"\n[ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected\">\n <div\n *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\"\n class=\"selected-item\">\n {{ selectedItem[label] }}\n <span (click)=\"unselectItem(selectedItem)\"\n class=\"close-icon\">&times;</span>\n </div>\n <div *ngIf=\"selectedItems.length > 3\" class=\"remaining-items\">\n + {{ selectedItems.length - 3 }} more\n </div>\n </div>\n\n <div class=\"input-field\">\n <div *ngIf=\"multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n (keyup)=\"search($event)\" />\n </div>\n <div *ngIf=\"!multiple\">\n <input\n class=\"dropdown_text\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"selectedItemName\"\n (keyup)=\"search($event)\" />\n </div>\n <div class=\"down-arrow\" (click)=\"openDropdown()\">\n <svg\n width=\"24\"\n height=\"25\"\n viewBox=\"0 0 24 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"down-arrow-img\"\n [ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <g id=\"Down Arrow\">\n <g id=\"Group\">\n <path\n id=\"Path\"\n d=\"M6 9.13741L12 15.229L18 9.13741\"\n stroke=\"#8E9AA0\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </g>\n </svg>\n </div>\n <div class=\"up-arrow\" (click)=\"openDropdown()\">\n <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\" class=\"up-arrow-img\" [ngClass]=\"{'opened': dropdownOpened, 'closed': !dropdownOpened}\">\n <path d=\"M18 15.229L12 9.1374L6 15.229\" stroke=\"#8E9AA0\"\n stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n <span\n (click)=\"unselectAll()\"\n *ngIf=\"selectedItems.length > 0 || selectedItemName != ''\"\n class=\"deselect\">&times;</span>\n </div>\n </div>\n\n <div\n #dropdownItems\n class=\"dropdown-items\"\n *ngIf=\"dropdownOpened\"\n (scroll)=\"onDropdownScroll($event)\">\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\">Create\n new</a>\n\n <ng-container *ngIf=\"multiple; else singleSelection\">\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\">\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\"\n [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-container>\n\n <ng-template #singleSelection>\n <a\n class=\"items d-block\"\n *ngFor=\"let item of items\"\n (click)=\"selectItem(item)\">\n {{ item[label] }}\n <div class=\"dropdown_buttons\">\n <button *ngFor=\"let button of customButtons\"\n (click)=\"handleButtonClick(button.action)\"><i [class]=\"button.icon\"\n [style.color]=\"button.color\"></i> </button>\n </div>\n </a>\n </ng-template>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { DropdownComponent } from './dropdown.component';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\n\n\n@NgModule({\n declarations: [\n DropdownComponent\n ],\n imports: [\n FormsModule,\n CommonModule\n ],\n exports: [\n DropdownComponent\n ]\n})\nexport class DropdownModule { }\n","/*\n * Public API Surface of dropdown\n */\n\nexport * from './lib/dropdown.service';\nexport * from './lib/dropdown.component';\nexport * from './lib/dropdown.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@piserve-tech/drop-down",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^16.2.0",
6
6
  "@angular/core": "^16.2.0"
@@ -9,6 +9,10 @@
9
9
  "tslib": "^2.3.0"
10
10
  },
11
11
  "sideEffects": false,
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "http://192.168.1.208/form-builder/library-dropdown"
15
+ },
12
16
  "module": "fesm2022/piserve-tech-drop-down.mjs",
13
17
  "typings": "index.d.ts",
14
18
  "exports": {