@revivejs/ng-multiselect-dropdown 2.0.0 → 4.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 +10 -7
- package/fesm2022/revivejs-ng-multiselect-dropdown.mjs +18 -16
- package/fesm2022/revivejs-ng-multiselect-dropdown.mjs.map +1 -1
- package/package.json +20 -18
- package/esm2022/click-outside.directive.mjs +0 -32
- package/esm2022/list-filter.pipe.mjs +0 -28
- package/esm2022/multiselect.component.mjs +0 -342
- package/esm2022/multiselect.model.mjs +0 -17
- package/esm2022/ng-multiselect-dropdown.module.mjs +0 -27
- package/esm2022/public_api.mjs +0 -3
- package/esm2022/revivejs-ng-multiselect-dropdown.mjs +0 -5
package/README.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# @revivejs/ng-multiselect-dropdown
|
|
2
2
|
|
|
3
|
-
> A polished **Angular
|
|
3
|
+
> A polished **Angular 19 multi-select dropdown** for template-driven and reactive forms, with search, single or multiple selection, custom data binding, and theme support.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@revivejs/ng-multiselect-dropdown)
|
|
6
6
|
[](https://www.npmjs.com/package/@revivejs/ng-multiselect-dropdown)
|
|
7
7
|
[](https://www.npmjs.com/package/@revivejs/ng-multiselect-dropdown)
|
|
8
8
|
[](https://github.com/alexandroit/ng-multiselect-dropdown/blob/master/LICENSE)
|
|
9
|
-
[](https://angular.dev)
|
|
10
|
+
[](https://www.typescriptlang.org)
|
|
11
11
|
[](https://github.com/alexandroit/ng-multiselect-dropdown/stargazers)
|
|
12
12
|
|
|
13
13
|
**[Documentation & Demo](https://alexandroit.github.io/ng-multiselect-dropdown/)** | **[Repository](https://github.com/alexandroit/ng-multiselect-dropdown)** | **[npm](https://www.npmjs.com/package/@revivejs/ng-multiselect-dropdown)** | **[Changelog](https://github.com/alexandroit/ng-multiselect-dropdown/blob/master/CHANGELOG.md)** | **[Custom Theme Guide](https://github.com/alexandroit/ng-multiselect-dropdown/blob/master/custom-theme.md)**
|
|
@@ -20,13 +20,13 @@
|
|
|
20
20
|
|
|
21
21
|
## Why this library?
|
|
22
22
|
|
|
23
|
-
`@revivejs/ng-multiselect-dropdown` is the actively maintained scoped continuation of this component, prepared for modern Angular
|
|
23
|
+
`@revivejs/ng-multiselect-dropdown` is the actively maintained scoped continuation of this component, prepared for modern Angular 19 applications and first-class npm publishing under the `@revivejs` scope.
|
|
24
24
|
|
|
25
25
|
## Features
|
|
26
26
|
|
|
27
27
|
| Feature | Supported |
|
|
28
28
|
| :--- | :---: |
|
|
29
|
-
| Angular
|
|
29
|
+
| Angular 19 release line | ✅ |
|
|
30
30
|
| Single and multiple selection | ✅ |
|
|
31
31
|
| Search and filter | ✅ |
|
|
32
32
|
| Template-driven forms (`ngModel`) | ✅ |
|
|
@@ -53,9 +53,12 @@
|
|
|
53
53
|
|
|
54
54
|
## Angular Version Compatibility
|
|
55
55
|
|
|
56
|
-
|
|
|
56
|
+
| `@revivejs/ng-multiselect-dropdown` | Angular | TypeScript | Node.js |
|
|
57
57
|
| :--- | :---: | :---: | :---: |
|
|
58
|
-
|
|
|
58
|
+
| `4.x` | `19.x` | `5.8` | `>= 18.19` |
|
|
59
|
+
| `3.x` | `18.x` | `5.5` | `>= 18.19` |
|
|
60
|
+
| `2.x` | `17.x` | `5.4` | `>= 18.13` |
|
|
61
|
+
| `1.x` | `16.x` | `5.0` | `>= 16.14` |
|
|
59
62
|
|
|
60
63
|
## Installation
|
|
61
64
|
|
|
@@ -37,14 +37,15 @@ class ListFilterPipe {
|
|
|
37
37
|
return !(filter.text && item.text && item.text.toString().toLowerCase().indexOf(filter.text.toString().toLowerCase()) === -1);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
41
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
40
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ListFilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
41
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: ListFilterPipe, isStandalone: false, name: "multiSelectFilter", pure: false });
|
|
42
42
|
}
|
|
43
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ListFilterPipe, decorators: [{
|
|
44
44
|
type: Pipe,
|
|
45
45
|
args: [{
|
|
46
46
|
name: 'multiSelectFilter',
|
|
47
|
-
pure: false
|
|
47
|
+
pure: false,
|
|
48
|
+
standalone: false
|
|
48
49
|
}]
|
|
49
50
|
}] });
|
|
50
51
|
|
|
@@ -63,13 +64,14 @@ class ClickOutsideDirective {
|
|
|
63
64
|
this.clickOutside.emit(event);
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
67
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
67
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
68
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: ClickOutsideDirective, isStandalone: false, selector: "[clickOutside]", outputs: { clickOutside: "clickOutside" }, host: { listeners: { "document:click": "onClick($event,$event.target)" } }, ngImport: i0 });
|
|
68
69
|
}
|
|
69
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ClickOutsideDirective, decorators: [{
|
|
70
71
|
type: Directive,
|
|
71
72
|
args: [{
|
|
72
|
-
selector: '[clickOutside]'
|
|
73
|
+
selector: '[clickOutside]',
|
|
74
|
+
standalone: false
|
|
73
75
|
}]
|
|
74
76
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { clickOutside: [{
|
|
75
77
|
type: Output
|
|
@@ -375,12 +377,12 @@ class MultiSelectComponent {
|
|
|
375
377
|
}
|
|
376
378
|
return fields;
|
|
377
379
|
}
|
|
378
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
379
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
380
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MultiSelectComponent, deps: [{ token: ListFilterPipe }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
381
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: MultiSelectComponent, isStandalone: false, selector: "ng-multiselect-dropdown", inputs: { placeholder: "placeholder", disabled: "disabled", settings: "settings", data: "data" }, outputs: { onFilterChange: "onFilterChange", onDropDownClose: "onDropDownClose", onSelect: "onSelect", onDeSelect: "onDeSelect", onSelectAll: "onSelectAll", onDeSelectAll: "onDeSelectAll" }, host: { listeners: { "blur": "onTouched()" } }, providers: [DROPDOWN_CONTROL_VALUE_ACCESSOR], ngImport: i0, template: "<div tabindex=\"0\" (blur)=\"onTouched()\" class=\"multiselect-dropdown\" (clickOutside)=\"closeDropdown()\">\n <div [class.disabled]=\"disabled\">\n <span tabindex=\"-1\" class=\"dropdown-btn\" (click)=\"toggleDropdown($event)\">\n <span *ngIf=\"selectedItems.length == 0\">{{_placeholder}}</span>\n <span *ngFor=\"let item of selectedItems; trackBy: trackByFn;let k = index\" class=\"selected-item-container\" >\n <span class=\"selected-item\" [hidden]=\"k > (this._settings.itemsShowLimit-1)\">\n <span >{{item.text}} </span>\n <a style=\"padding-left:2px;color:white\" (click)=\"onItemClick($event,item)\">x</a>\n </span>\n \n </span>\n <span [ngClass]=\"{ 'dropdown-multiselect--active': _settings.defaultOpen }\" style=\"float:right !important;padding-right:4px\">\n <span style=\"padding-right: 15px;\" *ngIf=\"itemShowRemaining()>0\">+{{itemShowRemaining()}}</span>\n <span class=\"dropdown-multiselect__caret\"></span>\n </span>\n </span>\n </div>\n <div class=\"dropdown-list\" [hidden]=\"!_settings.defaultOpen\">\n <ul class=\"item1\">\n <li (click)=\"toggleSelectAll()\" *ngIf=\"(_data.length > 0 || _settings.allowRemoteDataSearch) && !_settings.singleSelection && _settings.enableCheckAll && _settings.limitSelection===-1\" class=\"multiselect-item-checkbox\" style=\"border-bottom: 1px solid #ccc;padding:10px\">\n <input type=\"checkbox\" aria-label=\"multiselect-select-all\" [checked]=\"isAllItemsSelected()\" [disabled]=\"disabled || isLimitSelectionReached()\" />\n <div>{{!isAllItemsSelected() ? _settings.selectAllText : _settings.unSelectAllText}}</div>\n </li>\n <li class=\"filter-textbox\" *ngIf=\"(_data.length>0 || _settings.allowRemoteDataSearch) && _settings.allowSearchFilter\">\n <input type=\"text\" aria-label=\"multiselect-search\" [readOnly]=\"disabled\" [placeholder]=\"_settings.searchPlaceholderText\" [(ngModel)]=\"filter.text\" (ngModelChange)=\"onFilterTextChange($event)\">\n </li>\n </ul>\n <ul class=\"item2\" [style.maxHeight]=\"_settings.maxHeight+'px'\">\n <li *ngFor=\"let item of _data | multiSelectFilter:filter; let i = index;\" (click)=\"onItemClick($event,item)\" class=\"multiselect-item-checkbox\">\n <input type=\"checkbox\" [attr.aria-label]=\"item.text\" [checked]=\"isSelected(item)\" [disabled]=\"disabled || (isLimitSelectionReached() && !isSelected(item)) || item.isDisabled\" />\n <div>{{item.text}}</div>\n </li>\n <li class='no-filtered-data' *ngIf=\"_data.length != 0 && (_data | multiSelectFilter:filter).length == 0 && !_settings.allowRemoteDataSearch\">\n <h5>{{_settings.noFilteredDataAvailablePlaceholderText}}</h5>\n </li>\n <li class='no-data' *ngIf=\"_data.length == 0 && !_settings.allowRemoteDataSearch\">\n <h5>{{_settings.noDataAvailablePlaceholderText}}</h5>\n </li>\n </ul>\n </div>\n</div>\n", styles: [".multiselect-dropdown{position:relative;width:100%;font-size:inherit;font-family:inherit}.multiselect-dropdown .dropdown-btn{display:inline-block;border:1px solid #adadad;width:100%;padding:6px 12px;margin-bottom:0;font-weight:400;line-height:1.52857143;text-align:left;vertical-align:middle;cursor:pointer;background-image:none;border-radius:4px}.multiselect-dropdown .dropdown-btn .selected-item-container{display:flex;float:left}.multiselect-dropdown .dropdown-btn .selected-item-container .selected-item{border:1px solid #337ab7;margin-right:4px;background:#337ab7;padding:0 5px;color:#fff;border-radius:2px;float:left;max-width:100px}.multiselect-dropdown .dropdown-btn .selected-item-container .selected-item span{overflow:hidden;text-overflow:ellipsis}.multiselect-dropdown .dropdown-btn .selected-item-container .selected-item a{text-decoration:none}.multiselect-dropdown .dropdown-btn .selected-item:hover{box-shadow:1px 1px #959595}.multiselect-dropdown .dropdown-btn .dropdown-multiselect__caret{line-height:16px;display:block;position:absolute;box-sizing:border-box;width:40px;height:38px;right:1px;top:0;padding:4px 8px;margin:0;text-decoration:none;text-align:center;cursor:pointer;transition:transform .2s ease}.multiselect-dropdown .dropdown-btn .dropdown-multiselect__caret:before{position:relative;right:0;top:65%;color:#999;margin-top:4px;border-style:solid;border-width:8px 8px 0 8px;border-color:#999999 transparent;content:\"\"}.multiselect-dropdown .dropdown-btn .dropdown-multiselect--active .dropdown-multiselect__caret{transform:rotate(180deg)}.multiselect-dropdown .disabled>span{background-color:#eceeef}.dropdown-list{position:absolute;padding-top:6px;width:100%;z-index:9999;border:1px solid #ccc;border-radius:3px;background:#fff;margin-top:10px;box-shadow:0 1px 5px #959595}.dropdown-list ul{padding:0;list-style:none;overflow:auto;margin:0}.dropdown-list li{padding:6px 10px;cursor:pointer;text-align:left}.dropdown-list .filter-textbox{border-bottom:1px solid #ccc;position:relative;padding:10px}.dropdown-list .filter-textbox input{border:0px;width:100%;padding:0 0 0 26px}.dropdown-list .filter-textbox input:focus{outline:none}.multiselect-item-checkbox:hover{background-color:#e4e3e3}.multiselect-item-checkbox input[type=checkbox]{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.multiselect-item-checkbox input[type=checkbox]:focus+div:before,.multiselect-item-checkbox input[type=checkbox]:hover+div:before{border-color:#337ab7;background-color:#f2f2f2}.multiselect-item-checkbox input[type=checkbox]:active+div:before{transition-duration:0s}.multiselect-item-checkbox input[type=checkbox]+div{position:relative;padding-left:2em;vertical-align:middle;-webkit-user-select:none;user-select:none;cursor:pointer;margin:0;color:#000}.multiselect-item-checkbox input[type=checkbox]+div:before{box-sizing:content-box;content:\"\";color:#337ab7;position:absolute;top:50%;left:0;width:14px;height:14px;margin-top:-9px;border:2px solid #337ab7;text-align:center;transition:all .4s ease}.multiselect-item-checkbox input[type=checkbox]+div:after{box-sizing:content-box;content:\"\";background-color:#337ab7;position:absolute;top:50%;left:4px;width:10px;height:10px;margin-top:-5px;transform:scale(0);transform-origin:50%;transition:transform .2s ease-out}.multiselect-item-checkbox input[type=checkbox]:disabled+div:before{border-color:#ccc}.multiselect-item-checkbox input[type=checkbox]:disabled:focus+div:before .multiselect-item-checkbox input[type=checkbox]:disabled:hover+div:before{background-color:inherit}.multiselect-item-checkbox input[type=checkbox]:disabled:checked+div:before{background-color:#ccc}.multiselect-item-checkbox input[type=checkbox]+div:after{background-color:transparent;top:50%;left:4px;width:8px;height:3px;margin-top:-4px;border-style:solid;border-color:#fff;border-width:0 0 3px 3px;border-image:none;transform:rotate(-45deg) scale(0)}.multiselect-item-checkbox input[type=checkbox]:checked+div:after{content:\"\";transform:rotate(-45deg) scale(1);transition:transform .2s ease-out}.multiselect-item-checkbox input[type=checkbox]:checked+div:before{animation:borderscale .2s ease-in;background:#337ab7}.multiselect-item-checkbox input[type=checkbox]:checked+div:after{transform:rotate(-45deg) scale(1)}@keyframes borderscale{50%{box-shadow:0 0 0 2px #337ab7}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "directive", type: ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { kind: "pipe", type: ListFilterPipe, name: "multiSelectFilter" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
380
382
|
}
|
|
381
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
383
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MultiSelectComponent, decorators: [{
|
|
382
384
|
type: Component,
|
|
383
|
-
args: [{ selector: "ng-multiselect-dropdown", providers: [DROPDOWN_CONTROL_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div tabindex=\"0\" (blur)=\"onTouched()\" class=\"multiselect-dropdown\" (clickOutside)=\"closeDropdown()\">\n <div [class.disabled]=\"disabled\">\n <span tabindex=\"-1\" class=\"dropdown-btn\" (click)=\"toggleDropdown($event)\">\n <span *ngIf=\"selectedItems.length == 0\">{{_placeholder}}</span>\n <span *ngFor=\"let item of selectedItems; trackBy: trackByFn;let k = index\" class=\"selected-item-container\" >\n <span class=\"selected-item\" [hidden]=\"k > (this._settings.itemsShowLimit-1)\">\n <span >{{item.text}} </span>\n <a style=\"padding-left:2px;color:white\" (click)=\"onItemClick($event,item)\">x</a>\n </span>\n \n </span>\n <span [ngClass]=\"{ 'dropdown-multiselect--active': _settings.defaultOpen }\" style=\"float:right !important;padding-right:4px\">\n <span style=\"padding-right: 15px;\" *ngIf=\"itemShowRemaining()>0\">+{{itemShowRemaining()}}</span>\n <span class=\"dropdown-multiselect__caret\"></span>\n </span>\n </span>\n </div>\n <div class=\"dropdown-list\" [hidden]=\"!_settings.defaultOpen\">\n <ul class=\"item1\">\n <li (click)=\"toggleSelectAll()\" *ngIf=\"(_data.length > 0 || _settings.allowRemoteDataSearch) && !_settings.singleSelection && _settings.enableCheckAll && _settings.limitSelection===-1\" class=\"multiselect-item-checkbox\" style=\"border-bottom: 1px solid #ccc;padding:10px\">\n <input type=\"checkbox\" aria-label=\"multiselect-select-all\" [checked]=\"isAllItemsSelected()\" [disabled]=\"disabled || isLimitSelectionReached()\" />\n <div>{{!isAllItemsSelected() ? _settings.selectAllText : _settings.unSelectAllText}}</div>\n </li>\n <li class=\"filter-textbox\" *ngIf=\"(_data.length>0 || _settings.allowRemoteDataSearch) && _settings.allowSearchFilter\">\n <input type=\"text\" aria-label=\"multiselect-search\" [readOnly]=\"disabled\" [placeholder]=\"_settings.searchPlaceholderText\" [(ngModel)]=\"filter.text\" (ngModelChange)=\"onFilterTextChange($event)\">\n </li>\n </ul>\n <ul class=\"item2\" [style.maxHeight]=\"_settings.maxHeight+'px'\">\n <li *ngFor=\"let item of _data | multiSelectFilter:filter; let i = index;\" (click)=\"onItemClick($event,item)\" class=\"multiselect-item-checkbox\">\n <input type=\"checkbox\" [attr.aria-label]=\"item.text\" [checked]=\"isSelected(item)\" [disabled]=\"disabled || (isLimitSelectionReached() && !isSelected(item)) || item.isDisabled\" />\n <div>{{item.text}}</div>\n </li>\n <li class='no-filtered-data' *ngIf=\"_data.length != 0 && (_data | multiSelectFilter:filter).length == 0 && !_settings.allowRemoteDataSearch\">\n <h5>{{_settings.noFilteredDataAvailablePlaceholderText}}</h5>\n </li>\n <li class='no-data' *ngIf=\"_data.length == 0 && !_settings.allowRemoteDataSearch\">\n <h5>{{_settings.noDataAvailablePlaceholderText}}</h5>\n </li>\n </ul>\n </div>\n</div>\n", styles: [".multiselect-dropdown{position:relative;width:100%;font-size:inherit;font-family:inherit}.multiselect-dropdown .dropdown-btn{display:inline-block;border:1px solid #adadad;width:100%;padding:6px 12px;margin-bottom:0;font-weight:400;line-height:1.52857143;text-align:left;vertical-align:middle;cursor:pointer;background-image:none;border-radius:4px}.multiselect-dropdown .dropdown-btn .selected-item-container{display:flex;float:left}.multiselect-dropdown .dropdown-btn .selected-item-container .selected-item{border:1px solid #337ab7;margin-right:4px;background:#337ab7;padding:0 5px;color:#fff;border-radius:2px;float:left;max-width:100px}.multiselect-dropdown .dropdown-btn .selected-item-container .selected-item span{overflow:hidden;text-overflow:ellipsis}.multiselect-dropdown .dropdown-btn .selected-item-container .selected-item a{text-decoration:none}.multiselect-dropdown .dropdown-btn .selected-item:hover{box-shadow:1px 1px #959595}.multiselect-dropdown .dropdown-btn .dropdown-multiselect__caret{line-height:16px;display:block;position:absolute;box-sizing:border-box;width:40px;height:38px;right:1px;top:0;padding:4px 8px;margin:0;text-decoration:none;text-align:center;cursor:pointer;transition:transform .2s ease}.multiselect-dropdown .dropdown-btn .dropdown-multiselect__caret:before{position:relative;right:0;top:65%;color:#999;margin-top:4px;border-style:solid;border-width:8px 8px 0 8px;border-color:#999999 transparent;content:\"\"}.multiselect-dropdown .dropdown-btn .dropdown-multiselect--active .dropdown-multiselect__caret{transform:rotate(180deg)}.multiselect-dropdown .disabled>span{background-color:#eceeef}.dropdown-list{position:absolute;padding-top:6px;width:100%;z-index:9999;border:1px solid #ccc;border-radius:3px;background:#fff;margin-top:10px;box-shadow:0 1px 5px #959595}.dropdown-list ul{padding:0;list-style:none;overflow:auto;margin:0}.dropdown-list li{padding:6px 10px;cursor:pointer;text-align:left}.dropdown-list .filter-textbox{border-bottom:1px solid #ccc;position:relative;padding:10px}.dropdown-list .filter-textbox input{border:0px;width:100%;padding:0 0 0 26px}.dropdown-list .filter-textbox input:focus{outline:none}.multiselect-item-checkbox:hover{background-color:#e4e3e3}.multiselect-item-checkbox input[type=checkbox]{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.multiselect-item-checkbox input[type=checkbox]:focus+div:before,.multiselect-item-checkbox input[type=checkbox]:hover+div:before{border-color:#337ab7;background-color:#f2f2f2}.multiselect-item-checkbox input[type=checkbox]:active+div:before{transition-duration:0s}.multiselect-item-checkbox input[type=checkbox]+div{position:relative;padding-left:2em;vertical-align:middle;-webkit-user-select:none;user-select:none;cursor:pointer;margin:0;color:#000}.multiselect-item-checkbox input[type=checkbox]+div:before{box-sizing:content-box;content:\"\";color:#337ab7;position:absolute;top:50%;left:0;width:14px;height:14px;margin-top:-9px;border:2px solid #337ab7;text-align:center;transition:all .4s ease}.multiselect-item-checkbox input[type=checkbox]+div:after{box-sizing:content-box;content:\"\";background-color:#337ab7;position:absolute;top:50%;left:4px;width:10px;height:10px;margin-top:-5px;transform:scale(0);transform-origin:50%;transition:transform .2s ease-out}.multiselect-item-checkbox input[type=checkbox]:disabled+div:before{border-color:#ccc}.multiselect-item-checkbox input[type=checkbox]:disabled:focus+div:before .multiselect-item-checkbox input[type=checkbox]:disabled:hover+div:before{background-color:inherit}.multiselect-item-checkbox input[type=checkbox]:disabled:checked+div:before{background-color:#ccc}.multiselect-item-checkbox input[type=checkbox]+div:after{background-color:transparent;top:50%;left:4px;width:8px;height:3px;margin-top:-4px;border-style:solid;border-color:#fff;border-width:0 0 3px 3px;border-image:none;transform:rotate(-45deg) scale(0)}.multiselect-item-checkbox input[type=checkbox]:checked+div:after{content:\"\";transform:rotate(-45deg) scale(1);transition:transform .2s ease-out}.multiselect-item-checkbox input[type=checkbox]:checked+div:before{animation:borderscale .2s ease-in;background:#337ab7}.multiselect-item-checkbox input[type=checkbox]:checked+div:after{transform:rotate(-45deg) scale(1)}@keyframes borderscale{50%{box-shadow:0 0 0 2px #337ab7}}\n"] }]
|
|
385
|
+
args: [{ selector: "ng-multiselect-dropdown", standalone: false, providers: [DROPDOWN_CONTROL_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div tabindex=\"0\" (blur)=\"onTouched()\" class=\"multiselect-dropdown\" (clickOutside)=\"closeDropdown()\">\n <div [class.disabled]=\"disabled\">\n <span tabindex=\"-1\" class=\"dropdown-btn\" (click)=\"toggleDropdown($event)\">\n <span *ngIf=\"selectedItems.length == 0\">{{_placeholder}}</span>\n <span *ngFor=\"let item of selectedItems; trackBy: trackByFn;let k = index\" class=\"selected-item-container\" >\n <span class=\"selected-item\" [hidden]=\"k > (this._settings.itemsShowLimit-1)\">\n <span >{{item.text}} </span>\n <a style=\"padding-left:2px;color:white\" (click)=\"onItemClick($event,item)\">x</a>\n </span>\n \n </span>\n <span [ngClass]=\"{ 'dropdown-multiselect--active': _settings.defaultOpen }\" style=\"float:right !important;padding-right:4px\">\n <span style=\"padding-right: 15px;\" *ngIf=\"itemShowRemaining()>0\">+{{itemShowRemaining()}}</span>\n <span class=\"dropdown-multiselect__caret\"></span>\n </span>\n </span>\n </div>\n <div class=\"dropdown-list\" [hidden]=\"!_settings.defaultOpen\">\n <ul class=\"item1\">\n <li (click)=\"toggleSelectAll()\" *ngIf=\"(_data.length > 0 || _settings.allowRemoteDataSearch) && !_settings.singleSelection && _settings.enableCheckAll && _settings.limitSelection===-1\" class=\"multiselect-item-checkbox\" style=\"border-bottom: 1px solid #ccc;padding:10px\">\n <input type=\"checkbox\" aria-label=\"multiselect-select-all\" [checked]=\"isAllItemsSelected()\" [disabled]=\"disabled || isLimitSelectionReached()\" />\n <div>{{!isAllItemsSelected() ? _settings.selectAllText : _settings.unSelectAllText}}</div>\n </li>\n <li class=\"filter-textbox\" *ngIf=\"(_data.length>0 || _settings.allowRemoteDataSearch) && _settings.allowSearchFilter\">\n <input type=\"text\" aria-label=\"multiselect-search\" [readOnly]=\"disabled\" [placeholder]=\"_settings.searchPlaceholderText\" [(ngModel)]=\"filter.text\" (ngModelChange)=\"onFilterTextChange($event)\">\n </li>\n </ul>\n <ul class=\"item2\" [style.maxHeight]=\"_settings.maxHeight+'px'\">\n <li *ngFor=\"let item of _data | multiSelectFilter:filter; let i = index;\" (click)=\"onItemClick($event,item)\" class=\"multiselect-item-checkbox\">\n <input type=\"checkbox\" [attr.aria-label]=\"item.text\" [checked]=\"isSelected(item)\" [disabled]=\"disabled || (isLimitSelectionReached() && !isSelected(item)) || item.isDisabled\" />\n <div>{{item.text}}</div>\n </li>\n <li class='no-filtered-data' *ngIf=\"_data.length != 0 && (_data | multiSelectFilter:filter).length == 0 && !_settings.allowRemoteDataSearch\">\n <h5>{{_settings.noFilteredDataAvailablePlaceholderText}}</h5>\n </li>\n <li class='no-data' *ngIf=\"_data.length == 0 && !_settings.allowRemoteDataSearch\">\n <h5>{{_settings.noDataAvailablePlaceholderText}}</h5>\n </li>\n </ul>\n </div>\n</div>\n", styles: [".multiselect-dropdown{position:relative;width:100%;font-size:inherit;font-family:inherit}.multiselect-dropdown .dropdown-btn{display:inline-block;border:1px solid #adadad;width:100%;padding:6px 12px;margin-bottom:0;font-weight:400;line-height:1.52857143;text-align:left;vertical-align:middle;cursor:pointer;background-image:none;border-radius:4px}.multiselect-dropdown .dropdown-btn .selected-item-container{display:flex;float:left}.multiselect-dropdown .dropdown-btn .selected-item-container .selected-item{border:1px solid #337ab7;margin-right:4px;background:#337ab7;padding:0 5px;color:#fff;border-radius:2px;float:left;max-width:100px}.multiselect-dropdown .dropdown-btn .selected-item-container .selected-item span{overflow:hidden;text-overflow:ellipsis}.multiselect-dropdown .dropdown-btn .selected-item-container .selected-item a{text-decoration:none}.multiselect-dropdown .dropdown-btn .selected-item:hover{box-shadow:1px 1px #959595}.multiselect-dropdown .dropdown-btn .dropdown-multiselect__caret{line-height:16px;display:block;position:absolute;box-sizing:border-box;width:40px;height:38px;right:1px;top:0;padding:4px 8px;margin:0;text-decoration:none;text-align:center;cursor:pointer;transition:transform .2s ease}.multiselect-dropdown .dropdown-btn .dropdown-multiselect__caret:before{position:relative;right:0;top:65%;color:#999;margin-top:4px;border-style:solid;border-width:8px 8px 0 8px;border-color:#999999 transparent;content:\"\"}.multiselect-dropdown .dropdown-btn .dropdown-multiselect--active .dropdown-multiselect__caret{transform:rotate(180deg)}.multiselect-dropdown .disabled>span{background-color:#eceeef}.dropdown-list{position:absolute;padding-top:6px;width:100%;z-index:9999;border:1px solid #ccc;border-radius:3px;background:#fff;margin-top:10px;box-shadow:0 1px 5px #959595}.dropdown-list ul{padding:0;list-style:none;overflow:auto;margin:0}.dropdown-list li{padding:6px 10px;cursor:pointer;text-align:left}.dropdown-list .filter-textbox{border-bottom:1px solid #ccc;position:relative;padding:10px}.dropdown-list .filter-textbox input{border:0px;width:100%;padding:0 0 0 26px}.dropdown-list .filter-textbox input:focus{outline:none}.multiselect-item-checkbox:hover{background-color:#e4e3e3}.multiselect-item-checkbox input[type=checkbox]{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.multiselect-item-checkbox input[type=checkbox]:focus+div:before,.multiselect-item-checkbox input[type=checkbox]:hover+div:before{border-color:#337ab7;background-color:#f2f2f2}.multiselect-item-checkbox input[type=checkbox]:active+div:before{transition-duration:0s}.multiselect-item-checkbox input[type=checkbox]+div{position:relative;padding-left:2em;vertical-align:middle;-webkit-user-select:none;user-select:none;cursor:pointer;margin:0;color:#000}.multiselect-item-checkbox input[type=checkbox]+div:before{box-sizing:content-box;content:\"\";color:#337ab7;position:absolute;top:50%;left:0;width:14px;height:14px;margin-top:-9px;border:2px solid #337ab7;text-align:center;transition:all .4s ease}.multiselect-item-checkbox input[type=checkbox]+div:after{box-sizing:content-box;content:\"\";background-color:#337ab7;position:absolute;top:50%;left:4px;width:10px;height:10px;margin-top:-5px;transform:scale(0);transform-origin:50%;transition:transform .2s ease-out}.multiselect-item-checkbox input[type=checkbox]:disabled+div:before{border-color:#ccc}.multiselect-item-checkbox input[type=checkbox]:disabled:focus+div:before .multiselect-item-checkbox input[type=checkbox]:disabled:hover+div:before{background-color:inherit}.multiselect-item-checkbox input[type=checkbox]:disabled:checked+div:before{background-color:#ccc}.multiselect-item-checkbox input[type=checkbox]+div:after{background-color:transparent;top:50%;left:4px;width:8px;height:3px;margin-top:-4px;border-style:solid;border-color:#fff;border-width:0 0 3px 3px;border-image:none;transform:rotate(-45deg) scale(0)}.multiselect-item-checkbox input[type=checkbox]:checked+div:after{content:\"\";transform:rotate(-45deg) scale(1);transition:transform .2s ease-out}.multiselect-item-checkbox input[type=checkbox]:checked+div:before{animation:borderscale .2s ease-in;background:#337ab7}.multiselect-item-checkbox input[type=checkbox]:checked+div:after{transform:rotate(-45deg) scale(1)}@keyframes borderscale{50%{box-shadow:0 0 0 2px #337ab7}}\n"] }]
|
|
384
386
|
}], ctorParameters: () => [{ type: ListFilterPipe }, { type: i0.ChangeDetectorRef }], propDecorators: { placeholder: [{
|
|
385
387
|
type: Input
|
|
386
388
|
}], disabled: [{
|
|
@@ -418,11 +420,11 @@ class NgMultiSelectDropDownModule {
|
|
|
418
420
|
ngModule: NgMultiSelectDropDownModule
|
|
419
421
|
};
|
|
420
422
|
}
|
|
421
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
422
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
423
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
423
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: NgMultiSelectDropDownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
424
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: NgMultiSelectDropDownModule, declarations: [MultiSelectComponent, ClickOutsideDirective, ListFilterPipe], imports: [CommonModule, FormsModule], exports: [MultiSelectComponent] });
|
|
425
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: NgMultiSelectDropDownModule, providers: [ListFilterPipe], imports: [CommonModule, FormsModule] });
|
|
424
426
|
}
|
|
425
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
427
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: NgMultiSelectDropDownModule, decorators: [{
|
|
426
428
|
type: NgModule,
|
|
427
429
|
args: [{
|
|
428
430
|
imports: [CommonModule, FormsModule],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revivejs-ng-multiselect-dropdown.mjs","sources":["../../src/ng-multiselect-dropdown/src/multiselect.model.ts","../../src/ng-multiselect-dropdown/src/list-filter.pipe.ts","../../src/ng-multiselect-dropdown/src/click-outside.directive.ts","../../src/ng-multiselect-dropdown/src/multiselect.component.ts","../../src/ng-multiselect-dropdown/src/multi-select.component.html","../../src/ng-multiselect-dropdown/src/ng-multiselect-dropdown.module.ts","../../src/ng-multiselect-dropdown/src/revivejs-ng-multiselect-dropdown.ts"],"sourcesContent":["export interface IDropdownSettings {\n singleSelection?: boolean;\n idField?: string;\n textField?: string;\n disabledField?: string;\n enableCheckAll?: boolean;\n selectAllText?: string;\n unSelectAllText?: string;\n allowSearchFilter?: boolean;\n clearSearchFilter?: boolean;\n maxHeight?: number;\n itemsShowLimit?: number;\n limitSelection?: number;\n searchPlaceholderText?: string;\n noDataAvailablePlaceholderText?: string;\n noFilteredDataAvailablePlaceholderText?: string;\n closeDropDownOnSelection?: boolean;\n showSelectedItemsAtTop?: boolean;\n defaultOpen?: boolean;\n allowRemoteDataSearch?: boolean;\n}\n\nexport class ListItem {\n id: String | number;\n text: String | number;\n isDisabled?: boolean;\n\n public constructor(source: any) {\n if (typeof source === 'string' || typeof source === 'number') {\n this.id = this.text = source;\n this.isDisabled = false;\n }\n if (typeof source === 'object') {\n this.id = source.id;\n this.text = source.text;\n this.isDisabled = source.isDisabled;\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { ListItem } from './multiselect.model';\n\n@Pipe({\n name: 'multiSelectFilter',\n pure: false\n})\nexport class ListFilterPipe implements PipeTransform {\n transform(items: ListItem[], filter: ListItem): ListItem[] {\n if (!items || !filter) {\n return items;\n }\n return items.filter((item: ListItem) => this.applyFilter(item, filter));\n }\n\n applyFilter(item: ListItem, filter: ListItem): boolean {\n if (typeof item.text === 'string' && typeof filter.text === 'string') {\n return !(filter.text && item.text && item.text.toLowerCase().indexOf(filter.text.toLowerCase()) === -1);\n } else {\n return !(filter.text && item.text && item.text.toString().toLowerCase().indexOf(filter.text.toString().toLowerCase()) === -1);\n }\n }\n}\n","import {Directive, ElementRef, Output, EventEmitter, HostListener} from '@angular/core';\n\n@Directive({\n selector: '[clickOutside]'\n})\nexport class ClickOutsideDirective {\n constructor(private _elementRef: ElementRef) {\n }\n\n @Output()\n public clickOutside = new EventEmitter<MouseEvent>();\n\n @HostListener('document:click', ['$event', '$event.target'])\n public onClick(event: MouseEvent, targetElement: HTMLElement): void {\n if (!targetElement) {\n return;\n }\n\n const clickedInside = this._elementRef.nativeElement.contains(targetElement);\n if (!clickedInside) {\n this.clickOutside.emit(event);\n }\n }\n}\n","import { Component, HostListener, forwardRef, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from \"@angular/forms\";\nimport { ListItem, IDropdownSettings } from \"./multiselect.model\";\nimport { ListFilterPipe } from \"./list-filter.pipe\";\n\nexport const DROPDOWN_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectComponent),\n multi: true\n};\nconst noop = () => {};\n\n@Component({\n selector: \"ng-multiselect-dropdown\",\n templateUrl: \"./multi-select.component.html\",\n styleUrls: [\"./multi-select.component.scss\"],\n providers: [DROPDOWN_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MultiSelectComponent implements ControlValueAccessor {\n public _settings: IDropdownSettings;\n public _data: Array<ListItem> = [];\n public selectedItems: Array<ListItem> = [];\n public isDropdownOpen = true;\n _placeholder = \"Select\";\n private _sourceDataType = null; // to keep note of the source data type. could be array of string/number/object\n private _sourceDataFields: Array<String> = []; // store source data fields names\n filter: ListItem = new ListItem(this.data);\n defaultSettings: IDropdownSettings = {\n singleSelection: false,\n idField: \"id\",\n textField: \"text\",\n disabledField: \"isDisabled\",\n enableCheckAll: true,\n selectAllText: \"Select All\",\n unSelectAllText: \"UnSelect All\",\n allowSearchFilter: false,\n limitSelection: -1,\n clearSearchFilter: true,\n maxHeight: 197,\n itemsShowLimit: 999999999999,\n searchPlaceholderText: \"Search\",\n noDataAvailablePlaceholderText: \"No data available\",\n noFilteredDataAvailablePlaceholderText: \"No filtered data available\",\n closeDropDownOnSelection: false,\n showSelectedItemsAtTop: false,\n defaultOpen: false,\n allowRemoteDataSearch: false\n };\n\n @Input()\n public set placeholder(value: string) {\n if (value) {\n this._placeholder = value;\n } else {\n this._placeholder = \"Select\";\n }\n }\n @Input()\n disabled = false;\n\n @Input()\n public set settings(value: IDropdownSettings) {\n if (value) {\n this._settings = Object.assign(this.defaultSettings, value);\n } else {\n this._settings = Object.assign(this.defaultSettings);\n }\n }\n\n @Input()\n public set data(value: Array<any>) {\n if (!value) {\n this._data = [];\n } else {\n const firstItem = value[0];\n this._sourceDataType = typeof firstItem;\n this._sourceDataFields = this.getFields(firstItem);\n this._data = value.map((item: any) =>\n typeof item === \"string\" || typeof item === \"number\"\n ? new ListItem(item)\n : new ListItem({\n id: item[this._settings.idField],\n text: item[this._settings.textField],\n isDisabled: item[this._settings.disabledField]\n })\n );\n }\n }\n\n @Output(\"onFilterChange\")\n onFilterChange: EventEmitter<ListItem> = new EventEmitter<any>();\n @Output(\"onDropDownClose\")\n onDropDownClose: EventEmitter<ListItem> = new EventEmitter<any>();\n\n @Output(\"onSelect\")\n onSelect: EventEmitter<ListItem> = new EventEmitter<any>();\n\n @Output(\"onDeSelect\")\n onDeSelect: EventEmitter<ListItem> = new EventEmitter<any>();\n\n @Output(\"onSelectAll\")\n onSelectAll: EventEmitter<Array<ListItem>> = new EventEmitter<Array<any>>();\n\n @Output(\"onDeSelectAll\")\n onDeSelectAll: EventEmitter<Array<ListItem>> = new EventEmitter<Array<any>>();\n\n private onTouchedCallback: () => void = noop;\n private onChangeCallback: (_: any) => void = noop;\n\n onFilterTextChange($event) {\n this.onFilterChange.emit($event);\n }\n\n constructor(\n private listFilterPipe:ListFilterPipe,\n private cdr: ChangeDetectorRef\n ) {}\n\n onItemClick($event: any, item: ListItem) {\n if (this.disabled || item.isDisabled) {\n return false;\n }\n\n const found = this.isSelected(item);\n const allowAdd = this._settings.limitSelection === -1 || (this._settings.limitSelection > 0 && this.selectedItems.length < this._settings.limitSelection);\n if (!found) {\n if (allowAdd) {\n this.addSelected(item);\n }\n } else {\n this.removeSelected(item);\n }\n if (this._settings.singleSelection && this._settings.closeDropDownOnSelection) {\n this.closeDropdown();\n }\n }\n\n writeValue(value: any) {\n if (value !== undefined && value !== null && value.length > 0) {\n if (this._settings.singleSelection) {\n try {\n if (value.length >= 1) {\n const firstItem = value[0];\n this.selectedItems = [\n typeof firstItem === \"string\" || typeof firstItem === \"number\"\n ? new ListItem(firstItem)\n : new ListItem({\n id: firstItem[this._settings.idField],\n text: firstItem[this._settings.textField],\n isDisabled: firstItem[this._settings.disabledField]\n })\n ];\n }\n } catch (e) {\n // console.error(e.body.msg);\n }\n } else {\n const _data = value.map((item: any) =>\n typeof item === \"string\" || typeof item === \"number\"\n ? new ListItem(item)\n : new ListItem({\n id: item[this._settings.idField],\n text: item[this._settings.textField],\n isDisabled: item[this._settings.disabledField]\n })\n );\n if (this._settings.limitSelection > 0) {\n this.selectedItems = _data.splice(0, this._settings.limitSelection);\n } else {\n this.selectedItems = _data;\n }\n }\n } else {\n this.selectedItems = [];\n }\n this.onChangeCallback(value);\n\n this.cdr.markForCheck();\n }\n\n // From ControlValueAccessor interface\n registerOnChange(fn: any) {\n this.onChangeCallback = fn;\n }\n\n // From ControlValueAccessor interface\n registerOnTouched(fn: any) {\n this.onTouchedCallback = fn;\n }\n\n // Set touched on blur\n @HostListener(\"blur\")\n public onTouched() {\n // this.closeDropdown();\n this.onTouchedCallback();\n }\n\n trackByFn(index, item) {\n return item.id;\n }\n\n isSelected(clickedItem: ListItem) {\n let found = false;\n this.selectedItems.forEach(item => {\n if (clickedItem.id === item.id) {\n found = true;\n }\n });\n return found;\n }\n\n isLimitSelectionReached(): boolean {\n return this._settings.limitSelection === this.selectedItems.length;\n }\n\n isAllItemsSelected(): boolean {\n // get disabld item count\n let filteredItems = this.listFilterPipe.transform(this._data,this.filter);\n const itemDisabledCount = filteredItems.filter(item => item.isDisabled).length;\n // take disabled items into consideration when checking\n if ((!this.data || this.data.length === 0) && this._settings.allowRemoteDataSearch) {\n return false;\n }\n return filteredItems.length === this.selectedItems.length + itemDisabledCount;\n }\n\n showButton(): boolean {\n if (!this._settings.singleSelection) {\n if (this._settings.limitSelection > 0) {\n return false;\n }\n // this._settings.enableCheckAll = this._settings.limitSelection === -1 ? true : false;\n return true; // !this._settings.singleSelection && this._settings.enableCheckAll && this._data.length > 0;\n } else {\n // should be disabled in single selection mode\n return false;\n }\n }\n\n itemShowRemaining(): number {\n return this.selectedItems.length - this._settings.itemsShowLimit;\n }\n\n addSelected(item: ListItem) {\n if (this._settings.singleSelection) {\n this.selectedItems = [];\n this.selectedItems.push(item);\n } else {\n this.selectedItems.push(item);\n }\n this.onChangeCallback(this.emittedValue(this.selectedItems));\n this.onSelect.emit(this.emittedValue(item));\n }\n\n removeSelected(itemSel: ListItem) {\n this.selectedItems.forEach(item => {\n if (itemSel.id === item.id) {\n this.selectedItems.splice(this.selectedItems.indexOf(item), 1);\n }\n });\n this.onChangeCallback(this.emittedValue(this.selectedItems));\n this.onDeSelect.emit(this.emittedValue(itemSel));\n }\n\n emittedValue(val: any): any {\n const selected = [];\n if (Array.isArray(val)) {\n val.map(item => {\n selected.push(this.objectify(item));\n });\n } else {\n if (val) {\n return this.objectify(val);\n }\n }\n return selected;\n }\n\n objectify(val: ListItem) {\n if (this._sourceDataType === 'object') {\n const obj = {};\n obj[this._settings.idField] = val.id;\n obj[this._settings.textField] = val.text;\n if (this._sourceDataFields.includes(this._settings.disabledField)) {\n obj[this._settings.disabledField] = val.isDisabled;\n }\n return obj;\n }\n if (this._sourceDataType === 'number') {\n return Number(val.id);\n } else {\n return val.text;\n }\n }\n\n toggleDropdown(evt) {\n evt.preventDefault();\n if (this.disabled && this._settings.singleSelection) {\n return;\n }\n this._settings.defaultOpen = !this._settings.defaultOpen;\n if (!this._settings.defaultOpen) {\n this.onDropDownClose.emit();\n }\n }\n\n closeDropdown() {\n this._settings.defaultOpen = false;\n // clear search text\n if (this._settings.clearSearchFilter) {\n this.filter.text = \"\";\n }\n this.onDropDownClose.emit();\n }\n\n toggleSelectAll() {\n if (this.disabled) {\n return false;\n }\n if (!this.isAllItemsSelected()) {\n // filter out disabled item first before slicing\n this.selectedItems = this.listFilterPipe.transform(this._data,this.filter).filter(item => !item.isDisabled).slice();\n this.onSelectAll.emit(this.emittedValue(this.selectedItems));\n } else {\n this.selectedItems = [];\n this.onDeSelectAll.emit(this.emittedValue(this.selectedItems));\n }\n this.onChangeCallback(this.emittedValue(this.selectedItems));\n }\n\n getFields(inputData) {\n const fields = [];\n if (typeof inputData !== \"object\") {\n return fields;\n }\n // tslint:disable-next-line:forin\n for (const prop in inputData) {\n fields.push(prop);\n }\n return fields;\n }\n\n}\n","<div tabindex=\"0\" (blur)=\"onTouched()\" class=\"multiselect-dropdown\" (clickOutside)=\"closeDropdown()\">\n <div [class.disabled]=\"disabled\">\n <span tabindex=\"-1\" class=\"dropdown-btn\" (click)=\"toggleDropdown($event)\">\n <span *ngIf=\"selectedItems.length == 0\">{{_placeholder}}</span>\n <span *ngFor=\"let item of selectedItems; trackBy: trackByFn;let k = index\" class=\"selected-item-container\" >\n <span class=\"selected-item\" [hidden]=\"k > (this._settings.itemsShowLimit-1)\">\n <span >{{item.text}} </span>\n <a style=\"padding-left:2px;color:white\" (click)=\"onItemClick($event,item)\">x</a>\n </span>\n \n </span>\n <span [ngClass]=\"{ 'dropdown-multiselect--active': _settings.defaultOpen }\" style=\"float:right !important;padding-right:4px\">\n <span style=\"padding-right: 15px;\" *ngIf=\"itemShowRemaining()>0\">+{{itemShowRemaining()}}</span>\n <span class=\"dropdown-multiselect__caret\"></span>\n </span>\n </span>\n </div>\n <div class=\"dropdown-list\" [hidden]=\"!_settings.defaultOpen\">\n <ul class=\"item1\">\n <li (click)=\"toggleSelectAll()\" *ngIf=\"(_data.length > 0 || _settings.allowRemoteDataSearch) && !_settings.singleSelection && _settings.enableCheckAll && _settings.limitSelection===-1\" class=\"multiselect-item-checkbox\" style=\"border-bottom: 1px solid #ccc;padding:10px\">\n <input type=\"checkbox\" aria-label=\"multiselect-select-all\" [checked]=\"isAllItemsSelected()\" [disabled]=\"disabled || isLimitSelectionReached()\" />\n <div>{{!isAllItemsSelected() ? _settings.selectAllText : _settings.unSelectAllText}}</div>\n </li>\n <li class=\"filter-textbox\" *ngIf=\"(_data.length>0 || _settings.allowRemoteDataSearch) && _settings.allowSearchFilter\">\n <input type=\"text\" aria-label=\"multiselect-search\" [readOnly]=\"disabled\" [placeholder]=\"_settings.searchPlaceholderText\" [(ngModel)]=\"filter.text\" (ngModelChange)=\"onFilterTextChange($event)\">\n </li>\n </ul>\n <ul class=\"item2\" [style.maxHeight]=\"_settings.maxHeight+'px'\">\n <li *ngFor=\"let item of _data | multiSelectFilter:filter; let i = index;\" (click)=\"onItemClick($event,item)\" class=\"multiselect-item-checkbox\">\n <input type=\"checkbox\" [attr.aria-label]=\"item.text\" [checked]=\"isSelected(item)\" [disabled]=\"disabled || (isLimitSelectionReached() && !isSelected(item)) || item.isDisabled\" />\n <div>{{item.text}}</div>\n </li>\n <li class='no-filtered-data' *ngIf=\"_data.length != 0 && (_data | multiSelectFilter:filter).length == 0 && !_settings.allowRemoteDataSearch\">\n <h5>{{_settings.noFilteredDataAvailablePlaceholderText}}</h5>\n </li>\n <li class='no-data' *ngIf=\"_data.length == 0 && !_settings.allowRemoteDataSearch\">\n <h5>{{_settings.noDataAvailablePlaceholderText}}</h5>\n </li>\n </ul>\n </div>\n</div>\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MultiSelectComponent } from './multiselect.component';\nimport { ClickOutsideDirective } from './click-outside.directive';\nimport { ListFilterPipe } from './list-filter.pipe';\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n declarations: [MultiSelectComponent, ClickOutsideDirective, ListFilterPipe],\n providers: [ListFilterPipe],\n exports: [MultiSelectComponent]\n})\n\nexport class NgMultiSelectDropDownModule {\n static forRoot(): ModuleWithProviders<NgMultiSelectDropDownModule> {\n return {\n ngModule: NgMultiSelectDropDownModule\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ListFilterPipe","i4.ClickOutsideDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"revivejs-ng-multiselect-dropdown.mjs","sources":["../../src/ng-multiselect-dropdown/src/multiselect.model.ts","../../src/ng-multiselect-dropdown/src/list-filter.pipe.ts","../../src/ng-multiselect-dropdown/src/click-outside.directive.ts","../../src/ng-multiselect-dropdown/src/multiselect.component.ts","../../src/ng-multiselect-dropdown/src/multi-select.component.html","../../src/ng-multiselect-dropdown/src/ng-multiselect-dropdown.module.ts","../../src/ng-multiselect-dropdown/src/revivejs-ng-multiselect-dropdown.ts"],"sourcesContent":["export interface IDropdownSettings {\n singleSelection?: boolean;\n idField?: string;\n textField?: string;\n disabledField?: string;\n enableCheckAll?: boolean;\n selectAllText?: string;\n unSelectAllText?: string;\n allowSearchFilter?: boolean;\n clearSearchFilter?: boolean;\n maxHeight?: number;\n itemsShowLimit?: number;\n limitSelection?: number;\n searchPlaceholderText?: string;\n noDataAvailablePlaceholderText?: string;\n noFilteredDataAvailablePlaceholderText?: string;\n closeDropDownOnSelection?: boolean;\n showSelectedItemsAtTop?: boolean;\n defaultOpen?: boolean;\n allowRemoteDataSearch?: boolean;\n}\n\nexport class ListItem {\n id: String | number;\n text: String | number;\n isDisabled?: boolean;\n\n public constructor(source: any) {\n if (typeof source === 'string' || typeof source === 'number') {\n this.id = this.text = source;\n this.isDisabled = false;\n }\n if (typeof source === 'object') {\n this.id = source.id;\n this.text = source.text;\n this.isDisabled = source.isDisabled;\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { ListItem } from './multiselect.model';\n\n@Pipe({\n name: 'multiSelectFilter',\n pure: false,\n standalone: false\n})\nexport class ListFilterPipe implements PipeTransform {\n transform(items: ListItem[], filter: ListItem): ListItem[] {\n if (!items || !filter) {\n return items;\n }\n return items.filter((item: ListItem) => this.applyFilter(item, filter));\n }\n\n applyFilter(item: ListItem, filter: ListItem): boolean {\n if (typeof item.text === 'string' && typeof filter.text === 'string') {\n return !(filter.text && item.text && item.text.toLowerCase().indexOf(filter.text.toLowerCase()) === -1);\n } else {\n return !(filter.text && item.text && item.text.toString().toLowerCase().indexOf(filter.text.toString().toLowerCase()) === -1);\n }\n }\n}\n","import {Directive, ElementRef, Output, EventEmitter, HostListener} from '@angular/core';\n\n@Directive({\n selector: '[clickOutside]',\n standalone: false\n})\nexport class ClickOutsideDirective {\n constructor(private _elementRef: ElementRef) {\n }\n\n @Output()\n public clickOutside = new EventEmitter<MouseEvent>();\n\n @HostListener('document:click', ['$event', '$event.target'])\n public onClick(event: MouseEvent, targetElement: HTMLElement): void {\n if (!targetElement) {\n return;\n }\n\n const clickedInside = this._elementRef.nativeElement.contains(targetElement);\n if (!clickedInside) {\n this.clickOutside.emit(event);\n }\n }\n}\n","import { Component, HostListener, forwardRef, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from \"@angular/forms\";\nimport { ListItem, IDropdownSettings } from \"./multiselect.model\";\nimport { ListFilterPipe } from \"./list-filter.pipe\";\n\nexport const DROPDOWN_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectComponent),\n multi: true\n};\nconst noop = () => {};\n\n@Component({\n selector: \"ng-multiselect-dropdown\",\n standalone: false,\n templateUrl: \"./multi-select.component.html\",\n styleUrls: [\"./multi-select.component.scss\"],\n providers: [DROPDOWN_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MultiSelectComponent implements ControlValueAccessor {\n public _settings: IDropdownSettings;\n public _data: Array<ListItem> = [];\n public selectedItems: Array<ListItem> = [];\n public isDropdownOpen = true;\n _placeholder = \"Select\";\n private _sourceDataType = null; // to keep note of the source data type. could be array of string/number/object\n private _sourceDataFields: Array<String> = []; // store source data fields names\n filter: ListItem = new ListItem(this.data);\n defaultSettings: IDropdownSettings = {\n singleSelection: false,\n idField: \"id\",\n textField: \"text\",\n disabledField: \"isDisabled\",\n enableCheckAll: true,\n selectAllText: \"Select All\",\n unSelectAllText: \"UnSelect All\",\n allowSearchFilter: false,\n limitSelection: -1,\n clearSearchFilter: true,\n maxHeight: 197,\n itemsShowLimit: 999999999999,\n searchPlaceholderText: \"Search\",\n noDataAvailablePlaceholderText: \"No data available\",\n noFilteredDataAvailablePlaceholderText: \"No filtered data available\",\n closeDropDownOnSelection: false,\n showSelectedItemsAtTop: false,\n defaultOpen: false,\n allowRemoteDataSearch: false\n };\n\n @Input()\n public set placeholder(value: string) {\n if (value) {\n this._placeholder = value;\n } else {\n this._placeholder = \"Select\";\n }\n }\n @Input()\n disabled = false;\n\n @Input()\n public set settings(value: IDropdownSettings) {\n if (value) {\n this._settings = Object.assign(this.defaultSettings, value);\n } else {\n this._settings = Object.assign(this.defaultSettings);\n }\n }\n\n @Input()\n public set data(value: Array<any>) {\n if (!value) {\n this._data = [];\n } else {\n const firstItem = value[0];\n this._sourceDataType = typeof firstItem;\n this._sourceDataFields = this.getFields(firstItem);\n this._data = value.map((item: any) =>\n typeof item === \"string\" || typeof item === \"number\"\n ? new ListItem(item)\n : new ListItem({\n id: item[this._settings.idField],\n text: item[this._settings.textField],\n isDisabled: item[this._settings.disabledField]\n })\n );\n }\n }\n\n @Output(\"onFilterChange\")\n onFilterChange: EventEmitter<ListItem> = new EventEmitter<any>();\n @Output(\"onDropDownClose\")\n onDropDownClose: EventEmitter<ListItem> = new EventEmitter<any>();\n\n @Output(\"onSelect\")\n onSelect: EventEmitter<ListItem> = new EventEmitter<any>();\n\n @Output(\"onDeSelect\")\n onDeSelect: EventEmitter<ListItem> = new EventEmitter<any>();\n\n @Output(\"onSelectAll\")\n onSelectAll: EventEmitter<Array<ListItem>> = new EventEmitter<Array<any>>();\n\n @Output(\"onDeSelectAll\")\n onDeSelectAll: EventEmitter<Array<ListItem>> = new EventEmitter<Array<any>>();\n\n private onTouchedCallback: () => void = noop;\n private onChangeCallback: (_: any) => void = noop;\n\n onFilterTextChange($event) {\n this.onFilterChange.emit($event);\n }\n\n constructor(\n private listFilterPipe:ListFilterPipe,\n private cdr: ChangeDetectorRef\n ) {}\n\n onItemClick($event: any, item: ListItem) {\n if (this.disabled || item.isDisabled) {\n return false;\n }\n\n const found = this.isSelected(item);\n const allowAdd = this._settings.limitSelection === -1 || (this._settings.limitSelection > 0 && this.selectedItems.length < this._settings.limitSelection);\n if (!found) {\n if (allowAdd) {\n this.addSelected(item);\n }\n } else {\n this.removeSelected(item);\n }\n if (this._settings.singleSelection && this._settings.closeDropDownOnSelection) {\n this.closeDropdown();\n }\n }\n\n writeValue(value: any) {\n if (value !== undefined && value !== null && value.length > 0) {\n if (this._settings.singleSelection) {\n try {\n if (value.length >= 1) {\n const firstItem = value[0];\n this.selectedItems = [\n typeof firstItem === \"string\" || typeof firstItem === \"number\"\n ? new ListItem(firstItem)\n : new ListItem({\n id: firstItem[this._settings.idField],\n text: firstItem[this._settings.textField],\n isDisabled: firstItem[this._settings.disabledField]\n })\n ];\n }\n } catch (e) {\n // console.error(e.body.msg);\n }\n } else {\n const _data = value.map((item: any) =>\n typeof item === \"string\" || typeof item === \"number\"\n ? new ListItem(item)\n : new ListItem({\n id: item[this._settings.idField],\n text: item[this._settings.textField],\n isDisabled: item[this._settings.disabledField]\n })\n );\n if (this._settings.limitSelection > 0) {\n this.selectedItems = _data.splice(0, this._settings.limitSelection);\n } else {\n this.selectedItems = _data;\n }\n }\n } else {\n this.selectedItems = [];\n }\n this.onChangeCallback(value);\n\n this.cdr.markForCheck();\n }\n\n // From ControlValueAccessor interface\n registerOnChange(fn: any) {\n this.onChangeCallback = fn;\n }\n\n // From ControlValueAccessor interface\n registerOnTouched(fn: any) {\n this.onTouchedCallback = fn;\n }\n\n // Set touched on blur\n @HostListener(\"blur\")\n public onTouched() {\n // this.closeDropdown();\n this.onTouchedCallback();\n }\n\n trackByFn(index, item) {\n return item.id;\n }\n\n isSelected(clickedItem: ListItem) {\n let found = false;\n this.selectedItems.forEach(item => {\n if (clickedItem.id === item.id) {\n found = true;\n }\n });\n return found;\n }\n\n isLimitSelectionReached(): boolean {\n return this._settings.limitSelection === this.selectedItems.length;\n }\n\n isAllItemsSelected(): boolean {\n // get disabld item count\n let filteredItems = this.listFilterPipe.transform(this._data,this.filter);\n const itemDisabledCount = filteredItems.filter(item => item.isDisabled).length;\n // take disabled items into consideration when checking\n if ((!this.data || this.data.length === 0) && this._settings.allowRemoteDataSearch) {\n return false;\n }\n return filteredItems.length === this.selectedItems.length + itemDisabledCount;\n }\n\n showButton(): boolean {\n if (!this._settings.singleSelection) {\n if (this._settings.limitSelection > 0) {\n return false;\n }\n // this._settings.enableCheckAll = this._settings.limitSelection === -1 ? true : false;\n return true; // !this._settings.singleSelection && this._settings.enableCheckAll && this._data.length > 0;\n } else {\n // should be disabled in single selection mode\n return false;\n }\n }\n\n itemShowRemaining(): number {\n return this.selectedItems.length - this._settings.itemsShowLimit;\n }\n\n addSelected(item: ListItem) {\n if (this._settings.singleSelection) {\n this.selectedItems = [];\n this.selectedItems.push(item);\n } else {\n this.selectedItems.push(item);\n }\n this.onChangeCallback(this.emittedValue(this.selectedItems));\n this.onSelect.emit(this.emittedValue(item));\n }\n\n removeSelected(itemSel: ListItem) {\n this.selectedItems.forEach(item => {\n if (itemSel.id === item.id) {\n this.selectedItems.splice(this.selectedItems.indexOf(item), 1);\n }\n });\n this.onChangeCallback(this.emittedValue(this.selectedItems));\n this.onDeSelect.emit(this.emittedValue(itemSel));\n }\n\n emittedValue(val: any): any {\n const selected = [];\n if (Array.isArray(val)) {\n val.map(item => {\n selected.push(this.objectify(item));\n });\n } else {\n if (val) {\n return this.objectify(val);\n }\n }\n return selected;\n }\n\n objectify(val: ListItem) {\n if (this._sourceDataType === 'object') {\n const obj = {};\n obj[this._settings.idField] = val.id;\n obj[this._settings.textField] = val.text;\n if (this._sourceDataFields.includes(this._settings.disabledField)) {\n obj[this._settings.disabledField] = val.isDisabled;\n }\n return obj;\n }\n if (this._sourceDataType === 'number') {\n return Number(val.id);\n } else {\n return val.text;\n }\n }\n\n toggleDropdown(evt) {\n evt.preventDefault();\n if (this.disabled && this._settings.singleSelection) {\n return;\n }\n this._settings.defaultOpen = !this._settings.defaultOpen;\n if (!this._settings.defaultOpen) {\n this.onDropDownClose.emit();\n }\n }\n\n closeDropdown() {\n this._settings.defaultOpen = false;\n // clear search text\n if (this._settings.clearSearchFilter) {\n this.filter.text = \"\";\n }\n this.onDropDownClose.emit();\n }\n\n toggleSelectAll() {\n if (this.disabled) {\n return false;\n }\n if (!this.isAllItemsSelected()) {\n // filter out disabled item first before slicing\n this.selectedItems = this.listFilterPipe.transform(this._data,this.filter).filter(item => !item.isDisabled).slice();\n this.onSelectAll.emit(this.emittedValue(this.selectedItems));\n } else {\n this.selectedItems = [];\n this.onDeSelectAll.emit(this.emittedValue(this.selectedItems));\n }\n this.onChangeCallback(this.emittedValue(this.selectedItems));\n }\n\n getFields(inputData) {\n const fields = [];\n if (typeof inputData !== \"object\") {\n return fields;\n }\n // tslint:disable-next-line:forin\n for (const prop in inputData) {\n fields.push(prop);\n }\n return fields;\n }\n\n}\n","<div tabindex=\"0\" (blur)=\"onTouched()\" class=\"multiselect-dropdown\" (clickOutside)=\"closeDropdown()\">\n <div [class.disabled]=\"disabled\">\n <span tabindex=\"-1\" class=\"dropdown-btn\" (click)=\"toggleDropdown($event)\">\n <span *ngIf=\"selectedItems.length == 0\">{{_placeholder}}</span>\n <span *ngFor=\"let item of selectedItems; trackBy: trackByFn;let k = index\" class=\"selected-item-container\" >\n <span class=\"selected-item\" [hidden]=\"k > (this._settings.itemsShowLimit-1)\">\n <span >{{item.text}} </span>\n <a style=\"padding-left:2px;color:white\" (click)=\"onItemClick($event,item)\">x</a>\n </span>\n \n </span>\n <span [ngClass]=\"{ 'dropdown-multiselect--active': _settings.defaultOpen }\" style=\"float:right !important;padding-right:4px\">\n <span style=\"padding-right: 15px;\" *ngIf=\"itemShowRemaining()>0\">+{{itemShowRemaining()}}</span>\n <span class=\"dropdown-multiselect__caret\"></span>\n </span>\n </span>\n </div>\n <div class=\"dropdown-list\" [hidden]=\"!_settings.defaultOpen\">\n <ul class=\"item1\">\n <li (click)=\"toggleSelectAll()\" *ngIf=\"(_data.length > 0 || _settings.allowRemoteDataSearch) && !_settings.singleSelection && _settings.enableCheckAll && _settings.limitSelection===-1\" class=\"multiselect-item-checkbox\" style=\"border-bottom: 1px solid #ccc;padding:10px\">\n <input type=\"checkbox\" aria-label=\"multiselect-select-all\" [checked]=\"isAllItemsSelected()\" [disabled]=\"disabled || isLimitSelectionReached()\" />\n <div>{{!isAllItemsSelected() ? _settings.selectAllText : _settings.unSelectAllText}}</div>\n </li>\n <li class=\"filter-textbox\" *ngIf=\"(_data.length>0 || _settings.allowRemoteDataSearch) && _settings.allowSearchFilter\">\n <input type=\"text\" aria-label=\"multiselect-search\" [readOnly]=\"disabled\" [placeholder]=\"_settings.searchPlaceholderText\" [(ngModel)]=\"filter.text\" (ngModelChange)=\"onFilterTextChange($event)\">\n </li>\n </ul>\n <ul class=\"item2\" [style.maxHeight]=\"_settings.maxHeight+'px'\">\n <li *ngFor=\"let item of _data | multiSelectFilter:filter; let i = index;\" (click)=\"onItemClick($event,item)\" class=\"multiselect-item-checkbox\">\n <input type=\"checkbox\" [attr.aria-label]=\"item.text\" [checked]=\"isSelected(item)\" [disabled]=\"disabled || (isLimitSelectionReached() && !isSelected(item)) || item.isDisabled\" />\n <div>{{item.text}}</div>\n </li>\n <li class='no-filtered-data' *ngIf=\"_data.length != 0 && (_data | multiSelectFilter:filter).length == 0 && !_settings.allowRemoteDataSearch\">\n <h5>{{_settings.noFilteredDataAvailablePlaceholderText}}</h5>\n </li>\n <li class='no-data' *ngIf=\"_data.length == 0 && !_settings.allowRemoteDataSearch\">\n <h5>{{_settings.noDataAvailablePlaceholderText}}</h5>\n </li>\n </ul>\n </div>\n</div>\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MultiSelectComponent } from './multiselect.component';\nimport { ClickOutsideDirective } from './click-outside.directive';\nimport { ListFilterPipe } from './list-filter.pipe';\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n declarations: [MultiSelectComponent, ClickOutsideDirective, ListFilterPipe],\n providers: [ListFilterPipe],\n exports: [MultiSelectComponent]\n})\n\nexport class NgMultiSelectDropDownModule {\n static forRoot(): ModuleWithProviders<NgMultiSelectDropDownModule> {\n return {\n ngModule: NgMultiSelectDropDownModule\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ListFilterPipe","i4.ClickOutsideDirective"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,27 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@revivejs/ng-multiselect-dropdown",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Angular
|
|
3
|
+
"version": "4.0.0",
|
|
4
|
+
"description": "Angular 19 multi-select dropdown component for template-driven and reactive forms, published as @revivejs/ng-multiselect-dropdown.",
|
|
5
5
|
"author": "Alexandro Paixao Marques",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"angular",
|
|
9
|
-
"
|
|
10
|
-
"angular
|
|
11
|
-
"angular
|
|
12
|
-
"
|
|
13
|
-
"angular select",
|
|
14
|
-
"angular dropdown",
|
|
9
|
+
"angular19",
|
|
10
|
+
"angular-library",
|
|
11
|
+
"angular-component",
|
|
12
|
+
"dropdown",
|
|
15
13
|
"multiselect",
|
|
16
14
|
"multi-select",
|
|
17
|
-
"
|
|
15
|
+
"select",
|
|
16
|
+
"autocomplete",
|
|
18
17
|
"forms",
|
|
18
|
+
"reactive-forms",
|
|
19
|
+
"template-driven-forms",
|
|
19
20
|
"ngmodel",
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"search filter",
|
|
23
|
-
"select all",
|
|
21
|
+
"ui",
|
|
22
|
+
"ui-component",
|
|
24
23
|
"typescript",
|
|
24
|
+
"npm-package",
|
|
25
|
+
"maintained",
|
|
26
|
+
"modernized",
|
|
27
|
+
"revived",
|
|
28
|
+
"upgrade",
|
|
25
29
|
"revivejs"
|
|
26
30
|
],
|
|
27
31
|
"repository": {
|
|
@@ -33,9 +37,9 @@
|
|
|
33
37
|
},
|
|
34
38
|
"homepage": "https://github.com/alexandroit/ng-multiselect-dropdown#readme",
|
|
35
39
|
"peerDependencies": {
|
|
36
|
-
"@angular/common": ">=
|
|
37
|
-
"@angular/core": ">=
|
|
38
|
-
"@angular/forms": ">=
|
|
40
|
+
"@angular/common": ">=19.0.0 <20.0.0",
|
|
41
|
+
"@angular/core": ">=19.0.0 <20.0.0",
|
|
42
|
+
"@angular/forms": ">=19.0.0 <20.0.0"
|
|
39
43
|
},
|
|
40
44
|
"dependencies": {
|
|
41
45
|
"tslib": "^2.6.2"
|
|
@@ -48,8 +52,6 @@
|
|
|
48
52
|
},
|
|
49
53
|
".": {
|
|
50
54
|
"types": "./index.d.ts",
|
|
51
|
-
"esm2022": "./esm2022/revivejs-ng-multiselect-dropdown.mjs",
|
|
52
|
-
"esm": "./esm2022/revivejs-ng-multiselect-dropdown.mjs",
|
|
53
55
|
"default": "./fesm2022/revivejs-ng-multiselect-dropdown.mjs"
|
|
54
56
|
}
|
|
55
57
|
},
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { Directive, Output, EventEmitter, HostListener } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class ClickOutsideDirective {
|
|
4
|
-
_elementRef;
|
|
5
|
-
constructor(_elementRef) {
|
|
6
|
-
this._elementRef = _elementRef;
|
|
7
|
-
}
|
|
8
|
-
clickOutside = new EventEmitter();
|
|
9
|
-
onClick(event, targetElement) {
|
|
10
|
-
if (!targetElement) {
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
const clickedInside = this._elementRef.nativeElement.contains(targetElement);
|
|
14
|
-
if (!clickedInside) {
|
|
15
|
-
this.clickOutside.emit(event);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
19
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ClickOutsideDirective, selector: "[clickOutside]", outputs: { clickOutside: "clickOutside" }, host: { listeners: { "document:click": "onClick($event,$event.target)" } }, ngImport: i0 });
|
|
20
|
-
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ClickOutsideDirective, decorators: [{
|
|
22
|
-
type: Directive,
|
|
23
|
-
args: [{
|
|
24
|
-
selector: '[clickOutside]'
|
|
25
|
-
}]
|
|
26
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { clickOutside: [{
|
|
27
|
-
type: Output
|
|
28
|
-
}], onClick: [{
|
|
29
|
-
type: HostListener,
|
|
30
|
-
args: ['document:click', ['$event', '$event.target']]
|
|
31
|
-
}] } });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmctbXVsdGlzZWxlY3QtZHJvcGRvd24vc3JjL2NsaWNrLW91dHNpZGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBS3hGLE1BQU0sT0FBTyxxQkFBcUI7SUFDVjtJQUFwQixZQUFvQixXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtJQUMzQyxDQUFDO0lBR00sWUFBWSxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7SUFHOUMsT0FBTyxDQUFDLEtBQWlCLEVBQUUsYUFBMEI7UUFDeEQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2pCLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0wsQ0FBQzt3R0FqQlEscUJBQXFCOzRGQUFyQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtpQkFDN0I7K0VBTVUsWUFBWTtzQkFEbEIsTUFBTTtnQkFJQSxPQUFPO3NCQURiLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tjbGlja091dHNpZGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBDbGlja091dHNpZGVEaXJlY3RpdmUge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xpY2tPdXRzaWRlID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCcsICckZXZlbnQudGFyZ2V0J10pXG4gICAgcHVibGljIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIHRhcmdldEVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGFyZ2V0RWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2xpY2tlZEluc2lkZSA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXRFbGVtZW50KTtcbiAgICAgICAgaWYgKCFjbGlja2VkSW5zaWRlKSB7XG4gICAgICAgICAgICB0aGlzLmNsaWNrT3V0c2lkZS5lbWl0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class ListFilterPipe {
|
|
4
|
-
transform(items, filter) {
|
|
5
|
-
if (!items || !filter) {
|
|
6
|
-
return items;
|
|
7
|
-
}
|
|
8
|
-
return items.filter((item) => this.applyFilter(item, filter));
|
|
9
|
-
}
|
|
10
|
-
applyFilter(item, filter) {
|
|
11
|
-
if (typeof item.text === 'string' && typeof filter.text === 'string') {
|
|
12
|
-
return !(filter.text && item.text && item.text.toLowerCase().indexOf(filter.text.toLowerCase()) === -1);
|
|
13
|
-
}
|
|
14
|
-
else {
|
|
15
|
-
return !(filter.text && item.text && item.text.toString().toLowerCase().indexOf(filter.text.toString().toLowerCase()) === -1);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ListFilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
19
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ListFilterPipe, name: "multiSelectFilter", pure: false });
|
|
20
|
-
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ListFilterPipe, decorators: [{
|
|
22
|
-
type: Pipe,
|
|
23
|
-
args: [{
|
|
24
|
-
name: 'multiSelectFilter',
|
|
25
|
-
pure: false
|
|
26
|
-
}]
|
|
27
|
-
}] });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1maWx0ZXIucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uZy1tdWx0aXNlbGVjdC1kcm9wZG93bi9zcmMvbGlzdC1maWx0ZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFRcEQsTUFBTSxPQUFPLGNBQWM7SUFDdkIsU0FBUyxDQUFDLEtBQWlCLEVBQUUsTUFBZ0I7UUFDekMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFjLEVBQUUsTUFBZ0I7UUFDeEMsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNuRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUcsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEksQ0FBQztJQUNMLENBQUM7d0dBZFEsY0FBYztzR0FBZCxjQUFjOzs0RkFBZCxjQUFjO2tCQUoxQixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxtQkFBbUI7b0JBQ3pCLElBQUksRUFBRSxLQUFLO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBMaXN0SXRlbSB9IGZyb20gJy4vbXVsdGlzZWxlY3QubW9kZWwnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ211bHRpU2VsZWN0RmlsdGVyJyxcbiAgICBwdXJlOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBMaXN0RmlsdGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShpdGVtczogTGlzdEl0ZW1bXSwgZmlsdGVyOiBMaXN0SXRlbSk6IExpc3RJdGVtW10ge1xuICAgICAgICBpZiAoIWl0ZW1zIHx8ICFmaWx0ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKChpdGVtOiBMaXN0SXRlbSkgPT4gdGhpcy5hcHBseUZpbHRlcihpdGVtLCBmaWx0ZXIpKTtcbiAgICB9XG5cbiAgICBhcHBseUZpbHRlcihpdGVtOiBMaXN0SXRlbSwgZmlsdGVyOiBMaXN0SXRlbSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW0udGV4dCA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIGZpbHRlci50ZXh0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuICEoZmlsdGVyLnRleHQgJiYgaXRlbS50ZXh0ICYmIGl0ZW0udGV4dC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZmlsdGVyLnRleHQudG9Mb3dlckNhc2UoKSkgPT09IC0xKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAhKGZpbHRlci50ZXh0ICYmIGl0ZW0udGV4dCAmJiBpdGVtLnRleHQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZmlsdGVyLnRleHQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSA9PT0gLTEpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
import { Component, HostListener, forwardRef, Input, Output, EventEmitter, ChangeDetectionStrategy } from "@angular/core";
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
3
|
-
import { ListItem } from "./multiselect.model";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "./list-filter.pipe";
|
|
6
|
-
import * as i2 from "@angular/common";
|
|
7
|
-
import * as i3 from "@angular/forms";
|
|
8
|
-
import * as i4 from "./click-outside.directive";
|
|
9
|
-
export const DROPDOWN_CONTROL_VALUE_ACCESSOR = {
|
|
10
|
-
provide: NG_VALUE_ACCESSOR,
|
|
11
|
-
useExisting: forwardRef(() => MultiSelectComponent),
|
|
12
|
-
multi: true
|
|
13
|
-
};
|
|
14
|
-
const noop = () => { };
|
|
15
|
-
export class MultiSelectComponent {
|
|
16
|
-
listFilterPipe;
|
|
17
|
-
cdr;
|
|
18
|
-
_settings;
|
|
19
|
-
_data = [];
|
|
20
|
-
selectedItems = [];
|
|
21
|
-
isDropdownOpen = true;
|
|
22
|
-
_placeholder = "Select";
|
|
23
|
-
_sourceDataType = null; // to keep note of the source data type. could be array of string/number/object
|
|
24
|
-
_sourceDataFields = []; // store source data fields names
|
|
25
|
-
filter = new ListItem(this.data);
|
|
26
|
-
defaultSettings = {
|
|
27
|
-
singleSelection: false,
|
|
28
|
-
idField: "id",
|
|
29
|
-
textField: "text",
|
|
30
|
-
disabledField: "isDisabled",
|
|
31
|
-
enableCheckAll: true,
|
|
32
|
-
selectAllText: "Select All",
|
|
33
|
-
unSelectAllText: "UnSelect All",
|
|
34
|
-
allowSearchFilter: false,
|
|
35
|
-
limitSelection: -1,
|
|
36
|
-
clearSearchFilter: true,
|
|
37
|
-
maxHeight: 197,
|
|
38
|
-
itemsShowLimit: 999999999999,
|
|
39
|
-
searchPlaceholderText: "Search",
|
|
40
|
-
noDataAvailablePlaceholderText: "No data available",
|
|
41
|
-
noFilteredDataAvailablePlaceholderText: "No filtered data available",
|
|
42
|
-
closeDropDownOnSelection: false,
|
|
43
|
-
showSelectedItemsAtTop: false,
|
|
44
|
-
defaultOpen: false,
|
|
45
|
-
allowRemoteDataSearch: false
|
|
46
|
-
};
|
|
47
|
-
set placeholder(value) {
|
|
48
|
-
if (value) {
|
|
49
|
-
this._placeholder = value;
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
this._placeholder = "Select";
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
disabled = false;
|
|
56
|
-
set settings(value) {
|
|
57
|
-
if (value) {
|
|
58
|
-
this._settings = Object.assign(this.defaultSettings, value);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
this._settings = Object.assign(this.defaultSettings);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
set data(value) {
|
|
65
|
-
if (!value) {
|
|
66
|
-
this._data = [];
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
const firstItem = value[0];
|
|
70
|
-
this._sourceDataType = typeof firstItem;
|
|
71
|
-
this._sourceDataFields = this.getFields(firstItem);
|
|
72
|
-
this._data = value.map((item) => typeof item === "string" || typeof item === "number"
|
|
73
|
-
? new ListItem(item)
|
|
74
|
-
: new ListItem({
|
|
75
|
-
id: item[this._settings.idField],
|
|
76
|
-
text: item[this._settings.textField],
|
|
77
|
-
isDisabled: item[this._settings.disabledField]
|
|
78
|
-
}));
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
onFilterChange = new EventEmitter();
|
|
82
|
-
onDropDownClose = new EventEmitter();
|
|
83
|
-
onSelect = new EventEmitter();
|
|
84
|
-
onDeSelect = new EventEmitter();
|
|
85
|
-
onSelectAll = new EventEmitter();
|
|
86
|
-
onDeSelectAll = new EventEmitter();
|
|
87
|
-
onTouchedCallback = noop;
|
|
88
|
-
onChangeCallback = noop;
|
|
89
|
-
onFilterTextChange($event) {
|
|
90
|
-
this.onFilterChange.emit($event);
|
|
91
|
-
}
|
|
92
|
-
constructor(listFilterPipe, cdr) {
|
|
93
|
-
this.listFilterPipe = listFilterPipe;
|
|
94
|
-
this.cdr = cdr;
|
|
95
|
-
}
|
|
96
|
-
onItemClick($event, item) {
|
|
97
|
-
if (this.disabled || item.isDisabled) {
|
|
98
|
-
return false;
|
|
99
|
-
}
|
|
100
|
-
const found = this.isSelected(item);
|
|
101
|
-
const allowAdd = this._settings.limitSelection === -1 || (this._settings.limitSelection > 0 && this.selectedItems.length < this._settings.limitSelection);
|
|
102
|
-
if (!found) {
|
|
103
|
-
if (allowAdd) {
|
|
104
|
-
this.addSelected(item);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
this.removeSelected(item);
|
|
109
|
-
}
|
|
110
|
-
if (this._settings.singleSelection && this._settings.closeDropDownOnSelection) {
|
|
111
|
-
this.closeDropdown();
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
writeValue(value) {
|
|
115
|
-
if (value !== undefined && value !== null && value.length > 0) {
|
|
116
|
-
if (this._settings.singleSelection) {
|
|
117
|
-
try {
|
|
118
|
-
if (value.length >= 1) {
|
|
119
|
-
const firstItem = value[0];
|
|
120
|
-
this.selectedItems = [
|
|
121
|
-
typeof firstItem === "string" || typeof firstItem === "number"
|
|
122
|
-
? new ListItem(firstItem)
|
|
123
|
-
: new ListItem({
|
|
124
|
-
id: firstItem[this._settings.idField],
|
|
125
|
-
text: firstItem[this._settings.textField],
|
|
126
|
-
isDisabled: firstItem[this._settings.disabledField]
|
|
127
|
-
})
|
|
128
|
-
];
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
catch (e) {
|
|
132
|
-
// console.error(e.body.msg);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
const _data = value.map((item) => typeof item === "string" || typeof item === "number"
|
|
137
|
-
? new ListItem(item)
|
|
138
|
-
: new ListItem({
|
|
139
|
-
id: item[this._settings.idField],
|
|
140
|
-
text: item[this._settings.textField],
|
|
141
|
-
isDisabled: item[this._settings.disabledField]
|
|
142
|
-
}));
|
|
143
|
-
if (this._settings.limitSelection > 0) {
|
|
144
|
-
this.selectedItems = _data.splice(0, this._settings.limitSelection);
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
this.selectedItems = _data;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
this.selectedItems = [];
|
|
153
|
-
}
|
|
154
|
-
this.onChangeCallback(value);
|
|
155
|
-
this.cdr.markForCheck();
|
|
156
|
-
}
|
|
157
|
-
// From ControlValueAccessor interface
|
|
158
|
-
registerOnChange(fn) {
|
|
159
|
-
this.onChangeCallback = fn;
|
|
160
|
-
}
|
|
161
|
-
// From ControlValueAccessor interface
|
|
162
|
-
registerOnTouched(fn) {
|
|
163
|
-
this.onTouchedCallback = fn;
|
|
164
|
-
}
|
|
165
|
-
// Set touched on blur
|
|
166
|
-
onTouched() {
|
|
167
|
-
// this.closeDropdown();
|
|
168
|
-
this.onTouchedCallback();
|
|
169
|
-
}
|
|
170
|
-
trackByFn(index, item) {
|
|
171
|
-
return item.id;
|
|
172
|
-
}
|
|
173
|
-
isSelected(clickedItem) {
|
|
174
|
-
let found = false;
|
|
175
|
-
this.selectedItems.forEach(item => {
|
|
176
|
-
if (clickedItem.id === item.id) {
|
|
177
|
-
found = true;
|
|
178
|
-
}
|
|
179
|
-
});
|
|
180
|
-
return found;
|
|
181
|
-
}
|
|
182
|
-
isLimitSelectionReached() {
|
|
183
|
-
return this._settings.limitSelection === this.selectedItems.length;
|
|
184
|
-
}
|
|
185
|
-
isAllItemsSelected() {
|
|
186
|
-
// get disabld item count
|
|
187
|
-
let filteredItems = this.listFilterPipe.transform(this._data, this.filter);
|
|
188
|
-
const itemDisabledCount = filteredItems.filter(item => item.isDisabled).length;
|
|
189
|
-
// take disabled items into consideration when checking
|
|
190
|
-
if ((!this.data || this.data.length === 0) && this._settings.allowRemoteDataSearch) {
|
|
191
|
-
return false;
|
|
192
|
-
}
|
|
193
|
-
return filteredItems.length === this.selectedItems.length + itemDisabledCount;
|
|
194
|
-
}
|
|
195
|
-
showButton() {
|
|
196
|
-
if (!this._settings.singleSelection) {
|
|
197
|
-
if (this._settings.limitSelection > 0) {
|
|
198
|
-
return false;
|
|
199
|
-
}
|
|
200
|
-
// this._settings.enableCheckAll = this._settings.limitSelection === -1 ? true : false;
|
|
201
|
-
return true; // !this._settings.singleSelection && this._settings.enableCheckAll && this._data.length > 0;
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
// should be disabled in single selection mode
|
|
205
|
-
return false;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
itemShowRemaining() {
|
|
209
|
-
return this.selectedItems.length - this._settings.itemsShowLimit;
|
|
210
|
-
}
|
|
211
|
-
addSelected(item) {
|
|
212
|
-
if (this._settings.singleSelection) {
|
|
213
|
-
this.selectedItems = [];
|
|
214
|
-
this.selectedItems.push(item);
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
this.selectedItems.push(item);
|
|
218
|
-
}
|
|
219
|
-
this.onChangeCallback(this.emittedValue(this.selectedItems));
|
|
220
|
-
this.onSelect.emit(this.emittedValue(item));
|
|
221
|
-
}
|
|
222
|
-
removeSelected(itemSel) {
|
|
223
|
-
this.selectedItems.forEach(item => {
|
|
224
|
-
if (itemSel.id === item.id) {
|
|
225
|
-
this.selectedItems.splice(this.selectedItems.indexOf(item), 1);
|
|
226
|
-
}
|
|
227
|
-
});
|
|
228
|
-
this.onChangeCallback(this.emittedValue(this.selectedItems));
|
|
229
|
-
this.onDeSelect.emit(this.emittedValue(itemSel));
|
|
230
|
-
}
|
|
231
|
-
emittedValue(val) {
|
|
232
|
-
const selected = [];
|
|
233
|
-
if (Array.isArray(val)) {
|
|
234
|
-
val.map(item => {
|
|
235
|
-
selected.push(this.objectify(item));
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
else {
|
|
239
|
-
if (val) {
|
|
240
|
-
return this.objectify(val);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
return selected;
|
|
244
|
-
}
|
|
245
|
-
objectify(val) {
|
|
246
|
-
if (this._sourceDataType === 'object') {
|
|
247
|
-
const obj = {};
|
|
248
|
-
obj[this._settings.idField] = val.id;
|
|
249
|
-
obj[this._settings.textField] = val.text;
|
|
250
|
-
if (this._sourceDataFields.includes(this._settings.disabledField)) {
|
|
251
|
-
obj[this._settings.disabledField] = val.isDisabled;
|
|
252
|
-
}
|
|
253
|
-
return obj;
|
|
254
|
-
}
|
|
255
|
-
if (this._sourceDataType === 'number') {
|
|
256
|
-
return Number(val.id);
|
|
257
|
-
}
|
|
258
|
-
else {
|
|
259
|
-
return val.text;
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
toggleDropdown(evt) {
|
|
263
|
-
evt.preventDefault();
|
|
264
|
-
if (this.disabled && this._settings.singleSelection) {
|
|
265
|
-
return;
|
|
266
|
-
}
|
|
267
|
-
this._settings.defaultOpen = !this._settings.defaultOpen;
|
|
268
|
-
if (!this._settings.defaultOpen) {
|
|
269
|
-
this.onDropDownClose.emit();
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
closeDropdown() {
|
|
273
|
-
this._settings.defaultOpen = false;
|
|
274
|
-
// clear search text
|
|
275
|
-
if (this._settings.clearSearchFilter) {
|
|
276
|
-
this.filter.text = "";
|
|
277
|
-
}
|
|
278
|
-
this.onDropDownClose.emit();
|
|
279
|
-
}
|
|
280
|
-
toggleSelectAll() {
|
|
281
|
-
if (this.disabled) {
|
|
282
|
-
return false;
|
|
283
|
-
}
|
|
284
|
-
if (!this.isAllItemsSelected()) {
|
|
285
|
-
// filter out disabled item first before slicing
|
|
286
|
-
this.selectedItems = this.listFilterPipe.transform(this._data, this.filter).filter(item => !item.isDisabled).slice();
|
|
287
|
-
this.onSelectAll.emit(this.emittedValue(this.selectedItems));
|
|
288
|
-
}
|
|
289
|
-
else {
|
|
290
|
-
this.selectedItems = [];
|
|
291
|
-
this.onDeSelectAll.emit(this.emittedValue(this.selectedItems));
|
|
292
|
-
}
|
|
293
|
-
this.onChangeCallback(this.emittedValue(this.selectedItems));
|
|
294
|
-
}
|
|
295
|
-
getFields(inputData) {
|
|
296
|
-
const fields = [];
|
|
297
|
-
if (typeof inputData !== "object") {
|
|
298
|
-
return fields;
|
|
299
|
-
}
|
|
300
|
-
// tslint:disable-next-line:forin
|
|
301
|
-
for (const prop in inputData) {
|
|
302
|
-
fields.push(prop);
|
|
303
|
-
}
|
|
304
|
-
return fields;
|
|
305
|
-
}
|
|
306
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MultiSelectComponent, deps: [{ token: i1.ListFilterPipe }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
307
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MultiSelectComponent, selector: "ng-multiselect-dropdown", inputs: { placeholder: "placeholder", disabled: "disabled", settings: "settings", data: "data" }, outputs: { onFilterChange: "onFilterChange", onDropDownClose: "onDropDownClose", onSelect: "onSelect", onDeSelect: "onDeSelect", onSelectAll: "onSelectAll", onDeSelectAll: "onDeSelectAll" }, host: { listeners: { "blur": "onTouched()" } }, providers: [DROPDOWN_CONTROL_VALUE_ACCESSOR], ngImport: i0, template: "<div tabindex=\"0\" (blur)=\"onTouched()\" class=\"multiselect-dropdown\" (clickOutside)=\"closeDropdown()\">\n <div [class.disabled]=\"disabled\">\n <span tabindex=\"-1\" class=\"dropdown-btn\" (click)=\"toggleDropdown($event)\">\n <span *ngIf=\"selectedItems.length == 0\">{{_placeholder}}</span>\n <span *ngFor=\"let item of selectedItems; trackBy: trackByFn;let k = index\" class=\"selected-item-container\" >\n <span class=\"selected-item\" [hidden]=\"k > (this._settings.itemsShowLimit-1)\">\n <span >{{item.text}} </span>\n <a style=\"padding-left:2px;color:white\" (click)=\"onItemClick($event,item)\">x</a>\n </span>\n \n </span>\n <span [ngClass]=\"{ 'dropdown-multiselect--active': _settings.defaultOpen }\" style=\"float:right !important;padding-right:4px\">\n <span style=\"padding-right: 15px;\" *ngIf=\"itemShowRemaining()>0\">+{{itemShowRemaining()}}</span>\n <span class=\"dropdown-multiselect__caret\"></span>\n </span>\n </span>\n </div>\n <div class=\"dropdown-list\" [hidden]=\"!_settings.defaultOpen\">\n <ul class=\"item1\">\n <li (click)=\"toggleSelectAll()\" *ngIf=\"(_data.length > 0 || _settings.allowRemoteDataSearch) && !_settings.singleSelection && _settings.enableCheckAll && _settings.limitSelection===-1\" class=\"multiselect-item-checkbox\" style=\"border-bottom: 1px solid #ccc;padding:10px\">\n <input type=\"checkbox\" aria-label=\"multiselect-select-all\" [checked]=\"isAllItemsSelected()\" [disabled]=\"disabled || isLimitSelectionReached()\" />\n <div>{{!isAllItemsSelected() ? _settings.selectAllText : _settings.unSelectAllText}}</div>\n </li>\n <li class=\"filter-textbox\" *ngIf=\"(_data.length>0 || _settings.allowRemoteDataSearch) && _settings.allowSearchFilter\">\n <input type=\"text\" aria-label=\"multiselect-search\" [readOnly]=\"disabled\" [placeholder]=\"_settings.searchPlaceholderText\" [(ngModel)]=\"filter.text\" (ngModelChange)=\"onFilterTextChange($event)\">\n </li>\n </ul>\n <ul class=\"item2\" [style.maxHeight]=\"_settings.maxHeight+'px'\">\n <li *ngFor=\"let item of _data | multiSelectFilter:filter; let i = index;\" (click)=\"onItemClick($event,item)\" class=\"multiselect-item-checkbox\">\n <input type=\"checkbox\" [attr.aria-label]=\"item.text\" [checked]=\"isSelected(item)\" [disabled]=\"disabled || (isLimitSelectionReached() && !isSelected(item)) || item.isDisabled\" />\n <div>{{item.text}}</div>\n </li>\n <li class='no-filtered-data' *ngIf=\"_data.length != 0 && (_data | multiSelectFilter:filter).length == 0 && !_settings.allowRemoteDataSearch\">\n <h5>{{_settings.noFilteredDataAvailablePlaceholderText}}</h5>\n </li>\n <li class='no-data' *ngIf=\"_data.length == 0 && !_settings.allowRemoteDataSearch\">\n <h5>{{_settings.noDataAvailablePlaceholderText}}</h5>\n </li>\n </ul>\n </div>\n</div>\n", styles: [".multiselect-dropdown{position:relative;width:100%;font-size:inherit;font-family:inherit}.multiselect-dropdown .dropdown-btn{display:inline-block;border:1px solid #adadad;width:100%;padding:6px 12px;margin-bottom:0;font-weight:400;line-height:1.52857143;text-align:left;vertical-align:middle;cursor:pointer;background-image:none;border-radius:4px}.multiselect-dropdown .dropdown-btn .selected-item-container{display:flex;float:left}.multiselect-dropdown .dropdown-btn .selected-item-container .selected-item{border:1px solid #337ab7;margin-right:4px;background:#337ab7;padding:0 5px;color:#fff;border-radius:2px;float:left;max-width:100px}.multiselect-dropdown .dropdown-btn .selected-item-container .selected-item span{overflow:hidden;text-overflow:ellipsis}.multiselect-dropdown .dropdown-btn .selected-item-container .selected-item a{text-decoration:none}.multiselect-dropdown .dropdown-btn .selected-item:hover{box-shadow:1px 1px #959595}.multiselect-dropdown .dropdown-btn .dropdown-multiselect__caret{line-height:16px;display:block;position:absolute;box-sizing:border-box;width:40px;height:38px;right:1px;top:0;padding:4px 8px;margin:0;text-decoration:none;text-align:center;cursor:pointer;transition:transform .2s ease}.multiselect-dropdown .dropdown-btn .dropdown-multiselect__caret:before{position:relative;right:0;top:65%;color:#999;margin-top:4px;border-style:solid;border-width:8px 8px 0 8px;border-color:#999999 transparent;content:\"\"}.multiselect-dropdown .dropdown-btn .dropdown-multiselect--active .dropdown-multiselect__caret{transform:rotate(180deg)}.multiselect-dropdown .disabled>span{background-color:#eceeef}.dropdown-list{position:absolute;padding-top:6px;width:100%;z-index:9999;border:1px solid #ccc;border-radius:3px;background:#fff;margin-top:10px;box-shadow:0 1px 5px #959595}.dropdown-list ul{padding:0;list-style:none;overflow:auto;margin:0}.dropdown-list li{padding:6px 10px;cursor:pointer;text-align:left}.dropdown-list .filter-textbox{border-bottom:1px solid #ccc;position:relative;padding:10px}.dropdown-list .filter-textbox input{border:0px;width:100%;padding:0 0 0 26px}.dropdown-list .filter-textbox input:focus{outline:none}.multiselect-item-checkbox:hover{background-color:#e4e3e3}.multiselect-item-checkbox input[type=checkbox]{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.multiselect-item-checkbox input[type=checkbox]:focus+div:before,.multiselect-item-checkbox input[type=checkbox]:hover+div:before{border-color:#337ab7;background-color:#f2f2f2}.multiselect-item-checkbox input[type=checkbox]:active+div:before{transition-duration:0s}.multiselect-item-checkbox input[type=checkbox]+div{position:relative;padding-left:2em;vertical-align:middle;-webkit-user-select:none;user-select:none;cursor:pointer;margin:0;color:#000}.multiselect-item-checkbox input[type=checkbox]+div:before{box-sizing:content-box;content:\"\";color:#337ab7;position:absolute;top:50%;left:0;width:14px;height:14px;margin-top:-9px;border:2px solid #337ab7;text-align:center;transition:all .4s ease}.multiselect-item-checkbox input[type=checkbox]+div:after{box-sizing:content-box;content:\"\";background-color:#337ab7;position:absolute;top:50%;left:4px;width:10px;height:10px;margin-top:-5px;transform:scale(0);transform-origin:50%;transition:transform .2s ease-out}.multiselect-item-checkbox input[type=checkbox]:disabled+div:before{border-color:#ccc}.multiselect-item-checkbox input[type=checkbox]:disabled:focus+div:before .multiselect-item-checkbox input[type=checkbox]:disabled:hover+div:before{background-color:inherit}.multiselect-item-checkbox input[type=checkbox]:disabled:checked+div:before{background-color:#ccc}.multiselect-item-checkbox input[type=checkbox]+div:after{background-color:transparent;top:50%;left:4px;width:8px;height:3px;margin-top:-4px;border-style:solid;border-color:#fff;border-width:0 0 3px 3px;border-image:none;transform:rotate(-45deg) scale(0)}.multiselect-item-checkbox input[type=checkbox]:checked+div:after{content:\"\";transform:rotate(-45deg) scale(1);transition:transform .2s ease-out}.multiselect-item-checkbox input[type=checkbox]:checked+div:before{animation:borderscale .2s ease-in;background:#337ab7}.multiselect-item-checkbox input[type=checkbox]:checked+div:after{transform:rotate(-45deg) scale(1)}@keyframes borderscale{50%{box-shadow:0 0 0 2px #337ab7}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "directive", type: i4.ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { kind: "pipe", type: i1.ListFilterPipe, name: "multiSelectFilter" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
308
|
-
}
|
|
309
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MultiSelectComponent, decorators: [{
|
|
310
|
-
type: Component,
|
|
311
|
-
args: [{ selector: "ng-multiselect-dropdown", providers: [DROPDOWN_CONTROL_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div tabindex=\"0\" (blur)=\"onTouched()\" class=\"multiselect-dropdown\" (clickOutside)=\"closeDropdown()\">\n <div [class.disabled]=\"disabled\">\n <span tabindex=\"-1\" class=\"dropdown-btn\" (click)=\"toggleDropdown($event)\">\n <span *ngIf=\"selectedItems.length == 0\">{{_placeholder}}</span>\n <span *ngFor=\"let item of selectedItems; trackBy: trackByFn;let k = index\" class=\"selected-item-container\" >\n <span class=\"selected-item\" [hidden]=\"k > (this._settings.itemsShowLimit-1)\">\n <span >{{item.text}} </span>\n <a style=\"padding-left:2px;color:white\" (click)=\"onItemClick($event,item)\">x</a>\n </span>\n \n </span>\n <span [ngClass]=\"{ 'dropdown-multiselect--active': _settings.defaultOpen }\" style=\"float:right !important;padding-right:4px\">\n <span style=\"padding-right: 15px;\" *ngIf=\"itemShowRemaining()>0\">+{{itemShowRemaining()}}</span>\n <span class=\"dropdown-multiselect__caret\"></span>\n </span>\n </span>\n </div>\n <div class=\"dropdown-list\" [hidden]=\"!_settings.defaultOpen\">\n <ul class=\"item1\">\n <li (click)=\"toggleSelectAll()\" *ngIf=\"(_data.length > 0 || _settings.allowRemoteDataSearch) && !_settings.singleSelection && _settings.enableCheckAll && _settings.limitSelection===-1\" class=\"multiselect-item-checkbox\" style=\"border-bottom: 1px solid #ccc;padding:10px\">\n <input type=\"checkbox\" aria-label=\"multiselect-select-all\" [checked]=\"isAllItemsSelected()\" [disabled]=\"disabled || isLimitSelectionReached()\" />\n <div>{{!isAllItemsSelected() ? _settings.selectAllText : _settings.unSelectAllText}}</div>\n </li>\n <li class=\"filter-textbox\" *ngIf=\"(_data.length>0 || _settings.allowRemoteDataSearch) && _settings.allowSearchFilter\">\n <input type=\"text\" aria-label=\"multiselect-search\" [readOnly]=\"disabled\" [placeholder]=\"_settings.searchPlaceholderText\" [(ngModel)]=\"filter.text\" (ngModelChange)=\"onFilterTextChange($event)\">\n </li>\n </ul>\n <ul class=\"item2\" [style.maxHeight]=\"_settings.maxHeight+'px'\">\n <li *ngFor=\"let item of _data | multiSelectFilter:filter; let i = index;\" (click)=\"onItemClick($event,item)\" class=\"multiselect-item-checkbox\">\n <input type=\"checkbox\" [attr.aria-label]=\"item.text\" [checked]=\"isSelected(item)\" [disabled]=\"disabled || (isLimitSelectionReached() && !isSelected(item)) || item.isDisabled\" />\n <div>{{item.text}}</div>\n </li>\n <li class='no-filtered-data' *ngIf=\"_data.length != 0 && (_data | multiSelectFilter:filter).length == 0 && !_settings.allowRemoteDataSearch\">\n <h5>{{_settings.noFilteredDataAvailablePlaceholderText}}</h5>\n </li>\n <li class='no-data' *ngIf=\"_data.length == 0 && !_settings.allowRemoteDataSearch\">\n <h5>{{_settings.noDataAvailablePlaceholderText}}</h5>\n </li>\n </ul>\n </div>\n</div>\n", styles: [".multiselect-dropdown{position:relative;width:100%;font-size:inherit;font-family:inherit}.multiselect-dropdown .dropdown-btn{display:inline-block;border:1px solid #adadad;width:100%;padding:6px 12px;margin-bottom:0;font-weight:400;line-height:1.52857143;text-align:left;vertical-align:middle;cursor:pointer;background-image:none;border-radius:4px}.multiselect-dropdown .dropdown-btn .selected-item-container{display:flex;float:left}.multiselect-dropdown .dropdown-btn .selected-item-container .selected-item{border:1px solid #337ab7;margin-right:4px;background:#337ab7;padding:0 5px;color:#fff;border-radius:2px;float:left;max-width:100px}.multiselect-dropdown .dropdown-btn .selected-item-container .selected-item span{overflow:hidden;text-overflow:ellipsis}.multiselect-dropdown .dropdown-btn .selected-item-container .selected-item a{text-decoration:none}.multiselect-dropdown .dropdown-btn .selected-item:hover{box-shadow:1px 1px #959595}.multiselect-dropdown .dropdown-btn .dropdown-multiselect__caret{line-height:16px;display:block;position:absolute;box-sizing:border-box;width:40px;height:38px;right:1px;top:0;padding:4px 8px;margin:0;text-decoration:none;text-align:center;cursor:pointer;transition:transform .2s ease}.multiselect-dropdown .dropdown-btn .dropdown-multiselect__caret:before{position:relative;right:0;top:65%;color:#999;margin-top:4px;border-style:solid;border-width:8px 8px 0 8px;border-color:#999999 transparent;content:\"\"}.multiselect-dropdown .dropdown-btn .dropdown-multiselect--active .dropdown-multiselect__caret{transform:rotate(180deg)}.multiselect-dropdown .disabled>span{background-color:#eceeef}.dropdown-list{position:absolute;padding-top:6px;width:100%;z-index:9999;border:1px solid #ccc;border-radius:3px;background:#fff;margin-top:10px;box-shadow:0 1px 5px #959595}.dropdown-list ul{padding:0;list-style:none;overflow:auto;margin:0}.dropdown-list li{padding:6px 10px;cursor:pointer;text-align:left}.dropdown-list .filter-textbox{border-bottom:1px solid #ccc;position:relative;padding:10px}.dropdown-list .filter-textbox input{border:0px;width:100%;padding:0 0 0 26px}.dropdown-list .filter-textbox input:focus{outline:none}.multiselect-item-checkbox:hover{background-color:#e4e3e3}.multiselect-item-checkbox input[type=checkbox]{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.multiselect-item-checkbox input[type=checkbox]:focus+div:before,.multiselect-item-checkbox input[type=checkbox]:hover+div:before{border-color:#337ab7;background-color:#f2f2f2}.multiselect-item-checkbox input[type=checkbox]:active+div:before{transition-duration:0s}.multiselect-item-checkbox input[type=checkbox]+div{position:relative;padding-left:2em;vertical-align:middle;-webkit-user-select:none;user-select:none;cursor:pointer;margin:0;color:#000}.multiselect-item-checkbox input[type=checkbox]+div:before{box-sizing:content-box;content:\"\";color:#337ab7;position:absolute;top:50%;left:0;width:14px;height:14px;margin-top:-9px;border:2px solid #337ab7;text-align:center;transition:all .4s ease}.multiselect-item-checkbox input[type=checkbox]+div:after{box-sizing:content-box;content:\"\";background-color:#337ab7;position:absolute;top:50%;left:4px;width:10px;height:10px;margin-top:-5px;transform:scale(0);transform-origin:50%;transition:transform .2s ease-out}.multiselect-item-checkbox input[type=checkbox]:disabled+div:before{border-color:#ccc}.multiselect-item-checkbox input[type=checkbox]:disabled:focus+div:before .multiselect-item-checkbox input[type=checkbox]:disabled:hover+div:before{background-color:inherit}.multiselect-item-checkbox input[type=checkbox]:disabled:checked+div:before{background-color:#ccc}.multiselect-item-checkbox input[type=checkbox]+div:after{background-color:transparent;top:50%;left:4px;width:8px;height:3px;margin-top:-4px;border-style:solid;border-color:#fff;border-width:0 0 3px 3px;border-image:none;transform:rotate(-45deg) scale(0)}.multiselect-item-checkbox input[type=checkbox]:checked+div:after{content:\"\";transform:rotate(-45deg) scale(1);transition:transform .2s ease-out}.multiselect-item-checkbox input[type=checkbox]:checked+div:before{animation:borderscale .2s ease-in;background:#337ab7}.multiselect-item-checkbox input[type=checkbox]:checked+div:after{transform:rotate(-45deg) scale(1)}@keyframes borderscale{50%{box-shadow:0 0 0 2px #337ab7}}\n"] }]
|
|
312
|
-
}], ctorParameters: () => [{ type: i1.ListFilterPipe }, { type: i0.ChangeDetectorRef }], propDecorators: { placeholder: [{
|
|
313
|
-
type: Input
|
|
314
|
-
}], disabled: [{
|
|
315
|
-
type: Input
|
|
316
|
-
}], settings: [{
|
|
317
|
-
type: Input
|
|
318
|
-
}], data: [{
|
|
319
|
-
type: Input
|
|
320
|
-
}], onFilterChange: [{
|
|
321
|
-
type: Output,
|
|
322
|
-
args: ["onFilterChange"]
|
|
323
|
-
}], onDropDownClose: [{
|
|
324
|
-
type: Output,
|
|
325
|
-
args: ["onDropDownClose"]
|
|
326
|
-
}], onSelect: [{
|
|
327
|
-
type: Output,
|
|
328
|
-
args: ["onSelect"]
|
|
329
|
-
}], onDeSelect: [{
|
|
330
|
-
type: Output,
|
|
331
|
-
args: ["onDeSelect"]
|
|
332
|
-
}], onSelectAll: [{
|
|
333
|
-
type: Output,
|
|
334
|
-
args: ["onSelectAll"]
|
|
335
|
-
}], onDeSelectAll: [{
|
|
336
|
-
type: Output,
|
|
337
|
-
args: ["onDeSelectAll"]
|
|
338
|
-
}], onTouched: [{
|
|
339
|
-
type: HostListener,
|
|
340
|
-
args: ["blur"]
|
|
341
|
-
}] } });
|
|
342
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25nLW11bHRpc2VsZWN0LWRyb3Bkb3duL3NyYy9tdWx0aXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi9zcmMvbmctbXVsdGlzZWxlY3QtZHJvcGRvd24vc3JjL211bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsdUJBQXVCLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdJLE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFxQixNQUFNLHFCQUFxQixDQUFDOzs7Ozs7QUFHbEUsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQVE7SUFDbEQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO0lBQ25ELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQUNGLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztBQVN0QixNQUFNLE9BQU8sb0JBQW9CO0lBZ0dyQjtJQUNBO0lBaEdILFNBQVMsQ0FBb0I7SUFDN0IsS0FBSyxHQUFvQixFQUFFLENBQUM7SUFDNUIsYUFBYSxHQUFvQixFQUFFLENBQUM7SUFDcEMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUM3QixZQUFZLEdBQUcsUUFBUSxDQUFDO0lBQ2hCLGVBQWUsR0FBRyxJQUFJLENBQUMsQ0FBQywrRUFBK0U7SUFDdkcsaUJBQWlCLEdBQWtCLEVBQUUsQ0FBQyxDQUFDLGlDQUFpQztJQUNoRixNQUFNLEdBQWEsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FB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LENBQUMsTUFBTTttSEFrQ3BDLFdBQVc7c0JBRHJCLEtBQUs7Z0JBU04sUUFBUTtzQkFEUCxLQUFLO2dCQUlLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBVUssSUFBSTtzQkFEZCxLQUFLO2dCQXFCTixjQUFjO3NCQURiLE1BQU07dUJBQUMsZ0JBQWdCO2dCQUd4QixlQUFlO3NCQURkLE1BQU07dUJBQUMsaUJBQWlCO2dCQUl6QixRQUFRO3NCQURQLE1BQU07dUJBQUMsVUFBVTtnQkFJbEIsVUFBVTtzQkFEVCxNQUFNO3VCQUFDLFlBQVk7Z0JBSXBCLFdBQVc7c0JBRFYsTUFBTTt1QkFBQyxhQUFhO2dCQUlyQixhQUFhO3NCQURaLE1BQU07dUJBQUMsZUFBZTtnQkF5RmhCLFNBQVM7c0JBRGYsWUFBWTt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIGZvcndhcmRSZWYsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTGlzdEl0ZW0sIElEcm9wZG93blNldHRpbmdzIH0gZnJvbSBcIi4vbXVsdGlzZWxlY3QubW9kZWxcIjtcbmltcG9ydCB7IExpc3RGaWx0ZXJQaXBlIH0gZnJvbSBcIi4vbGlzdC1maWx0ZXIucGlwZVwiO1xuXG5leHBvcnQgY29uc3QgRFJPUERPV05fQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTXVsdGlTZWxlY3RDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZVxufTtcbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm5nLW11bHRpc2VsZWN0LWRyb3Bkb3duXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vbXVsdGktc2VsZWN0LmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9tdWx0aS1zZWxlY3QuY29tcG9uZW50LnNjc3NcIl0sXG4gIHByb3ZpZGVyczogW0RST1BET1dOX0NPTlRST0xfVkFMVUVfQUNDRVNTT1JdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNdWx0aVNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcHVibGljIF9zZXR0aW5nczogSURyb3Bkb3duU2V0dGluZ3M7XG4gIHB1YmxpYyBfZGF0YTogQXJyYXk8TGlzdEl0ZW0+ID0gW107XG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zOiBBcnJheTxMaXN0SXRlbT4gPSBbXTtcbiAgcHVibGljIGlzRHJvcGRvd25PcGVuID0gdHJ1ZTtcbiAgX3BsYWNlaG9sZGVyID0gXCJTZWxlY3RcIjtcbiAgcHJpdmF0ZSBfc291cmNlRGF0YVR5cGUgPSBudWxsOyAvLyB0byBrZWVwIG5vdGUgb2YgdGhlIHNvdXJjZSBkYXRhIHR5cGUuIGNvdWxkIGJlIGFycmF5IG9mIHN0cmluZy9udW1iZXIvb2JqZWN0XG4gIHByaXZhdGUgX3NvdXJjZURhdGFGaWVsZHM6IEFycmF5PFN0cmluZz4gPSBbXTsgLy8gc3RvcmUgc291cmNlIGRhdGEgZmllbGRzIG5hbWVzXG4gIGZpbHRlcjogTGlzdEl0ZW0gPSBuZXcgTGlzdEl0ZW0odGhpcy5kYXRhKTtcbiAgZGVmYXVsdFNldHRpbmdzOiBJRHJvcGRvd25TZXR0aW5ncyA9IHtcbiAgICBzaW5nbGVTZWxlY3Rpb246IGZhbHNlLFxuICAgIGlkRmllbGQ6IFwiaWRcIixcbiAgICB0ZXh0RmllbGQ6IFwidGV4dFwiLFxuICAgIGRpc2FibGVkRmllbGQ6IFwiaXNEaXNhYmxlZFwiLFxuICAgIGVuYWJsZUNoZWNrQWxsOiB0cnVlLFxuICAgIHNlbGVjdEFsbFRleHQ6IFwiU2VsZWN0IEFsbFwiLFxuICAgIHVuU2VsZWN0QWxsVGV4dDogXCJVblNlbGVjdCBBbGxcIixcbiAgICBhbGxvd1NlYXJjaEZpbHRlcjogZmFsc2UsXG4gICAgbGltaXRTZWxlY3Rpb246IC0xLFxuICAgIGNsZWFyU2VhcmNoRmlsdGVyOiB0cnVlLFxuICAgIG1heEhlaWdodDogMTk3LFxuICAgIGl0ZW1zU2hvd0xpbWl0OiA5OTk5OTk5OTk5OTksXG4gICAgc2VhcmNoUGxhY2Vob2xkZXJUZXh0OiBcIlNlYXJjaFwiLFxuICAgIG5vRGF0YUF2YWlsYWJsZVBsYWNlaG9sZGVyVGV4dDogXCJObyBkYXRhIGF2YWlsYWJsZVwiLFxuICAgIG5vRmlsdGVyZWREYXRhQXZhaWxhYmxlUGxhY2Vob2xkZXJUZXh0OiBcIk5vIGZpbHRlcmVkIGRhdGEgYXZhaWxhYmxlXCIsXG4gICAgY2xvc2VEcm9wRG93bk9uU2VsZWN0aW9uOiBmYWxzZSxcbiAgICBzaG93U2VsZWN0ZWRJdGVtc0F0VG9wOiBmYWxzZSxcbiAgICBkZWZhdWx0T3BlbjogZmFsc2UsXG4gICAgYWxsb3dSZW1vdGVEYXRhU2VhcmNoOiBmYWxzZVxuICB9O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fcGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcGxhY2Vob2xkZXIgPSBcIlNlbGVjdFwiO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKVxuICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2V0dGluZ3ModmFsdWU6IElEcm9wZG93blNldHRpbmdzKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24odGhpcy5kZWZhdWx0U2V0dGluZ3MsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHRoaXMuZGVmYXVsdFNldHRpbmdzKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRhdGEodmFsdWU6IEFycmF5PGFueT4pIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLl9kYXRhID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZpcnN0SXRlbSA9IHZhbHVlWzBdO1xuICAgICAgdGhpcy5fc291cmNlRGF0YVR5cGUgPSB0eXBlb2YgZmlyc3RJdGVtO1xuICAgICAgdGhpcy5fc291cmNlRGF0YUZpZWxkcyA9IHRoaXMuZ2V0RmllbGRzKGZpcnN0SXRlbSk7XG4gICAgICB0aGlzLl9kYXRhID0gdmFsdWUubWFwKChpdGVtOiBhbnkpID0+XG4gICAgICAgIHR5cGVvZiBpdGVtID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiBpdGVtID09PSBcIm51bWJlclwiXG4gICAgICAgICAgPyBuZXcgTGlzdEl0ZW0oaXRlbSlcbiAgICAgICAgICA6IG5ldyBMaXN0SXRlbSh7XG4gICAgICAgICAgICAgIGlkOiBpdGVtW3RoaXMuX3NldHRpbmdzLmlkRmllbGRdLFxuICAgICAgICAgICAgICB0ZXh0OiBpdGVtW3RoaXMuX3NldHRpbmdzLnRleHRGaWVsZF0sXG4gICAgICAgICAgICAgIGlzRGlzYWJsZWQ6IGl0ZW1bdGhpcy5fc2V0dGluZ3MuZGlzYWJsZWRGaWVsZF1cbiAgICAgICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBPdXRwdXQoXCJvbkZpbHRlckNoYW5nZVwiKVxuICBvbkZpbHRlckNoYW5nZTogRXZlbnRFbWl0dGVyPExpc3RJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KFwib25Ecm9wRG93bkNsb3NlXCIpXG4gIG9uRHJvcERvd25DbG9zZTogRXZlbnRFbWl0dGVyPExpc3RJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoXCJvblNlbGVjdFwiKVxuICBvblNlbGVjdDogRXZlbnRFbWl0dGVyPExpc3RJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoXCJvbkRlU2VsZWN0XCIpXG4gIG9uRGVTZWxlY3Q6IEV2ZW50RW1pdHRlcjxMaXN0SXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KFwib25TZWxlY3RBbGxcIilcbiAgb25TZWxlY3RBbGw6IEV2ZW50RW1pdHRlcjxBcnJheTxMaXN0SXRlbT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxhbnk+PigpO1xuXG4gIEBPdXRwdXQoXCJvbkRlU2VsZWN0QWxsXCIpXG4gIG9uRGVTZWxlY3RBbGw6IEV2ZW50RW1pdHRlcjxBcnJheTxMaXN0SXRlbT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxhbnk+PigpO1xuXG4gIHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xuXG4gIG9uRmlsdGVyVGV4dENoYW5nZSgkZXZlbnQpIHtcbiAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlLmVtaXQoJGV2ZW50KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbGlzdEZpbHRlclBpcGU6TGlzdEZpbHRlclBpcGUsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBvbkl0ZW1DbGljaygkZXZlbnQ6IGFueSwgaXRlbTogTGlzdEl0ZW0pIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCBpdGVtLmlzRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3VuZCA9IHRoaXMuaXNTZWxlY3RlZChpdGVtKTtcbiAgICBjb25zdCBhbGxvd0FkZCA9IHRoaXMuX3NldHRpbmdzLmxpbWl0U2VsZWN0aW9uID09PSAtMSB8fCAodGhpcy5fc2V0dGluZ3MubGltaXRTZWxlY3Rpb24gPiAwICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPCB0aGlzLl9zZXR0aW5ncy5saW1pdFNlbGVjdGlvbik7XG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgaWYgKGFsbG93QWRkKSB7XG4gICAgICAgIHRoaXMuYWRkU2VsZWN0ZWQoaXRlbSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWQoaXRlbSk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zZXR0aW5ncy5zaW5nbGVTZWxlY3Rpb24gJiYgdGhpcy5fc2V0dGluZ3MuY2xvc2VEcm9wRG93bk9uU2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAodGhpcy5fc2V0dGluZ3Muc2luZ2xlU2VsZWN0aW9uKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdEl0ZW0gPSB2YWx1ZVswXTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtcbiAgICAgICAgICAgICAgdHlwZW9mIGZpcnN0SXRlbSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgZmlyc3RJdGVtID09PSBcIm51bWJlclwiXG4gICAgICAgICAgICAgICAgPyBuZXcgTGlzdEl0ZW0oZmlyc3RJdGVtKVxuICAgICAgICAgICAgICAgIDogbmV3IExpc3RJdGVtKHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGZpcnN0SXRlbVt0aGlzLl9zZXR0aW5ncy5pZEZpZWxkXSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogZmlyc3RJdGVtW3RoaXMuX3NldHRpbmdzLnRleHRGaWVsZF0sXG4gICAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQ6IGZpcnN0SXRlbVt0aGlzLl9zZXR0aW5ncy5kaXNhYmxlZEZpZWxkXVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gY29uc29sZS5lcnJvcihlLmJvZHkubXNnKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgX2RhdGEgPSB2YWx1ZS5tYXAoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICB0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgaXRlbSA9PT0gXCJudW1iZXJcIlxuICAgICAgICAgICAgPyBuZXcgTGlzdEl0ZW0oaXRlbSlcbiAgICAgICAgICAgIDogbmV3IExpc3RJdGVtKHtcbiAgICAgICAgICAgICAgICBpZDogaXRlbVt0aGlzLl9zZXR0aW5ncy5pZEZpZWxkXSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtW3RoaXMuX3NldHRpbmdzLnRleHRGaWVsZF0sXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZDogaXRlbVt0aGlzLl9zZXR0aW5ncy5kaXNhYmxlZEZpZWxkXVxuICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICBpZiAodGhpcy5fc2V0dGluZ3MubGltaXRTZWxlY3Rpb24gPiAwKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gX2RhdGEuc3BsaWNlKDAsIHRoaXMuX3NldHRpbmdzLmxpbWl0U2VsZWN0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBfZGF0YTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHZhbHVlKTtcblxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgLy8gU2V0IHRvdWNoZWQgb24gYmx1clxuICBASG9zdExpc3RlbmVyKFwiYmx1clwiKVxuICBwdWJsaWMgb25Ub3VjaGVkKCkge1xuICAgIC8vIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2soKTtcbiAgfVxuXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG5cbiAgaXNTZWxlY3RlZChjbGlja2VkSXRlbTogTGlzdEl0ZW0pIHtcbiAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChjbGlja2VkSXRlbS5pZCA9PT0gaXRlbS5pZCkge1xuICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGZvdW5kO1xuICB9XG5cbiAgaXNMaW1pdFNlbGVjdGlvblJlYWNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzLmxpbWl0U2VsZWN0aW9uID09PSB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoO1xuICB9XG5cbiAgaXNBbGxJdGVtc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIGdldCBkaXNhYmxkIGl0ZW0gY291bnRcbiAgICBsZXQgZmlsdGVyZWRJdGVtcyA9IHRoaXMubGlzdEZpbHRlclBpcGUudHJhbnNmb3JtKHRoaXMuX2RhdGEsdGhpcy5maWx0ZXIpO1xuICAgIGNvbnN0IGl0ZW1EaXNhYmxlZENvdW50ID0gZmlsdGVyZWRJdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzRGlzYWJsZWQpLmxlbmd0aDtcbiAgICAvLyB0YWtlIGRpc2FibGVkIGl0ZW1zIGludG8gY29uc2lkZXJhdGlvbiB3aGVuIGNoZWNraW5nXG4gICAgaWYgKCghdGhpcy5kYXRhIHx8IHRoaXMuZGF0YS5sZW5ndGggPT09IDApICYmIHRoaXMuX3NldHRpbmdzLmFsbG93UmVtb3RlRGF0YVNlYXJjaCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyZWRJdGVtcy5sZW5ndGggPT09IHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggKyBpdGVtRGlzYWJsZWRDb3VudDtcbiAgfVxuXG4gIHNob3dCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLl9zZXR0aW5ncy5zaW5nbGVTZWxlY3Rpb24pIHtcbiAgICAgIGlmICh0aGlzLl9zZXR0aW5ncy5saW1pdFNlbGVjdGlvbiA+IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gdGhpcy5fc2V0dGluZ3MuZW5hYmxlQ2hlY2tBbGwgPSB0aGlzLl9zZXR0aW5ncy5saW1pdFNlbGVjdGlvbiA9PT0gLTEgPyB0cnVlIDogZmFsc2U7XG4gICAgICByZXR1cm4gdHJ1ZTsgLy8gIXRoaXMuX3NldHRpbmdzLnNpbmdsZVNlbGVjdGlvbiAmJiB0aGlzLl9zZXR0aW5ncy5lbmFibGVDaGVja0FsbCAmJiB0aGlzLl9kYXRhLmxlbmd0aCA+IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNob3VsZCBiZSBkaXNhYmxlZCBpbiBzaW5nbGUgc2VsZWN0aW9uIG1vZGVcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpdGVtU2hvd1JlbWFpbmluZygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gdGhpcy5fc2V0dGluZ3MuaXRlbXNTaG93TGltaXQ7XG4gIH1cblxuICBhZGRTZWxlY3RlZChpdGVtOiBMaXN0SXRlbSkge1xuICAgIGlmICh0aGlzLl9zZXR0aW5ncy5zaW5nbGVTZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodGhpcy5lbWl0dGVkVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKSk7XG4gICAgdGhpcy5vblNlbGVjdC5lbWl0KHRoaXMuZW1pdHRlZFZhbHVlKGl0ZW0pKTtcbiAgfVxuXG4gIHJlbW92ZVNlbGVjdGVkKGl0ZW1TZWw6IExpc3RJdGVtKSB7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbVNlbC5pZCA9PT0gaXRlbS5pZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuc3BsaWNlKHRoaXMuc2VsZWN0ZWRJdGVtcy5pbmRleE9mKGl0ZW0pLCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodGhpcy5lbWl0dGVkVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKSk7XG4gICAgdGhpcy5vbkRlU2VsZWN0LmVtaXQodGhpcy5lbWl0dGVkVmFsdWUoaXRlbVNlbCkpO1xuICB9XG5cbiAgZW1pdHRlZFZhbHVlKHZhbDogYW55KTogYW55IHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IFtdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgIHZhbC5tYXAoaXRlbSA9PiB7XG4gICAgICAgIHNlbGVjdGVkLnB1c2godGhpcy5vYmplY3RpZnkoaXRlbSkpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0aWZ5KHZhbCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZDtcbiAgfVxuXG4gIG9iamVjdGlmeSh2YWw6IExpc3RJdGVtKSB7XG4gICAgaWYgKHRoaXMuX3NvdXJjZURhdGFUeXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3Qgb2JqID0ge307XG4gICAgICBvYmpbdGhpcy5fc2V0dGluZ3MuaWRGaWVsZF0gPSB2YWwuaWQ7XG4gICAgICBvYmpbdGhpcy5fc2V0dGluZ3MudGV4dEZpZWxkXSA9IHZhbC50ZXh0O1xuICAgICAgaWYgKHRoaXMuX3NvdXJjZURhdGFGaWVsZHMuaW5jbHVkZXModGhpcy5fc2V0dGluZ3MuZGlzYWJsZWRGaWVsZCkpIHtcbiAgICAgICAgb2JqW3RoaXMuX3NldHRpbmdzLmRpc2FibGVkRmllbGRdID0gdmFsLmlzRGlzYWJsZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc291cmNlRGF0YVR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gTnVtYmVyKHZhbC5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWwudGV4dDtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVEcm9wZG93bihldnQpIHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCAmJiB0aGlzLl9zZXR0aW5ncy5zaW5nbGVTZWxlY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc2V0dGluZ3MuZGVmYXVsdE9wZW4gPSAhdGhpcy5fc2V0dGluZ3MuZGVmYXVsdE9wZW47XG4gICAgaWYgKCF0aGlzLl9zZXR0aW5ncy5kZWZhdWx0T3Blbikge1xuICAgICAgdGhpcy5vbkRyb3BEb3duQ2xvc2UuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlRHJvcGRvd24oKSB7XG4gICAgdGhpcy5fc2V0dGluZ3MuZGVmYXVsdE9wZW4gPSBmYWxzZTtcbiAgICAvLyBjbGVhciBzZWFyY2ggdGV4dFxuICAgIGlmICh0aGlzLl9zZXR0aW5ncy5jbGVhclNlYXJjaEZpbHRlcikge1xuICAgICAgdGhpcy5maWx0ZXIudGV4dCA9IFwiXCI7XG4gICAgfVxuICAgIHRoaXMub25Ecm9wRG93bkNsb3NlLmVtaXQoKTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdEFsbCgpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNBbGxJdGVtc1NlbGVjdGVkKCkpIHtcbiAgICAgIC8vIGZpbHRlciBvdXQgZGlzYWJsZWQgaXRlbSBmaXJzdCBiZWZvcmUgc2xpY2luZ1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5saXN0RmlsdGVyUGlwZS50cmFuc2Zvcm0odGhpcy5fZGF0YSx0aGlzLmZpbHRlcikuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uaXNEaXNhYmxlZCkuc2xpY2UoKTtcbiAgICAgIHRoaXMub25TZWxlY3RBbGwuZW1pdCh0aGlzLmVtaXR0ZWRWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICB0aGlzLm9uRGVTZWxlY3RBbGwuZW1pdCh0aGlzLmVtaXR0ZWRWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpKTtcbiAgICB9XG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMuZW1pdHRlZFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcykpO1xuICB9XG5cbiAgZ2V0RmllbGRzKGlucHV0RGF0YSkge1xuICAgIGNvbnN0IGZpZWxkcyA9IFtdO1xuICAgIGlmICh0eXBlb2YgaW5wdXREYXRhICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICByZXR1cm4gZmllbGRzO1xuICAgIH1cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Zm9yaW5cbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gaW5wdXREYXRhKSB7XG4gICAgICBmaWVsZHMucHVzaChwcm9wKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpZWxkcztcbiAgfVxuXG59XG4iLCI8ZGl2IHRhYmluZGV4PVwiMFwiIChibHVyKT1cIm9uVG91Y2hlZCgpXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1kcm9wZG93blwiIChjbGlja091dHNpZGUpPVwiY2xvc2VEcm9wZG93bigpXCI+XG4gIDxkaXYgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPHNwYW4gdGFiaW5kZXg9XCItMVwiIGNsYXNzPVwiZHJvcGRvd24tYnRuXCIgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKCRldmVudClcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMFwiPnt7X3BsYWNlaG9sZGVyfX08L3NwYW4+XG4gICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZEl0ZW1zOyB0cmFja0J5OiB0cmFja0J5Rm47bGV0IGsgPSBpbmRleFwiIGNsYXNzPVwic2VsZWN0ZWQtaXRlbS1jb250YWluZXJcIiA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0ZWQtaXRlbVwiICBbaGlkZGVuXT1cImsgID4gKHRoaXMuX3NldHRpbmdzLml0ZW1zU2hvd0xpbWl0LTEpXCI+XG4gICAgICAgICAgPHNwYW4gPnt7aXRlbS50ZXh0fX0mbmJzcDs8L3NwYW4+XG4gICAgICAgICAgPGEgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6MnB4O2NvbG9yOndoaXRlXCIgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudCxpdGVtKVwiPng8L2E+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICBcbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cInsgJ2Ryb3Bkb3duLW11bHRpc2VsZWN0LS1hY3RpdmUnOiBfc2V0dGluZ3MuZGVmYXVsdE9wZW4gfVwiIHN0eWxlPVwiZmxvYXQ6cmlnaHQgIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OjRweFwiPlxuICAgICAgICA8c3BhbiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDE1cHg7XCIgKm5nSWY9XCJpdGVtU2hvd1JlbWFpbmluZygpPjBcIj4re3tpdGVtU2hvd1JlbWFpbmluZygpfX08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24tbXVsdGlzZWxlY3RfX2NhcmV0XCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1saXN0XCIgW2hpZGRlbl09XCIhX3NldHRpbmdzLmRlZmF1bHRPcGVuXCI+XG4gICAgPHVsIGNsYXNzPVwiaXRlbTFcIj5cbiAgICAgIDxsaSAoY2xpY2spPVwidG9nZ2xlU2VsZWN0QWxsKClcIiAqbmdJZj1cIihfZGF0YS5sZW5ndGggPiAwIHx8IF9zZXR0aW5ncy5hbGxvd1JlbW90ZURhdGFTZWFyY2gpICYmICFfc2V0dGluZ3Muc2luZ2xlU2VsZWN0aW9uICYmIF9zZXR0aW5ncy5lbmFibGVDaGVja0FsbCAmJiBfc2V0dGluZ3MubGltaXRTZWxlY3Rpb249PT0tMVwiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbS1jaGVja2JveFwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7cGFkZGluZzoxMHB4XCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBhcmlhLWxhYmVsPVwibXVsdGlzZWxlY3Qtc2VsZWN0LWFsbFwiIFtjaGVja2VkXT1cImlzQWxsSXRlbXNTZWxlY3RlZCgpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGlzTGltaXRTZWxlY3Rpb25SZWFjaGVkKClcIiAvPlxuICAgICAgICA8ZGl2Pnt7IWlzQWxsSXRlbXNTZWxlY3RlZCgpID8gX3NldHRpbmdzLnNlbGVjdEFsbFRleHQgOiBfc2V0dGluZ3MudW5TZWxlY3RBbGxUZXh0fX08L2Rpdj5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgY2xhc3M9XCJmaWx0ZXItdGV4dGJveFwiICpuZ0lmPVwiKF9kYXRhLmxlbmd0aD4wIHx8IF9zZXR0aW5ncy5hbGxvd1JlbW90ZURhdGFTZWFyY2gpICYmIF9zZXR0aW5ncy5hbGxvd1NlYXJjaEZpbHRlclwiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBhcmlhLWxhYmVsPVwibXVsdGlzZWxlY3Qtc2VhcmNoXCIgW3JlYWRPbmx5XT1cImRpc2FibGVkXCIgW3BsYWNlaG9sZGVyXT1cIl9zZXR0aW5ncy5zZWFyY2hQbGFjZWhvbGRlclRleHRcIiBbKG5nTW9kZWwpXT1cImZpbHRlci50ZXh0XCIgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWx0ZXJUZXh0Q2hhbmdlKCRldmVudClcIj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8dWwgY2xhc3M9XCJpdGVtMlwiIFtzdHlsZS5tYXhIZWlnaHRdPVwiX3NldHRpbmdzLm1heEhlaWdodCsncHgnXCI+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgX2RhdGEgfCBtdWx0aVNlbGVjdEZpbHRlcjpmaWx0ZXI7IGxldCBpID0gaW5kZXg7XCIgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudCxpdGVtKVwiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbS1jaGVja2JveFwiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2F0dHIuYXJpYS1sYWJlbF09XCJpdGVtLnRleHRcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKGl0ZW0pXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IChpc0xpbWl0U2VsZWN0aW9uUmVhY2hlZCgpICYmICFpc1NlbGVjdGVkKGl0ZW0pKSB8fCBpdGVtLmlzRGlzYWJsZWRcIiAvPlxuICAgICAgICA8ZGl2Pnt7aXRlbS50ZXh0fX08L2Rpdj5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgY2xhc3M9J25vLWZpbHRlcmVkLWRhdGEnICpuZ0lmPVwiX2RhdGEubGVuZ3RoICE9IDAgJiYgKF9kYXRhIHwgbXVsdGlTZWxlY3RGaWx0ZXI6ZmlsdGVyKS5sZW5ndGggPT0gMCAmJiAhX3NldHRpbmdzLmFsbG93UmVtb3RlRGF0YVNlYXJjaFwiPlxuICAgICAgICA8aDU+e3tfc2V0dGluZ3Mubm9GaWx0ZXJlZERhdGFBdmFpbGFibGVQbGFjZWhvbGRlclRleHR9fTwvaDU+XG4gICAgICA8L2xpPlxuICAgICAgPGxpIGNsYXNzPSduby1kYXRhJyAqbmdJZj1cIl9kYXRhLmxlbmd0aCA9PSAwICYmICFfc2V0dGluZ3MuYWxsb3dSZW1vdGVEYXRhU2VhcmNoXCI+XG4gICAgICAgIDxoNT57e19zZXR0aW5ncy5ub0RhdGFBdmFpbGFibGVQbGFjZWhvbGRlclRleHR9fTwvaDU+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export class ListItem {
|
|
2
|
-
id;
|
|
3
|
-
text;
|
|
4
|
-
isDisabled;
|
|
5
|
-
constructor(source) {
|
|
6
|
-
if (typeof source === 'string' || typeof source === 'number') {
|
|
7
|
-
this.id = this.text = source;
|
|
8
|
-
this.isDisabled = false;
|
|
9
|
-
}
|
|
10
|
-
if (typeof source === 'object') {
|
|
11
|
-
this.id = source.id;
|
|
12
|
-
this.text = source.text;
|
|
13
|
-
this.isDisabled = source.isDisabled;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlzZWxlY3QubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmctbXVsdGlzZWxlY3QtZHJvcGRvd24vc3JjL211bHRpc2VsZWN0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNCQSxNQUFNLE9BQU8sUUFBUTtJQUNuQixFQUFFLENBQWtCO0lBQ3BCLElBQUksQ0FBa0I7SUFDdEIsVUFBVSxDQUFXO0lBRXJCLFlBQW1CLE1BQVc7UUFDNUIsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztZQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUMxQixDQUFDO1FBQ0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJRHJvcGRvd25TZXR0aW5ncyB7XG4gIHNpbmdsZVNlbGVjdGlvbj86IGJvb2xlYW47XG4gIGlkRmllbGQ/OiBzdHJpbmc7XG4gIHRleHRGaWVsZD86IHN0cmluZztcbiAgZGlzYWJsZWRGaWVsZD86IHN0cmluZztcbiAgZW5hYmxlQ2hlY2tBbGw/OiBib29sZWFuO1xuICBzZWxlY3RBbGxUZXh0Pzogc3RyaW5nO1xuICB1blNlbGVjdEFsbFRleHQ/OiBzdHJpbmc7XG4gIGFsbG93U2VhcmNoRmlsdGVyPzogYm9vbGVhbjtcbiAgY2xlYXJTZWFyY2hGaWx0ZXI/OiBib29sZWFuO1xuICBtYXhIZWlnaHQ/OiBudW1iZXI7XG4gIGl0ZW1zU2hvd0xpbWl0PzogbnVtYmVyO1xuICBsaW1pdFNlbGVjdGlvbj86IG51bWJlcjtcbiAgc2VhcmNoUGxhY2Vob2xkZXJUZXh0Pzogc3RyaW5nO1xuICBub0RhdGFBdmFpbGFibGVQbGFjZWhvbGRlclRleHQ/OiBzdHJpbmc7XG4gIG5vRmlsdGVyZWREYXRhQXZhaWxhYmxlUGxhY2Vob2xkZXJUZXh0Pzogc3RyaW5nO1xuICBjbG9zZURyb3BEb3duT25TZWxlY3Rpb24/OiBib29sZWFuO1xuICBzaG93U2VsZWN0ZWRJdGVtc0F0VG9wPzogYm9vbGVhbjtcbiAgZGVmYXVsdE9wZW4/OiBib29sZWFuO1xuICBhbGxvd1JlbW90ZURhdGFTZWFyY2g/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgTGlzdEl0ZW0ge1xuICBpZDogU3RyaW5nIHwgbnVtYmVyO1xuICB0ZXh0OiBTdHJpbmcgfCBudW1iZXI7XG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihzb3VyY2U6IGFueSkge1xuICAgIGlmICh0eXBlb2Ygc291cmNlID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygc291cmNlID09PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5pZCA9IHRoaXMudGV4dCA9IHNvdXJjZTtcbiAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHRoaXMuaWQgPSBzb3VyY2UuaWQ7XG4gICAgICB0aGlzLnRleHQgPSBzb3VyY2UudGV4dDtcbiAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IHNvdXJjZS5pc0Rpc2FibGVkO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { FormsModule } from '@angular/forms';
|
|
4
|
-
import { MultiSelectComponent } from './multiselect.component';
|
|
5
|
-
import { ClickOutsideDirective } from './click-outside.directive';
|
|
6
|
-
import { ListFilterPipe } from './list-filter.pipe';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
export class NgMultiSelectDropDownModule {
|
|
9
|
-
static forRoot() {
|
|
10
|
-
return {
|
|
11
|
-
ngModule: NgMultiSelectDropDownModule
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgMultiSelectDropDownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: NgMultiSelectDropDownModule, declarations: [MultiSelectComponent, ClickOutsideDirective, ListFilterPipe], imports: [CommonModule, FormsModule], exports: [MultiSelectComponent] });
|
|
16
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgMultiSelectDropDownModule, providers: [ListFilterPipe], imports: [CommonModule, FormsModule] });
|
|
17
|
-
}
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgMultiSelectDropDownModule, decorators: [{
|
|
19
|
-
type: NgModule,
|
|
20
|
-
args: [{
|
|
21
|
-
imports: [CommonModule, FormsModule],
|
|
22
|
-
declarations: [MultiSelectComponent, ClickOutsideDirective, ListFilterPipe],
|
|
23
|
-
providers: [ListFilterPipe],
|
|
24
|
-
exports: [MultiSelectComponent]
|
|
25
|
-
}]
|
|
26
|
-
}] });
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctbXVsdGlzZWxlY3QtZHJvcGRvd24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25nLW11bHRpc2VsZWN0LWRyb3Bkb3duL3NyYy9uZy1tdWx0aXNlbGVjdC1kcm9wZG93bi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBU3BELE1BQU0sT0FBTywyQkFBMkI7SUFDcEMsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLDJCQUEyQjtTQUN0QyxDQUFDO0lBQ0osQ0FBQzt3R0FMUSwyQkFBMkI7eUdBQTNCLDJCQUEyQixpQkFMdkIsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxhQURoRSxZQUFZLEVBQUUsV0FBVyxhQUd6QixvQkFBb0I7eUdBR25CLDJCQUEyQixhQUozQixDQUFDLGNBQWMsQ0FBQyxZQUZqQixZQUFZLEVBQUUsV0FBVzs7NEZBTXhCLDJCQUEyQjtrQkFQdkMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO29CQUNwQyxZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxjQUFjLENBQUM7b0JBQzNFLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDM0IsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7aUJBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE11bHRpU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9tdWx0aXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlIH0gZnJvbSAnLi9jbGljay1vdXRzaWRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMaXN0RmlsdGVyUGlwZSB9IGZyb20gJy4vbGlzdC1maWx0ZXIucGlwZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbTXVsdGlTZWxlY3RDb21wb25lbnQsIENsaWNrT3V0c2lkZURpcmVjdGl2ZSwgTGlzdEZpbHRlclBpcGVdLFxuICBwcm92aWRlcnM6IFtMaXN0RmlsdGVyUGlwZV0sXG4gIGV4cG9ydHM6IFtNdWx0aVNlbGVjdENvbXBvbmVudF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBOZ011bHRpU2VsZWN0RHJvcERvd25Nb2R1bGUge1xuICAgIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TmdNdWx0aVNlbGVjdERyb3BEb3duTW9kdWxlPiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuZ01vZHVsZTogTmdNdWx0aVNlbGVjdERyb3BEb3duTW9kdWxlXG4gICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
|
package/esm2022/public_api.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { MultiSelectComponent } from './multiselect.component';
|
|
2
|
-
export { NgMultiSelectDropDownModule } from './ng-multiselect-dropdown.module';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uZy1tdWx0aXNlbGVjdC1kcm9wZG93bi9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IE11bHRpU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9tdWx0aXNlbGVjdC5jb21wb25lbnQnO1xuZXhwb3J0IHsgTmdNdWx0aVNlbGVjdERyb3BEb3duTW9kdWxlIH0gZnJvbSAnLi9uZy1tdWx0aXNlbGVjdC1kcm9wZG93bi5tb2R1bGUnO1xuZXhwb3J0IHsgSURyb3Bkb3duU2V0dGluZ3MgfSBmcm9tICcuL211bHRpc2VsZWN0Lm1vZGVsJztcbiJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public_api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2aXZlanMtbmctbXVsdGlzZWxlY3QtZHJvcGRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmctbXVsdGlzZWxlY3QtZHJvcGRvd24vc3JjL3Jldml2ZWpzLW5nLW11bHRpc2VsZWN0LWRyb3Bkb3duLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
|