@ruc-lib/dual-list-selector 2.0.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.
- package/README.md +8 -0
- package/esm2020/index.mjs +3 -0
- package/esm2020/interfaces/PendingSelectionItems.mjs +2 -0
- package/esm2020/lib/dual-list-selector/dual-list-selector.component.mjs +222 -0
- package/esm2020/lib/ruclib-dual-list-selector.module.mjs +57 -0
- package/esm2020/pipes/filter.pipe.mjs +28 -0
- package/esm2020/ruc-lib-dual-list-selector.mjs +5 -0
- package/fesm2015/ruc-lib-dual-list-selector.mjs +305 -0
- package/fesm2015/ruc-lib-dual-list-selector.mjs.map +1 -0
- package/fesm2020/ruc-lib-dual-list-selector.mjs +305 -0
- package/fesm2020/ruc-lib-dual-list-selector.mjs.map +1 -0
- package/index.d.ts +2 -0
- package/interfaces/PendingSelectionItems.d.ts +3 -0
- package/lib/dual-list-selector/dual-list-selector.component.d.ts +102 -0
- package/lib/ruclib-dual-list-selector.module.d.ts +18 -0
- package/package.json +39 -0
- package/pipes/filter.pipe.d.ts +7 -0
package/README.md
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# ruclib-dual-list-selector
|
|
2
|
+
|
|
3
|
+
"A dual list selector allows users to select and move items from one list of available items to another list of selected items. Unlike a select list, a dual list selector separates the available options and the selected options into two separate lists, which allows users to easily scan the items they selected. Additionally we'll provide the support for expandable list items and custom theme, title and labels."
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## Running unit tests
|
|
7
|
+
|
|
8
|
+
Run `nx test ruclib-dual-list-selector` to execute the unit tests.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './lib/ruclib-dual-list-selector.module';
|
|
2
|
+
export * from './lib/dual-list-selector/dual-list-selector.component';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3J1Y2xpYi9kdWFsLWxpc3Qtc2VsZWN0b3Ivc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx1REFBdUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL3J1Y2xpYi1kdWFsLWxpc3Qtc2VsZWN0b3IubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZHVhbC1saXN0LXNlbGVjdG9yL2R1YWwtbGlzdC1zZWxlY3Rvci5jb21wb25lbnQnOyJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVuZGluZ1NlbGVjdGlvbkl0ZW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ydWNsaWIvZHVhbC1saXN0LXNlbGVjdG9yL3NyYy9pbnRlcmZhY2VzL1BlbmRpbmdTZWxlY3Rpb25JdGVtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGVuZGluZ1NlbGVjdGlvbiB7ICBcclxuICBbIGtleTogbnVtYmVyIF06IGJvb2xlYW47XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { COMMA, ENTER } from '@angular/cdk/keycodes';
|
|
3
|
+
import { FilterPipe } from '../../pipes/filter.pipe';
|
|
4
|
+
import { moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../pipes/filter.pipe";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
import * as i3 from "@angular/forms";
|
|
9
|
+
import * as i4 from "@angular/material/list";
|
|
10
|
+
import * as i5 from "@angular/cdk/drag-drop";
|
|
11
|
+
import * as i6 from "@angular/material/form-field";
|
|
12
|
+
import * as i7 from "@angular/material/input";
|
|
13
|
+
import * as i8 from "@angular/material/icon";
|
|
14
|
+
export class DualListSelectorComponent {
|
|
15
|
+
;
|
|
16
|
+
constructor(filterPipe) {
|
|
17
|
+
this.filterPipe = filterPipe;
|
|
18
|
+
this.dataSource = [];
|
|
19
|
+
this.rucEvent = new EventEmitter();
|
|
20
|
+
this.selectedItems = [];
|
|
21
|
+
this.selectedItemsBeforeSearch = [];
|
|
22
|
+
this.separatorKeysCodes = [ENTER, COMMA];
|
|
23
|
+
this.direction_unselected = false;
|
|
24
|
+
this.direction_selected = false;
|
|
25
|
+
}
|
|
26
|
+
ngOnInit() {
|
|
27
|
+
this.height = this.rucInputData.height;
|
|
28
|
+
this.width = this.rucInputData.width;
|
|
29
|
+
this.persistOnRefresh = this.rucInputData.persistOnRefresh;
|
|
30
|
+
const storedUnselectedItems = sessionStorage.getItem('unselectedItems');
|
|
31
|
+
const storedSelectedItems = sessionStorage.getItem('selectedItems');
|
|
32
|
+
if (storedUnselectedItems && storedUnselectedItems !== 'undefined' && storedSelectedItems && storedSelectedItems !== 'undefined') {
|
|
33
|
+
this.unselectedItems = JSON.parse(sessionStorage.getItem('unselectedItems'));
|
|
34
|
+
this.selectedItems = JSON.parse(sessionStorage.getItem('selectedItems'));
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
this.unselectedItems = this.dataSource.slice().sort(this.sortItemOperator);
|
|
38
|
+
this.selectedItems = [];
|
|
39
|
+
}
|
|
40
|
+
this.unselectedItemsBeforeSearch = this.unselectedItems;
|
|
41
|
+
this.selectedItemsBeforeSearch = this.selectedItems;
|
|
42
|
+
this.pendingSelection = Object.create(null);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* save lists to storage
|
|
46
|
+
* @param selected and unselected list
|
|
47
|
+
* @return none
|
|
48
|
+
*/
|
|
49
|
+
saveToStorage(selected, unselected) {
|
|
50
|
+
if (this.persistOnRefresh) {
|
|
51
|
+
sessionStorage.setItem('selectedItems', JSON.stringify(selected));
|
|
52
|
+
sessionStorage.setItem('unselectedItems', JSON.stringify(unselected));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* add the selected item or dataSource to the selected dataSource collection
|
|
57
|
+
* @param item to be added
|
|
58
|
+
* @return none
|
|
59
|
+
*/
|
|
60
|
+
addToSelectedItems(item) {
|
|
61
|
+
console.log("item=", item);
|
|
62
|
+
const changeItems = (item)
|
|
63
|
+
? [item]
|
|
64
|
+
: this.getPendingSelectionFromCollection(this.unselectedItems);
|
|
65
|
+
this.pendingSelection = Object.create(null);
|
|
66
|
+
this.unselectedItems = this.removeItemsFromCollection(this.unselectedItems, changeItems);
|
|
67
|
+
this.selectedItems = changeItems.concat(this.selectedItems);
|
|
68
|
+
this.selectedItemsBeforeSearch = this.selectedItems;
|
|
69
|
+
this.unselectedItemsBeforeSearch = this.unselectedItems;
|
|
70
|
+
this.saveToStorage(this.selectedItemsBeforeSearch, this.unselectedItemsBeforeSearch);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Add all items to selected list
|
|
74
|
+
* @param none
|
|
75
|
+
* @return none
|
|
76
|
+
*/
|
|
77
|
+
addAllToSelectedItems() {
|
|
78
|
+
this.selectedItems = this.dataSource;
|
|
79
|
+
this.unselectedItems = [];
|
|
80
|
+
this.saveToStorage(this.selectedItems, this.unselectedItems);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* remove all items from selected list
|
|
84
|
+
* @param none
|
|
85
|
+
* @return none
|
|
86
|
+
*/
|
|
87
|
+
removeAllFromSelectedItems() {
|
|
88
|
+
this.unselectedItems = this.dataSource;
|
|
89
|
+
this.selectedItems = [];
|
|
90
|
+
this.saveToStorage(this.selectedItems, this.unselectedItems);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* when drag and drop event occurs
|
|
94
|
+
* @param event
|
|
95
|
+
* @return none
|
|
96
|
+
*/
|
|
97
|
+
drop(event) {
|
|
98
|
+
if (event.previousContainer === event.container) {
|
|
99
|
+
moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Sort on click of sorting icon
|
|
107
|
+
* @param type whether it's increasing or decreasing
|
|
108
|
+
* @return none
|
|
109
|
+
*/
|
|
110
|
+
sortOnClick(type) {
|
|
111
|
+
if (this.direction_unselected && type == "unselected") {
|
|
112
|
+
this.unselectedItems = this.unselectedItems.sort((a, b) => b.name.toLowerCase().localeCompare(a.name.toLowerCase()));
|
|
113
|
+
this.direction_unselected = !this.direction_unselected;
|
|
114
|
+
}
|
|
115
|
+
else if (!this.direction_unselected && type == "unselected") {
|
|
116
|
+
this.unselectedItems = this.unselectedItems.sort((a, b) => a.name.toLowerCase().localeCompare(b.name.toLowerCase()));
|
|
117
|
+
this.direction_unselected = !this.direction_unselected;
|
|
118
|
+
}
|
|
119
|
+
if (this.direction_selected && type == "selected") {
|
|
120
|
+
this.selectedItems = this.selectedItems.sort((a, b) => b.name.toLowerCase().localeCompare(a.name.toLowerCase()));
|
|
121
|
+
this.direction_selected = !this.direction_selected;
|
|
122
|
+
}
|
|
123
|
+
else if (!this.direction_selected && type == "selected") {
|
|
124
|
+
this.selectedItems = this.selectedItems.sort((a, b) => a.name.toLowerCase().localeCompare(b.name.toLowerCase()));
|
|
125
|
+
this.direction_selected = !this.direction_selected;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* remove the selected item or dataSource from the selected dataSource collection
|
|
130
|
+
* @param item to be removed
|
|
131
|
+
* @return
|
|
132
|
+
*/
|
|
133
|
+
removeFromSelectedItems(item) {
|
|
134
|
+
const changeItems = (item)
|
|
135
|
+
? [item]
|
|
136
|
+
: this.getPendingSelectionFromCollection(this.selectedItems);
|
|
137
|
+
this.pendingSelection = Object.create(null);
|
|
138
|
+
this.selectedItems = this.removeItemsFromCollection(this.selectedItems, changeItems);
|
|
139
|
+
const changedData = changeItems
|
|
140
|
+
.concat(this.unselectedItems)
|
|
141
|
+
.sort(this.sortItemOperator);
|
|
142
|
+
this.unselectedItems = changedData;
|
|
143
|
+
this.unselectedItemsBeforeSearch = changedData;
|
|
144
|
+
this.selectedItemsBeforeSearch = this.selectedItemsBeforeSearch;
|
|
145
|
+
this.saveToStorage(this.selectedItems, this.unselectedItems);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* toggle the pending selection for the given item
|
|
149
|
+
* @param item to toggle
|
|
150
|
+
* @return none
|
|
151
|
+
*/
|
|
152
|
+
togglePendingSelection(item) {
|
|
153
|
+
this.pendingSelection[item.id] = !this.pendingSelection[item.id];
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Filter the data based on the provided input
|
|
157
|
+
* @param searchvalue input label provided in search box
|
|
158
|
+
* @return none
|
|
159
|
+
*/
|
|
160
|
+
filterData(searchvalue, type) {
|
|
161
|
+
if (type === 'unselected') {
|
|
162
|
+
if (searchvalue === "") {
|
|
163
|
+
this.unselectedItems = this.unselectedItemsBeforeSearch;
|
|
164
|
+
}
|
|
165
|
+
this.unselectedItems = this.filterPipe.transform(this.unselectedItemsBeforeSearch, searchvalue, 'name');
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
if (searchvalue === "") {
|
|
169
|
+
this.selectedItems = this.selectedItemsBeforeSearch;
|
|
170
|
+
}
|
|
171
|
+
this.selectedItems = this.filterPipe.transform(this.selectedItemsBeforeSearch, searchvalue, 'name');
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* gather the dataSource in the given collection that are part of the current pending selection
|
|
176
|
+
* @param collection input label provided in search box
|
|
177
|
+
* @return selected items
|
|
178
|
+
*/
|
|
179
|
+
getPendingSelectionFromCollection(collection) {
|
|
180
|
+
const selectionFromCollection = collection.filter((item) => {
|
|
181
|
+
return (item.id in this.pendingSelection);
|
|
182
|
+
});
|
|
183
|
+
return (selectionFromCollection);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* remove the given dataSource from the given collection
|
|
187
|
+
* @param collection and ItemsToRemove
|
|
188
|
+
* @return a new collection
|
|
189
|
+
*/
|
|
190
|
+
removeItemsFromCollection(collection, ItemsToRemove) {
|
|
191
|
+
const collectionWithoutItems = collection.filter((item) => {
|
|
192
|
+
return (!ItemsToRemove.includes(item));
|
|
193
|
+
});
|
|
194
|
+
return (collectionWithoutItems);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* provide the sort operator for the dataSource collection
|
|
198
|
+
* @param two values to compare
|
|
199
|
+
* @return a value based on the sorting
|
|
200
|
+
*/
|
|
201
|
+
sortItemOperator(a, b) {
|
|
202
|
+
return (a.name.localeCompare(b.name));
|
|
203
|
+
}
|
|
204
|
+
selectedOutputItems() {
|
|
205
|
+
this.rucEvent.emit(this.selectedItems);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
DualListSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DualListSelectorComponent, deps: [{ token: i1.FilterPipe }], target: i0.ɵɵFactoryTarget.Component });
|
|
209
|
+
DualListSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DualListSelectorComponent, selector: "uxp-dual-list-selector", inputs: { dataSource: "dataSource", rucInputData: "rucInputData", customTheme: "customTheme" }, outputs: { rucEvent: "rucEvent" }, providers: [FilterPipe], ngImport: i0, template: "<div class=\"{{customTheme}}\">\r\n <div class=\"dual-list-container\">\r\n <div class=\"dual-select\">\r\n <div class=\"leftContainer\">\r\n <mat-form-field class=\"example-full-width search_Box\" appearance=\"fill\" *ngIf=\"rucInputData.enableSearch\">\r\n <mat-label>Search</mat-label>\r\n <input matInput (keyup)=\"filterData(searchText, 'unselected')\" [(ngModel)]=\"searchText\">\r\n </mat-form-field>\r\n <span class=\"flex\" *ngIf=\"rucInputData.sorting\"><mat-icon (click)=\"sortOnClick('unselected')\">{{ !direction_unselected ? 'arrow_drop_down' :\r\n 'arrow_drop_up' }}</mat-icon> </span>\r\n <div class=\"dual-select__left\" [ngStyle]=\"{'max-height.px': height, 'width.px': width}\">\r\n <mat-list role=\"list\" class=\"list_container\">\r\n\r\n <div cdkDropList #todoList=\"cdkDropList\" [cdkDropListData]=\"unselectedItems\"\r\n [cdkDropListConnectedTo]=\"[doneList]\" class=\"example-list\" (cdkDropListDropped)=\"drop($event)\">\r\n\r\n\r\n\r\n <mat-list-item role=\"listitem\" *ngFor=\"let item of unselectedItems\" cdkDrag [disabled]=\"!item.disable\"\r\n (click)=\"togglePendingSelection( item )\" (dblclick)=\"addToSelectedItems( item )\"\r\n class=\"dual-select__item\" [class.dual-select__item--selected]=\"pendingSelection[ item.id ]\">\r\n <span>{{ item.name }}</span>\r\n </mat-list-item>\r\n </div>\r\n </mat-list>\r\n\r\n </div>\r\n </div>\r\n <div class=\"dual-select__controls\">\r\n <button (click)=\"addToSelectedItems()\" class=\"dual-select__control\">\r\n ⟼\r\n </button>\r\n <button (click)=\"removeFromSelectedItems()\" class=\"dual-select__control\">\r\n ⟻\r\n </button>\r\n <button (click)=\"addAllToSelectedItems()\" class=\"dual-select__control\">\r\n ⤇\r\n </button>\r\n <button (click)=\"removeAllFromSelectedItems()\" class=\"dual-select__control\">\r\n ⤆\r\n </button>\r\n </div>\r\n <div class=\"rightContainer\">\r\n <mat-form-field class=\"example-full-width search_Box\" appearance=\"fill\" *ngIf=\"rucInputData.enableSearch\">\r\n <mat-label>Search</mat-label>\r\n <input matInput (keyup)=\"filterData(searchTextSelected, 'selected')\" [(ngModel)]=\"searchTextSelected\">\r\n </mat-form-field>\r\n <span class=\"flex\" *ngIf=\"rucInputData.sorting\"><mat-icon (click)=\"sortOnClick('selected')\">{{ !direction_selected ? 'arrow_drop_down' :\r\n 'arrow_drop_up' }}</mat-icon> </span>\r\n\r\n <div class=\"dual-select__right\" [ngStyle]=\"{'max-height.px': height, 'width.px': width}\">\r\n\r\n\r\n\r\n <mat-list role=\"list\" class=\"list_container\">\r\n <div cdkDropList #doneList=\"cdkDropList\" [cdkDropListData]=\"selectedItems\"\r\n [cdkDropListConnectedTo]=\"[todoList]\" class=\"example-list\" (cdkDropListDropped)=\"drop($event)\">\r\n\r\n <mat-list-item cdkDrag *ngFor=\"let item of selectedItems\" (click)=\"togglePendingSelection( item )\"\r\n (dblclick)=\"removeFromSelectedItems( item )\" class=\"dual-select__item dual-select__item--new\"\r\n [class.dual-select__item--selected]=\"pendingSelection[ item.id ]\">\r\n <span>{{ item.name }}</span>\r\n </mat-list-item>\r\n </div>\r\n </mat-list>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"text-align-center\">\r\n <button (click)=\"selectedOutputItems()\" class=\"dual-list-btn\">\r\n Submit\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".dual-list-container{display:flex;flex-direction:column}.list{border:1px solid #ccc;padding:10px;width:45%}:host{display:block;font-size:18px}.dual-select{display:flex;justify-content:center}.leftContainer,.rightContainer{flex:0 0 auto;margin:2%}.dual-select__left,.dual-select__right{border:1px solid lightgrey;height:400px;overflow-y:auto}.dual-select__controls{justify-content:center;display:flex;flex:0 0 auto;flex-direction:column;padding:0 10px}.dual-select__control{font-size:20px;height:37px;margin:10px 0}.dual-select__items{border:1px solid #cccccc;height:100%;list-style-type:none;margin:0;overflow:auto;overscroll-behavior:contain;padding:0}.dual-select__item{border-bottom:1px solid #cccccc;cursor:pointer;margin:0;padding:0 0 0 1em;user-select:none;-moz-user-select:none;-webkit-user-select:none}.dual-select__item:last-child{border-bottom-width:0px}.dual-select__item--selected{background-color:#bfd5ff}.dual-select__item--new{animation-duration:2s;animation-name:dual-select-item-new-fade-in;animation-timing-function:ease-out}@keyframes dual-select-item-new-fade-in{0%{background-color:#fff}25%{background-color:#bfd5ff}to{background-color:#fff}}.contact{font-family:monospace,sans-serif;padding:8px 10px}.contact__name{font-size:18px;font-weight:700;line-height:22px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contact__email{font-size:15px;line-height:19px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.note{font-family:monospace,sans-serif;font-size:16px}.search_Box{width:90%;height:67px}.list_container{padding:0}.btn_container{position:relative;top:30px;right:8%}.submit_Btn{position:absolute;bottom:0}@media screen and (max-width: 900px){.dual-select{display:inline-flex;height:400px;margin:6% 1% 1%}}.text-align-center{text-align:center}.dual-list-btn{font-size:14px;padding:.4em 1em}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i4.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
210
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DualListSelectorComponent, decorators: [{
|
|
211
|
+
type: Component,
|
|
212
|
+
args: [{ selector: 'uxp-dual-list-selector', providers: [FilterPipe], template: "<div class=\"{{customTheme}}\">\r\n <div class=\"dual-list-container\">\r\n <div class=\"dual-select\">\r\n <div class=\"leftContainer\">\r\n <mat-form-field class=\"example-full-width search_Box\" appearance=\"fill\" *ngIf=\"rucInputData.enableSearch\">\r\n <mat-label>Search</mat-label>\r\n <input matInput (keyup)=\"filterData(searchText, 'unselected')\" [(ngModel)]=\"searchText\">\r\n </mat-form-field>\r\n <span class=\"flex\" *ngIf=\"rucInputData.sorting\"><mat-icon (click)=\"sortOnClick('unselected')\">{{ !direction_unselected ? 'arrow_drop_down' :\r\n 'arrow_drop_up' }}</mat-icon> </span>\r\n <div class=\"dual-select__left\" [ngStyle]=\"{'max-height.px': height, 'width.px': width}\">\r\n <mat-list role=\"list\" class=\"list_container\">\r\n\r\n <div cdkDropList #todoList=\"cdkDropList\" [cdkDropListData]=\"unselectedItems\"\r\n [cdkDropListConnectedTo]=\"[doneList]\" class=\"example-list\" (cdkDropListDropped)=\"drop($event)\">\r\n\r\n\r\n\r\n <mat-list-item role=\"listitem\" *ngFor=\"let item of unselectedItems\" cdkDrag [disabled]=\"!item.disable\"\r\n (click)=\"togglePendingSelection( item )\" (dblclick)=\"addToSelectedItems( item )\"\r\n class=\"dual-select__item\" [class.dual-select__item--selected]=\"pendingSelection[ item.id ]\">\r\n <span>{{ item.name }}</span>\r\n </mat-list-item>\r\n </div>\r\n </mat-list>\r\n\r\n </div>\r\n </div>\r\n <div class=\"dual-select__controls\">\r\n <button (click)=\"addToSelectedItems()\" class=\"dual-select__control\">\r\n ⟼\r\n </button>\r\n <button (click)=\"removeFromSelectedItems()\" class=\"dual-select__control\">\r\n ⟻\r\n </button>\r\n <button (click)=\"addAllToSelectedItems()\" class=\"dual-select__control\">\r\n ⤇\r\n </button>\r\n <button (click)=\"removeAllFromSelectedItems()\" class=\"dual-select__control\">\r\n ⤆\r\n </button>\r\n </div>\r\n <div class=\"rightContainer\">\r\n <mat-form-field class=\"example-full-width search_Box\" appearance=\"fill\" *ngIf=\"rucInputData.enableSearch\">\r\n <mat-label>Search</mat-label>\r\n <input matInput (keyup)=\"filterData(searchTextSelected, 'selected')\" [(ngModel)]=\"searchTextSelected\">\r\n </mat-form-field>\r\n <span class=\"flex\" *ngIf=\"rucInputData.sorting\"><mat-icon (click)=\"sortOnClick('selected')\">{{ !direction_selected ? 'arrow_drop_down' :\r\n 'arrow_drop_up' }}</mat-icon> </span>\r\n\r\n <div class=\"dual-select__right\" [ngStyle]=\"{'max-height.px': height, 'width.px': width}\">\r\n\r\n\r\n\r\n <mat-list role=\"list\" class=\"list_container\">\r\n <div cdkDropList #doneList=\"cdkDropList\" [cdkDropListData]=\"selectedItems\"\r\n [cdkDropListConnectedTo]=\"[todoList]\" class=\"example-list\" (cdkDropListDropped)=\"drop($event)\">\r\n\r\n <mat-list-item cdkDrag *ngFor=\"let item of selectedItems\" (click)=\"togglePendingSelection( item )\"\r\n (dblclick)=\"removeFromSelectedItems( item )\" class=\"dual-select__item dual-select__item--new\"\r\n [class.dual-select__item--selected]=\"pendingSelection[ item.id ]\">\r\n <span>{{ item.name }}</span>\r\n </mat-list-item>\r\n </div>\r\n </mat-list>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"text-align-center\">\r\n <button (click)=\"selectedOutputItems()\" class=\"dual-list-btn\">\r\n Submit\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".dual-list-container{display:flex;flex-direction:column}.list{border:1px solid #ccc;padding:10px;width:45%}:host{display:block;font-size:18px}.dual-select{display:flex;justify-content:center}.leftContainer,.rightContainer{flex:0 0 auto;margin:2%}.dual-select__left,.dual-select__right{border:1px solid lightgrey;height:400px;overflow-y:auto}.dual-select__controls{justify-content:center;display:flex;flex:0 0 auto;flex-direction:column;padding:0 10px}.dual-select__control{font-size:20px;height:37px;margin:10px 0}.dual-select__items{border:1px solid #cccccc;height:100%;list-style-type:none;margin:0;overflow:auto;overscroll-behavior:contain;padding:0}.dual-select__item{border-bottom:1px solid #cccccc;cursor:pointer;margin:0;padding:0 0 0 1em;user-select:none;-moz-user-select:none;-webkit-user-select:none}.dual-select__item:last-child{border-bottom-width:0px}.dual-select__item--selected{background-color:#bfd5ff}.dual-select__item--new{animation-duration:2s;animation-name:dual-select-item-new-fade-in;animation-timing-function:ease-out}@keyframes dual-select-item-new-fade-in{0%{background-color:#fff}25%{background-color:#bfd5ff}to{background-color:#fff}}.contact{font-family:monospace,sans-serif;padding:8px 10px}.contact__name{font-size:18px;font-weight:700;line-height:22px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contact__email{font-size:15px;line-height:19px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.note{font-family:monospace,sans-serif;font-size:16px}.search_Box{width:90%;height:67px}.list_container{padding:0}.btn_container{position:relative;top:30px;right:8%}.submit_Btn{position:absolute;bottom:0}@media screen and (max-width: 900px){.dual-select{display:inline-flex;height:400px;margin:6% 1% 1%}}.text-align-center{text-align:center}.dual-list-btn{font-size:14px;padding:.4em 1em}\n"] }]
|
|
213
|
+
}], ctorParameters: function () { return [{ type: i1.FilterPipe }]; }, propDecorators: { dataSource: [{
|
|
214
|
+
type: Input
|
|
215
|
+
}], rucInputData: [{
|
|
216
|
+
type: Input
|
|
217
|
+
}], rucEvent: [{
|
|
218
|
+
type: Output
|
|
219
|
+
}], customTheme: [{
|
|
220
|
+
type: Input
|
|
221
|
+
}] } });
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVhbC1saXN0LXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcnVjbGliL2R1YWwtbGlzdC1zZWxlY3Rvci9zcmMvbGliL2R1YWwtbGlzdC1zZWxlY3Rvci9kdWFsLWxpc3Qtc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ydWNsaWIvZHVhbC1saXN0LXNlbGVjdG9yL3NyYy9saWIvZHVhbC1saXN0LXNlbGVjdG9yL2R1YWwtbGlzdC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFN0csT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFlLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7O0FBUXpGLE1BQU0sT0FBTyx5QkFBeUI7SUFlTSxDQUFDO0lBUTVDLFlBQW1CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUF0Qi9CLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFFdkIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFRakMsa0JBQWEsR0FBVSxFQUFFLENBQUM7UUFHMUIsOEJBQXlCLEdBQVUsRUFBRSxDQUFDO1FBR3BDLHVCQUFrQixHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBVSxDQUFDO1FBR3RELHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3Qix1QkFBa0IsR0FBRyxLQUFLLENBQUM7SUFLM0IsQ0FBQztJQUVELFFBQVE7UUFDUCxJQUFJLENBQUMs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QUFNO1FBQ3RDLE9BQU0sQ0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBRSxDQUFDLENBQUMsSUFBSSxDQUFFLENBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsbUJBQW1CO1FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4QyxDQUFDOzt1SEF0UFcseUJBQXlCOzJHQUF6Qix5QkFBeUIsb0xBRnpCLENBQUMsVUFBVSxDQUFDLDBCQ1Z6Qix1dUhBMEVNOzRGRDlETyx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0Usd0JBQXdCLGFBR3ZCLENBQUMsVUFBVSxDQUFDO2lHQUdkLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0UsWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNFLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBlbmRpbmdTZWxlY3Rpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL1BlbmRpbmdTZWxlY3Rpb25JdGVtcyc7XHJcbmltcG9ydCB7IENPTU1BLCBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7IEZpbHRlclBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9maWx0ZXIucGlwZSc7XHJcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXksIHRyYW5zZmVyQXJyYXlJdGVtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3V4cC1kdWFsLWxpc3Qtc2VsZWN0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kdWFsLWxpc3Qtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2R1YWwtbGlzdC1zZWxlY3Rvci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW0ZpbHRlclBpcGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHVhbExpc3RTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdHtcclxuICBASW5wdXQoKSBkYXRhU291cmNlOiBhbnlbXSA9IFtdO1xyXG5cdEBJbnB1dCgpIHJ1Y0lucHV0RGF0YTogYW55O1xyXG5cdEBPdXRwdXQoKSBydWNFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRASW5wdXQoKSBjdXN0b21UaGVtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuXHRwdWJsaWMgaGVpZ2h0OiBhbnk7XHJcblx0cHVibGljIHdpZHRoOiBhbnk7XHJcblx0cHVibGljIHBlcnNpc3RPblJlZnJlc2g6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcblxyXG5cdHB1YmxpYyBwZW5kaW5nU2VsZWN0aW9uITogUGVuZGluZ1NlbGVjdGlvbjtcclxuXHRwdWJsaWMgc2VsZWN0ZWRJdGVtczogYW55W10gPSBbXTtcclxuXHRwdWJsaWMgdW5zZWxlY3RlZEl0ZW1zITogYW55W107XHJcblxyXG5cdHB1YmxpYyBzZWxlY3RlZEl0ZW1zQmVmb3JlU2VhcmNoOiBhbnlbXSA9IFtdO1xyXG5cdHB1YmxpYyB1bnNlbGVjdGVkSXRlbXNCZWZvcmVTZWFyY2ghOiBhbnlbXTs7XHJcblxyXG5cdHJlYWRvbmx5IHNlcGFyYXRvcktleXNDb2RlcyA9IFtFTlRFUiwgQ09NTUFdIGFzIGNvbnN0O1xyXG5cdHB1YmxpYyBzZWFyY2hUZXh0ITogc3RyaW5nO1xyXG5cdHB1YmxpYyBzZWFyY2hUZXh0U2VsZWN0ZWQhOiBzdHJpbmc7XHJcblx0ZGlyZWN0aW9uX3Vuc2VsZWN0ZWQgPSBmYWxzZTtcclxuXHRkaXJlY3Rpb25fc2VsZWN0ZWQgPSBmYWxzZTtcclxuXHJcblx0Y29uc3RydWN0b3IocHVibGljIGZpbHRlclBpcGU6IEZpbHRlclBpcGUpIHtcclxuXHJcblxyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmhlaWdodCA9IHRoaXMucnVjSW5wdXREYXRhLmhlaWdodDtcclxuXHRcdHRoaXMud2lkdGggPSB0aGlzLnJ1Y0lucHV0RGF0YS53aWR0aDtcclxuXHRcdHRoaXMucGVyc2lzdE9uUmVmcmVzaCA9IHRoaXMucnVjSW5wdXREYXRhLnBlcnNpc3RPblJlZnJlc2g7XHJcblxyXG5cdFx0Y29uc3Qgc3RvcmVkVW5zZWxlY3RlZEl0ZW1zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndW5zZWxlY3RlZEl0ZW1zJyk7XHJcblx0XHRjb25zdCBzdG9yZWRTZWxlY3RlZEl0ZW1zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnc2VsZWN0ZWRJdGVtcycpO1xyXG5cdFx0aWYoc3RvcmVkVW5zZWxlY3RlZEl0ZW1zICYmIHN0b3JlZFVuc2VsZWN0ZWRJdGVtcyAhPT0gJ3VuZGVmaW5lZCcgJiYgc3RvcmVkU2VsZWN0ZWRJdGVtcyAmJiBzdG9yZWRTZWxlY3RlZEl0ZW1zICE9PSAndW5kZWZpbmVkJyl7XHJcblx0XHRcdHRoaXMudW5zZWxlY3RlZEl0ZW1zID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd1bnNlbGVjdGVkSXRlbXMnKSBhcyBhbnkpO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSXRlbXMgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3NlbGVjdGVkSXRlbXMnKSBhcyBhbnkpO1xyXG5cdFx0fWVsc2V7XHJcblx0XHRcdHRoaXMudW5zZWxlY3RlZEl0ZW1zID0gdGhpcy5kYXRhU291cmNlLnNsaWNlKCkuc29ydCggdGhpcy5zb3J0SXRlbU9wZXJhdG9yICk7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHR0aGlzLnVuc2VsZWN0ZWRJdGVtc0JlZm9yZVNlYXJjaCA9IHRoaXMudW5zZWxlY3RlZEl0ZW1zO1xyXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW1zQmVmb3JlU2VhcmNoID0gdGhpcy5zZWxlY3RlZEl0ZW1zO1xyXG5cdFx0dGhpcy5wZW5kaW5nU2VsZWN0aW9uID0gT2JqZWN0LmNyZWF0ZSggbnVsbCApO1xyXG5cdH1cclxuXHJcbiAgXHQvKipcclxuXHQgKiBzYXZlIGxpc3RzIHRvIHN0b3JhZ2VcclxuXHQgKiBAcGFyYW0gIHNlbGVjdGVkIGFuZCB1bnNlbGVjdGVkIGxpc3RcclxuXHQgKiBAcmV0dXJuIG5vbmVcclxuXHQgKi9cclxuXHRwdWJsaWMgc2F2ZVRvU3RvcmFnZShzZWxlY3RlZDogYW55W10sIHVuc2VsZWN0ZWQ6IGFueVtdKXtcclxuXHRcdGlmKHRoaXMucGVyc2lzdE9uUmVmcmVzaCl7XHJcblx0XHRcdHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3NlbGVjdGVkSXRlbXMnLCBKU09OLnN0cmluZ2lmeShzZWxlY3RlZCkpO1xyXG5cdFx0XHRzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCd1bnNlbGVjdGVkSXRlbXMnLCBKU09OLnN0cmluZ2lmeSh1bnNlbGVjdGVkKSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuICBcdC8qKlxyXG5cdCAqIGFkZCB0aGUgc2VsZWN0ZWQgaXRlbSBvciBkYXRhU291cmNlIHRvIHRoZSBzZWxlY3RlZCBkYXRhU291cmNlIGNvbGxlY3Rpb25cclxuXHQgKiBAcGFyYW0gIGl0ZW0gdG8gYmUgYWRkZWRcclxuXHQgKiBAcmV0dXJuIG5vbmVcclxuXHQgKi9cclxuXHRwdWJsaWMgYWRkVG9TZWxlY3RlZEl0ZW1zKCBpdGVtPzogYW55ICkgOiB2b2lkIHtcclxuY29uc29sZS5sb2coXCJpdGVtPVwiLGl0ZW0pO1xyXG5cdFx0Y29uc3QgY2hhbmdlSXRlbXMgPSAoIGl0ZW0gKVxyXG5cdFx0XHQ/IFsgaXRlbSBdXHJcblx0XHRcdDogdGhpcy5nZXRQZW5kaW5nU2VsZWN0aW9uRnJvbUNvbGxlY3Rpb24oIHRoaXMudW5zZWxlY3RlZEl0ZW1zICk7XHJcblxyXG5cdFx0dGhpcy5wZW5kaW5nU2VsZWN0aW9uID0gT2JqZWN0LmNyZWF0ZSggbnVsbCApO1xyXG5cdFx0dGhpcy51bnNlbGVjdGVkSXRlbXMgPSB0aGlzLnJlbW92ZUl0ZW1zRnJvbUNvbGxlY3Rpb24oIHRoaXMudW5zZWxlY3RlZEl0ZW1zLCBjaGFuZ2VJdGVtcyApO1xyXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW1zID0gY2hhbmdlSXRlbXMuY29uY2F0KCB0aGlzLnNlbGVjdGVkSXRlbXMgKTtcclxuXHRcdHRoaXMuc2VsZWN0ZWRJdGVtc0JlZm9yZVNlYXJjaCA9IHRoaXMuc2VsZWN0ZWRJdGVtczsgXHJcblx0XHR0aGlzLnVuc2VsZWN0ZWRJdGVtc0JlZm9yZVNlYXJjaCA9IHRoaXMudW5zZWxlY3RlZEl0ZW1zO1xyXG5cdFx0dGhpcy5zYXZlVG9TdG9yYWdlKHRoaXMuc2VsZWN0ZWRJdGVtc0JlZm9yZVNlYXJjaCwgdGhpcy51bnNlbGVjdGVkSXRlbXNCZWZvcmVTZWFyY2gpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkIGFsbCBpdGVtcyB0byBzZWxlY3RlZCBsaXN0XHJcblx0ICogQHBhcmFtICBub25lXHJcblx0ICogQHJldHVybiBub25lXHJcblx0ICovXHJcblx0cHVibGljIGFkZEFsbFRvU2VsZWN0ZWRJdGVtcygpIDogdm9pZCB7XHJcblx0XHR0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLmRhdGFTb3VyY2U7XHJcblx0XHR0aGlzLnVuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG5cdFx0dGhpcy5zYXZlVG9TdG9yYWdlKHRoaXMuc2VsZWN0ZWRJdGVtcywgdGhpcy51bnNlbGVjdGVkSXRlbXMpO1xyXG5cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIHJlbW92ZSBhbGwgaXRlbXMgZnJvbSBzZWxlY3RlZCBsaXN0XHJcblx0ICogQHBhcmFtICBub25lXHJcblx0ICogQHJldHVybiAgbm9uZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZW1vdmVBbGxGcm9tU2VsZWN0ZWRJdGVtcygpIDogdm9pZCB7XHJcbiAgICBcdHRoaXMudW5zZWxlY3RlZEl0ZW1zID0gdGhpcy5kYXRhU291cmNlO1xyXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XHJcblx0XHR0aGlzLnNhdmVUb1N0b3JhZ2UodGhpcy5zZWxlY3RlZEl0ZW1zLCB0aGlzLnVuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgXHR9XHJcblxyXG4gIFx0LyoqXHJcblx0ICogd2hlbiBkcmFnIGFuZCBkcm9wIGV2ZW50IG9jY3Vyc1xyXG5cdCAqIEBwYXJhbSAgZXZlbnRcclxuXHQgKiBAcmV0dXJuICBub25lXHJcblx0ICovXHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XHJcbiAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xyXG4gICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0cmFuc2ZlckFycmF5SXRlbShcclxuICAgICAgICBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLFxyXG4gICAgICAgIGV2ZW50LmNvbnRhaW5lci5kYXRhLFxyXG4gICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXHJcbiAgICAgICAgZXZlbnQuY3VycmVudEluZGV4LFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cdC8qKlxyXG5cdCAqIFNvcnQgb24gY2xpY2sgb2Ygc29ydGluZyBpY29uXHJcblx0ICogQHBhcmFtICB0eXBlIHdoZXRoZXIgaXQncyBpbmNyZWFzaW5nIG9yIGRlY3JlYXNpbmdcclxuXHQgKiBAcmV0dXJuICBub25lXHJcblx0ICovXHJcbiAgc29ydE9uQ2xpY2sodHlwZTpzdHJpbmcpIHtcclxuXHJcblx0XHRpZih0aGlzLmRpcmVjdGlvbl91bnNlbGVjdGVkICYmIHR5cGU9PSBcInVuc2VsZWN0ZWRcIil7XHJcblx0XHRcdHRoaXMudW5zZWxlY3RlZEl0ZW1zID0gdGhpcy51bnNlbGVjdGVkSXRlbXMuc29ydCgoYSwgYikgPT4gYi5uYW1lLnRvTG93ZXJDYXNlKCkubG9jYWxlQ29tcGFyZShhLm5hbWUudG9Mb3dlckNhc2UoKSkpO1xyXG5cdFx0XHR0aGlzLmRpcmVjdGlvbl91bnNlbGVjdGVkID0gIXRoaXMuZGlyZWN0aW9uX3Vuc2VsZWN0ZWQ7XHJcblx0XHR9ZWxzZSBpZighdGhpcy5kaXJlY3Rpb25fdW5zZWxlY3RlZCAmJiB0eXBlPT0gXCJ1bnNlbGVjdGVkXCIpIHtcclxuXHRcdFx0dGhpcy51bnNlbGVjdGVkSXRlbXMgPSB0aGlzLnVuc2VsZWN0ZWRJdGVtcy5zb3J0KChhLCBiKSA9PiBhLm5hbWUudG9Mb3dlckNhc2UoKS5sb2NhbGVDb21wYXJlKGIubmFtZS50b0xvd2VyQ2FzZSgpKSlcclxuXHRcdFx0dGhpcy5kaXJlY3Rpb25fdW5zZWxlY3RlZCA9ICF0aGlzLmRpcmVjdGlvbl91bnNlbGVjdGVkO1xyXG5cdFx0fVxyXG5cdFx0aWYodGhpcy5kaXJlY3Rpb25fc2VsZWN0ZWQgJiYgdHlwZT09IFwic2VsZWN0ZWRcIil7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5zb3J0KChhLCBiKSA9PiBiLm5hbWUudG9Mb3dlckNhc2UoKS5sb2NhbGVDb21wYXJlKGEubmFtZS50b0xvd2VyQ2FzZSgpKSk7XHJcblx0XHRcdHRoaXMuZGlyZWN0aW9uX3NlbGVjdGVkID0gIXRoaXMuZGlyZWN0aW9uX3NlbGVjdGVkO1xyXG5cdFx0fWVsc2UgaWYoIXRoaXMuZGlyZWN0aW9uX3NlbGVjdGVkICYmIHR5cGU9PSBcInNlbGVjdGVkXCIpIHtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLnNvcnQoKGEsIGIpID0+IGEubmFtZS50b0xvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUoYi5uYW1lLnRvTG93ZXJDYXNlKCkpKVxyXG5cdFx0XHR0aGlzLmRpcmVjdGlvbl9zZWxlY3RlZCA9ICF0aGlzLmRpcmVjdGlvbl9zZWxlY3RlZDtcclxuXHRcdH1cclxuXHRcclxuICB9XHJcblxyXG4gIFx0LyoqXHJcblx0ICogcmVtb3ZlIHRoZSBzZWxlY3RlZCBpdGVtIG9yIGRhdGFTb3VyY2UgZnJvbSB0aGUgc2VsZWN0ZWQgZGF0YVNvdXJjZSBjb2xsZWN0aW9uXHJcblx0ICogQHBhcmFtICBpdGVtIHRvIGJlIHJlbW92ZWRcclxuXHQgKiBAcmV0dXJuICBcclxuXHQgKi9cclxuXHRwdWJsaWMgcmVtb3ZlRnJvbVNlbGVjdGVkSXRlbXMoIGl0ZW0/OiBhbnkgKSA6IHZvaWQge1xyXG5cclxuXHRcdGNvbnN0IGNoYW5nZUl0ZW1zID0gKCBpdGVtIClcclxuXHRcdFx0PyBbIGl0ZW0gXVxyXG5cdFx0XHQ6IHRoaXMuZ2V0UGVuZGluZ1NlbGVjdGlvbkZyb21Db2xsZWN0aW9uKCB0aGlzLnNlbGVjdGVkSXRlbXMgKTtcclxuXHJcblx0XHR0aGlzLnBlbmRpbmdTZWxlY3Rpb24gPSBPYmplY3QuY3JlYXRlKCBudWxsICk7XHJcblx0XHR0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnJlbW92ZUl0ZW1zRnJvbUNvbGxlY3Rpb24oIHRoaXMuc2VsZWN0ZWRJdGVtcywgY2hhbmdlSXRlbXMgKTtcclxuXHRcdGNvbnN0IGNoYW5nZWREYXRhPSBjaGFuZ2VJdGVtc1xyXG5cdFx0XHQuY29uY2F0KCB0aGlzLnVuc2VsZWN0ZWRJdGVtcyApXHJcblx0XHRcdC5zb3J0KCB0aGlzLnNvcnRJdGVtT3BlcmF0b3IgKTtcclxuXHRcdHRoaXMudW5zZWxlY3RlZEl0ZW1zID0gY2hhbmdlZERhdGE7XHJcblx0XHR0aGlzLnVuc2VsZWN0ZWRJdGVtc0JlZm9yZVNlYXJjaCA9IGNoYW5nZWREYXRhO1xyXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW1zQmVmb3JlU2VhcmNoID0gdGhpcy5zZWxlY3RlZEl0ZW1zQmVmb3JlU2VhcmNoO1xyXG5cdFx0dGhpcy5zYXZlVG9TdG9yYWdlKHRoaXMuc2VsZWN0ZWRJdGVtcywgdGhpcy51bnNlbGVjdGVkSXRlbXMpO1xyXG5cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIHRvZ2dsZSB0aGUgcGVuZGluZyBzZWxlY3Rpb24gZm9yIHRoZSBnaXZlbiBpdGVtXHJcblx0ICogQHBhcmFtICBpdGVtIHRvIHRvZ2dsZVxyXG5cdCAqIEByZXR1cm4gIG5vbmVcclxuXHQgKi9cclxuXHRwdWJsaWMgdG9nZ2xlUGVuZGluZ1NlbGVjdGlvbiggaXRlbTphbnkgKSA6IHZvaWQge1xyXG5cdFx0dGhpcy5wZW5kaW5nU2VsZWN0aW9uWyBpdGVtLmlkIF0gPSAhIHRoaXMucGVuZGluZ1NlbGVjdGlvblsgaXRlbS5pZCBdO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRmlsdGVyIHRoZSBkYXRhIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBpbnB1dFxyXG5cdCAqIEBwYXJhbSAgc2VhcmNodmFsdWUgaW5wdXQgbGFiZWwgcHJvdmlkZWQgaW4gc2VhcmNoIGJveFxyXG5cdCAqIEByZXR1cm4gIG5vbmVcclxuXHQgKi9cclxuXHRmaWx0ZXJEYXRhKHNlYXJjaHZhbHVlOiBhbnksIHR5cGU6IHN0cmluZyk6IGFueSB7XHJcblx0XHRpZih0eXBlID09PSAndW5zZWxlY3RlZCcpe1xyXG5cdFx0XHRpZihzZWFyY2h2YWx1ZSA9PT0gXCJcIil7XHJcblx0XHRcdFx0dGhpcy51bnNlbGVjdGVkSXRlbXM9IHRoaXMudW5zZWxlY3RlZEl0ZW1zQmVmb3JlU2VhcmNoO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMudW5zZWxlY3RlZEl0ZW1zID0gdGhpcy5maWx0ZXJQaXBlLnRyYW5zZm9ybSh0aGlzLnVuc2VsZWN0ZWRJdGVtc0JlZm9yZVNlYXJjaCwgc2VhcmNodmFsdWUsICduYW1lJyk7XHJcblx0XHR9XHJcblx0XHRlbHNle1xyXG5cdFx0XHRpZihzZWFyY2h2YWx1ZSA9PT0gXCJcIil7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEl0ZW1zPSB0aGlzLnNlbGVjdGVkSXRlbXNCZWZvcmVTZWFyY2g7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5maWx0ZXJQaXBlLnRyYW5zZm9ybSh0aGlzLnNlbGVjdGVkSXRlbXNCZWZvcmVTZWFyY2gsIHNlYXJjaHZhbHVlLCAnbmFtZScpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRcclxuXHQvKipcclxuXHQgKiBnYXRoZXIgdGhlIGRhdGFTb3VyY2UgaW4gdGhlIGdpdmVuIGNvbGxlY3Rpb24gdGhhdCBhcmUgcGFydCBvZiB0aGUgY3VycmVudCBwZW5kaW5nIHNlbGVjdGlvblxyXG5cdCAqIEBwYXJhbSAgY29sbGVjdGlvbiBpbnB1dCBsYWJlbCBwcm92aWRlZCBpbiBzZWFyY2ggYm94XHJcblx0ICogQHJldHVybiAgc2VsZWN0ZWQgaXRlbXNcclxuXHQgKi9cclxuXHJcblx0cHVibGljIGdldFBlbmRpbmdTZWxlY3Rpb25Gcm9tQ29sbGVjdGlvbiggY29sbGVjdGlvbjogYW55W10gKSA6IGFueVtdIHtcclxuXHJcblx0XHRjb25zdCBzZWxlY3Rpb25Gcm9tQ29sbGVjdGlvbiA9IGNvbGxlY3Rpb24uZmlsdGVyKFxyXG5cdFx0XHQoIGl0ZW0gKSA9PiB7XHJcblx0XHRcdFx0cmV0dXJuKCBpdGVtLmlkIGluIHRoaXMucGVuZGluZ1NlbGVjdGlvbiApO1xyXG5cdFx0XHR9XHJcblx0XHQpO1xyXG5cclxuXHRcdHJldHVybiggc2VsZWN0aW9uRnJvbUNvbGxlY3Rpb24gKTtcclxuXHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiByZW1vdmUgdGhlIGdpdmVuIGRhdGFTb3VyY2UgZnJvbSB0aGUgZ2l2ZW4gY29sbGVjdGlvblxyXG5cdCAqIEBwYXJhbSAgY29sbGVjdGlvbiBhbmQgSXRlbXNUb1JlbW92ZVxyXG5cdCAqIEByZXR1cm4gIGEgbmV3IGNvbGxlY3Rpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgcmVtb3ZlSXRlbXNGcm9tQ29sbGVjdGlvbihcclxuXHRcdGNvbGxlY3Rpb246IGFueVtdLFxyXG5cdFx0SXRlbXNUb1JlbW92ZTogYW55W11cclxuXHRcdCkgOiBhbnlbXSB7XHJcblxyXG5cdFx0Y29uc3QgY29sbGVjdGlvbldpdGhvdXRJdGVtcyA9IGNvbGxlY3Rpb24uZmlsdGVyKFxyXG5cdFx0XHQoIGl0ZW0gKSA9PiB7XHJcblx0XHRcdFx0cmV0dXJuKCAhIEl0ZW1zVG9SZW1vdmUuaW5jbHVkZXMoIGl0ZW0gKSApO1xyXG5cdFx0XHR9XHJcblx0XHQpO1xyXG5cclxuXHRcdHJldHVybiggY29sbGVjdGlvbldpdGhvdXRJdGVtcyApO1xyXG5cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIHByb3ZpZGUgdGhlIHNvcnQgb3BlcmF0b3IgZm9yIHRoZSBkYXRhU291cmNlIGNvbGxlY3Rpb25cclxuXHQgKiBAcGFyYW0gIHR3byB2YWx1ZXMgdG8gY29tcGFyZVxyXG5cdCAqIEByZXR1cm4gIGEgdmFsdWUgYmFzZWQgb24gdGhlIHNvcnRpbmdcclxuXHQgKi9cclxuXHRwdWJsaWMgc29ydEl0ZW1PcGVyYXRvciggYTogYW55LCBiOiBhbnkgKSA6IG51bWJlciB7XHJcblx0XHRyZXR1cm4oIGEubmFtZS5sb2NhbGVDb21wYXJlKCBiLm5hbWUgKSApO1xyXG5cdH1cclxuXHJcblx0c2VsZWN0ZWRPdXRwdXRJdGVtcygpIHtcclxuXHRcdHRoaXMucnVjRXZlbnQuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG5cdH1cclxufVxyXG4gIiwiPGRpdiBjbGFzcz1cInt7Y3VzdG9tVGhlbWV9fVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJkdWFsLWxpc3QtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZHVhbC1zZWxlY3RcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxlZnRDb250YWluZXJcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJleGFtcGxlLWZ1bGwtd2lkdGggc2VhcmNoX0JveFwiIGFwcGVhcmFuY2U9XCJmaWxsXCIgKm5nSWY9XCJydWNJbnB1dERhdGEuZW5hYmxlU2VhcmNoXCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPlNlYXJjaDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IChrZXl1cCk9XCJmaWx0ZXJEYXRhKHNlYXJjaFRleHQsICd1bnNlbGVjdGVkJylcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleFwiICpuZ0lmPVwicnVjSW5wdXREYXRhLnNvcnRpbmdcIj48bWF0LWljb24gKGNsaWNrKT1cInNvcnRPbkNsaWNrKCd1bnNlbGVjdGVkJylcIj57eyAhZGlyZWN0aW9uX3Vuc2VsZWN0ZWQgPyAnYXJyb3dfZHJvcF9kb3duJyA6XHJcbiAgICAgICAgICAgICdhcnJvd19kcm9wX3VwJyB9fTwvbWF0LWljb24+IDwvc3Bhbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHVhbC1zZWxlY3RfX2xlZnRcIiBbbmdTdHlsZV09XCJ7J21heC1oZWlnaHQucHgnOiBoZWlnaHQsICd3aWR0aC5weCc6IHdpZHRofVwiPlxyXG4gICAgICAgICAgPG1hdC1saXN0IHJvbGU9XCJsaXN0XCIgY2xhc3M9XCJsaXN0X2NvbnRhaW5lclwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjZGtEcm9wTGlzdCAjdG9kb0xpc3Q9XCJjZGtEcm9wTGlzdFwiIFtjZGtEcm9wTGlzdERhdGFdPVwidW5zZWxlY3RlZEl0ZW1zXCJcclxuICAgICAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJbZG9uZUxpc3RdXCIgY2xhc3M9XCJleGFtcGxlLWxpc3RcIiAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgIDxtYXQtbGlzdC1pdGVtIHJvbGU9XCJsaXN0aXRlbVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHVuc2VsZWN0ZWRJdGVtc1wiIGNka0RyYWcgW2Rpc2FibGVkXT1cIiFpdGVtLmRpc2FibGVcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBlbmRpbmdTZWxlY3Rpb24oIGl0ZW0gKVwiIChkYmxjbGljayk9XCJhZGRUb1NlbGVjdGVkSXRlbXMoIGl0ZW0gKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImR1YWwtc2VsZWN0X19pdGVtXCIgW2NsYXNzLmR1YWwtc2VsZWN0X19pdGVtLS1zZWxlY3RlZF09XCJwZW5kaW5nU2VsZWN0aW9uWyBpdGVtLmlkIF1cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9tYXQtbGlzdD5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZHVhbC1zZWxlY3RfX2NvbnRyb2xzXCI+XHJcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkVG9TZWxlY3RlZEl0ZW1zKClcIiBjbGFzcz1cImR1YWwtc2VsZWN0X19jb250cm9sXCI+XHJcbiAgICAgICAgICAmIzEwMjM2O1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cInJlbW92ZUZyb21TZWxlY3RlZEl0ZW1zKClcIiBjbGFzcz1cImR1YWwtc2VsZWN0X19jb250cm9sXCI+XHJcbiAgICAgICAgICAmIzEwMjM1O1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFkZEFsbFRvU2VsZWN0ZWRJdGVtcygpXCIgY2xhc3M9XCJkdWFsLXNlbGVjdF9fY29udHJvbFwiPlxyXG4gICAgICAgICAgJiMxMDUwMztcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJyZW1vdmVBbGxGcm9tU2VsZWN0ZWRJdGVtcygpXCIgY2xhc3M9XCJkdWFsLXNlbGVjdF9fY29udHJvbFwiPlxyXG4gICAgICAgICAgJiMxMDUwMjtcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodENvbnRhaW5lclwiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImV4YW1wbGUtZnVsbC13aWR0aCBzZWFyY2hfQm94XCIgYXBwZWFyYW5jZT1cImZpbGxcIiAqbmdJZj1cInJ1Y0lucHV0RGF0YS5lbmFibGVTZWFyY2hcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+U2VhcmNoPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgKGtleXVwKT1cImZpbHRlckRhdGEoc2VhcmNoVGV4dFNlbGVjdGVkLCAnc2VsZWN0ZWQnKVwiIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFNlbGVjdGVkXCI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXhcIiAqbmdJZj1cInJ1Y0lucHV0RGF0YS5zb3J0aW5nXCI+PG1hdC1pY29uIChjbGljayk9XCJzb3J0T25DbGljaygnc2VsZWN0ZWQnKVwiPnt7ICFkaXJlY3Rpb25fc2VsZWN0ZWQgPyAnYXJyb3dfZHJvcF9kb3duJyA6XHJcbiAgICAgICAgICAgICdhcnJvd19kcm9wX3VwJyB9fTwvbWF0LWljb24+IDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImR1YWwtc2VsZWN0X19yaWdodFwiIFtuZ1N0eWxlXT1cInsnbWF4LWhlaWdodC5weCc6IGhlaWdodCwgJ3dpZHRoLnB4Jzogd2lkdGh9XCI+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICA8bWF0LWxpc3Qgcm9sZT1cImxpc3RcIiBjbGFzcz1cImxpc3RfY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2RrRHJvcExpc3QgI2RvbmVMaXN0PVwiY2RrRHJvcExpc3RcIiBbY2RrRHJvcExpc3REYXRhXT1cInNlbGVjdGVkSXRlbXNcIlxyXG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIlt0b2RvTGlzdF1cIiBjbGFzcz1cImV4YW1wbGUtbGlzdFwiIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XHJcblxyXG4gICAgICAgICAgICAgIDxtYXQtbGlzdC1pdGVtIGNka0RyYWcgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtc1wiIChjbGljayk9XCJ0b2dnbGVQZW5kaW5nU2VsZWN0aW9uKCBpdGVtIClcIlxyXG4gICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cInJlbW92ZUZyb21TZWxlY3RlZEl0ZW1zKCBpdGVtIClcIiBjbGFzcz1cImR1YWwtc2VsZWN0X19pdGVtIGR1YWwtc2VsZWN0X19pdGVtLS1uZXdcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmR1YWwtc2VsZWN0X19pdGVtLS1zZWxlY3RlZF09XCJwZW5kaW5nU2VsZWN0aW9uWyBpdGVtLmlkIF1cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9tYXQtbGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICA8YnV0dG9uIChjbGljayk9XCJzZWxlY3RlZE91dHB1dEl0ZW1zKClcIiBjbGFzcz1cImR1YWwtbGlzdC1idG5cIj5cclxuICAgICAgICBTdWJtaXRcclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { DualListSelectorComponent } from './dual-list-selector/dual-list-selector.component';
|
|
4
|
+
import { MatListModule } from '@angular/material/list';
|
|
5
|
+
import { FilterPipe } from '../pipes/filter.pipe';
|
|
6
|
+
import { MatChipsModule } from '@angular/material/chips';
|
|
7
|
+
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
8
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
9
|
+
import { MatInputModule } from '@angular/material/input';
|
|
10
|
+
import { FormsModule } from '@angular/forms';
|
|
11
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
12
|
+
import { MatSortModule } from '@angular/material/sort';
|
|
13
|
+
import { MatTableModule } from '@angular/material/table';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
export class RuclibDualListSelectorModule {
|
|
16
|
+
}
|
|
17
|
+
RuclibDualListSelectorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibDualListSelectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
18
|
+
RuclibDualListSelectorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: RuclibDualListSelectorModule, declarations: [DualListSelectorComponent, FilterPipe], imports: [CommonModule,
|
|
19
|
+
FormsModule,
|
|
20
|
+
MatListModule,
|
|
21
|
+
DragDropModule,
|
|
22
|
+
MatChipsModule,
|
|
23
|
+
MatFormFieldModule,
|
|
24
|
+
MatInputModule,
|
|
25
|
+
MatIconModule,
|
|
26
|
+
MatSortModule,
|
|
27
|
+
MatTableModule], exports: [DualListSelectorComponent] });
|
|
28
|
+
RuclibDualListSelectorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibDualListSelectorModule, imports: [CommonModule,
|
|
29
|
+
FormsModule,
|
|
30
|
+
MatListModule,
|
|
31
|
+
DragDropModule,
|
|
32
|
+
MatChipsModule,
|
|
33
|
+
MatFormFieldModule,
|
|
34
|
+
MatInputModule,
|
|
35
|
+
MatIconModule,
|
|
36
|
+
MatSortModule,
|
|
37
|
+
MatTableModule] });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibDualListSelectorModule, decorators: [{
|
|
39
|
+
type: NgModule,
|
|
40
|
+
args: [{
|
|
41
|
+
imports: [CommonModule,
|
|
42
|
+
FormsModule,
|
|
43
|
+
MatListModule,
|
|
44
|
+
DragDropModule,
|
|
45
|
+
MatChipsModule,
|
|
46
|
+
MatFormFieldModule,
|
|
47
|
+
MatInputModule,
|
|
48
|
+
MatIconModule,
|
|
49
|
+
MatSortModule,
|
|
50
|
+
MatTableModule
|
|
51
|
+
],
|
|
52
|
+
declarations: [DualListSelectorComponent, FilterPipe],
|
|
53
|
+
exports: [DualListSelectorComponent],
|
|
54
|
+
entryComponents: [DualListSelectorComponent],
|
|
55
|
+
}]
|
|
56
|
+
}] });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVjbGliLWR1YWwtbGlzdC1zZWxlY3Rvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3J1Y2xpYi9kdWFsLWxpc3Qtc2VsZWN0b3Ivc3JjL2xpYi9ydWNsaWItZHVhbC1saXN0LXNlbGVjdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFrQnpELE1BQU0sT0FBTyw0QkFBNEI7OzBIQUE1Qiw0QkFBNEI7MkhBQTVCLDRCQUE0QixpQkFKeEIseUJBQXlCLEVBQUMsVUFBVSxhQVh6QyxZQUFZO1FBQ3BCLFdBQVc7UUFDWCxhQUFhO1FBQ2IsY0FBYztRQUNkLGNBQWM7UUFDZCxrQkFBa0I7UUFDbEIsY0FBYztRQUNkLGFBQWE7UUFDYixhQUFhO1FBQ2IsY0FBYyxhQUdOLHlCQUF5QjsySEFHeEIsNEJBQTRCLFlBZjdCLFlBQVk7UUFDcEIsV0FBVztRQUNYLGFBQWE7UUFDYixjQUFjO1FBQ2QsY0FBYztRQUNkLGtCQUFrQjtRQUNsQixjQUFjO1FBQ2QsYUFBYTtRQUNiLGFBQWE7UUFDYixjQUFjOzRGQU1MLDRCQUE0QjtrQkFoQnhDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWTt3QkFDcEIsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGNBQWM7cUJBQ2Y7b0JBQ0QsWUFBWSxFQUFFLENBQUMseUJBQXlCLEVBQUMsVUFBVSxDQUFDO29CQUNwRCxPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztvQkFDcEMsZUFBZSxFQUFFLENBQUMseUJBQXlCLENBQUM7aUJBQzdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRHVhbExpc3RTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4vZHVhbC1saXN0LXNlbGVjdG9yL2R1YWwtbGlzdC1zZWxlY3Rvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XHJcbmltcG9ydCB7IEZpbHRlclBpcGUgfSBmcm9tICcuLi9waXBlcy9maWx0ZXIucGlwZSc7XHJcbmltcG9ydCB7TWF0Q2hpcHNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcclxuXHJcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5cclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRTb3J0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRMaXN0TW9kdWxlLFxyXG4gICAgRHJhZ0Ryb3BNb2R1bGUsXHJcbiAgICBNYXRDaGlwc01vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdFNvcnRNb2R1bGUsXHJcbiAgICBNYXRUYWJsZU1vZHVsZVxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbRHVhbExpc3RTZWxlY3RvckNvbXBvbmVudCxGaWx0ZXJQaXBlXSxcclxuICBleHBvcnRzOiBbRHVhbExpc3RTZWxlY3RvckNvbXBvbmVudF0sXHJcbiAgZW50cnlDb21wb25lbnRzOiBbRHVhbExpc3RTZWxlY3RvckNvbXBvbmVudF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSdWNsaWJEdWFsTGlzdFNlbGVjdG9yTW9kdWxlIHt9XHJcbiJdfQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class FilterPipe {
|
|
4
|
+
transform(items, searchText, key) {
|
|
5
|
+
if (items?.length == 0)
|
|
6
|
+
return [];
|
|
7
|
+
if (!searchText)
|
|
8
|
+
return items;
|
|
9
|
+
searchText = searchText.toLowerCase();
|
|
10
|
+
return items.filter(it => {
|
|
11
|
+
if (!key) {
|
|
12
|
+
return it.toLowerCase().includes(searchText);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
return it[key].toLowerCase().includes(searchText);
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
FilterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
21
|
+
FilterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: FilterPipe, name: "filter" });
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilterPipe, decorators: [{
|
|
23
|
+
type: Pipe,
|
|
24
|
+
args: [{
|
|
25
|
+
name: 'filter'
|
|
26
|
+
}]
|
|
27
|
+
}] });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3J1Y2xpYi9kdWFsLWxpc3Qtc2VsZWN0b3Ivc3JjL3BpcGVzL2ZpbHRlci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUlwRCxNQUFNLE9BQU8sVUFBVTtJQUNyQixTQUFTLENBQUMsS0FBWSxFQUFFLFVBQWtCLEVBQUUsR0FBVztRQUNyRCxJQUFJLEtBQUssRUFBRSxNQUFNLElBQUUsQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDOUIsVUFBVSxHQUFHLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDdkIsSUFBRyxDQUFDLEdBQUcsRUFBQztnQkFDTixPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDOUM7aUJBQU07Z0JBQ0wsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ25EO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt3R0FaVSxVQUFVO3NHQUFWLFVBQVU7NEZBQVYsVUFBVTtrQkFIdEIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsUUFBUTtpQkFDZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdmaWx0ZXInXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgdHJhbnNmb3JtKGl0ZW1zOiBhbnlbXSwgc2VhcmNoVGV4dDogc3RyaW5nLCBrZXk/OnN0cmluZyk6IGFueVtdIHtcclxuICAgIGlmIChpdGVtcz8ubGVuZ3RoPT0wKSByZXR1cm4gW107XHJcbiAgICBpZiAoIXNlYXJjaFRleHQpIHJldHVybiBpdGVtcztcclxuICAgIHNlYXJjaFRleHQgPSBzZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCk7XHJcbiAgICByZXR1cm4gaXRlbXMuZmlsdGVyKGl0ID0+IHtcclxuICAgICAgaWYoIWtleSl7XHJcbiAgICAgICAgcmV0dXJuIGl0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGV4dCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGl0W2tleV0udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXh0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVjLWxpYi1kdWFsLWxpc3Qtc2VsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3J1Y2xpYi9kdWFsLWxpc3Qtc2VsZWN0b3Ivc3JjL3J1Yy1saWItZHVhbC1saXN0LXNlbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|