@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 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 &#10236;\r\n </button>\r\n <button (click)=\"removeFromSelectedItems()\" class=\"dual-select__control\">\r\n &#10235;\r\n </button>\r\n <button (click)=\"addAllToSelectedItems()\" class=\"dual-select__control\">\r\n &#10503;\r\n </button>\r\n <button (click)=\"removeAllFromSelectedItems()\" class=\"dual-select__control\">\r\n &#10502;\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 &#10236;\r\n </button>\r\n <button (click)=\"removeFromSelectedItems()\" class=\"dual-select__control\">\r\n &#10235;\r\n </button>\r\n <button (click)=\"addAllToSelectedItems()\" class=\"dual-select__control\">\r\n &#10503;\r\n </button>\r\n <button (click)=\"removeAllFromSelectedItems()\" class=\"dual-select__control\">\r\n &#10502;\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