@stackline/angular-multiselect-dropdown 21.0.1 → 21.0.3

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.
@@ -1,42 +1,65 @@
1
1
  import * as i0 from '@angular/core';
2
- import { TemplateRef, OnInit, OnDestroy, ViewContainerRef, EmbeddedViewRef, ElementRef, EventEmitter, PipeTransform, OnChanges, SimpleChanges } from '@angular/core';
2
+ import { PipeTransform, TemplateRef, OnInit, OnDestroy, ViewContainerRef, EmbeddedViewRef, ElementRef, EventEmitter, OnChanges, Renderer2, NgZone, ChangeDetectorRef, AfterViewChecked, SimpleChanges } from '@angular/core';
3
3
  import * as i5 from '@angular/forms';
4
- import { ControlValueAccessor, Validator, FormControl } from '@angular/forms';
5
- import * as i4 from '@angular/common';
6
-
7
- declare class ListItem {
8
- [key: string]: any;
9
- id: number;
10
- itemName: string;
11
- }
12
- declare class MyException {
13
- status: number;
14
- body: any;
15
- constructor(status: number, body: any);
16
- }
4
+ import { ControlValueAccessor, Validator, UntypedFormControl } from '@angular/forms';
5
+ import { Observable, Subject, Subscription } from 'rxjs';
6
+ import * as i1 from '@angular/common';
17
7
 
18
8
  interface DropdownSettings {
19
- singleSelection: boolean;
20
- text: string;
21
- enableCheckAll: boolean;
22
- selectAllText: string;
23
- unSelectAllText: string;
24
- enableSearchFilter: boolean;
25
- maxHeight: number;
26
- badgeShowLimit: number;
27
- classes: string;
9
+ singleSelection?: boolean;
10
+ text?: string;
11
+ enableCheckAll?: boolean;
12
+ selectAllText?: string;
13
+ unSelectAllText?: string;
14
+ filterSelectAllText?: string;
15
+ filterUnSelectAllText?: string;
16
+ enableFilterSelectAll?: boolean;
17
+ enableSearchFilter?: boolean;
18
+ searchBy?: string[];
19
+ maxHeight?: number;
20
+ badgeShowLimit?: number;
21
+ classes?: string;
28
22
  limitSelection?: number;
29
23
  disabled?: boolean;
30
- searchPlaceholderText: string;
24
+ searchPlaceholderText?: string;
31
25
  groupBy?: string;
32
26
  showCheckbox?: boolean;
33
- noDataLabel: string;
27
+ noDataLabel?: string;
34
28
  searchAutofocus?: boolean;
35
29
  lazyLoading?: boolean;
36
30
  labelKey?: string;
31
+ primaryKey?: string;
37
32
  theme?: string;
38
33
  skin?: string;
34
+ position?: string;
35
+ loading?: boolean;
36
+ selectGroup?: boolean;
37
+ addNewItemOnFilter?: boolean;
38
+ addNewButtonText?: string;
39
+ escapeToClose?: boolean;
40
+ autoPosition?: boolean;
39
41
  clearAll?: boolean;
42
+ tagToBody?: boolean;
43
+ }
44
+
45
+ declare class DataService {
46
+ filteredData: any;
47
+ private subject;
48
+ setData(data: any): void;
49
+ getData(): Observable<any>;
50
+ getFilteredData(): any;
51
+ static ɵfac: i0.ɵɵFactoryDeclaration<DataService, never>;
52
+ static ɵprov: i0.ɵɵInjectableDeclaration<DataService>;
53
+ }
54
+
55
+ declare class ListFilterPipe implements PipeTransform {
56
+ private ds;
57
+ filteredList: any;
58
+ constructor(ds: DataService);
59
+ transform(items: any[], filter: any, searchBy: any): any[];
60
+ applyFilter(item: any, filter: any, searchBy: any): boolean;
61
+ static ɵfac: i0.ɵɵFactoryDeclaration<ListFilterPipe, never>;
62
+ static ɵpipe: i0.ɵɵPipeDeclaration<ListFilterPipe, "listFilter", false>;
40
63
  }
41
64
 
42
65
  declare class Item {
@@ -51,6 +74,12 @@ declare class Badge {
51
74
  static ɵfac: i0.ɵɵFactoryDeclaration<Badge, never>;
52
75
  static ɵcmp: i0.ɵɵComponentDeclaration<Badge, "c-badge", never, {}, {}, ["template"], never, false, never>;
53
76
  }
77
+ declare class Search {
78
+ template: TemplateRef<any>;
79
+ constructor();
80
+ static ɵfac: i0.ɵɵFactoryDeclaration<Search, never>;
81
+ static ɵcmp: i0.ɵɵComponentDeclaration<Search, "c-search", never, {}, {}, ["template"], never, false, never>;
82
+ }
54
83
  declare class TemplateRenderer implements OnInit, OnDestroy {
55
84
  viewContainer: ViewContainerRef;
56
85
  data: any;
@@ -62,6 +91,11 @@ declare class TemplateRenderer implements OnInit, OnDestroy {
62
91
  static ɵfac: i0.ɵɵFactoryDeclaration<TemplateRenderer, never>;
63
92
  static ɵcmp: i0.ɵɵComponentDeclaration<TemplateRenderer, "c-templateRenderer", never, { "data": { "alias": "data"; "required": false; }; "item": { "alias": "item"; "required": false; }; }, {}, never, never, false, never>;
64
93
  }
94
+ declare class CIcon {
95
+ name: any;
96
+ static ɵfac: i0.ɵɵFactoryDeclaration<CIcon, never>;
97
+ static ɵcmp: i0.ɵɵComponentDeclaration<CIcon, "c-icon", never, { "name": { "alias": "name"; "required": false; }; }, {}, never, never, false, never>;
98
+ }
65
99
 
66
100
  declare class ClickOutsideDirective {
67
101
  private _elementRef;
@@ -88,36 +122,237 @@ declare class styleDirective {
88
122
  static ɵfac: i0.ɵɵFactoryDeclaration<styleDirective, never>;
89
123
  static ɵdir: i0.ɵɵDirectiveDeclaration<styleDirective, "[styleProp]", never, { "styleVal": { "alias": "styleProp"; "required": false; }; }, {}, never, never, false, never>;
90
124
  }
125
+ declare class setPosition implements OnInit, OnChanges {
126
+ el: ElementRef;
127
+ height: number;
128
+ constructor(el: ElementRef);
129
+ ngOnInit(): void;
130
+ ngOnChanges(): void;
131
+ static ɵfac: i0.ɵɵFactoryDeclaration<setPosition, never>;
132
+ static ɵdir: i0.ɵɵDirectiveDeclaration<setPosition, "[setPosition]", never, { "height": { "alias": "setPosition"; "required": false; }; }, {}, never, never, false, never>;
133
+ }
91
134
 
92
- declare class ListFilterPipe implements PipeTransform {
93
- transform(items: ListItem[], filter: any): ListItem[];
94
- applyFilter(item: any, filter: any): boolean;
95
- static ɵfac: i0.ɵɵFactoryDeclaration<ListFilterPipe, never>;
96
- static ɵpipe: i0.ɵɵPipeDeclaration<ListFilterPipe, "listFilter", false>;
135
+ interface VirtualScrollerDefaultOptions {
136
+ scrollThrottlingTime: number;
137
+ scrollDebounceTime: number;
138
+ scrollAnimationTime: number;
139
+ scrollbarWidth?: number;
140
+ scrollbarHeight?: number;
141
+ checkResizeInterval: number;
142
+ resizeBypassRefreshThreshold: number;
143
+ modifyOverflowStyleOfParentScroll: boolean;
144
+ stripedTable: boolean;
97
145
  }
98
146
 
99
- declare class AngularMultiSelect implements OnInit, ControlValueAccessor, OnChanges, Validator {
147
+ interface IPageInfo {
148
+ startIndex: number;
149
+ endIndex: number;
150
+ scrollStartPosition: number;
151
+ scrollEndPosition: number;
152
+ startIndexWithBuffer: number;
153
+ endIndexWithBuffer: number;
154
+ maxScrollPosition: number;
155
+ }
156
+
157
+ interface IViewport extends IPageInfo {
158
+ padding: number;
159
+ scrollLength: number;
160
+ }
161
+
162
+ interface WrapGroupDimension {
163
+ childWidth: number;
164
+ childHeight: number;
165
+ items: any[];
166
+ }
167
+
168
+ interface WrapGroupDimensions {
169
+ numberOfKnownWrapGroupChildSizes: number;
170
+ sumOfKnownWrapGroupChildWidths: number;
171
+ sumOfKnownWrapGroupChildHeights: number;
172
+ maxChildSizePerWrapGroup: WrapGroupDimension[];
173
+ }
174
+
175
+ interface IDimensions {
176
+ itemCount: number;
177
+ itemsPerWrapGroup: number;
178
+ wrapGroupsPerPage: number;
179
+ itemsPerPage: number;
180
+ pageCount_fractional: number;
181
+ childWidth: number;
182
+ childHeight: number;
183
+ scrollLength: number;
184
+ viewportLength: number;
185
+ maxScrollPosition: number;
186
+ }
187
+
188
+ declare class VirtualScrollerComponent implements OnInit, OnChanges, OnDestroy {
189
+ protected readonly element: ElementRef;
190
+ protected readonly renderer: Renderer2;
191
+ protected readonly zone: NgZone;
192
+ protected changeDetectorRef: ChangeDetectorRef;
193
+ viewPortItems: any[];
194
+ window: Window & typeof globalThis;
195
+ get viewPortInfo(): IPageInfo;
196
+ executeRefreshOutsideAngularZone: boolean;
197
+ protected _enableUnequalChildrenSizes: boolean;
198
+ get enableUnequalChildrenSizes(): boolean;
199
+ set enableUnequalChildrenSizes(value: boolean);
200
+ useMarginInsteadOfTranslate: boolean;
201
+ modifyOverflowStyleOfParentScroll: boolean;
202
+ stripedTable: boolean;
203
+ scrollbarWidth: number;
204
+ scrollbarHeight: number;
205
+ childWidth: number;
206
+ childHeight: number;
207
+ ssrChildWidth: number;
208
+ ssrChildHeight: number;
209
+ ssrViewportWidth: number;
210
+ ssrViewportHeight: number;
211
+ protected _bufferAmount: number;
212
+ get bufferAmount(): number;
213
+ set bufferAmount(value: number);
214
+ scrollAnimationTime: number;
215
+ resizeBypassRefreshThreshold: number;
216
+ protected _scrollThrottlingTime: number;
217
+ get scrollThrottlingTime(): number;
218
+ set scrollThrottlingTime(value: number);
219
+ protected _scrollDebounceTime: number;
220
+ get scrollDebounceTime(): number;
221
+ set scrollDebounceTime(value: number);
222
+ protected onScroll: () => void;
223
+ protected updateOnScrollFunction(): void;
224
+ protected checkScrollElementResizedTimer: number;
225
+ protected _checkResizeInterval: number;
226
+ get checkResizeInterval(): number;
227
+ set checkResizeInterval(value: number);
228
+ protected _items: any[];
229
+ get items(): any[];
230
+ set items(value: any[]);
231
+ compareItems: (item1: any, item2: any) => boolean;
232
+ protected _horizontal: boolean;
233
+ get horizontal(): boolean;
234
+ set horizontal(value: boolean);
235
+ protected revertParentOverscroll(): void;
236
+ protected oldParentScrollOverflow: {
237
+ x: string;
238
+ y: string;
239
+ };
240
+ protected _parentScroll: Element | Window;
241
+ get parentScroll(): Element | Window;
242
+ set parentScroll(value: Element | Window);
243
+ vsUpdate: EventEmitter<any[]>;
244
+ vsChange: EventEmitter<IPageInfo>;
245
+ vsStart: EventEmitter<IPageInfo>;
246
+ vsEnd: EventEmitter<IPageInfo>;
247
+ protected contentElementRef: ElementRef;
248
+ protected invisiblePaddingElementRef: ElementRef;
249
+ protected headerElementRef: ElementRef;
250
+ protected containerElementRef: ElementRef;
251
+ ngOnInit(): void;
252
+ ngOnDestroy(): void;
253
+ ngOnChanges(changes: any): void;
254
+ ngDoCheck(): void;
255
+ refresh(): void;
256
+ invalidateAllCachedMeasurements(): void;
257
+ invalidateCachedMeasurementForItem(item: any): void;
258
+ invalidateCachedMeasurementAtIndex(index: number): void;
259
+ scrollInto(item: any, alignToBeginning?: boolean, additionalOffset?: number, animationMilliseconds?: number, animationCompletedCallback?: () => void): void;
260
+ scrollToIndex(index: number, alignToBeginning?: boolean, additionalOffset?: number, animationMilliseconds?: number, animationCompletedCallback?: () => void): void;
261
+ protected scrollToIndex_internal(index: number, alignToBeginning?: boolean, additionalOffset?: number, animationMilliseconds?: number, animationCompletedCallback?: () => void): void;
262
+ scrollToPosition(scrollPosition: number, animationMilliseconds?: number, animationCompletedCallback?: () => void): void;
263
+ protected isAngularUniversalSSR: boolean;
264
+ constructor(element: ElementRef, renderer: Renderer2, zone: NgZone, changeDetectorRef: ChangeDetectorRef, platformId: Object, options: VirtualScrollerDefaultOptions);
265
+ protected getElementSize(element: HTMLElement): ClientRect;
266
+ protected previousScrollBoundingRect: ClientRect;
267
+ protected checkScrollElementResized(): void;
268
+ protected _invisiblePaddingProperty: any;
269
+ protected _offsetType: any;
270
+ protected _scrollType: any;
271
+ protected _pageOffsetType: any;
272
+ protected _childScrollDim: any;
273
+ protected _translateDir: any;
274
+ protected _marginDir: any;
275
+ protected updateDirection(): void;
276
+ protected debounce(func: Function, wait: number): Function;
277
+ protected throttleTrailing(func: Function, wait: number): Function;
278
+ protected calculatedScrollbarWidth: number;
279
+ protected calculatedScrollbarHeight: number;
280
+ protected padding: number;
281
+ protected previousViewPort: IViewport;
282
+ protected currentTween: {
283
+ stop: () => void;
284
+ } | undefined;
285
+ protected cachedItemsLength: number;
286
+ protected disposeScrollHandler: () => void | undefined;
287
+ protected disposeResizeHandler: () => void | undefined;
288
+ protected refresh_internal(itemsArrayModified: boolean, refreshCompletedCallback?: () => void, maxRunTimes?: number): void;
289
+ protected getScrollElement(): HTMLElement;
290
+ protected addScrollEventHandlers(): void;
291
+ protected removeScrollEventHandlers(): void;
292
+ protected getElementsOffset(): number;
293
+ protected countItemsPerWrapGroup(): number;
294
+ protected getScrollStartPosition(): number;
295
+ protected minMeasuredChildWidth: number;
296
+ protected minMeasuredChildHeight: number;
297
+ protected wrapGroupDimensions: WrapGroupDimensions;
298
+ protected resetWrapGroupDimensions(): void;
299
+ protected calculateDimensions(): IDimensions;
300
+ protected cachedPageSize: number;
301
+ protected previousScrollNumberElements: number;
302
+ protected calculatePadding(arrayStartIndexWithBuffer: number, dimensions: IDimensions): number;
303
+ protected calculatePageInfo(scrollPosition: number, dimensions: IDimensions): IPageInfo;
304
+ protected calculateViewport(): IViewport;
305
+ static ɵfac: i0.ɵɵFactoryDeclaration<VirtualScrollerComponent, [null, null, null, null, null, { optional: true; }]>;
306
+ static ɵcmp: i0.ɵɵComponentDeclaration<VirtualScrollerComponent, "virtual-scroller,[virtualScroller]", ["virtualScroller"], { "executeRefreshOutsideAngularZone": { "alias": "executeRefreshOutsideAngularZone"; "required": false; }; "enableUnequalChildrenSizes": { "alias": "enableUnequalChildrenSizes"; "required": false; }; "useMarginInsteadOfTranslate": { "alias": "useMarginInsteadOfTranslate"; "required": false; }; "modifyOverflowStyleOfParentScroll": { "alias": "modifyOverflowStyleOfParentScroll"; "required": false; }; "stripedTable": { "alias": "stripedTable"; "required": false; }; "scrollbarWidth": { "alias": "scrollbarWidth"; "required": false; }; "scrollbarHeight": { "alias": "scrollbarHeight"; "required": false; }; "childWidth": { "alias": "childWidth"; "required": false; }; "childHeight": { "alias": "childHeight"; "required": false; }; "ssrChildWidth": { "alias": "ssrChildWidth"; "required": false; }; "ssrChildHeight": { "alias": "ssrChildHeight"; "required": false; }; "ssrViewportWidth": { "alias": "ssrViewportWidth"; "required": false; }; "ssrViewportHeight": { "alias": "ssrViewportHeight"; "required": false; }; "bufferAmount": { "alias": "bufferAmount"; "required": false; }; "scrollAnimationTime": { "alias": "scrollAnimationTime"; "required": false; }; "resizeBypassRefreshThreshold": { "alias": "resizeBypassRefreshThreshold"; "required": false; }; "scrollThrottlingTime": { "alias": "scrollThrottlingTime"; "required": false; }; "scrollDebounceTime": { "alias": "scrollDebounceTime"; "required": false; }; "checkResizeInterval": { "alias": "checkResizeInterval"; "required": false; }; "items": { "alias": "items"; "required": false; }; "compareItems": { "alias": "compareItems"; "required": false; }; "horizontal": { "alias": "horizontal"; "required": false; }; "parentScroll": { "alias": "parentScroll"; "required": false; }; }, { "vsUpdate": "vsUpdate"; "vsChange": "vsChange"; "vsStart": "vsStart"; "vsEnd": "vsEnd"; }, ["headerElementRef", "containerElementRef"], ["*"], false, never>;
307
+ }
308
+ declare class VirtualScrollerModule {
309
+ static ɵfac: i0.ɵɵFactoryDeclaration<VirtualScrollerModule, never>;
310
+ static ɵmod: i0.ɵɵNgModuleDeclaration<VirtualScrollerModule, [typeof VirtualScrollerComponent], [typeof i1.CommonModule], [typeof VirtualScrollerComponent]>;
311
+ static ɵinj: i0.ɵɵInjectorDeclaration<VirtualScrollerModule>;
312
+ }
313
+
314
+ declare class AngularMultiSelect implements OnInit, ControlValueAccessor, OnChanges, Validator, AfterViewChecked, OnDestroy {
100
315
  _elementRef: ElementRef;
101
- data: Array<ListItem>;
316
+ private cdr;
317
+ private filterPipe;
318
+ data: Array<any>;
102
319
  settings: DropdownSettings;
103
- onSelect: EventEmitter<ListItem>;
104
- onDeSelect: EventEmitter<ListItem>;
105
- onSelectAll: EventEmitter<Array<ListItem>>;
106
- onDeSelectAll: EventEmitter<Array<ListItem>>;
320
+ loading: boolean;
321
+ onSelect: EventEmitter<any>;
322
+ onDeSelect: EventEmitter<any>;
323
+ onSelectAll: EventEmitter<Array<any>>;
324
+ onDeSelectAll: EventEmitter<Array<any>>;
107
325
  onOpen: EventEmitter<any>;
108
326
  onClose: EventEmitter<any>;
327
+ onScrollToEnd: EventEmitter<any>;
328
+ onFilterSelectAll: EventEmitter<Array<any>>;
329
+ onFilterDeSelectAll: EventEmitter<Array<any>>;
330
+ onAddFilterNewItem: EventEmitter<any>;
331
+ onGroupSelect: EventEmitter<any>;
332
+ onGroupDeSelect: EventEmitter<any>;
109
333
  itemTempl: Item;
110
334
  badgeTempl: Badge;
335
+ searchTempl: Search;
111
336
  searchInput: ElementRef;
112
- selectedItems: Array<ListItem>;
337
+ selectedListElem: ElementRef;
338
+ dropdownListElem: ElementRef;
339
+ stacklineDropdown: ElementRef;
340
+ onEscapeDown(event: Event): void;
341
+ onScroll(event: any): void;
342
+ virtualdata: any;
343
+ searchTerm$: Subject<string>;
344
+ selectedItems: Array<any>;
113
345
  isActive: boolean;
114
346
  isSelectAll: boolean;
115
- groupedData: Array<ListItem>;
347
+ isFilterSelectAll: boolean;
348
+ isInfiniteFilterSelectAll: boolean;
349
+ groupedData: Array<any>;
116
350
  filter: any;
117
351
  chunkArray: any[];
118
352
  scrollTop: any;
119
353
  chunkIndex: any[];
120
354
  cachedItems: any[];
355
+ groupCachedItems: any[];
121
356
  totalRows: any;
122
357
  itemHeight: any;
123
358
  screenItemsLen: any;
@@ -127,42 +362,76 @@ declare class AngularMultiSelect implements OnInit, ControlValueAccessor, OnChan
127
362
  maxBuffer: any;
128
363
  lastScrolled: any;
129
364
  lastRepaintY: any;
365
+ selectedListHeight: any;
366
+ filterLength: any;
367
+ infiniteFilterLength: any;
368
+ viewPortItems: any;
369
+ item: any;
370
+ dropdownListYOffset: number;
371
+ subscription: Subscription;
372
+ dropDownWidth: number;
373
+ dropDownTop: string | null;
374
+ dropDownBottom: string | null;
375
+ dropDownLeft: number;
376
+ id: any;
130
377
  defaultSettings: DropdownSettings;
378
+ randomSize: boolean;
131
379
  parseError: boolean;
132
- constructor(_elementRef: ElementRef);
380
+ filteredList: any;
381
+ virtualScroollInit: boolean;
382
+ private virtualScroller;
383
+ isDisabledItemPresent: boolean;
384
+ constructor(_elementRef: ElementRef, cdr: ChangeDetectorRef, filterPipe: ListFilterPipe);
385
+ ngOnInit(): void;
133
386
  getThemeName(): string;
134
387
  getDropdownClasses(): string;
135
- ngOnInit(): void;
388
+ onKeyUp(evt: any): void;
136
389
  ngOnChanges(changes: SimpleChanges): void;
137
390
  ngDoCheck(): void;
138
391
  ngAfterViewInit(): void;
139
- onItemClick(item: ListItem, index: number, evt: Event): boolean;
140
- validate(c: FormControl): any;
392
+ ngAfterViewChecked(): void;
393
+ onItemClick(item: any, index: number, evt: Event): void;
394
+ validate(c: UntypedFormControl): any;
141
395
  private onTouchedCallback;
142
396
  private onChangeCallback;
143
397
  writeValue(value: any): void;
144
398
  registerOnChange(fn: any): void;
145
399
  registerOnTouched(fn: any): void;
146
- trackByFn(index: number, item: ListItem): number;
147
- isSelected(clickedItem: ListItem): boolean;
148
- addSelected(item: ListItem): void;
149
- removeSelected(clickedItem: ListItem): void;
150
- toggleDropdown(evt: any): boolean;
400
+ trackByFn(index: number, item: any): any;
401
+ isSelected(clickedItem: any): boolean;
402
+ addSelected(item: any): void;
403
+ removeSelected(clickedItem: any): void;
404
+ toggleDropdown(evt: any): void;
405
+ openDropdown(): void;
151
406
  closeDropdown(): void;
152
- toggleSelectAll(): void;
153
- transformData(arr: Array<ListItem>, field: any): Array<ListItem>;
154
- renderChunk(fromPos: any, howMany: any): void;
155
- onScroll(e: any): void;
156
- updateView(scrollTop: any): void;
407
+ closeDropdownOnClickOut(): void;
408
+ toggleSelectAll(event: any): void;
409
+ filterGroupedList(): void;
410
+ toggleFilterSelectAll(): void;
411
+ toggleInfiniteFilterSelectAll(): void;
412
+ clearSearch(): void;
413
+ onFilterChange(data: any): void;
414
+ cloneArray(arr: any): any;
415
+ updateGroupInfo(item: any): void;
416
+ transformData(arr: Array<any>, field: any): Array<any>;
157
417
  filterInfiniteList(evt: any): void;
418
+ resetInfiniteSearch(): void;
419
+ onScrollEnd(e: any): void;
420
+ ngOnDestroy(): void;
421
+ selectGroup(item: any): void;
422
+ addFilterNewItem(): void;
423
+ calculateDropdownDirection(): void;
424
+ openTowardsTop(value: boolean): void;
425
+ clearSelection(e?: any): void;
426
+ filteritems(evt: any): void;
158
427
  static ɵfac: i0.ɵɵFactoryDeclaration<AngularMultiSelect, never>;
159
- static ɵcmp: i0.ɵɵComponentDeclaration<AngularMultiSelect, "angular-multiselect, angular2-multiselect", never, { "data": { "alias": "data"; "required": false; }; "settings": { "alias": "settings"; "required": false; }; }, { "onSelect": "onSelect"; "onDeSelect": "onDeSelect"; "onSelectAll": "onSelectAll"; "onDeSelectAll": "onDeSelectAll"; "onOpen": "onOpen"; "onClose": "onClose"; }, ["itemTempl", "badgeTempl"], never, false, never>;
428
+ static ɵcmp: i0.ɵɵComponentDeclaration<AngularMultiSelect, "angular-multiselect, angular2-multiselect", never, { "data": { "alias": "data"; "required": false; }; "settings": { "alias": "settings"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; }, { "onSelect": "onSelect"; "onDeSelect": "onDeSelect"; "onSelectAll": "onSelectAll"; "onDeSelectAll": "onDeSelectAll"; "onOpen": "onOpen"; "onClose": "onClose"; "onScrollToEnd": "onScrollToEnd"; "onFilterSelectAll": "onFilterSelectAll"; "onFilterDeSelectAll": "onFilterDeSelectAll"; "onAddFilterNewItem": "onAddFilterNewItem"; "onGroupSelect": "onGroupSelect"; "onGroupDeSelect": "onGroupDeSelect"; }, ["itemTempl", "badgeTempl", "searchTempl"], never, false, never>;
160
429
  }
161
430
  declare class AngularMultiSelectModule {
162
431
  static ɵfac: i0.ɵɵFactoryDeclaration<AngularMultiSelectModule, never>;
163
- static ɵmod: i0.ɵɵNgModuleDeclaration<AngularMultiSelectModule, [typeof AngularMultiSelect, typeof ClickOutsideDirective, typeof ScrollDirective, typeof styleDirective, typeof ListFilterPipe, typeof Item, typeof TemplateRenderer, typeof Badge], [typeof i4.CommonModule, typeof i5.FormsModule], [typeof AngularMultiSelect, typeof ClickOutsideDirective, typeof ScrollDirective, typeof styleDirective, typeof ListFilterPipe, typeof Item, typeof TemplateRenderer, typeof Badge]>;
432
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AngularMultiSelectModule, [typeof AngularMultiSelect, typeof ClickOutsideDirective, typeof ScrollDirective, typeof styleDirective, typeof ListFilterPipe, typeof Item, typeof TemplateRenderer, typeof Badge, typeof Search, typeof setPosition, typeof CIcon], [typeof i1.CommonModule, typeof i5.FormsModule, typeof VirtualScrollerModule], [typeof AngularMultiSelect, typeof ClickOutsideDirective, typeof ScrollDirective, typeof styleDirective, typeof ListFilterPipe, typeof Item, typeof TemplateRenderer, typeof Badge, typeof Search, typeof setPosition, typeof CIcon]>;
164
433
  static ɵinj: i0.ɵɵInjectorDeclaration<AngularMultiSelectModule>;
165
434
  }
166
435
 
167
- export { AngularMultiSelect, AngularMultiSelectModule, Badge, ClickOutsideDirective, Item, ListFilterPipe, ListItem, MyException, ScrollDirective, TemplateRenderer, styleDirective };
436
+ export { AngularMultiSelect, AngularMultiSelectModule, Badge, CIcon, ClickOutsideDirective, Item, ListFilterPipe, ScrollDirective, Search, TemplateRenderer, setPosition, styleDirective };
168
437
  export type { DropdownSettings };
@@ -1 +0,0 @@
1
- {"version":3,"file":"stackline-angular-multiselect-dropdown.mjs","sources":["../../src/lib/multiselect.model.ts","../../src/lib/clickOutside.ts","../../src/lib/list-filter.ts","../../src/lib/menu-item.ts","../../src/lib/multiselect.component.ts","../../src/stackline-angular-multiselect-dropdown.ts"],"sourcesContent":["export class ListItem{\n [key: string]: any;\n id: number;\n itemName: string\n}\nexport class MyException {\n\tstatus : number;\n\tbody : any;\n\tconstructor(status : number, body : any) {\n\t\tthis.status = status;\n\t\tthis.body = body;\n\t}\n\t\n}\n","import {Directive, ElementRef, Output, EventEmitter, HostListener, Input} from '@angular/core';\n\n@Directive({\n standalone: false,\n selector: '[clickOutside]'\n})\nexport class ClickOutsideDirective {\n constructor(private _elementRef: ElementRef) {\n }\n\n @Output()\n public clickOutside = new EventEmitter<Event>();\n\n @HostListener('document:click', ['$event', '$event.target'])\n @HostListener('document:touchstart', ['$event', '$event.target'])\n public onClick(event: Event, targetElement: EventTarget | null): void {\n if (!targetElement) {\n return;\n }\n\n const clickedInside = this._elementRef.nativeElement.contains(targetElement as Node);\n if (!clickedInside) {\n this.clickOutside.emit(event);\n }\n }\n}\n\n@Directive({\n standalone: false,\n selector: '[scroll]'\n})\nexport class ScrollDirective {\n constructor(private _elementRef: ElementRef) {\n }\n\n @Output()\n public scroll = new EventEmitter<Event>();\n\n @HostListener('scroll', ['$event'])\n public onClick(event: Event): void {\n this.scroll.emit(event);\n }\n}\n@Directive({\n standalone: false,\n selector: '[styleProp]'\n})\nexport class styleDirective {\n\n constructor(private el: ElementRef) {\n\n }\n\n @Input('styleProp') styleVal: number;\n\n ngOnInit() {\n\n this.el.nativeElement.style.top = this.styleVal;\n }\n ngOnChanges(): void {\n this.el.nativeElement.style.top = this.styleVal;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { ListItem } from './multiselect.model';\n\n@Pipe({\n standalone: false,\n name: 'listFilter',\n pure: false\n})\nexport class ListFilterPipe implements PipeTransform {\n transform(items: ListItem[], filter: any): ListItem[] {\n if (!items || !filter) {\n return items;\n }\n return items.filter((item: any) => this.applyFilter(item, filter));\n }\n applyFilter(item: any, filter: any): boolean {\n let found = false;\n for (var prop in item) {\n if (filter) {\n if (item[prop].toString().toLowerCase().indexOf(filter.toLowerCase()) >= 0) {\n found = true;\n }\n }\n else\n found = true;\n }\n return found;\n }\n}\n","import { Component, OnInit, OnDestroy, NgModule, TemplateRef, AfterContentInit, ContentChild, EmbeddedViewRef, OnChanges, ViewContainerRef, ViewEncapsulation, Input, Output, EventEmitter, ElementRef, AfterViewInit, Pipe, PipeTransform } from '@angular/core';\nimport { SafeResourceUrl, DomSanitizer } from '@angular/platform-browser';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n standalone: false,\n selector: 'c-item',\n template: ``\n})\n\nexport class Item { \n\n @ContentChild(TemplateRef, { static: false }) template: TemplateRef<any>\n constructor() { \n }\n\n}\n\n@Component({\n standalone: false,\n selector: 'c-badge',\n template: ``\n})\n\nexport class Badge { \n\n @ContentChild(TemplateRef, { static: false }) template: TemplateRef<any>\n constructor() { \n }\n\n}\n\n@Component({\n standalone: false,\n selector: 'c-templateRenderer',\n template: ``\n})\n\nexport class TemplateRenderer implements OnInit, OnDestroy { \n\n @Input() data: any\n @Input() item: any\n view: EmbeddedViewRef<any>;\n\n constructor(public viewContainer: ViewContainerRef) { \n }\n ngOnInit() {\n this.view = this.viewContainer.createEmbeddedView(this.data.template, {\n '\\$implicit': this.data,\n 'item':this.item\n });\n }\n\t\n ngOnDestroy() {\n\t\tthis.view.destroy();\n\t}\n\n}\n","import { Component, OnInit, NgModule, SimpleChanges, OnChanges, ViewEncapsulation, ContentChild, ViewChild, forwardRef, Input, Output, EventEmitter, ElementRef, AfterViewInit, Pipe, PipeTransform } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR, ControlValueAccessor, NG_VALIDATORS, Validator, FormControl } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { ListItem, MyException } from './multiselect.model';\nimport { DropdownSettings } from './multiselect.interface';\nimport { ClickOutsideDirective, ScrollDirective, styleDirective } from './clickOutside';\nimport { ListFilterPipe } from './list-filter';\nimport { Item, Badge, TemplateRenderer } from './menu-item';\n\nexport const DROPDOWN_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AngularMultiSelect),\n multi: true\n};\nexport const DROPDOWN_CONTROL_VALIDATION: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => AngularMultiSelect),\n multi: true,\n}\nconst noop = () => {\n};\n\n@Component({\n standalone: false,\n selector: 'angular-multiselect, angular2-multiselect',\n template: \"<div class=\\\"stackline-dropdown\\\" [ngClass]=\\\"getDropdownClasses()\\\" (clickOutside)=\\\"closeDropdown()\\\">\\n <div class=\\\"selected-list\\\">\\n <div class=\\\"c-btn\\\" (click)=\\\"toggleDropdown($event)\\\" [ngClass]=\\\"{'disabled': settings.disabled}\\\">\\n <span *ngIf=\\\"selectedItems?.length == 0\\\">{{settings.text}}</span>\\n <span *ngIf=\\\"settings.singleSelection\\\">\\n <span *ngFor=\\\"let item of selectedItems;trackBy: trackByFn;\\\">\\n {{item[settings.labelKey]}}\\n </span>\\n </span>\\n <div class=\\\"c-list\\\" *ngIf=\\\"selectedItems?.length > 0 && !settings.singleSelection\\\">\\n <div class=\\\"c-token\\\" *ngFor=\\\"let item of selectedItems;trackBy: trackByFn;let k = index\\\" [hidden]=\\\"k > settings.badgeShowLimit-1\\\">\\n <span *ngIf=\\\"!badgeTempl\\\" class=\\\"c-label\\\">{{item[settings.labelKey]}}</span>\\n <span *ngIf=\\\"badgeTempl\\\" class=\\\"c-label\\\">\\n <c-templateRenderer [data]=\\\"badgeTempl\\\" [item]=\\\"item\\\"></c-templateRenderer>\\n </span>\\n <span class=\\\"fa fa-remove\\\" (click)=\\\"onItemClick(item,k,$event)\\\"></span>\\n </div>\\n </div> \\n <span class=\\\"countplaceholder\\\" *ngIf=\\\"selectedItems?.length > settings.badgeShowLimit\\\">+{{selectedItems?.length - settings.badgeShowLimit }}</span>\\n <span class=\\\"fa\\\" [ngClass]=\\\"{'fa-angle-down': !isActive,'fa-angle-up':isActive}\\\"></span>\\n </div> \\n </div>\\n <div class=\\\"dropdown-list\\\" [hidden]=\\\"!isActive\\\">\\n <div class=\\\"arrow-up arrow-2\\\"></div>\\n <div class=\\\"arrow-up\\\"></div>\\n <div class=\\\"list-area\\\">\\n <div class=\\\"pure-checkbox select-all\\\" *ngIf=\\\"settings.enableCheckAll && !settings.singleSelection && !settings.limitSelection\\\" (click)=\\\"toggleSelectAll()\\\">\\n <input *ngIf=\\\"settings.showCheckbox\\\" type=\\\"checkbox\\\" [checked]=\\\"isSelectAll\\\" [disabled]=\\\"settings.limitSelection == selectedItems?.length\\\"/>\\n <label>\\n <span [hidden]=\\\"isSelectAll\\\">{{settings.selectAllText}}</span>\\n <span [hidden]=\\\"!isSelectAll\\\">{{settings.unSelectAllText}}</span>\\n </label>\\n </div> \\n <div class=\\\"list-filter\\\" *ngIf=\\\"settings.enableSearchFilter && !settings.lazyLoading\\\">\\n <span class=\\\"fa fa-search\\\"></span>\\n <input #searchInput type=\\\"text\\\" [placeholder]=\\\"settings.searchPlaceholderText\\\" [(ngModel)]=\\\"filter\\\">\\n </div> \\n <div class=\\\"list-filter\\\" *ngIf=\\\"settings.enableSearchFilter && settings.lazyLoading\\\">\\n <span class=\\\"fa fa-search\\\"></span>\\n <input #searchInput type=\\\"text\\\" [placeholder]=\\\"settings.searchPlaceholderText\\\" (keyup)=\\\"filterInfiniteList($event)\\\">\\n </div>\\n <ul *ngIf=\\\"!settings.groupBy\\\" [style.maxHeight] = \\\"settings.maxHeight+'px'\\\" class=\\\"lazyContainer\\\" >\\n <span *ngIf=\\\"itemTempl\\\">\\n <li *ngFor=\\\"let item of data | listFilter:filter; let i = index;\\\" (click)=\\\"onItemClick(item,i,$event)\\\" class=\\\"pure-checkbox\\\">\\n <input *ngIf=\\\"settings.showCheckbox\\\" type=\\\"checkbox\\\" [checked]=\\\"isSelected(item)\\\" [disabled]=\\\"settings.limitSelection == selectedItems?.length && !isSelected(item)\\\"/>\\n <label></label>\\n <c-templateRenderer [data]=\\\"itemTempl\\\" [item]=\\\"item\\\"></c-templateRenderer>\\n </li>\\n </span>\\n <span *ngIf=\\\"!itemTempl && !settings.lazyLoading\\\" >\\n <li *ngFor=\\\"let item of data | listFilter:filter; let i = index;\\\" (click)=\\\"onItemClick(item,i,$event)\\\" class=\\\"pure-checkbox\\\">\\n <input *ngIf=\\\"settings.showCheckbox\\\" type=\\\"checkbox\\\" [checked]=\\\"isSelected(item)\\\" [disabled]=\\\"settings.limitSelection == selectedItems?.length && !isSelected(item)\\\"/>\\n <label>{{item[settings.labelKey]}}</label>\\n </li>\\n </span>\\n <span *ngIf=\\\"!itemTempl && settings.lazyLoading\\\" >\\n <div [ngStyle]=\\\"{'height':totalHeight+'px'}\\\" style=\\\"position: relative;\\\">\\n\\n \\n <li *ngFor=\\\"let item of chunkArray | listFilter:filter; let i = index;\\\" (click)=\\\"onItemClick(item,i,$event)\\\" style=\\\"position: absolute;width: 100%;\\\" class=\\\"pure-checkbox\\\" [styleProp]=\\\"chunkIndex[i]\\\">\\n <input *ngIf=\\\"settings.showCheckbox\\\" type=\\\"checkbox\\\" [checked]=\\\"isSelected(item)\\\" [disabled]=\\\"settings.limitSelection == selectedItems?.length && !isSelected(item)\\\"/>\\n <label>{{item[settings.labelKey]}}</label>\\n </li>\\n </div>\\n </span>\\n </ul>\\n <div *ngIf=\\\"settings.groupBy\\\" [style.maxHeight] = \\\"settings.maxHeight+'px'\\\" style=\\\"overflow: auto;\\\">\\n <ul *ngFor=\\\"let obj of groupedData ; let i = index;\\\" class=\\\"list-grp\\\">\\n <h4 *ngIf=\\\"(obj.value | listFilter:filter ).length > 0\\\">{{obj.key}}</h4>\\n <span *ngIf=\\\"itemTempl\\\" >\\n <li *ngFor=\\\"let item of obj.value | listFilter:filter; let i = index;\\\" (click)=\\\"onItemClick(item,i,$event)\\\" class=\\\"pure-checkbox\\\">\\n <input *ngIf=\\\"settings.showCheckbox\\\" type=\\\"checkbox\\\" [checked]=\\\"isSelected(item)\\\" [disabled]=\\\"settings.limitSelection == selectedItems?.length && !isSelected(item)\\\"/>\\n <label></label>\\n <c-templateRenderer [data]=\\\"itemTempl\\\" [item]=\\\"item\\\"></c-templateRenderer>\\n </li>\\n </span>\\n <span *ngIf=\\\"!itemTempl\\\" >\\n <li *ngFor=\\\"let item of obj.value | listFilter:filter; let i = index;\\\" (click)=\\\"onItemClick(item,i,$event)\\\" class=\\\"pure-checkbox\\\">\\n <input *ngIf=\\\"settings.showCheckbox\\\" type=\\\"checkbox\\\" [checked]=\\\"isSelected(item)\\\" [disabled]=\\\"settings.limitSelection == selectedItems?.length && !isSelected(item)\\\"/>\\n <label>{{item[settings.labelKey]}}</label>\\n </li>\\n </span>\\n </ul>\\n </div>\\n <h5 class=\\\"list-message\\\" *ngIf=\\\"data?.length == 0\\\">{{settings.noDataLabel}}</h5>\\n </div>\\n </div>\\n</div>\\n\",\n host: { '[class]': 'defaultSettings.classes' },\n styles: [\".stackline-dropdown {\\n position: relative;\\n}\\n\\n.c-btn {\\n display: inline-block;\\n background: #fff;\\n border: 1px solid #ccc;\\n border-radius: 3px;\\n font-size: 14px;\\n color: #333;\\n}\\n\\n.c-btn.disabled {\\n background: #ccc;\\n}\\n\\n.c-btn:focus {\\n outline: none;\\n}\\n\\n.selected-list .c-list {\\n display: flex;\\n flex: 1 1 auto;\\n align-items: center;\\n flex-wrap: wrap;\\n min-width: 0;\\n float: none;\\n padding: 0px;\\n margin: 0px;\\n width: auto;\\n}\\n.selected-list .c-list .c-token {\\n list-style: none;\\n padding: 0px 5px;\\n background: #0079FE;\\n color: #fff;\\n border-radius: 2px;\\n margin-right: 4px;\\n margin-top: 2px;\\n float: left;\\n}\\n.selected-list .c-list .c-token .c-label {\\n display: block;\\n float: left;\\n /*width: 50px;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n overflow: hidden;*/\\n}\\n.selected-list .c-list .c-token .fa-remove {\\n margin-left: 1px;\\n font-size: 12px;\\n}\\n.selected-list .fa-angle-down, .selected-list .fa-angle-up {\\n font-size: 15pt;\\n position: absolute;\\n right: 10px;\\n top: 50%;\\n transform: translateY(-50%);\\n}\\n.selected-list .countplaceholder {\\n display: inline-flex;\\n flex: 0 0 auto;\\n align-items: center;\\n justify-content: center;\\n align-self: center;\\n margin: 0 0 0 6px;\\n line-height: 1;\\n}\\n.selected-list .c-btn {\\n box-sizing: border-box;\\n width: 100%;\\n box-shadow: 0px 1px 5px #959595;\\n padding: 10px 36px 10px 10px;\\n cursor: pointer;\\n display: flex;\\n align-items: center;\\n flex-wrap: nowrap;\\n position: relative;\\n}\\n\\n.dropdown-list {\\n position: absolute;\\n padding-top: 14px;\\n width: 100%;\\n z-index: 9999;\\n}\\n.dropdown-list ul {\\n padding: 0px;\\n list-style: none;\\n overflow: auto;\\n margin: 0px;\\n}\\n.dropdown-list ul li {\\n padding: 10px 10px;\\n cursor: pointer;\\n text-align: left;\\n}\\n.dropdown-list ul li:first-child {\\n padding-top: 10px;\\n}\\n.dropdown-list ul li:last-child {\\n padding-bottom: 10px;\\n}\\n.dropdown-list ul li:hover {\\n background: #f5f5f5;\\n}\\n.dropdown-list ::-webkit-scrollbar {\\n width: 8px;\\n}\\n.dropdown-list ::-webkit-scrollbar-thumb {\\n background: #cccccc;\\n border-radius: 5px;\\n}\\n.dropdown-list ::-webkit-scrollbar-track {\\n background: #f2f2f2;\\n}\\n\\n.arrow-up {\\n width: 0;\\n height: 0;\\n border-left: 13px solid transparent;\\n border-right: 13px solid transparent;\\n border-bottom: 15px solid #fff;\\n margin-left: 15px;\\n position: absolute;\\n top: 0;\\n}\\n\\n.arrow-2 {\\n border-bottom: 15px solid #ccc;\\n top: -1px;\\n}\\n\\n.list-area {\\n border: 1px solid #ccc;\\n border-radius: 3px;\\n background: #fff;\\n margin: 0px;\\n box-shadow: 0px 1px 5px #959595;\\n}\\n\\n.select-all {\\n padding: 10px;\\n border-bottom: 1px solid #ccc;\\n text-align: left;\\n}\\n\\n.list-filter {\\n border-bottom: 1px solid #ccc;\\n position: relative;\\n}\\n.list-filter input {\\n border: 0px;\\n width: 100%;\\n height: 35px;\\n padding: 0px 0px 0px 35px;\\n}\\n.list-filter input:focus {\\n outline: none;\\n}\\n.list-filter .fa {\\n position: absolute;\\n top: 10px;\\n left: 13px;\\n color: #888;\\n}\\n\\n.pure-checkbox input[type=checkbox] {\\n border: 0;\\n clip: rect(0 0 0 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n.pure-checkbox input[type=checkbox]:focus + label:before,\\n.pure-checkbox input[type=checkbox]:hover + label:before {\\n border-color: #0079FE;\\n background-color: #f2f2f2;\\n}\\n\\n.pure-checkbox input[type=checkbox]:active + label:before {\\n transition-duration: 0s;\\n}\\n\\n.pure-checkbox input[type=checkbox] + label {\\n position: relative;\\n padding-left: 2em;\\n vertical-align: middle;\\n user-select: none;\\n cursor: pointer;\\n margin: 0px;\\n color: #000;\\n font-weight: 300;\\n}\\n\\n.pure-checkbox input[type=checkbox] + label:before {\\n box-sizing: content-box;\\n content: \\\"\\\";\\n color: #0079FE;\\n position: absolute;\\n top: 50%;\\n left: 0;\\n width: 14px;\\n height: 14px;\\n margin-top: -9px;\\n border: 2px solid #0079FE;\\n text-align: center;\\n transition: all 0.4s ease;\\n}\\n\\n.pure-checkbox input[type=checkbox] + label:after {\\n box-sizing: content-box;\\n content: \\\"\\\";\\n background-color: #0079FE;\\n position: absolute;\\n top: 50%;\\n left: 4px;\\n width: 10px;\\n height: 10px;\\n margin-top: -5px;\\n transform: scale(0);\\n transform-origin: 50%;\\n transition: transform 200ms ease-out;\\n}\\n\\n.pure-checkbox input[type=checkbox]:disabled + label:before {\\n border-color: #cccccc;\\n}\\n\\n.pure-checkbox input[type=checkbox]:disabled:focus + label:before .pure-checkbox input[type=checkbox]:disabled:hover + label:before {\\n background-color: inherit;\\n}\\n\\n.pure-checkbox input[type=checkbox]:disabled:checked + label:before {\\n background-color: #cccccc;\\n}\\n\\n.pure-checkbox input[type=checkbox] + label:after {\\n background-color: transparent;\\n top: 50%;\\n left: 4px;\\n width: 8px;\\n height: 3px;\\n margin-top: -4px;\\n border-style: solid;\\n border-color: #ffffff;\\n border-width: 0 0 3px 3px;\\n border-image: none;\\n transform: rotate(-45deg) scale(0);\\n}\\n\\n.pure-checkbox input[type=checkbox]:checked + label:after {\\n content: \\\"\\\";\\n transform: rotate(-45deg) scale(1);\\n transition: transform 200ms ease-out;\\n}\\n\\n.pure-checkbox input[type=radio]:checked + label:before {\\n background-color: white;\\n}\\n\\n.pure-checkbox input[type=radio]:checked + label:after {\\n transform: scale(1);\\n}\\n\\n.pure-checkbox input[type=radio] + label:before {\\n border-radius: 50%;\\n}\\n\\n.pure-checkbox input[type=checkbox]:checked + label:before {\\n background: #0079FE;\\n}\\n\\n.pure-checkbox input[type=checkbox]:checked + label:after {\\n transform: rotate(-45deg) scale(1);\\n}\\n\\n.list-message {\\n text-align: center;\\n}\\n\\n.list-grp {\\n padding: 0 15px !important;\\n}\\n\\n.list-grp h4 {\\n text-transform: capitalize;\\n margin: 15px 0px 0px 0px;\\n font-size: 14px;\\n font-weight: 700;\\n}\\n\\n.list-grp > li {\\n padding-left: 15px !important;\\n}\\n\\n.stackline-dropdown.theme-material,\\n.stackline-dropdown.theme-dark,\\n.stackline-dropdown.theme-custom {\\n --ms-primary: #3f51b5;\\n --ms-primary-soft: rgba(63, 81, 181, 0.12);\\n --ms-surface: #ffffff;\\n --ms-surface-soft: #f5f7fb;\\n --ms-surface-muted: #e8eaf6;\\n --ms-outline: #c5cae9;\\n --ms-outline-strong: #7986cb;\\n --ms-on-surface: #212121;\\n --ms-on-surface-muted: #5f6368;\\n --ms-chip-bg: #e8eaf6;\\n --ms-chip-text: #303f9f;\\n --ms-chip-remove: #303f9f;\\n --ms-divider: rgba(125, 119, 134, 0.16);\\n --ms-section-bg: rgba(247, 242, 250, 0.76);\\n --ms-selected-text: var(--ms-primary);\\n --ms-shadow: 0 1px 2px rgba(33, 33, 33, 0.16), 0 12px 32px rgba(63, 81, 181, 0.12);\\n --ms-shadow-soft: 0 1px 2px rgba(33, 33, 33, 0.12), 0 4px 12px rgba(33, 33, 33, 0.08);\\n display: block;\\n width: 100%;\\n color: var(--ms-on-surface);\\n font: inherit;\\n}\\n\\n.stackline-dropdown.theme-dark {\\n --ms-primary: #8ab4f8;\\n --ms-primary-soft: rgba(138, 180, 248, 0.18);\\n --ms-surface: #151a23;\\n --ms-surface-soft: #202736;\\n --ms-surface-muted: #111722;\\n --ms-outline: #384456;\\n --ms-outline-strong: #8ab4f8;\\n --ms-on-surface: #edf2f7;\\n --ms-on-surface-muted: #aab6c5;\\n --ms-chip-bg: #263247;\\n --ms-chip-text: #d7e6ff;\\n --ms-chip-remove: #d7e6ff;\\n --ms-divider: rgba(170, 182, 197, 0.18);\\n --ms-section-bg: #101620;\\n --ms-selected-text: #d7e6ff;\\n --ms-shadow: 0 20px 50px rgba(0, 0, 0, 0.42);\\n --ms-shadow-soft: 0 1px 2px rgba(0, 0, 0, 0.45), 0 10px 24px rgba(0, 0, 0, 0.28);\\n}\\n\\n.stackline-dropdown.theme-custom {\\n --ms-primary: var(--stackline-ms-primary, #0f766e);\\n --ms-primary-soft: var(--stackline-ms-primary-soft, rgba(15, 118, 110, 0.14));\\n --ms-surface: var(--stackline-ms-surface, #ffffff);\\n --ms-surface-soft: var(--stackline-ms-surface-soft, #ecfdf5);\\n --ms-surface-muted: var(--stackline-ms-surface-muted, #d1fae5);\\n --ms-outline: var(--stackline-ms-outline, #99f6e4);\\n --ms-outline-strong: var(--stackline-ms-outline-strong, #0f766e);\\n --ms-on-surface: var(--stackline-ms-on-surface, #102a2a);\\n --ms-on-surface-muted: var(--stackline-ms-on-surface-muted, #47615f);\\n --ms-chip-bg: var(--stackline-ms-chip-bg, #ccfbf1);\\n --ms-chip-text: var(--stackline-ms-chip-text, #115e59);\\n --ms-chip-remove: var(--stackline-ms-chip-remove, #115e59);\\n --ms-divider: var(--stackline-ms-divider, rgba(15, 118, 110, 0.16));\\n --ms-section-bg: var(--stackline-ms-section-bg, #f0fdfa);\\n --ms-selected-text: var(--stackline-ms-selected-text, var(--ms-primary));\\n --ms-shadow: var(--stackline-ms-shadow, 0 18px 42px rgba(15, 118, 110, 0.15));\\n --ms-shadow-soft: var(--stackline-ms-shadow-soft, 0 1px 2px rgba(15, 118, 110, 0.16), 0 8px 18px rgba(15, 118, 110, 0.09));\\n}\\n\\n.stackline-dropdown.theme-material .selected-list,\\n.stackline-dropdown.theme-dark .selected-list,\\n.stackline-dropdown.theme-custom .selected-list {\\n width: 100%;\\n}\\n\\n.stackline-dropdown.theme-material .selected-list .c-btn,\\n.stackline-dropdown.theme-dark .selected-list .c-btn,\\n.stackline-dropdown.theme-custom .selected-list .c-btn {\\n position: relative;\\n display: flex;\\n align-items: center;\\n flex-wrap: nowrap;\\n gap: 8px;\\n width: 100%;\\n min-height: 56px;\\n padding: 11px 54px 11px 16px;\\n border-radius: 18px;\\n border: 1px solid var(--ms-outline);\\n background: var(--ms-surface);\\n box-shadow: var(--ms-shadow-soft);\\n color: var(--ms-on-surface);\\n cursor: pointer;\\n font-size: inherit;\\n line-height: 1.45;\\n transition: border-color 0.16s ease, box-shadow 0.16s ease, background-color 0.16s ease, transform 0.16s ease;\\n}\\n\\n.stackline-dropdown.theme-material .selected-list .c-btn:hover,\\n.stackline-dropdown.theme-dark .selected-list .c-btn:hover,\\n.stackline-dropdown.theme-custom .selected-list .c-btn:hover {\\n border-color: var(--ms-outline-strong);\\n}\\n\\n.stackline-dropdown.theme-material .selected-list .c-btn.disabled,\\n.stackline-dropdown.theme-dark .selected-list .c-btn.disabled,\\n.stackline-dropdown.theme-custom .selected-list .c-btn.disabled {\\n background: var(--ms-surface);\\n cursor: not-allowed;\\n opacity: 0.72;\\n}\\n\\n.stackline-dropdown.theme-material .selected-list .c-list,\\n.stackline-dropdown.theme-dark .selected-list .c-list,\\n.stackline-dropdown.theme-custom .selected-list .c-list {\\n display: flex;\\n flex: 1 1 auto;\\n flex-wrap: wrap;\\n gap: 8px;\\n width: auto;\\n min-width: 0;\\n margin: 0;\\n padding: 0;\\n float: none;\\n}\\n\\n.stackline-dropdown.theme-material .selected-list .c-list .c-token,\\n.stackline-dropdown.theme-dark .selected-list .c-list .c-token,\\n.stackline-dropdown.theme-custom .selected-list .c-list .c-token {\\n position: relative;\\n display: inline-block;\\n vertical-align: middle;\\n min-height: 32px;\\n max-width: 100%;\\n padding: 6px 30px 6px 12px;\\n background: var(--ms-chip-bg);\\n color: var(--ms-chip-text);\\n border-radius: 999px;\\n box-shadow: inset 0 0 0 1px rgba(103, 80, 164, 0.08);\\n line-height: 1.35;\\n white-space: normal;\\n overflow-wrap: anywhere;\\n margin: 0;\\n float: none;\\n}\\n\\n.stackline-dropdown.theme-material .selected-list .c-list .c-token .c-label,\\n.stackline-dropdown.theme-dark .selected-list .c-list .c-token .c-label,\\n.stackline-dropdown.theme-custom .selected-list .c-list .c-token .c-label {\\n display: inline-flex;\\n align-items: center;\\n float: none;\\n min-width: 0;\\n max-width: 100%;\\n line-height: 1.3;\\n font-weight: 500;\\n white-space: normal;\\n overflow-wrap: anywhere;\\n}\\n\\n.stackline-dropdown.theme-material .selected-list .c-list .c-token .fa-remove,\\n.stackline-dropdown.theme-dark .selected-list .c-list .c-token .fa-remove,\\n.stackline-dropdown.theme-custom .selected-list .c-list .c-token .fa-remove {\\n position: absolute;\\n right: 10px;\\n top: 50%;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n width: 16px;\\n height: 16px;\\n margin-left: 0;\\n transform: translateY(-50%);\\n color: var(--ms-chip-remove);\\n cursor: pointer;\\n}\\n\\n.stackline-dropdown.theme-material .selected-list .countplaceholder,\\n.stackline-dropdown.theme-dark .selected-list .countplaceholder,\\n.stackline-dropdown.theme-custom .selected-list .countplaceholder {\\n display: inline-flex;\\n flex: 0 0 auto;\\n align-items: center;\\n justify-content: center;\\n align-self: center;\\n margin: 0;\\n line-height: 1;\\n color: var(--ms-on-surface-muted);\\n font-size: 0.8rem;\\n font-weight: 600;\\n}\\n\\n.stackline-dropdown.theme-material .selected-list .fa-angle-down,\\n.stackline-dropdown.theme-dark .selected-list .fa-angle-down,\\n.stackline-dropdown.theme-custom .selected-list .fa-angle-down,\\n.stackline-dropdown.theme-material .selected-list .fa-angle-up,\\n.stackline-dropdown.theme-dark .selected-list .fa-angle-up,\\n.stackline-dropdown.theme-custom .selected-list .fa-angle-up {\\n position: absolute;\\n top: 50%;\\n right: 16px;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n width: 20px;\\n height: 20px;\\n transform: translateY(-50%);\\n color: var(--ms-on-surface-muted);\\n font-size: 15pt;\\n pointer-events: none;\\n}\\n\\n.stackline-dropdown.theme-material .dropdown-list,\\n.stackline-dropdown.theme-dark .dropdown-list,\\n.stackline-dropdown.theme-custom .dropdown-list {\\n position: absolute;\\n width: 100%;\\n padding-top: 8px;\\n z-index: 99999;\\n}\\n\\n.stackline-dropdown.theme-material .arrow-up,\\n.stackline-dropdown.theme-dark .arrow-up,\\n.stackline-dropdown.theme-custom .arrow-up,\\n.stackline-dropdown.theme-material .arrow-down,\\n.stackline-dropdown.theme-dark .arrow-down,\\n.stackline-dropdown.theme-custom .arrow-down,\\n.stackline-dropdown.theme-material .arrow-2,\\n.stackline-dropdown.theme-dark .arrow-2,\\n.stackline-dropdown.theme-custom .arrow-2 {\\n display: none;\\n}\\n\\n.stackline-dropdown.theme-material .list-area,\\n.stackline-dropdown.theme-dark .list-area,\\n.stackline-dropdown.theme-custom .list-area {\\n overflow: hidden;\\n border-radius: 22px;\\n background: var(--ms-surface);\\n border: 1px solid var(--ms-outline);\\n box-shadow: var(--ms-shadow);\\n margin: 0;\\n}\\n\\n.stackline-dropdown.theme-material .select-all,\\n.stackline-dropdown.theme-dark .select-all,\\n.stackline-dropdown.theme-custom .select-all {\\n padding: 10px 14px;\\n border-bottom: 1px solid var(--ms-divider);\\n background: var(--ms-section-bg);\\n text-align: left;\\n}\\n\\n.stackline-dropdown.theme-material .list-filter,\\n.stackline-dropdown.theme-dark .list-filter,\\n.stackline-dropdown.theme-custom .list-filter {\\n position: relative;\\n display: flex;\\n align-items: center;\\n min-height: 52px;\\n padding-left: 48px;\\n padding-right: 44px;\\n border-bottom: 1px solid var(--ms-divider);\\n background: var(--ms-surface);\\n}\\n\\n.stackline-dropdown.theme-material .list-filter input,\\n.stackline-dropdown.theme-dark .list-filter input,\\n.stackline-dropdown.theme-custom .list-filter input {\\n width: 100%;\\n height: 100%;\\n border: 0;\\n background: transparent;\\n color: var(--ms-on-surface);\\n font: inherit;\\n padding: 0;\\n}\\n\\n.stackline-dropdown.theme-material .list-filter input::placeholder,\\n.stackline-dropdown.theme-dark .list-filter input::placeholder,\\n.stackline-dropdown.theme-custom .list-filter input::placeholder {\\n color: var(--ms-on-surface-muted);\\n}\\n\\n.stackline-dropdown.theme-material .list-filter input:focus,\\n.stackline-dropdown.theme-dark .list-filter input:focus,\\n.stackline-dropdown.theme-custom .list-filter input:focus {\\n outline: none;\\n}\\n\\n.stackline-dropdown.theme-material .list-filter .fa,\\n.stackline-dropdown.theme-dark .list-filter .fa,\\n.stackline-dropdown.theme-custom .list-filter .fa {\\n position: absolute;\\n top: 50%;\\n left: 16px;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n width: 18px;\\n height: 18px;\\n transform: translateY(-50%);\\n color: var(--ms-on-surface-muted);\\n}\\n\\n.stackline-dropdown.theme-material .dropdown-list ul,\\n.stackline-dropdown.theme-dark .dropdown-list ul,\\n.stackline-dropdown.theme-custom .dropdown-list ul {\\n list-style: none;\\n margin: 0;\\n padding: 8px;\\n overflow: auto;\\n}\\n\\n.stackline-dropdown.theme-material .dropdown-list ul li,\\n.stackline-dropdown.theme-dark .dropdown-list ul li,\\n.stackline-dropdown.theme-custom .dropdown-list ul li {\\n align-items: center;\\n min-height: 0;\\n margin: 4px;\\n padding: 12px 14px;\\n border-radius: 14px;\\n cursor: pointer;\\n text-align: left;\\n line-height: 1.35;\\n transition: background-color 0.16s ease, color 0.16s ease;\\n}\\n\\n.stackline-dropdown.theme-material .dropdown-list ul li:first-child,\\n.stackline-dropdown.theme-dark .dropdown-list ul li:first-child,\\n.stackline-dropdown.theme-custom .dropdown-list ul li:first-child {\\n padding-top: 12px;\\n}\\n\\n.stackline-dropdown.theme-material .dropdown-list ul li:last-child,\\n.stackline-dropdown.theme-dark .dropdown-list ul li:last-child,\\n.stackline-dropdown.theme-custom .dropdown-list ul li:last-child {\\n padding-bottom: 12px;\\n}\\n\\n.stackline-dropdown.theme-material .dropdown-list ul li:hover,\\n.stackline-dropdown.theme-dark .dropdown-list ul li:hover,\\n.stackline-dropdown.theme-custom .dropdown-list ul li:hover {\\n background: var(--ms-surface-soft);\\n}\\n\\n.stackline-dropdown.theme-material .pure-checkbox,\\n.stackline-dropdown.theme-dark .pure-checkbox,\\n.stackline-dropdown.theme-custom .pure-checkbox {\\n position: relative;\\n}\\n\\n.stackline-dropdown.theme-material .pure-checkbox input[type=checkbox] + label,\\n.stackline-dropdown.theme-dark .pure-checkbox input[type=checkbox] + label,\\n.stackline-dropdown.theme-custom .pure-checkbox input[type=checkbox] + label {\\n position: relative;\\n display: block;\\n width: 100%;\\n margin: 0;\\n padding-left: 32px;\\n color: inherit;\\n cursor: pointer;\\n font-weight: 500;\\n user-select: none;\\n}\\n\\n.stackline-dropdown.theme-material .pure-checkbox input[type=checkbox] + label:before,\\n.stackline-dropdown.theme-dark .pure-checkbox input[type=checkbox] + label:before,\\n.stackline-dropdown.theme-custom .pure-checkbox input[type=checkbox] + label:before {\\n box-sizing: content-box;\\n content: \\\"\\\";\\n position: absolute;\\n top: 50%;\\n left: 0;\\n width: 16px;\\n height: 16px;\\n margin-top: -10px;\\n border: 2px solid var(--ms-outline-strong);\\n border-radius: 5px;\\n background: var(--ms-surface);\\n transition: border-color 0.16s ease, background-color 0.16s ease, box-shadow 0.16s ease;\\n}\\n\\n.stackline-dropdown.theme-material .pure-checkbox input[type=checkbox] + label:after,\\n.stackline-dropdown.theme-dark .pure-checkbox input[type=checkbox] + label:after,\\n.stackline-dropdown.theme-custom .pure-checkbox input[type=checkbox] + label:after {\\n box-sizing: content-box;\\n content: \\\"\\\";\\n position: absolute;\\n top: 50%;\\n left: 5px;\\n width: 8px;\\n height: 3px;\\n margin-top: -4px;\\n border-style: solid;\\n border-color: #ffffff;\\n border-width: 0 0 3px 3px;\\n border-image: none;\\n background: transparent;\\n transform: rotate(-45deg) scale(0);\\n transform-origin: 50%;\\n transition: transform 0.16s ease;\\n}\\n\\n.stackline-dropdown.theme-material .pure-checkbox input[type=checkbox]:focus + label:before,\\n.stackline-dropdown.theme-dark .pure-checkbox input[type=checkbox]:focus + label:before,\\n.stackline-dropdown.theme-custom .pure-checkbox input[type=checkbox]:focus + label:before,\\n.stackline-dropdown.theme-material .pure-checkbox input[type=checkbox]:hover + label:before,\\n.stackline-dropdown.theme-dark .pure-checkbox input[type=checkbox]:hover + label:before,\\n.stackline-dropdown.theme-custom .pure-checkbox input[type=checkbox]:hover + label:before {\\n border-color: var(--ms-primary);\\n background: var(--ms-surface-soft);\\n}\\n\\n.stackline-dropdown.theme-material .pure-checkbox input[type=checkbox]:checked + label:before,\\n.stackline-dropdown.theme-dark .pure-checkbox input[type=checkbox]:checked + label:before,\\n.stackline-dropdown.theme-custom .pure-checkbox input[type=checkbox]:checked + label:before {\\n border-color: var(--ms-primary);\\n background: var(--ms-primary);\\n}\\n\\n.stackline-dropdown.theme-material .pure-checkbox input[type=checkbox]:checked + label:after,\\n.stackline-dropdown.theme-dark .pure-checkbox input[type=checkbox]:checked + label:after,\\n.stackline-dropdown.theme-custom .pure-checkbox input[type=checkbox]:checked + label:after {\\n transform: rotate(-45deg) scale(1);\\n}\\n\\n.stackline-dropdown.theme-material .list-message,\\n.stackline-dropdown.theme-dark .list-message,\\n.stackline-dropdown.theme-custom .list-message {\\n margin: 0;\\n padding: 20px 14px;\\n color: var(--ms-on-surface-muted);\\n text-align: center;\\n}\\n\"],\n providers: [DROPDOWN_CONTROL_VALUE_ACCESSOR, DROPDOWN_CONTROL_VALIDATION]\n})\n\nexport class AngularMultiSelect implements OnInit, ControlValueAccessor, OnChanges, Validator {\n\n @Input()\n data: Array<ListItem>;\n\n @Input()\n settings: DropdownSettings;\n\n @Output('onSelect')\n onSelect: EventEmitter<ListItem> = new EventEmitter<ListItem>();\n\n @Output('onDeSelect')\n onDeSelect: EventEmitter<ListItem> = new EventEmitter<ListItem>();\n\n @Output('onSelectAll')\n onSelectAll: EventEmitter<Array<ListItem>> = new EventEmitter<Array<ListItem>>();\n\n @Output('onDeSelectAll')\n onDeSelectAll: EventEmitter<Array<ListItem>> = new EventEmitter<Array<ListItem>>();\n\n @Output('onOpen')\n onOpen: EventEmitter<any> = new EventEmitter<any>();\n\n @Output('onClose')\n onClose: EventEmitter<any> = new EventEmitter<any>();\n\n @ContentChild(Item, { static: false }) itemTempl: Item;\n @ContentChild(Badge, { static: false }) badgeTempl: Badge;\n\n\n @ViewChild('searchInput', { static: false }) searchInput: ElementRef;\n\n public selectedItems: Array<ListItem>;\n public isActive: boolean = false;\n public isSelectAll: boolean = false;\n public groupedData: Array<ListItem>;\n filter: any;\n public chunkArray:any[];\n public scrollTop:any;\n public chunkIndex:any[] = [];\n public cachedItems:any[] = [];\n public totalRows:any;\n public itemHeight:any = 41.6;\n public screenItemsLen:any;\n public cachedItemsLen:any;\n public totalHeight: any;\n public scroller:any;\n public maxBuffer:any;\n public lastScrolled:any;\n public lastRepaintY: any;\n\n defaultSettings: DropdownSettings = {\n singleSelection: false,\n text: 'Select',\n enableCheckAll: true,\n selectAllText: 'Select All',\n unSelectAllText: 'UnSelect All',\n enableSearchFilter: false,\n maxHeight: 300,\n badgeShowLimit: 999999999999,\n classes: '',\n disabled: false,\n searchPlaceholderText: 'Search',\n showCheckbox: true,\n noDataLabel: 'No Data Available',\n searchAutofocus: true,\n lazyLoading: false,\n labelKey: 'itemName',\n theme: 'classic',\n skin: 'classic'\n }\n public parseError: boolean;\n constructor(public _elementRef : ElementRef) {\n\n }\n getThemeName(): string {\n let rawTheme: any = 'classic';\n if (this.settings) {\n rawTheme = this.settings.skin || this.settings.theme || 'classic';\n }\n let theme = String(rawTheme).toLowerCase().replace(/[^a-z0-9_-]+/g, '-');\n theme = theme.replace(/^-+|-+$/g, '');\n return theme || 'classic';\n }\n getDropdownClasses(): string {\n let theme = this.getThemeName();\n let className = 'theme-' + theme;\n if (theme !== 'classic' && theme !== 'material' && theme !== 'dark' && theme !== 'custom') {\n className += ' theme-custom';\n }\n if (this.isActive) {\n className += ' is-open';\n }\n if (this.settings && this.settings.disabled) {\n className += ' is-disabled';\n }\n return className;\n }\n ngOnInit() {\n this.settings = Object.assign(this.defaultSettings, this.settings);\n if (this.settings.groupBy) {\n this.groupedData = this.transformData(this.data, this.settings.groupBy);\n }\n this.totalRows = (this.data && this.data.length);\n this.cachedItems = this.data;\n this.screenItemsLen = Math.ceil(this.settings.maxHeight / this.itemHeight);\n this.cachedItemsLen = this.screenItemsLen * 3;\n this.totalHeight = this.itemHeight * this.totalRows;\n this.maxBuffer = this.screenItemsLen * this.itemHeight;\n this.lastScrolled = 0;\n this.renderChunk(0, this.cachedItemsLen / 2);\n }\n ngOnChanges(changes: SimpleChanges) {\n if (changes.data && !changes.data.isFirstChange()) {\n if (this.settings.groupBy) {\n this.groupedData = this.transformData(this.data, this.settings.groupBy);\n if (this.data.length == 0) {\n this.selectedItems = [];\n }\n }\n }\n if (changes.settings && !changes.settings.isFirstChange()) {\n this.settings = Object.assign(this.defaultSettings, this.settings);\n }\n }\n ngDoCheck() {\n if (this.selectedItems) {\n if (this.selectedItems.length == 0 || this.data.length == 0 || this.selectedItems.length < this.data.length) {\n this.isSelectAll = false;\n }\n }\n }\n ngAfterViewInit() {\n if(this.settings.lazyLoading){\n this._elementRef.nativeElement.getElementsByClassName(\"lazyContainer\")[0].addEventListener('scroll', this.onScroll.bind(this));\n }\n }\n onItemClick(item: ListItem, index: number, evt: Event) {\n if (this.settings.disabled) {\n return false;\n }\n\n let found = this.isSelected(item);\n let limit = this.selectedItems.length < this.settings.limitSelection ? true : false;\n\n if (!found) {\n if (this.settings.limitSelection) {\n if (limit) {\n this.addSelected(item);\n this.onSelect.emit(item);\n }\n }\n else {\n this.addSelected(item);\n this.onSelect.emit(item);\n }\n\n }\n else {\n this.removeSelected(item);\n this.onDeSelect.emit(item);\n }\n if (this.isSelectAll || this.data.length > this.selectedItems.length) {\n this.isSelectAll = false;\n }\n if (this.data.length == this.selectedItems.length) {\n this.isSelectAll = true;\n }\n }\n public validate(c: FormControl): any {\n return null;\n }\n private onTouchedCallback: (_: any) => void = noop;\n private onChangeCallback: (_: any) => void = noop;\n\n writeValue(value: any) {\n if (value !== undefined && value !== null) {\n if (this.settings.singleSelection) {\n try {\n\n if (value.length > 1) {\n this.selectedItems = [value[0]];\n throw new MyException(404, { \"msg\": \"Single Selection Mode, Selected Items cannot have more than one item.\" });\n }\n else {\n this.selectedItems = value;\n }\n }\n catch (e) {\n console.error(e.body.msg);\n }\n\n }\n else {\n if (this.settings.limitSelection) {\n this.selectedItems = value.splice(0, this.settings.limitSelection);\n }\n else {\n this.selectedItems = value;\n }\n if (this.selectedItems.length === this.data.length && this.data.length > 0) {\n this.isSelectAll = true;\n }\n }\n } else {\n this.selectedItems = [];\n }\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 trackByFn(index: number, item: ListItem) {\n return item.id;\n }\n isSelected(clickedItem: ListItem) {\n let found = false;\n this.selectedItems && this.selectedItems.forEach(item => {\n if (clickedItem.id === item.id) {\n found = true;\n }\n });\n return found;\n }\n addSelected(item: ListItem) {\n if (this.settings.singleSelection) {\n this.selectedItems = [];\n this.selectedItems.push(item);\n this.closeDropdown();\n }\n else\n this.selectedItems.push(item);\n this.onChangeCallback(this.selectedItems);\n this.onTouchedCallback(this.selectedItems);\n }\n removeSelected(clickedItem: ListItem) {\n this.selectedItems && this.selectedItems.forEach(item => {\n if (clickedItem.id === item.id) {\n this.selectedItems.splice(this.selectedItems.indexOf(item), 1);\n }\n });\n this.onChangeCallback(this.selectedItems);\n this.onTouchedCallback(this.selectedItems);\n }\n toggleDropdown(evt: any) {\n if (this.settings.disabled) {\n return false;\n }\n this.isActive = !this.isActive;\n if (this.isActive) {\n if (this.settings.searchAutofocus && this.settings.enableSearchFilter) {\n setTimeout(() => {\n this.searchInput.nativeElement.focus();\n }, 0);\n }\n this.onOpen.emit(true);\n }\n else {\n this.onClose.emit(false);\n }\n evt.preventDefault();\n }\n closeDropdown() {\n if(this.searchInput){\n this.searchInput.nativeElement.value = \"\";\n this.data = [];\n this.data = this.cachedItems;\n this.totalHeight = this.itemHeight * this.data.length;\n this.totalRows = this.data.length;\n this.updateView(this.scrollTop);\n }\n this.filter = \"\";\n this.isActive = false;\n this.onClose.emit(false);\n }\n toggleSelectAll() {\n if (!this.isSelectAll) {\n this.selectedItems = [];\n this.selectedItems = this.data.slice();\n this.isSelectAll = true;\n this.onChangeCallback(this.selectedItems);\n this.onTouchedCallback(this.selectedItems);\n\n this.onSelectAll.emit(this.selectedItems);\n }\n else {\n this.selectedItems = [];\n this.isSelectAll = false;\n this.onChangeCallback(this.selectedItems);\n this.onTouchedCallback(this.selectedItems);\n\n this.onDeSelectAll.emit(this.selectedItems);\n }\n }\n transformData(arr: Array<ListItem>, field: any): Array<ListItem> {\n const groupedObj: any = arr.reduce((prev: any, cur: any) => {\n if (!prev[cur[field]]) {\n prev[cur[field]] = [cur];\n } else {\n prev[cur[field]].push(cur);\n }\n return prev;\n }, {});\n const tempArr: any = [];\n Object.keys(groupedObj).map(function (x) {\n tempArr.push({ key: x, value: groupedObj[x] });\n });\n return tempArr;\n }\n renderChunk(fromPos:any, howMany:any) {\n this.chunkArray = [];\n this.chunkIndex = [];\n var finalItem = fromPos + howMany;\n if (finalItem > this.totalRows)\n finalItem = this.totalRows;\n\n for (var i = fromPos; i < finalItem; i++) {\n this.chunkIndex.push((i * this.itemHeight) + 'px');\n this.chunkArray.push(this.data[i]);\n }\n }\n public onScroll(e:any) {\n this.scrollTop = e.target.scrollTop;\n this.updateView(this.scrollTop);\n\n }\n public updateView(scrollTop:any){\n var scrollPos = scrollTop ? scrollTop: 0;\n var first = (scrollPos / this.itemHeight) - this.screenItemsLen;\n var firstTemp = \"\"+first;\n first = parseInt(firstTemp) < 0 ? 0 : parseInt(firstTemp);\n this.renderChunk(first, this.cachedItemsLen);\n this.lastRepaintY = scrollPos;\n }\n public filterInfiniteList(evt: any){\n var filteredElems:Array<any> = [];\n this.data = this.cachedItems.slice();\n if(evt.target.value.toString() != ''){\n this.data.filter(function(el:any){\n for(var prop in el){\n if(el[prop].toString().toLowerCase().indexOf(evt.target.value.toString().toLowerCase()) >=0 ){\n filteredElems.push(el);\n break;\n }\n }\n });\n //this.cachedItems = this.data;\n this.totalHeight = this.itemHeight * filteredElems.length;\n this.totalRows = filteredElems.length;\n this.data = [];\n this.data = filteredElems;\n this.updateView(this.scrollTop);\n }\n else if(evt.target.value.toString() == '' && this.cachedItems.length > 0){\n this.data = [];\n this.data = this.cachedItems;\n this.totalHeight = this.itemHeight * this.data.length;\n this.totalRows = this.data.length;\n this.updateView(this.scrollTop);\n }\n }\n}\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n declarations: [AngularMultiSelect, ClickOutsideDirective, ScrollDirective, styleDirective, ListFilterPipe, Item, TemplateRenderer, Badge],\n exports: [AngularMultiSelect, ClickOutsideDirective, ScrollDirective, styleDirective, ListFilterPipe, Item, TemplateRenderer, Badge]\n})\nexport class AngularMultiSelectModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}