UNPKG

ngu-multiselect-dropdown

Version:

Angular multiselect dropdown component for web applications. Easy to integrate and use. It can be bind to any custom data source and custom filter.

863 lines (854 loc) 34.3 kB
import { Pipe, forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ChangeDetectorRef, Input, Output, HostListener, Directive, ElementRef, NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms'; /** * @fileoverview added by tsickle * Generated from: lib/multiselect-dropdown.module.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @record */ function IDropdownSettings() { } if (false) { /** @type {?|undefined} */ IDropdownSettings.prototype.singleSelection; /** @type {?|undefined} */ IDropdownSettings.prototype.idField; /** @type {?|undefined} */ IDropdownSettings.prototype.textField; /** @type {?|undefined} */ IDropdownSettings.prototype.disabledField; /** @type {?|undefined} */ IDropdownSettings.prototype.enableCheckAll; /** @type {?|undefined} */ IDropdownSettings.prototype.selectAllText; /** @type {?|undefined} */ IDropdownSettings.prototype.unSelectAllText; /** @type {?|undefined} */ IDropdownSettings.prototype.allowSearchFilter; /** @type {?|undefined} */ IDropdownSettings.prototype.clearSearchFilter; /** @type {?|undefined} */ IDropdownSettings.prototype.maxHeight; /** @type {?|undefined} */ IDropdownSettings.prototype.itemsShowLimit; /** @type {?|undefined} */ IDropdownSettings.prototype.limitSelection; /** @type {?|undefined} */ IDropdownSettings.prototype.searchPlaceholderText; /** @type {?|undefined} */ IDropdownSettings.prototype.noDataAvailablePlaceholderText; /** @type {?|undefined} */ IDropdownSettings.prototype.closeDropDownOnSelection; /** @type {?|undefined} */ IDropdownSettings.prototype.showSelectedItemsAtTop; /** @type {?|undefined} */ IDropdownSettings.prototype.defaultOpen; /** @type {?|undefined} */ IDropdownSettings.prototype.allowRemoteDataSearch; } var ListItem = /** @class */ (function () { function ListItem(source) { if (typeof source === 'string' || typeof source === 'number') { this.id = this.text = source; this.isDisabled = false; } if (typeof source === 'object') { this.id = source.id; this.text = source.text; this.isDisabled = source.isDisabled; } } return ListItem; }()); if (false) { /** @type {?} */ ListItem.prototype.id; /** @type {?} */ ListItem.prototype.text; /** @type {?} */ ListItem.prototype.isDisabled; } /** * @fileoverview added by tsickle * Generated from: lib/list-filter.pipe.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var ListFilterPipe = /** @class */ (function () { function ListFilterPipe() { } /** * @param {?} items * @param {?} filter * @return {?} */ ListFilterPipe.prototype.transform = /** * @param {?} items * @param {?} filter * @return {?} */ function (items, filter) { var _this = this; if (!items || !filter) { return items; } return items.filter((/** * @param {?} item * @return {?} */ function (item) { return _this.applyFilter(item, filter); })); }; /** * @param {?} item * @param {?} filter * @return {?} */ ListFilterPipe.prototype.applyFilter = /** * @param {?} item * @param {?} filter * @return {?} */ function (item, filter) { if (typeof item.text === 'string' && typeof filter.text === 'string') { if (item.text == "Others") { return true; } else { return !(filter.text && item.text && item.text.toLowerCase().indexOf(filter.text.toLowerCase()) === -1); } } else { return !(filter.text && item.text && item.text.toString().toLowerCase().indexOf(filter.text.toString().toLowerCase()) === -1); } }; ListFilterPipe.decorators = [ { type: Pipe, args: [{ name: 'multiSelectFilter', pure: false },] } ]; return ListFilterPipe; }()); /** * @fileoverview added by tsickle * Generated from: lib/multiselect-dropdown.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DROPDOWN_CONTROL_VALUE_ACCESSOR = { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((/** * @return {?} */ function () { return MultiselectDropdownComponent; })), multi: true }; /** @type {?} */ var noop = (/** * @return {?} */ function () { }); var ɵ0 = noop; var MultiselectDropdownComponent = /** @class */ (function () { function MultiselectDropdownComponent(cdr, listFilterPipe) { this.cdr = cdr; this.listFilterPipe = listFilterPipe; this._data = []; this.selectedItems = []; this.isDropdownOpen = true; this._placeholder = "Select"; this._sourceDataType = null; // to keep note of the source data type. could be array of string/number/object // to keep note of the source data type. could be array of string/number/object this._sourceDataFields = []; // store source data fields names // store source data fields names this.filter = new ListItem(this.data); this.defaultSettings = { singleSelection: false, idField: "id", textField: "text", disabledField: "isDisabled", enableCheckAll: true, selectAllText: "Select All", unSelectAllText: "UnSelect All", allowSearchFilter: false, limitSelection: -1, clearSearchFilter: true, maxHeight: 197, itemsShowLimit: 999999999999, searchPlaceholderText: "Search", noDataAvailablePlaceholderText: "No data available", closeDropDownOnSelection: false, showSelectedItemsAtTop: false, defaultOpen: false, allowRemoteDataSearch: false, }; this.disabled = false; this.onFilterChange = new EventEmitter(); this.onDropDownClose = new EventEmitter(); this.onSelect = new EventEmitter(); this.onDeSelect = new EventEmitter(); this.onSelectAll = new EventEmitter(); this.onDeSelectAll = new EventEmitter(); this.onTouchedCallback = noop; this.onChangeCallback = noop; } Object.defineProperty(MultiselectDropdownComponent.prototype, "placeholder", { set: /** * @param {?} value * @return {?} */ function (value) { if (value) { this._placeholder = value; } else { this._placeholder = "Select"; } }, enumerable: true, configurable: true }); Object.defineProperty(MultiselectDropdownComponent.prototype, "settings", { set: /** * @param {?} value * @return {?} */ function (value) { if (value) { this._settings = Object.assign(this.defaultSettings, value); } else { this._settings = Object.assign(this.defaultSettings); } }, enumerable: true, configurable: true }); Object.defineProperty(MultiselectDropdownComponent.prototype, "data", { set: /** * @param {?} value * @return {?} */ function (value) { var _this = this; if (!value) { this._data = []; } else { /** @type {?} */ var firstItem = value[0]; this._sourceDataType = typeof firstItem; this._sourceDataFields = this.getFields(firstItem); this._data = value.map((/** * @param {?} item * @return {?} */ function (item) { return typeof item === "string" || typeof item === "number" ? new ListItem(item) : new ListItem({ id: item[_this._settings.idField], text: item[_this._settings.textField], isDisabled: item[_this._settings.disabledField] }); })); } }, enumerable: true, configurable: true }); /** * @param {?} $event * @return {?} */ MultiselectDropdownComponent.prototype.onFilterTextChange = /** * @param {?} $event * @return {?} */ function ($event) { this.onFilterChange.emit($event); }; /** * @param {?} $event * @param {?} item * @return {?} */ MultiselectDropdownComponent.prototype.onItemClick = /** * @param {?} $event * @param {?} item * @return {?} */ function ($event, item) { if (this.disabled || item.isDisabled) { return false; } /** @type {?} */ var found = this.isSelected(item); /** @type {?} */ var allowAdd = this._settings.limitSelection === -1 || (this._settings.limitSelection > 0 && this.selectedItems.length < this._settings.limitSelection); if (!found) { if (allowAdd) { this.addSelected(item); } } else { this.removeSelected(item); } if (this._settings.singleSelection && this._settings.closeDropDownOnSelection) { this.closeDropdown(); } }; /** * @param {?} value * @return {?} */ MultiselectDropdownComponent.prototype.writeValue = /** * @param {?} value * @return {?} */ function (value) { var _this = this; if (value !== undefined && value !== null && value.length > 0) { if (this._settings.singleSelection) { try { if (value.length >= 1) { /** @type {?} */ var firstItem = value[0]; this.selectedItems = [ typeof firstItem === "string" || typeof firstItem === "number" ? new ListItem(firstItem) : new ListItem({ id: firstItem[this._settings.idField], text: firstItem[this._settings.textField], isDisabled: firstItem[this._settings.disabledField] }) ]; } } catch (e) { // console.error(e.body.msg); } } else { /** @type {?} */ var _data = value.map((/** * @param {?} item * @return {?} */ function (item) { return typeof item === "string" || typeof item === "number" ? new ListItem(item) : new ListItem({ id: item[_this._settings.idField], text: item[_this._settings.textField], isDisabled: item[_this._settings.disabledField] }); })); if (this._settings.limitSelection > 0) { this.selectedItems = _data.splice(0, this._settings.limitSelection); } else { this.selectedItems = _data; } } } else { this.selectedItems = []; } this.onChangeCallback(value); }; // From ControlValueAccessor interface // From ControlValueAccessor interface /** * @param {?} fn * @return {?} */ MultiselectDropdownComponent.prototype.registerOnChange = // From ControlValueAccessor interface /** * @param {?} fn * @return {?} */ function (fn) { this.onChangeCallback = fn; }; // From ControlValueAccessor interface // From ControlValueAccessor interface /** * @param {?} fn * @return {?} */ MultiselectDropdownComponent.prototype.registerOnTouched = // From ControlValueAccessor interface /** * @param {?} fn * @return {?} */ function (fn) { this.onTouchedCallback = fn; }; // Set touched on blur // Set touched on blur /** * @return {?} */ MultiselectDropdownComponent.prototype.onTouched = // Set touched on blur /** * @return {?} */ function () { this.closeDropdown(); this.onTouchedCallback(); }; /** * @param {?} index * @param {?} item * @return {?} */ MultiselectDropdownComponent.prototype.trackByFn = /** * @param {?} index * @param {?} item * @return {?} */ function (index, item) { return item.id; }; /** * @param {?} clickedItem * @return {?} */ MultiselectDropdownComponent.prototype.isSelected = /** * @param {?} clickedItem * @return {?} */ function (clickedItem) { /** @type {?} */ var found = false; this.selectedItems.forEach((/** * @param {?} item * @return {?} */ function (item) { if (clickedItem.id === item.id) { found = true; } })); return found; }; /** * @return {?} */ MultiselectDropdownComponent.prototype.isLimitSelectionReached = /** * @return {?} */ function () { return this._settings.limitSelection === this.selectedItems.length; }; /** * @return {?} */ MultiselectDropdownComponent.prototype.isAllItemsSelected = /** * @return {?} */ function () { // get disabld item count /** @type {?} */ var filteredItems = this.listFilterPipe.transform(this._data, this.filter); /** @type {?} */ var itemDisabledCount = filteredItems.filter((/** * @param {?} item * @return {?} */ function (item) { return item.isDisabled; })).length; // take disabled items into consideration when checking if ((!this.data || this.data.length === 0) && this._settings.allowRemoteDataSearch) { return false; } return filteredItems.length === this.selectedItems.length + itemDisabledCount; }; /** * @return {?} */ MultiselectDropdownComponent.prototype.showButton = /** * @return {?} */ function () { if (!this._settings.singleSelection) { if (this._settings.limitSelection > 0) { return false; } // this._settings.enableCheckAll = this._settings.limitSelection === -1 ? true : false; return true; // !this._settings.singleSelection && this._settings.enableCheckAll && this._data.length > 0; } else { // should be disabled in single selection mode return false; } }; /** * @return {?} */ MultiselectDropdownComponent.prototype.itemShowRemaining = /** * @return {?} */ function () { return this.selectedItems.length - this._settings.itemsShowLimit; }; /** * @param {?} item * @return {?} */ MultiselectDropdownComponent.prototype.addSelected = /** * @param {?} item * @return {?} */ function (item) { if (this._settings.singleSelection) { this.selectedItems = []; this.selectedItems.push(item); } else { this.selectedItems.push(item); } this.onChangeCallback(this.emittedValue(this.selectedItems)); this.onSelect.emit(this.emittedValue(item)); }; /** * @param {?} itemSel * @return {?} */ MultiselectDropdownComponent.prototype.removeSelected = /** * @param {?} itemSel * @return {?} */ function (itemSel) { var _this = this; this.selectedItems.forEach((/** * @param {?} item * @return {?} */ function (item) { if (itemSel.id === item.id) { _this.selectedItems.splice(_this.selectedItems.indexOf(item), 1); } })); this.onChangeCallback(this.emittedValue(this.selectedItems)); this.onDeSelect.emit(this.emittedValue(itemSel)); }; /** * @param {?} val * @return {?} */ MultiselectDropdownComponent.prototype.emittedValue = /** * @param {?} val * @return {?} */ function (val) { var _this = this; /** @type {?} */ var selected = []; if (Array.isArray(val)) { val.map((/** * @param {?} item * @return {?} */ function (item) { selected.push(_this.objectify(item)); })); } else { if (val) { return this.objectify(val); } } return selected; }; /** * @param {?} val * @return {?} */ MultiselectDropdownComponent.prototype.objectify = /** * @param {?} val * @return {?} */ function (val) { if (this._sourceDataType === 'object') { /** @type {?} */ var obj = {}; obj[this._settings.idField] = val.id; obj[this._settings.textField] = val.text; if (this._sourceDataFields.includes(this._settings.disabledField)) { obj[this._settings.disabledField] = val.isDisabled; } return obj; } if (this._sourceDataType === 'number') { return Number(val.id); } else { return val.text; } }; /** * @param {?} evt * @return {?} */ MultiselectDropdownComponent.prototype.toggleDropdown = /** * @param {?} evt * @return {?} */ function (evt) { evt.preventDefault(); if (this.disabled && this._settings.singleSelection) { return; } this._settings.defaultOpen = !this._settings.defaultOpen; if (!this._settings.defaultOpen) { this.onDropDownClose.emit(); } }; /** * @return {?} */ MultiselectDropdownComponent.prototype.closeDropdown = /** * @return {?} */ function () { this._settings.defaultOpen = false; // clear search text if (this._settings.clearSearchFilter) { this.filter.text = ""; } this.onDropDownClose.emit(); }; /** * @return {?} */ MultiselectDropdownComponent.prototype.toggleSelectAll = /** * @return {?} */ function () { if (this.disabled) { return false; } if (!this.isAllItemsSelected()) { // filter out disabled item first before slicing this.selectedItems = this.listFilterPipe.transform(this._data, this.filter).filter((/** * @param {?} item * @return {?} */ function (item) { return !item.isDisabled; })).slice(); this.onSelectAll.emit(this.emittedValue(this.selectedItems)); } else { this.selectedItems = []; this.onDeSelectAll.emit(this.emittedValue(this.selectedItems)); } this.onChangeCallback(this.emittedValue(this.selectedItems)); }; /** * @param {?} inputData * @return {?} */ MultiselectDropdownComponent.prototype.getFields = /** * @param {?} inputData * @return {?} */ function (inputData) { /** @type {?} */ var fields = []; if (typeof inputData !== "object") { return fields; } // tslint:disable-next-line:forin for (var prop in inputData) { fields.push(prop); } return fields; }; MultiselectDropdownComponent.decorators = [ { type: Component, args: [{ selector: 'nu-multiselect-dropdown', template: "<div tabindex=\"=0\" (blur)=\"onTouched()\" class=\"multiselect-dropdown\" (clickOutside)=\"closeDropdown()\">\r\n <div [class.disabled]=\"disabled\">\r\n <span tabindex=\"-1\" class=\"dropdown-btn\" (click)=\"toggleDropdown($event)\">\r\n <span *ngIf=\"selectedItems.length == 0\">{{_placeholder}}</span>\r\n <span class=\"selected-item\" *ngFor=\"let item of selectedItems;trackBy: trackByFn;let k = index\" [hidden]=\"k > _settings.itemsShowLimit-1\">\r\n {{item.text}}\r\n <a style=\"padding-top:2px;padding-left:2px;color:white\" (click)=\"onItemClick($event,item)\">x</a>\r\n </span>\r\n <span style=\"float:right !important;padding-right:4px\">\r\n <span style=\"padding-right: 6px;\" *ngIf=\"itemShowRemaining()>0\">+{{itemShowRemaining()}}</span>\r\n <span [ngClass]=\"_settings.defaultOpen ? 'dropdown-up' : 'dropdown-down'\"></span>\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"dropdown-list\" [hidden]=\"!_settings.defaultOpen\">\r\n <ul class=\"item1\">\r\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\">\r\n <input type=\"checkbox\" aria-label=\"multiselect-select-all\" [checked]=\"isAllItemsSelected()\" [disabled]=\"disabled || isLimitSelectionReached()\" />\r\n <div>{{!isAllItemsSelected() ? _settings.selectAllText : _settings.unSelectAllText}}</div>\r\n </li>\r\n <li class=\"filter-textbox\" *ngIf=\"(_data.length>0 || _settings.allowRemoteDataSearch) && _settings.allowSearchFilter\">\r\n <input type=\"text\" aria-label=\"multiselect-search\" [readOnly]=\"disabled\" [placeholder]=\"_settings.searchPlaceholderText\" [(ngModel)]=\"filter.text\" (ngModelChange)=\"onFilterTextChange($event)\">\r\n </li>\r\n </ul>\r\n <ul class=\"item2\" [style.maxHeight]=\"_settings.maxHeight+'px'\">\r\n <li *ngFor=\"let item of _data | multiSelectFilter:filter; let i = index;\" (click)=\"onItemClick($event,item)\" class=\"multiselect-item-checkbox\">\r\n <input type=\"checkbox\" aria-label=\"multiselect-item\" [checked]=\"isSelected(item)\" [disabled]=\"disabled || (isLimitSelectionReached() && !isSelected(item)) || item.isDisabled\" />\r\n <div>{{item.text}}</div>\r\n </li>\r\n <li class='no-data' *ngIf=\"_data.length == 0 && !_settings.allowRemoteDataSearch\">\r\n <h5>{{_settings.noDataAvailablePlaceholderText}}</h5>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n ", providers: [DROPDOWN_CONTROL_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, 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{border:1px solid #337ab7;margin-right:4px;background:#337ab7;padding:0 5px;color:#fff;border-radius:2px;float:left}.multiselect-dropdown .dropdown-btn .selected-item a{text-decoration:none}.multiselect-dropdown .dropdown-btn .selected-item:hover{box-shadow:1px 1px #959595}.multiselect-dropdown .dropdown-btn .dropdown-down{display:inline-block;top:10px;width:0;height:0;border-top:10px solid #adadad;border-left:10px solid transparent;border-right:10px solid transparent}.multiselect-dropdown .dropdown-btn .dropdown-up{display:inline-block;width:0;height:0;border-bottom:10px solid #adadad;border-left:10px solid transparent;border-right:10px solid transparent}.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:0;width:100%;padding:0 0 0 26px}.dropdown-list .filter-textbox input:focus{outline:0}.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;-moz-user-select:none;-ms-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:.4s}.multiselect-item-checkbox input[type=checkbox]+div:after{box-sizing:content-box;content:\"\";position:absolute;transform:scale(0);transform-origin:50%;transition:transform .2s ease-out;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;-o-border-image:none;border-image:none;transform:rotate(-45deg) scale(0)}.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]:checked+div:after{content:\"\";transition:transform .2s ease-out;transform:rotate(-45deg) scale(1)}.multiselect-item-checkbox input[type=checkbox]:checked+div:before{-webkit-animation:.2s ease-in borderscale;animation:.2s ease-in borderscale;background:#337ab7}@-webkit-keyframes borderscale{50%{box-shadow:0 0 0 2px #337ab7}}@keyframes borderscale{50%{box-shadow:0 0 0 2px #337ab7}}"] }] } ]; /** @nocollapse */ MultiselectDropdownComponent.ctorParameters = function () { return [ { type: ChangeDetectorRef }, { type: ListFilterPipe } ]; }; MultiselectDropdownComponent.propDecorators = { placeholder: [{ type: Input }], disabled: [{ type: Input }], settings: [{ type: Input }], data: [{ type: Input }], onFilterChange: [{ type: Output, args: ["onFilterChange",] }], onDropDownClose: [{ type: Output, args: ["onDropDownClose",] }], onSelect: [{ type: Output, args: ["onSelect",] }], onDeSelect: [{ type: Output, args: ["onDeSelect",] }], onSelectAll: [{ type: Output, args: ["onSelectAll",] }], onDeSelectAll: [{ type: Output, args: ["onDeSelectAll",] }], onTouched: [{ type: HostListener, args: ["blur",] }] }; return MultiselectDropdownComponent; }()); if (false) { /** @type {?} */ MultiselectDropdownComponent.prototype._settings; /** @type {?} */ MultiselectDropdownComponent.prototype._data; /** @type {?} */ MultiselectDropdownComponent.prototype.selectedItems; /** @type {?} */ MultiselectDropdownComponent.prototype.isDropdownOpen; /** @type {?} */ MultiselectDropdownComponent.prototype._placeholder; /** * @type {?} * @private */ MultiselectDropdownComponent.prototype._sourceDataType; /** * @type {?} * @private */ MultiselectDropdownComponent.prototype._sourceDataFields; /** @type {?} */ MultiselectDropdownComponent.prototype.filter; /** @type {?} */ MultiselectDropdownComponent.prototype.defaultSettings; /** @type {?} */ MultiselectDropdownComponent.prototype.disabled; /** @type {?} */ MultiselectDropdownComponent.prototype.onFilterChange; /** @type {?} */ MultiselectDropdownComponent.prototype.onDropDownClose; /** @type {?} */ MultiselectDropdownComponent.prototype.onSelect; /** @type {?} */ MultiselectDropdownComponent.prototype.onDeSelect; /** @type {?} */ MultiselectDropdownComponent.prototype.onSelectAll; /** @type {?} */ MultiselectDropdownComponent.prototype.onDeSelectAll; /** * @type {?} * @private */ MultiselectDropdownComponent.prototype.onTouchedCallback; /** * @type {?} * @private */ MultiselectDropdownComponent.prototype.onChangeCallback; /** * @type {?} * @private */ MultiselectDropdownComponent.prototype.cdr; /** * @type {?} * @private */ MultiselectDropdownComponent.prototype.listFilterPipe; } /** * @fileoverview added by tsickle * Generated from: lib/click-outside.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var ClickOutsideDirective = /** @class */ (function () { function ClickOutsideDirective(_elementRef) { this._elementRef = _elementRef; this.clickOutside = new EventEmitter(); } /** * @param {?} event * @param {?} targetElement * @return {?} */ ClickOutsideDirective.prototype.onClick = /** * @param {?} event * @param {?} targetElement * @return {?} */ function (event, targetElement) { if (!targetElement) { return; } /** @type {?} */ var clickedInside = this._elementRef.nativeElement.contains(targetElement); if (!clickedInside) { this.clickOutside.emit(event); } }; ClickOutsideDirective.decorators = [ { type: Directive, args: [{ selector: '[clickOutside]' },] } ]; /** @nocollapse */ ClickOutsideDirective.ctorParameters = function () { return [ { type: ElementRef } ]; }; ClickOutsideDirective.propDecorators = { clickOutside: [{ type: Output }], onClick: [{ type: HostListener, args: ['document:click', ['$event', '$event.target'],] }] }; return ClickOutsideDirective; }()); if (false) { /** @type {?} */ ClickOutsideDirective.prototype.clickOutside; /** * @type {?} * @private */ ClickOutsideDirective.prototype._elementRef; } /** * @fileoverview added by tsickle * Generated from: lib/nu-multiselect-dropdown.module.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var NuMultiSelectDropDownModule = /** @class */ (function () { function NuMultiSelectDropDownModule() { } /** * @return {?} */ NuMultiSelectDropDownModule.forRoot = /** * @return {?} */ function () { return { ngModule: NuMultiSelectDropDownModule }; }; NuMultiSelectDropDownModule.decorators = [ { type: NgModule, args: [{ imports: [CommonModule, FormsModule], declarations: [MultiselectDropdownComponent, ClickOutsideDirective, ListFilterPipe], providers: [ListFilterPipe], exports: [MultiselectDropdownComponent] },] } ]; return NuMultiSelectDropDownModule; }()); /** * @fileoverview added by tsickle * Generated from: public-api.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * Generated from: ngu-multiselect-dropdown.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ export { MultiselectDropdownComponent, NuMultiSelectDropDownModule, DROPDOWN_CONTROL_VALUE_ACCESSOR as ɵa, ListFilterPipe as ɵb, ClickOutsideDirective as ɵc }; //# sourceMappingURL=ngu-multiselect-dropdown.js.map