{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/data/list/src/list.props.ts","../../../../../projects/components/widgets/data/list/src/list-item.directive.ts","../../../../../projects/components/widgets/data/list/src/list.component.ts","../../../../../projects/components/widgets/data/list/src/list.component.html","../../../../../projects/components/widgets/data/list/src/index.ts"],"sourcesContent":["import {PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register} from '@wm/components/base';\n\nexport const registerProps = () => {\n    register(\n        'wm-list',\n        new Map(\n            [\n                ['boundarylinks', {value: false, ...PROP_BOOLEAN}],\n                ['class', PROP_STRING],\n                ['collapsible', PROP_BOOLEAN],\n                ['dateformat', PROP_STRING],\n                ['dataset', PROP_ANY],\n                ['datasource', PROP_ANY],\n                ['direction', {value: 'vertical', ...PROP_STRING}],\n                ['directionlinks', {value: true, ...PROP_BOOLEAN}],\n                ['disableitem', PROP_BOOLEAN],\n                ['enablereorder', PROP_BOOLEAN],\n                ['forceellipses', {value: true, ...PROP_BOOLEAN}],\n                ['groupby', PROP_STRING],\n                ['iconclass', PROP_STRING],\n                ['itemclass', {value: '', ...PROP_STRING}],\n                ['itemsperrow', PROP_STRING],\n                ['listclass', {value: 'list-group', ...PROP_STRING}],\n                ['multiselect', PROP_BOOLEAN],\n                ['loadingdatamsg', {value : 'Loading...', ...PROP_STRING}],\n                ['loadingicon', {value : 'fa fa-circle-o-notch', ...PROP_STRING}],\n                ['match', PROP_STRING],\n                ['maxsize', {value: 5, ...PROP_NUMBER}],\n                ['name', PROP_STRING],\n                ['navigation', PROP_STRING],\n                ['navigationalign', {value: 'left', ...PROP_STRING}],\n                ['nodatamessage', {value : 'No data found', ...PROP_STRING}],\n                ['ondemandmessage', {value : 'Load More', ...PROP_STRING}],\n                ['orderby', PROP_STRING],\n                ['paginationclass', PROP_STRING],\n                ['pagesize', PROP_NUMBER],\n                ['pulltorefresh', {value: false, ...PROP_BOOLEAN}],\n                ['selectfirstitem', PROP_BOOLEAN],\n                ['selectionlimit', PROP_NUMBER],\n                ['show', {value: true, ...PROP_BOOLEAN}],\n                ['showcount', PROP_BOOLEAN],\n                ['showrecordcount', PROP_BOOLEAN],\n                ['statehandler', {value: 'none', ...PROP_STRING}],\n                ['subheading', PROP_STRING],\n                ['tabindex', {value: 0, ...PROP_NUMBER}],\n                ['title', PROP_STRING],\n                ['allowpagesizechange', {value: false, ...PROP_BOOLEAN}],\n                ['pagesizeoptions', {value : '5,10,20,50,100', ...PROP_STRING}]\n\n            ]\n        )\n    );\n};\n","import {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    HostBinding,\n    HostListener,\n    inject,\n    Injector,\n    Input,\n    OnDestroy,\n    OnInit,\n    ViewContainerRef\n} from '@angular/core';\n\nimport {Observable, Subject} from 'rxjs';\n\nimport {$watch, App} from '@wm/core';\n\nimport {ListComponent} from './list.component';\nimport {widgetIdGenerator} from \"@wm/components/base\";\nimport {BaseFormComponent} from \"@wm/components/input/base-form\";\n\ndeclare const $;\n\n@Directive({\n  standalone: true,\n    selector: '[wmListItem]',\n    exportAs: 'listItemRef'\n})\nexport class ListItemDirective implements OnInit, AfterViewInit, OnDestroy {\n\n    public item;\n    public context;\n    public destroy: Subject<any> = new Subject();\n    public destroy$: Observable<any> = this.destroy.asObservable();\n    public nativeElement: HTMLElement;\n    public readonly listComponent: ListComponent;\n\n    private itemClass = '';\n    private _currentItemWidgets = {};\n    private viewContainerRef: ViewContainerRef;\n    /**\n     * To avoid re-rendering of widget, passing unique id as contextKey to createCustomInjector\n     */\n    protected trackId = widgetIdGenerator.nextUid();\n\n    @HostBinding('class.active') isActive = false;\n    @HostBinding('class.disable-item') disableItem = false;\n\n    @HostListener('focus')\n    onFocus() {\n        // maintains which element is focused/selected most recently.\n        this.listComponent.lastSelectedItem = this;\n    }\n\n    get $index() {\n        return this.context.$index;\n    }\n\n    get $even() {\n        return this.context.even;\n    }\n\n    get $odd() {\n        return this.context.odd;\n    }\n\n    get $first() {\n        return this.context.first;\n    }\n\n    get $last() {\n        return this.context.last;\n    }\n\n    get currentItemWidgets () {\n        const componentElements = Array.from(this.nativeElement.querySelectorAll('[widget-id]'));\n        return Object.assign(this._currentItemWidgets, componentElements.reduce((result, comp: any) => {\n            result[comp.widget.name] = comp.widget;\n            return result;\n        }, {}));\n    }\n\n    @Input() set wmListItem(val) {\n        this.item = val;\n    }\n    private _viewParent = inject(ListComponent, {optional: true});\n    constructor(private inj: Injector, elRef: ElementRef, private app: App) {\n        this.viewContainerRef = inj.get(ViewContainerRef);\n        this.nativeElement = elRef.nativeElement;\n        this.listComponent = this._viewParent;\n        // this.context = (<NgForOfContext<ListItemDirective>>(<any>inj).view.context);\n        this.context = (this.inj as any)._lView[8];\n        //this.context = (this.viewContainerRef as any)._hostLView.find(t => t && !!t.$implicit);\n        this.itemClassWatcher(this.listComponent);\n        this.disableItemWatcher(this.listComponent);\n        $(this.nativeElement).data('listItemContext', this);\n    }\n\n    private registerWatch(expression: string, callback: Function) {\n        // Removing ngFor context as the same properties are availble on listitem scope.\n        // passing viewparent context for accessing varibales and widgets.\n        //[CSP]: expression will be generated in the component as e.g. 'item.className'\n        this.destroy$.subscribe($watch(expression, (this.listComponent as any).viewParent, this, callback));\n    }\n\n    private itemClassWatcher(listComponent: ListComponent) {\n        if (listComponent.binditemclass) {\n            this.registerWatch(listComponent.binditemclass, nv => this.itemClass = nv || '');\n        } else {\n            this.itemClass = listComponent.itemclass;\n        }\n    }\n\n    private disableItemWatcher($list: ListComponent) {\n        if ($list.binddisableitem) {\n            this.registerWatch($list.binddisableitem, nv => this.disableItem = nv || false);\n        } else {\n            this.disableItem = $list.disableitem || false;\n        }\n    }\n\n    private boundEditHandler: (event: Event) => void;\n    private boundDeleteHandler: (event: Event) => void;\n    private boundMouseEnterHandler: (event: Event) => void;\n    private boundMouseLeaveHandler: (event: Event) => void;\n\n    private setUpCUDHandlers() {\n        const $editItem = this.nativeElement.querySelector('.edit-list-item');\n        const $deleteItem = this.nativeElement.querySelector('.delete-list-item');\n\n        if ($editItem) {\n            // MEMORY LEAK FIX: Store bound handler for cleanup\n            this.boundEditHandler = (evt: Event) => {\n                this.listComponent.update();\n            };\n            // Triggered on click of edit action\n            $editItem.addEventListener('click', this.boundEditHandler);\n        }\n\n        if ($deleteItem) {\n            // MEMORY LEAK FIX: Store bound handler for cleanup\n            this.boundDeleteHandler = (evt: Event) => {\n                this.listComponent.delete();\n            };\n            // Triggered on click of delete action\n            $deleteItem.addEventListener('click', this.boundDeleteHandler);\n        }\n    }\n    ngOnInit() {\n        if (this.listComponent.mouseEnterCB) {\n            // MEMORY LEAK FIX: Store bound handler for cleanup\n            this.boundMouseEnterHandler = ($event: Event) => {\n                this.listComponent.invokeEventCallback('mouseenter', {widget: this, $event});\n            };\n            this.nativeElement.addEventListener('mouseenter', this.boundMouseEnterHandler);\n        }\n        if (this.listComponent.mouseLeaveCB) {\n            // MEMORY LEAK FIX: Store bound handler for cleanup\n            this.boundMouseLeaveHandler = ($event: Event) => {\n                this.listComponent.invokeEventCallback('mouseleave', {widget: this, $event});\n            };\n            this.nativeElement.addEventListener('mouseleave', this.boundMouseLeaveHandler);\n        }\n        // adding item attribute on every list item\n        $(this.nativeElement).attr('listitemindex', this.$index);\n    }\n\n    ngAfterViewInit() {\n        this.setUpCUDHandlers();\n        const componentElements = Array.from(this.nativeElement.querySelectorAll('[widget-id]'));\n        componentElements.forEach((component: any) => {\n            if(component.widget instanceof BaseFormComponent) {\n                if(!component.widget.$attrs.get('datavaluesource.bind')) {\n                    component.widget.datavaluesource = this.listComponent['datasource'];\n                }\n            }\n        });\n    }\n\n    ngOnDestroy() {\n        // MEMORY LEAK FIX: Remove event listeners\n        if (this.boundMouseEnterHandler && this.nativeElement) {\n            try {\n                this.nativeElement.removeEventListener('mouseenter', this.boundMouseEnterHandler);\n            } catch (e) {\n                // Silently handle cleanup errors\n            }\n            this.boundMouseEnterHandler = null;\n        }\n        if (this.boundMouseLeaveHandler && this.nativeElement) {\n            try {\n                this.nativeElement.removeEventListener('mouseleave', this.boundMouseLeaveHandler);\n            } catch (e) {\n                // Silently handle cleanup errors\n            }\n            this.boundMouseLeaveHandler = null;\n        }\n\n        if (this.nativeElement) {\n            const $editItem = this.nativeElement.querySelector('.edit-list-item');\n            if ($editItem && this.boundEditHandler) {\n                try {\n                    $editItem.removeEventListener('click', this.boundEditHandler);\n                } catch (e) {\n                    // Silently handle cleanup errors\n                }\n                this.boundEditHandler = null;\n            }\n\n            const $deleteItem = this.nativeElement.querySelector('.delete-list-item');\n            if ($deleteItem && this.boundDeleteHandler) {\n                try {\n                    $deleteItem.removeEventListener('click', this.boundDeleteHandler);\n                } catch (e) {\n                    // Silently handle cleanup errors\n                }\n                this.boundDeleteHandler = null;\n            }\n        }\n\n        // MEMORY LEAK FIX: Clear context to release references\n        if (this.context) {\n            Object.keys(this.context).forEach(key => {\n                delete this.context[key];\n            });\n            this.context = null;\n        }\n\n        // MEMORY LEAK FIX: Clear ViewContainerRef reference\n        if (this.viewContainerRef) {\n            this.viewContainerRef = null;\n        }\n\n        // MEMORY LEAK FIX: Complete the destroy subject\n        if (this.destroy) {\n            try {\n                if (!this.destroy.closed) {\n                    this.destroy.next(null);\n                    this.destroy.complete();\n                }\n            } catch (e) {\n                // Silently handle cleanup errors\n            }\n            this.destroy = null;\n        }\n    }\n}\n","import {CommonModule} from '@angular/common';\nimport {\n    APPLY_STYLES_TYPE,\n    configureDnD,\n    DEBOUNCE_TIMES,\n    extractDataSourceName,\n    getOrderedDataset,\n    groupData,\n    handleHeaderClick,\n    NAVIGATION_TYPE,\n    provideAsWidgetRef,\n    StylableComponent,\n    styler,\n    TextContentDirective,\n    ToDatePipe,\n    toggleAllHeaders,\n    unsupportedStatePersistenceTypes,\n    WidgetRef\n} from \"@wm/components/base\";\nimport {\n    AfterViewInit,\n    Attribute,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    ContentChildren,\n    ElementRef,\n    Inject,\n    Injector,\n    NgZone,\n    OnDestroy,\n    OnInit,\n    Optional,\n    QueryList,\n    TemplateRef,\n    ViewChild,\n    ViewChildren\n} from '@angular/core';\n\nimport {Subscription} from 'rxjs';\n\nimport {\n    $appDigest,\n    $invokeWatchers,\n    App,\n    AppDefaults,\n    DataSource,\n    generateGUId,\n    getClonedObject,\n    isDataSourceEqual,\n    isDefined,\n    isMobile,\n    isObject,\n    noop,\n    PaginationService,\n    setListClass,\n    StatePersistence,\n    switchClass\n} from '@wm/core';\nimport {PaginationComponent} from '@wm/components/data/pagination';\nimport {ButtonComponent} from '@wm/components/input/button';\n\nimport {registerProps} from './list.props';\nimport {ListItemDirective} from './list-item.directive';\nimport {ListAnimator} from './list.animator';\nimport {\n    clone,\n    cloneDeep,\n    forEach,\n    get,\n    has,\n    includes,\n    isArray,\n    isEmpty,\n    isEqual,\n    isNumber,\n    isString,\n    isUndefined,\n    last,\n    max,\n    min,\n    pullAllWith,\n    pullAt,\n    remove,\n    some,\n    toNumber\n} from \"lodash-es\";\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'app-livelist app-panel';\nconst WIDGET_CONFIG = {widgetType: 'wm-list', hostClass: DEFAULT_CLS};\n\n@Component({\n  standalone: true,\n  imports: [CommonModule, TextContentDirective, PaginationComponent, ListItemDirective],\n    selector: 'div[wmList]',\n    templateUrl: './list.component.html',\n    providers: [\n        provideAsWidgetRef(ListComponent)\n    ]\n})\nexport class ListComponent extends StylableComponent implements OnInit, AfterViewInit, OnDestroy {\n    static initializeProps = registerProps();\n\n    @ContentChild('listTemplate') listTemplate: TemplateRef<ElementRef>;\n\n    @ContentChild('listLeftActionTemplate') listLeftActionTemplate: TemplateRef<ElementRef>;\n    @ContentChild('listRightActionTemplate') listRightActionTemplate: TemplateRef<ElementRef>;\n    @ContentChildren(ButtonComponent) btnComponents;\n\n    @ViewChild(PaginationComponent) dataNavigator;\n    @ViewChildren(ListItemDirective) listItems: QueryList<ListItemDirective>;\n    public noDataFound: boolean;\n    public lastSelectedItem: ListItemDirective;\n    public fieldDefs: Array<any>;\n    public disableitem;\n    public navigation: string;\n    public navigationalign: string;\n    public pagesize: number;\n    public dataset: any;\n    public multiselect: boolean;\n    public selectfirstitem: boolean;\n    public orderby: string;\n    public loadingicon: string;\n    public paginationclass: string;\n    public ondemandmessage: string;\n    public loadingdatamsg: string;\n    public selectionlimit: number;\n    public infScroll: boolean;\n    public enablereorder: boolean;\n    public itemsperrow: string;\n    public itemclass: string;\n    public selectedItemWidgets: Array<WidgetRef> | WidgetRef;\n    public variableInflight;\n    public name;\n    public currentPage;\n    public direction;\n    public tabindex;\n    public handleHeaderClick: Function;\n    public toggleAllHeaders: void;\n    public groupby: string;\n    public collapsible: string;\n    public datePipe: ToDatePipe;\n    public binditemclass: string;\n    public binddisableitem: string;\n    public binddataset: string;\n    public mouseEnterCB: string;\n    public mouseLeaveCB: string;\n    public pulltorefresh: boolean;\n    public title: string;\n    public subheading: string;\n    public iconclass: string;\n    public listclass: any;\n    public statehandler: any;\n    public currentIndex: number;\n    public titleId: string;\n    public allowpagesizechange: boolean = false;\n    public pagesizeoptions: string;\n    private prevPagesizeoptions: string;\n    public updatedPageSize;\n    public actualPageSize;\n    _isDependent;\n    private itemsPerRowClass: string;\n    private firstSelectedItem: ListItemDirective;\n    private navigatorMaxResultWatch: Subscription;\n    private navigatorResultWatch: Subscription;\n    private navControls: string;\n    private onDemandLoad: boolean;\n    private _items: Array<any>;\n    private dataNavigatorWatched: boolean;\n    private datasource: any;\n    private showNavigation: boolean;\n    private reorderProps: any;\n    private app: any;\n    private appDefaults: any;\n    private ngZone: NgZone;\n    private statePersistence: StatePersistence;\n    private paginationService: PaginationService;\n    private binddatasource: string;\n    private match: string;\n    private dateformat: string;\n    private groupedData: any;\n    private cdRef: ChangeDetectorRef;\n    private promiseResolverFn: Function;\n    private propsInitPromise: Promise<any>;\n    private $ulEle: any;\n    private _listAnimator: ListAnimator;\n    private _listenerDestroyers: Array<any>;\n    private debouncedFetchNextDatasetOnScroll: Function;\n    private isDataChanged: boolean;\n    private isListElementMovable: boolean;\n    private ariaText: String;\n    private _pageLoad;\n    private _selectedItemsExist;\n    private listItemsChangesSubscription: any;\n    private boundClickHandler: (event: Event) => void;\n\n    private touching;\n    private touched;\n\n    constructor(\n        inj: Injector,\n        cdRef: ChangeDetectorRef,\n        datePipe: ToDatePipe,\n        app: App,\n        appDefaults: AppDefaults,\n        ngZone: NgZone,\n        @Attribute('itemclass.bind') binditemclass: string,\n        @Attribute('disableitem.bind') binddisableitem: string,\n        @Attribute('dataset.bind') binddataset: string,\n        @Attribute('datasource.bind') binddatasource: string,\n        @Attribute('mouseenter.event') mouseEnterCB: string,\n        @Attribute('mouseleave.event') mouseLeaveCB: string,\n        statePersistence: StatePersistence,\n        paginationService: PaginationService,\n        @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n    ) {\n        let resolveFn: Function = noop;\n        const propsInitPromise = new Promise(res => resolveFn = res);\n        super(inj, WIDGET_CONFIG, explicitContext, propsInitPromise);\n        this.propsInitPromise = propsInitPromise;\n        this.promiseResolverFn = resolveFn;\n        styler(this.nativeElement, this, APPLY_STYLES_TYPE.SHELL);\n        this.cdRef = cdRef;\n        this.ngZone = ngZone;\n        this.datePipe = datePipe;\n        this.statePersistence = statePersistence;\n        this.paginationService = paginationService;\n        this._pageLoad = true;\n\n        this.binditemclass = binditemclass;\n        this.binddisableitem = binddisableitem;\n        this.binddataset = binddataset;\n        this.mouseEnterCB = mouseEnterCB;\n        this.mouseLeaveCB = mouseLeaveCB;\n        this.binddatasource = binddatasource;\n\n        this.app = app;\n        this.appDefaults = appDefaults;\n        this.variableInflight = false;\n\n        this.noDataFound = !binddataset;\n        this.titleId = 'wmlist-' + generateGUId();\n\n        // Updates pagination, filter, sort etc options for service and crud variables\n        this._listenerDestroyers = [\n            this.app.subscribe('check-state-persistence-options', options => {\n                let dataSourceName = get(this.datasource, 'name');\n                // in Prefabs, this.datasource is not resolved at the time of variable invocation, so additional check is required.\n                if (!dataSourceName) {\n                    dataSourceName = extractDataSourceName(this.binddatasource);\n                }\n                if (get(options, 'variable.name') !== dataSourceName) {\n                    return;\n                }\n                this.handleStateParams(options);\n            }),\n            // Show loading status based on the variable life cycle\n            this.app.subscribe('toggle-variable-state', this.handleLoading.bind(this)),\n            this.app.subscribe('setup-cud-listener', param => {\n                if (this.nativeElement.getAttribute('name') !== param) {\n                    return;\n                }\n                this._isDependent = true;\n            })\n        ];\n    }\n\n    public get selecteditem() {\n        if (this.multiselect) {\n            return getClonedObject(this._items);\n        }\n        if (isEmpty(this._items)) {\n            return {};\n        }\n        return getClonedObject(this._items[0]);\n    }\n\n    public set selecteditem(items) {\n        this._items.length = 0;\n        this.deselectListItems();\n\n        if (isArray(items)) {\n            items.forEach(item => this.selectItem(item));\n        } else {\n            this.selectItem(items);\n        }\n        $appDigest();\n    }\n\n    /**\n     * Returns list of widgets present on list item by considering name and index of the widget.\n     * If we did'nt pass index, it returns array of all the widgets which are matching to widget name\n     * @param widgteName: Name of the widget\n     * @param index: Index of the widget\n     */\n    public getWidgets(widgteName: string, index?: number) {\n        let $target;\n        const retVal = [];\n\n        if (!widgteName) {\n            return;\n        }\n\n        if (!isDefined(index)) {\n            forEach(this.listItems.toArray(), (el) => {\n                $target = get(el.currentItemWidgets, widgteName);\n                if ($target) {\n                    retVal.push($target);\n                }\n            });\n\n            return retVal;\n        }\n        index = +index || 0;\n\n        $target = get(this.listItems.toArray(), index);\n\n        if ($target) {\n            return [get($target.currentItemWidgets, widgteName)];\n        }\n    }\n\n    // returns listitem reference by index value. This refers to the same method getListItemByIndex.\n    public getItem(index: number) {\n        return this.getListItemByIndex(index);\n    }\n\n    /**\n     * Returns index of listItem(listItemDirective / listItemObject)\n     * If item is a directive, index is fetched from listItems\n     * If item is an object, index is fetched from fieldDefs\n     */\n    public getIndex(item: any) {\n        if (item instanceof ListItemDirective) {\n            return this.getListItemIndex(item);\n        } else if (item) {\n            return this.fieldDefs.findIndex((obj) => isEqual(obj, item));\n        }\n    }\n     public getUpdatedPageSize() {\n         return this.updatedPageSize;\n     }\n\n    create() {\n        if (this._isDependent) {\n            this.triggerWMEvent('insert');\n        }\n    }\n\n    editRow(item?) {\n        if (this._isDependent) {\n            let listItem;\n            if (item) {\n                listItem = this.getItemRefByIndexOrModel(item).item;\n            }\n            this.triggerWMEvent('update', listItem);\n        }\n    }\n\n    update(item?) {\n        this.editRow(item);\n    }\n\n    deleteRow(item?) {\n        if (this._isDependent) {\n            let listItem;\n            if (item) {\n                listItem = this.getItemRefByIndexOrModel(item).item;\n            }\n            this.triggerWMEvent('delete', listItem);\n        }\n    }\n\n    delete(item?) {\n        this.deleteRow(item);\n    }\n\n    handleLoading(data) {\n        const dataSource = this.datasource;\n        if (dataSource && dataSource.execute(DataSource.Operation.IS_API_AWARE) && isDataSourceEqual(data.variable, dataSource)) {\n            this.ngZone.run(() => {\n                this.handleStateParams(data);\n                this.variableInflight = data.active;\n                // Fix for [WMS-23772] Update nodatafound flag once the response is recieved from the server\n                const totalEle = data.data?.pagination?.totalElements;\n                if (!isUndefined(totalEle)) {\n                    this.noDataFound = totalEle === 0 ? true : false;\n                } else { // totalelements is undefined\n                    this.noDataFound = isEmpty(data.data?.data);\n                }\n            });\n        }\n    }\n\n    public triggerListItemSelection($el: JQuery<HTMLElement>, $event: Event) {\n        if ($el && $el[0]) {\n            const listItemContext = $el.data('listItemContext');\n            // Trigger click event only if the list item is from the corresponding list.\n            if (listItemContext.listComponent === this) {\n                this.onItemClick($event, listItemContext);\n            }\n        }\n    }\n\n    // this method is called form other data widgets like table.\n    public execute(operation, options) {\n        if ([DataSource.Operation.IS_API_AWARE, DataSource.Operation.IS_PAGEABLE, DataSource.Operation.SUPPORTS_SERVER_FILTER].includes(operation)) {\n            return false;\n        }\n        return this.datasource.execute(operation, options);\n    }\n\n    public handleKeyDown($event, action: string) {\n        $event.stopPropagation();\n        if ($event.keyCode !== 13 && $event.keyCode !== 9 && !(($event.target.classList.contains('form-control') || $event.target.classList.contains('note-editable')) && $event.keyCode === 32)) {\n            $event.preventDefault();\n        }\n\n        const listItems: QueryList<ListItemDirective> = this.listItems;\n\n        let presentIndex: number = this.getListItemIndex(this.lastSelectedItem);\n\n        if (this.multiselect) {\n            const firstIndex: number = this.getListItemIndex(this.firstSelectedItem);\n            const selectCount: number = isArray(this.selecteditem) ? this.selecteditem.length : (isObject(this.selecteditem) ? 1 : 0);\n            if (action === 'selectPrev') {\n                if (presentIndex > 0) {\n                    if ((presentIndex <= firstIndex) && this.checkSelectionLimit(selectCount)) {\n                        this.lastSelectedItem = this.getListItemByIndex(presentIndex - 1);\n                        this.toggleListItemSelection(this.lastSelectedItem);\n                    } else if (presentIndex > firstIndex) {\n                        this.toggleListItemSelection(this.getListItemByIndex(presentIndex));\n                        this.lastSelectedItem = this.getListItemByIndex(presentIndex - 1);\n                    } else {\n                        this.invokeEventCallback('selectionlimitexceed', {$event});\n                    }\n                }\n            } else if (action === 'selectNext') {\n                if (presentIndex < listItems.length - 1) {\n                    if ((presentIndex >= firstIndex) && this.checkSelectionLimit(selectCount)) {\n                        this.lastSelectedItem = this.getListItemByIndex(presentIndex + 1);\n                        this.toggleListItemSelection(this.lastSelectedItem);\n                    } else if (presentIndex < firstIndex) {\n                        this.toggleListItemSelection(this.getListItemByIndex(presentIndex));\n                        this.lastSelectedItem = this.getListItemByIndex(presentIndex + 1);\n                    } else {\n                        this.invokeEventCallback('selectionlimitexceed', {$event});\n                    }\n                }\n            }\n        }\n        if (action === 'focusPrev') {\n            if (this.isListElementMovable) {\n                presentIndex = presentIndex <= 0 ? 0 : (presentIndex);\n                if (presentIndex === 0) {\n                    return;\n                }\n\n                this.lastSelectedItem = this.getListItemByIndex(presentIndex);\n                const prevElt = this.getListItemByIndex(presentIndex - 1);\n                prevElt.nativeElement.before(this.lastSelectedItem.nativeElement);\n                this.lastSelectedItem.nativeElement.focus();\n                this.statePersistence.removeWidgetState(this, 'selectedItem');\n                const arr = this.listItems.toArray();\n                [arr[presentIndex - 1], arr[presentIndex]] = [arr[presentIndex], arr[presentIndex - 1]];\n                this.listItems.reset(arr);\n                this.currentIndex = presentIndex;\n                this.ariaText = \"selected \";\n            } else {\n                presentIndex = presentIndex <= 0 ? 0 : (presentIndex - 1);\n                this.lastSelectedItem = this.getListItemByIndex(presentIndex);\n                this.lastSelectedItem.nativeElement.focus();\n                this.currentIndex = presentIndex + 1;\n                this.ariaText = \"selected \";\n            }\n        } else if (action === 'focusNext') {\n            if (this.isListElementMovable) {\n                presentIndex = presentIndex < (listItems.length - 1) ? (presentIndex) : (listItems.length - 1);\n                if (presentIndex === this.listItems.length - 1) {\n                    return;\n                }\n\n                this.lastSelectedItem = this.getListItemByIndex(presentIndex);\n                const nextElt = this.getListItemByIndex(presentIndex + 1);\n                nextElt.nativeElement.after(this.lastSelectedItem.nativeElement);\n                this.lastSelectedItem.nativeElement.focus();\n                this.statePersistence.removeWidgetState(this, 'selectedItem');\n                const arr = this.listItems.toArray();\n                [arr[presentIndex], arr[presentIndex + 1]] = [arr[presentIndex + 1], arr[presentIndex]];\n                this.listItems.reset(arr);\n                this.currentIndex = presentIndex + 2;\n                this.ariaText = \"selected \";\n            } else {\n                presentIndex = presentIndex < (listItems.length - 1) ? (presentIndex + 1) : (listItems.length - 1);\n                this.lastSelectedItem = this.getListItemByIndex(presentIndex);\n                this.lastSelectedItem.nativeElement.focus();\n                this.currentIndex = presentIndex + 1;\n                this.ariaText = \"selected \";\n            }\n        } else if (action === 'select') {\n            // if the enter click is pressed on the item which is not the last selected item, the find the item from which the event is originated.\n            if (presentIndex === -1 || !$($event.target).closest(this.lastSelectedItem.nativeElement)) {\n                const $li = $($event.target).closest('li.app-list-item');\n                const $ul = $li.closest('ul.app-livelist-container');\n                presentIndex = $ul.find('li.app-list-item').index($li);\n            }\n            this.onItemClick($event, this.getListItemByIndex(presentIndex));\n        } else if (action === 'space') {\n            if (!this.enablereorder) {\n                return;\n            }\n            this.isListElementMovable = !this.isListElementMovable;\n            this.onItemClick($event, this.getListItemByIndex(presentIndex));\n            this.currentIndex = presentIndex + 1;\n            if (this.isListElementMovable) {\n                this.ariaText = `Item ${this.currentIndex} grabbed, current position `;\n                this.$ulEle.data('oldIndex', presentIndex);\n            } else {\n                this.ariaText = `Item ${this.currentIndex} dropped, final position `;\n                this.onUpdate($event, undefined, presentIndex);\n            }\n        }\n    }\n    getActualPageSize()  {\n        return this.actualPageSize || 20;\n    }\n\n    onPropertyChange(key: string, nv: any, ov?: any) {\n        if (key === 'dataset') {\n            if (!nv && this.binddatasource && !this.datasource) {\n                return;\n            }\n            this.onDataSetChange(nv);\n        } else if (key === 'datasource') {\n            if(this.allowpagesizechange){\n                this.datasource.maxResults = this.pagesize || this.datasource.maxResults\n            }\n            if (this.dataset) {\n                this.onDataSetChange(this.dataset);\n            }\n        } else if (key === 'navigation') {\n            // Support for older projects where navigation type was advanced instead of classic\n            if (nv === 'Advanced') {\n                this.navigation = 'Classic';\n                return;\n            }\n            switchClass(this.nativeElement, nv, ov);\n            this.onNavigationTypeChange(nv);\n            if (this.dataNavigator) {\n                this.dataNavigator.navigationClass = this.paginationclass;\n            }\n        } else if (key === 'itemsperrow') {\n            setListClass(this);\n        } else if (key === 'tabindex') {\n            return;\n        } else if (key === 'pulltorefresh' && nv) {\n            this.app.notify('pullToRefresh:enable');\n            this.subscribeToPullToRefresh();\n        } else if (key === 'paginationclass') {\n            if (this.dataNavigator) {\n                // Adding setTimeout because in pagination component updateNavSize method is overriding navigationclass\n                setTimeout(() => this.dataNavigator.navigationClass = nv);\n            }\n        } else if (key === 'pagesize') {\n            this.actualPageSize = nv; // maintain default page size to calculate pagesize options\n            this.setDefaultPageSize(nv)\n        } else if (key === 'enablereorder') {\n            if (nv && this.$ulEle) {\n                this.$ulEle.attr('aria-describedby', this.titleId);\n                this.configureDnD();\n                this.$ulEle.sortable('enable');\n            } else if (this.$ulEle && !nv) {\n                this.$ulEle.removeAttr('aria-describedby');\n                this.$ulEle.sortable('disable');\n            }\n        } else if (key === 'multiselect') {\n            // multiselect binding is evaluated after ngAfterViewInit, so initial value may be incorrect.\n            // Reassigning here to ensure selectedItemWidgets matches the updated multiselect value.\n            this.selectedItemWidgets = nv ? [] : {};\n        } else if (key === 'allowpagesizechange') {\n            this.allowpagesizechange = nv;\n            this.dataNavigator.allowpagesizechange = nv;\n        } else if(key === 'pagesizeoptions') {\n                this.prevPagesizeoptions = this.sanitizeCommaSeparatedIntegers(ov);\n                this.pagesizeoptions = this.sanitizeCommaSeparatedIntegers(nv);\n                if(this.allowpagesizechange) this.setDefaultPageSize(nv)\n        }else {\n            super.onPropertyChange(key, nv, ov);\n        }\n    }\n\n    setDefaultPageSize(nv: any){\n     if (this.allowpagesizechange) {\n        const widgetState = this.statePersistence.getWidgetState(this);\n        if (get(widgetState, 'pagesize')) {\n            nv = get(widgetState, 'pagesize');\n            this.pagesize = nv; // updating the default pagesize to user selected pagesize\n        } else if (this.pagesizeoptions) {\n            nv = this.pagesizeoptions?.split(',').map(Number).sort((a, b) => a - b)[0]\n            this.pagesize = nv;\n        }\n         if(this.isPageSizeOptionsChanged()) {\n             this.dataNavigator.defaultPageSizeOptions = this.pagesizeoptions?.split(',').map(Number).sort((a, b) => a - b) || [];\n             this.dataNavigator.pageSizeOptions = [...this.dataNavigator.defaultPageSizeOptions];\n         }\n    }\n        this.updatedPageSize = nv;\n        this.dataNavigator.updatedPageSize = nv;\n\n        this.dataNavigator.options = {\n            maxResults: nv\n        };\n        this.dataNavigator.widget.maxResults = nv;\n        this.dataNavigator.maxResults = nv;\n        if(this.datasource){\n            this.datasource.maxResults = this.pagesize || this.datasource.maxResults;\n        }\n    }\n\n    isPageSizeOptionsChanged() {\n        return !isEqual(this.prevPagesizeoptions, this.pagesizeoptions);\n    }\n\n    selectPageSize(pagesize: number) {\n        if(!this.allowpagesizechange && !pagesize) return;\n\n        if(pagesize < this.dataNavigator.pageSizeOptions[0] || pagesize > this.dataNavigator.pageSizeOptions[this.dataNavigator.pageSizeOptions.length - 1]\n            || !this.dataNavigator.pageSizeOptions.includes(Number(pagesize))) {\n            pagesize = this.dataNavigator.pageSizeOptions[0];\n        }\n        this.dataNavigator.onPageSizeChange(undefined, pagesize);\n    }\n\n    sanitizeCommaSeparatedIntegers(input: string): string {\n        if (!input) return \"\";\n        const uniqueNumbers = Array.from(\n            new Set(\n                input\n                    .split(\",\")\n                    .map(v => v.trim())\n                    .filter(v => /^-?\\d+$/.test(v))\n                    .map(v => Math.abs(parseInt(v, 10)))\n            )\n        );\n        return uniqueNumbers.join(\",\");\n    }\n\n    public onItemClick(evt: any, $listItem: ListItemDirective) {\n        let selectCount: number;\n\n        if (!$listItem.disableItem) {\n            this.firstSelectedItem = this.firstSelectedItem || $listItem;\n            // Setting selectCount value based number of items selected.\n            selectCount = isArray(this.selecteditem) ? this.selecteditem.length : (isObject(this.selecteditem) ? 1 : 0);\n\n            // Handling multiselect for mobile device\n            if (this.multiselect && isMobile()) {\n                if (this.checkSelectionLimit(selectCount) || $listItem.isActive) {\n                    this.toggleListItemSelection($listItem);\n                } else {\n                    this.invokeEventCallback('selectionlimitexceed', {$event: evt});\n                }\n            } else if ((evt.ctrlKey || evt.metaKey) && this.multiselect) {\n                if (this.checkSelectionLimit(selectCount) || $listItem.isActive) {\n                    this.firstSelectedItem = this.lastSelectedItem = $listItem;\n                    this.toggleListItemSelection($listItem);\n                } else {\n                    this.invokeEventCallback('selectionlimitexceed', {$event: evt});\n                }\n            } else if (evt.shiftKey && this.multiselect) {\n                let first = $listItem.context.index;\n                let last = this.firstSelectedItem.context.index;\n\n                // if first is greater than last, then swap values\n                if (first > last) {\n                    last = [first, first = last][0];\n                }\n                if (this.checkSelectionLimit(last - first)) {\n                    this.clearSelectedItems();\n                    this.listItems.forEach(($liItem: ListItemDirective) => {\n                        const index = $liItem.context.index;\n                        if (index >= first && index <= last) {\n                            this.toggleListItemSelection($liItem);\n                        }\n                    });\n                    this.lastSelectedItem = $listItem;\n                } else {\n                    this.invokeEventCallback('selectionlimitexceed', {$event: evt});\n                }\n\n            } else {\n                if (!$listItem.isActive || selectCount > 1) {\n                    this.clearSelectedItems();\n                    this.toggleListItemSelection($listItem);\n                    this.firstSelectedItem = this.lastSelectedItem = $listItem;\n                }\n            }\n            $appDigest();\n        }\n    }\n\n    // Empty the list content on clear\n    public clear() {\n        this.updateFieldDefs([]);\n    }\n\n    /**\n     * deselects item in the list.\n     * @param val: index | model of the list item.\n     */\n    public deselectItem(val: any) {\n        const listItem = this.getItemRefByIndexOrModel(val);\n        if (listItem && listItem.isActive) {\n            this.toggleListItemSelection(listItem);\n        }\n    }\n\n    /**\n     * selects item in the list.\n     * @param val: index | model of the list item.\n     */\n    public selectItem(val, statePersistenceTriggered?) {\n        const listItem = this.getItemRefByIndexOrModel(val);\n        if (!listItem) {\n            return;\n        }\n        if (!listItem.isActive) {\n            this.toggleListItemSelection(listItem, statePersistenceTriggered);\n        }\n        // focus the element.\n        listItem.nativeElement.focus();\n    }\n\n    ngOnInit() {\n        super.ngOnInit();\n        this.handleHeaderClick = noop;\n        setTimeout(() => {\n            this.debouncedFetchNextDatasetOnScroll = this.paginationService.debouncedFetchNextDatasetOnScroll(this.dataNavigator, DEBOUNCE_TIMES.PAGINATION_DEBOUNCE_TIME, this);\n        }, 0);\n        this._items = [];\n        this.fieldDefs = [];\n        this.reorderProps = {\n            minIndex: null,\n            maxIndex: null\n        };\n    }\n\n    ngAfterViewInit() {\n        this.promiseResolverFn();\n        this.propsInitPromise.then(() => {\n            super.ngAfterViewInit();\n            this.setUpCUDHandlers();\n            this.selectedItemWidgets = this.multiselect ? [] : {};\n            var ele = $(this.nativeElement).find('.app-livelist-container');\n\n            if (this.enablereorder && !this.groupby) {\n                if (ele) {\n                    ele.attr('aria-describedby', this.titleId);\n                }\n                this.configureDnD();\n            }\n            if (!this.enablereorder) {\n                if (ele) {\n                    ele.removeAttr('aria-describedby');\n                }\n            }\n            if (this.groupby && this.collapsible) {\n                this.handleHeaderClick = handleHeaderClick;\n                this.toggleAllHeaders = toggleAllHeaders.bind(undefined, this);\n            }\n            setListClass(this);\n        });\n        this.setupHandlers();\n        const $ul = this.nativeElement.querySelector('ul.app-livelist-container');\n        styler($ul as HTMLElement, this, APPLY_STYLES_TYPE.SCROLLABLE_CONTAINER);\n        if (this.enablereorder) {\n            if ($ul) {\n                $ul.setAttribute('aria-describedby', this.titleId);\n            }\n        }\n        if (!this.enablereorder) {\n            if ($ul) {\n                $ul.removeAttribute('aria-describedby');\n            }\n        }\n    }\n\n    ngOnDestroy() {\n        if (this._listAnimator && this._listAnimator.$btnSubscription) {\n            this._listAnimator.$btnSubscription.unsubscribe();\n            this._listAnimator = null;\n        }\n        \n        // MEMORY LEAK FIX: Unsubscribe from all app subscriptions\n        if (this._listenerDestroyers) {\n            this._listenerDestroyers.forEach(d => d && d());\n            this._listenerDestroyers = [];\n        }\n\n        // MEMORY LEAK FIX: Unsubscribe from navigator watches\n        if (this.navigatorResultWatch) {\n            this.navigatorResultWatch.unsubscribe();\n            this.navigatorResultWatch = null;\n        }\n        if (this.navigatorMaxResultWatch) {\n            this.navigatorMaxResultWatch.unsubscribe();\n            this.navigatorMaxResultWatch = null;\n        }\n\n        // MEMORY LEAK FIX: Unsubscribe from listItems changes\n        if (this.listItemsChangesSubscription) {\n            this.listItemsChangesSubscription.unsubscribe();\n            this.listItemsChangesSubscription = null;\n        }\n\n        // MEMORY LEAK FIX: Remove native event listener\n        const ulElement = this.nativeElement?.querySelector('ul.app-livelist-container');\n        if (ulElement && this.boundClickHandler) {\n            try {\n                ulElement.removeEventListener('click', this.boundClickHandler, true);\n            } catch (e) {\n                // Silently handle cleanup errors\n            }\n            this.boundClickHandler = null;\n        }\n\n        // MEMORY LEAK FIX: Destroy jQuery sortable widget\n        if (this.$ulEle && this.$ulEle.sortable) {\n            try {\n                this.$ulEle.sortable('destroy');\n            } catch (e) {\n                // Ignore errors during destroy\n            }\n            this.$ulEle = null;\n        }\n\n        // MEMORY LEAK FIX: Clear QueryList references\n        if (this.listItems) {\n            this.listItems = null;\n        }\n        if (this.btnComponents) {\n            this.btnComponents = null;\n        }\n\n        // MEMORY LEAK FIX: Clear ViewChild and ContentChild references\n        this.dataNavigator = null;\n        this.listTemplate = null;\n        this.listLeftActionTemplate = null;\n        this.listRightActionTemplate = null;\n\n        // MEMORY LEAK FIX: Clear all data arrays and objects\n        this.fieldDefs = [];\n        this._items = [];\n        this.groupedData = null;\n        if (Array.isArray(this.selectedItemWidgets)) {\n            this.selectedItemWidgets = [];\n        } else {\n            this.selectedItemWidgets = {};\n        }\n\n        // MEMORY LEAK FIX: Remove add item event listener\n        const $addItem = document.getElementsByClassName(\"add-list-item\")[0];\n        if ($addItem && this.boundAddItemHandler) {\n            $addItem.removeEventListener('click', this.boundAddItemHandler);\n            this.boundAddItemHandler = null;\n        }\n\n        // MEMORY LEAK FIX: Nullify closures and references\n        this.debouncedFetchNextDatasetOnScroll = null;\n        this.firstSelectedItem = null;\n        this.lastSelectedItem = null;\n        this.reorderProps = null;\n\n        super.ngOnDestroy();\n    }\n\n    ngOnDetach() {\n        super.ngOnDetach();\n        this._pageLoad = true;\n    }\n\n    protected handleEvent(node: HTMLElement, eventName: string, eventCallback: Function, locals: any) {\n        // tap and doubleTap events are not getting propagated.So, using mouse events instead.\n        const touchToMouse = {\n            tap: 'click',\n            doubletap: 'dblclick'\n        };\n        if (includes(['click', 'tap', 'dblclick', 'doubletap'], eventName)) {\n            this.eventManager.addEventListener(\n                this.nativeElement,\n                touchToMouse[eventName] || eventName,\n                (evt) => {\n                    const target = $(evt.target).closest('.app-list-item');\n                    if (target.length) {\n                        const listItemContext: ListItemDirective = target.data('listItemContext');\n                        if (!listItemContext.disableItem) {\n                            this.invokeEventCallback(eventName, {\n                                widget: listItemContext,\n                                $event: evt,\n                                item: listItemContext.item\n                            });\n                        }\n                    }\n                }\n            );\n        }\n    }\n\n    private getConfiguredState() {\n        const mode = this.statePersistence.computeMode(this.statehandler);\n        return mode && mode.toLowerCase();\n    }\n\n    private handleStateParams(options) {\n        if (this._pageLoad && this.getConfiguredState() !== 'none') {\n            this._pageLoad = false;\n            const widgetState = this.statePersistence.getWidgetState(this);\n            if (get(widgetState, 'pagination')) {\n                options.options = options.options || {};\n                options.options.page = widgetState.pagination;\n            }\n            if (get(widgetState, 'selectedItem')) {\n                this._selectedItemsExist = true;\n            }\n        }\n    }\n\n    private triggerWMEvent(eventName, item?) {\n        $invokeWatchers(true);\n        // If we have multiselect for the livelist(List with form template), in run mode deleting a record is getting failed. Becuase the selecteditem will be array of objects. So consider the last object.\n        let row = this.multiselect ? last(this.selecteditem) : this.selecteditem;\n        if (item) {\n            row = item;\n        }\n        this.app.notify('wm-event', {eventName, widgetName: this.name, row: row});\n    }\n\n    private resetNavigation() {\n        this.showNavigation = false;\n        this.navControls = undefined;\n        this.infScroll = false;\n        this.onDemandLoad = false;\n    }\n\n    private enableBasicNavigation() {\n        this.navControls = NAVIGATION_TYPE.BASIC;\n        this.showNavigation = true;\n    }\n\n    private enableInlineNavigation() {\n        this.navControls = NAVIGATION_TYPE.INLINE;\n    }\n\n    private enableClassicNavigation() {\n        this.navControls = NAVIGATION_TYPE.CLASSIC;\n        this.showNavigation = true;\n    }\n\n    private enablePagerNavigation() {\n        this.navControls = NAVIGATION_TYPE.PAGER;\n        this.showNavigation = true;\n    }\n\n    private setNavigationTypeNone() {\n        this.navControls = NAVIGATION_TYPE.NONE;\n        this.showNavigation = false;\n    }\n\n    private enableInfiniteScroll() {\n        this.infScroll = true;\n    }\n\n    private enableOnDemandLoad() {\n        this.onDemandLoad = true;\n        this.showNavigation = true;\n    }\n\n    /**\n     * Sets Navigation type for the list.\n     * @param type\n     */\n    private onNavigationTypeChange(type) {\n        this.resetNavigation();\n        switch (type) {\n            case NAVIGATION_TYPE.BASIC:\n                this.enableBasicNavigation();\n                break;\n            case NAVIGATION_TYPE.INLINE:\n                this.enableInlineNavigation();\n                break;\n            case NAVIGATION_TYPE.ADVANCED:\n            case NAVIGATION_TYPE.CLASSIC:\n                this.enableClassicNavigation();\n                break;\n            case NAVIGATION_TYPE.PAGER:\n                this.enablePagerNavigation();\n                break;\n            case NAVIGATION_TYPE.NONE :\n                this.setNavigationTypeNone();\n                break;\n            case NAVIGATION_TYPE.SCROLL:\n                this.enableInfiniteScroll();\n                break;\n            case NAVIGATION_TYPE.ONDEMAND:\n                this.enableOnDemandLoad();\n                break;\n        }\n    }\n\n    /**\n     * Update fieldDefs property, fieldDefs is the model of the List Component.\n     * fieldDefs is an Array type.\n     * @param newVal\n     */\n    private updateFieldDefs(newVal: Array<any>) {\n        if (this.infScroll || this.onDemandLoad) {\n            [this.fieldDefs, this.currentPage] = this.paginationService.updateFieldsOnPagination(this, newVal);\n        } else {\n            this.fieldDefs = newVal;\n        }\n\n        if (this.orderby) {\n            this.fieldDefs = getOrderedDataset(this.fieldDefs, this.orderby);\n        }\n        if (this.groupby) {\n            this.groupedData = groupData(this, this.fieldDefs, this.groupby, this.match, this.orderby, this.dateformat, this.datePipe, undefined, this.appDefaults);\n        }\n\n        if (!this.fieldDefs.length) {\n            this.noDataFound = true;\n            this.selecteditem = undefined;\n        }\n        $appDigest();\n        this.listItems.setDirty();\n    }\n\n    private onDataChange(newVal) {\n        // Check for newVal is not empty\n        if (!isEmpty(newVal)) {\n\n            this.noDataFound = false;\n            this.isDataChanged = true;\n\n            if (this.datasource && this.datasource.execute(DataSource.Operation.IS_API_AWARE)) {\n                // clone the the data in case of live and service variables to prevent the two-way binding for these variables.\n                newVal = cloneDeep(newVal);\n            }\n\n            if (isObject(newVal) && !isArray(newVal)) {\n                newVal = isEmpty(newVal) ? [] : [newVal];\n            }\n\n            if (isString(newVal)) {\n                newVal = newVal.split(',');\n            }\n\n            // if the page number is greater than 1 on initial load then we render the first page.\n            if (this.datasource && this.datasource.owner === 'App' && (this.infScroll || this.onDemandLoad) && !this.currentPage && this.datasource.execute(DataSource.Operation.GET_PAGING_OPTIONS).number > 0) {\n                newVal = this.datasource.execute(DataSource.Operation.LIST_RECORDS, {\n                    'page': 1\n                });\n            }\n\n            if (isArray(newVal)) {\n                if (newVal.length) {\n                    this.invokeEventCallback('beforedatarender', {$data: newVal});\n                }\n                this.updateFieldDefs(newVal);\n            }\n        } else {\n            this.updateFieldDefs([]);\n        }\n    }\n\n    // Updates the dataSource when pagination is enabled for the Component.\n    private setupDataSource() {\n        const dataNavigator = this.dataNavigator;\n\n        dataNavigator.options = {\n            maxResults: this.pagesize || 20\n        };\n\n        this.dataNavigatorWatched = true;\n\n        if (this.navigatorResultWatch) {\n            this.navigatorResultWatch.unsubscribe();\n        }\n        /*Register a watch on the \"result\" property of the \"dataNavigator\" so that the paginated data is displayed in the live-list.*/\n        this.navigatorResultWatch = dataNavigator.resultEmitter.subscribe((newVal: any) => {\n            this.onDataChange(newVal);\n        }, true);\n        /*De-register the watch if it is exists */\n        if (this.navigatorMaxResultWatch) {\n            this.navigatorMaxResultWatch.unsubscribe();\n        }\n        /*Register a watch on the \"maxResults\" property of the \"dataNavigator\" so that the \"pageSize\" is displayed in the live-list.*/\n        this.navigatorMaxResultWatch = dataNavigator.maxResultsEmitter.subscribe((val) => {\n            this.pagesize = val;\n        });\n\n        dataNavigator.maxResults = this.pagesize || 20;\n        this.removePropertyBinding('dataset');\n        // when list having \"datasetboundexpr\" attr indicates that list is bound to item context\n        // when dataset is bound to \"item.FIELD\" then item context is passed as the datasource.\n        const datasetBoundExpr = this.getAttr('datasetboundexpr');\n        this.dataNavigator.setBindDataSet(\n            this.binddataset,\n            this.viewParent,\n            datasetBoundExpr ? this.context : this.datasource,\n            this.dataset,\n            this.binddatasource,\n            datasetBoundExpr,\n            this.statehandler\n        );\n    }\n\n    private onDataSetChange(newVal) {\n        if (get(this.datasource, 'category') === 'wm.Variable' && this.getConfiguredState() !== 'none' && this._pageLoad) {\n            const widgetState = this.statePersistence.getWidgetState(this);\n            this._pageLoad = false;\n            if (this.allowpagesizechange) { // maintain updated page size in the statePersistence\n                if (get(widgetState, 'pagination') || get(widgetState, 'pagesize')) {\n                    this.dataNavigator.pageChanged({page: widgetState.pagination || 1, pagesize: widgetState.pagesize}, true);\n                }\n            } else {\n                if (get(widgetState, 'pagination')) {\n                    this.dataNavigator.pageChanged({page: widgetState.pagination}, true);\n                }\n            }\n            if (get(widgetState, 'selectedItem')) {\n                this._selectedItemsExist = true;\n            }\n        }\n        if (!this.dataNavigatorWatched) {\n            if (this.navigation && this.navigation !== NAVIGATION_TYPE.NONE) {\n                this.setupDataSource();\n            } else {\n                this.onDataChange(newVal);\n            }\n        } else if (this.navigation && this.navigation !== NAVIGATION_TYPE.NONE) {\n            // If navigation is already setup and datasource is changed, update the datasource on navigation\n            this.dataNavigator.setDataSource(this.datasource);\n        }\n    }\n\n    // All the ListItem's Active state is set to false.\n    private deselectListItems() {\n        this.listItems.forEach(item => item.isActive = false);\n    }\n\n    // Deselect all the ListItems and clear the selecteditem(InOutBound Property model)\n    private clearSelectedItems() {\n        this.deselectListItems();\n        this._items.length = 0;\n        $appDigest();\n    }\n\n    /**\n     * return the ListItemDirective instance by checking the equality of the model.\n     * @param listModel: model to be searched for\n     * @returns ListItem if the model is matched else return null.\n     */\n    private getListItemByModel(listModel): ListItemDirective {\n        return this.listItems.find((listItem) => {\n            let itemObj = listItem.item;\n            if (this.groupby && !has(listModel, '_groupIndex')) {\n                // If groupby is enabled, item contains _groupIndex property which should be excluded while comparing model.\n                itemObj = clone(itemObj);\n                delete itemObj._groupIndex;\n            }\n            if (isEqual(itemObj, listModel)) {\n                return true;\n            }\n        }) || null;\n    }\n\n    private updateSelectedItemsWidgets(statePersistenceTriggered?) {\n        let obj = {}, widgetState;\n        const pageNum = get(this.dataNavigator, 'dn.currentPage') || 1;\n        if (this.getConfiguredState() !== 'none') {\n            // remove previously configured selected items for current page and construct new ones later below.\n            widgetState = this.statePersistence.getWidgetState(this) || {};\n            if (get(widgetState, 'selectedItem')) {\n                // when multiselect is on and an item is selected without pressing CTRL, previously selected items in state should be empty.\n                if (this.multiselect && this.selecteditem.length === 1) {\n                    widgetState.selectedItem = [];\n                } else {\n                    remove(widgetState.selectedItem, function (selectedItem: any) {\n                        return selectedItem.page === pageNum;\n                    });\n                }\n            }\n        }\n        if (this.multiselect) {\n            (this.selectedItemWidgets as Array<WidgetRef>).length = 0;\n        }\n        this.listItems.forEach((item: ListItemDirective, index) => {\n            if (item.isActive) {\n                if (this.multiselect) {\n                    (this.selectedItemWidgets as Array<WidgetRef>).push(item.currentItemWidgets);\n                } else {\n                    this.selectedItemWidgets = item.currentItemWidgets;\n                }\n                obj = {page: pageNum, index: index};\n                if (get(widgetState, 'selectedItem') && this.multiselect) {\n                    if (!some(widgetState.selectedItem, obj)) {\n                        widgetState.selectedItem.push(obj);\n                    }\n                } else {\n                    widgetState.selectedItem = [obj];\n                }\n            }\n        });\n        if (this.getConfiguredState() !== 'none' && !statePersistenceTriggered) {\n            if (unsupportedStatePersistenceTypes.indexOf(this.navigation) < 0) {\n                this.statePersistence.removeWidgetState(this, 'selectedItem');\n                this.statePersistence.setWidgetState(this, {'selectedItem': widgetState.selectedItem});\n            } else {\n                console.warn('Retain State handling on Widget ' + this.name + ' is not supported for current pagination type.');\n            }\n        }\n    }\n\n    /**\n     * Selects the listItem and updates selecteditem property.\n     * If the listItem is already a selected item then deselects the item.\n     * @param {ListItemDirective} $listItem: Item to be selected of deselected.\n     */\n    private toggleListItemSelection($listItem: ListItemDirective, statePersistenceTriggered?) {\n        // item is not allowed to get selected if it is disabled.\n        if ($listItem && !$listItem.disableItem) {\n            let item = $listItem.item;\n            if (this.groupby && has(item, '_groupIndex')) {\n                // If groupby is enabled, item contains _groupIndex property which should be excluded from selecteditem.\n                item = clone(item);\n                delete item._groupIndex;\n            }\n            if ($listItem.isActive) {\n                this._items = pullAllWith(this._items, [item], isEqual);\n                $listItem.isActive = false;\n            } else {\n                // if multiselect is false, clear the selectItem list before adding an item to the selectItem list.\n                if (!this.multiselect) {\n                    this.clearSelectedItems();\n                }\n                this._items.push(item);\n                this.invokeEventCallback('select', {widget: $listItem, $data: item});\n                $listItem.isActive = true;\n            }\n            this.updateSelectedItemsWidgets(statePersistenceTriggered);\n        }\n    }\n\n    /**\n     * Method is Invoked when the model for the List Widget is changed.\n     * @param {QueryList<ListItemDirective>} listItems\n     */\n    private onListRender(listItems: QueryList<ListItemDirective>) {\n        // Added render callback event. This method(onListRender) is calling multiple times so checking isDatachanged flag because this falg is changed whenever new data is rendered.\n        if (this.isDataChanged) {\n            // Whenever dataset is changed, trigger watchers to evaluate listitem bind expressions.\n            $invokeWatchers(true);\n            this.invokeEventCallback('render', {$data: this.fieldDefs});\n        }\n        if (this.isDataChanged && this.getConfiguredState() !== 'none' && listItems.length && this._selectedItemsExist) {\n            const widgetState = this.statePersistence.getWidgetState(this);\n            if (get(widgetState, 'selectedItem')) {\n                this._selectedItemsExist = false;\n                const selectedItemsLength = isArray(this.selecteditem) ? this.selecteditem.length : toNumber(!isEmpty(this.selecteditem));\n                const currentPage = get(this.dataNavigator, 'dn.currentPage') || 1;\n                widgetState.pagination = widgetState.pagination || 1;\n                // to prevent item selection from being triggered more than once\n                if (selectedItemsLength !== widgetState.selectedItem.length && widgetState.pagination === currentPage) {\n                    widgetState.selectedItem.forEach((item) => {\n                        if (item.page === currentPage) {\n                            this.selectItem(item.index, true);\n                        }\n                    });\n                }\n            }\n        }\n        const selectedItems = isArray(this.selecteditem) ? this.selecteditem : [this.selecteditem];\n\n        this.firstSelectedItem = this.lastSelectedItem = null;\n\n        // don't select first item if multi-select is enabled and at least item is already selected in the list.\n        // don't select first item if state information has selected items\n        if (listItems.length && this.selectfirstitem && !(this._items.length && this.multiselect) && this._selectedItemsExist !== false) {\n            const $firstItem: ListItemDirective = listItems.first;\n\n            if (\n                !$firstItem.disableItem &&\n                this.isDataChanged &&\n                // \"infinite scroll\" or \"load on demand\" is enabled and at least one item is selected then dont alter the selected list items.\n                !(\n                    (this.infScroll || this.onDemandLoad) &&\n                    this._items.length\n                )\n            ) {\n                this.clearSelectedItems();\n                this.firstSelectedItem = this.lastSelectedItem = $firstItem;\n                // selecting the first record\n                this.selectItem(0);\n            }\n        } else {\n            this.deselectListItems();\n            selectedItems.forEach(selecteditem => {\n                const listItem: ListItemDirective = this.getListItemByModel(selecteditem);\n                if (listItem) {\n                    listItem.isActive = true;\n                    this.lastSelectedItem = listItem;\n                    // focus the active element\n                    listItem.nativeElement.focus();\n                }\n            });\n        }\n\n        if (this.fieldDefs.length && this.infScroll) {\n            const smoothScrollEl = this.$element.closest('[wmsmoothscroll]');\n            // In case of mobile app when modal exists, and list items height is greater than the modal content provide ccontainer a scrollable height\n            const modalBody = this.$element.closest('.modal-body');\n            const listHt = this.$element.find('ul').height();\n            const modalHt = window.innerHeight - 140;\n            if (isMobile() && modalBody.length && listHt > modalHt) {\n                this.$element.css('height', modalHt + 'px');\n            }\n            this.paginationService.bindScrollEvt(this, '> ul', DEBOUNCE_TIMES.PAGINATION_DEBOUNCE_TIME);\n\n        }\n\n        this.isDataChanged = false;\n    }\n\n    private setupHandlers() {\n        this.listItemsChangesSubscription = this.listItems.changes.subscribe(listItems => {\n            this.onListRender(listItems);\n            this.cdRef.detectChanges();\n        });\n        // handle click event in capturing phase.\n        this.boundClickHandler = ($event) => {\n            let target = $($event.target).closest('.app-list-item');\n            // Recursively find the current list item\n            while (target.get(0) && (target.closest('ul.app-livelist-container').get(0) !== $event.currentTarget)) {\n                target = target.parent().closest('.app-list-item');\n            }\n            this.triggerListItemSelection(target, $event);\n        };\n        const ulElement = this.nativeElement.querySelector('ul.app-livelist-container');\n        if (ulElement) {\n            ulElement.addEventListener('click', this.boundClickHandler, true);\n        }\n    }\n\n    // Triggers on drag start while reordering.\n    private onReorderStart(evt, ui) {\n        ui.placeholder.height(ui.item.height());\n        this.$ulEle.data('oldIndex', ui.item.index());\n    }\n\n    // Triggers during sorting\n    private onSort(evt, ui) {\n        // In case of infinite scroll, when the element doesn't have scroll enabled\n        // on dragging the element to last item's position manually trigger loading of next items\n        if (this.infScroll) {\n            const lastItemOffset = this.$ulEle.find(`[listitemindex=${this.fieldDefs.length - 1}]`).offset();\n            if (lastItemOffset && lastItemOffset.top < ui.offset.top) {\n                this.paginationService.bindScrollEvt(this, '> ul', DEBOUNCE_TIMES.PAGINATION_DEBOUNCE_TIME);\n                this.debouncedFetchNextDatasetOnScroll();\n            }\n        }\n    }\n\n    // Triggers after the sorting.\n    private onUpdate(evt, ui, presentIndex?) {\n        const data = this.fieldDefs;\n        // If ui is not present then it is called from drag and drop using keyboard\n        const newIndex = ui === undefined ? presentIndex : ui.item.index();\n        const oldIndex = this.$ulEle.data('oldIndex');\n\n        const minIndex = min([newIndex, oldIndex]);\n        const maxIndex = max([newIndex, oldIndex]);\n\n        const draggedItem = pullAt(data, oldIndex)[0];\n        // Modify the data list only if we find a draggedItem\n        if (draggedItem) {\n            if (this.getConfiguredState() !== 'none') {\n                this.statePersistence.removeWidgetState(this, 'selectedItem');\n            }\n\n            this.reorderProps.minIndex = min([minIndex, this.reorderProps.minIndex]);\n            this.reorderProps.maxIndex = max([maxIndex, this.reorderProps.maxIndex]);\n\n            data.splice(newIndex, 0, draggedItem);\n\n            this.cdRef.markForCheck();\n            this.cdRef.detectChanges();\n            const $changedItem = {\n                oldIndex: oldIndex,\n                newIndex: newIndex,\n                item: data[newIndex]\n            };\n            this.invokeEventCallback('reorder', {$event: evt, $data: data, $changedItem});\n            this.$ulEle.removeData('oldIndex');\n        }\n    }\n\n    // configures reordering the list items.\n    private configureDnD() {\n        let appendTo;\n        const modalEl = $(document).find('.modal');\n        if (this.getAttr('height')) { // when height is applied to the list, append should be the ul's parent as scroll is applied to the parent\n            appendTo = 'parent';\n        } else if (modalEl.length) { // In case of dialog, appendTo should be the modal ele\n            appendTo = modalEl[modalEl.length - 1];\n        } else { // As default append to should be body\n            appendTo = 'body';\n        }\n\n        const options = {\n            appendTo: appendTo,\n        };\n\n        const $el = $(this.nativeElement);\n        this.$ulEle = $el.find('.app-livelist-container');\n\n        configureDnD(this.$ulEle, options, this.onReorderStart.bind(this), this.onUpdate.bind(this), this.onSort.bind(this));\n\n        this.$ulEle.droppable({'accept': '.app-list-item'});\n\n\n\n    }\n\n    // returns true if the selection limit is reached.\n    private checkSelectionLimit(count: number) {\n        return (!this.selectionlimit || count < this.selectionlimit);\n    }\n\n    // returns listitem reference by index value.\n    private getListItemByIndex(index: number): ListItemDirective {\n        return this.listItems.toArray()[index];\n    }\n\n    /**\n     * return index of an (listItemDirective) in the listItem\n     * @param {ListItemDirective} item\n     * @returns {number}\n     */\n    private getListItemIndex(item: ListItemDirective) {\n        return this.listItems.toArray().indexOf(item);\n    }\n\n    /**\n     *  Returns ListItem Reference based on the input provided.\n     * @param val: index | model of the list item.\n     * @returns {ListItemDirective}\n     */\n    private getItemRefByIndexOrModel(val: any): ListItemDirective {\n        let listItem: ListItemDirective;\n        if (isNumber(val)) {\n            listItem = this.getListItemByIndex(val);\n        } else {\n            listItem = this.getListItemByModel(val);\n        }\n        return listItem;\n    }\n\n    private beforePaginationChange($event, $index) {\n        this.invokeEventCallback('paginationchange', {$event, $index});\n    }\n\n    trackByFn($index: number) {\n        return $index; // Return a unique identifier for each item\n    }\n\n    // Invoke the datasource variable by default when pulltorefresh event is not specified.\n    private subscribeToPullToRefresh() {\n        this._listenerDestroyers.push(this.app.subscribe('pulltorefresh', () => {\n            if (this.datasource && this.datasource.listRecords) {\n                this.datasource.listRecords();\n            }\n        }));\n    }\n\n    private boundAddItemHandler: (event: Event) => void;\n\n    private setUpCUDHandlers() {\n        const $addItem = document.getElementsByClassName(\"add-list-item\")[0];\n        if ($addItem) {\n            // MEMORY LEAK FIX: Store bound handler for cleanup\n            this.boundAddItemHandler = (evt: Event) => {\n                this.create();\n            };\n            // Triggered on click of add action\n            $addItem.addEventListener('click', this.boundAddItemHandler);\n        }\n    }\n}\n","@if (title || subheading || iconclass) {\n  <div class=\"panel-heading\">\n    <h3 class=\"panel-title\">\n      <div class=\"pull-left\">\n        <i class=\"app-icon panel-icon {{iconclass}}\" aria-hidden=\"true\" [hidden]=\"!iconclass\"></i>\n      </div>\n      <div class=\"pull-left\">\n        <div class=\"heading\" [innerHTML]=\"title\"></div>\n        <div class=\"description\" [innerHTML]=\"subheading\"></div>\n      </div>\n    </h3>\n  </div>\n}\n\n@if (navigation === 'Inline' && !noDataFound) {\n  <div class=\"app-datanavigator\" [attr.aria-disabled]=\"dataNavigator.isDisablePrevious\" aria-label=\"Page navigation\">\n    <ul class=\"pager\">\n      <li class=\"previous\" [ngClass]=\"{'disabled': (dataNavigator ? dataNavigator.isDisablePrevious : true)}\">\n        <a href=\"javascript:void(0);\" (click)=\"dataNavigator.navigatePage('prev', $event)\"\n          [attr.aria-disabled]=\"dataNavigator.isDisablePrevious\">\n          <i class=\"wi wi-chevron-left\" aria-hidden=\"true\"></i>\n          <span class=\"sr-only\">Go to Previous page {{dataNavigator.isDisablePrevious ? ', Disabled' : ''}}</span>\n        </a>\n      </li>\n    </ul>\n  </div>\n}\n@if (navigation === 'Inline' && !noDataFound) {\n  <div aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\"> {{'Page ' + dataNavigator.dn.currentPage + ' of ' + dataNavigator.pageCount }}</div>\n}\n\n<div>\n  @if (enablereorder) {\n    <div id={{titleId}} class=\"sr-only\">\n      Press space bar to toggle drag drop mode, use arrow keys to move selected elements.\n    </div>\n  }\n\n  @if (listItems && enablereorder && currentIndex) {\n    <div aria-live=\"assertive\" class=\"sr-only\" >\n      {{ariaText + currentIndex + ' of ' +  listItems.length}}\n    </div>\n  }\n</div>\n\n<ul [attr.tabindex]=\"tabindex\"  class=\"app-livelist-container clearfix {{direction === 'horizontal' ? 'app-horizontal-list': ''}} {{listclass}}\" role=\"list\"\n  (keydown.enter)=\"handleKeyDown($event, 'select')\"\n\n  (keydown.space)=\"handleKeyDown($event, 'space')\"\n\n  (keydown.arrowup)=\"handleKeyDown($event, 'focusPrev')\"\n  (keydown.arrowdown)=\"handleKeyDown($event, 'focusNext')\"\n  (keydown.arrowleft)=\"handleKeyDown($event, 'focusPrev')\"\n  (keydown.arrowright)=\"handleKeyDown($event, 'focusNext')\"\n\n  (keydown.shift.arrowup)=\"handleKeyDown($event, 'selectPrev')\"\n  (keydown.shift.arrowdown)=\"handleKeyDown($event, 'selectNext')\"\n  (keydown.shift.arrowleft)=\"handleKeyDown($event, 'selectPrev')\"\n  (keydown.shift.arrowright)=\"handleKeyDown($event, 'selectNext')\"\n  [hidden]=\"noDataFound && !variableInflight\"\n  >\n  @if (!groupby) {\n    @for (item of fieldDefs; track item) {\n      <li class=\"app-list-item {{direction === 'horizontal' ? '' : itemsPerRowClass}}\" [ngClass]=\"listItemRef.itemClass\"\n        [wmListItem]=\"item\"\n        #listItemRef=\"listItemRef\"\n        [attr.tabindex]=\"tabindex\"\n        role=\"listitem\">\n        <ng-container [ngTemplateOutlet]=\"listTemplate\"\n          [ngTemplateOutletInjector]=\"createCustomInjector('falt_' + listItemRef.trackId, {item: item, $index: $index, itemRef: listItemRef, $first: $first, $last: $last, currentItemWidgets: listItemRef.currentItemWidgets})\"\n        [ngTemplateOutletContext]=\"{item: item, $index: $index, itemRef: listItemRef, $first: $first, $last: $last, currentItemWidgets: listItemRef.currentItemWidgets}\"></ng-container>\n      </li>\n    }\n  } @else {\n    @for (groupObj of groupedData; track groupObj; let groupIndex = $index) {\n      <li class=\"app-list-item-group clearfix\">\n        <ul [attr.tabindex]=\"tabindex\" class=\"list-group item-group\" [ngClass]=\"listclass\">\n          <li class=\"app-list-item-header list-item list-group-header\" (click)=\"handleHeaderClick($event)\" [ngClass]=\"{'collapsible-content': collapsible}\">\n            <h4>{{groupObj.key}}\n              <div class=\"header-action\">\n                @if (collapsible) {\n                  <i class=\"app-icon wi action wi-chevron-up\"></i>\n                }\n                @if (showcount) {\n                  <span class=\"label label-default\">{{groupObj.data.length}}</span>\n                }\n              </div>\n            </h4>\n          </li>\n          <li class=\"list-group-container\">\n            <ul class=\"list-group clearfix {{direction === 'horizontal' ? 'app-horizontal-list': ''}}\">\n              @for (item of groupObj.data; track trackByFn($index, item)) {\n                <li [attr.tabindex]=\"tabindex\"\n                  class=\"app-list-item group-list-item {{itemsPerRowClass}}\"\n                  [ngClass]=\"listItemRef.itemClass\"\n                  [wmListItem]=\"item\" #listItemRef=\"listItemRef\">\n                  <ng-container [ngTemplateOutlet]=\"listTemplate\"\n                    [ngTemplateOutletInjector]=\"createCustomInjector('group_' + listItemRef.trackId, {item: item, $index: $index, itemRef: listItemRef, $first: $first, $last: $last, currentItemWidgets: listItemRef.currentItemWidgets})\"\n                  [ngTemplateOutletContext]=\"{item: item, $index: $index, itemRef: listItemRef, $first: $first, $last: $last, currentItemWidgets: listItemRef.currentItemWidgets}\"></ng-container>\n                </li>\n              }\n            </ul>\n          </li>\n        </ul>\n      </li>\n    }\n  }\n  <ng-container [ngTemplateOutlet]=\"listLeftActionTemplate\"></ng-container>\n  <ng-container [ngTemplateOutlet]=\"listRightActionTemplate\"></ng-container>\n</ul>\n\n@if (noDataFound && !variableInflight) {\n  <div class=\"no-data-msg\" [textContent]=\"nodatamessage\"></div>\n}\n\n@if (variableInflight && !pulltorefresh) {\n  <div class=\"loading-data-msg\">\n    <span>\n      <i class=\"app-icon panel-icon fa-spin\" aria-hidden=\"true\" [ngClass]=\"loadingicon\"></i>\n      <span class=\"sr-only\">Loading</span>\n      <span class=\"loading-text\" [textContent]=\"loadingdatamsg\"></span>\n    </span>\n  </div>\n}\n\n@if (navigation === 'Inline' && !noDataFound) {\n  <div class=\"app-datanavigator\" [attr.aria-disabled]=\"dataNavigator.isDisableNext\">\n    <ul class=\"pager\">\n      <li class=\"next\" [ngClass]=\"{'disabled': (dataNavigator ? dataNavigator.isDisableNext  : true)}\">\n        <a href=\"javascript:void(0);\" (click)=\"dataNavigator.navigatePage('next', $event)\"\n          [attr.aria-disabled]=\"dataNavigator.isDisableNext\">\n          <i class=\"wi wi-chevron-right\" aria-hidden=\"true\"></i>\n          <span class=\"sr-only\">Go to Next page {{dataNavigator.isDisableNext ? ', Disabled' : ''}}</span>\n        </a>\n      </li>\n    </ul>\n  </div>\n}\n\n@if (navigation !== 'None') {\n  <div class=\"panel-footer\" [hidden]=\"!showNavigation || (onDemandLoad && dataNavigator.isDisableNext) || (dataNavigator?.dataSize <= pagesize && !allowpagesizechange) || (!dataNavigator.dataSize && !dataNavigator.datasource?.pagination?.next)\">\n    <nav wmPagination\n      navigationalign.bind=\"navigationalign\"\n      navigation.bind=\"navControls\"\n      showrecordcount.bind=\"showrecordcount\"\n      maxsize.bind=\"maxsize\"\n      boundarylinks.bind=\"boundarylinks\"\n      forceellipses.bind=\"forceellipses\"\n      directionlinks.bind=\"directionlinks\"\n      show.bind=\"!onDemandLoad\"\n      paginationchange.event=\"beforePaginationChange($event, $index)\"\n    ></nav>\n    @if (onDemandLoad) {\n      <a href=\"javascript:void(0);\"\n        (click)=\"dataNavigator.navigatePage('next', $event)\"\n        class=\"app-button btn btn-block\"\n        [ngClass]=\"paginationclass\"\n        [textContent]=\"ondemandmessage\"\n      ></a>\n    }\n  </div>\n}\n\n<!--This template will be displayed when groupby is specified-->\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1"],"mappings":"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"}