angular-multiselect3 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -0
- package/README.md +306 -0
- package/esm2022/angular-multiselect.mjs +5 -0
- package/esm2022/lib/clickOutside.mjs +58 -0
- package/esm2022/lib/list-filter.mjs +59 -0
- package/esm2022/lib/menu-item.mjs +352 -0
- package/esm2022/lib/multiselect.component.mjs +1038 -0
- package/esm2022/lib/multiselect.interface.mjs +2 -0
- package/esm2022/lib/multiselect.model.mjs +9 -0
- package/esm2022/lib/multiselect.service.mjs +28 -0
- package/esm2022/lib/virtual-scroll/defaultoptions.mjs +2 -0
- package/esm2022/lib/virtual-scroll/idimension.mjs +2 -0
- package/esm2022/lib/virtual-scroll/ipageinfo.mjs +2 -0
- package/esm2022/lib/virtual-scroll/iviewport.mjs +2 -0
- package/esm2022/lib/virtual-scroll/virtual-scroll.mjs +1162 -0
- package/esm2022/lib/virtual-scroll/wrapgroupdimension.mjs +2 -0
- package/esm2022/lib/virtual-scroll/wrapgroupdimensions.mjs +2 -0
- package/esm2022/public_api.mjs +7 -0
- package/fesm2022/angular-multiselect.mjs +2689 -0
- package/fesm2022/angular-multiselect.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/clickOutside.d.ts +17 -0
- package/lib/list-filter.d.ts +12 -0
- package/lib/menu-item.d.ts +36 -0
- package/lib/multiselect.component.d.ts +134 -0
- package/lib/multiselect.interface.d.ts +34 -0
- package/lib/multiselect.model.d.ts +5 -0
- package/lib/multiselect.service.d.ts +11 -0
- package/lib/virtual-scroll/defaultoptions.d.ts +11 -0
- package/lib/virtual-scroll/idimension.d.ts +12 -0
- package/lib/virtual-scroll/ipageinfo.d.ts +9 -0
- package/lib/virtual-scroll/iviewport.d.ts +5 -0
- package/lib/virtual-scroll/virtual-scroll.d.ts +132 -0
- package/lib/virtual-scroll/wrapgroupdimension.d.ts +5 -0
- package/lib/virtual-scroll/wrapgroupdimensions.d.ts +7 -0
- package/package.json +37 -0
- package/public_api.d.ts +6 -0
- package/themes/dark.theme.scss +113 -0
- package/themes/default.theme.css +107 -0
- package/themes/default.theme.scss +155 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"angular-multiselect.mjs","sources":["../../projects/angular2-multiselect-dropdown-lib/src/lib/multiselect.model.ts","../../projects/angular2-multiselect-dropdown-lib/src/lib/clickOutside.ts","../../projects/angular2-multiselect-dropdown-lib/src/lib/multiselect.service.ts","../../projects/angular2-multiselect-dropdown-lib/src/lib/list-filter.ts","../../projects/angular2-multiselect-dropdown-lib/src/lib/menu-item.ts","../../projects/angular2-multiselect-dropdown-lib/src/lib/virtual-scroll/virtual-scroll.ts","../../projects/angular2-multiselect-dropdown-lib/src/lib/multiselect.component.ts","../../projects/angular2-multiselect-dropdown-lib/src/lib/multiselect.component.html","../../projects/angular2-multiselect-dropdown-lib/src/angular-multiselect.ts"],"sourcesContent":["export 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}","import {\n Directive,\n ElementRef,\n Output,\n EventEmitter,\n HostListener,\n Input,\n} from '@angular/core';\n\n@Directive({\n selector: '[clickOutside]',\n})\nexport class ClickOutsideDirective {\n constructor(private readonly _elementRef: ElementRef) {}\n\n @Input()\n enabled: boolean;\n\n @Output()\n clickOutside = new EventEmitter<MouseEvent>();\n\n @HostListener('document:pointerdown', ['$event', '$event.target'])\n @HostListener('document:touchstart', ['$event', '$event.target'])\n onClick(event: MouseEvent, targetElement: HTMLElement): void {\n console.log('clicked outside');\n if (!targetElement || !this.enabled) {\n return;\n }\n\n const clickedInside =\n this._elementRef.nativeElement.contains(targetElement);\n if (!clickedInside) {\n this.clickOutside.emit(event);\n }\n }\n}\n\n@Directive({\n selector: '[scroll]',\n})\nexport class ScrollDirective {\n @Output()\n public scroll = new EventEmitter<MouseEvent>();\n\n @HostListener('scroll', ['$event'])\n public onClick(event: MouseEvent, targetElement: HTMLElement): void {\n this.scroll.emit(event);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n\n@Injectable()\nexport class DataService {\n\n filteredData: any = [];\n private subject = new Subject<any>();\n\n setData(data: any) {\n\n this.filteredData = data;\n this.subject.next(data);\n }\n getData(): Observable<any> {\n return this.subject.asObservable();\n }\n getFilteredData() {\n if (this.filteredData && this.filteredData.length > 0) {\n return this.filteredData;\n }\n else {\n return [];\n }\n }\n\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { DataService } from './multiselect.service';\n\n\n@Pipe({\n name: 'listFilter',\n pure: true\n})\nexport class ListFilterPipe implements PipeTransform {\n\n public filteredList: any = [];\n constructor(private ds: DataService) {\n\n }\n\n transform(items: any[], filter: any, searchBy: any): any[] {\n if (!items || !filter || filter == \"\") {\n return items;\n }\n this.filteredList = items.filter((item: any) => this.applyFilter(item, filter, searchBy));\n return this.filteredList;\n }\n applyFilter(item: any, filter: any, searchBy: any): boolean {\n let found = false;\n if (searchBy.length > 0) {\n if (item.grpTitle) {\n found = true;\n }\n else {\n for (var t = 0; t < searchBy.length; t++) {\n if (filter && item[searchBy[t]] && item[searchBy[t]] != \"\") {\n if (item[searchBy[t]].toString().toLowerCase().indexOf(filter.toLowerCase()) >= 0) {\n found = true;\n }\n }\n }\n }\n\n } else {\n if (item.grpTitle) {\n found = true;\n }\n else {\n for (var prop in item) {\n if (filter && item[prop]) {\n if (item[prop].toString().toLowerCase().indexOf(filter.toLowerCase()) >= 0) {\n found = true;\n }\n }\n }\n }\n }\n\n return found;\n }\n}","import {\n Component,\n OnInit,\n OnDestroy,\n TemplateRef,\n ContentChild,\n EmbeddedViewRef,\n ViewContainerRef,\n ViewEncapsulation,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: 'c-item',\n template: ``,\n})\nexport class Item {\n @ContentChild(TemplateRef, { static: true }) template: TemplateRef<any>;\n constructor() {}\n}\n\n@Component({\n selector: 'c-badge',\n template: ``,\n})\nexport class Badge {\n @ContentChild(TemplateRef, { static: true }) template: TemplateRef<any>;\n constructor() {}\n}\n\n@Component({\n selector: 'c-search',\n template: ``,\n})\nexport class Search {\n @ContentChild(TemplateRef, { static: true }) template: TemplateRef<any>;\n constructor() {}\n}\n@Component({\n selector: 'c-templateRenderer',\n template: ``,\n})\nexport class TemplateRenderer implements OnInit, OnDestroy {\n @Input() data: any;\n @Input() item: any;\n view: EmbeddedViewRef<any>;\n\n constructor(public viewContainer: ViewContainerRef) {}\n ngOnInit() {\n this.view = this.viewContainer.createEmbeddedView(this.data.template, {\n $implicit: this.data,\n item: this.item,\n });\n }\n\n ngOnDestroy() {\n this.view.destroy();\n }\n}\n\n@Component({\n selector: 'c-icon',\n template: `<svg\n *ngIf=\"name == 'remove'\"\n width=\"100%\"\n height=\"100%\"\n version=\"1.1\"\n id=\"Capa_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 47.971 47.971\"\n style=\"enable-background:new 0 0 47.971 47.971;\"\n xml:space=\"preserve\"\n >\n <g>\n <path\n d=\"M28.228,23.986L47.092,5.122c1.172-1.171,1.172-3.071,0-4.242c-1.172-1.172-3.07-1.172-4.242,0L23.986,19.744L5.121,0.88\n c-1.172-1.172-3.07-1.172-4.242,0c-1.172,1.171-1.172,3.071,0,4.242l18.865,18.864L0.879,42.85c-1.172,1.171-1.172,3.071,0,4.242\n C1.465,47.677,2.233,47.97,3,47.97s1.535-0.293,2.121-0.879l18.865-18.864L42.85,47.091c0.586,0.586,1.354,0.879,2.121,0.879\n s1.535-0.293,2.121-0.879c1.172-1.171,1.172-3.071,0-4.242L28.228,23.986z\"\n />\n </g>\n </svg>\n <svg\n *ngIf=\"name == 'angle-down'\"\n version=\"1.1\"\n id=\"Capa_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 612 612\"\n style=\"enable-background:new 0 0 612 612;\"\n xml:space=\"preserve\"\n >\n <g>\n <g id=\"_x31_0_34_\">\n <g>\n <path\n d=\"M604.501,134.782c-9.999-10.05-26.222-10.05-36.221,0L306.014,422.558L43.721,134.782\n\t\t\t\tc-9.999-10.05-26.223-10.05-36.222,0s-9.999,26.35,0,36.399l279.103,306.241c5.331,5.357,12.422,7.652,19.386,7.296\n\t\t\t\tc6.988,0.356,14.055-1.939,19.386-7.296l279.128-306.268C614.5,161.106,614.5,144.832,604.501,134.782z\"\n />\n </g>\n </g>\n </g>\n </svg>\n <svg\n *ngIf=\"name == 'angle-up'\"\n version=\"1.1\"\n id=\"Capa_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 612 612\"\n style=\"enable-background:new 0 0 612 612;\"\n xml:space=\"preserve\"\n >\n <g>\n <g id=\"_x39__30_\">\n <g>\n <path\n d=\"M604.501,440.509L325.398,134.956c-5.331-5.357-12.423-7.627-19.386-7.27c-6.989-0.357-14.056,1.913-19.387,7.27\n\t\t\t\tL7.499,440.509c-9.999,10.024-9.999,26.298,0,36.323s26.223,10.024,36.222,0l262.293-287.164L568.28,476.832\n\t\t\t\tc9.999,10.024,26.222,10.024,36.221,0C614.5,466.809,614.5,450.534,604.501,440.509z\"\n />\n </g>\n </g>\n </g>\n </svg>\n <svg\n *ngIf=\"name == 'search'\"\n version=\"1.1\"\n id=\"Capa_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 615.52 615.52\"\n style=\"enable-background:new 0 0 615.52 615.52;\"\n xml:space=\"preserve\"\n >\n <g>\n <g>\n <g id=\"Search__x28_and_thou_shall_find_x29_\">\n <g>\n <path\n d=\"M602.531,549.736l-184.31-185.368c26.679-37.72,42.528-83.729,42.528-133.548C460.75,103.35,357.997,0,231.258,0\n\t\t\t\t\tC104.518,0,1.765,103.35,1.765,230.82c0,127.47,102.753,230.82,229.493,230.82c49.53,0,95.271-15.944,132.78-42.777\n\t\t\t\t\tl184.31,185.366c7.482,7.521,17.292,11.291,27.102,11.291c9.812,0,19.62-3.77,27.083-11.291\n\t\t\t\t\tC617.496,589.188,617.496,564.777,602.531,549.736z M355.9,319.763l-15.042,21.273L319.7,356.174\n\t\t\t\t\tc-26.083,18.658-56.667,28.526-88.442,28.526c-84.365,0-152.995-69.035-152.995-153.88c0-84.846,68.63-153.88,152.995-153.88\n\t\t\t\t\ts152.996,69.034,152.996,153.88C384.271,262.769,374.462,293.526,355.9,319.763z\"\n />\n </g>\n </g>\n </g>\n </g>\n </svg>\n <svg\n *ngIf=\"name == 'clear'\"\n version=\"1.1\"\n id=\"Capa_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 51.976 51.976\"\n style=\"enable-background:new 0 0 51.976 51.976;\"\n xml:space=\"preserve\"\n >\n <g>\n <path\n d=\"M44.373,7.603c-10.137-10.137-26.632-10.138-36.77,0c-10.138,10.138-10.137,26.632,0,36.77s26.632,10.138,36.77,0\n\t\tC54.51,34.235,54.51,17.74,44.373,7.603z M36.241,36.241c-0.781,0.781-2.047,0.781-2.828,0l-7.425-7.425l-7.778,7.778\n\t\tc-0.781,0.781-2.047,0.781-2.828,0c-0.781-0.781-0.781-2.047,0-2.828l7.778-7.778l-7.425-7.425c-0.781-0.781-0.781-2.048,0-2.828\n\t\tc0.781-0.781,2.047-0.781,2.828,0l7.425,7.425l7.071-7.071c0.781-0.781,2.047-0.781,2.828,0c0.781,0.781,0.781,2.047,0,2.828\n\t\tl-7.071,7.071l7.425,7.425C37.022,34.194,37.022,35.46,36.241,36.241z\"\n />\n </g>\n </svg>`,\n encapsulation: ViewEncapsulation.None,\n})\nexport class CIcon {\n @Input() name: any;\n}\n","import {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Inject,\n Optional,\n Input,\n NgModule,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n ViewChild,\n ChangeDetectorRef,\n} from '@angular/core';\n\nimport { PLATFORM_ID } from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\n\nimport { CommonModule } from '@angular/common';\n\nimport * as tween from '@tweenjs/tween.js';\nimport { VirtualScrollerDefaultOptions } from './defaultoptions';\nimport { IPageInfo } from './ipageinfo';\nimport { IViewport } from './iviewport';\n\nimport { WrapGroupDimensions } from './wrapgroupdimensions';\nimport { WrapGroupDimension } from './wrapgroupdimension';\n\nimport { IDimensions } from './idimension';\n\nexport function VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY(): VirtualScrollerDefaultOptions {\n return {\n scrollThrottlingTime: 0,\n scrollDebounceTime: 0,\n scrollAnimationTime: 750,\n checkResizeInterval: 1000,\n resizeBypassRefreshThreshold: 5,\n modifyOverflowStyleOfParentScroll: true,\n stripedTable: false,\n };\n}\n\n@Component({\n selector: 'virtual-scroller,[virtualScroller]',\n exportAs: 'virtualScroller',\n template: `\n <div class=\"total-padding\" #invisiblePadding></div>\n <div class=\"scrollable-content\" #content>\n <ng-content></ng-content>\n </div>\n `,\n host: {\n '[class.horizontal]': 'horizontal',\n '[class.vertical]': '!horizontal',\n '[class.selfScroll]': '!parentScroll',\n },\n styles: [\n `\n :host {\n position: relative;\n display: block;\n -webkit-overflow-scrolling: touch;\n }\n\n :host.horizontal.selfScroll {\n overflow-y: visible;\n overflow-x: auto;\n }\n :host.vertical.selfScroll {\n overflow-y: auto;\n overflow-x: visible;\n }\n\n .scrollable-content {\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n max-width: 100vw;\n max-height: 100vh;\n position: absolute;\n }\n\n .scrollable-content ::ng-deep > * {\n box-sizing: border-box;\n }\n\n :host.horizontal {\n white-space: nowrap;\n }\n\n :host.horizontal .scrollable-content {\n display: flex;\n }\n\n :host.horizontal .scrollable-content ::ng-deep > * {\n flex-shrink: 0;\n flex-grow: 0;\n white-space: initial;\n }\n\n .total-padding {\n width: 1px;\n opacity: 0;\n }\n\n :host.horizontal .total-padding {\n height: 100%;\n }\n `,\n ],\n})\nexport class VirtualScrollerComponent implements OnInit, OnChanges, OnDestroy {\n public viewPortItems: any[];\n public window = window;\n\n public get viewPortInfo(): IPageInfo {\n let pageInfo: IViewport = this.previousViewPort || <any>{};\n return {\n startIndex: pageInfo.startIndex || 0,\n endIndex: pageInfo.endIndex || 0,\n scrollStartPosition: pageInfo.scrollStartPosition || 0,\n scrollEndPosition: pageInfo.scrollEndPosition || 0,\n maxScrollPosition: pageInfo.maxScrollPosition || 0,\n startIndexWithBuffer: pageInfo.startIndexWithBuffer || 0,\n endIndexWithBuffer: pageInfo.endIndexWithBuffer || 0,\n };\n }\n\n @Input()\n public executeRefreshOutsideAngularZone: boolean = false;\n\n protected _enableUnequalChildrenSizes: boolean = false;\n @Input()\n public get enableUnequalChildrenSizes(): boolean {\n return this._enableUnequalChildrenSizes;\n }\n public set enableUnequalChildrenSizes(value: boolean) {\n if (this._enableUnequalChildrenSizes === value) {\n return;\n }\n\n this._enableUnequalChildrenSizes = value;\n this.minMeasuredChildWidth = undefined;\n this.minMeasuredChildHeight = undefined;\n }\n\n @Input()\n public useMarginInsteadOfTranslate: boolean = false;\n\n @Input()\n public modifyOverflowStyleOfParentScroll: boolean;\n\n @Input()\n public stripedTable: boolean;\n\n @Input()\n public scrollbarWidth: number;\n\n @Input()\n public scrollbarHeight: number;\n\n @Input()\n public childWidth: number;\n\n @Input()\n public childHeight: number;\n\n @Input()\n public ssrChildWidth: number;\n\n @Input()\n public ssrChildHeight: number;\n\n @Input()\n public ssrViewportWidth: number = 1920;\n\n @Input()\n public ssrViewportHeight: number = 1080;\n\n protected _bufferAmount: number = 0;\n @Input()\n public get bufferAmount(): number {\n if (typeof this._bufferAmount === 'number' && this._bufferAmount >= 0) {\n return this._bufferAmount;\n } else {\n return this.enableUnequalChildrenSizes ? 5 : 0;\n }\n }\n public set bufferAmount(value: number) {\n this._bufferAmount = value;\n }\n\n @Input()\n public scrollAnimationTime: number;\n\n @Input()\n public resizeBypassRefreshThreshold: number;\n\n protected _scrollThrottlingTime: number;\n @Input()\n public get scrollThrottlingTime(): number {\n return this._scrollThrottlingTime;\n }\n public set scrollThrottlingTime(value: number) {\n this._scrollThrottlingTime = value;\n this.updateOnScrollFunction();\n }\n\n protected _scrollDebounceTime: number;\n @Input()\n public get scrollDebounceTime(): number {\n return this._scrollDebounceTime;\n }\n public set scrollDebounceTime(value: number) {\n this._scrollDebounceTime = value;\n this.updateOnScrollFunction();\n }\n\n protected onScroll: () => void;\n protected updateOnScrollFunction(): void {\n if (this.scrollDebounceTime) {\n this.onScroll = <any>this.debounce(() => {\n this.refresh_internal(false);\n }, this.scrollDebounceTime);\n } else if (this.scrollThrottlingTime) {\n this.onScroll = <any>this.throttleTrailing(() => {\n this.refresh_internal(false);\n }, this.scrollThrottlingTime);\n } else {\n this.onScroll = () => {\n this.refresh_internal(false);\n };\n }\n }\n\n protected checkScrollElementResizedTimer: number;\n protected _checkResizeInterval: number;\n @Input()\n public get checkResizeInterval(): number {\n return this._checkResizeInterval;\n }\n public set checkResizeInterval(value: number) {\n if (this._checkResizeInterval === value) {\n return;\n }\n\n this._checkResizeInterval = value;\n this.addScrollEventHandlers();\n }\n\n protected _items: any[] = [];\n @Input()\n public get items(): any[] {\n return this._items;\n }\n public set items(value: any[]) {\n if (value === this._items) {\n return;\n }\n\n this._items = value || [];\n this.refresh_internal(true);\n }\n\n @Input()\n public compareItems: (item1: any, item2: any) => boolean = (\n item1: any,\n item2: any,\n ) => item1 === item2;\n\n protected _horizontal: boolean;\n @Input()\n public get horizontal(): boolean {\n return this._horizontal;\n }\n public set horizontal(value: boolean) {\n this._horizontal = value;\n this.updateDirection();\n }\n\n protected revertParentOverscroll(): void {\n const scrollElement = this.getScrollElement();\n if (scrollElement && this.oldParentScrollOverflow) {\n scrollElement.style['overflow-y'] = this.oldParentScrollOverflow.y;\n scrollElement.style['overflow-x'] = this.oldParentScrollOverflow.x;\n }\n\n this.oldParentScrollOverflow = undefined;\n }\n\n protected oldParentScrollOverflow: { x: string; y: string };\n protected _parentScroll: Element | Window;\n @Input()\n public get parentScroll(): Element | Window {\n return this._parentScroll;\n }\n public set parentScroll(value: Element | Window) {\n if (this._parentScroll === value) {\n return;\n }\n\n this.revertParentOverscroll();\n this._parentScroll = value;\n this.addScrollEventHandlers();\n\n const scrollElement = this.getScrollElement();\n if (\n this.modifyOverflowStyleOfParentScroll &&\n scrollElement !== this.element.nativeElement\n ) {\n this.oldParentScrollOverflow = {\n x: scrollElement.style['overflow-x'],\n y: scrollElement.style['overflow-y'],\n };\n scrollElement.style['overflow-y'] = this.horizontal ? 'visible' : 'auto';\n scrollElement.style['overflow-x'] = this.horizontal ? 'auto' : 'visible';\n }\n }\n\n @Output()\n public vsUpdate: EventEmitter<any[]> = new EventEmitter<any[]>();\n\n @Output()\n public vsChange: EventEmitter<IPageInfo> = new EventEmitter<IPageInfo>();\n\n @Output()\n public vsStart: EventEmitter<IPageInfo> = new EventEmitter<IPageInfo>();\n\n @Output()\n public vsEnd: EventEmitter<IPageInfo> = new EventEmitter<IPageInfo>();\n\n @ViewChild('content', { read: ElementRef, static: false })\n protected contentElementRef: ElementRef;\n\n @ViewChild('invisiblePadding', { read: ElementRef, static: false })\n protected invisiblePaddingElementRef: ElementRef;\n\n @ContentChild('header', { read: ElementRef, static: false })\n protected headerElementRef: ElementRef;\n\n @ContentChild('container', { read: ElementRef, static: false })\n protected containerElementRef: ElementRef;\n\n public ngOnInit(): void {\n this.addScrollEventHandlers();\n }\n\n public ngOnDestroy(): void {\n this.removeScrollEventHandlers();\n this.revertParentOverscroll();\n }\n\n public ngOnChanges(changes: any): void {\n let indexLengthChanged = this.cachedItemsLength !== this.items.length;\n this.cachedItemsLength = this.items.length;\n\n const firstRun: boolean =\n !changes.items ||\n !changes.items.previousValue ||\n changes.items.previousValue.length === 0;\n this.refresh_internal(indexLengthChanged || firstRun);\n }\n\n public ngDoCheck(): void {\n if (this.cachedItemsLength !== this.items.length) {\n this.cachedItemsLength = this.items.length;\n this.refresh_internal(true);\n return;\n }\n\n if (\n this.previousViewPort &&\n this.viewPortItems &&\n this.viewPortItems.length > 0\n ) {\n let itemsArrayChanged = false;\n for (let i = 0; i < this.viewPortItems.length; ++i) {\n if (\n !this.compareItems(\n this.items[this.previousViewPort.startIndexWithBuffer + i],\n this.viewPortItems[i],\n )\n ) {\n itemsArrayChanged = true;\n break;\n }\n }\n if (itemsArrayChanged) {\n this.refresh_internal(true);\n }\n }\n }\n\n public refresh(): void {\n this.refresh_internal(true);\n }\n\n public invalidateAllCachedMeasurements(): void {\n this.wrapGroupDimensions = {\n maxChildSizePerWrapGroup: [],\n numberOfKnownWrapGroupChildSizes: 0,\n sumOfKnownWrapGroupChildWidths: 0,\n sumOfKnownWrapGroupChildHeights: 0,\n };\n\n this.minMeasuredChildWidth = undefined;\n this.minMeasuredChildHeight = undefined;\n\n this.refresh_internal(false);\n }\n\n public invalidateCachedMeasurementForItem(item: any): void {\n if (this.enableUnequalChildrenSizes) {\n let index = this.items && this.items.indexOf(item);\n if (index >= 0) {\n this.invalidateCachedMeasurementAtIndex(index);\n }\n } else {\n this.minMeasuredChildWidth = undefined;\n this.minMeasuredChildHeight = undefined;\n }\n\n this.refresh_internal(false);\n }\n\n public invalidateCachedMeasurementAtIndex(index: number): void {\n if (this.enableUnequalChildrenSizes) {\n let cachedMeasurement =\n this.wrapGroupDimensions.maxChildSizePerWrapGroup[index];\n if (cachedMeasurement) {\n this.wrapGroupDimensions.maxChildSizePerWrapGroup[index] = undefined;\n --this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\n this.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths -=\n cachedMeasurement.childWidth || 0;\n this.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights -=\n cachedMeasurement.childHeight || 0;\n }\n } else {\n this.minMeasuredChildWidth = undefined;\n this.minMeasuredChildHeight = undefined;\n }\n\n this.refresh_internal(false);\n }\n\n public scrollInto(\n item: any,\n alignToBeginning: boolean = true,\n additionalOffset: number = 0,\n animationMilliseconds: number = undefined,\n animationCompletedCallback: () => void = undefined,\n ): void {\n let index: number = this.items.indexOf(item);\n if (index === -1) {\n return;\n }\n\n this.scrollToIndex(\n index,\n alignToBeginning,\n additionalOffset,\n animationMilliseconds,\n animationCompletedCallback,\n );\n }\n\n public scrollToIndex(\n index: number,\n alignToBeginning: boolean = true,\n additionalOffset: number = 0,\n animationMilliseconds: number = undefined,\n animationCompletedCallback: () => void = undefined,\n ): void {\n let maxRetries: number = 5;\n\n let retryIfNeeded = () => {\n --maxRetries;\n if (maxRetries <= 0) {\n if (animationCompletedCallback) {\n animationCompletedCallback();\n }\n return;\n }\n\n let dimensions = this.calculateDimensions();\n let desiredStartIndex = Math.min(\n Math.max(index, 0),\n dimensions.itemCount - 1,\n );\n if (this.previousViewPort.startIndex === desiredStartIndex) {\n if (animationCompletedCallback) {\n animationCompletedCallback();\n }\n return;\n }\n\n this.scrollToIndex_internal(\n index,\n alignToBeginning,\n additionalOffset,\n 0,\n retryIfNeeded,\n );\n };\n\n this.scrollToIndex_internal(\n index,\n alignToBeginning,\n additionalOffset,\n animationMilliseconds,\n retryIfNeeded,\n );\n }\n\n protected scrollToIndex_internal(\n index: number,\n alignToBeginning: boolean = true,\n additionalOffset: number = 0,\n animationMilliseconds: number = undefined,\n animationCompletedCallback: () => void = undefined,\n ): void {\n animationMilliseconds =\n animationMilliseconds === undefined\n ? this.scrollAnimationTime\n : animationMilliseconds;\n\n let dimensions = this.calculateDimensions();\n let scroll = this.calculatePadding(index, dimensions) + additionalOffset;\n if (!alignToBeginning) {\n scroll -= dimensions.wrapGroupsPerPage * dimensions[this._childScrollDim];\n }\n\n this.scrollToPosition(\n scroll,\n animationMilliseconds,\n animationCompletedCallback,\n );\n }\n\n public scrollToPosition(\n scrollPosition: number,\n animationMilliseconds: number = undefined,\n animationCompletedCallback: () => void = undefined,\n ): void {\n scrollPosition += this.getElementsOffset();\n\n animationMilliseconds =\n animationMilliseconds === undefined\n ? this.scrollAnimationTime\n : animationMilliseconds;\n\n let scrollElement = this.getScrollElement();\n\n let animationRequest: number;\n\n if (this.currentTween) {\n this.currentTween.stop();\n this.currentTween = undefined;\n }\n\n if (!animationMilliseconds) {\n this.renderer.setProperty(\n scrollElement,\n this._scrollType,\n scrollPosition,\n );\n this.refresh_internal(false, animationCompletedCallback);\n return;\n }\n\n const tweenConfigObj = { scrollPosition: scrollElement[this._scrollType] };\n\n let newTween = new tween.Tween(tweenConfigObj)\n .to({ scrollPosition }, animationMilliseconds)\n .easing(tween.Easing.Quadratic.Out)\n .onUpdate((data) => {\n if (isNaN(data.scrollPosition)) {\n return;\n }\n this.renderer.setProperty(\n scrollElement,\n this._scrollType,\n data.scrollPosition,\n );\n this.refresh_internal(false);\n })\n .onStop(() => {\n cancelAnimationFrame(animationRequest);\n })\n .start();\n\n const animate = (time?: number) => {\n if (!newTween['isPlaying']()) {\n return;\n }\n\n newTween.update(time);\n if (tweenConfigObj.scrollPosition === scrollPosition) {\n this.refresh_internal(false, animationCompletedCallback);\n return;\n }\n\n this.zone.runOutsideAngular(() => {\n animationRequest = requestAnimationFrame(animate);\n });\n };\n\n animate();\n this.currentTween = newTween;\n }\n\n protected isAngularUniversalSSR: boolean;\n\n constructor(\n protected readonly element: ElementRef,\n protected readonly renderer: Renderer2,\n protected readonly zone: NgZone,\n protected changeDetectorRef: ChangeDetectorRef,\n @Inject(PLATFORM_ID) platformId: Object,\n @Optional()\n @Inject('virtual-scroller-default-options')\n options: VirtualScrollerDefaultOptions,\n ) {\n this.isAngularUniversalSSR = isPlatformServer(platformId);\n\n this.scrollThrottlingTime = options.scrollThrottlingTime;\n this.scrollDebounceTime = options.scrollDebounceTime;\n this.scrollAnimationTime = options.scrollAnimationTime;\n this.scrollbarWidth = options.scrollbarWidth;\n this.scrollbarHeight = options.scrollbarHeight;\n this.checkResizeInterval = options.checkResizeInterval;\n this.resizeBypassRefreshThreshold = options.resizeBypassRefreshThreshold;\n this.modifyOverflowStyleOfParentScroll =\n options.modifyOverflowStyleOfParentScroll;\n this.stripedTable = options.stripedTable;\n\n this.horizontal = false;\n this.resetWrapGroupDimensions();\n }\n\n protected getElementSize(element: HTMLElement): ClientRect {\n let result = element.getBoundingClientRect();\n let styles = getComputedStyle(element);\n let marginTop = parseInt(styles['margin-top'], 10) || 0;\n let marginBottom = parseInt(styles['margin-bottom'], 10) || 0;\n let marginLeft = parseInt(styles['margin-left'], 10) || 0;\n let marginRight = parseInt(styles['margin-right'], 10) || 0;\n\n return {\n top: result.top + marginTop,\n bottom: result.bottom + marginBottom,\n left: result.left + marginLeft,\n right: result.right + marginRight,\n width: result.width + marginLeft + marginRight,\n height: result.height + marginTop + marginBottom,\n y: result.top + marginTop,\n x: result.left + marginLeft,\n toJSON(): any {\n result.toJSON();\n },\n };\n }\n\n protected previousScrollBoundingRect: ClientRect;\n protected checkScrollElementResized(): void {\n let boundingRect = this.getElementSize(this.getScrollElement());\n\n let sizeChanged: boolean;\n if (!this.previousScrollBoundingRect) {\n sizeChanged = true;\n } else {\n let widthChange = Math.abs(\n boundingRect.width - this.previousScrollBoundingRect.width,\n );\n let heightChange = Math.abs(\n boundingRect.height - this.previousScrollBoundingRect.height,\n );\n sizeChanged =\n widthChange > this.resizeBypassRefreshThreshold ||\n heightChange > this.resizeBypassRefreshThreshold;\n }\n\n if (sizeChanged) {\n this.previousScrollBoundingRect = boundingRect;\n if (boundingRect.width > 0 && boundingRect.height > 0) {\n this.refresh_internal(false);\n }\n }\n }\n\n protected _invisiblePaddingProperty;\n protected _offsetType;\n protected _scrollType;\n protected _pageOffsetType;\n protected _childScrollDim;\n protected _translateDir;\n protected _marginDir;\n protected updateDirection(): void {\n if (this.horizontal) {\n this._invisiblePaddingProperty = 'width';\n this._offsetType = 'offsetLeft';\n this._pageOffsetType = 'pageXOffset';\n this._childScrollDim = 'childWidth';\n this._marginDir = 'margin-left';\n this._translateDir = 'translateX';\n this._scrollType = 'scrollLeft';\n } else {\n this._invisiblePaddingProperty = 'height';\n this._offsetType = 'offsetTop';\n this._pageOffsetType = 'pageYOffset';\n this._childScrollDim = 'childHeight';\n this._marginDir = 'margin-top';\n this._translateDir = 'translateY';\n this._scrollType = 'scrollTop';\n }\n }\n\n protected debounce(func: Function, wait: number): Function {\n const throttled = this.throttleTrailing(func, wait);\n const result = function () {\n throttled['cancel']();\n throttled.apply(this, arguments);\n };\n result['cancel'] = function () {\n throttled['cancel']();\n };\n\n return result;\n }\n\n protected throttleTrailing(func: Function, wait: number): Function {\n let timeout = undefined;\n let _arguments = arguments;\n const result = function () {\n const _this = this;\n _arguments = arguments;\n\n if (timeout) {\n return;\n }\n\n if (wait <= 0) {\n func.apply(_this, _arguments);\n } else {\n timeout = setTimeout(function () {\n timeout = undefined;\n func.apply(_this, _arguments);\n }, wait);\n }\n };\n result['cancel'] = function () {\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n };\n\n return result;\n }\n\n protected calculatedScrollbarWidth: number = 0;\n protected calculatedScrollbarHeight: number = 0;\n\n protected padding: number = 0;\n protected previousViewPort: IViewport = <any>{};\n protected currentTween: any;\n protected cachedItemsLength: number;\n\n protected disposeScrollHandler: () => void | undefined;\n protected disposeResizeHandler: () => void | undefined;\n\n protected refresh_internal(\n itemsArrayModified: boolean,\n refreshCompletedCallback: () => void = undefined,\n maxRunTimes: number = 2,\n ): void {\n //note: maxRunTimes is to force it to keep recalculating if the previous iteration caused a re-render (different sliced items in viewport or scrollPosition changed).\n //The default of 2x max will probably be accurate enough without causing too large a performance bottleneck\n //The code would typically quit out on the 2nd iteration anyways. The main time it'd think more than 2 runs would be necessary would be for vastly different sized child items or if this is the 1st time the items array was initialized.\n //Without maxRunTimes, If the user is actively scrolling this code would become an infinite loop until they stopped scrolling. This would be okay, except each scroll event would start an additional infinte loop. We want to short-circuit it to prevent this.\n\n if (\n itemsArrayModified &&\n this.previousViewPort &&\n this.previousViewPort.scrollStartPosition > 0\n ) {\n //if items were prepended, scroll forward to keep same items visible\n let oldViewPort = this.previousViewPort;\n let oldViewPortItems = this.viewPortItems;\n\n let oldRefreshCompletedCallback = refreshCompletedCallback;\n refreshCompletedCallback = () => {\n let scrollLengthDelta =\n this.previousViewPort.scrollLength - oldViewPort.scrollLength;\n if (scrollLengthDelta > 0 && this.viewPortItems) {\n let oldStartItem = oldViewPortItems[0];\n let oldStartItemIndex = this.items.findIndex((x) =>\n this.compareItems(oldStartItem, x),\n );\n if (oldStartItemIndex > this.previousViewPort.startIndexWithBuffer) {\n let itemOrderChanged = false;\n for (let i = 1; i < this.viewPortItems.length; ++i) {\n if (\n !this.compareItems(\n this.items[oldStartItemIndex + i],\n oldViewPortItems[i],\n )\n ) {\n itemOrderChanged = true;\n break;\n }\n }\n\n if (!itemOrderChanged) {\n this.scrollToPosition(\n this.previousViewPort.scrollStartPosition + scrollLengthDelta,\n 0,\n oldRefreshCompletedCallback,\n );\n return;\n }\n }\n }\n\n if (oldRefreshCompletedCallback) {\n oldRefreshCompletedCallback();\n }\n };\n }\n\n this.zone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n if (itemsArrayModified) {\n this.resetWrapGroupDimensions();\n }\n let viewport = this.calculateViewport();\n\n let startChanged =\n itemsArrayModified ||\n viewport.startIndex !== this.previousViewPort.startIndex;\n let endChanged =\n itemsArrayModified ||\n viewport.endIndex !== this.previousViewPort.endIndex;\n let scrollLengthChanged =\n viewport.scrollLength !== this.previousViewPort.scrollLength;\n let paddingChanged = viewport.padding !== this.previousViewPort.padding;\n let scrollPositionChanged =\n viewport.scrollStartPosition !==\n this.previousViewPort.scrollStartPosition ||\n viewport.scrollEndPosition !==\n this.previousViewPort.scrollEndPosition ||\n viewport.maxScrollPosition !==\n this.previousViewPort.maxScrollPosition;\n\n this.previousViewPort = viewport;\n\n if (scrollLengthChanged) {\n this.renderer.setStyle(\n this.invisiblePaddingElementRef.nativeElement,\n this._invisiblePaddingProperty,\n `${viewport.scrollLength}px`,\n );\n }\n\n if (paddingChanged) {\n if (this.useMarginInsteadOfTranslate) {\n this.renderer.setStyle(\n this.contentElementRef.nativeElement,\n this._marginDir,\n `${viewport.padding}px`,\n );\n } else {\n this.renderer.setStyle(\n this.contentElementRef.nativeElement,\n 'transform',\n `${this._translateDir}(${viewport.padding}px)`,\n );\n this.renderer.setStyle(\n this.contentElementRef.nativeElement,\n 'webkitTransform',\n `${this._translateDir}(${viewport.padding}px)`,\n );\n }\n }\n\n if (this.headerElementRef) {\n let scrollPosition = this.getScrollElement()[this._scrollType];\n let containerOffset = this.getElementsOffset();\n let offset = Math.max(\n scrollPosition -\n viewport.padding -\n containerOffset +\n this.headerElementRef.nativeElement.clientHeight,\n 0,\n );\n this.renderer.setStyle(\n this.headerElementRef.nativeElement,\n 'transform',\n `${this._translateDir}(${offset}px)`,\n );\n this.renderer.setStyle(\n this.headerElementRef.nativeElement,\n 'webkitTransform',\n `${this._translateDir}(${offset}px)`,\n );\n }\n\n const changeEventArg: IPageInfo =\n startChanged || endChanged\n ? {\n startIndex: viewport.startIndex,\n endIndex: viewport.endIndex,\n scrollStartPosition: viewport.scrollStartPosition,\n scrollEndPosition: viewport.scrollEndPosition,\n startIndexWithBuffer: viewport.startIndexWithBuffer,\n endIndexWithBuffer: viewport.endIndexWithBuffer,\n maxScrollPosition: viewport.maxScrollPosition,\n }\n : undefined;\n\n if (startChanged || endChanged || scrollPositionChanged) {\n const handleChanged = () => {\n // update the scroll list to trigger re-render of components in viewport\n this.viewPortItems =\n viewport.startIndexWithBuffer >= 0 &&\n viewport.endIndexWithBuffer >= 0\n ? this.items.slice(\n viewport.startIndexWithBuffer,\n viewport.endIndexWithBuffer + 1,\n )\n : [];\n this.vsUpdate.emit(this.viewPortItems);\n\n if (startChanged) {\n this.vsStart.emit(changeEventArg);\n }\n\n if (endChanged) {\n this.vsEnd.emit(changeEventArg);\n }\n\n if (startChanged || endChanged) {\n this.changeDetectorRef.markForCheck();\n this.vsChange.emit(changeEventArg);\n }\n\n if (maxRunTimes > 0) {\n this.refresh_internal(\n false,\n refreshCompletedCallback,\n maxRunTimes - 1,\n );\n return;\n }\n\n if (refreshCompletedCallback) {\n refreshCompletedCallback();\n }\n };\n\n if (this.executeRefreshOutsideAngularZone) {\n handleChanged();\n } else {\n this.zone.run(handleChanged);\n }\n } else {\n if (maxRunTimes > 0 && (scrollLengthChanged || paddingChanged)) {\n this.refresh_internal(\n false,\n refreshCompletedCallback,\n maxRunTimes - 1,\n );\n return;\n }\n\n if (refreshCompletedCallback) {\n refreshCompletedCallback();\n }\n }\n });\n });\n }\n\n protected getScrollElement(): HTMLElement {\n return this.parentScroll instanceof Window\n ? document.scrollingElement || document.documentElement || document.body\n : this.parentScroll || this.element.nativeElement;\n }\n\n protected addScrollEventHandlers(): void {\n if (this.isAngularUniversalSSR) {\n return;\n }\n\n let scrollElement = this.getScrollElement();\n\n this.removeScrollEventHandlers();\n\n this.zone.runOutsideAngular(() => {\n if (this.parentScroll instanceof Window) {\n this.disposeScrollHandler = this.renderer.listen(\n 'window',\n 'scroll',\n this.onScroll,\n );\n this.disposeResizeHandler = this.renderer.listen(\n 'window',\n 'resize',\n this.onScroll,\n );\n } else {\n this.disposeScrollHandler = this.renderer.listen(\n scrollElement,\n 'scroll',\n this.onScroll,\n );\n if (this._checkResizeInterval > 0) {\n this.checkScrollElementResizedTimer = <any>setInterval(() => {\n this.checkScrollElementResized();\n }, this._checkResizeInterval);\n }\n }\n });\n }\n\n protected removeScrollEventHandlers(): void {\n if (this.checkScrollElementResizedTimer) {\n clearInterval(this.checkScrollElementResizedTimer);\n }\n\n if (this.disposeScrollHandler) {\n this.disposeScrollHandler();\n this.disposeScrollHandler = undefined;\n }\n\n if (this.disposeResizeHandler) {\n this.disposeResizeHandler();\n this.disposeResizeHandler = undefined;\n }\n }\n\n protected getElementsOffset(): number {\n if (this.isAngularUniversalSSR) {\n return 0;\n }\n\n let offset = 0;\n\n if (this.containerElementRef && this.containerElementRef.nativeElement) {\n offset += this.containerElementRef.nativeElement[this._offsetType];\n }\n\n if (this.parentScroll) {\n let scrollElement = this.getScrollElement();\n let elementClientRect = this.getElementSize(this.element.nativeElement);\n let scrollClientRect = this.getElementSize(scrollElement);\n if (this.horizontal) {\n offset += elementClientRect.left - scrollClientRect.left;\n } else {\n offset += elementClientRect.top - scrollClientRect.top;\n }\n\n if (!(this.parentScroll instanceof Window)) {\n offset += scrollElement[this._scrollType];\n }\n }\n\n return offset;\n }\n\n protected countItemsPerWrapGroup(): number {\n if (this.isAngularUniversalSSR) {\n return Math.round(\n this.horizontal\n ? this.ssrViewportHeight / this.ssrChildHeight\n : this.ssrViewportWidth / this.ssrChildWidth,\n );\n }\n\n let propertyName = this.horizontal ? 'offsetLeft' : 'offsetTop';\n let children = (\n (this.containerElementRef && this.containerElementRef.nativeElement) ||\n this.contentElementRef.nativeElement\n ).children;\n\n let childrenLength = children ? children.length : 0;\n if (childrenLength === 0) {\n return 1;\n }\n\n let firstOffset = children[0][propertyName];\n let result = 1;\n while (\n result < childrenLength &&\n firstOffset === children[result][propertyName]\n ) {\n ++result;\n }\n\n return result;\n }\n\n protected getScrollStartPosition(): number {\n let windowScrollValue = undefined;\n if (this.parentScroll instanceof Window) {\n windowScrollValue = window[this._pageOffsetType];\n }\n\n return windowScrollValue || this.getScrollElement()[this._scrollType] || 0;\n }\n\n protected minMeasuredChildWidth: number;\n protected minMeasuredChildHeight: number;\n\n protected wrapGroupDimensions: WrapGroupDimensions;\n\n protected resetWrapGroupDimensions(): void {\n const oldWrapGroupDimensions = this.wrapGroupDimensions;\n this.invalidateAllCachedMeasurements();\n\n if (\n !this.enableUnequalChildrenSizes ||\n !oldWrapGroupDimensions ||\n oldWrapGroupDimensions.numberOfKnownWrapGroupChildSizes === 0\n ) {\n return;\n }\n\n const itemsPerWrapGroup: number = this.countItemsPerWrapGroup();\n for (\n let wrapGroupIndex = 0;\n wrapGroupIndex < oldWrapGroupDimensions.maxChildSizePerWrapGroup.length;\n ++wrapGroupIndex\n ) {\n const oldWrapGroupDimension: WrapGroupDimension =\n oldWrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex];\n if (\n !oldWrapGroupDimension ||\n !oldWrapGroupDimension.items ||\n !oldWrapGroupDimension.items.length\n ) {\n continue;\n }\n\n if (oldWrapGroupDimension.items.length !== itemsPerWrapGroup) {\n return;\n }\n\n let itemsChanged = false;\n let arrayStartIndex = itemsPerWrapGroup * wrapGroupIndex;\n for (let i = 0; i < itemsPerWrapGroup; ++i) {\n if (\n !this.compareItems(\n oldWrapGroupDimension.items[i],\n this.items[arrayStartIndex + i],\n )\n ) {\n itemsChanged = true;\n break;\n }\n }\n\n if (!itemsChanged) {\n ++this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\n this.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths +=\n oldWrapGroupDimension.childWidth || 0;\n this.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights +=\n oldWrapGroupDimension.childHeight || 0;\n this.wrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex] =\n oldWrapGroupDimension;\n }\n }\n }\n\n protected calculateDimensions(): IDimensions {\n let scrollElement = this.getScrollElement();\n\n const maxCalculatedScrollBarSize: number = 25; // Note: Formula to auto-calculate doesn't work for ParentScroll, so we default to this if not set by consuming application\n this.calculatedScrollbarHeight = Math.max(\n Math.min(\n scrollElement.offsetHeight - scrollElement.clientHeight,\n maxCalculatedScrollBarSize,\n ),\n this.calculatedScrollbarHeight,\n );\n this.calculatedScrollbarWidth = Math.max(\n Math.min(\n scrollElement.offsetWidth - scrollElement.clientWidth,\n maxCalculatedScrollBarSize,\n ),\n this.calculatedScrollbarWidth,\n );\n\n let viewportWidth =\n scrollElement.offsetWidth -\n (this.scrollbarWidth ||\n this.calculatedScrollbarWidth ||\n (this.horizontal ? 0 : maxCalculatedScrollBarSize));\n let viewportHeight =\n scrollElement.offsetHeight -\n (this.scrollbarHeight ||\n this.calculatedScrollbarHeight ||\n (this.horizontal ? maxCalculatedScrollBarSize : 0));\n\n let content =\n (this.containerElementRef && this.containerElementRef.nativeElement) ||\n this.contentElementRef.nativeElement;\n\n let itemsPerWrapGroup = this.countItemsPerWrapGroup();\n let wrapGroupsPerPage;\n\n let defaultChildWidth;\n let defaultChildHeight;\n\n if (this.isAngularUniversalSSR) {\n viewportWidth = this.ssrViewportWidth;\n viewportHeight = this.ssrViewportHeight;\n defaultChildWidth = this.ssrChildWidth;\n defaultChildHeight = this.ssrChildHeight;\n let itemsPerRow = Math.max(\n Math.ceil(viewportWidth / defaultChildWidth),\n 1,\n );\n let itemsPerCol = Math.max(\n Math.ceil(viewportHeight / defaultChildHeight),\n 1,\n );\n wrapGroupsPerPage = this.horizontal ? itemsPerRow : itemsPerCol;\n } else if (!this.enableUnequalChildrenSizes) {\n if (content.children.length > 0) {\n if (!this.childWidth || !this.childHeight) {\n if (!this.minMeasuredChildWidth && viewportWidth > 0) {\n this.minMeasuredChildWidth = viewportWidth;\n }\n if (!this.minMeasuredChildHeight && viewportHeight > 0) {\n this.minMeasuredChildHeight = viewportHeight;\n }\n }\n\n let child = content.children[0];\n let clientRect = this.getElementSize(child);\n this.minMeasuredChildWidth = Math.min(\n this.minMeasuredChildWidth,\n clientRect.width,\n );\n this.minMeasuredChildHeight = Math.min(\n this.minMeasuredChildHeight,\n clientRect.height,\n );\n }\n\n defaultChildWidth =\n this.childWidth || this.minMeasuredChildWidth || viewportWidth;\n defaultChildHeight =\n this.childHeight || this.minMeasuredChildHeight || viewportHeight;\n let itemsPerRow = Math.max(\n Math.ceil(viewportWidth / defaultChildWidth),\n 1,\n );\n let itemsPerCol = Math.max(\n Math.ceil(viewportHeight / defaultChildHeight),\n 1,\n );\n wrapGroupsPerPage = this.horizontal ? itemsPerRow : itemsPerCol;\n } else {\n let scrollOffset =\n scrollElement[this._scrollType] -\n (this.previousViewPort ? this.previousViewPort.padding : 0);\n\n let arrayStartIndex = this.previousViewPort.startIndexWithBuffer || 0;\n let wrapGroupIndex = Math.ceil(arrayStartIndex / itemsPerWrapGroup);\n\n let maxWidthForWrapGroup = 0;\n let maxHeightForWrapGroup = 0;\n let sumOfVisibleMaxWidths = 0;\n let sumOfVisibleMaxHeights = 0;\n wrapGroupsPerPage = 0;\n\n for (let i = 0; i < content.children.length; ++i) {\n ++arrayStartIndex;\n let child = content.children[i];\n let clientRect = this.getElementSize(child);\n\n maxWidthForWrapGroup = Math.max(maxWidthForWrapGroup, clientRect.width);\n maxHeightForWrapGroup = Math.max(\n maxHeightForWrapGroup,\n clientRect.height,\n );\n\n if (arrayStartIndex % itemsPerWrapGroup === 0) {\n let oldValue =\n this.wrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex];\n if (oldValue) {\n --this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\n this.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths -=\n oldValue.childWidth || 0;\n this.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights -=\n oldValue.childHeight || 0;\n }\n\n ++this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\n const items = this.items.slice(\n arrayStartIndex - itemsPerWrapGroup,\n arrayStartIndex,\n );\n this.wrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex] = {\n childWidth: maxWidthForWrapGroup,\n childHeight: maxHeightForWrapGroup,\n items: items,\n };\n this.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths +=\n maxWidthForWrapGroup;\n this.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights +=\n maxHeightForWrapGroup;\n\n if (this.horizontal) {\n let maxVisibleWidthForWrapGroup = Math.min(\n maxWidthForWrapGroup,\n Math.max(viewportWidth - sumOfVisibleMaxWidths, 0),\n );\n if (scrollOffset > 0) {\n let scrollOffsetToRemove = Math.min(\n scrollOffset,\n maxVisibleWidthForWrapGroup,\n );\n maxVisibleWidthForWrapGroup -= scrollOffsetToRemove;\n scrollOffset -= scrollOffsetToRemove;\n }\n\n sumOfVisibleMaxWidths += maxVisibleWidthForWrapGroup;\n if (\n maxVisibleWidthForWrapGroup > 0 &&\n viewportWidth >= sumOfVisibleMaxWidths\n ) {\n ++wrapGroupsPerPage;\n }\n } else {\n let maxVisibleHeightForWrapGroup = Math.min(\n maxHeightForWrapGroup,\n Math.max(viewportHeight - sumOfVisibleMaxHeights, 0),\n );\n if (scrollOffset > 0) {\n let scrollOffsetToRemove = Math.min(\n scrollOffset,\n maxVisibleHeightForWrapGroup,\n );\n maxVisibleHeightForWrapGroup -= scrollOffsetToRemove;\n scrollOffset -= scrollOffsetToRemove;\n }\n\n sumOfVisibleMaxHeights += maxVisibleHeightForWrapGroup;\n if (\n maxVisibleHeightForWrapGroup > 0 &&\n viewportHeight >= sumOfVisibleMaxHeights\n ) {\n ++wrapGroupsPerPage;\n }\n }\n\n ++wrapGroupIndex;\n\n maxWidthForWrapGroup = 0;\n maxHeightForWrapGroup = 0;\n }\n }\n\n let averageChildWidth =\n this.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths /\n this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\n let averageChildHeight =\n this.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights /\n this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\n defaultChildWidth = this.childWidth || averageChildWidth || viewportWidth;\n defaultChildHeight =\n this.childHeight || averageChildHeight || viewportHeight;\n\n if (this.horizontal) {\n if (viewportWidth > sumOfVisibleMaxWidths) {\n wrapGroupsPerPage += Math.ceil(\n (viewportWidth - sumOfVisibleMaxWidths) / defaultChildWidth,\n );\n }\n } else {\n if (viewportHeight > sumOfVisibleMaxHeights) {\n wrapGroupsPerPage += Math.ceil(\n (viewportHeight - sumOfVisibleMaxHeights) / defaultChildHeight,\n );\n }\n }\n }\n\n let itemCount = this.items.length;\n let itemsPerPage = itemsPerWrapGroup * wrapGroupsPerPage;\n let pageCount_fractional = itemCount / itemsPerPage;\n let numberOfWrapGroups = Math.ceil(itemCount / itemsPerWrapGroup);\n\n let scrollLength = 0;\n\n let defaultScrollLengthPerWrapGroup = this.horizontal\n ? defaultChildWidth\n : defaultChildHeight;\n if (this.enableUnequalChildrenSizes) {\n let numUnknownChildSizes = 0;\n for (let i = 0; i < numberOfWrapGroups; ++i) {\n let childSize =\n this.wrapGroupDimensions.maxChildSizePerWrapGroup[i] &&\n this.wrapGroupDimensions.maxChildSizePerWrapGroup[i][\n this._childScrollDim\n ];\n if (childSize) {\n scrollLength += childSize;\n } else {\n ++numUnknownChildSizes;\n }\n }\n\n scrollLength += Math.round(\n numUnknownChildSizes * defaultScrollLengthPerWrapGroup,\n );\n } else {\n scrollLength = numberOfWrapGroups * defaultScrollLengthPerWrapGroup;\n }\n\n if (this.headerElementRef) {\n scrollLength += this.headerElementRef.nativeElement.clientHeight;\n }\n\n let viewportLength = this.horizontal ? viewportWidth : viewportHeight;\n let maxScrollPosition = Math.max(scrollLength - viewportLength, 0);\n\n return {\n itemCount: itemCount,\n itemsPerWrapGroup: itemsPerWrapGroup,\n wrapGroupsPerPage: wrapGroupsPerPage,\n itemsPerPage: itemsPerPage,\n pageCount_fractional: pageCount_fractional,\n childWidth: defaultChildWidth,\n childHeight: defaultChildHeight,\n scrollLength: scrollLength,\n viewportLength: viewportLength,\n maxScrollPosition: maxScrollPosition,\n };\n }\n\n protected cachedPageSize: number = 0;\n protected previousScrollNumberElements: number = 0;\n\n protected calculatePadding(\n arrayStartIndexWithBuffer: number,\n dimensions: IDimensions,\n ): number {\n if (dimensions.itemCount === 0) {\n return 0;\n }\n\n let defaultScrollLengthPerWrapGroup = dimensions[this._childScrollDim];\n let startingWrapGroupIndex =\n Math.floor(arrayStartIndexWithBuffer / dimensions.itemsPerWrapGroup) || 0;\n\n if (!this.enableUnequalChildrenSizes) {\n return defaultScrollLengthPerWrapGroup * startingWrapGroupIndex;\n }\n\n let numUnknownChildSizes = 0;\n let result = 0;\n for (let i = 0; i < startingWrapGroupIndex; ++i) {\n let childSize =\n this.wrapGroupDimensions.maxChildSizePerWrapGroup[i] &&\n this.wrapGroupDimensions.maxChildSizePerWrapGroup[i][\n this._childScrollDim\n ];\n if (childSize) {\n result += childSize;\n } else {\n ++numUnknownChildSizes;\n }\n }\n result += Math.round(\n numUnknownChildSizes * defaultScrollLengthPerWrapGroup,\n );\n\n return result;\n }\n\n protected calculatePageInfo(\n scrollPosition: number,\n dimensions: IDimensions,\n ): IPageInfo {\n let scrollPercentage = 0;\n if (this.enableUnequalChildrenSizes) {\n const numberOfWrapGroups = Math.ceil(\n dimensions.itemCount / dimensions.itemsPerWrapGroup,\n );\n let totalScrolledLength = 0;\n let defaultScrollLengthPerWrapGroup = dimensions[this._childScrollDim];\n for (let i = 0; i < numberOfWrapGroups; ++i) {\n let childSize =\n this.wrapGroupDimensions.maxChildSizePerWrapGroup[i] &&\n this.wrapGroupDimensions.maxChildSizePerWrapGroup[i][\n this._childScrollDim\n ];\n if (childSize) {\n totalScrolledLength += childSize;\n } else {\n totalScrolledLength += defaultScrollLengthPerWrapGroup;\n }\n\n if (scrollPosition < totalScrolledLength) {\n scrollPercentage = i / numberOfWrapGroups;\n break;\n }\n }\n } else {\n scrollPercentage = scrollPosition / dimensions.scrollLength;\n }\n\n let startingArrayIndex_fractional =\n Math.min(\n Math.max(scrollPercentage * dimensions.pageCount_fractional, 0),\n dimensions.pageCount_fractional,\n ) * dimensions.itemsPerPage;\n\n let maxStart = dimensions.itemCount - dimensions.itemsPerPage - 1;\n let arrayStartIndex = Math.min(\n Math.floor(startingArrayIndex_fractional),\n maxStart,\n );\n arrayStartIndex -= arrayStartIndex % dimensions.itemsPerWrapGroup; // round down to start of wrapGroup\n\n if (this.stripedTable) {\n let bufferBoundary = 2 * dimensions.itemsPerWrapGroup;\n if (arrayStartIndex % bufferBoundary !== 0) {\n arrayStartIndex = Math.max(\n arrayStartIndex - (arrayStartIndex % bufferBoundary),\n 0,\n );\n }\n }\n\n let arrayEndIndex =\n Math.ceil(startingArrayIndex_fractional) + dimensions.itemsPerPage - 1;\n let endIndexWithinWrapGroup =\n (arrayEndIndex + 1) % dimensions.itemsPerWrapGroup;\n if (endIndexWithinWrapGroup > 0) {\n arrayEndIndex += dimensions.itemsPerWrapGroup - endIndexWithinWrapGroup; // round up to end of wrapGroup\n }\n\n if (isNaN(arrayStartIndex)) {\n arrayStartIndex = 0;\n }\n if (isNaN(arrayEndIndex)) {\n arrayEndIndex = 0;\n }\n\n arrayStartIndex = Math.min(\n Math.max(arrayStartIndex, 0),\n dimensions.itemCount - 1,\n );\n arrayEndIndex = Math.min(\n Math.max(arrayEndIndex, 0),\n dimensions.itemCount - 1,\n );\n\n let bufferSize = this.bufferAmount * dimensions.itemsPerWrapGroup;\n let startIndexWithBuffer = Math.min(\n Math.max(arrayStartIndex - bufferSize, 0),\n dimensions.itemCount - 1,\n );\n let endIndexWithBuffer = Math.min(\n Math.max(arrayEndIndex + bufferSize, 0),\n dimensions.itemCount - 1,\n );\n\n return {\n startIndex: arrayStartIndex,\n endIndex: arrayEndIndex,\n startIndexWithBuffer: startIndexWithBuffer,\n endIndexWithBuffer: endIndexWithBuffer,\n scrollStartPosition: scrollPosition,\n scrollEndPosition: scrollPosition + dimensions.viewportLength,\n maxScrollPosition: dimensions.maxScrollPosition,\n };\n }\n\n protected calculateViewport(): IViewport {\n let dimensions = this.calculateDimensions();\n let offset = this.getElementsOffset();\n\n let scrollStartPosition = this.getScrollStartPosition();\n if (\n scrollStartPosition > dimensions.scrollLength + offset &&\n !(this.parentScroll instanceof Window)\n ) {\n scrollStartPosition = dimensions.scrollLength;\n } else {\n scrollStartPosition -= offset;\n }\n scrollStartPosition = Math.max(0, scrollStartPosition);\n\n let pageInfo = this.calculatePageInfo(scrollStartPosition, dimensions);\n let newPadding = this.calculatePadding(\n pageInfo.startIndexWithBuffer,\n dimensions,\n );\n let newScrollLength = dimensions.scrollLength;\n\n return {\n startIndex: pageInfo.startIndex,\n endIndex: pageInfo.endIndex,\n startIndexWithBuffer: pageInfo.startIndexWithBuffer,\n endIndexWithBuffer: pageInfo.endIndexWithBuffer,\n padding: Math.round(newPadding),\n scrollLength: Math.round(newScrollLength),\n scrollStartPosition: pageInfo.scrollStartPosition,\n scrollEndPosition: pageInfo.scrollEndPosition,\n maxScrollPosition: pageInfo.maxScrollPosition,\n };\n }\n}\n\n@NgModule({\n exports: [VirtualScrollerComponent],\n declarations: [VirtualScrollerComponent],\n imports: [CommonModule],\n providers: [\n {\n provide: 'virtual-scroller-default-options',\n useFactory: VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY,\n },\n ],\n})\nexport class VirtualScrollerModule {}\n","import {\n Component,\n OnInit,\n HostListener,\n OnDestroy,\n NgModule,\n SimpleChanges,\n OnChanges,\n ChangeDetectorRef,\n AfterViewChecked,\n ViewEncapsulation,\n ContentChild,\n ViewChild,\n forwardRef,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n} from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n NG_VALIDATORS,\n Validator,\n UntypedFormControl,\n} from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MyException } from './multiselect.model';\nimport { DropdownSettings } from './multiselect.interface';\nimport { ClickOutsideDirective, ScrollDirective } from './clickOutside';\nimport { ListFilterPipe } from './list-filter';\nimport { Item, Badge, Search, TemplateRenderer, CIcon } from './menu-item';\nimport { DataService } from './multiselect.service';\nimport { Subscription, Subject } from 'rxjs';\nimport {\n VirtualScrollerModule,\n VirtualScrollerComponent,\n} from './virtual-scroll/virtual-scroll';\nimport { debounceTime, distinctUntilChanged, tap } from 'rxjs/operators';\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@Component({\n selector: 'angular2-multiselect',\n templateUrl: './multiselect.component.html',\n host: { '[class]': 'defaultSettings.classes' },\n styleUrls: ['./multiselect.component.scss'],\n providers: [DROPDOWN_CONTROL_VALUE_ACCESSOR, DROPDOWN_CONTROL_VALIDATION],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AngularMultiSelect\n implements\n OnInit,\n ControlValueAccessor,\n OnChanges,\n Validator,\n AfterViewChecked,\n OnDestroy\n{\n @Input()\n data: Array<any>;\n\n @Input()\n settings: DropdownSettings;\n\n @Input()\n loading: boolean;\n\n @Output('onSelect')\n onSelect: EventEmitter<any> = new EventEmitter<any>();\n\n @Output('onDeSelect')\n onDeSelect: EventEmitter<any> = new EventEmitter<any>();\n\n @Output('onSelectAll')\n onSelectAll: EventEmitter<Array<any>> = new EventEmitter<Array<any>>();\n\n @Output('onDeSelectAll')\n onDeSelectAll: EventEmitter<Array<any>> = new EventEmitter<Array<any>>();\n\n @Output('onOpen')\n onOpen: EventEmitter<any> = new EventEmitter<any>();\n\n @Output('onClose')\n onClose: EventEmitter<any> = new EventEmitter<any>();\n\n @Output('onScrollToEnd')\n onScrollToEnd: EventEmitter<any> = new EventEmitter<any>();\n\n @Output('onFilterSelectAll')\n onFilterSelectAll: EventEmitter<Array<any>> = new EventEmitter<Array<any>>();\n\n @Output('onFilterDeSelectAll')\n onFilterDeSelectAll: EventEmitter<Array<any>> = new EventEmitter<\n Array<any>\n >();\n\n @Output('onAddFilterNewItem')\n onAddFilterNewItem: EventEmitter<any> = new EventEmitter<any>();\n\n @Output('onGroupSelect')\n onGroupSelect: EventEmitter<any> = new EventEmitter<any>();\n\n @Output('onGroupDeSelect')\n onGroupDeSelect: EventEmitter<any> = new EventEmitter<any>();\n\n @ContentChild(Item, { static: false }) itemTempl: Item;\n @ContentChild(Badge, { static: false }) badgeTempl: Badge;\n @ContentChild(Search, { static: false }) searchTempl: Search;\n\n @ViewChild('searchInput', { static: false }) searchInput: ElementRef;\n @ViewChild('selectedList', { static: false }) selectedListElem: ElementRef;\n @ViewChild('dropdownList', { static: false }) dropdownListElem: ElementRef;\n @ViewChild('cuppaDropdown', { static: false }) cuppaDropdown: ElementRef;\n\n @HostListener('document:keyup.escape', ['$event'])\n onEscapeDown(event: KeyboardEvent) {\n if (this.settings.escapeToClose) {\n this.closeDropdown();\n }\n }\n\n @HostListener('window:scroll', ['$event'])\n onScroll(event: any) {\n if (this.isActive && this.settings.tagToBody) {\n this.closeDropdown();\n /* const elem = this.cuppaDropdown.nativeElement;\n if(this.settings.autoPosition){\n this.dropDownTop = elem.getBoundingClientRect().y + elem.clientHeight + 1;\n }\n this.dropDownLeft = elem.getBoundingClientRect().x; */\n }\n }\n\n virtualdata: any = [];\n searchTerm$ = new Subject<string>();\n\n public selectedItems: Array<any>;\n public isActive: boolean = false;\n public isSelectAll: boolean = false;\n public isFilterSelectAll: boolean = false;\n public isInfiniteFilterSelectAll: boolean = false;\n public groupedData: Array<any>;\n filter: any;\n public chunkArray: any[];\n public scrollTop: any;\n public chunkIndex: any[] = [];\n public cachedItems: any[] = [];\n public groupCachedItems: 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 public selectedListHeight: any;\n public filterLength: any = 0;\n public infiniteFilterLength: any = 0;\n public viewPortItems: any;\n public item: any;\n public dropdownListYOffset: number = 0;\n subscription: Subscription;\n public dropDownWidth: number = 0;\n public dropDownTop: any = '';\n public dropDownBottom: any = 'unset';\n public dropDownLeft: number = 0;\n public id: any = Math.random().toString(36).substring(2);\n defaultSettings: DropdownSettings = {\n singleSelection: false,\n text: 'Select',\n enableCheckAll: true,\n selectAllText: 'Select All',\n unSelectAllText: 'UnSelect All',\n filterSelectAllText: 'Select all filtered results',\n filterUnSelectAllText: 'UnSelect all filtered results',\n enableSearchFilter: false,\n searchBy: [],\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 primaryKey: 'id',\n position: 'bottom',\n autoPosition: true,\n enableFilterSelectAll: true,\n selectGroup: false,\n addNewItemOnFilter: false,\n addNewButtonText: 'Add',\n escapeToClose: true,\n clearAll: true,\n tagToBody: true,\n };\n randomSize: boolean = true;\n public parseError: boolean;\n public filteredList: any = [];\n virtualScroollInit: boolean = false;\n @ViewChild(VirtualScrollerComponent, { static: false })\n private virtualScroller: VirtualScrollerComponent;\n public isDisabledItemPresent = false;\n\n constructor(\n public _elementRef: ElementRef,\n private cdr: ChangeDetectorRef,\n private filterPipe: ListFilterPipe,\n ) {\n this.searchTerm$\n .asObservable()\n .pipe(\n debounceTime(1000),\n distinctUntilChanged(),\n tap((term) => term),\n )\n .subscribe((val) => {\n this.filterInfiniteList(val);\n });\n }\n ngOnInit() {\n this.settings = Object.assign(this.defaultSettings, this.settings);\n\n this.cachedItems = this.cloneArray(this.data);\n if (this.settings.position == 'top') {\n setTimeout(() => {\n this.selectedListHeight = { val: 0 };\n this.selectedListHeight.val =\n this.selectedListElem.nativeElement.clientHeight;\n });\n }\n setTimeout(() => {\n this.calculateDropdownDirection();\n });\n this.virtualScroollInit = false;\n }\n onKeyUp(evt: any) {\n this.searchTerm$.next((<HTMLInputElement>evt.target).value);\n }\n ngOnChanges(changes: SimpleChanges) {\n if (changes.data && !changes.data.firstChange) {\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 this.groupCachedItems = this.cloneArray(this.groupedData);\n }\n this.cachedItems = this.cloneArray(this.data);\n }\n if (changes.settings && !changes.settings.firstChange) {\n this.settings = Object.assign(this.defaultSettings, this.settings);\n }\n if (changes.loading) {\n }\n if (this.settings.lazyLoading && this.virtualScroollInit && changes.data) {\n this.virtualdata = changes.data.currentValue;\n }\n }\n ngDoCheck() {\n if (this.selectedItems) {\n if (\n this.selectedItems.length == 0 ||\n this.data.length == 0 ||\n this.selectedItems.length < this.data.length\n ) {\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 ngAfterViewChecked() {\n if (\n this.selectedListElem.nativeElement.clientHeight &&\n this.settings.position == 'top' &&\n this.selectedListHeight\n ) {\n this.selectedListHeight.val =\n this.selectedListElem.nativeElement.clientHeight;\n this.cdr.detectChanges();\n }\n //this.calculateDropdownDirection();\n }\n onItemClick(item: any, index: number, evt: Event) {\n if (item.disabled) {\n return;\n }\n\n if (this.settings.disabled) {\n return;\n }\n\n let found = this.isSelected(item);\n let limit =\n 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 } else {\n this.addSelected(item);\n this.onSelect.emit(item);\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\n if (this.data.length == this.selectedItems.length) {\n this.isSelectAll = true;\n }\n if (this.settings.groupBy) {\n this.updateGroupInfo(item);\n }\n }\n public validate(c: UntypedFormControl): 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 && value !== '') {\n if (this.settings.singleSelection) {\n if (this.settings.groupBy) {\n this.groupedData = this.transformData(\n this.data,\n this.settings.groupBy,\n );\n this.groupCachedItems = this.cloneArray(this.groupedData);\n this.selectedItems = [value[0]];\n } else {\n try {\n if (value.length > 1) {\n this.selectedItems = [value[0]];\n throw new MyException(404, {\n msg: 'Single Selection Mode, Selected Items cannot have more than one item.',\n });\n } else {\n this.selectedItems = value;\n }\n } catch (e) {\n console.error(e.body.msg);\n }\n }\n } else {\n if (this.settings.limitSelection) {\n this.selectedItems = value.slice(0, this.settings.limitSelection);\n } else {\n this.selectedItems = value;\n }\n if (\n this.selectedItems != null &&\n this.selectedItems.length === this.data.length &&\n this.data.length > 0\n ) {\n this.isSelectAll = true;\n }\n if (this.settings.groupBy) {\n this.groupedData = this.transformData(\n this.data,\n this.settings.groupBy,\n );\n this.groupCachedItems = this.cloneArray(this.groupedData);\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: any) {\n return item[this.settings.primaryKey];\n }\n isSelected(clickedItem: any) {\n if (clickedItem.disabled) {\n return false;\n }\n let found = false;\n this.selectedItems &&\n this.selectedItems.forEach((item) => {\n if (\n clickedItem[this.settings.primaryKey] ===\n item[this.settings.primaryKey]\n ) {\n found = true;\n }\n });\n return found;\n }\n addSelected(item: any) {\n if (item.disabled) {\n return;\n }\n if (this.settings.singleSelection) {\n this.selectedItems = [];\n this.selectedItems.push(item);\n this.closeDropdown();\n } else this.selectedItems = [...this.selectedItems, item];\n this.onChangeCallback(this.selectedItems);\n this.onTouchedCallback(this.selectedItems);\n }\n removeSelected(clickedItem: any) {\n this.selectedItems &&\n this.selectedItems.forEach((item) => {\n if (\n clickedItem[this.settings.primaryKey] ===\n item[this.settings.primaryKey]\n ) {\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;\n }\n this.isActive = !this.isActive;\n if (this.isActive) {\n this.openDropdown();\n } else {\n this.closeDropdown();\n }\n if (this.settings.lazyLoading) {\n this.virtualdata = this.data;\n this.virtualScroollInit = true;\n }\n evt.preventDefault();\n }\n public openDropdown() {\n if (this.settings.disabled) {\n return;\n }\n this.isActive = true;\n this.calculateDropdownDirection();\n if (\n this.settings.searchAutofocus &&\n this.searchInput &&\n this.settings.enableSearchFilter &&\n !this.searchTempl\n ) {\n setTimeout(() => {\n this.searchInput.nativeElement.focus();\n }, 0);\n }\n this.onOpen.emit(true);\n }\n public closeDropdown() {\n if (this.searchInput && this.settings.lazyLoading) {\n this.searchInput.nativeElement.value = '';\n }\n if (this.searchInput) {\n this.searchInput.nativeElement.value = '';\n }\n this.filter = '';\n this.isActive = false;\n this.searchTerm$.next('');\n this.onClose.emit(false);\n }\n public closeDropdownOnClickOut() {\n if (this.isActive) {\n if (this.searchInput && this.settings.lazyLoading) {\n this.searchInput.nativeElement.value = '';\n }\n if (this.searchInput) {\n this.searchInput.nativeElement.value = '';\n }\n this.filter = '';\n this.isActive = false;\n this.clearSearch();\n this.searchTerm$.next('');\n this.onClose.emit(false);\n }\n }\n toggleSelectAll(event) {\n if (!this.isSelectAll) {\n this.selectedItems = [];\n if (this.settings.groupBy) {\n this.groupedData.forEach((obj) => {\n obj.selected = !obj.disabled;\n });\n this.groupCachedItems.forEach((obj) => {\n obj.selected = !obj.disabled;\n });\n }\n // this.selectedItems = this.data.slice();\n this.selectedItems = this.data.filter(\n (individualData) => !individualData.disabled,\n );\n this.isSelectAll = true;\n this.onChangeCallback(this.selectedItems);\n this.onTouchedCallback(this.selectedItems);\n\n this.onSelectAll.emit(this.selectedItems);\n } else {\n if (this.settings.groupBy) {\n this.groupedData.forEach((obj) => {\n obj.selected = false;\n });\n this.groupCachedItems.forEach((obj) => {\n obj.selected = false;\n });\n }\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 setTimeout(() => {\n this.calculateDropdownDirection();\n });\n event.stopPropagation();\n }\n filterGroupedList() {\n if (this.filter == '' || this.filter == null) {\n this.clearSearch();\n return;\n }\n this.groupedData = this.cloneArray(this.groupCachedItems);\n this.groupedData = this.groupedData.filter((obj) => {\n let arr = [];\n if (\n obj[this.settings.labelKey]\n .toLowerCase()\n .indexOf(this.filter.toLowerCase()) > -1\n ) {\n arr = obj.list;\n } else {\n arr = obj.list.filter((t) => {\n return (\n t[this.settings.labelKey]\n .toLowerCase()\n .indexOf(this.filter.toLowerCase()) > -1\n );\n });\n }\n\n obj.list = arr;\n if (\n obj[this.settings.labelKey]\n .toLowerCase()\n .indexOf(this.filter.toLowerCase()) > -1\n ) {\n return arr;\n } else {\n return arr.some((cat) => {\n return (\n cat[this.settings.labelKey]\n .toLowerCase()\n .indexOf(this.filter.toLowerCase()) > -1\n );\n });\n }\n });\n }\n toggleFilterSelectAll() {\n if (!this.isFilterSelectAll) {\n let added = [];\n if (this.settings.groupBy) {\n this.groupedData.forEach((item: any) => {\n item.sele;\n if (item.list) {\n item.list.forEach((el: any) => {\n if (!this.isSelected(el)) {\n this.addSelected(el);\n added.push(el);\n }\n });\n }\n this.updateGroupInfo(item);\n });\n\n this.filteredList.forEach((el: any) => {\n if (!this.isSelected(el) && !el.hasOwnProperty('grpTitle')) {\n this.addSelected(el);\n added.push(el);\n }\n });\n } else {\n this.filteredList.forEach((item: any) => {\n if (!this.isSelected(item)) {\n this.addSelected(item);\n added.push(item);\n }\n });\n }\n\n this.isFilterSelectAll = true;\n this.onFilterSelectAll.emit(added);\n } else {\n let removed = [];\n if (this.settings.groupBy) {\n this.groupedData.forEach((item: any) => {\n if (item.list) {\n item.list.forEach((el: any) => {\n if (this.isSelected(el)) {\n this.removeSelected(el);\n removed.push(el);\n }\n });\n }\n this.updateGroupInfo(item);\n });\n this.filteredList.forEach((el: any) => {\n if (this.isSelected(el)) {\n this.removeSelected(el);\n removed.push(el);\n }\n });\n } else {\n this.filteredList.forEach((item: any) => {\n if (this.isSelected(item)) {\n this.removeSelected(item);\n removed.push(item);\n }\n });\n }\n this.isFilterSelectAll = false;\n this.onFilterDeSelectAll.emit(removed);\n }\n }\n toggleInfiniteFilterSelectAll() {\n if (!this.isInfiniteFilterSelectAll) {\n this.virtualdata.forEach((item: any) => {\n if (!this.isSelected(item)) {\n this.addSelected(item);\n }\n });\n this.isInfiniteFilterSelectAll = true;\n } else {\n this.virtualdata.forEach((item: any) => {\n if (this.isSelected(item)) {\n this.removeSelected(item);\n }\n });\n this.isInfiniteFilterSelectAll = false;\n }\n }\n clearSearch() {\n if (this.settings.groupBy) {\n this.groupedData = [];\n this.groupedData = this.cloneArray(this.groupCachedItems);\n }\n this.filter = '';\n this.isFilterSelectAll = false;\n this.searchTerm$.next('');\n this.data = this.cachedItems;\n }\n onFilterChange(data: any) {\n if ((this.filter && this.filter == '') || data.length == 0) {\n this.isFilterSelectAll = false;\n this.data = this.cachedItems.slice();\n }\n let cnt = 0;\n data.forEach((item: any) => {\n if (!item.hasOwnProperty('grpTitle') && this.isSelected(item)) {\n cnt++;\n }\n });\n\n if (cnt > 0 && this.filterLength == cnt) {\n this.isFilterSelectAll = true;\n } else if (cnt > 0 && this.filterLength != cnt) {\n this.isFilterSelectAll = false;\n }\n this.data = data;\n }\n cloneArray(arr: any) {\n let i, copy;\n\n if (Array.isArray(arr)) {\n return JSON.parse(JSON.stringify(arr));\n } else if (typeof arr === 'object') {\n throw 'Cannot clone array containing an object!';\n } else {\n return arr;\n }\n }\n updateGroupInfo(item: any) {\n if (item.disabled) {\n return;\n }\n let key = this.settings.groupBy;\n this.groupedData.forEach((obj: any) => {\n let cnt = 0;\n if (obj.grpTitle && item[key] == obj[key]) {\n if (obj.list) {\n obj.list.forEach((el: any) => {\n if (this.isSelected(el)) {\n cnt++;\n }\n });\n }\n }\n if (obj.list && cnt === obj.list.length && item[key] == obj[key]) {\n obj.selected = true;\n } else if (obj.list && cnt != obj.list.length && item[key] == obj[key]) {\n obj.selected = false;\n }\n });\n this.groupCachedItems.forEach((obj: any) => {\n let cnt = 0;\n if (obj.grpTitle && item[key] == obj[key]) {\n if (obj.list) {\n obj.list.forEach((el: any) => {\n if (this.isSelected(el)) {\n cnt++;\n }\n });\n }\n }\n if (obj.list && cnt === obj.list.length && item[key] == obj[key]) {\n obj.selected = true;\n } else if (obj.list && cnt != obj.list.length && item[key] == obj[key]) {\n obj.selected = false;\n }\n });\n }\n transformData(arr: Array<any>, field: any): Array<any> {\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((x: any) => {\n let obj: any = {};\n let disabledChildrens = [];\n obj['grpTitle'] = true;\n obj[this.settings.labelKey] = x;\n obj[this.settings.groupBy] = x;\n obj['selected'] = false;\n obj['list'] = [];\n let cnt = 0;\n groupedObj[x].forEach((item: any) => {\n item['list'] = [];\n if (item.disabled) {\n this.isDisabledItemPresent = true;\n disabledChildrens.push(item);\n }\n obj.list.push(item);\n if (this.isSelected(item)) {\n cnt++;\n }\n });\n if (cnt == obj.list.length) {\n obj.selected = true;\n } else {\n obj.selected = false;\n }\n\n // Check if current group item's all childrens are disabled or not\n obj['disabled'] = disabledChildrens.length === groupedObj[x].length;\n tempArr.push(obj);\n // obj.list.forEach((item: any) => {\n // tempArr.push(item);\n // });\n });\n return tempArr;\n }\n public filterInfiniteList(evt: any) {\n let filteredElems: Array<any> = [];\n if (this.settings.groupBy) {\n this.groupedData = this.groupCachedItems.slice();\n } else {\n this.data = this.cachedItems.slice();\n this.virtualdata = this.cachedItems.slice();\n }\n\n if ((evt != null || evt != '') && !this.settings.groupBy) {\n if (this.settings.searchBy.length > 0) {\n for (let t = 0; t < this.settings.searchBy.length; t++) {\n this.virtualdata.filter((el: any) => {\n if (\n el[this.settings.searchBy[t].toString()]\n .toString()\n .toLowerCase()\n .indexOf(evt.toString().toLowerCase()) >= 0\n ) {\n filteredElems.push(el);\n }\n });\n }\n } else {\n this.virtualdata.filter(function (el: any) {\n for (let prop in el) {\n if (\n el[prop]\n .toString()\n .toLowerCase()\n .indexOf(evt.toString().toLowerCase()) >= 0\n ) {\n filteredElems.push(el);\n break;\n }\n }\n });\n }\n this.virtualdata = [];\n this.virtualdata = filteredElems;\n this.infiniteFilterLength = this.virtualdata.length;\n }\n if (evt.toString() != '' && this.settings.groupBy) {\n this.groupedData.filter(function (el: any) {\n if (el.hasOwnProperty('grpTitle')) {\n filteredElems.push(el);\n } else {\n for (let prop in el) {\n if (\n el[prop]\n .toString()\n .toLowerCase()\n .indexOf(evt.toString().toLowerCase()) >= 0\n ) {\n filteredElems.push(el);\n break;\n }\n }\n }\n });\n this.groupedData = [];\n this.groupedData = filteredElems;\n this.infiniteFilterLength = this.groupedData.length;\n } else if (evt.toString() == '' && this.cachedItems.length > 0) {\n this.virtualdata = [];\n this.virtualdata = this.cachedItems;\n this.infiniteFilterLength = 0;\n }\n if (this.virtualScroller) {\n this.virtualScroller.refresh();\n }\n }\n resetInfiniteSearch() {\n this.filter = '';\n this.isInfiniteFilterSelectAll = false;\n this.virtualdata = [];\n this.virtualdata = this.cachedItems;\n this.groupedData = this.groupCachedItems;\n this.searchTerm$.next('');\n this.infiniteFilterLength = 0;\n }\n onScrollEnd(e: any) {\n if (e.endIndex === this.data.length - 1 || e.startIndex === 0) {\n }\n this.onScrollToEnd.emit(e);\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n selectGroup(item: any) {\n if (item.disabled) {\n return;\n }\n if (item.selected) {\n item.selected = false;\n item.list.forEach((obj: any) => {\n this.removeSelected(obj);\n });\n\n this.onGroupDeSelect.emit(item);\n this.updateGroupInfo(item);\n } else {\n item.selected = true;\n item.list.forEach((obj: any) => {\n if (!this.isSelected(obj)) {\n this.addSelected(obj);\n }\n });\n this.onGroupSelect.emit(item);\n this.updateGroupInfo(item);\n }\n }\n addFilterNewItem() {\n this.onAddFilterNewItem.emit(this.filter);\n this.filterPipe.transform(this.data, this.filter, this.settings.searchBy);\n }\n calculateDropdownDirection() {\n let shouldOpenTowardsTop = this.settings.position == 'top';\n const elem = this.cuppaDropdown.nativeElement;\n const dropdownWidth = elem.clientWidth;\n this.dropDownWidth = dropdownWidth;\n this.dropDownLeft = this.settings.tagToBody\n ? elem.getBoundingClientRect().x\n : 'unset';\n if (this.settings.position == 'top' && !this.settings.autoPosition) {\n this.openTowardsTop(true);\n } else if (\n this.settings.position == 'bottom' &&\n !this.settings.autoPosition\n ) {\n this.openTowardsTop(false);\n }\n if (this.settings.autoPosition) {\n const dropdownHeight = this.defaultSettings.maxHeight;\n const viewportHeight = document.documentElement.clientHeight;\n const selectedListBounds =\n this.selectedListElem.nativeElement.getBoundingClientRect();\n\n const spaceOnTop: number = selectedListBounds.top;\n const spaceOnBottom: number = viewportHeight - selectedListBounds.top;\n if (spaceOnBottom < spaceOnTop && dropdownHeight < spaceOnTop) {\n this.openTowardsTop(true);\n } else {\n this.openTowardsTop(false);\n }\n // Keep preference if there is not enough space on either the top or bottom\n /* \t\t\tif (spaceOnTop || spaceOnBottom) {\n if (shouldOpenTowardsTop) {\n shouldOpenTowardsTop = spaceOnTop;\n } else {\n shouldOpenTowardsTop = !spaceOnBottom;\n }\n } */\n }\n }\n openTowardsTop(value: boolean) {\n const elem = this.cuppaDropdown.nativeElement;\n if (value && this.selectedListElem.nativeElement.clientHeight) {\n this.dropdownListYOffset =\n 15 - this.selectedListElem.nativeElement.clientHeight;\n if (this.settings.tagToBody) {\n this.dropDownTop =\n elem.getBoundingClientRect().y -\n this.selectedListElem.nativeElement.clientHeight * 2 -\n 15 -\n this.defaultSettings.maxHeight +\n 'px';\n } else {\n this.dropDownBottom =\n this.selectedListElem.nativeElement.clientHeight + 15 + 'px';\n }\n this.settings.position = 'top';\n } else {\n if (this.settings.tagToBody) {\n this.dropDownTop =\n elem.getBoundingClientRect().y + elem.clientHeight + 1 + 'px';\n } else {\n this.dropDownTop = 'unset';\n this.dropDownBottom = 'unset';\n }\n this.dropdownListYOffset = 0;\n this.settings.position = 'bottom';\n }\n }\n clearSelection(e?: any) {\n if (this.settings.groupBy) {\n this.groupCachedItems.forEach((obj) => {\n obj.selected = false;\n });\n }\n this.clearSearch();\n this.selectedItems = [];\n this.isSelectAll = false;\n this.onChangeCallback(this.selectedItems);\n this.onTouchedCallback(this.selectedItems);\n this.onDeSelectAll.emit(this.selectedItems);\n }\n filteritems(evt: any) {\n this.filteredList = this.filterPipe.transform(\n this.cachedItems,\n evt.target.value,\n this.settings.searchBy,\n );\n if (this.filteredList) {\n let len = 0;\n this.filteredList.forEach((obj: any, i: any) => {\n if (obj.disabled) {\n this.isDisabledItemPresent = true;\n }\n if (!obj.hasOwnProperty('grpTitle')) {\n len++;\n }\n });\n this.filterLength = len;\n }\n this.onFilterChange(this.filteredList);\n }\n}\n\n@NgModule({\n imports: [CommonModule, FormsModule, VirtualScrollerModule],\n declarations: [\n AngularMultiSelect,\n ClickOutsideDirective,\n ScrollDirective,\n ListFilterPipe,\n Item,\n TemplateRenderer,\n Badge,\n Search,\n CIcon,\n ],\n exports: [\n AngularMultiSelect,\n ClickOutsideDirective,\n ScrollDirective,\n ListFilterPipe,\n Item,\n TemplateRenderer,\n Badge,\n Search,\n CIcon,\n ],\n providers: [DataService, ListFilterPipe],\n})\nexport class AngularMultiSelectModule {}\n","<div class=\"cuppa-dropdown\" (clickOutside)=\"closeDropdownOnClickOut()\" [enabled]=\"isActive\" #cuppaDropdown>\n <div class=\"selected-list\" #selectedList>\n <div class=\"c-btn\" (click)=\"toggleDropdown($event)\" [ngClass]=\"{'disabled': settings.disabled}\" [attr.tabindex]=\"0\">\n\n <span *ngIf=\"selectedItems?.length == 0\">{{ settings.text }}</span>\n <span *ngIf=\"settings.singleSelection && !badgeTempl\">\n <span *ngFor=\"let item of selectedItems;trackBy: trackByFn.bind(this);let k = index\">\n {{ item[settings.labelKey] }}\n </span>\n </span>\n <span class=\"c-list\" *ngIf=\"selectedItems?.length > 0 && settings.singleSelection && badgeTempl \">\n <div class=\"c-token\" *ngFor=\"let item of selectedItems;trackBy: trackByFn.bind(this);let k = index\">\n <span *ngIf=\"!badgeTempl\" class=\"c-label\">{{ item[settings.labelKey] }}</span>\n\n <span *ngIf=\"badgeTempl\" class=\"c-label\">\n <c-templateRenderer [data]=\"badgeTempl\" [item]=\"item\"></c-templateRenderer>\n </span>\n <span class=\"c-remove\" (click)=\"onItemClick(item,k,$event);$event.stopPropagation()\">\n <c-icon name=\"remove\"/>\n </span>\n </div>\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.bind(this);let k = index\"\n [hidden]=\"k > settings.badgeShowLimit-1\">\n\n @if (badgeTempl) {\n <span class=\"c-label\"><c-templateRenderer [data]=\"badgeTempl\" [item]=\"item\"></c-templateRenderer></span>\n } @else {\n <span class=\"c-label\">{{ item[settings.labelKey] }}</span>\n\n }\n\n <span class=\"c-remove\" (click)=\"onItemClick(item,k,$event);$event.stopPropagation()\">\n <c-icon [name]=\"'remove'\"></c-icon>\n </span>\n </div>\n </div>\n <span class=\"countplaceholder\"\n *ngIf=\"selectedItems?.length > settings.badgeShowLimit\">+{{ selectedItems?.length - settings.badgeShowLimit }}</span>\n <span class=\"c-remove clear-all\" *ngIf=\"settings.clearAll && selectedItems?.length > 0 && !settings.disabled\"\n (click)=\"clearSelection($event);$event.stopPropagation()\">\n <c-icon [name]=\"'remove'\"></c-icon>\n </span>\n @if (isActive) {\n <span class=\"c-angle-up\"><c-icon [name]=\"'angle-up'\"></c-icon></span>\n } @else {\n <span class=\"c-angle-down\"><c-icon [name]=\"'angle-down'\"></c-icon></span>\n }\n </div>\n </div>\n <div #dropdownList class=\"dropdown-list animated fadeIn\"\n [ngClass]=\"{'tagToBody': settings.tagToBody}\"\n [style.width.px]=\"dropDownWidth\"\n [style.top]=\"dropDownTop\"\n [style.bottom]=\"dropDownBottom\"\n [style.left.px]=\"dropDownLeft\"\n [hidden]=\"!isActive\">\n <div [ngClass]=\"{'arrow-up': settings.position == 'bottom', 'arrow-down': settings.position == 'top'}\"\n class=\"arrow-2\"></div>\n <div [ngClass]=\"{'arrow-up': settings.position == 'bottom', 'arrow-down': settings.position == 'top'}\"></div>\n <div class=\"list-area\" [ngClass]=\"{'single-select-mode': settings.singleSelection }\">\n <div class=\"pure-checkbox select-all\"\n *ngIf=\"settings.enableCheckAll && !settings.singleSelection && !settings.limitSelection && data?.length > 0 && !isDisabledItemPresent\"\n >\n <input *ngIf=\"settings.showCheckbox\" type=\"checkbox\" [checked]=\"isSelectAll\"\n [disabled]=\"settings.limitSelection == selectedItems?.length\"\n [id]=\"id\" (change)=\"toggleSelectAll($event)\"/>\n <label [for]=\"id\">\n <span [hidden]=\"isSelectAll\">{{ settings.selectAllText }}</span>\n <span [hidden]=\"!isSelectAll\">{{ settings.unSelectAllText }}</span>\n </label>\n </div>\n <img class=\"loading-icon\" *ngIf=\"loading\" src=\"assets/img/loading.gif\"/>\n <div class=\"list-filter\" *ngIf=\"settings.enableSearchFilter\">\n <span class=\"c-search\" id=\"searchIcon\">\n <c-icon [name]=\"'search'\"></c-icon>\n </span>\n <span *ngIf=\"!settings.lazyLoading\" [hidden]=\"filter == undefined || filter?.length == 0\" class=\"c-clear\"\n (click)=\"clearSearch()\">\n <c-icon [name]=\"'clear'\"></c-icon>\n </span>\n <span *ngIf=\"settings.lazyLoading\" [hidden]=\"filter == undefined || filter?.length == 0\" class=\"c-clear\"\n (click)=\"resetInfiniteSearch()\">\n <c-icon [name]=\"'clear'\"></c-icon>\n </span>\n\n <input class=\"c-input\" *ngIf=\"settings.groupBy && !settings.lazyLoading && !searchTempl\" #searchInput\n type=\"text\" [placeholder]=\"settings.searchPlaceholderText\"\n [(ngModel)]=\"filter\" (keyup)=\"filterGroupedList()\" aria-labelledby=\"searchIcon\">\n <input class=\"c-input\" *ngIf=\"!settings.groupBy && !settings.lazyLoading && !searchTempl\" #searchInput\n type=\"text\" [placeholder]=\"settings.searchPlaceholderText\"\n [(ngModel)]=\"filter\" (keyup)=\"filteritems($event)\" aria-labelledby=\"searchIcon\">\n <input class=\"c-input\" *ngIf=\"settings.lazyLoading && !searchTempl\" #searchInput type=\"text\"\n [placeholder]=\"settings.searchPlaceholderText\"\n [(ngModel)]=\"filter\" (keyup)=\"onKeyUp($event)\" aria-labelledby=\"searchIcon\">\n <!-- <input class=\"c-input\" *ngIf=\"!settings.lazyLoading && !searchTempl && settings.groupBy\" #searchInput type=\"text\" [placeholder]=\"settings.searchPlaceholderText\"\n [(ngModel)]=\"filter\" (keyup)=\"filterGroupList($event)\">-->\n <c-templateRenderer *ngIf=\"searchTempl\" [data]=\"searchTempl\" [item]=\"item\"></c-templateRenderer>\n </div>\n <div class=\"filter-select-all\"\n *ngIf=\"!settings.lazyLoading && settings.enableFilterSelectAll && !isDisabledItemPresent\">\n <div class=\"pure-checkbox select-all\"\n *ngIf=\"!settings.groupBy && filter?.length > 0 && filterLength > 0 && !settings.singleSelection\"\n (click)=\"toggleFilterSelectAll()\">\n <input type=\"checkbox\" [checked]=\"isFilterSelectAll\"\n [disabled]=\"settings.limitSelection == selectedItems?.length\" aria-labelledby=\"optionName\"\n aria-label=\"option\"/>\n <label>\n <span [hidden]=\"isFilterSelectAll\">{{ settings.filterSelectAllText }}</span>\n <span [hidden]=\"!isFilterSelectAll\">{{ settings.filterUnSelectAllText }}</span>\n </label>\n </div>\n <div class=\"pure-checkbox select-all\"\n *ngIf=\"settings.groupBy && filter?.length > 0 && groupedData?.length > 0 && !settings.singleSelection\"\n (click)=\"toggleFilterSelectAll()\">\n <input type=\"checkbox\" [checked]=\"isFilterSelectAll && filter?.length > 0\"\n [disabled]=\"settings.limitSelection == selectedItems?.length\"\n aria-labelledby=\"option\"/>\n <label>\n <span [hidden]=\"isFilterSelectAll\">{{ settings.filterSelectAllText }}</span>\n <span [hidden]=\"!isFilterSelectAll\">{{ settings.filterUnSelectAllText }}</span>\n </label>\n </div>\n </div>\n <div class=\"filter-select-all\"\n *ngIf=\"settings.lazyLoading && settings.enableFilterSelectAll && !isDisabledItemPresent && !settings.singleSelection\">\n <div class=\"pure-checkbox select-all\" *ngIf=\"filter?.length > 0 && infiniteFilterLength > 0\"\n (click)=\"toggleInfiniteFilterSelectAll()\">\n <input type=\"checkbox\" [checked]=\"isInfiniteFilterSelectAll\"\n [disabled]=\"settings.limitSelection == selectedItems?.length\"\n aria-labelledby=\"option\"/>\n <label>\n <span [hidden]=\"isInfiniteFilterSelectAll\">{{ settings.filterSelectAllText }}</span>\n <span [hidden]=\"!isInfiniteFilterSelectAll\">{{ settings.filterUnSelectAllText }}</span>\n </label>\n </div>\n </div>\n <div class=\"filter-select-all\" *ngIf=\"filter?.length\">\n <div class=\"btn-container\" *ngIf=\"settings.addNewItemOnFilter\">\n <button class=\"c-btn btn-iceblue\" (click)=\"addFilterNewItem()\">{{ settings.addNewButtonText }}</button>\n </div>\n </div>\n\n <div *ngIf=\"!settings.groupBy && !settings.lazyLoading && itemTempl == undefined\"\n [style.maxHeight]=\"settings.maxHeight+'px'\"\n style=\"overflow: auto;\">\n <ul class=\"lazyContainer\">\n <li *ngFor=\"let item of data; let i = index;\" (click)=\"onItemClick(item,i,$event)\"\n class=\"pure-checkbox\" [ngClass]=\"{'selected-item': isSelected(item) == true }\">\n <input *ngIf=\"settings.showCheckbox\" type=\"checkbox\" [checked]=\"isSelected(item)\"\n [disabled]=\"(settings.limitSelection == selectedItems?.length && !isSelected(item)) || item.disabled\"\n aria-labelledby=\"option\"/>\n <label>{{ item[settings.labelKey] }}</label>\n </li>\n </ul>\n </div>\n <!-- lazy loading -->\n <div *ngIf=\"!settings.groupBy && settings.lazyLoading && itemTempl == undefined\"\n [style.maxHeight]=\"settings.maxHeight+'px'\"\n style=\"overflow: auto;\">\n <ul virtualScroller #scroll [enableUnequalChildrenSizes]=\"randomSize\" [items]=\"virtualdata\"\n (vsStart)=\"onScrollEnd($event)\"\n (vsEnd)=\"onScrollEnd($event)\" [ngStyle]=\"{'height': settings.maxHeight+'px'}\" class=\"lazyContainer\">\n <li *ngFor=\"let item of scroll.viewPortItems; let i = index;\" (click)=\"onItemClick(item,i,$event)\"\n class=\"pure-checkbox\"\n [ngClass]=\"{'selected-item': isSelected(item) == true }\">\n <input *ngIf=\"settings.showCheckbox\" type=\"checkbox\" [checked]=\"isSelected(item)\"\n [disabled]=\"(settings.limitSelection == selectedItems?.length && !isSelected(item)) || item.disabled\"\n />\n <label>{{ item[settings.labelKey] }}</label>\n </li>\n </ul>\n </div>\n <!-- custom template -->\n <div *ngIf=\"!settings.groupBy && !settings.lazyLoading && itemTempl != undefined\"\n [style.maxHeight]=\"settings.maxHeight+'px'\"\n style=\"overflow: auto;\">\n <ul class=\"lazyContainer\">\n <li *ngFor=\"let item of data; let i = index;\" (click)=\"onItemClick(item,i,$event)\"\n class=\"pure-checkbox\" [ngClass]=\"{'selected-item': isSelected(item) == true }\">\n <input *ngIf=\"settings.showCheckbox\" type=\"checkbox\" [checked]=\"isSelected(item)\"\n [disabled]=\"(settings.limitSelection == selectedItems?.length && !isSelected(item)) || item.disabled\"\n />\n <label></label>\n <c-templateRenderer [data]=\"itemTempl\" [item]=\"item\"></c-templateRenderer>\n </li>\n </ul>\n </div>\n <!-- lazy loading and custom template -->\n <div *ngIf=\"!settings.groupBy && settings.lazyLoading && itemTempl != undefined\"\n [style.maxHeight]=\"settings.maxHeight+'px'\"\n style=\"overflow: auto;\">\n <ul virtualScroller #scroll2 [enableUnequalChildrenSizes]=\"randomSize\" [items]=\"virtualdata\"\n (vsStart)=\"onScrollEnd($event)\"\n (vsEnd)=\"onScrollEnd($event)\" class=\"lazyContainer\" [ngStyle]=\"{'height': settings.maxHeight+'px'}\">\n <li *ngFor=\"let item of scroll2.viewPortItems; let i = index;\" (click)=\"onItemClick(item,i,$event)\"\n class=\"pure-checkbox\"\n [ngClass]=\"{'selected-item': isSelected(item) == true }\">\n <input *ngIf=\"settings.showCheckbox\" type=\"checkbox\" [checked]=\"isSelected(item)\"\n [disabled]=\"(settings.limitSelection == selectedItems?.length && !isSelected(item)) || item.disabled\"\n />\n <label></label>\n <c-templateRenderer [data]=\"itemTempl\" [item]=\"item\"></c-templateRenderer>\n </li>\n </ul>\n </div>\n <!-- lazy loading, group By and custom template -->\n <div *ngIf=\"settings.groupBy && settings.lazyLoading && itemTempl != undefined\"\n [style.maxHeight]=\"settings.maxHeight+'px'\"\n style=\"overflow: auto;\">\n <ul virtualScroller #scroll3 [enableUnequalChildrenSizes]=\"randomSize\" [items]=\"virtualdata\"\n (vsStart)=\"onScrollEnd($event)\"\n (vsEnd)=\"onScrollEnd($event)\" [ngStyle]=\"{'height': settings.maxHeight+'px'}\" class=\"lazyContainer\">\n <span *ngFor=\"let item of scroll3.viewPortItems; let i = index;\">\n <li (click)=\"onItemClick(item,i,$event)\" *ngIf=\"!item.grpTitle\"\n [ngClass]=\"{'grp-title': item.grpTitle,'grp-item': !item.grpTitle && !settings.singleSelection}\"\n class=\"pure-checkbox\">\n <input *ngIf=\"settings.showCheckbox && !settings.singleSelection\" type=\"checkbox\"\n [checked]=\"isSelected(item)\"\n [disabled]=\"(settings.limitSelection == selectedItems?.length && !isSelected(item)) || item.disabled\"\n />\n <label></label>\n <c-templateRenderer [data]=\"itemTempl\" [item]=\"item\"></c-templateRenderer>\n </li>\n <li *ngIf=\"item.grpTitle\"\n [ngClass]=\"{'grp-title': item.grpTitle,'grp-item': !item.grpTitle && !settings.singleSelection}\"\n class=\"pure-checkbox\">\n <input *ngIf=\"settings.showCheckbox\" type=\"checkbox\" [checked]=\"isSelected(item)\"\n [disabled]=\"(settings.limitSelection == selectedItems?.length && !isSelected(item)) || item.disabled\"\n />\n <label></label>\n <c-templateRenderer [data]=\"itemTempl\" [item]=\"item\"></c-templateRenderer>\n </li>\n </span>\n </ul>\n </div>\n <!-- group By and custom template -->\n <div *ngIf=\"settings.groupBy && !settings.lazyLoading && itemTempl != undefined\"\n [style.maxHeight]=\"settings.maxHeight+'px'\"\n style=\"overflow: auto;\">\n <ul class=\"lazyContainer\">\n <span *ngFor=\"let item of groupedData; let i = index;\">\n <li (click)=\"selectGroup(item)\"\n [ngClass]=\"{'grp-title': item.grpTitle,'grp-item': !item.grpTitle && !settings.singleSelection}\"\n class=\"pure-checkbox\">\n <input *ngIf=\"settings.showCheckbox && !settings.singleSelection\" type=\"checkbox\"\n [checked]=\"item.selected\"\n [disabled]=\"(settings.limitSelection == selectedItems?.length && !isSelected(item)) || item.disabled\"\n />\n <label>{{ item[settings.labelKey] }}</label>\n <ul class=\"lazyContainer\">\n <span *ngFor=\"let val of item.list ; let j = index;\">\n <li (click)=\"onItemClick(val,j,$event); $event.stopPropagation()\"\n [ngClass]=\"{'grp-title': val.grpTitle,'grp-item': !val.grpTitle && !settings.singleSelection}\"\n class=\"pure-checkbox\">\n <input *ngIf=\"settings.showCheckbox\" type=\"checkbox\" [checked]=\"isSelected(val)\"\n [disabled]=\"(settings.limitSelection == selectedItems?.length && !isSelected(val)) || val.disabled\"\n />\n <label></label>\n <c-templateRenderer [data]=\"itemTempl\" [item]=\"val\"></c-templateRenderer>\n </li>\n </span>\n </ul>\n\n </li>\n </span>\n </ul>\n </div>\n <!-- lazy loading, group By -->\n <div *ngIf=\"settings.groupBy && settings.lazyLoading && itemTempl == undefined\"\n [style.maxHeight]=\"settings.maxHeight+'px'\"\n style=\"overflow: auto;\">\n <virtual-scroller [items]=\"groupedData\" (vsUpdate)=\"viewPortItems = $event\" (vsEnd)=\"onScrollEnd($event)\"\n [ngStyle]=\"{'height': settings.maxHeight+'px'}\">\n <ul virtualScroller #scroll4 [enableUnequalChildrenSizes]=\"randomSize\" [items]=\"virtualdata\"\n (vsStart)=\"onScrollEnd($event)\"\n (vsEnd)=\"onScrollEnd($event)\" [ngStyle]=\"{'height': settings.maxHeight+'px'}\" class=\"lazyContainer\">\n <span *ngFor=\"let item of scroll4.viewPortItems; let i = index;\">\n <li *ngIf=\"item.grpTitle\"\n [ngClass]=\"{'grp-title': item.grpTitle,'grp-item': !item.grpTitle && !settings.singleSelection, 'selected-item': isSelected(item) == true }\"\n class=\"pure-checkbox\">\n <input *ngIf=\"settings.showCheckbox && !item.grpTitle && !settings.singleSelection\"\n type=\"checkbox\" [checked]=\"isSelected(item)\"\n [disabled]=\"(settings.limitSelection == selectedItems?.length && !isSelected(item)) || item.disabled\"\n />\n <label>{{ item[settings.labelKey] }}</label>\n </li>\n <li (click)=\"onItemClick(item,i,$event)\" *ngIf=\"!item.grpTitle\"\n [ngClass]=\"{'grp-title': item.grpTitle,'grp-item': !item.grpTitle && !settings.singleSelection, 'selected-item': isSelected(item) == true }\"\n class=\"pure-checkbox\">\n <input *ngIf=\"settings.showCheckbox && !item.grpTitle\" type=\"checkbox\"\n [checked]=\"isSelected(item)\"\n [disabled]=\"(settings.limitSelection == selectedItems?.length && !isSelected(item)) || item.disabled\"\n />\n <label>{{ item[settings.labelKey] }}</label>\n </li>\n </span>\n </ul>\n </virtual-scroller>\n </div>\n <!-- group By -->\n <div *ngIf=\"settings.groupBy && !settings.lazyLoading && itemTempl == undefined\"\n [style.maxHeight]=\"settings.maxHeight+'px'\"\n style=\"overflow: auto;\">\n <ul class=\"lazyContainer\">\n <span *ngFor=\"let item of groupedData ; let i = index;\">\n <li (click)=\"selectGroup(item)\"\n [ngClass]=\"{'grp-title': item.grpTitle,'grp-item': !item.grpTitle && !settings.singleSelection}\"\n class=\"pure-checkbox\">\n <input *ngIf=\"settings.showCheckbox && !settings.singleSelection\" type=\"checkbox\"\n [checked]=\"item.selected\"\n [disabled]=\"(settings.limitSelection == selectedItems?.length && !isSelected(item)) || item.disabled\"\n />\n <label>{{ item[settings.labelKey] }}</label>\n <ul class=\"lazyContainer\">\n <span *ngFor=\"let val of item.list ; let j = index;\">\n <li (click)=\"onItemClick(val,j,$event); $event.stopPropagation()\"\n [ngClass]=\"{'selected-item': isSelected(val) == true,'grp-title': val.grpTitle,'grp-item': !val.grpTitle && !settings.singleSelection}\"\n class=\"pure-checkbox\">\n <input *ngIf=\"settings.showCheckbox\" type=\"checkbox\" [checked]=\"isSelected(val)\"\n [disabled]=\"(settings.limitSelection == selectedItems?.length && !isSelected(val)) || val.disabled\"\n />\n <label>{{ val[settings.labelKey] }}</label>\n </li>\n </span>\n </ul>\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 * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.DataService","i1","i1.ListFilterPipe"],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ElementRef, EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class ClickOutsideDirective {
|
|
4
|
+
private readonly _elementRef;
|
|
5
|
+
constructor(_elementRef: ElementRef);
|
|
6
|
+
enabled: boolean;
|
|
7
|
+
clickOutside: EventEmitter<MouseEvent>;
|
|
8
|
+
onClick(event: MouseEvent, targetElement: HTMLElement): void;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ClickOutsideDirective, never>;
|
|
10
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ClickOutsideDirective, "[clickOutside]", never, { "enabled": { "alias": "enabled"; "required": false; }; }, { "clickOutside": "clickOutside"; }, never, never, false, never>;
|
|
11
|
+
}
|
|
12
|
+
export declare class ScrollDirective {
|
|
13
|
+
scroll: EventEmitter<MouseEvent>;
|
|
14
|
+
onClick(event: MouseEvent, targetElement: HTMLElement): void;
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ScrollDirective, never>;
|
|
16
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ScrollDirective, "[scroll]", never, {}, { "scroll": "scroll"; }, never, never, false, never>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { PipeTransform } from '@angular/core';
|
|
2
|
+
import { DataService } from './multiselect.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class ListFilterPipe implements PipeTransform {
|
|
5
|
+
private ds;
|
|
6
|
+
filteredList: any;
|
|
7
|
+
constructor(ds: DataService);
|
|
8
|
+
transform(items: any[], filter: any, searchBy: any): any[];
|
|
9
|
+
applyFilter(item: any, filter: any, searchBy: any): boolean;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ListFilterPipe, never>;
|
|
11
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<ListFilterPipe, "listFilter", false>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { OnInit, OnDestroy, TemplateRef, EmbeddedViewRef, ViewContainerRef } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class Item {
|
|
4
|
+
template: TemplateRef<any>;
|
|
5
|
+
constructor();
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<Item, never>;
|
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<Item, "c-item", never, {}, {}, ["template"], never, false, never>;
|
|
8
|
+
}
|
|
9
|
+
export declare class Badge {
|
|
10
|
+
template: TemplateRef<any>;
|
|
11
|
+
constructor();
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<Badge, never>;
|
|
13
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<Badge, "c-badge", never, {}, {}, ["template"], never, false, never>;
|
|
14
|
+
}
|
|
15
|
+
export declare class Search {
|
|
16
|
+
template: TemplateRef<any>;
|
|
17
|
+
constructor();
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<Search, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<Search, "c-search", never, {}, {}, ["template"], never, false, never>;
|
|
20
|
+
}
|
|
21
|
+
export declare class TemplateRenderer implements OnInit, OnDestroy {
|
|
22
|
+
viewContainer: ViewContainerRef;
|
|
23
|
+
data: any;
|
|
24
|
+
item: any;
|
|
25
|
+
view: EmbeddedViewRef<any>;
|
|
26
|
+
constructor(viewContainer: ViewContainerRef);
|
|
27
|
+
ngOnInit(): void;
|
|
28
|
+
ngOnDestroy(): void;
|
|
29
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TemplateRenderer, never>;
|
|
30
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TemplateRenderer, "c-templateRenderer", never, { "data": { "alias": "data"; "required": false; }; "item": { "alias": "item"; "required": false; }; }, {}, never, never, false, never>;
|
|
31
|
+
}
|
|
32
|
+
export declare class CIcon {
|
|
33
|
+
name: any;
|
|
34
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CIcon, never>;
|
|
35
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CIcon, "c-icon", never, { "name": { "alias": "name"; "required": false; }; }, {}, never, never, false, never>;
|
|
36
|
+
}
|