@piserve-tech/drop-down 1.0.9 → 1.1.1
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 +39 -39
- package/esm2022/lib/dropdown.component.mjs +25 -23
- package/esm2022/lib/dropdown.module.mjs +2 -2
- package/esm2022/lib/dropdown.service.mjs +1 -1
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/piserve-tech-drop-down.mjs +24 -22
- package/fesm2022/piserve-tech-drop-down.mjs.map +1 -1
- package/lib/dropdown.component.d.ts +11 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
## Dropdown library
|
|
2
|
-
|
|
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.
|
|
4
|
-
|
|
5
|
-
To use the dropdown add the selector '<lib-dropdown></lib-dropdown>' in the position where you need the dropdown.
|
|
6
|
-
|
|
7
|
-
## Attribute List
|
|
8
|
-
|
|
9
|
-
1. items - It takes an array of objects as input and iterate the array to show the options in dropdown.
|
|
10
|
-
|
|
11
|
-
2. label - label specifies the attribute name that has to be shown as the options in dropdown.
|
|
12
|
-
|
|
13
|
-
3. multiple - It is a boolean variable to define whether the dropdown is single selection or multi selection.By default it will be single selection.
|
|
14
|
-
|
|
15
|
-
4. selectedItems - Its a two way binding attribute which is used to get the selected values from the dropdown.
|
|
16
|
-
|
|
17
|
-
5. placeholder - String attribute to hold the value for showing placeholder of dropdown.
|
|
18
|
-
|
|
19
|
-
6. customButtons - It takes an array of objects as input for the custom buttons. Each object contains 4 elements
|
|
20
|
-
|
|
21
|
-
label - Specifies button name.
|
|
22
|
-
|
|
23
|
-
icon - It should be a font awesome icon class name for showing the icon as button.
|
|
24
|
-
|
|
25
|
-
color - For styling the button.
|
|
26
|
-
|
|
27
|
-
action - Specifies the function that should be called when the button is clicked.
|
|
28
|
-
|
|
29
|
-
7. onScroll - Define a function that should be called when scrolled to the bottom of the dropdown.
|
|
30
|
-
|
|
31
|
-
8. showCreateNew - Boolean variable to show and hide create new button.
|
|
32
|
-
|
|
33
|
-
9. createNewEvent - Define a function that should be called when createNew button is clicked.
|
|
34
|
-
|
|
35
|
-
10. onSearch - If apiSearch is true, through this attribute we can get the searchTerm for performing api search.
|
|
36
|
-
|
|
37
|
-
11. showBorder - A boolean variable to show and hide the border of dropdown. By default it will be true.
|
|
38
|
-
|
|
39
|
-
|
|
1
|
+
## Dropdown library
|
|
2
|
+
|
|
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.
|
|
4
|
+
|
|
5
|
+
To use the dropdown add the selector '<lib-dropdown></lib-dropdown>' in the position where you need the dropdown.
|
|
6
|
+
|
|
7
|
+
## Attribute List
|
|
8
|
+
|
|
9
|
+
1. items - It takes an array of objects as input and iterate the array to show the options in dropdown.
|
|
10
|
+
|
|
11
|
+
2. label - label specifies the attribute name that has to be shown as the options in dropdown.
|
|
12
|
+
|
|
13
|
+
3. multiple - It is a boolean variable to define whether the dropdown is single selection or multi selection.By default it will be single selection.
|
|
14
|
+
|
|
15
|
+
4. selectedItems - Its a two way binding attribute which is used to get the selected values from the dropdown.
|
|
16
|
+
|
|
17
|
+
5. placeholder - String attribute to hold the value for showing placeholder of dropdown.
|
|
18
|
+
|
|
19
|
+
6. customButtons - It takes an array of objects as input for the custom buttons. Each object contains 4 elements
|
|
20
|
+
|
|
21
|
+
label - Specifies button name.
|
|
22
|
+
|
|
23
|
+
icon - It should be a font awesome icon class name for showing the icon as button.
|
|
24
|
+
|
|
25
|
+
color - For styling the button.
|
|
26
|
+
|
|
27
|
+
action - Specifies the function that should be called when the button is clicked.
|
|
28
|
+
|
|
29
|
+
7. onScroll - Define a function that should be called when scrolled to the bottom of the dropdown.
|
|
30
|
+
|
|
31
|
+
8. showCreateNew - Boolean variable to show and hide create new button.
|
|
32
|
+
|
|
33
|
+
9. createNewEvent - Define a function that should be called when createNew button is clicked.
|
|
34
|
+
|
|
35
|
+
10. onSearch - If apiSearch is true, through this attribute we can get the searchTerm for performing api search.
|
|
36
|
+
|
|
37
|
+
11. showBorder - A boolean variable to show and hide the border of dropdown. By default it will be true.
|
|
38
|
+
|
|
39
|
+
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { Component, EventEmitter, HostListener, Input, Output, ViewChild } from
|
|
1
|
+
import { Component, EventEmitter, HostListener, Input, Output, ViewChild, } from "@angular/core";
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/forms";
|
|
4
4
|
import * as i2 from "@angular/common";
|
|
5
5
|
export class DropdownComponent {
|
|
6
6
|
constructor() {
|
|
7
7
|
this.selectedItems = [];
|
|
8
|
-
this.placeholder =
|
|
9
|
-
this.label = '';
|
|
8
|
+
this.placeholder = "";
|
|
10
9
|
this.items = [];
|
|
11
10
|
this.customButtons = [];
|
|
12
11
|
this.showBorder = true;
|
|
@@ -16,16 +15,17 @@ export class DropdownComponent {
|
|
|
16
15
|
this.onCreateNew = new EventEmitter();
|
|
17
16
|
this.onSearch = new EventEmitter();
|
|
18
17
|
this.dropdownOpened = false;
|
|
19
|
-
this.selectedItemName =
|
|
18
|
+
this.selectedItemName = "";
|
|
19
|
+
this.selectedItemImage = "";
|
|
20
20
|
this.originalItems = [];
|
|
21
|
-
this.searchTerm =
|
|
21
|
+
this.searchTerm = "";
|
|
22
22
|
}
|
|
23
23
|
ngOnInit() {
|
|
24
|
-
this.originalItems = this.items.slice();
|
|
25
24
|
if (this.selectedItems && this.selectedItems.length > 0) {
|
|
26
25
|
if (!this.multiple)
|
|
27
26
|
this.selectItem(this.selectedItems[0]);
|
|
28
27
|
}
|
|
28
|
+
this.originalItems = this.items.slice();
|
|
29
29
|
}
|
|
30
30
|
openDropdown() {
|
|
31
31
|
this.dropdownOpened = !this.dropdownOpened;
|
|
@@ -53,9 +53,10 @@ export class DropdownComponent {
|
|
|
53
53
|
}
|
|
54
54
|
else {
|
|
55
55
|
this.selectedItems[0] = item;
|
|
56
|
-
this.selectedItemName = this.selectedItems[0]
|
|
56
|
+
this.selectedItemName = this.selectedItems[0]?.label;
|
|
57
|
+
this.selectedItemImage = this.selectedItems[0]?.image;
|
|
57
58
|
this.dropdownOpened = false;
|
|
58
|
-
this.items = this.originalItems.slice();
|
|
59
|
+
// this.items = this.originalItems.slice();
|
|
59
60
|
this.selectedItemsChange.emit(this.selectedItems);
|
|
60
61
|
}
|
|
61
62
|
}
|
|
@@ -65,9 +66,9 @@ export class DropdownComponent {
|
|
|
65
66
|
}
|
|
66
67
|
unselectAll() {
|
|
67
68
|
this.selectedItems = [];
|
|
68
|
-
this.selectedItemName =
|
|
69
|
+
this.selectedItemName = "";
|
|
69
70
|
this.selectedItemsChange.emit(this.selectedItems);
|
|
70
|
-
this.items = this.originalItems.slice();
|
|
71
|
+
// this.items = this.originalItems.slice();
|
|
71
72
|
}
|
|
72
73
|
onDocumentClick(event) {
|
|
73
74
|
const isClickInsideDropdown = this.dropdown.nativeElement.contains(event.target);
|
|
@@ -82,18 +83,21 @@ export class DropdownComponent {
|
|
|
82
83
|
const keyCode = event.keyCode;
|
|
83
84
|
if (keyCode === 8 && !this.multiple) {
|
|
84
85
|
this.selectedItems = [];
|
|
85
|
-
this.selectedItemName =
|
|
86
|
-
this.
|
|
86
|
+
this.selectedItemName = "";
|
|
87
|
+
this.selectedItemImage = "";
|
|
87
88
|
this.items = this.originalItems.slice();
|
|
89
|
+
this.selectedItemsChange.emit(this.selectedItems);
|
|
88
90
|
}
|
|
89
91
|
else {
|
|
90
92
|
this.searchTerm = event.target.value.toLowerCase();
|
|
91
93
|
if (!this.onSearch.observers.length) {
|
|
92
|
-
if (this.searchTerm.trim() ===
|
|
94
|
+
if (this.searchTerm.trim() === "") {
|
|
93
95
|
this.items = this.originalItems.slice();
|
|
94
96
|
}
|
|
95
97
|
else {
|
|
96
|
-
this.items = this.originalItems.filter((item) => item
|
|
98
|
+
this.items = this.originalItems.filter((item) => item.label.toLowerCase().startsWith(this.searchTerm) ||
|
|
99
|
+
(item.value &&
|
|
100
|
+
item.value.toLowerCase().startsWith(this.searchTerm)));
|
|
97
101
|
}
|
|
98
102
|
}
|
|
99
103
|
else {
|
|
@@ -106,12 +110,12 @@ export class DropdownComponent {
|
|
|
106
110
|
this.buttonClick.emit();
|
|
107
111
|
}
|
|
108
112
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
109
|
-
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]=\"{ 'opened': showBorder && dropdownOpened, 'closed': showBorder && !dropdownOpened}\">\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{'opened': showBorder && dropdownOpened, 'closed': showBorder && !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\">×</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\">×</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 .dropdown-field{background:#fff;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-y:auto;overflow-x:hidden}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;padding:5px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:8px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:11px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:15px}}.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:6px}::-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"] }] }); }
|
|
113
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DropdownComponent, selector: "lib-dropdown", inputs: { multiple: "multiple", scrollable: "scrollable", selectedItems: "selectedItems", placeholder: "placeholder", items: "items", showCreateNew: "showCreateNew", 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\r\n #dropdown\r\n class=\"dropdown\"\r\n [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\"\r\n>\r\n <div\r\n class=\"dropdown-field\"\r\n id=\"division\"\r\n [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\"\r\n (click)=\"openDropdown()\"\r\n >\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\r\n <div\r\n *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\"\r\n class=\"selected-item\"\r\n >\r\n <img\r\n *ngIf=\"selectedItem?.image\"\r\n class=\"multiSelected-icon-size\"\r\n [src]=\"selectedItem?.image\"\r\n alt=\"image\"\r\n />\r\n <span>{{ selectedItem.label }}</span>\r\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\"\r\n >×</span\r\n >\r\n </div>\r\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\r\n +{{ selectedItems.length - 3 }} more\r\n </div>\r\n </div>\r\n\r\n <div class=\"input-field\">\r\n <div *ngIf=\"multiple\">\r\n <input\r\n class=\"dropdown_text\"\r\n [placeholder]=\"placeholder\"\r\n (keyup)=\"search($event)\"\r\n />\r\n </div>\r\n <div *ngIf=\"!multiple\">\r\n <img\r\n *ngIf=\"selectedItemImage\"\r\n class=\"selected-icon-size\"\r\n [src]=\"selectedItemImage\"\r\n alt=\"image\"\r\n />\r\n <input\r\n class=\"dropdown_text\"\r\n [placeholder]=\"placeholder\"\r\n [(ngModel)]=\"selectedItemName\"\r\n (keyup)=\"search($event)\"\r\n />\r\n </div>\r\n\r\n <div class=\"down-arrow\">\r\n <svg\r\n width=\"24\"\r\n height=\"25\"\r\n viewBox=\"0 0 24 25\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"down-arrow-img\"\r\n [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\"\r\n >\r\n <g id=\"Down Arrow\">\r\n <g id=\"Group\">\r\n <path\r\n id=\"Path\"\r\n d=\"M6 9.13741L12 15.229L18 9.13741\"\r\n stroke=\"#8E9AA0\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"up-arrow\">\r\n <svg\r\n width=\"24\"\r\n height=\"25\"\r\n viewBox=\"0 0 24 25\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"up-arrow-img\"\r\n [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\"\r\n >\r\n <path\r\n d=\"M18 15.229L12 9.1374L6 15.229\"\r\n stroke=\"#8E9AA0\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n <span\r\n (click)=\"unselectAll()\"\r\n *ngIf=\"(selectedItems.length > 0 || selectedItemName != '') && multiple\"\r\n class=\"deselect\"\r\n >×</span\r\n >\r\n </div>\r\n </div>\r\n\r\n <div\r\n #dropdownItems\r\n class=\"dropdown-items\"\r\n *ngIf=\"dropdownOpened\"\r\n (scroll)=\"onDropdownScroll($event)\"\r\n >\r\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\"\r\n >Create new</a\r\n >\r\n\r\n <ng-container *ngIf=\"multiple; else singleSelection\">\r\n <a\r\n class=\"items d-block\"\r\n *ngFor=\"let item of items\"\r\n (click)=\"selectItem(item)\"\r\n >\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <img\r\n *ngIf=\"item?.image\"\r\n [src]=\"item?.image\"\r\n alt=\"Item Image\"\r\n class=\"item-image icon-size\"\r\n />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <span class=\"item-value\">{{ item?.value }}</span>\r\n <div class=\"dropdown_buttons\">\r\n <button\r\n *ngFor=\"let button of customButtons\"\r\n (click)=\"handleButtonClick(button.action)\"\r\n >\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-template #singleSelection>\r\n <a\r\n class=\"items d-block\"\r\n *ngFor=\"let item of items\"\r\n (click)=\"selectItem(item)\"\r\n >\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <img\r\n *ngIf=\"item?.image\"\r\n [src]=\"item?.image\"\r\n alt=\"Item Image\"\r\n class=\"item-image icon-size\"\r\n />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <span class=\"item-value\">{{ item?.value }}</span>\r\n <div class=\"dropdown_buttons\">\r\n <button\r\n *ngFor=\"let button of customButtons\"\r\n (click)=\"handleButtonClick(button.action)\"\r\n >\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".dropdown{background:#fff;border-radius:6px}.dropdown .dropdown-field{background:#fff;border-radius:6px;position:relative;cursor:pointer}.dropdown .dropdown-field .selected{margin:5px}.dropdown .dropdown-field .selected.selectedList{display:flex;flex-wrap:wrap}.dropdown .dropdown-field .selected .selected-item{background:#cdd0d1;display:inline;margin:5px;padding:3px;border-radius:5px;font-size:small}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:3px;font-size:smaller}.dropdown .dropdown-field .input-field .dropdown_text{width:76%;border:none;padding:10px;margin-left:3px;outline:none;box-sizing:border-box;font-size:14px}.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:1px solid #d8d8d8}.dropdown .dropdown-field.opened{border-bottom:1px solid #d8d8d8}.dropdown .dropdown-items{overflow-y:auto;overflow-x:hidden}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:5px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:7px}}.dropdown .dropdown-items .create_button{text-decoration:none;line-height:41px;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .create_button{padding-left:8px}}.dropdown .dropdown-items .items{text-decoration:none;color:inherit;line-height:41px;position:relative;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .items{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}.dropdown .dropdown-items .items:hover{background:#cdd0d1;border-radius:6px}.dropdown .dropdown-items .items:hover button{visibility:visible}.dropdown .dropdown-items .items .dropdown_buttons{display:inline;position:absolute;right:5%}.dropdown .dropdown-items .items button{border:0;background:transparent;visibility:hidden}.dropdown.opened{border:1px #d8d8d8 solid}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#b2b2b2;border-radius:6px}.space{width:10px}.item-details{display:flex;align-items:center}.icon-size{width:25px;height:20px;margin-right:7px}.smallSpace{width:3px}.selected-icon-size{width:25px;height:20px;margin-left:10px}.multiSelected-icon-size{width:25px;height:20px;margin-left:1px;margin-bottom:1px;margin-right:3px}\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"] }] }); }
|
|
110
114
|
}
|
|
111
115
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
112
116
|
type: Component,
|
|
113
|
-
args: [{ selector:
|
|
114
|
-
}], propDecorators: { multiple: [{
|
|
117
|
+
args: [{ selector: "lib-dropdown", template: "<div\r\n #dropdown\r\n class=\"dropdown\"\r\n [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\"\r\n>\r\n <div\r\n class=\"dropdown-field\"\r\n id=\"division\"\r\n [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\"\r\n (click)=\"openDropdown()\"\r\n >\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\r\n <div\r\n *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\"\r\n class=\"selected-item\"\r\n >\r\n <img\r\n *ngIf=\"selectedItem?.image\"\r\n class=\"multiSelected-icon-size\"\r\n [src]=\"selectedItem?.image\"\r\n alt=\"image\"\r\n />\r\n <span>{{ selectedItem.label }}</span>\r\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\"\r\n >×</span\r\n >\r\n </div>\r\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\r\n +{{ selectedItems.length - 3 }} more\r\n </div>\r\n </div>\r\n\r\n <div class=\"input-field\">\r\n <div *ngIf=\"multiple\">\r\n <input\r\n class=\"dropdown_text\"\r\n [placeholder]=\"placeholder\"\r\n (keyup)=\"search($event)\"\r\n />\r\n </div>\r\n <div *ngIf=\"!multiple\">\r\n <img\r\n *ngIf=\"selectedItemImage\"\r\n class=\"selected-icon-size\"\r\n [src]=\"selectedItemImage\"\r\n alt=\"image\"\r\n />\r\n <input\r\n class=\"dropdown_text\"\r\n [placeholder]=\"placeholder\"\r\n [(ngModel)]=\"selectedItemName\"\r\n (keyup)=\"search($event)\"\r\n />\r\n </div>\r\n\r\n <div class=\"down-arrow\">\r\n <svg\r\n width=\"24\"\r\n height=\"25\"\r\n viewBox=\"0 0 24 25\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"down-arrow-img\"\r\n [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\"\r\n >\r\n <g id=\"Down Arrow\">\r\n <g id=\"Group\">\r\n <path\r\n id=\"Path\"\r\n d=\"M6 9.13741L12 15.229L18 9.13741\"\r\n stroke=\"#8E9AA0\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"up-arrow\">\r\n <svg\r\n width=\"24\"\r\n height=\"25\"\r\n viewBox=\"0 0 24 25\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"up-arrow-img\"\r\n [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\"\r\n >\r\n <path\r\n d=\"M18 15.229L12 9.1374L6 15.229\"\r\n stroke=\"#8E9AA0\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n <span\r\n (click)=\"unselectAll()\"\r\n *ngIf=\"(selectedItems.length > 0 || selectedItemName != '') && multiple\"\r\n class=\"deselect\"\r\n >×</span\r\n >\r\n </div>\r\n </div>\r\n\r\n <div\r\n #dropdownItems\r\n class=\"dropdown-items\"\r\n *ngIf=\"dropdownOpened\"\r\n (scroll)=\"onDropdownScroll($event)\"\r\n >\r\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\"\r\n >Create new</a\r\n >\r\n\r\n <ng-container *ngIf=\"multiple; else singleSelection\">\r\n <a\r\n class=\"items d-block\"\r\n *ngFor=\"let item of items\"\r\n (click)=\"selectItem(item)\"\r\n >\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <img\r\n *ngIf=\"item?.image\"\r\n [src]=\"item?.image\"\r\n alt=\"Item Image\"\r\n class=\"item-image icon-size\"\r\n />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <span class=\"item-value\">{{ item?.value }}</span>\r\n <div class=\"dropdown_buttons\">\r\n <button\r\n *ngFor=\"let button of customButtons\"\r\n (click)=\"handleButtonClick(button.action)\"\r\n >\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-template #singleSelection>\r\n <a\r\n class=\"items d-block\"\r\n *ngFor=\"let item of items\"\r\n (click)=\"selectItem(item)\"\r\n >\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <img\r\n *ngIf=\"item?.image\"\r\n [src]=\"item?.image\"\r\n alt=\"Item Image\"\r\n class=\"item-image icon-size\"\r\n />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <span class=\"item-value\">{{ item?.value }}</span>\r\n <div class=\"dropdown_buttons\">\r\n <button\r\n *ngFor=\"let button of customButtons\"\r\n (click)=\"handleButtonClick(button.action)\"\r\n >\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".dropdown{background:#fff;border-radius:6px}.dropdown .dropdown-field{background:#fff;border-radius:6px;position:relative;cursor:pointer}.dropdown .dropdown-field .selected{margin:5px}.dropdown .dropdown-field .selected.selectedList{display:flex;flex-wrap:wrap}.dropdown .dropdown-field .selected .selected-item{background:#cdd0d1;display:inline;margin:5px;padding:3px;border-radius:5px;font-size:small}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:3px;font-size:smaller}.dropdown .dropdown-field .input-field .dropdown_text{width:76%;border:none;padding:10px;margin-left:3px;outline:none;box-sizing:border-box;font-size:14px}.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:1px solid #d8d8d8}.dropdown .dropdown-field.opened{border-bottom:1px solid #d8d8d8}.dropdown .dropdown-items{overflow-y:auto;overflow-x:hidden}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:5px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:7px}}.dropdown .dropdown-items .create_button{text-decoration:none;line-height:41px;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .create_button{padding-left:8px}}.dropdown .dropdown-items .items{text-decoration:none;color:inherit;line-height:41px;position:relative;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .items{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}.dropdown .dropdown-items .items:hover{background:#cdd0d1;border-radius:6px}.dropdown .dropdown-items .items:hover button{visibility:visible}.dropdown .dropdown-items .items .dropdown_buttons{display:inline;position:absolute;right:5%}.dropdown .dropdown-items .items button{border:0;background:transparent;visibility:hidden}.dropdown.opened{border:1px #d8d8d8 solid}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#b2b2b2;border-radius:6px}.space{width:10px}.item-details{display:flex;align-items:center}.icon-size{width:25px;height:20px;margin-right:7px}.smallSpace{width:3px}.selected-icon-size{width:25px;height:20px;margin-left:10px}.multiSelected-icon-size{width:25px;height:20px;margin-left:1px;margin-bottom:1px;margin-right:3px}\n"] }]
|
|
118
|
+
}], ctorParameters: function () { return []; }, propDecorators: { multiple: [{
|
|
115
119
|
type: Input
|
|
116
120
|
}], scrollable: [{
|
|
117
121
|
type: Input
|
|
@@ -119,8 +123,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
119
123
|
type: Input
|
|
120
124
|
}], placeholder: [{
|
|
121
125
|
type: Input
|
|
122
|
-
}], label: [{
|
|
123
|
-
type: Input
|
|
124
126
|
}], items: [{
|
|
125
127
|
type: Input
|
|
126
128
|
}], showCreateNew: [{
|
|
@@ -141,12 +143,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
141
143
|
type: Output
|
|
142
144
|
}], dropdownitems: [{
|
|
143
145
|
type: ViewChild,
|
|
144
|
-
args: [
|
|
146
|
+
args: ["dropdownItems"]
|
|
145
147
|
}], dropdown: [{
|
|
146
148
|
type: ViewChild,
|
|
147
|
-
args: [
|
|
149
|
+
args: ["dropdown"]
|
|
148
150
|
}], onDocumentClick: [{
|
|
149
151
|
type: HostListener,
|
|
150
|
-
args: [
|
|
152
|
+
args: ["document:click", ["$event"]]
|
|
151
153
|
}] } });
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZHJvcGRvd24vc3JjL2xpYi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kcm9wZG93bi9zcmMvbGliL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVksWUFBWSxFQUFDLFlBQVksRUFBQyxLQUFLLEVBQVEsTUFBTSxFQUFDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQU83RyxNQUFNLE9BQU8saUJBQWlCO0lBTDlCO1FBUVcsa0JBQWEsR0FBVSxFQUFFLENBQUM7UUFDMUIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixVQUFLLEdBQVUsRUFBRSxDQUFDO1FBRWxCLGtCQUFhLEdBQXdFLEVBQUUsQ0FBQztRQUN4RixlQUFVLEdBQVksSUFBSSxDQUFDO1FBQzFCLGdCQUFXLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7UUFDN0Qsd0JBQW1CLEdBQXdCLElBQUksWUFBWSxFQUVsRSxDQUFDO1FBQ00sYUFBUSxHQUF3QixJQUFJLFlBQVksRUFBUyxDQUFDO1FBQzFELGdCQUFXLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7UUFDN0QsYUFBUSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXRFLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUMxQixlQUFVLEdBQVEsRUFBRSxDQUFDO0tBOEd0QjtJQTVHQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hDLElBQUksSUFBSSxDQUFDLGFB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aUJBQ0g7YUFDRjtpQkFDSTtnQkFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDckM7U0FDRjtJQUNILENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFrQjtRQUNsQyxNQUFNLEVBQUUsQ0FBQztRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQzsrR0FsSVUsaUJBQWlCO21HQUFqQixpQkFBaUIsZ3RCQ1A5QiwwdkhBdUdBOzs0RkRoR2EsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGNBQWM7OEJBS2YsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUdHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQW9CcUIsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQWlESCxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBRXJCLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCxFbGVtZW50UmVmLEV2ZW50RW1pdHRlcixIb3N0TGlzdGVuZXIsSW5wdXQsT25Jbml0LE91dHB1dCxWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBtdWx0aXBsZSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNjcm9sbGFibGUhOiBib29sZWFuO1xuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogU3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaXRlbXM6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIHNob3dDcmVhdGVOZXchOiBib29sZWFuO1xuICBASW5wdXQoKSBjdXN0b21CdXR0b25zOiB7IGxhYmVsOiBzdHJpbmc7IGljb246IHN0cmluZzsgY29sb3I6c3RyaW5nIDthY3Rpb246ICgpID0+IHZvaWQgfVtdID0gW107XG4gIEBJbnB1dCgpIHNob3dCb3JkZXI6IGJvb2xlYW4gPSB0cnVlO1xuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgYW55W11cbiAgPigpO1xuICBAT3V0cHV0KCkgb25TY3JvbGw6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgb25DcmVhdGVOZXc6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgb25TZWFyY2g6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgZHJvcGRvd25PcGVuZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRJdGVtOiBhbnk7XG4gIHNlbGVjdGVkSXRlbU5hbWU6IHN0cmluZyA9ICcnO1xuICBvcmlnaW5hbEl0ZW1zOiBhbnlbXSA9IFtdO1xuICBzZWFyY2hUZXJtOnN0cmluZz0nJztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9yaWdpbmFsSXRlbXMgPSB0aGlzLml0ZW1zLnNsaWNlKCk7IFxuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmKCF0aGlzLm11bHRpcGxlKVxuICAgICAgdGhpcy5zZWxlY3RJdGVtKHRoaXMuc2VsZWN0ZWRJdGVtc1swXSk7XG4gICAgfVxuICB9XG5cbiAgb3BlbkRyb3Bkb3duKCkge1xuICAgIHRoaXMuZHJvcGRvd25PcGVuZWQgPSAhdGhpcy5kcm9wZG93bk9wZW5lZDtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duSXRlbXMnKSBkcm9wZG93bml0ZW1zITogRWxlbWVudFJlZjtcblxuICBvbkRyb3Bkb3duU2Nyb2xsKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vblNjcm9sbCkge1xuICAgICAgY29uc3QgZHJvcGRvd25FbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuZHJvcGRvd25pdGVtcy5uYXRpdmVFbGVtZW50O1xuICAgICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPVxuICAgICAgICBkcm9wZG93bkVsZW1lbnQuc2Nyb2xsVG9wICsgZHJvcGRvd25FbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgIGNvbnN0IHRvdGFsSGVpZ2h0ID0gZHJvcGRvd25FbGVtZW50LnNjcm9sbEhlaWdodDtcblxuICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uID49IHRvdGFsSGVpZ2h0KSB7XG4gICAgICAgIHRoaXMub25TY3JvbGwuZW1pdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEl0ZW0oaXRlbTogYW55KSB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGl0ZW0pKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihcbiAgICAgICAgICAoc2VsZWN0ZWQ6IGFueSkgPT4gc2VsZWN0ZWQgIT09IGl0ZW1cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zWzBdID0gaXRlbTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtTmFtZSA9IHRoaXMuc2VsZWN0ZWRJdGVtc1swXVt0aGlzLmxhYmVsXTtcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLm9yaWdpbmFsSXRlbXMuc2xpY2UoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgfVxuICB9XG5cbiAgdW5zZWxlY3RJdGVtKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXG4gICAgICAoc2VsZWN0ZWQ6IGFueSkgPT4gc2VsZWN0ZWQgIT09IGl0ZW1cbiAgICApO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gIH1cblxuICB1bnNlbGVjdEFsbCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbU5hbWUgPSAnJztcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgIHRoaXMuaXRlbXMgPSB0aGlzLm9yaWdpbmFsSXRlbXMuc2xpY2UoKTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duJykgZHJvcGRvd24hOiBFbGVtZW50UmVmO1xuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpc0NsaWNrSW5zaWRlRHJvcGRvd24gPSB0aGlzLmRyb3Bkb3duLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoXG4gICAgICBldmVudC50YXJnZXRcbiAgICApO1xuICAgIGlmICghaXNDbGlja0luc2lkZURyb3Bkb3duKSB7XG4gICAgICB0aGlzLmRyb3Bkb3duT3BlbmVkID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlTmV3KCkge1xuICAgIHRoaXMub25DcmVhdGVOZXcuZW1pdCgpO1xuICB9XG5cbiAgc2VhcmNoKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTsgICAgXG4gIFxuICAgIGlmIChrZXlDb2RlID09PSA4ICYmICF0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtTmFtZSA9ICcnO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLm9yaWdpbmFsSXRlbXMuc2xpY2UoKTtcbiAgICB9IGVsc2Uge1xuXG4gICAgICB0aGlzLnNlYXJjaFRlcm0gPSBldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgaWYgKCF0aGlzLm9uU2VhcmNoLm9ic2VydmVycy5sZW5ndGgpIHsgICAgICAgIFxuICAgICAgICBpZiAodGhpcy5zZWFyY2hUZXJtLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5vcmlnaW5hbEl0ZW1zLnNsaWNlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMub3JpZ2luYWxJdGVtcy5maWx0ZXIoKGl0ZW0pID0+XG4gICAgICAgICAgICBpdGVtW3RoaXMubGFiZWxdLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCh0aGlzLnNlYXJjaFRlcm0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMub25TZWFyY2guZW1pdCh0aGlzLnNlYXJjaFRlcm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUJ1dHRvbkNsaWNrKGFjdGlvbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGFjdGlvbigpO1xuICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdCgpO1xuICB9XG4gIFxufSIsIjxkaXYgI2Ryb3Bkb3duIGNsYXNzPVwiZHJvcGRvd25cIiBbbmdDbGFzc109XCJ7ICdvcGVuZWQnOiBzaG93Qm9yZGVyICYmIGRyb3Bkb3duT3BlbmVkLCAnY2xvc2VkJzogc2hvd0JvcmRlciAmJiAhZHJvcGRvd25PcGVuZWR9XCI+XG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1maWVsZFwiIGlkPVwiZGl2aXNpb25cIiBbbmdDbGFzc109XCJ7J29wZW5lZCc6IHNob3dCb3JkZXIgJiYgZHJvcGRvd25PcGVuZWQsICdjbG9zZWQnOiBzaG93Qm9yZGVyICYmICFkcm9wZG93bk9wZW5lZH1cIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIXNlbGVjdGVkSXRlbSAmJiBtdWx0aXBsZVwiIGNsYXNzPVwic2VsZWN0ZWRcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nRm9yPVwibGV0IHNlbGVjdGVkSXRlbSBvZiBzZWxlY3RlZEl0ZW1zLnNsaWNlKDAsIDMpXCJcbiAgICAgICAgY2xhc3M9XCJzZWxlY3RlZC1pdGVtXCI+XG4gICAgICAgIHt7IHNlbGVjdGVkSXRlbVtsYWJlbF0gfX1cbiAgICAgICAgPHNwYW4gKGNsaWNrKT1cInVuc2VsZWN0SXRlbShzZWxlY3RlZEl0ZW0pXCJcbiAgICAgICAgICBjbGFzcz1cImNsb3NlLWljb25cIj4mdGltZXM7PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAzXCIgY2xhc3M9XCJyZW1haW5pbmctaXRlbXNcIj5cbiAgICAgICAgKyB7eyBzZWxlY3RlZEl0ZW1zLmxlbmd0aCAtIDMgfX0gbW9yZVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZmllbGRcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXBsZVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duX3RleHRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgKGtleXVwKT1cInNlYXJjaCgkZXZlbnQpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIiFtdWx0aXBsZVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duX3RleHRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEl0ZW1OYW1lXCJcbiAgICAgICAgICAoa2V5dXApPVwic2VhcmNoKCRldmVudClcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZG93bi1hcnJvd1wiIChjbGljayk9XCJvcGVuRHJvcGRvd24oKVwiPlxuICAgICAgICA8c3ZnXG4gICAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgICAgaGVpZ2h0PVwiMjVcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjVcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICBjbGFzcz1cImRvd24tYXJyb3ctaW1nXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J29wZW5lZCc6IGRyb3Bkb3duT3BlbmVkLCAnY2xvc2VkJzogIWRyb3Bkb3duT3BlbmVkfVwiPlxuICAgICAgICAgIDxnIGlkPVwiRG93biBBcnJvd1wiPlxuICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGlkPVwiUGF0aFwiXG4gICAgICAgICAgICAgICAgZD1cIk02IDkuMTM3NDFMMTIgMTUuMjI5TDE4IDkuMTM3NDFcIlxuICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM4RTlBQTBcIlxuICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgPC9nPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ1cC1hcnJvd1wiIChjbGljayk9XCJvcGVuRHJvcGRvd24oKVwiPlxuICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNVwiIHZpZXdCb3g9XCIwIDAgMjQgMjVcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwidXAtYXJyb3ctaW1nXCIgW25nQ2xhc3NdPVwieydvcGVuZWQnOiBkcm9wZG93bk9wZW5lZCwgJ2Nsb3NlZCc6ICFkcm9wZG93bk9wZW5lZH1cIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTE4IDE1LjIyOUwxMiA5LjEzNzRMNiAxNS4yMjlcIiBzdHJva2U9XCIjOEU5QUEwXCJcbiAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW5cbiAgICAgICAgKGNsaWNrKT1cInVuc2VsZWN0QWxsKClcIlxuICAgICAgICAqbmdJZj1cInNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCB8fCBzZWxlY3RlZEl0ZW1OYW1lICE9ICcnXCJcbiAgICAgICAgY2xhc3M9XCJkZXNlbGVjdFwiPiZ0aW1lczs8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICAjZHJvcGRvd25JdGVtc1xuICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbXNcIlxuICAgICpuZ0lmPVwiZHJvcGRvd25PcGVuZWRcIlxuICAgIChzY3JvbGwpPVwib25Ecm9wZG93blNjcm9sbCgkZXZlbnQpXCI+XG4gICAgPGEgY2xhc3M9XCJjcmVhdGVfYnV0dG9uXCIgKGNsaWNrKT1cImNyZWF0ZU5ldygpXCIgKm5nSWY9XCJzaG93Q3JlYXRlTmV3XCI+Q3JlYXRlXG4gICAgICBuZXc8L2E+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGlwbGU7IGVsc2Ugc2luZ2xlU2VsZWN0aW9uXCI+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cIml0ZW1zIGQtYmxvY2tcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RJdGVtKGl0ZW0pXCI+XG4gICAgICAgIHt7IGl0ZW1bbGFiZWxdIH19XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bl9idXR0b25zXCI+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGN1c3RvbUJ1dHRvbnNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUJ1dHRvbkNsaWNrKGJ1dHRvbi5hY3Rpb24pXCI+PGkgW2NsYXNzXT1cImJ1dHRvbi5pY29uXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImJ1dHRvbi5jb2xvclwiPjwvaT4gPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNzaW5nbGVTZWxlY3Rpb24+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cIml0ZW1zIGQtYmxvY2tcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RJdGVtKGl0ZW0pXCI+XG4gICAgICAgIHt7IGl0ZW1bbGFiZWxdIH19XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bl9idXR0b25zXCI+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGN1c3RvbUJ1dHRvbnNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUJ1dHRvbkNsaWNrKGJ1dHRvbi5hY3Rpb24pXCI+PGkgW2NsYXNzXT1cImJ1dHRvbi5pY29uXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImJ1dHRvbi5jb2xvclwiPjwvaT4gPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZHJvcGRvd24vc3JjL2xpYi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kcm9wZG93bi9zcmMvbGliL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7OztBQWF2QixNQUFNLE9BQU8saUJBQWlCO0lBNkI1QjtRQTFCUyxrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUMxQixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQUUzQixrQkFBYSxHQUtoQixFQUFFLENBQUM7UUFDQSxlQUFVLEdBQVksSUFBSSxDQUFDO1FBQzFCLGdCQUFXLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7UUFDN0Qsd0JBQW1CLEdBQXdCLElBQUksWUFBWSxFQUVsRSxDQUFDO1FBQ00sYUFBUSxHQUF3QixJQUFJLFlBQVksRUFBUyxDQUFDO1FBQzFELGdCQUFXLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7UUFDN0QsYUFBUSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXRFLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixzQkFBaUIsR0FBVyxFQUFFLENBQUM7UUFDL0Isa0JBQWEsR0FBVSxFQUFFLENBQUM7UUFDMUIsZUFBVSxHQUFXLEVBQUUsQ0FBQztJQUVULENBQUM7SUFFaEIsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkQs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QyxLQUFLOzRCQUNULElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUMxRCxDQUFDO2lCQUNIO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3JDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBa0I7UUFDbEMsTUFBTSxFQUFFLENBQUM7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7K0dBM0lVLGlCQUFpQjttR0FBakIsaUJBQWlCLGdzQkN0QjlCLG15TEF3TEE7OzRGRGxLYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsY0FBYzswRUFLZixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBTUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFHRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFzQnFCLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFtREgsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUVyQixlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmludGVyZmFjZSBEcm9wZG93bkl0ZW0ge1xyXG4gIHZhbHVlOiBzdHJpbmc7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBpbWFnZTogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItZHJvcGRvd25cIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2Ryb3Bkb3duLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIG11bHRpcGxlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzY3JvbGxhYmxlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBTdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIGl0ZW1zOiBEcm9wZG93bkl0ZW1bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHNob3dDcmVhdGVOZXchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUJ1dHRvbnM6IHtcclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcbiAgICBpY29uOiBzdHJpbmc7XHJcbiAgICBjb2xvcjogc3RyaW5nO1xyXG4gICAgYWN0aW9uOiAoKSA9PiB2b2lkO1xyXG4gIH1bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHNob3dCb3JkZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBPdXRwdXQoKSBidXR0b25DbGljazogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPFxyXG4gICAgYW55W11cclxuICA+KCk7XHJcbiAgQE91dHB1dCgpIG9uU2Nyb2xsOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgb25DcmVhdGVOZXc6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBvblNlYXJjaDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgZHJvcGRvd25PcGVuZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZEl0ZW06IGFueTtcclxuICBzZWxlY3RlZEl0ZW1OYW1lOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHNlbGVjdGVkSXRlbUltYWdlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIG9yaWdpbmFsSXRlbXM6IGFueVtdID0gW107XHJcbiAgc2VhcmNoVGVybTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB0aGlzLnNlbGVjdEl0ZW0odGhpcy5zZWxlY3RlZEl0ZW1zWzBdKTtcclxuICAgIH1cclxuICAgIHRoaXMub3JpZ2luYWxJdGVtcyA9IHRoaXMuaXRlbXMuc2xpY2UoKTtcclxuICB9XHJcblxyXG4gIG9wZW5Ecm9wZG93bigpIHtcclxuICAgIHRoaXMuZHJvcGRvd25PcGVuZWQgPSAhdGhpcy5kcm9wZG93bk9wZW5lZDtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJkcm9wZG93bkl0ZW1zXCIpIGRyb3Bkb3duaXRlbXMhOiBFbGVtZW50UmVmO1xyXG5cclxuICBvbkRyb3Bkb3duU2Nyb2xsKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm9uU2Nyb2xsKSB7XHJcbiAgICAgIGNvbnN0IGRyb3Bkb3duRWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLmRyb3Bkb3duaXRlbXMubmF0aXZlRWxlbWVudDtcclxuICAgICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPVxyXG4gICAgICAgIGRyb3Bkb3duRWxlbWVudC5zY3JvbGxUb3AgKyBkcm9wZG93bkVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gICAgICBjb25zdCB0b3RhbEhlaWdodCA9IGRyb3Bkb3duRWxlbWVudC5zY3JvbGxIZWlnaHQ7XHJcblxyXG4gICAgICBpZiAoc2Nyb2xsUG9zaXRpb24gPj0gdG90YWxIZWlnaHQpIHtcclxuICAgICAgICB0aGlzLm9uU2Nyb2xsLmVtaXQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0SXRlbShpdGVtOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGl0ZW0pKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKFxyXG4gICAgICAgICAgKHNlbGVjdGVkOiBhbnkpID0+IHNlbGVjdGVkICE9PSBpdGVtXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNbMF0gPSBpdGVtO1xyXG5cclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1OYW1lID0gdGhpcy5zZWxlY3RlZEl0ZW1zWzBdPy5sYWJlbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1JbWFnZSA9IHRoaXMuc2VsZWN0ZWRJdGVtc1swXT8uaW1hZ2U7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuZWQgPSBmYWxzZTtcclxuICAgICAgLy8gdGhpcy5pdGVtcyA9IHRoaXMub3JpZ2luYWxJdGVtcy5zbGljZSgpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdW5zZWxlY3RJdGVtKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihcclxuICAgICAgKHNlbGVjdGVkOiBhbnkpID0+IHNlbGVjdGVkICE9PSBpdGVtXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICB9XHJcblxyXG4gIHVuc2VsZWN0QWxsKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbU5hbWUgPSBcIlwiO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICAgIC8vIHRoaXMuaXRlbXMgPSB0aGlzLm9yaWdpbmFsSXRlbXMuc2xpY2UoKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJkcm9wZG93blwiKSBkcm9wZG93biE6IEVsZW1lbnRSZWY7XHJcbiAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50OmNsaWNrXCIsIFtcIiRldmVudFwiXSlcclxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBpc0NsaWNrSW5zaWRlRHJvcGRvd24gPSB0aGlzLmRyb3Bkb3duLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoXHJcbiAgICAgIGV2ZW50LnRhcmdldFxyXG4gICAgKTtcclxuICAgIGlmICghaXNDbGlja0luc2lkZURyb3Bkb3duKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZU5ldygpIHtcclxuICAgIHRoaXMub25DcmVhdGVOZXcuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xyXG5cclxuICAgIGlmIChrZXlDb2RlID09PSA4ICYmICF0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbU5hbWUgPSBcIlwiO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbUltYWdlID0gXCJcIjtcclxuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMub3JpZ2luYWxJdGVtcy5zbGljZSgpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXJtID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGlmICghdGhpcy5vblNlYXJjaC5vYnNlcnZlcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGVybS50cmltKCkgPT09IFwiXCIpIHtcclxuICAgICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLm9yaWdpbmFsSXRlbXMuc2xpY2UoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMub3JpZ2luYWxJdGVtcy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChpdGVtKSA9PlxyXG4gICAgICAgICAgICAgIGl0ZW0ubGFiZWwudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHRoaXMuc2VhcmNoVGVybSkgfHxcclxuICAgICAgICAgICAgICAoaXRlbS52YWx1ZSAmJlxyXG4gICAgICAgICAgICAgICAgaXRlbS52YWx1ZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgodGhpcy5zZWFyY2hUZXJtKSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub25TZWFyY2guZW1pdCh0aGlzLnNlYXJjaFRlcm0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVCdXR0b25DbGljayhhY3Rpb246ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGFjdGlvbigpO1xyXG4gICAgdGhpcy5idXR0b25DbGljay5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAjZHJvcGRvd25cclxuICBjbGFzcz1cImRyb3Bkb3duXCJcclxuICBbbmdDbGFzc109XCJ7XHJcbiAgICBvcGVuZWQ6IHNob3dCb3JkZXIgJiYgZHJvcGRvd25PcGVuZWQsXHJcbiAgICBjbG9zZWQ6IHNob3dCb3JkZXIgJiYgIWRyb3Bkb3duT3BlbmVkLFxyXG4gIH1cIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJkcm9wZG93bi1maWVsZFwiXHJcbiAgICBpZD1cImRpdmlzaW9uXCJcclxuICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgb3BlbmVkOiBzaG93Qm9yZGVyICYmIGRyb3Bkb3duT3BlbmVkLFxyXG4gICAgICBjbG9zZWQ6IHNob3dCb3JkZXIgJiYgIWRyb3Bkb3duT3BlbmVkLFxyXG4gICAgfVwiXHJcbiAgICAoY2xpY2spPVwib3BlbkRyb3Bkb3duKClcIlxyXG4gID5cclxuICAgIDxkaXYgKm5nSWY9XCIhc2VsZWN0ZWRJdGVtICYmIG11bHRpcGxlXCIgY2xhc3M9XCJzZWxlY3RlZCBzZWxlY3RlZExpc3RcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBzZWxlY3RlZEl0ZW0gb2Ygc2VsZWN0ZWRJdGVtcy5zbGljZSgwLCAzKVwiXHJcbiAgICAgICAgY2xhc3M9XCJzZWxlY3RlZC1pdGVtXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRJdGVtPy5pbWFnZVwiXHJcbiAgICAgICAgICBjbGFzcz1cIm11bHRpU2VsZWN0ZWQtaWNvbi1zaXplXCJcclxuICAgICAgICAgIFtzcmNdPVwic2VsZWN0ZWRJdGVtPy5pbWFnZVwiXHJcbiAgICAgICAgICBhbHQ9XCJpbWFnZVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8c3Bhbj57eyBzZWxlY3RlZEl0ZW0ubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKGNsaWNrKT1cInVuc2VsZWN0SXRlbShzZWxlY3RlZEl0ZW0pXCIgY2xhc3M9XCJjbG9zZS1pY29uXCJcclxuICAgICAgICAgID4mdGltZXM7PC9zcGFuXHJcbiAgICAgICAgPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJlbWFpbmluZy1pdGVtc1wiICpuZ0lmPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAzXCI+XHJcbiAgICAgICAgK3t7IHNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMyB9fSBtb3JlXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWZpZWxkXCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXBsZVwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJkcm9wZG93bl90ZXh0XCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAoa2V5dXApPVwic2VhcmNoKCRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiIW11bHRpcGxlXCI+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZEl0ZW1JbWFnZVwiXHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkLWljb24tc2l6ZVwiXHJcbiAgICAgICAgICBbc3JjXT1cInNlbGVjdGVkSXRlbUltYWdlXCJcclxuICAgICAgICAgIGFsdD1cImltYWdlXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJkcm9wZG93bl90ZXh0XCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkSXRlbU5hbWVcIlxyXG4gICAgICAgICAgKGtleXVwKT1cInNlYXJjaCgkZXZlbnQpXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkb3duLWFycm93XCI+XHJcbiAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgd2lkdGg9XCIyNFwiXHJcbiAgICAgICAgICBoZWlnaHQ9XCIyNVwiXHJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI1XCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkb3duLWFycm93LWltZ1wiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7IG9wZW5lZDogZHJvcGRvd25PcGVuZWQsIGNsb3NlZDogIWRyb3Bkb3duT3BlbmVkIH1cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxnIGlkPVwiRG93biBBcnJvd1wiPlxyXG4gICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGlkPVwiUGF0aFwiXHJcbiAgICAgICAgICAgICAgICBkPVwiTTYgOS4xMzc0MUwxMiAxNS4yMjlMMTggOS4xMzc0MVwiXHJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCIjOEU5QUEwXCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICA8L2c+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidXAtYXJyb3dcIj5cclxuICAgICAgICA8c3ZnXHJcbiAgICAgICAgICB3aWR0aD1cIjI0XCJcclxuICAgICAgICAgIGhlaWdodD1cIjI1XCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjVcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICBjbGFzcz1cInVwLWFycm93LWltZ1wiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7IG9wZW5lZDogZHJvcGRvd25PcGVuZWQsIGNsb3NlZDogIWRyb3Bkb3duT3BlbmVkIH1cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNMTggMTUuMjI5TDEyIDkuMTM3NEw2IDE1LjIyOVwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiM4RTlBQTBcIlxyXG4gICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgKGNsaWNrKT1cInVuc2VsZWN0QWxsKClcIlxyXG4gICAgICAgICpuZ0lmPVwiKHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCB8fCBzZWxlY3RlZEl0ZW1OYW1lICE9ICcnKSAmJiBtdWx0aXBsZVwiXHJcbiAgICAgICAgY2xhc3M9XCJkZXNlbGVjdFwiXHJcbiAgICAgICAgPiZ0aW1lczs8L3NwYW5cclxuICAgICAgPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXZcclxuICAgICNkcm9wZG93bkl0ZW1zXHJcbiAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW1zXCJcclxuICAgICpuZ0lmPVwiZHJvcGRvd25PcGVuZWRcIlxyXG4gICAgKHNjcm9sbCk9XCJvbkRyb3Bkb3duU2Nyb2xsKCRldmVudClcIlxyXG4gID5cclxuICAgIDxhIGNsYXNzPVwiY3JlYXRlX2J1dHRvblwiIChjbGljayk9XCJjcmVhdGVOZXcoKVwiICpuZ0lmPVwic2hvd0NyZWF0ZU5ld1wiXHJcbiAgICAgID5DcmVhdGUgbmV3PC9hXHJcbiAgICA+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpcGxlOyBlbHNlIHNpbmdsZVNlbGVjdGlvblwiPlxyXG4gICAgICA8YVxyXG4gICAgICAgIGNsYXNzPVwiaXRlbXMgZC1ibG9ja1wiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIlxyXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RJdGVtKGl0ZW0pXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1kZXRhaWxzXCI+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LmltYWdlXCJcclxuICAgICAgICAgICAgICBbc3JjXT1cIml0ZW0/LmltYWdlXCJcclxuICAgICAgICAgICAgICBhbHQ9XCJJdGVtIEltYWdlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cIml0ZW0taW1hZ2UgaWNvbi1zaXplXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtLWxhYmVsXCI+e3sgaXRlbT8ubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZVwiICpuZ0lmPVwiaXRlbT8ubGFiZWxcIj48L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtLXZhbHVlXCI+e3sgaXRlbT8udmFsdWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bl9idXR0b25zXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBjdXN0b21CdXR0b25zXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVCdXR0b25DbGljayhidXR0b24uYWN0aW9uKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImJ1dHRvbi5pY29uXCIgW3N0eWxlLmNvbG9yXT1cImJ1dHRvbi5jb2xvclwiPjwvaT5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9hPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNzaW5nbGVTZWxlY3Rpb24+XHJcbiAgICAgIDxhXHJcbiAgICAgICAgY2xhc3M9XCJpdGVtcyBkLWJsb2NrXCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oaXRlbSlcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWRldGFpbHNcIj5cclxuICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8uaW1hZ2VcIlxyXG4gICAgICAgICAgICAgIFtzcmNdPVwiaXRlbT8uaW1hZ2VcIlxyXG4gICAgICAgICAgICAgIGFsdD1cIkl0ZW0gSW1hZ2VcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaXRlbS1pbWFnZSBpY29uLXNpemVcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0tbGFiZWxcIj57eyBpdGVtPy5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlXCIgKm5nSWY9XCJpdGVtPy5sYWJlbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0tdmFsdWVcIj57eyBpdGVtPy52YWx1ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duX2J1dHRvbnNcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGN1c3RvbUJ1dHRvbnNcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUJ1dHRvbkNsaWNrKGJ1dHRvbi5hY3Rpb24pXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiYnV0dG9uLmljb25cIiBbc3R5bGUuY29sb3JdPVwiYnV0dG9uLmNvbG9yXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2E+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -18,11 +18,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
18
18
|
],
|
|
19
19
|
imports: [
|
|
20
20
|
FormsModule,
|
|
21
|
-
CommonModule
|
|
21
|
+
CommonModule,
|
|
22
22
|
],
|
|
23
23
|
exports: [
|
|
24
24
|
DropdownComponent
|
|
25
25
|
]
|
|
26
26
|
}]
|
|
27
27
|
}] });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZHJvcGRvd24vc3JjL2xpYi9kcm9wZG93bi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQWdCL0MsTUFBTSxPQUFPLGNBQWM7K0dBQWQsY0FBYztnSEFBZCxjQUFjLGlCQVZ2QixpQkFBaUIsYUFHakIsV0FBVztZQUNYLFlBQVksYUFHWixpQkFBaUI7Z0hBR1IsY0FBYyxZQVB2QixXQUFXO1lBQ1gsWUFBWTs7NEZBTUgsY0FBYztrQkFaMUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osaUJBQWlCO3FCQUNsQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsV0FBVzt3QkFDWCxZQUFZO3FCQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDUCxpQkFBaUI7cUJBQ2xCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgRHJvcGRvd25Db21wb25lbnRcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgRHJvcGRvd25Db21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bk1vZHVsZSB7IH1cclxuIl19
|
|
@@ -11,4 +11,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
11
11
|
providedIn: 'root'
|
|
12
12
|
}]
|
|
13
13
|
}], ctorParameters: function () { return []; } });
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Ryb3Bkb3duL3NyYy9saWIvZHJvcGRvd24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sZUFBZTtJQUUxQixnQkFBZ0IsQ0FBQzsrR0FGTixlQUFlO21IQUFmLGVBQWUsY0FGZCxNQUFNOzs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3Bkb3duU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbn1cclxuIl19
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
export * from './lib/dropdown.service';
|
|
5
5
|
export * from './lib/dropdown.component';
|
|
6
6
|
export * from './lib/dropdown.module';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Ryb3Bkb3duL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgZHJvcGRvd25cclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24ubW9kdWxlJztcclxuIl19
|
|
@@ -20,8 +20,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
20
20
|
class DropdownComponent {
|
|
21
21
|
constructor() {
|
|
22
22
|
this.selectedItems = [];
|
|
23
|
-
this.placeholder =
|
|
24
|
-
this.label = '';
|
|
23
|
+
this.placeholder = "";
|
|
25
24
|
this.items = [];
|
|
26
25
|
this.customButtons = [];
|
|
27
26
|
this.showBorder = true;
|
|
@@ -31,16 +30,17 @@ class DropdownComponent {
|
|
|
31
30
|
this.onCreateNew = new EventEmitter();
|
|
32
31
|
this.onSearch = new EventEmitter();
|
|
33
32
|
this.dropdownOpened = false;
|
|
34
|
-
this.selectedItemName =
|
|
33
|
+
this.selectedItemName = "";
|
|
34
|
+
this.selectedItemImage = "";
|
|
35
35
|
this.originalItems = [];
|
|
36
|
-
this.searchTerm =
|
|
36
|
+
this.searchTerm = "";
|
|
37
37
|
}
|
|
38
38
|
ngOnInit() {
|
|
39
|
-
this.originalItems = this.items.slice();
|
|
40
39
|
if (this.selectedItems && this.selectedItems.length > 0) {
|
|
41
40
|
if (!this.multiple)
|
|
42
41
|
this.selectItem(this.selectedItems[0]);
|
|
43
42
|
}
|
|
43
|
+
this.originalItems = this.items.slice();
|
|
44
44
|
}
|
|
45
45
|
openDropdown() {
|
|
46
46
|
this.dropdownOpened = !this.dropdownOpened;
|
|
@@ -68,9 +68,10 @@ class DropdownComponent {
|
|
|
68
68
|
}
|
|
69
69
|
else {
|
|
70
70
|
this.selectedItems[0] = item;
|
|
71
|
-
this.selectedItemName = this.selectedItems[0]
|
|
71
|
+
this.selectedItemName = this.selectedItems[0]?.label;
|
|
72
|
+
this.selectedItemImage = this.selectedItems[0]?.image;
|
|
72
73
|
this.dropdownOpened = false;
|
|
73
|
-
this.items = this.originalItems.slice();
|
|
74
|
+
// this.items = this.originalItems.slice();
|
|
74
75
|
this.selectedItemsChange.emit(this.selectedItems);
|
|
75
76
|
}
|
|
76
77
|
}
|
|
@@ -80,9 +81,9 @@ class DropdownComponent {
|
|
|
80
81
|
}
|
|
81
82
|
unselectAll() {
|
|
82
83
|
this.selectedItems = [];
|
|
83
|
-
this.selectedItemName =
|
|
84
|
+
this.selectedItemName = "";
|
|
84
85
|
this.selectedItemsChange.emit(this.selectedItems);
|
|
85
|
-
this.items = this.originalItems.slice();
|
|
86
|
+
// this.items = this.originalItems.slice();
|
|
86
87
|
}
|
|
87
88
|
onDocumentClick(event) {
|
|
88
89
|
const isClickInsideDropdown = this.dropdown.nativeElement.contains(event.target);
|
|
@@ -97,18 +98,21 @@ class DropdownComponent {
|
|
|
97
98
|
const keyCode = event.keyCode;
|
|
98
99
|
if (keyCode === 8 && !this.multiple) {
|
|
99
100
|
this.selectedItems = [];
|
|
100
|
-
this.selectedItemName =
|
|
101
|
-
this.
|
|
101
|
+
this.selectedItemName = "";
|
|
102
|
+
this.selectedItemImage = "";
|
|
102
103
|
this.items = this.originalItems.slice();
|
|
104
|
+
this.selectedItemsChange.emit(this.selectedItems);
|
|
103
105
|
}
|
|
104
106
|
else {
|
|
105
107
|
this.searchTerm = event.target.value.toLowerCase();
|
|
106
108
|
if (!this.onSearch.observers.length) {
|
|
107
|
-
if (this.searchTerm.trim() ===
|
|
109
|
+
if (this.searchTerm.trim() === "") {
|
|
108
110
|
this.items = this.originalItems.slice();
|
|
109
111
|
}
|
|
110
112
|
else {
|
|
111
|
-
this.items = this.originalItems.filter((item) => item
|
|
113
|
+
this.items = this.originalItems.filter((item) => item.label.toLowerCase().startsWith(this.searchTerm) ||
|
|
114
|
+
(item.value &&
|
|
115
|
+
item.value.toLowerCase().startsWith(this.searchTerm)));
|
|
112
116
|
}
|
|
113
117
|
}
|
|
114
118
|
else {
|
|
@@ -121,12 +125,12 @@ class DropdownComponent {
|
|
|
121
125
|
this.buttonClick.emit();
|
|
122
126
|
}
|
|
123
127
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
124
|
-
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]=\"{ 'opened': showBorder && dropdownOpened, 'closed': showBorder && !dropdownOpened}\">\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{'opened': showBorder && dropdownOpened, 'closed': showBorder && !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\">×</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\">×</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 .dropdown-field{background:#fff;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-y:auto;overflow-x:hidden}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;padding:5px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:8px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:11px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:15px}}.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:6px}::-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"] }] }); }
|
|
128
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DropdownComponent, selector: "lib-dropdown", inputs: { multiple: "multiple", scrollable: "scrollable", selectedItems: "selectedItems", placeholder: "placeholder", items: "items", showCreateNew: "showCreateNew", 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\r\n #dropdown\r\n class=\"dropdown\"\r\n [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\"\r\n>\r\n <div\r\n class=\"dropdown-field\"\r\n id=\"division\"\r\n [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\"\r\n (click)=\"openDropdown()\"\r\n >\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\r\n <div\r\n *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\"\r\n class=\"selected-item\"\r\n >\r\n <img\r\n *ngIf=\"selectedItem?.image\"\r\n class=\"multiSelected-icon-size\"\r\n [src]=\"selectedItem?.image\"\r\n alt=\"image\"\r\n />\r\n <span>{{ selectedItem.label }}</span>\r\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\"\r\n >×</span\r\n >\r\n </div>\r\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\r\n +{{ selectedItems.length - 3 }} more\r\n </div>\r\n </div>\r\n\r\n <div class=\"input-field\">\r\n <div *ngIf=\"multiple\">\r\n <input\r\n class=\"dropdown_text\"\r\n [placeholder]=\"placeholder\"\r\n (keyup)=\"search($event)\"\r\n />\r\n </div>\r\n <div *ngIf=\"!multiple\">\r\n <img\r\n *ngIf=\"selectedItemImage\"\r\n class=\"selected-icon-size\"\r\n [src]=\"selectedItemImage\"\r\n alt=\"image\"\r\n />\r\n <input\r\n class=\"dropdown_text\"\r\n [placeholder]=\"placeholder\"\r\n [(ngModel)]=\"selectedItemName\"\r\n (keyup)=\"search($event)\"\r\n />\r\n </div>\r\n\r\n <div class=\"down-arrow\">\r\n <svg\r\n width=\"24\"\r\n height=\"25\"\r\n viewBox=\"0 0 24 25\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"down-arrow-img\"\r\n [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\"\r\n >\r\n <g id=\"Down Arrow\">\r\n <g id=\"Group\">\r\n <path\r\n id=\"Path\"\r\n d=\"M6 9.13741L12 15.229L18 9.13741\"\r\n stroke=\"#8E9AA0\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"up-arrow\">\r\n <svg\r\n width=\"24\"\r\n height=\"25\"\r\n viewBox=\"0 0 24 25\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"up-arrow-img\"\r\n [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\"\r\n >\r\n <path\r\n d=\"M18 15.229L12 9.1374L6 15.229\"\r\n stroke=\"#8E9AA0\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n <span\r\n (click)=\"unselectAll()\"\r\n *ngIf=\"(selectedItems.length > 0 || selectedItemName != '') && multiple\"\r\n class=\"deselect\"\r\n >×</span\r\n >\r\n </div>\r\n </div>\r\n\r\n <div\r\n #dropdownItems\r\n class=\"dropdown-items\"\r\n *ngIf=\"dropdownOpened\"\r\n (scroll)=\"onDropdownScroll($event)\"\r\n >\r\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\"\r\n >Create new</a\r\n >\r\n\r\n <ng-container *ngIf=\"multiple; else singleSelection\">\r\n <a\r\n class=\"items d-block\"\r\n *ngFor=\"let item of items\"\r\n (click)=\"selectItem(item)\"\r\n >\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <img\r\n *ngIf=\"item?.image\"\r\n [src]=\"item?.image\"\r\n alt=\"Item Image\"\r\n class=\"item-image icon-size\"\r\n />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <span class=\"item-value\">{{ item?.value }}</span>\r\n <div class=\"dropdown_buttons\">\r\n <button\r\n *ngFor=\"let button of customButtons\"\r\n (click)=\"handleButtonClick(button.action)\"\r\n >\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-template #singleSelection>\r\n <a\r\n class=\"items d-block\"\r\n *ngFor=\"let item of items\"\r\n (click)=\"selectItem(item)\"\r\n >\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <img\r\n *ngIf=\"item?.image\"\r\n [src]=\"item?.image\"\r\n alt=\"Item Image\"\r\n class=\"item-image icon-size\"\r\n />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <span class=\"item-value\">{{ item?.value }}</span>\r\n <div class=\"dropdown_buttons\">\r\n <button\r\n *ngFor=\"let button of customButtons\"\r\n (click)=\"handleButtonClick(button.action)\"\r\n >\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".dropdown{background:#fff;border-radius:6px}.dropdown .dropdown-field{background:#fff;border-radius:6px;position:relative;cursor:pointer}.dropdown .dropdown-field .selected{margin:5px}.dropdown .dropdown-field .selected.selectedList{display:flex;flex-wrap:wrap}.dropdown .dropdown-field .selected .selected-item{background:#cdd0d1;display:inline;margin:5px;padding:3px;border-radius:5px;font-size:small}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:3px;font-size:smaller}.dropdown .dropdown-field .input-field .dropdown_text{width:76%;border:none;padding:10px;margin-left:3px;outline:none;box-sizing:border-box;font-size:14px}.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:1px solid #d8d8d8}.dropdown .dropdown-field.opened{border-bottom:1px solid #d8d8d8}.dropdown .dropdown-items{overflow-y:auto;overflow-x:hidden}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:5px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:7px}}.dropdown .dropdown-items .create_button{text-decoration:none;line-height:41px;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .create_button{padding-left:8px}}.dropdown .dropdown-items .items{text-decoration:none;color:inherit;line-height:41px;position:relative;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .items{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}.dropdown .dropdown-items .items:hover{background:#cdd0d1;border-radius:6px}.dropdown .dropdown-items .items:hover button{visibility:visible}.dropdown .dropdown-items .items .dropdown_buttons{display:inline;position:absolute;right:5%}.dropdown .dropdown-items .items button{border:0;background:transparent;visibility:hidden}.dropdown.opened{border:1px #d8d8d8 solid}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#b2b2b2;border-radius:6px}.space{width:10px}.item-details{display:flex;align-items:center}.icon-size{width:25px;height:20px;margin-right:7px}.smallSpace{width:3px}.selected-icon-size{width:25px;height:20px;margin-left:10px}.multiSelected-icon-size{width:25px;height:20px;margin-left:1px;margin-bottom:1px;margin-right:3px}\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"] }] }); }
|
|
125
129
|
}
|
|
126
130
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
127
131
|
type: Component,
|
|
128
|
-
args: [{ selector:
|
|
129
|
-
}], propDecorators: { multiple: [{
|
|
132
|
+
args: [{ selector: "lib-dropdown", template: "<div\r\n #dropdown\r\n class=\"dropdown\"\r\n [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\"\r\n>\r\n <div\r\n class=\"dropdown-field\"\r\n id=\"division\"\r\n [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\"\r\n (click)=\"openDropdown()\"\r\n >\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\r\n <div\r\n *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\"\r\n class=\"selected-item\"\r\n >\r\n <img\r\n *ngIf=\"selectedItem?.image\"\r\n class=\"multiSelected-icon-size\"\r\n [src]=\"selectedItem?.image\"\r\n alt=\"image\"\r\n />\r\n <span>{{ selectedItem.label }}</span>\r\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\"\r\n >×</span\r\n >\r\n </div>\r\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\r\n +{{ selectedItems.length - 3 }} more\r\n </div>\r\n </div>\r\n\r\n <div class=\"input-field\">\r\n <div *ngIf=\"multiple\">\r\n <input\r\n class=\"dropdown_text\"\r\n [placeholder]=\"placeholder\"\r\n (keyup)=\"search($event)\"\r\n />\r\n </div>\r\n <div *ngIf=\"!multiple\">\r\n <img\r\n *ngIf=\"selectedItemImage\"\r\n class=\"selected-icon-size\"\r\n [src]=\"selectedItemImage\"\r\n alt=\"image\"\r\n />\r\n <input\r\n class=\"dropdown_text\"\r\n [placeholder]=\"placeholder\"\r\n [(ngModel)]=\"selectedItemName\"\r\n (keyup)=\"search($event)\"\r\n />\r\n </div>\r\n\r\n <div class=\"down-arrow\">\r\n <svg\r\n width=\"24\"\r\n height=\"25\"\r\n viewBox=\"0 0 24 25\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"down-arrow-img\"\r\n [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\"\r\n >\r\n <g id=\"Down Arrow\">\r\n <g id=\"Group\">\r\n <path\r\n id=\"Path\"\r\n d=\"M6 9.13741L12 15.229L18 9.13741\"\r\n stroke=\"#8E9AA0\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"up-arrow\">\r\n <svg\r\n width=\"24\"\r\n height=\"25\"\r\n viewBox=\"0 0 24 25\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"up-arrow-img\"\r\n [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\"\r\n >\r\n <path\r\n d=\"M18 15.229L12 9.1374L6 15.229\"\r\n stroke=\"#8E9AA0\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n <span\r\n (click)=\"unselectAll()\"\r\n *ngIf=\"(selectedItems.length > 0 || selectedItemName != '') && multiple\"\r\n class=\"deselect\"\r\n >×</span\r\n >\r\n </div>\r\n </div>\r\n\r\n <div\r\n #dropdownItems\r\n class=\"dropdown-items\"\r\n *ngIf=\"dropdownOpened\"\r\n (scroll)=\"onDropdownScroll($event)\"\r\n >\r\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\"\r\n >Create new</a\r\n >\r\n\r\n <ng-container *ngIf=\"multiple; else singleSelection\">\r\n <a\r\n class=\"items d-block\"\r\n *ngFor=\"let item of items\"\r\n (click)=\"selectItem(item)\"\r\n >\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <img\r\n *ngIf=\"item?.image\"\r\n [src]=\"item?.image\"\r\n alt=\"Item Image\"\r\n class=\"item-image icon-size\"\r\n />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <span class=\"item-value\">{{ item?.value }}</span>\r\n <div class=\"dropdown_buttons\">\r\n <button\r\n *ngFor=\"let button of customButtons\"\r\n (click)=\"handleButtonClick(button.action)\"\r\n >\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-template #singleSelection>\r\n <a\r\n class=\"items d-block\"\r\n *ngFor=\"let item of items\"\r\n (click)=\"selectItem(item)\"\r\n >\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <img\r\n *ngIf=\"item?.image\"\r\n [src]=\"item?.image\"\r\n alt=\"Item Image\"\r\n class=\"item-image icon-size\"\r\n />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <span class=\"item-value\">{{ item?.value }}</span>\r\n <div class=\"dropdown_buttons\">\r\n <button\r\n *ngFor=\"let button of customButtons\"\r\n (click)=\"handleButtonClick(button.action)\"\r\n >\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".dropdown{background:#fff;border-radius:6px}.dropdown .dropdown-field{background:#fff;border-radius:6px;position:relative;cursor:pointer}.dropdown .dropdown-field .selected{margin:5px}.dropdown .dropdown-field .selected.selectedList{display:flex;flex-wrap:wrap}.dropdown .dropdown-field .selected .selected-item{background:#cdd0d1;display:inline;margin:5px;padding:3px;border-radius:5px;font-size:small}.dropdown .dropdown-field .selected .remaining-items{margin:5px;padding:3px;font-size:smaller}.dropdown .dropdown-field .input-field .dropdown_text{width:76%;border:none;padding:10px;margin-left:3px;outline:none;box-sizing:border-box;font-size:14px}.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:1px solid #d8d8d8}.dropdown .dropdown-field.opened{border-bottom:1px solid #d8d8d8}.dropdown .dropdown-items{overflow-y:auto;overflow-x:hidden}@media only screen and (min-width: 276px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 576px){.dropdown .dropdown-items{max-height:150px;padding:3px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items{max-height:150px;padding:5px}}@media only screen and (min-width: 1441px){.dropdown .dropdown-items{max-height:200px;padding:7px}}.dropdown .dropdown-items .create_button{text-decoration:none;line-height:41px;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .create_button{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .create_button{padding-left:8px}}.dropdown .dropdown-items .items{text-decoration:none;color:inherit;line-height:41px;position:relative;cursor:pointer}@media only screen and (min-width: 576px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}@media only screen and (min-width: 992px){.dropdown .dropdown-items .items{padding-left:8px}}@media only screen and (min-width: 1200px){.dropdown .dropdown-items .items{padding-left:8px;font-size:small}}.dropdown .dropdown-items .items:hover{background:#cdd0d1;border-radius:6px}.dropdown .dropdown-items .items:hover button{visibility:visible}.dropdown .dropdown-items .items .dropdown_buttons{display:inline;position:absolute;right:5%}.dropdown .dropdown-items .items button{border:0;background:transparent;visibility:hidden}.dropdown.opened{border:1px #d8d8d8 solid}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#b2b2b2;border-radius:6px}.space{width:10px}.item-details{display:flex;align-items:center}.icon-size{width:25px;height:20px;margin-right:7px}.smallSpace{width:3px}.selected-icon-size{width:25px;height:20px;margin-left:10px}.multiSelected-icon-size{width:25px;height:20px;margin-left:1px;margin-bottom:1px;margin-right:3px}\n"] }]
|
|
133
|
+
}], ctorParameters: function () { return []; }, propDecorators: { multiple: [{
|
|
130
134
|
type: Input
|
|
131
135
|
}], scrollable: [{
|
|
132
136
|
type: Input
|
|
@@ -134,8 +138,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
134
138
|
type: Input
|
|
135
139
|
}], placeholder: [{
|
|
136
140
|
type: Input
|
|
137
|
-
}], label: [{
|
|
138
|
-
type: Input
|
|
139
141
|
}], items: [{
|
|
140
142
|
type: Input
|
|
141
143
|
}], showCreateNew: [{
|
|
@@ -156,13 +158,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
156
158
|
type: Output
|
|
157
159
|
}], dropdownitems: [{
|
|
158
160
|
type: ViewChild,
|
|
159
|
-
args: [
|
|
161
|
+
args: ["dropdownItems"]
|
|
160
162
|
}], dropdown: [{
|
|
161
163
|
type: ViewChild,
|
|
162
|
-
args: [
|
|
164
|
+
args: ["dropdown"]
|
|
163
165
|
}], onDocumentClick: [{
|
|
164
166
|
type: HostListener,
|
|
165
|
-
args: [
|
|
167
|
+
args: ["document:click", ["$event"]]
|
|
166
168
|
}] } });
|
|
167
169
|
|
|
168
170
|
class DropdownModule {
|
|
@@ -180,7 +182,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
180
182
|
],
|
|
181
183
|
imports: [
|
|
182
184
|
FormsModule,
|
|
183
|
-
CommonModule
|
|
185
|
+
CommonModule,
|
|
184
186
|
],
|
|
185
187
|
exports: [
|
|
186
188
|
DropdownComponent
|
|
@@ -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 if(!this.multiple)\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]=\"{ 'opened': showBorder && dropdownOpened, 'closed': showBorder && !dropdownOpened}\">\n <div class=\"dropdown-field\" id=\"division\" [ngClass]=\"{'opened': showBorder && dropdownOpened, 'closed': showBorder && !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\">×</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\">×</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":";;;;;;;MAKa,eAAe,CAAA;AAE1B,IAAA,WAAA,GAAA,GAAiB;+GAFN,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCGY,iBAAiB,CAAA;AAL9B,IAAA,WAAA,GAAA;QAQW,IAAa,CAAA,aAAA,GAAU,EAAE,CAAC;QAC1B,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;QACzB,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAK,CAAA,KAAA,GAAU,EAAE,CAAC;QAElB,IAAa,CAAA,aAAA,GAAwE,EAAE,CAAC;QACxF,IAAU,CAAA,UAAA,GAAY,IAAI,CAAC;AAC1B,QAAA,IAAA,CAAA,WAAW,GAAwB,IAAI,YAAY,EAAS,CAAC;AAC7D,QAAA,IAAA,CAAA,mBAAmB,GAAwB,IAAI,YAAY,EAElE,CAAC;AACM,QAAA,IAAA,CAAA,QAAQ,GAAwB,IAAI,YAAY,EAAS,CAAC;AAC1D,QAAA,IAAA,CAAA,WAAW,GAAwB,IAAI,YAAY,EAAS,CAAC;AAC7D,QAAA,IAAA,CAAA,QAAQ,GAAyB,IAAI,YAAY,EAAU,CAAC;QAEtE,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;QAEhC,IAAgB,CAAA,gBAAA,GAAW,EAAE,CAAC;QAC9B,IAAa,CAAA,aAAA,GAAU,EAAE,CAAC;QAC1B,IAAU,CAAA,UAAA,GAAQ,EAAE,CAAC;AA8GtB,KAAA;IA5GC,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YACvD,IAAG,CAAC,IAAI,CAAC,QAAQ;gBACjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,SAAA;KACF;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;KAC5C;AAID,IAAA,gBAAgB,CAAC,KAAU,EAAA;QACzB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,eAAe,GAAgB,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;YACtE,MAAM,cAAc,GAClB,eAAe,CAAC,SAAS,GAAG,eAAe,CAAC,YAAY,CAAC;AAC3D,YAAA,MAAM,WAAW,GAAG,eAAe,CAAC,YAAY,CAAC;YAEjD,IAAI,cAAc,IAAI,WAAW,EAAE;AACjC,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACtB,aAAA;AACF,SAAA;KACF;AAED,IAAA,UAAU,CAAC,IAAS,EAAA;QAClB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACtC,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACnD,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAC5C,CAAC,QAAa,KAAK,QAAQ,KAAK,IAAI,CACrC,CAAC;gBACF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACnD,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAC7B,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1D,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YACxC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACnD,SAAA;KACF;AAED,IAAA,YAAY,CAAC,IAAS,EAAA;AACpB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAC5C,CAAC,QAAa,KAAK,QAAQ,KAAK,IAAI,CACrC,CAAC;QACF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACnD;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KACzC;AAID,IAAA,eAAe,CAAC,KAAY,EAAA;AAC1B,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAChE,KAAK,CAAC,MAAM,CACb,CAAC;QACF,IAAI,CAAC,qBAAqB,EAAE;AAC1B,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC7B,SAAA;KACF;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;AAED,IAAA,MAAM,CAAC,KAAU,EAAA;AACf,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAE9B,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACnC,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAC3B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACzC,SAAA;AAAM,aAAA;YAEL,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAEnD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE;gBACnC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACzC,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,KAC1C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3D,CAAC;AACH,iBAAA;AACF,aAAA;AACI,iBAAA;gBACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACrC,aAAA;AACF,SAAA;KACF;AAED,IAAA,iBAAiB,CAAC,MAAkB,EAAA;AAClC,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;+GAlIU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,gtBCP9B,0vHAuGA,EAAA,MAAA,EAAA,CAAA,k0HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDhGa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACE,cAAc,EAAA,QAAA,EAAA,0vHAAA,EAAA,MAAA,EAAA,CAAA,k0HAAA,CAAA,EAAA,CAAA;8BAKf,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;gBAGG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBAoBqB,aAAa,EAAA,CAAA;sBAAxC,SAAS;uBAAC,eAAe,CAAA;gBAiDH,QAAQ,EAAA,CAAA;sBAA9B,SAAS;uBAAC,UAAU,CAAA;gBAErB,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ME1E/B,cAAc,CAAA;+GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAd,cAAc,EAAA,YAAA,EAAA,CAVvB,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAGjB,WAAW;AACX,YAAA,YAAY,aAGZ,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAPvB,WAAW;YACX,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAMH,cAAc,EAAA,UAAA,EAAA,CAAA;kBAZ1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,iBAAiB;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,WAAW;wBACX,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,iBAAiB;AAClB,qBAAA;AACF,iBAAA,CAAA;;;AClBD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"piserve-tech-drop-down.mjs","sources":["../../../projects/dropdown/src/lib/dropdown.service.ts","../../../projects/dropdown/src/lib/dropdown.component.ts","../../../projects/dropdown/src/lib/dropdown.component.html","../../../projects/dropdown/src/lib/dropdown.module.ts","../../../projects/dropdown/src/public-api.ts","../../../projects/dropdown/src/piserve-tech-drop-down.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DropdownService {\r\n\r\n constructor() { }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from \"@angular/core\";\r\n\r\ninterface DropdownItem {\r\n value: string;\r\n label: string;\r\n image: string;\r\n}\r\n\r\n@Component({\r\n selector: \"lib-dropdown\",\r\n templateUrl: \"./dropdown.component.html\",\r\n styleUrls: [\"./dropdown.component.scss\"],\r\n})\r\nexport class DropdownComponent implements OnInit {\r\n @Input() multiple!: boolean;\r\n @Input() scrollable!: boolean;\r\n @Input() selectedItems: any[] = [];\r\n @Input() placeholder: String = \"\";\r\n @Input() items: DropdownItem[] = [];\r\n @Input() showCreateNew!: boolean;\r\n @Input() customButtons: {\r\n label: string;\r\n icon: string;\r\n color: string;\r\n action: () => void;\r\n }[] = [];\r\n @Input() showBorder: boolean = true;\r\n @Output() buttonClick: EventEmitter<Event> = new EventEmitter<Event>();\r\n @Output() selectedItemsChange: EventEmitter<any[]> = new EventEmitter<\r\n any[]\r\n >();\r\n @Output() onScroll: EventEmitter<Event> = new EventEmitter<Event>();\r\n @Output() onCreateNew: EventEmitter<Event> = new EventEmitter<Event>();\r\n @Output() onSearch: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n dropdownOpened: boolean = false;\r\n selectedItem: any;\r\n selectedItemName: string = \"\";\r\n selectedItemImage: string = \"\";\r\n originalItems: any[] = [];\r\n searchTerm: string = \"\";\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n if (this.selectedItems && this.selectedItems.length > 0) {\r\n if (!this.multiple) this.selectItem(this.selectedItems[0]);\r\n }\r\n this.originalItems = this.items.slice();\r\n }\r\n\r\n openDropdown() {\r\n this.dropdownOpened = !this.dropdownOpened;\r\n }\r\n\r\n @ViewChild(\"dropdownItems\") dropdownitems!: ElementRef;\r\n\r\n onDropdownScroll(event: any): void {\r\n if (this.onScroll) {\r\n const dropdownElement: HTMLElement = this.dropdownitems.nativeElement;\r\n const scrollPosition =\r\n dropdownElement.scrollTop + dropdownElement.clientHeight;\r\n const totalHeight = dropdownElement.scrollHeight;\r\n\r\n if (scrollPosition >= totalHeight) {\r\n this.onScroll.emit();\r\n }\r\n }\r\n }\r\n\r\n selectItem(item: any) {\r\n if (this.multiple) {\r\n if (!this.selectedItems.includes(item)) {\r\n this.selectedItems.push(item);\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n } else {\r\n this.selectedItems = this.selectedItems.filter(\r\n (selected: any) => selected !== item\r\n );\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n }\r\n } else {\r\n this.selectedItems[0] = item;\r\n\r\n this.selectedItemName = this.selectedItems[0]?.label;\r\n this.selectedItemImage = this.selectedItems[0]?.image;\r\n this.dropdownOpened = false;\r\n // this.items = this.originalItems.slice();\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n }\r\n }\r\n\r\n unselectItem(item: any): void {\r\n this.selectedItems = this.selectedItems.filter(\r\n (selected: any) => selected !== item\r\n );\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n }\r\n\r\n unselectAll() {\r\n this.selectedItems = [];\r\n this.selectedItemName = \"\";\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n // this.items = this.originalItems.slice();\r\n }\r\n\r\n @ViewChild(\"dropdown\") dropdown!: ElementRef;\r\n @HostListener(\"document:click\", [\"$event\"])\r\n onDocumentClick(event: Event): void {\r\n const isClickInsideDropdown = this.dropdown.nativeElement.contains(\r\n event.target\r\n );\r\n if (!isClickInsideDropdown) {\r\n this.dropdownOpened = false;\r\n }\r\n }\r\n\r\n createNew() {\r\n this.onCreateNew.emit();\r\n }\r\n\r\n search(event: any): void {\r\n const keyCode = event.keyCode;\r\n\r\n if (keyCode === 8 && !this.multiple) {\r\n this.selectedItems = [];\r\n this.selectedItemName = \"\";\r\n this.selectedItemImage = \"\";\r\n this.items = this.originalItems.slice();\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n } else {\r\n this.searchTerm = event.target.value.toLowerCase();\r\n if (!this.onSearch.observers.length) {\r\n if (this.searchTerm.trim() === \"\") {\r\n this.items = this.originalItems.slice();\r\n } else {\r\n this.items = this.originalItems.filter(\r\n (item) =>\r\n item.label.toLowerCase().startsWith(this.searchTerm) ||\r\n (item.value &&\r\n item.value.toLowerCase().startsWith(this.searchTerm))\r\n );\r\n }\r\n } else {\r\n this.onSearch.emit(this.searchTerm);\r\n }\r\n }\r\n }\r\n\r\n handleButtonClick(action: () => void): void {\r\n action();\r\n this.buttonClick.emit();\r\n }\r\n}\r\n","<div\r\n #dropdown\r\n class=\"dropdown\"\r\n [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\"\r\n>\r\n <div\r\n class=\"dropdown-field\"\r\n id=\"division\"\r\n [ngClass]=\"{\r\n opened: showBorder && dropdownOpened,\r\n closed: showBorder && !dropdownOpened,\r\n }\"\r\n (click)=\"openDropdown()\"\r\n >\r\n <div *ngIf=\"!selectedItem && multiple\" class=\"selected selectedList\">\r\n <div\r\n *ngFor=\"let selectedItem of selectedItems.slice(0, 3)\"\r\n class=\"selected-item\"\r\n >\r\n <img\r\n *ngIf=\"selectedItem?.image\"\r\n class=\"multiSelected-icon-size\"\r\n [src]=\"selectedItem?.image\"\r\n alt=\"image\"\r\n />\r\n <span>{{ selectedItem.label }}</span>\r\n <span (click)=\"unselectItem(selectedItem)\" class=\"close-icon\"\r\n >×</span\r\n >\r\n </div>\r\n <div class=\"remaining-items\" *ngIf=\"selectedItems.length > 3\">\r\n +{{ selectedItems.length - 3 }} more\r\n </div>\r\n </div>\r\n\r\n <div class=\"input-field\">\r\n <div *ngIf=\"multiple\">\r\n <input\r\n class=\"dropdown_text\"\r\n [placeholder]=\"placeholder\"\r\n (keyup)=\"search($event)\"\r\n />\r\n </div>\r\n <div *ngIf=\"!multiple\">\r\n <img\r\n *ngIf=\"selectedItemImage\"\r\n class=\"selected-icon-size\"\r\n [src]=\"selectedItemImage\"\r\n alt=\"image\"\r\n />\r\n <input\r\n class=\"dropdown_text\"\r\n [placeholder]=\"placeholder\"\r\n [(ngModel)]=\"selectedItemName\"\r\n (keyup)=\"search($event)\"\r\n />\r\n </div>\r\n\r\n <div class=\"down-arrow\">\r\n <svg\r\n width=\"24\"\r\n height=\"25\"\r\n viewBox=\"0 0 24 25\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"down-arrow-img\"\r\n [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\"\r\n >\r\n <g id=\"Down Arrow\">\r\n <g id=\"Group\">\r\n <path\r\n id=\"Path\"\r\n d=\"M6 9.13741L12 15.229L18 9.13741\"\r\n stroke=\"#8E9AA0\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"up-arrow\">\r\n <svg\r\n width=\"24\"\r\n height=\"25\"\r\n viewBox=\"0 0 24 25\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"up-arrow-img\"\r\n [ngClass]=\"{ opened: dropdownOpened, closed: !dropdownOpened }\"\r\n >\r\n <path\r\n d=\"M18 15.229L12 9.1374L6 15.229\"\r\n stroke=\"#8E9AA0\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n <span\r\n (click)=\"unselectAll()\"\r\n *ngIf=\"(selectedItems.length > 0 || selectedItemName != '') && multiple\"\r\n class=\"deselect\"\r\n >×</span\r\n >\r\n </div>\r\n </div>\r\n\r\n <div\r\n #dropdownItems\r\n class=\"dropdown-items\"\r\n *ngIf=\"dropdownOpened\"\r\n (scroll)=\"onDropdownScroll($event)\"\r\n >\r\n <a class=\"create_button\" (click)=\"createNew()\" *ngIf=\"showCreateNew\"\r\n >Create new</a\r\n >\r\n\r\n <ng-container *ngIf=\"multiple; else singleSelection\">\r\n <a\r\n class=\"items d-block\"\r\n *ngFor=\"let item of items\"\r\n (click)=\"selectItem(item)\"\r\n >\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <img\r\n *ngIf=\"item?.image\"\r\n [src]=\"item?.image\"\r\n alt=\"Item Image\"\r\n class=\"item-image icon-size\"\r\n />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <span class=\"item-value\">{{ item?.value }}</span>\r\n <div class=\"dropdown_buttons\">\r\n <button\r\n *ngFor=\"let button of customButtons\"\r\n (click)=\"handleButtonClick(button.action)\"\r\n >\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-template #singleSelection>\r\n <a\r\n class=\"items d-block\"\r\n *ngFor=\"let item of items\"\r\n (click)=\"selectItem(item)\"\r\n >\r\n <div class=\"dropdown-item\">\r\n <div class=\"item-details\">\r\n <img\r\n *ngIf=\"item?.image\"\r\n [src]=\"item?.image\"\r\n alt=\"Item Image\"\r\n class=\"item-image icon-size\"\r\n />\r\n <span class=\"item-label\">{{ item?.label }}</span>\r\n <div class=\"space\" *ngIf=\"item?.label\"></div>\r\n <span class=\"item-value\">{{ item?.value }}</span>\r\n <div class=\"dropdown_buttons\">\r\n <button\r\n *ngFor=\"let button of customButtons\"\r\n (click)=\"handleButtonClick(button.action)\"\r\n >\r\n <i [class]=\"button.icon\" [style.color]=\"button.color\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-template>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { DropdownComponent } from './dropdown.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n DropdownComponent\r\n ],\r\n imports: [\r\n FormsModule,\r\n CommonModule,\r\n ],\r\n exports: [\r\n DropdownComponent\r\n ]\r\n})\r\nexport class DropdownModule { }\r\n","/*\r\n * Public API Surface of dropdown\r\n */\r\n\r\nexport * from './lib/dropdown.service';\r\nexport * from './lib/dropdown.component';\r\nexport * from './lib/dropdown.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
import { ElementRef, EventEmitter, OnInit } from
|
|
1
|
+
import { ElementRef, EventEmitter, OnInit } from "@angular/core";
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
interface DropdownItem {
|
|
4
|
+
value: string;
|
|
5
|
+
label: string;
|
|
6
|
+
image: string;
|
|
7
|
+
}
|
|
3
8
|
export declare class DropdownComponent implements OnInit {
|
|
4
9
|
multiple: boolean;
|
|
5
10
|
scrollable: boolean;
|
|
6
11
|
selectedItems: any[];
|
|
7
12
|
placeholder: String;
|
|
8
|
-
|
|
9
|
-
items: any[];
|
|
13
|
+
items: DropdownItem[];
|
|
10
14
|
showCreateNew: boolean;
|
|
11
15
|
customButtons: {
|
|
12
16
|
label: string;
|
|
@@ -23,8 +27,10 @@ export declare class DropdownComponent implements OnInit {
|
|
|
23
27
|
dropdownOpened: boolean;
|
|
24
28
|
selectedItem: any;
|
|
25
29
|
selectedItemName: string;
|
|
30
|
+
selectedItemImage: string;
|
|
26
31
|
originalItems: any[];
|
|
27
32
|
searchTerm: string;
|
|
33
|
+
constructor();
|
|
28
34
|
ngOnInit(): void;
|
|
29
35
|
openDropdown(): void;
|
|
30
36
|
dropdownitems: ElementRef;
|
|
@@ -38,5 +44,6 @@ export declare class DropdownComponent implements OnInit {
|
|
|
38
44
|
search(event: any): void;
|
|
39
45
|
handleButtonClick(action: () => void): void;
|
|
40
46
|
static ɵfac: i0.ɵɵFactoryDeclaration<DropdownComponent, never>;
|
|
41
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DropdownComponent, "lib-dropdown", never, { "multiple": { "alias": "multiple"; "required": false; }; "scrollable": { "alias": "scrollable"; "required": false; }; "selectedItems": { "alias": "selectedItems"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "
|
|
47
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DropdownComponent, "lib-dropdown", never, { "multiple": { "alias": "multiple"; "required": false; }; "scrollable": { "alias": "scrollable"; "required": false; }; "selectedItems": { "alias": "selectedItems"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "items": { "alias": "items"; "required": false; }; "showCreateNew": { "alias": "showCreateNew"; "required": false; }; "customButtons": { "alias": "customButtons"; "required": false; }; "showBorder": { "alias": "showBorder"; "required": false; }; }, { "buttonClick": "buttonClick"; "selectedItemsChange": "selectedItemsChange"; "onScroll": "onScroll"; "onCreateNew": "onCreateNew"; "onSearch": "onSearch"; }, never, never, false, never>;
|
|
42
48
|
}
|
|
49
|
+
export {};
|