ngx-dropdown-list 1.1.2 → 1.2.0

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.
Files changed (66) hide show
  1. package/README.md +2 -2
  2. package/esm2020/ngx-dropdown-list.mjs +5 -0
  3. package/esm2020/public_api.mjs +2 -0
  4. package/esm2020/src/ngx-dropdown-list/anchor/anchor.component.mjs +149 -0
  5. package/esm2020/src/ngx-dropdown-list/dropdown/dropdown.component.mjs +252 -0
  6. package/esm2020/src/ngx-dropdown-list/dropdown-list.component.mjs +233 -0
  7. package/esm2020/src/ngx-dropdown-list/dropdown-list.module.mjs +38 -0
  8. package/esm2020/src/ngx-dropdown-list/filter/input-filter.component.mjs +44 -0
  9. package/esm2020/src/ngx-dropdown-list/group-item/group-item.component.mjs +25 -0
  10. package/esm2020/src/ngx-dropdown-list/index.mjs +3 -0
  11. package/esm2020/src/ngx-dropdown-list/item/item.component.mjs +77 -0
  12. package/esm2020/src/ngx-dropdown-list/types/index.mjs +3 -0
  13. package/esm2020/src/ngx-dropdown-list/types/selection-group-items.types.mjs +2 -0
  14. package/esm2020/src/ngx-dropdown-list/types/selection-item.types.mjs +2 -0
  15. package/esm2020/src/ngx-dropdown-list/utils/util.mjs +59 -0
  16. package/fesm2015/ngx-dropdown-list.mjs +854 -0
  17. package/fesm2015/ngx-dropdown-list.mjs.map +1 -0
  18. package/fesm2020/ngx-dropdown-list.mjs +854 -0
  19. package/fesm2020/ngx-dropdown-list.mjs.map +1 -0
  20. package/ngx-dropdown-list.d.ts +1 -5
  21. package/package.json +26 -48
  22. package/src/ngx-dropdown-list/anchor/anchor.component.d.ts +6 -3
  23. package/src/ngx-dropdown-list/dropdown/dropdown.component.d.ts +5 -2
  24. package/src/ngx-dropdown-list/dropdown-list.component.d.ts +7 -4
  25. package/src/ngx-dropdown-list/dropdown-list.module.d.ts +12 -0
  26. package/src/ngx-dropdown-list/filter/input-filter.component.d.ts +3 -0
  27. package/src/ngx-dropdown-list/group-item/group-item.component.d.ts +3 -0
  28. package/src/ngx-dropdown-list/item/item.component.d.ts +3 -0
  29. package/bundles/ngx-dropdown-list.umd.js +0 -1212
  30. package/bundles/ngx-dropdown-list.umd.js.map +0 -1
  31. package/bundles/ngx-dropdown-list.umd.min.js +0 -2
  32. package/bundles/ngx-dropdown-list.umd.min.js.map +0 -1
  33. package/esm2015/ngx-dropdown-list.js +0 -14
  34. package/esm2015/public_api.js +0 -6
  35. package/esm2015/src/ngx-dropdown-list/anchor/anchor.component.js +0 -226
  36. package/esm2015/src/ngx-dropdown-list/dropdown/dropdown.component.js +0 -351
  37. package/esm2015/src/ngx-dropdown-list/dropdown-list.component.js +0 -290
  38. package/esm2015/src/ngx-dropdown-list/dropdown-list.module.js +0 -32
  39. package/esm2015/src/ngx-dropdown-list/filter/input-filter.component.js +0 -64
  40. package/esm2015/src/ngx-dropdown-list/group-item/group-item.component.js +0 -37
  41. package/esm2015/src/ngx-dropdown-list/index.js +0 -7
  42. package/esm2015/src/ngx-dropdown-list/item/item.component.js +0 -104
  43. package/esm2015/src/ngx-dropdown-list/types/index.js +0 -7
  44. package/esm2015/src/ngx-dropdown-list/types/selection-group-items.types.js +0 -16
  45. package/esm2015/src/ngx-dropdown-list/types/selection-item.types.js +0 -20
  46. package/esm2015/src/ngx-dropdown-list/utils/util.js +0 -101
  47. package/esm5/ngx-dropdown-list.js +0 -14
  48. package/esm5/public_api.js +0 -6
  49. package/esm5/src/ngx-dropdown-list/anchor/anchor.component.js +0 -272
  50. package/esm5/src/ngx-dropdown-list/dropdown/dropdown.component.js +0 -420
  51. package/esm5/src/ngx-dropdown-list/dropdown-list.component.js +0 -361
  52. package/esm5/src/ngx-dropdown-list/dropdown-list.module.js +0 -36
  53. package/esm5/src/ngx-dropdown-list/filter/input-filter.component.js +0 -79
  54. package/esm5/src/ngx-dropdown-list/group-item/group-item.component.js +0 -47
  55. package/esm5/src/ngx-dropdown-list/index.js +0 -7
  56. package/esm5/src/ngx-dropdown-list/item/item.component.js +0 -120
  57. package/esm5/src/ngx-dropdown-list/types/index.js +0 -7
  58. package/esm5/src/ngx-dropdown-list/types/selection-group-items.types.js +0 -16
  59. package/esm5/src/ngx-dropdown-list/types/selection-item.types.js +0 -20
  60. package/esm5/src/ngx-dropdown-list/utils/util.js +0 -124
  61. package/fesm2015/ngx-dropdown-list.js +0 -930
  62. package/fesm2015/ngx-dropdown-list.js.map +0 -1
  63. package/fesm5/ngx-dropdown-list.js +0 -1177
  64. package/fesm5/ngx-dropdown-list.js.map +0 -1
  65. package/ngx-dropdown-list-1.1.2.tgz +0 -0
  66. package/ngx-dropdown-list.metadata.json +0 -1
@@ -0,0 +1,233 @@
1
+ import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import { clearAllSelection, getFirstSelectedItem, stopPropagationAndDefault } from './utils/util';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./anchor/anchor.component";
5
+ import * as i2 from "./dropdown/dropdown.component";
6
+ export class DropdownListComponent {
7
+ constructor() {
8
+ /**
9
+ * bind to [multiSelection], the flag for multi-select (checkbox) mode.
10
+ */
11
+ this.multiSelection = false;
12
+ /**
13
+ * bind to [filterBox] for displaying the filter input text box
14
+ */
15
+ this.filterBox = false;
16
+ /**
17
+ * bind to [allowClear] for enabling the clearance (clearance is not avaiable when checkbox is enabled)
18
+ */
19
+ this.allowClear = true;
20
+ /**
21
+ * bind to [formatNumber] for show formatted number text
22
+ */
23
+ this.formatNumber = false;
24
+ /**
25
+ * for 2-way binding of [selectedValue], using async event to
26
+ * prevent "ExpressionChangedAfterItHasBeenCheckedError".
27
+ */
28
+ this.selectedValueChange = new EventEmitter(true);
29
+ /**
30
+ * [selectionChange] event that will be triggered when changing of the selection.
31
+ * Using async event to prevent "ExpressionChangedAfterItHasBeenCheckedError".
32
+ */
33
+ this.selectionChange = new EventEmitter(true);
34
+ /**
35
+ * visibility flag of drop down
36
+ */
37
+ this.dropdownVisibility = false;
38
+ }
39
+ /**
40
+ * current selected text
41
+ */
42
+ get selectedText() {
43
+ if (!this.multiSelection) {
44
+ const selectedItem = getFirstSelectedItem(this.items);
45
+ return selectedItem ? selectedItem.text : undefined;
46
+ }
47
+ }
48
+ /**
49
+ * triggered with (selectionChange) event, emits (selectedValueChange) and (selectionChange)
50
+ */
51
+ onSelectionChange(event) {
52
+ this.selectedValueChange.emit(event);
53
+ this.selectionChange.emit(event);
54
+ }
55
+ /**
56
+ * triggered with (anchorClick) event, controlling the "open" and "close" of the dropdown
57
+ */
58
+ onAnchorClick(event) {
59
+ if (this.disabled) {
60
+ stopPropagationAndDefault(event);
61
+ return;
62
+ }
63
+ if (this._isSelectionOpen()) {
64
+ this._hideItemList();
65
+ }
66
+ else {
67
+ this._showItemsList();
68
+ }
69
+ stopPropagationAndDefault(event);
70
+ }
71
+ /**
72
+ * triggered with (itemClick) event, closes the dropdown in non-checkbox mode
73
+ */
74
+ onItemClick() {
75
+ if (!this.multiSelection) {
76
+ this._hideItemList();
77
+ }
78
+ }
79
+ /**
80
+ * triggered with (clearanceClick) event, clearing all selections
81
+ * and emits (selectedValueChange) and (selectionChange) event for empty value
82
+ */
83
+ onClearanceClick(event) {
84
+ if (!this.multiSelection) {
85
+ this.selectedValue = void 0;
86
+ this.selectedValueChange.emit(undefined);
87
+ this.selectionChange.emit(undefined);
88
+ clearAllSelection(this.items);
89
+ }
90
+ stopPropagationAndDefault(event);
91
+ }
92
+ /**
93
+ * triggered with (dropdownBlur) event, closes the dropdown
94
+ */
95
+ onItemsBlur() {
96
+ if (this._isSelectionOpen()) {
97
+ this._hideItemList();
98
+ }
99
+ }
100
+ /**
101
+ * close the dropdown
102
+ */
103
+ _hideItemList() {
104
+ // hide the dropdown element (has some problem for using CSS directly, using this as a workaround)
105
+ this._dropdownElement.classList.remove('visible');
106
+ this._dropdownElement.style.display = 'none';
107
+ this.dropdownVisibility = false;
108
+ }
109
+ /**
110
+ * open the dropdown
111
+ */
112
+ _showItemsList() {
113
+ // display the dropdown element (has some problem for using CSS directly, using this as a workaround)
114
+ this._dropdownElement.classList.add('visible');
115
+ this._dropdownElement.style.display = 'block';
116
+ this.dropdownVisibility = true;
117
+ // scrolling to the selected item
118
+ if (this._selectedElement) {
119
+ this._selectedElement.scrollIntoView({ behavior: 'auto', block: 'center' });
120
+ }
121
+ // setting the focus
122
+ if (this.filterBox && !this.multiSelection) {
123
+ this._filterInputElement.focus();
124
+ }
125
+ else {
126
+ this._dropdownElement.focus();
127
+ }
128
+ }
129
+ /**
130
+ * visibility status of dropdown
131
+ */
132
+ _isSelectionOpen() {
133
+ return this.dropdownVisibility;
134
+ }
135
+ /**
136
+ * get the real dropdown element (for focusing and visibility controlling), the <span> not the <dropdown>
137
+ */
138
+ get _dropdownElement() {
139
+ return this.dropdownRef ? this.dropdownRef.nativeElement ? this.dropdownRef.nativeElement.firstElementChild : null : null;
140
+ }
141
+ /**
142
+ * get the real filter element (for focusing), the <input> not the <input-filter>
143
+ */
144
+ get _filterInputElement() {
145
+ return this._dropdownElement ?
146
+ this._dropdownElement.firstElementChild ? this._dropdownElement.firstElementChild.firstElementChild : null : null;
147
+ }
148
+ /**
149
+ * get the HTMLElement of selected item, for doing (scrollIntoView) scrolling to the selected item
150
+ */
151
+ get _selectedElement() {
152
+ const selectedItem = getFirstSelectedItem(this.items);
153
+ return selectedItem ? document.getElementById(selectedItem.id) : undefined;
154
+ }
155
+ }
156
+ DropdownListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DropdownListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
157
+ DropdownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: DropdownListComponent, selector: "ngx-dropdown-list", inputs: { placeHolder: "placeHolder", items: "items", multiSelection: "multiSelection", selectedValue: "selectedValue", filterBox: "filterBox", suffixText: "suffixText", disabled: "disabled", allowClear: "allowClear", formatNumber: "formatNumber" }, outputs: { selectedValueChange: "selectedValueChange", selectionChange: "selectionChange" }, viewQueries: [{ propertyName: "dropdownRef", first: true, predicate: ["dropdown"], descendants: true, read: ElementRef }], ngImport: i0, template: `
158
+ <span class="ngx-select">
159
+ <anchor (anchorClick)="onAnchorClick($event)" (clearanceClick)="onClearanceClick($event)"
160
+ [checkbox]="multiSelection"
161
+ [formatNumber]="formatNumber"
162
+ [suffixText]="suffixText"
163
+ [placeHolder]="placeHolder"
164
+ [allowClear]="allowClear"
165
+ [openStatus]="dropdownVisibility"
166
+ [selectedText]="selectedText"
167
+ [disabled]="disabled">
168
+ </anchor>
169
+ <dropdown #dropdown (dropdownBlur) = "onItemsBlur()" (selectionChange)="onSelectionChange($event)"
170
+ [items]="items"
171
+ [checkbox]="multiSelection"
172
+ [filterBox]="filterBox"
173
+ [formatNumber]="formatNumber"
174
+ [suffixText]="suffixText"
175
+ [(selectedValue)]="selectedValue"
176
+ (itemClick) = "onItemClick()"
177
+ [disabled]="disabled">
178
+ </dropdown>
179
+ </span>
180
+ `, isInline: true, styles: [":host *,:host *:before,:host *:after{font-size:inherit;font-weight:inherit;font-family:inherit;box-sizing:inherit;background:inherit}:host .ngx-select{border-radius:4px;font-size:14px;position:relative;display:inline-block;width:100%;height:34px;background:white;-webkit-user-select:none;user-select:none}\n"], components: [{ type: i1.AnchorComponent, selector: "anchor", inputs: ["placeHolder", "checkbox", "suffixText", "allowClear", "formatNumber", "selectedText", "openStatus", "disabled"], outputs: ["anchorClick", "clearanceClick"] }, { type: i2.DropdownComponent, selector: "dropdown", inputs: ["placeHolder", "items", "checkbox", "selectedValue", "filterBox", "suffixText", "disabled", "allowClear", "formatNumber"], outputs: ["selectedValueChange", "selectionChange", "dropdownBlur", "itemClick"] }] });
181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DropdownListComponent, decorators: [{
182
+ type: Component,
183
+ args: [{ selector: 'ngx-dropdown-list', template: `
184
+ <span class="ngx-select">
185
+ <anchor (anchorClick)="onAnchorClick($event)" (clearanceClick)="onClearanceClick($event)"
186
+ [checkbox]="multiSelection"
187
+ [formatNumber]="formatNumber"
188
+ [suffixText]="suffixText"
189
+ [placeHolder]="placeHolder"
190
+ [allowClear]="allowClear"
191
+ [openStatus]="dropdownVisibility"
192
+ [selectedText]="selectedText"
193
+ [disabled]="disabled">
194
+ </anchor>
195
+ <dropdown #dropdown (dropdownBlur) = "onItemsBlur()" (selectionChange)="onSelectionChange($event)"
196
+ [items]="items"
197
+ [checkbox]="multiSelection"
198
+ [filterBox]="filterBox"
199
+ [formatNumber]="formatNumber"
200
+ [suffixText]="suffixText"
201
+ [(selectedValue)]="selectedValue"
202
+ (itemClick) = "onItemClick()"
203
+ [disabled]="disabled">
204
+ </dropdown>
205
+ </span>
206
+ `, styles: [":host *,:host *:before,:host *:after{font-size:inherit;font-weight:inherit;font-family:inherit;box-sizing:inherit;background:inherit}:host .ngx-select{border-radius:4px;font-size:14px;position:relative;display:inline-block;width:100%;height:34px;background:white;-webkit-user-select:none;user-select:none}\n"] }]
207
+ }], propDecorators: { dropdownRef: [{
208
+ type: ViewChild,
209
+ args: ['dropdown', { read: ElementRef }]
210
+ }], placeHolder: [{
211
+ type: Input
212
+ }], items: [{
213
+ type: Input
214
+ }], multiSelection: [{
215
+ type: Input
216
+ }], selectedValue: [{
217
+ type: Input
218
+ }], filterBox: [{
219
+ type: Input
220
+ }], suffixText: [{
221
+ type: Input
222
+ }], disabled: [{
223
+ type: Input
224
+ }], allowClear: [{
225
+ type: Input
226
+ }], formatNumber: [{
227
+ type: Input
228
+ }], selectedValueChange: [{
229
+ type: Output
230
+ }], selectionChange: [{
231
+ type: Output
232
+ }] } });
233
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LWRyb3Bkb3duLWxpc3QvZHJvcGRvd24tbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSx5QkFBeUIsRUFBQyxNQUFNLGNBQWMsQ0FBQzs7OztBQStCaEcsTUFBTSxPQUFPLHFCQUFxQjtJQTdCbEM7UUF3Q0U7O1dBRUc7UUFDTSxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUtoQzs7V0FFRztRQUNNLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFTM0I7O1dBRUc7UUFDTSxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQzNCOztXQUVHO1FBQ00saUJBQVksR0FBRyxLQUFLLENBQUM7UUFDOUI7OztXQUdHO1FBQ08sd0JBQW1CLEdBQUcsSUFBSSxZQUFZLENBQVMsSUFBSSxDQUFDLENBQUM7UUFDL0Q7OztXQUdHO1FBQ08sb0JBQWUsR0FBRyxJQUFJLFlBQVksQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUV4RDs7V0FFRztRQUNILHVCQUFrQixHQUFHLEtBQUssQ0FBQztLQWtJNUI7SUFoSUM7O09BRUc7SUFDSCxJQUFJLFlBQVk7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QixNQUFNLFlBQVksR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEQsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztTQUNyRDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQixD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QUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUtHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge2NsZWFyQWxsU2VsZWN0aW9uLCBnZXRGaXJzdFNlbGVjdGVkSXRlbSwgc3RvcFByb3BhZ2F0aW9uQW5kRGVmYXVsdH0gZnJvbSAnLi91dGlscy91dGlsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmd4LWRyb3Bkb3duLWxpc3QnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8c3BhbiBjbGFzcz1cIm5neC1zZWxlY3RcIj5cclxuICAgICAgICA8YW5jaG9yIChhbmNob3JDbGljayk9XCJvbkFuY2hvckNsaWNrKCRldmVudClcIiAoY2xlYXJhbmNlQ2xpY2spPVwib25DbGVhcmFuY2VDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtjaGVja2JveF09XCJtdWx0aVNlbGVjdGlvblwiXHJcbiAgICAgICAgICAgICAgICBbZm9ybWF0TnVtYmVyXT1cImZvcm1hdE51bWJlclwiXHJcbiAgICAgICAgICAgICAgICBbc3VmZml4VGV4dF09XCJzdWZmaXhUZXh0XCJcclxuICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCJwbGFjZUhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICBbYWxsb3dDbGVhcl09XCJhbGxvd0NsZWFyXCJcclxuICAgICAgICAgICAgICAgIFtvcGVuU3RhdHVzXT1cImRyb3Bkb3duVmlzaWJpbGl0eVwiXHJcbiAgICAgICAgICAgICAgICBbc2VsZWN0ZWRUZXh0XT1cInNlbGVjdGVkVGV4dFwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cclxuICAgICAgICA8L2FuY2hvcj5cclxuICAgICAgICA8ZHJvcGRvd24gI2Ryb3Bkb3duIChkcm9wZG93bkJsdXIpID0gXCJvbkl0ZW1zQmx1cigpXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtpdGVtc109XCJpdGVtc1wiXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tib3hdPVwibXVsdGlTZWxlY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgW2ZpbHRlckJveF09XCJmaWx0ZXJCb3hcIlxyXG4gICAgICAgICAgICAgICAgW2Zvcm1hdE51bWJlcl09XCJmb3JtYXROdW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgW3N1ZmZpeFRleHRdPVwic3VmZml4VGV4dFwiXHJcbiAgICAgICAgICAgICAgICBbKHNlbGVjdGVkVmFsdWUpXT1cInNlbGVjdGVkVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKGl0ZW1DbGljaykgPSBcIm9uSXRlbUNsaWNrKClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICAgICAgPC9kcm9wZG93bj5cclxuICAgIDwvc3Bhbj5cclxuICBgLFxyXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkxpc3RDb21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGRyb3Bkb3duUmVmOiBFbGVtZW50UmVmO1xyXG5cclxuICAvKipcclxuICAgKiBiaW5kIHRvIFtwbGFjZUhvbGRlcl0gZm9yIGRpc3BsYXlpbmcgdGhlIHBsYWNlIGhvbGRlciBzdHJpbmcgb2YgdGhlIGFuY2hvci5cclxuICAgKi9cclxuICBASW5wdXQoKSBwbGFjZUhvbGRlcjogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIGJpbmQgdG8gW2l0ZW1zXSBmb3IgdGhlIG9wdGlvbnMvZ3JvdXBzIGluIHRoZSBkcm9wZG93blxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnlbXTtcclxuICAvKipcclxuICAgKiBiaW5kIHRvIFttdWx0aVNlbGVjdGlvbl0sIHRoZSBmbGFnIGZvciBtdWx0aS1zZWxlY3QgKGNoZWNrYm94KSBtb2RlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG11bHRpU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgLyoqXHJcbiAgICogYmluZCB0byBbc2VsZWN0ZWRWYWx1ZV0gZm9yIHRoZSB2YWx1ZSBvZiB0aGUgc2VsZWN0ZWQgb3B0aW9uIGZyb20gZHJvcGRvd25cclxuICAgKi9cclxuICBASW5wdXQoKSBzZWxlY3RlZFZhbHVlOiBhbnk7XHJcbiAgLyoqXHJcbiAgICogYmluZCB0byBbZmlsdGVyQm94XSBmb3IgZGlzcGxheWluZyB0aGUgZmlsdGVyIGlucHV0IHRleHQgYm94XHJcbiAgICovXHJcbiAgQElucHV0KCkgZmlsdGVyQm94ID0gZmFsc2U7XHJcbiAgLyoqXHJcbiAgICogYmluZCB0byBbc3VmZml4VGV4dF0gZm9yIGRpc3BsYXlpbmcgdGhlIHN1ZmZpeCBvZiB0aGUgc2VsZWN0ZWQgdGV4dCBvZiBhbmNob3JcclxuICAgKi9cclxuICBASW5wdXQoKSBzdWZmaXhUZXh0OiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogYmluZCB0byBbZGlzYWJsZWRdIGZvciBkaXNhYmxpbmcgdGhlIGRyb3Bkb3duXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogYmluZCB0byBbYWxsb3dDbGVhcl0gZm9yIGVuYWJsaW5nIHRoZSBjbGVhcmFuY2UgKGNsZWFyYW5jZSBpcyBub3QgYXZhaWFibGUgd2hlbiBjaGVja2JveCBpcyBlbmFibGVkKVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFsbG93Q2xlYXIgPSB0cnVlO1xyXG4gIC8qKlxyXG4gICAqIGJpbmQgdG8gW2Zvcm1hdE51bWJlcl0gZm9yIHNob3cgZm9ybWF0dGVkIG51bWJlciB0ZXh0XHJcbiAgICovXHJcbiAgQElucHV0KCkgZm9ybWF0TnVtYmVyID0gZmFsc2U7XHJcbiAgLyoqXHJcbiAgICogZm9yIDItd2F5IGJpbmRpbmcgb2YgW3NlbGVjdGVkVmFsdWVdLCB1c2luZyBhc3luYyBldmVudCB0b1xyXG4gICAqIHByZXZlbnQgXCJFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXCIuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4odHJ1ZSk7XHJcbiAgLyoqXHJcbiAgICogW3NlbGVjdGlvbkNoYW5nZV0gZXZlbnQgdGhhdCB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIGNoYW5naW5nIG9mIHRoZSBzZWxlY3Rpb24uXHJcbiAgICogVXNpbmcgYXN5bmMgZXZlbnQgdG8gcHJldmVudCBcIkV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcIi5cclxuICAgKi9cclxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KHRydWUpO1xyXG5cclxuICAvKipcclxuICAgKiB2aXNpYmlsaXR5IGZsYWcgb2YgZHJvcCBkb3duXHJcbiAgICovXHJcbiAgZHJvcGRvd25WaXNpYmlsaXR5ID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIGN1cnJlbnQgc2VsZWN0ZWQgdGV4dFxyXG4gICAqL1xyXG4gIGdldCBzZWxlY3RlZFRleHQoKTogYW55IHtcclxuICAgIGlmICghdGhpcy5tdWx0aVNlbGVjdGlvbikge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSBnZXRGaXJzdFNlbGVjdGVkSXRlbSh0aGlzLml0ZW1zKTtcclxuICAgICAgcmV0dXJuIHNlbGVjdGVkSXRlbSA/IHNlbGVjdGVkSXRlbS50ZXh0IDogdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogdHJpZ2dlcmVkIHdpdGggKHNlbGVjdGlvbkNoYW5nZSkgZXZlbnQsIGVtaXRzIChzZWxlY3RlZFZhbHVlQ2hhbmdlKSBhbmQgKHNlbGVjdGlvbkNoYW5nZSlcclxuICAgKi9cclxuICBvblNlbGVjdGlvbkNoYW5nZShldmVudCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlQ2hhbmdlLmVtaXQoZXZlbnQpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiB0cmlnZ2VyZWQgd2l0aCAoYW5jaG9yQ2xpY2spIGV2ZW50LCBjb250cm9sbGluZyB0aGUgXCJvcGVuXCIgYW5kIFwiY2xvc2VcIiBvZiB0aGUgZHJvcGRvd25cclxuICAgKi9cclxuICBvbkFuY2hvckNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgc3RvcFByb3BhZ2F0aW9uQW5kRGVmYXVsdChldmVudCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9pc1NlbGVjdGlvbk9wZW4oKSkge1xyXG4gICAgICB0aGlzLl9oaWRlSXRlbUxpc3QoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3Nob3dJdGVtc0xpc3QoKTtcclxuICAgIH1cclxuICAgIHN0b3BQcm9wYWdhdGlvbkFuZERlZmF1bHQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogdHJpZ2dlcmVkIHdpdGggKGl0ZW1DbGljaykgZXZlbnQsIGNsb3NlcyB0aGUgZHJvcGRvd24gaW4gbm9uLWNoZWNrYm94IG1vZGVcclxuICAgKi9cclxuICBvbkl0ZW1DbGljaygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5tdWx0aVNlbGVjdGlvbikge1xyXG4gICAgICB0aGlzLl9oaWRlSXRlbUxpc3QoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHRyaWdnZXJlZCB3aXRoIChjbGVhcmFuY2VDbGljaykgZXZlbnQsIGNsZWFyaW5nIGFsbCBzZWxlY3Rpb25zXHJcbiAgICogYW5kIGVtaXRzIChzZWxlY3RlZFZhbHVlQ2hhbmdlKSBhbmQgKHNlbGVjdGlvbkNoYW5nZSkgZXZlbnQgZm9yIGVtcHR5IHZhbHVlXHJcbiAgICovXHJcbiAgb25DbGVhcmFuY2VDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5tdWx0aVNlbGVjdGlvbikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB2b2lkIDA7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZUNoYW5nZS5lbWl0KHVuZGVmaW5lZCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodW5kZWZpbmVkKTtcclxuICAgICAgY2xlYXJBbGxTZWxlY3Rpb24odGhpcy5pdGVtcyk7XHJcbiAgICB9XHJcbiAgICBzdG9wUHJvcGFnYXRpb25BbmREZWZhdWx0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHRyaWdnZXJlZCB3aXRoIChkcm9wZG93bkJsdXIpIGV2ZW50LCBjbG9zZXMgdGhlIGRyb3Bkb3duXHJcbiAgICovXHJcbiAgb25JdGVtc0JsdXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5faXNTZWxlY3Rpb25PcGVuKCkpIHtcclxuICAgICAgdGhpcy5faGlkZUl0ZW1MaXN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBjbG9zZSB0aGUgZHJvcGRvd25cclxuICAgKi9cclxuICBwcml2YXRlIF9oaWRlSXRlbUxpc3QoKTogdm9pZCB7XHJcbiAgICAvLyBoaWRlIHRoZSBkcm9wZG93biBlbGVtZW50IChoYXMgc29tZSBwcm9ibGVtIGZvciB1c2luZyBDU1MgZGlyZWN0bHksIHVzaW5nIHRoaXMgYXMgYSB3b3JrYXJvdW5kKVxyXG4gICAgdGhpcy5fZHJvcGRvd25FbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3Zpc2libGUnKTtcclxuICAgIHRoaXMuX2Ryb3Bkb3duRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgdGhpcy5kcm9wZG93blZpc2liaWxpdHkgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIG9wZW4gdGhlIGRyb3Bkb3duXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfc2hvd0l0ZW1zTGlzdCgpOiB2b2lkIHtcclxuICAgIC8vIGRpc3BsYXkgdGhlIGRyb3Bkb3duIGVsZW1lbnQgKGhhcyBzb21lIHByb2JsZW0gZm9yIHVzaW5nIENTUyBkaXJlY3RseSwgdXNpbmcgdGhpcyBhcyBhIHdvcmthcm91bmQpXHJcbiAgICB0aGlzLl9kcm9wZG93bkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndmlzaWJsZScpO1xyXG4gICAgdGhpcy5fZHJvcGRvd25FbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xyXG5cclxuICAgIHRoaXMuZHJvcGRvd25WaXNpYmlsaXR5ID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBzY3JvbGxpbmcgdG8gdGhlIHNlbGVjdGVkIGl0ZW1cclxuICAgIGlmICh0aGlzLl9zZWxlY3RlZEVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdhdXRvJywgYmxvY2s6ICdjZW50ZXInIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHNldHRpbmcgdGhlIGZvY3VzXHJcbiAgICBpZiAodGhpcy5maWx0ZXJCb3ggJiYgIXRoaXMubXVsdGlTZWxlY3Rpb24pIHtcclxuICAgICAgdGhpcy5fZmlsdGVySW5wdXRFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9kcm9wZG93bkVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHZpc2liaWxpdHkgc3RhdHVzIG9mIGRyb3Bkb3duXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfaXNTZWxlY3Rpb25PcGVuKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZHJvcGRvd25WaXNpYmlsaXR5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ2V0IHRoZSByZWFsIGRyb3Bkb3duIGVsZW1lbnQgKGZvciBmb2N1c2luZyBhbmQgdmlzaWJpbGl0eSBjb250cm9sbGluZyksIHRoZSA8c3Bhbj4gbm90IHRoZSA8ZHJvcGRvd24+XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXQgX2Ryb3Bkb3duRWxlbWVudCgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuZHJvcGRvd25SZWYgPyB0aGlzLmRyb3Bkb3duUmVmLm5hdGl2ZUVsZW1lbnQgPyB0aGlzLmRyb3Bkb3duUmVmLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQgOiBudWxsIDogbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGdldCB0aGUgcmVhbCBmaWx0ZXIgZWxlbWVudCAoZm9yIGZvY3VzaW5nKSwgdGhlIDxpbnB1dD4gbm90IHRoZSA8aW5wdXQtZmlsdGVyPlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0IF9maWx0ZXJJbnB1dEVsZW1lbnQoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLl9kcm9wZG93bkVsZW1lbnQgP1xyXG4gICAgICB0aGlzLl9kcm9wZG93bkVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQgPyB0aGlzLl9kcm9wZG93bkVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuZmlyc3RFbGVtZW50Q2hpbGQgOiBudWxsIDogbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGdldCB0aGUgSFRNTEVsZW1lbnQgb2Ygc2VsZWN0ZWQgaXRlbSwgZm9yIGRvaW5nIChzY3JvbGxJbnRvVmlldykgc2Nyb2xsaW5nIHRvIHRoZSBzZWxlY3RlZCBpdGVtXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXQgX3NlbGVjdGVkRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XHJcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSBnZXRGaXJzdFNlbGVjdGVkSXRlbSh0aGlzLml0ZW1zKTtcclxuICAgIHJldHVybiBzZWxlY3RlZEl0ZW0gPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWxlY3RlZEl0ZW0uaWQpIGFzIEhUTUxFbGVtZW50IDogdW5kZWZpbmVkO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { ItemComponent } from './item/item.component';
5
+ import { GroupItemComponent } from './group-item/group-item.component';
6
+ import { InputFilterComponent } from './filter/input-filter.component';
7
+ import { AnchorComponent } from './anchor/anchor.component';
8
+ import { DropdownComponent } from './dropdown/dropdown.component';
9
+ import { DropdownListComponent } from './dropdown-list.component';
10
+ import * as i0 from "@angular/core";
11
+ export class DropdownListModule {
12
+ }
13
+ DropdownListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DropdownListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ DropdownListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DropdownListModule, declarations: [DropdownListComponent,
15
+ ItemComponent,
16
+ GroupItemComponent,
17
+ InputFilterComponent,
18
+ AnchorComponent,
19
+ DropdownComponent], imports: [CommonModule, FormsModule], exports: [DropdownListComponent] });
20
+ DropdownListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DropdownListModule, providers: [], imports: [[CommonModule, FormsModule]] });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DropdownListModule, decorators: [{
22
+ type: NgModule,
23
+ args: [{
24
+ declarations: [
25
+ DropdownListComponent,
26
+ ItemComponent,
27
+ GroupItemComponent,
28
+ InputFilterComponent,
29
+ AnchorComponent,
30
+ DropdownComponent
31
+ ],
32
+ exports: [DropdownListComponent],
33
+ imports: [CommonModule, FormsModule],
34
+ providers: [],
35
+ bootstrap: [],
36
+ }]
37
+ }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbGlzdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LWRyb3Bkb3duLWxpc3QvZHJvcGRvd24tbGlzdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBZ0JsRSxNQUFNLE9BQU8sa0JBQWtCOztnSEFBbEIsa0JBQWtCO2lIQUFsQixrQkFBa0IsaUJBWjNCLHFCQUFxQjtRQUNyQixhQUFhO1FBQ2Isa0JBQWtCO1FBQ2xCLG9CQUFvQjtRQUNwQixlQUFlO1FBQ2YsaUJBQWlCLGFBR1IsWUFBWSxFQUFFLFdBQVcsYUFEekIscUJBQXFCO2lIQUtyQixrQkFBa0IsYUFIbEIsRUFBRSxZQURKLENBQUUsWUFBWSxFQUFFLFdBQVcsQ0FBRTs0RkFJM0Isa0JBQWtCO2tCQWQ5QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixxQkFBcUI7d0JBQ3JCLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2YsaUJBQWlCO3FCQUNsQjtvQkFDRCxPQUFPLEVBQUUsQ0FBRSxxQkFBcUIsQ0FBQztvQkFDakMsT0FBTyxFQUFFLENBQUUsWUFBWSxFQUFFLFdBQVcsQ0FBRTtvQkFDdEMsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsU0FBUyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vaXRlbS9pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdyb3VwSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZ3JvdXAtaXRlbS9ncm91cC1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElucHV0RmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXIvaW5wdXQtZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFuY2hvckNvbXBvbmVudCB9IGZyb20gJy4vYW5jaG9yL2FuY2hvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRHJvcGRvd25MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9kcm9wZG93bi1saXN0LmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgRHJvcGRvd25MaXN0Q29tcG9uZW50LFxyXG4gICAgSXRlbUNvbXBvbmVudCxcclxuICAgIEdyb3VwSXRlbUNvbXBvbmVudCxcclxuICAgIElucHV0RmlsdGVyQ29tcG9uZW50LFxyXG4gICAgQW5jaG9yQ29tcG9uZW50LFxyXG4gICAgRHJvcGRvd25Db21wb25lbnRcclxuICBdLFxyXG4gIGV4cG9ydHM6IFsgRHJvcGRvd25MaXN0Q29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbIENvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUgXSxcclxuICBwcm92aWRlcnM6IFtdLFxyXG4gIGJvb3RzdHJhcDogW10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkxpc3RNb2R1bGUge31cclxuIl19
@@ -0,0 +1,44 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/forms";
4
+ export class InputFilterComponent {
5
+ constructor() {
6
+ /**
7
+ * bind to [inputFilterBlur], emits with (blur) of filter input box
8
+ */
9
+ this.inputFilterBlur = new EventEmitter();
10
+ /**
11
+ * bind to [filterValueChange], for 2-way binding of filterValue
12
+ */
13
+ this.filterValueChange = new EventEmitter();
14
+ }
15
+ /**
16
+ * triggers with (blur) event, emits the (inputFilterBlur) event
17
+ */
18
+ onFilterTextBlur(event) {
19
+ this.inputFilterBlur.emit(event);
20
+ }
21
+ /**
22
+ * triggers with (input) event, emits the (filterValueChange) event for 2-way binding of filterValue
23
+ */
24
+ onChange() {
25
+ this.filterValueChange.emit(this.filterValue);
26
+ }
27
+ }
28
+ InputFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: InputFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
+ InputFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: InputFilterComponent, selector: "input-filter", inputs: { filterValue: "filterValue" }, outputs: { inputFilterBlur: "inputFilterBlur", filterValueChange: "filterValueChange" }, ngImport: i0, template: `
30
+ <input type="text" class="filter-box" [(ngModel)]="filterValue" (input)="onChange()" (blur)="onFilterTextBlur($event)">
31
+ `, isInline: true, styles: ["*,*:before,*:after{font-size:inherit;font-weight:inherit;font-family:inherit;box-sizing:inherit;background:inherit}.filter-box{width:calc(100% - 10px);height:28px;border-radius:4px;border:1px solid #ccc;margin:1px 5px 5px;padding-left:5px;font-size:12px;box-sizing:border-box;color:#495057}.filter-box:focus{outline:0;border-color:#ccc}\n"], directives: [{ 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]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: InputFilterComponent, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: 'input-filter', template: `
35
+ <input type="text" class="filter-box" [(ngModel)]="filterValue" (input)="onChange()" (blur)="onFilterTextBlur($event)">
36
+ `, styles: ["*,*:before,*:after{font-size:inherit;font-weight:inherit;font-family:inherit;box-sizing:inherit;background:inherit}.filter-box{width:calc(100% - 10px);height:28px;border-radius:4px;border:1px solid #ccc;margin:1px 5px 5px;padding-left:5px;font-size:12px;box-sizing:border-box;color:#495057}.filter-box:focus{outline:0;border-color:#ccc}\n"] }]
37
+ }], propDecorators: { filterValue: [{
38
+ type: Input
39
+ }], inputFilterBlur: [{
40
+ type: Output
41
+ }], filterValueChange: [{
42
+ type: Output
43
+ }] } });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9uZ3gtZHJvcGRvd24tbGlzdC9maWx0ZXIvaW5wdXQtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7QUFVckUsTUFBTSxPQUFPLG9CQUFvQjtJQVJqQztRQWFFOztXQUVHO1FBQ08sb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3ZEOztXQUVHO1FBQ08sc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQWUxRDtJQWJDOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsS0FBSztRQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs7a0hBMUJVLG9CQUFvQjtzR0FBcEIsb0JBQW9CLHFMQU5yQjs7R0FFVDs0RkFJVSxvQkFBb0I7a0JBUmhDLFNBQVM7K0JBQ0UsY0FBYyxZQUNkOztHQUVUOzhCQVFRLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUksZUFBZTtzQkFBeEIsTUFBTTtnQkFJRyxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaW5wdXQtZmlsdGVyJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmaWx0ZXItYm94XCIgWyhuZ01vZGVsKV09XCJmaWx0ZXJWYWx1ZVwiIChpbnB1dCk9XCJvbkNoYW5nZSgpXCIgKGJsdXIpPVwib25GaWx0ZXJUZXh0Qmx1cigkZXZlbnQpXCI+XHJcbiAgYCxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIElucHV0RmlsdGVyQ29tcG9uZW50IHtcclxuICAvKipcclxuICAgKiBiaW5kIHRvIFtmaWx0ZXJWYWx1ZV0sIHRoZSB2YWx1ZSBvZiB0aGUgZmlsdGVyXHJcbiAgICovXHJcbiAgQElucHV0KCkgZmlsdGVyVmFsdWU6IHN0cmluZztcclxuICAvKipcclxuICAgKiBiaW5kIHRvIFtpbnB1dEZpbHRlckJsdXJdLCBlbWl0cyB3aXRoIChibHVyKSBvZiBmaWx0ZXIgaW5wdXQgYm94XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGlucHV0RmlsdGVyQmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIC8qKlxyXG4gICAqIGJpbmQgdG8gW2ZpbHRlclZhbHVlQ2hhbmdlXSwgZm9yIDItd2F5IGJpbmRpbmcgb2YgZmlsdGVyVmFsdWVcclxuICAgKi9cclxuICBAT3V0cHV0KCkgZmlsdGVyVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogdHJpZ2dlcnMgd2l0aCAoYmx1cikgZXZlbnQsIGVtaXRzIHRoZSAoaW5wdXRGaWx0ZXJCbHVyKSBldmVudFxyXG4gICAqL1xyXG4gIG9uRmlsdGVyVGV4dEJsdXIoZXZlbnQpIHtcclxuICAgIHRoaXMuaW5wdXRGaWx0ZXJCbHVyLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogdHJpZ2dlcnMgd2l0aCAoaW5wdXQpIGV2ZW50LCBlbWl0cyB0aGUgKGZpbHRlclZhbHVlQ2hhbmdlKSBldmVudCBmb3IgMi13YXkgYmluZGluZyBvZiBmaWx0ZXJWYWx1ZVxyXG4gICAqL1xyXG4gIG9uQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KHRoaXMuZmlsdGVyVmFsdWUpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,25 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class GroupItemComponent {
4
+ /**
5
+ * prevent all clicking event from happening
6
+ */
7
+ onItemGroupClick(event) {
8
+ event.stopImmediatePropagation();
9
+ event.stopPropagation();
10
+ event.preventDefault();
11
+ }
12
+ }
13
+ GroupItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GroupItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
+ GroupItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: GroupItemComponent, selector: "group-item", inputs: { item: "item" }, ngImport: i0, template: `
15
+ <label class="dropdown-item dropdown-item-group" (mousedown)="onItemGroupClick($event)">{{item.group}}</label>
16
+ `, isInline: true, styles: ["*,*:before,*:after{font-size:inherit;font-weight:inherit;font-family:inherit;box-sizing:inherit;background:inherit}.dropdown-item,.container-selection,.container-selection-selected,.container-checkbox{background:transparent;display:list-item;list-style:none;position:relative;width:100%;height:auto;cursor:pointer;color:#495057;padding-bottom:5px;padding-top:5px;padding-left:12px}.container-checkbox{padding-left:35px}.container-checkbox input{position:absolute;opacity:0;cursor:pointer}.container-checkbox .checkmark{position:absolute;top:5px;left:10px;height:15px;width:15px;border:1px solid rgba(0,0,0,.3);background-color:#fff;border-radius:4px}.container-checkbox .checkmark:after{content:\"\";position:absolute;display:none;left:5px;top:2px;width:4px;height:7px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}.container-checkbox:hover input~.checkmark{background-color:#ccc}.container-checkbox input:checked~.checkmark{background-color:#2196f3;border:1px solid #2196F3}.container-checkbox input:checked~.checkmark:after{display:block}.container-checkbox:hover{color:#66afe9}.container-selection,.container-selection-selected{padding-left:12px}.container-selection:hover,.container-selection-selected:hover{color:#495057;background:lightcyan}.container-selection-selected{color:#fff;background:cornflowerblue}.dropdown-item-group{font-weight:700}.dropdown-item-group:hover{cursor:default}\n"] });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GroupItemComponent, decorators: [{
18
+ type: Component,
19
+ args: [{ selector: 'group-item', template: `
20
+ <label class="dropdown-item dropdown-item-group" (mousedown)="onItemGroupClick($event)">{{item.group}}</label>
21
+ `, styles: ["*,*:before,*:after{font-size:inherit;font-weight:inherit;font-family:inherit;box-sizing:inherit;background:inherit}.dropdown-item,.container-selection,.container-selection-selected,.container-checkbox{background:transparent;display:list-item;list-style:none;position:relative;width:100%;height:auto;cursor:pointer;color:#495057;padding-bottom:5px;padding-top:5px;padding-left:12px}.container-checkbox{padding-left:35px}.container-checkbox input{position:absolute;opacity:0;cursor:pointer}.container-checkbox .checkmark{position:absolute;top:5px;left:10px;height:15px;width:15px;border:1px solid rgba(0,0,0,.3);background-color:#fff;border-radius:4px}.container-checkbox .checkmark:after{content:\"\";position:absolute;display:none;left:5px;top:2px;width:4px;height:7px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}.container-checkbox:hover input~.checkmark{background-color:#ccc}.container-checkbox input:checked~.checkmark{background-color:#2196f3;border:1px solid #2196F3}.container-checkbox input:checked~.checkmark:after{display:block}.container-checkbox:hover{color:#66afe9}.container-selection,.container-selection-selected{padding-left:12px}.container-selection:hover,.container-selection-selected:hover{color:#495057;background:lightcyan}.container-selection-selected{color:#fff;background:cornflowerblue}.dropdown-item-group{font-weight:700}.dropdown-item-group:hover{cursor:default}\n"] }]
22
+ }], propDecorators: { item: [{
23
+ type: Input
24
+ }] } });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbmd4LWRyb3Bkb3duLWxpc3QvZ3JvdXAtaXRlbS9ncm91cC1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFXL0MsTUFBTSxPQUFPLGtCQUFrQjtJQU03Qjs7T0FFRztJQUNILGdCQUFnQixDQUFDLEtBQUs7UUFDcEIsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDakMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDOztnSEFiVSxrQkFBa0I7b0dBQWxCLGtCQUFrQiw0RUFObkI7O0dBRVQ7NEZBSVUsa0JBQWtCO2tCQVI5QixTQUFTOytCQUNFLFlBQVksWUFDWjs7R0FFVDs4QkFRUSxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1NlbGVjdGlvbkdyb3VwSXRlbXN9IGZyb20gJy4uL3R5cGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZ3JvdXAtaXRlbScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxsYWJlbCBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZHJvcGRvd24taXRlbS1ncm91cFwiIChtb3VzZWRvd24pPVwib25JdGVtR3JvdXBDbGljaygkZXZlbnQpXCI+e3tpdGVtLmdyb3VwfX08L2xhYmVsPlxyXG4gIGAsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3JvdXAtaXRlbS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgR3JvdXBJdGVtQ29tcG9uZW50IHtcclxuICAvKipcclxuICAgKiBiaW5kIHRvIFtpdGVtXSwgdGhlIGdyb3VwIGl0ZW0gb2YgZHJvcGRvd25cclxuICAgKi9cclxuICBASW5wdXQoKSBpdGVtOiBTZWxlY3Rpb25Hcm91cEl0ZW1zO1xyXG5cclxuICAvKipcclxuICAgKiBwcmV2ZW50IGFsbCBjbGlja2luZyBldmVudCBmcm9tIGhhcHBlbmluZ1xyXG4gICAqL1xyXG4gIG9uSXRlbUdyb3VwQ2xpY2soZXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './dropdown-list.component';
2
+ export * from './dropdown-list.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LWRyb3Bkb3duLWxpc3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kcm9wZG93bi1saXN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZHJvcGRvd24tbGlzdC5tb2R1bGUnO1xyXG4iXX0=
@@ -0,0 +1,77 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { isNumber } from '../utils/util';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class ItemComponent {
6
+ constructor() {
7
+ /**
8
+ * bind to [formatNumber], the flag for formatting the number
9
+ */
10
+ this.formatNumber = false;
11
+ /**
12
+ * bind to [itemClick] event, triggers when clicking the item of dropdown
13
+ */
14
+ this.itemClick = new EventEmitter();
15
+ /**
16
+ * bind to [checkStatusChange] event, triggers when check status is changed in checkbox mode.
17
+ */
18
+ this.checkStatusChange = new EventEmitter();
19
+ }
20
+ /**
21
+ * check whether needs to format number for the provided text
22
+ */
23
+ needFormatNumber(value) {
24
+ return isNumber(value) && this.formatNumber;
25
+ }
26
+ /**
27
+ * triggered when clicking the item, emits the [itemClick] event
28
+ */
29
+ onItemClick(item) {
30
+ this.itemClick.emit(item);
31
+ }
32
+ /**
33
+ * triggered when checking status changed in checkbox mode, emits the [checkStatusChange] event
34
+ */
35
+ onCheckStatusChange(item) {
36
+ this.checkStatusChange.emit(item);
37
+ }
38
+ }
39
+ ItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
40
+ ItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ItemComponent, selector: "item", inputs: { checkbox: "checkbox", item: "item", formatNumber: "formatNumber", suffixText: "suffixText" }, outputs: { itemClick: "itemClick", checkStatusChange: "checkStatusChange" }, ngImport: i0, template: `
41
+ <label [class.container-checkbox]="checkbox"
42
+ [class.container-selection]="!checkbox && !item.selected"
43
+ [class.container-selection-selected]="!checkbox && item.selected"
44
+ [id]="item.id" (mousedown)="onItemClick(item)">
45
+ {{needFormatNumber(item.text)? (item.text | number:'1.0-2') : item.text}}{{suffixText? suffixText : ''}}
46
+ <ng-container *ngIf="checkbox">
47
+ <input type='checkbox' [id]="'checkbox-'+item.text" (change)="onCheckStatusChange(item)" [checked]="item.selected">
48
+ <span class="checkmark" [id]="'checkmark-'+item.text"></span>
49
+ </ng-container>
50
+ </label>`, isInline: true, styles: ["*,*:before,*:after{font-size:inherit;font-weight:inherit;font-family:inherit;box-sizing:inherit;background:inherit}.dropdown-item,.container-selection,.container-selection-selected,.container-checkbox{background:transparent;display:list-item;list-style:none;position:relative;width:100%;height:auto;cursor:pointer;color:#495057;padding-bottom:5px;padding-top:5px;padding-left:12px}.container-checkbox{padding-left:35px}.container-checkbox input{position:absolute;opacity:0;cursor:pointer}.container-checkbox .checkmark{position:absolute;top:5px;left:10px;height:15px;width:15px;border:1px solid rgba(0,0,0,.3);background-color:#fff;border-radius:4px}.container-checkbox .checkmark:after{content:\"\";position:absolute;display:none;left:5px;top:2px;width:4px;height:7px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}.container-checkbox:hover input~.checkmark{background-color:#ccc}.container-checkbox input:checked~.checkmark{background-color:#2196f3;border:1px solid #2196F3}.container-checkbox input:checked~.checkmark:after{display:block}.container-checkbox:hover{color:#66afe9}.container-selection,.container-selection-selected{padding-left:12px}.container-selection:hover,.container-selection-selected:hover{color:#495057;background:lightcyan}.container-selection-selected{color:#fff;background:cornflowerblue}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "number": i1.DecimalPipe } });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ItemComponent, decorators: [{
52
+ type: Component,
53
+ args: [{ selector: 'item', template: `
54
+ <label [class.container-checkbox]="checkbox"
55
+ [class.container-selection]="!checkbox && !item.selected"
56
+ [class.container-selection-selected]="!checkbox && item.selected"
57
+ [id]="item.id" (mousedown)="onItemClick(item)">
58
+ {{needFormatNumber(item.text)? (item.text | number:'1.0-2') : item.text}}{{suffixText? suffixText : ''}}
59
+ <ng-container *ngIf="checkbox">
60
+ <input type='checkbox' [id]="'checkbox-'+item.text" (change)="onCheckStatusChange(item)" [checked]="item.selected">
61
+ <span class="checkmark" [id]="'checkmark-'+item.text"></span>
62
+ </ng-container>
63
+ </label>`, styles: ["*,*:before,*:after{font-size:inherit;font-weight:inherit;font-family:inherit;box-sizing:inherit;background:inherit}.dropdown-item,.container-selection,.container-selection-selected,.container-checkbox{background:transparent;display:list-item;list-style:none;position:relative;width:100%;height:auto;cursor:pointer;color:#495057;padding-bottom:5px;padding-top:5px;padding-left:12px}.container-checkbox{padding-left:35px}.container-checkbox input{position:absolute;opacity:0;cursor:pointer}.container-checkbox .checkmark{position:absolute;top:5px;left:10px;height:15px;width:15px;border:1px solid rgba(0,0,0,.3);background-color:#fff;border-radius:4px}.container-checkbox .checkmark:after{content:\"\";position:absolute;display:none;left:5px;top:2px;width:4px;height:7px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}.container-checkbox:hover input~.checkmark{background-color:#ccc}.container-checkbox input:checked~.checkmark{background-color:#2196f3;border:1px solid #2196F3}.container-checkbox input:checked~.checkmark:after{display:block}.container-checkbox:hover{color:#66afe9}.container-selection,.container-selection-selected{padding-left:12px}.container-selection:hover,.container-selection-selected:hover{color:#495057;background:lightcyan}.container-selection-selected{color:#fff;background:cornflowerblue}\n"] }]
64
+ }], propDecorators: { checkbox: [{
65
+ type: Input
66
+ }], item: [{
67
+ type: Input
68
+ }], formatNumber: [{
69
+ type: Input
70
+ }], suffixText: [{
71
+ type: Input
72
+ }], itemClick: [{
73
+ type: Output
74
+ }], checkStatusChange: [{
75
+ type: Output
76
+ }] } });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbmd4LWRyb3Bkb3duLWxpc3QvaXRlbS9pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXJFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7OztBQWtCdkMsTUFBTSxPQUFPLGFBQWE7SUFoQjFCO1FBeUJFOztXQUVHO1FBQ00saUJBQVksR0FBRyxLQUFLLENBQUM7UUFLOUI7O1dBRUc7UUFDTyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNqRDs7V0FFRztRQUNPLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0FzQjFEO0lBcEJDOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsS0FBVTtRQUN6QixPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxJQUFJO1FBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CLENBQUMsSUFBSTtRQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OzJHQTdDVSxhQUFhOytGQUFiLGFBQWEsaU9BZGQ7Ozs7Ozs7Ozs7YUFVQzs0RkFJQSxhQUFhO2tCQWhCekIsU0FBUzsrQkFDRSxNQUFNLFlBQ047Ozs7Ozs7Ozs7YUFVQzs4QkFRRixRQUFRO3NCQUFoQixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUksU0FBUztzQkFBbEIsTUFBTTtnQkFJRyxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtTZWxlY3Rpb25JdGVtfSBmcm9tICcuLi90eXBlcyc7XHJcbmltcG9ydCB7aXNOdW1iZXJ9IGZyb20gJy4uL3V0aWxzL3V0aWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpdGVtJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGxhYmVsIFtjbGFzcy5jb250YWluZXItY2hlY2tib3hdPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgIFtjbGFzcy5jb250YWluZXItc2VsZWN0aW9uXT1cIiFjaGVja2JveCAmJiAhaXRlbS5zZWxlY3RlZFwiXHJcbiAgICAgICAgICAgW2NsYXNzLmNvbnRhaW5lci1zZWxlY3Rpb24tc2VsZWN0ZWRdPVwiIWNoZWNrYm94ICYmIGl0ZW0uc2VsZWN0ZWRcIlxyXG4gICAgICAgICAgIFtpZF09XCJpdGVtLmlkXCIgKG1vdXNlZG93bik9XCJvbkl0ZW1DbGljayhpdGVtKVwiPlxyXG4gICAgICB7e25lZWRGb3JtYXROdW1iZXIoaXRlbS50ZXh0KT8gKGl0ZW0udGV4dCB8IG51bWJlcjonMS4wLTInKSA6IGl0ZW0udGV4dH19e3tzdWZmaXhUZXh0PyBzdWZmaXhUZXh0IDogJyd9fVxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hlY2tib3hcIj5cclxuICAgICAgICA8aW5wdXQgdHlwZT0nY2hlY2tib3gnIFtpZF09XCInY2hlY2tib3gtJytpdGVtLnRleHRcIiAoY2hhbmdlKT1cIm9uQ2hlY2tTdGF0dXNDaGFuZ2UoaXRlbSlcIiBbY2hlY2tlZF09XCJpdGVtLnNlbGVjdGVkXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVja21hcmtcIiBbaWRdPVwiJ2NoZWNrbWFyay0nK2l0ZW0udGV4dFwiPjwvc3Bhbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2xhYmVsPmAsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaXRlbS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgSXRlbUNvbXBvbmVudCB7XHJcbiAgLyoqXHJcbiAgICogYmluZCB0byBbY2hlY2tib3hdLCB0aGUgZmxhZyBvZiBjaGVja2JveCBtb2RlXHJcbiAgICovXHJcbiAgQElucHV0KCkgY2hlY2tib3g6IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogYmluZCB0byBbaXRlbV0sIHRoZSBkcm9wZG93biBvcHRpb24gaXRlbVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGl0ZW06IFNlbGVjdGlvbkl0ZW07XHJcbiAgLyoqXHJcbiAgICogYmluZCB0byBbZm9ybWF0TnVtYmVyXSwgdGhlIGZsYWcgZm9yIGZvcm1hdHRpbmcgdGhlIG51bWJlclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGZvcm1hdE51bWJlciA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIGJpbmQgdG8gW3N1ZmZpeFRleHRdLCB0aGUgc3VmZml4VGV4dCB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIGluIHRoZSBkcm9wZG93blxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHN1ZmZpeFRleHQ6IHN0cmluZztcclxuICAvKipcclxuICAgKiBiaW5kIHRvIFtpdGVtQ2xpY2tdIGV2ZW50LCB0cmlnZ2VycyB3aGVuIGNsaWNraW5nIHRoZSBpdGVtIG9mIGRyb3Bkb3duXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIC8qKlxyXG4gICAqIGJpbmQgdG8gW2NoZWNrU3RhdHVzQ2hhbmdlXSBldmVudCwgdHJpZ2dlcnMgd2hlbiBjaGVjayBzdGF0dXMgaXMgY2hhbmdlZCBpbiBjaGVja2JveCBtb2RlLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBjaGVja1N0YXR1c0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAvKipcclxuICAgKiBjaGVjayB3aGV0aGVyIG5lZWRzIHRvIGZvcm1hdCBudW1iZXIgZm9yIHRoZSBwcm92aWRlZCB0ZXh0XHJcbiAgICovXHJcbiAgbmVlZEZvcm1hdE51bWJlcih2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gaXNOdW1iZXIodmFsdWUpICYmIHRoaXMuZm9ybWF0TnVtYmVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogdHJpZ2dlcmVkIHdoZW4gY2xpY2tpbmcgdGhlIGl0ZW0sIGVtaXRzIHRoZSBbaXRlbUNsaWNrXSBldmVudFxyXG4gICAqL1xyXG4gIG9uSXRlbUNsaWNrKGl0ZW0pIHtcclxuICAgIHRoaXMuaXRlbUNsaWNrLmVtaXQoaXRlbSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiB0cmlnZ2VyZWQgd2hlbiBjaGVja2luZyBzdGF0dXMgY2hhbmdlZCBpbiBjaGVja2JveCBtb2RlLCBlbWl0cyB0aGUgW2NoZWNrU3RhdHVzQ2hhbmdlXSBldmVudFxyXG4gICAqL1xyXG4gIG9uQ2hlY2tTdGF0dXNDaGFuZ2UoaXRlbSkge1xyXG4gICAgdGhpcy5jaGVja1N0YXR1c0NoYW5nZS5lbWl0KGl0ZW0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './selection-item.types';
2
+ export * from './selection-group-items.types';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbmd4LWRyb3Bkb3duLWxpc3QvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zZWxlY3Rpb24taXRlbS50eXBlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0aW9uLWdyb3VwLWl0ZW1zLnR5cGVzJztcclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWdyb3VwLWl0ZW1zLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25neC1kcm9wZG93bi1saXN0L3R5cGVzL3NlbGVjdGlvbi1ncm91cC1pdGVtcy50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VsZWN0aW9uSXRlbSB9IGZyb20gJy4vc2VsZWN0aW9uLWl0ZW0udHlwZXMnO1xyXG5cclxuLyoqXHJcbiAqIGRyb3Bkb3duIG9wdGlvbiBncm91cCBpdGVtXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdGlvbkdyb3VwSXRlbXMge1xyXG4gIGdyb3VwOiBzdHJpbmc7XHJcbiAgaXRlbXM6IFNlbGVjdGlvbkl0ZW1bXTtcclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWl0ZW0udHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbmd4LWRyb3Bkb3duLWxpc3QvdHlwZXMvc2VsZWN0aW9uLWl0ZW0udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBkcm9wZG93biBvcHRpb24gaXRlbVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3Rpb25JdGVtIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIHZhbHVlPzogYW55O1xyXG4gIHRleHQ6IGFueTtcclxuICBzZWxlY3RlZD86IGJvb2xlYW47XHJcbn1cclxuIl19
@@ -0,0 +1,59 @@
1
+ /**
2
+ * check whether the provided items contains group
3
+ */
4
+ export function hasGroup(items) {
5
+ return items ? (items.find(item => item.group) != null) : false;
6
+ }
7
+ /**
8
+ * clear all selections from the provide items.
9
+ * @param items the dropdown items, can be group or item
10
+ */
11
+ export function clearAllSelection(items) {
12
+ if (hasGroup(items)) {
13
+ for (const groupItem of items) {
14
+ if (groupItem.items) {
15
+ groupItem.items.filter(item => item.selected).forEach(item => item.selected = false);
16
+ }
17
+ }
18
+ }
19
+ else {
20
+ // clear the selection of previous selected item
21
+ items.filter(item => item.selected).forEach(item => item.selected = false);
22
+ }
23
+ }
24
+ /**
25
+ * stop all propagation and default actions
26
+ */
27
+ export function stopPropagationAndDefault(event) {
28
+ event.stopImmediatePropagation();
29
+ event.stopPropagation();
30
+ event.preventDefault();
31
+ }
32
+ /**
33
+ * check whether the provided value is number of not
34
+ */
35
+ export function isNumber(value) {
36
+ return !(value == null || isNaN(value) || value.length === 0);
37
+ }
38
+ /**
39
+ * get the selected item from the items list (including item and group)
40
+ */
41
+ export function getFirstSelectedItem(items) {
42
+ if (!items) {
43
+ return undefined;
44
+ }
45
+ let selectedItem;
46
+ if (hasGroup(items)) {
47
+ for (const item of items) {
48
+ selectedItem = item.items ? item.items.find(subItem => subItem.selected) : undefined;
49
+ if (selectedItem) {
50
+ break;
51
+ }
52
+ }
53
+ }
54
+ else {
55
+ selectedItem = items ? items.find(item => item.selected) : undefined;
56
+ }
57
+ return selectedItem;
58
+ }
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9uZ3gtZHJvcGRvd24tbGlzdC91dGlscy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUFLO0lBQzVCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNsRSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQVU7SUFDMUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDbkIsS0FBSyxNQUFNLFNBQVMsSUFBSSxLQUFLLEVBQUU7WUFDN0IsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFO2dCQUNuQixTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDO2FBQ3RGO1NBQ0Y7S0FDRjtTQUFNO1FBQ0wsZ0RBQWdEO1FBQ2hELEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQztLQUM1RTtBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxLQUFZO0lBQ3BELEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2pDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDekIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUFVO0lBQ2pDLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDaEUsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEtBQVU7SUFDN0MsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBQ0QsSUFBSSxZQUFZLENBQUM7SUFDakIsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDbkIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDeEIsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDckYsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hCLE1BQU07YUFDUDtTQUNGO0tBQ0Y7U0FBTTtRQUNMLFlBQVksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztLQUN0RTtJQUNELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogY2hlY2sgd2hldGhlciB0aGUgcHJvdmlkZWQgaXRlbXMgY29udGFpbnMgZ3JvdXBcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBoYXNHcm91cChpdGVtcyk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiBpdGVtcyA/IChpdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS5ncm91cCkgIT0gbnVsbCkgOiBmYWxzZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIGNsZWFyIGFsbCBzZWxlY3Rpb25zIGZyb20gdGhlIHByb3ZpZGUgaXRlbXMuXHJcbiAqIEBwYXJhbSBpdGVtcyB0aGUgZHJvcGRvd24gaXRlbXMsIGNhbiBiZSBncm91cCBvciBpdGVtXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJBbGxTZWxlY3Rpb24oaXRlbXM6IGFueSk6IHZvaWQge1xyXG4gIGlmIChoYXNHcm91cChpdGVtcykpIHtcclxuICAgIGZvciAoY29uc3QgZ3JvdXBJdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgIGlmIChncm91cEl0ZW0uaXRlbXMpIHtcclxuICAgICAgICBncm91cEl0ZW0uaXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCkuZm9yRWFjaChpdGVtID0+IGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgLy8gY2xlYXIgdGhlIHNlbGVjdGlvbiBvZiBwcmV2aW91cyBzZWxlY3RlZCBpdGVtXHJcbiAgICBpdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLnNlbGVjdGVkKS5mb3JFYWNoKGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCA9IGZhbHNlKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBzdG9wIGFsbCBwcm9wYWdhdGlvbiBhbmQgZGVmYXVsdCBhY3Rpb25zXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc3RvcFByb3BhZ2F0aW9uQW5kRGVmYXVsdChldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG59XHJcblxyXG4vKipcclxuICogY2hlY2sgd2hldGhlciB0aGUgcHJvdmlkZWQgdmFsdWUgaXMgbnVtYmVyIG9mIG5vdFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICByZXR1cm4gISh2YWx1ZSA9PSBudWxsIHx8IGlzTmFOKHZhbHVlKSB8fCB2YWx1ZS5sZW5ndGggPT09IDApO1xyXG59XHJcblxyXG4vKipcclxuICogZ2V0IHRoZSBzZWxlY3RlZCBpdGVtIGZyb20gdGhlIGl0ZW1zIGxpc3QgKGluY2x1ZGluZyBpdGVtIGFuZCBncm91cClcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRGaXJzdFNlbGVjdGVkSXRlbShpdGVtczogYW55KTogYW55IHtcclxuICBpZiAoIWl0ZW1zKSB7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuICBsZXQgc2VsZWN0ZWRJdGVtO1xyXG4gIGlmIChoYXNHcm91cChpdGVtcykpIHtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xyXG4gICAgICBzZWxlY3RlZEl0ZW0gPSBpdGVtLml0ZW1zID8gaXRlbS5pdGVtcy5maW5kKHN1Ykl0ZW0gPT4gc3ViSXRlbS5zZWxlY3RlZCkgOiB1bmRlZmluZWQ7XHJcbiAgICAgIGlmIChzZWxlY3RlZEl0ZW0pIHtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBzZWxlY3RlZEl0ZW0gPSBpdGVtcyA/IGl0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLnNlbGVjdGVkKSA6IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgcmV0dXJuIHNlbGVjdGVkSXRlbTtcclxufVxyXG4iXX0=