{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/data/pagination/src/pagination.props.ts","../../../../../projects/components/widgets/data/pagination/src/pagination.component.ts","../../../../../projects/components/widgets/data/pagination/src/pagination.component.html","../../../../../projects/components/widgets/data/pagination/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-pagination',\n        new Map(\n            [\n                ['boundarylinks', {value: false, ...PROP_BOOLEAN}],\n                ['class', PROP_STRING],\n                ['dataset', PROP_ANY],\n                ['directionlinks', {value: true, ...PROP_BOOLEAN}],\n                ['forceellipses', {value: true, ...PROP_BOOLEAN}],\n                ['allowpagesizechange', {value: false, ...PROP_BOOLEAN}],\n                ['allowpagesizechange', {value: false, ...PROP_BOOLEAN}],\n                ['pagesizeoptions', {value: '', ...PROP_STRING}],\n                ['maxResults', PROP_NUMBER],\n                ['maxsize', {value: 5, ...PROP_NUMBER}],\n                ['name', PROP_STRING],\n                ['navigation', {value: 'Basic', ...PROP_STRING}],\n                ['navigationalign', {value: 'left', ...PROP_STRING}],\n                ['navigationsize', PROP_STRING],\n                ['show', {value: true, ...PROP_BOOLEAN}],\n                ['showrecordcount', PROP_BOOLEAN],\n                ['tabindex', {value: 0, ...PROP_NUMBER}]\n            ]\n        )\n    );\n};\n","import {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {\n    AfterViewInit,\n    Component,\n    EventEmitter,\n    Inject,\n    Injector,\n    OnDestroy,\n    Optional,\n    Output,\n    SkipSelf,\n    ViewChild\n} from '@angular/core';\n\nimport {\n    $appDigest,\n    $watch,\n    adjustVerticalPosition,\n    AppConstants,\n    DataSource,\n    debounce,\n    isDefined,\n    switchClass,\n    triggerFn\n} from '@wm/core';\nimport {\n    DEBOUNCE_TIMES,\n    getOrderByExpr,\n    provideAsWidgetRef,\n    StylableComponent,\n    styler,\n    unsupportedStatePersistenceTypes,\n    WidgetRef\n} from '@wm/components/base';\nimport {registerProps} from './pagination.props';\nimport {forEach, get, isArray, isEmpty, isNull, isString, range} from \"lodash-es\";\nimport {PaginationModule} from 'ngx-bootstrap/pagination';\nimport {BsDropdownDirective, BsDropdownModule} from 'ngx-bootstrap/dropdown';\n\nconst DEFAULT_CLS = 'app-datanavigator clearfix';\nconst WIDGET_CONFIG = {widgetType: 'wm-pagination', hostClass: DEFAULT_CLS};\n\nconst sizeClasses = {\n    'Pager': {\n        'small': 'pager-sm',\n        'large': 'pager-lg'\n    },\n    'Basic': {\n        'small': 'pagination-sm',\n        'large': 'pagination-lg'\n    },\n    'Classic': {\n        'small': 'pagination-sm',\n        'large': 'pagination-lg'\n    }\n};\n@Component({\n  standalone: true,\n    imports: [CommonModule, FormsModule, PaginationModule, BsDropdownModule],\n    selector: '[wmPagination]',\n    templateUrl: './pagination.component.html',\n    providers: [\n        provideAsWidgetRef(PaginationComponent)\n    ]\n})\nexport class PaginationComponent extends StylableComponent implements AfterViewInit, OnDestroy {\n    static initializeProps = registerProps();\n    @Output() resultEmitter: EventEmitter<any> = new EventEmitter();\n    @Output() maxResultsEmitter: EventEmitter<any> = new EventEmitter();\n    @ViewChild(BsDropdownDirective) protected bsDropdown;\n    private dropdownScrollHandler!: ($event:any) => void;\n    datasource;\n    maxResults;\n    pageSizeOptions;\n    prevPageSize;\n    actualPageSize;\n    allowpagesizechange;\n    defaultPageSizeOptions = [];\n    focusedIndex = 0;\n    rowSummary;\n    navigationsize;\n    showrecordcount;\n\n    navcontrols;\n    navigation;\n\n    boundarylinks;\n    directionlinks;\n\n    navigationClass;\n    dn = {\n        currentPage: 1\n    };\n\n    pageCount = 0;\n    isDisableNext = true;\n    isDisablePrevious = true;\n    isDisableFirst = true;\n    isDisableLast = true;\n    isDisableCurrent;\n    dataSize;\n    prevshowrecordcount;\n    isDisableCount;\n    firstRow;\n    result;\n    __fullData;\n    dataset;\n    options;\n    statehandler;\n    filterFields;\n    sortOptions;\n    binddataset;\n    pagination;\n    logicalOp;\n\n    private _initTimeoutId: any; // Store timeout ID for cleanup\n    private _debouncedApplyDataset = debounce(() => this.widget.dataset = this.dataset, DEBOUNCE_TIMES.PAGINATION_DEBOUNCE_TIME);\n    private _debouncedPageChanged = debounce(event => {\n        const currentPage = event && event.page;\n        const maxResults = event && (event.pagesize || event.itemsPerPage) || this.maxResults;\n\n        // Do not call goToPage if page has not changed\n        if (currentPage !== this.dn.currentPage || this.maxResults !== maxResults) {\n            const inst = (this as any).parent || this;\n            this.dn.currentPage = currentPage;\n            this.maxResults = maxResults;\n            this.maxResultsEmitter.emit(this.maxResults);\n            inst.invokeEventCallback('paginationchange', {$event: undefined, $index: this.dn.currentPage});\n            this.goToPage();\n            if (this.navigation === 'Basic') {\n                this._setAriaForBasicNavigation();\n            }\n        }\n    }, DEBOUNCE_TIMES.PAGINATION_DEBOUNCE_TIME);\n\n    private _setAriaForBasicNavigation() {\n        forEach(this.nativeElement.getElementsByTagName('a'), (item) => {\n            item.setAttribute('href', 'javascript:void(0);');\n            const childNode = item.querySelector('span');\n            if (childNode?.dataset.isacitvepage === \"true\") {\n                item.setAttribute('aria-current', 'true');\n            }\n            if(childNode?.dataset.isdisabled === \"true\") {\n                item.setAttribute('aria-disabled', 'true');\n            } else {\n                item.removeAttribute('aria-disabled');\n            }\n        });\n    }\n\n    constructor(inj: Injector, @SkipSelf() @Inject(WidgetRef) public parent, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n        super(inj, WIDGET_CONFIG, explicitContext);\n        styler(this.nativeElement, this);\n        this._initTimeoutId = setTimeout(()=> {\n            // Guard against component destruction or parent being null\n            if (this.isDestroyed || !this.parent) {\n                return;\n            }\n            this.allowpagesizechange = this.parent.allowpagesizechange;\n            if(this.allowpagesizechange)\n                this.defaultPageSizeOptions =this.normalizeToNumberArray(this.parent?.pagesizeoptions);\n        }, 0);\n    }\n    normalizeToNumberArray(input) { // Handles all formats in one place: \"10,20,30\", [10,20,30], \"[10,20,30]\"\n        if (!input) return [];\n\n        let arr;\n\n        if (Array.isArray(input)) {\n            arr = input;\n        } else if (typeof input === \"string\") {\n            const trimmed = input.trim();\n\n            // handle \"[1,2,3]\"\n            if (trimmed.startsWith(\"[\") && trimmed.endsWith(\"]\")) {\n                try {\n                    arr = JSON.parse(trimmed);\n                } catch {\n                    arr = [];\n                }\n            } else {\n                // handle \"1,2,3\"\n                arr = trimmed.split(\",\");\n            }\n        } else {\n            return [];\n        }\n\n        return arr\n            .map(v => Number(v))\n            .filter(v => !isNaN(v))\n            .sort((a, b) => a - b);\n    }\n\n    setResult(result) {\n        // TODO: Emit event only if result is changed\n        this.result = result;\n        this.resultEmitter.emit(this.result);\n    }\n\n    // Update navigationClass based on navigation and navigationSize props\n    private updateNavSize() {\n        const sizeCls = sizeClasses[this.navcontrols];\n        if (sizeCls && this.navigationsize) {\n            this.navigationClass = sizeCls[this.navigationsize];\n        } else {\n            this.navigationClass = '';\n        }\n    }\n\n    // Function to reset the paging values to default.\n    resetPageNavigation() {\n        this.pageCount = 0;\n        this.dn.currentPage = 1;\n        this.dataSize = 0;\n    }\n\n    /*Function to calculate the paging values.*/\n    calculatePagingValues() {\n        this.pageCount = (this.dataSize > this.maxResults) ? (Math.ceil(this.dataSize / this.maxResults)) : (this.dataSize < 0 ? 0 : 1);\n        this.dn.currentPage = this.dn.currentPage || 1;\n    }\n\n    /*Function to set default values to the paging parameters*/\n    setDefaultPagingValues(dataSize, maxResults, currentPage) {\n        /*If neither 'dataSize' nor 'maxResults' is set, then set default values to the paging parameters.*/\n        if (!dataSize && !maxResults) {\n            this.pageCount = 1;\n            this.dn.currentPage = 1;\n            this.maxResults = dataSize;\n            this.dataSize = dataSize;\n        } else { /*Else, set the specified values and recalculate paging parameters.*/\n            this.maxResults = maxResults || this.maxResults;\n            this.dataSize = isDefined(dataSize) ? dataSize : this.dataSize;\n            this.dn.currentPage = currentPage || this.dn.currentPage;\n            this.calculatePagingValues();\n        }\n        this.maxResultsEmitter.emit(this.maxResults);\n    }\n\n    /*Function to check the dataSize and manipulate the navigator accordingly.*/\n    checkDataSize(dataSize, numberOfElements?, size?) {\n        /*If the dataSize is -1 or Integer.MAX_VALUE( which is 2147483647), then the total number of records is not known.\n         * Hence,\n         * 1. Hide the 'Total Record Count'.\n         * 2. Disable the 'GoToLastPage' link as the page number of the last page is not known.*/\n        if (dataSize === -1 || dataSize === AppConstants.INT_MAX_VALUE) {\n            this.prevshowrecordcount = this.showrecordcount;\n            this.isDisableLast = true;\n            this.isDisableCount = true;\n            this.showrecordcount = false;\n            // If number of records in current page is less than the max records size, this is the last page. So disable next button.\n            if (numberOfElements < size) {\n                this.isDisableNext = true;\n            }\n        } else {\n            this.isDisableCount = false;\n            this.showrecordcount = this.prevshowrecordcount || this.showrecordcount;\n        }\n    }\n\n    /*Function to disable navigation based on the current and total pages.*/\n    disableNavigation() {\n        const isCurrentPageFirst = (this.dn.currentPage === 1),\n            isCurrentPageLast = (this.dn.currentPage === this.pageCount);\n        if (!this.pagination?.next) {\n            this.isDisableFirst = this.isDisablePrevious = isCurrentPageFirst;\n            this.isDisableNext = this.isDisableLast = isCurrentPageLast;\n        } else {\n            // WMS-18867: In case of server side pagination, for pager type pagination depend on prev and next flags which are set by developer\n            this.isDisableFirst = this.isDisablePrevious = !this.pagination.prev;\n            this.isDisableNext = this.isDisableLast = !this.pagination.next;\n        }\n        this.isDisableCurrent = isCurrentPageFirst && isCurrentPageLast;\n        // In case of client side pagination, when load more reaches last page hide the on-demand grid ele\n        if (this.dataset && this.dataset.length && this.isDisableNext && this.parent.onDemandLoad && this.parent.widgetType === 'wm-table') {\n            this.parent.callDataGridMethod('hideLoadingIndicator', this.isDisableNext, this.parent.infScroll);\n        }\n    }\n\n    /*Function to check if the variable bound to the data-navigator has paging.*/\n    isDataSourceHasPaging() {\n        return this.datasource && this.datasource.execute(DataSource.Operation.IS_PAGEABLE);\n    }\n\n\n    private getPaginationStartIndex(): number {\n        const startIndex = this.datasource?._paginationConfig?.paginationStartIndex;\n        return isDefined(startIndex) && this.datasource?._paginationConfig?.type === 'page' ? Number(startIndex) : 1;\n    }\n\n    // this function returns an object which gives summary of the current page data (ex: In UI it is shown as  1 to 10 out of 50 records)\n    getPageDetails(startIndex, endIndex, totalRecords) {\n        this.rowSummary =  (isDefined(startIndex) && isDefined(endIndex) && isDefined(totalRecords)) ? {\n            startIndex: startIndex,\n            endIndex: endIndex,\n            totalRecords: totalRecords\n        }: {};\n    }\n\n    // Set the result for client side pagination\n    setNonPageableData(newVal) {\n        let dataSize,\n            maxResults,\n            currentPage,\n            startIndex;\n        dataSize = isArray(newVal) ? newVal.length : (isEmpty(newVal) ? 0 : 1);\n        maxResults = (this.options && this.options.maxResults) || dataSize;\n\n        if (this.allowpagesizechange) { // when default page size is not given then use maxResults instead of options.maxResults\n            maxResults = this.maxResults;\n        }\n        // For static variable, keep the current page. For other variables without pagination reset the page to 1\n        // Fix for [WMS-23263]: gridOptions.isNextPageData flag is false when dataset is changed from script, so setting current page to 1\n        if (this.datasource && (this.datasource.execute(DataSource.Operation.IS_API_AWARE) || (this.parent.widgetType === 'wm-table' && (this.parent.gridOptions.isNavTypeScrollOrOndemand() && (get(this.parent, 'gridOptions.lastActionPerformed') === this.parent.gridOptions.ACTIONS.DATASET_UPDATE || !get(this.parent, 'gridOptions.isNextPageData')))))) {\n            currentPage = 1;\n        } else {\n            currentPage = this.dn.currentPage || 1;\n        }\n\n        this.setDefaultPagingValues(dataSize, maxResults, currentPage);\n        this.disableNavigation();\n\n        startIndex = (this.dn.currentPage - 1) * this.maxResults;\n        this.getPageDetails(startIndex + 1, Math.min(startIndex + this.maxResults, newVal?.length), newVal?.length);\n        this.setResult(isArray(newVal) ? newVal.slice(startIndex, startIndex + this.maxResults) : newVal);\n    }\n\n    /*Function to set the values needed for pagination*/\n    private setPagingValues(newVal) {\n        let dataSize,\n            maxResults,\n            currentPage,\n            startIndex,\n            dataSource;\n        let variableOptions: any = {};\n        // Store the data in __fullData. This is used for client side searching witvah out modifying the actual dataset.\n        this.__fullData = newVal;\n        /*Check for sanity*/\n        if (this.binddataset) {\n            dataSource = this.datasource || {};\n            variableOptions = dataSource._options || {};\n            /*Check for number of elements in the data set*/\n            if (newVal) {\n                if (this.isDataSourceHasPaging()) {\n                    this.pagination = this.datasource.execute(DataSource.Operation.GET_PAGING_OPTIONS) || {};\n                    // If \"filterFields\" and \"sortOptions\" have been set, then set them so that the filters can be retained while fetching data upon page navigation.\n                    this.filterFields = variableOptions.filterFields || {};\n                    this.logicalOp = variableOptions.logicalOp || '';\n                    this.sortOptions = variableOptions.orderBy ||\n                        (isArray(this.pagination.sort) ? getOrderByExpr(this.pagination.sort) : '');\n                    dataSize = this.pagination.totalElements;\n                    maxResults = this.pagination.size = Number(this.pagination.size) ? this.pagination.size : get(this.datasource.dataSet, this.pagination.size);\n                    this.pagination.numberOfElements = Number(this.pagination.numberOfElements) ? this.pagination.numberOfElements : get(this.datasource.dataSet, this.pagination.numberOfElements)\n                    if (this.pagination.numberOfElements > 0) {\n                        if (isDefined(this.pagination.number) && this.getPaginationStartIndex() === 1) { // number is page number received from backend\n                            this.dn.currentPage = this.pagination.number + 1;\n                        }\n                        currentPage = this.dn.currentPage || 1;\n                    } else {\n                        currentPage = 1;\n                    }\n                    /* Sending pageCount undefined to calculate it again for query.*/\n                    this.setDefaultPagingValues(dataSize, maxResults, currentPage);\n                    this.disableNavigation();\n                    this.checkDataSize(dataSize, this.pagination.numberOfElements, this.pagination.size);\n                    startIndex = (currentPage - 1) * this.maxResults;\n                    this.getPageDetails(startIndex + 1, startIndex + Number(this.pagination.numberOfElements), dataSize);\n                    this.setResult(newVal);\n                } else if (!isString(newVal)) {\n                    this.setNonPageableData(newVal);\n                }\n            } else {\n                this.setResult(newVal);\n                this.resetPageNavigation();\n            }\n            if (this.navigation === 'Basic') {\n                this._setAriaForBasicNavigation();\n            }\n        } else {\n            if (newVal && !isString(newVal)) {\n                this.setNonPageableData(newVal);\n            }\n        }\n    }\n\n    /*Function to check if the current page is the first page*/\n    isFirstPage() {\n        return (this.dn.currentPage === 1 || !this.dn.currentPage);\n    }\n\n    /*Function to check if the current page is the last page*/\n    isLastPage() {\n        return (this.dn.currentPage === this.pageCount);\n    }\n\n    /*Function to navigate to the last page*/\n    goToLastPage(isRefresh, event, callback) {\n        if (!this.isLastPage()) {\n            this.dn.currentPage = this.pageCount;\n            this.goToPage(event, callback);\n        } else if (isRefresh) {\n            this.goToPage(event, callback);\n        }\n    }\n\n    /*Function to navigate to the first page*/\n    goToFirstPage(isRefresh, event, callback) {\n        if (!this.isFirstPage()) {\n            this.dn.currentPage = 1;\n            this.goToPage(event, callback);\n        } else if (isRefresh) {\n            this.goToPage(event, callback);\n        }\n    }\n\n    /*Function to navigate to the current page*/\n    goToPage(event?, callback?) {\n        this.firstRow = (this.dn.currentPage - 1) * this.maxResults;\n        const mode = this.parent.statePersistence.computeMode(this.statehandler),\n            allowpagesizechange = this.parent.allowpagesizechange;\n        if (mode && mode.toLowerCase() !== 'none' && (this.parent.widgetType === 'wm-table' || this.parent.widgetType === 'wm-list')) {\n            this.parent._selectedItemsExist = true;\n            if (this.isFirstPage() && !allowpagesizechange) {\n                this.parent.statePersistence.removeWidgetState(this.parent, 'pagination');\n            } else {\n                if (unsupportedStatePersistenceTypes.indexOf(this.parent.navigation) < 0) {\n                    const state: { pagination: number; pagesize?: number } = { pagination: this.dn.currentPage };\n                    if (allowpagesizechange) {\n                        state.pagesize = this.maxResults;\n                    }\n                    this.parent.statePersistence.setWidgetState(this.parent, state);\n                } else if (this.parent.widgetType === 'wm-list' || this.parent.widgetType === 'wm-table') {\n                    console.warn('Retain State handling on Widget ' + this.parent.name + ' is not supported for current pagination type.');\n                }\n            }\n            this.parent.currentpage = this.dn.currentPage;\n            this.parent.nativeElement?.setAttribute('currentpage', this.dn.currentPage);\n        }\n        // call getPageData after checking state config so that Static Variables can use it\n        this.getPageData(event, callback);\n    }\n\n    /*Function to be invoked after the data of the page has been fetched.*/\n    onPageDataReady(event, data, callback) {\n        this.disableNavigation();\n        this.invokeSetRecord(event, data);\n        triggerFn(callback);\n    }\n\n    /*Function to get data for the current page*/\n    getPageData(event, callback) {\n        let data,\n            startIndex;\n\n        if (this.isDataSourceHasPaging()) {\n            /**\n             * In table component, in case of on demand and scroll pagination\n             * When there is a change in data item which is not in current page\n             * Fetch the items of the page where the change is made\n             * */\n            let pageIndex = this.dn.currentPage;\n            if (this.isEditNotInCurrentPage() && this.parent.gridOptions.lastActionPerformed !== 'delete') {\n                pageIndex = this.parent.actionRowPage;\n            }\n            this.datasource.execute(DataSource.Operation.LIST_RECORDS, {\n                'page': (pageIndex - 1) + this.getPaginationStartIndex(),\n                'size': this.maxResults,\n                'filterFields': this.filterFields,\n                'orderBy': this.sortOptions,\n                'logicalOp': this.logicalOp,\n                'matchMode': 'anywhereignorecase'\n            }).then(response => {\n                this.onPageDataReady(event, response && response.data, callback);\n                startIndex = (this.dn.currentPage - 1) * this.maxResults;\n                this.getPageDetails(startIndex + 1 , startIndex + Number(this.pagination?.numberOfElements), this.pagination?.totalElements);\n                $appDigest();\n            }, error => {\n                // If error is undefined, do not show any message as this may be discarded request\n                if (error) {\n                    // TODO: Handle Error\n                    // wmToaster.show('error', 'ERROR', 'Unable to get data of page -' + this.dn.currentPage + ':' + error);\n                }\n            });\n        } else {\n            if (this.isEditNotInCurrentPage()) {\n                startIndex = (this.parent.actionRowPage - 1) * this.maxResults;\n            } else {\n                startIndex = (this.dn.currentPage - 1) * this.maxResults;\n            }\n            data = isArray(this.__fullData) ? this.__fullData.slice(startIndex, startIndex + this.maxResults) : this.__fullData;\n            this.getPageDetails(startIndex + 1 , Math.min(startIndex + this.maxResults, this.__fullData?.length), this.__fullData?.length);\n            this.setResult(data);\n            this.onPageDataReady(event, data, callback);\n        }\n    }\n\n    /*\n    Function to check if the edit action is performed on the previous page data of the table\n    */\n    isEditNotInCurrentPage() {\n        const pageIndex = this.dn.currentPage;\n        return this.parent.widgetType === 'wm-table' && pageIndex === this.parent.currentPage &&\n            this.parent.actionRowPage && this.parent.actionRowPage < pageIndex;\n    }\n\n    invokeSetRecord(event, data) {\n        // Trigger the event handler if exists.\n        const pageInfo = {\n            currentPage: this.dn.currentPage,\n            size: this.maxResults,\n            totalElements: this.dataSize,\n            totalPages: this.pageCount\n        };\n        if (this.parent) {\n            this.parent.invokeEventCallback('setrecord', {$event: event, $data: data, $index: this.dn.currentPage, pageInfo, data});\n        } else {\n            this.invokeEventCallback('setrecord', {$event: event, $data: data, $index: this.dn.currentPage, pageInfo, data});\n        }\n    }\n\n    /*Function to validate the page input.\n     In case of invalid input, navigate to the appropriate page; also return false.\n     In case of valid input, return true.*/\n    validateCurrentPage(event, callback?) {\n        /*If the value entered is greater than the last page number or invalid value, then highlighting the field showing error.*/\n        if (event && (isNaN(this.dn.currentPage) || this.dn.currentPage <= 0 || (this.pageCount && (this.dn.currentPage > this.pageCount || isNull(this.dn.currentPage))))) {\n            if (this.dn.currentPage <= 0) {\n                this.dn.currentPage = 1;\n                this.goToPage(event);\n            } else if (this.dn.currentPage > this.pageCount) {\n                this.dn.currentPage = this.pageCount;\n                this.goToPage(event);\n            }\n            return false;\n        }\n        return true;\n    }\n\n    onModelChange(event) {\n        if (!this.validateCurrentPage(event)) {\n            return;\n        }\n        this.goToPage(event);\n    }\n\n    onKeyDown(event) {\n        const targetEle = $(event.target).closest('a');\n        if (event.code === 'KeyE') {\n            targetEle.addClass('ng-invalid');\n            return false;\n        }\n        targetEle.removeClass('ng-invalid');\n        return true;\n    }\n\n    pageChanged(event: any) {\n       this._debouncedPageChanged(event);\n    }\n\n    /*Function to navigate to the respective pages.*/\n    navigatePage(index, event, isRefresh?, callback?) {\n        // when navigated to next page turn on the isDataLoading flag to show the loading indicator\n        if (isDefined(this.parent.isDataLoading) && !this.isDisableNext) {\n            this.parent.isDataLoading = true;\n            // In case of infinite scroll calling the showLoadingIndicator method to update the loading message immediately when navigated to next page\n            if (this.parent.infScroll) {\n                this.parent.variableInflight = true;\n                this.parent.callDataGridMethod('showLoadingIndicator', this.parent.loadingdatamsg, true);\n            }\n        }\n        // reset the last action performed to \"scroll\" and isDatasetUpdated to false\n        if (this.parent.widgetType === 'wm-table' && this.parent.gridOptions.isNavTypeScrollOrOndemand()) {\n            this.parent.gridOptions.setLastActionPerformed(this.parent.gridOptions.ACTIONS.DEFAULT);\n            this.parent.gridOptions.setIsDatasetUpdated(false);\n        }\n        this.invokeEventCallback('paginationchange', {$event: undefined, $index: this.dn.currentPage});\n\n        // Convert the current page to a valid page number.\n        this.dn.currentPage = +this.dn.currentPage;\n\n        switch (index) {\n            case 'first':\n                if(this.pagination?.next && this.datasource?.pagination) {\n                    this.datasource.pagination.isNext = false;\n                    this.datasource.pagination.isPrev = false;\n                }\n                this.goToFirstPage(isRefresh, event, callback);\n                return;\n            case 'prev':\n                /*Return if already on the first page.*/\n                if (!this.pagination?.next && (this.isFirstPage() || !this.validateCurrentPage(event, callback))) {\n                    return;\n                } else if (this.pagination?.next) { // WMS-18867: For server side pagination, skipping the regular flow and enabling isNext flag in pagination metadata\n                    this.datasource.pagination.isNext = false;\n                    this.datasource.pagination.isPrev = true;\n                }\n                /*Decrement the current page by 1.*/\n                this.dn.currentPage -= 1;\n                break;\n            case 'next':\n                /*Return if already on the last page.*/\n                if (!this.pagination?.next && (this.isLastPage() || !this.validateCurrentPage(event, callback))) {\n                    return;\n                } else if (this.pagination?.next) { // WMS-18867: For server side pagination, skipping the regular flow and enabling isPrev flag in pagination metadata\n                    this.datasource.pagination.isNext = true;\n                    this.datasource.pagination.isPrev = false;\n                }\n                /*Increment the current page by 1.*/\n                this.dn.currentPage += 1;\n                break;\n            case 'last':\n                this.goToLastPage(isRefresh, event, callback);\n                return;\n            default:\n                break;\n        }\n\n        /*Navigate to the current page.*/\n        this.goToPage(event, callback);\n    }\n\n    setBindDataSet(binddataset, parent, dataSource, dataset?, binddatasource?, datasetBoundExpr?, statehandler?) {\n        const parts = binddataset.split('.');\n        let bindPagingOptions;\n        this.statehandler = statehandler;\n        if (parts[0] === 'Variables' || parts[0] === 'Widgets') {\n            bindPagingOptions = `${parts[0]}.${parts[1]}.pagination`;\n        } else if (parts[0] === 'App' && parts[1] === 'activePage' && parts[2]?.includes('Variables')&& parts[3]) {\n            bindPagingOptions = `App.activePage.${parts[2]}.${parts[3]}.pagination`;\n        }\n        if (!binddatasource && dataset && !datasetBoundExpr) {\n            this.dataset = dataset;\n            if (this._debouncedApplyDataset) {\n                this._debouncedApplyDataset();\n            }\n            return;\n        }\n        this.binddataset = binddataset;\n        setTimeout(() => {\n            // watching for dataset changes even when dataset is bound to \"item.\" (i.e. by checking for datasetBoundExpr)\n            // item context is passed as dataSource here\n            // [Todo-CSP]: check if same expr fn is generated by parent widget (list, table)\n            this.registerDestroyListener(\n                $watch(\n                    binddataset,\n                    parent,\n                    datasetBoundExpr ? dataSource : {},\n                    nv =>  {\n                        if (nv) {\n                            this.dataset = nv;\n                            if (this._debouncedApplyDataset) {\n                                this._debouncedApplyDataset();\n                            }\n                        } else {\n                           // WMS-19285: Setting dataset on proxy only to handle propertychange handler call for undefined cases\n                            this.widget.dataset = nv;\n                        }\n                    }\n                )\n            );\n\n            // Register a watch on paging options. Call dataset property change handler even if paging options changes to reflect pagination state\n            if (!bindPagingOptions) {\n                return;\n            }\n            //[Todo-CSP]: either generate watch expr fn or register an event from the datasource itself\n            this.registerDestroyListener(\n                $watch(\n                    bindPagingOptions,\n                    parent,\n                    {},\n                    () => {\n                        if (this._debouncedApplyDataset) {\n                            this._debouncedApplyDataset();\n                        }\n                    }\n                )\n            );\n        });\n        // apply datasource only when dataset is not bound to \"item.FIELD\"\n        if (!datasetBoundExpr) {\n            this.datasource = dataSource;\n        }\n    }\n\n    // Set the datasource of pagination from the parent widget\n    setDataSource(dataSource) {\n        this.datasource = dataSource;\n    }\n\n    onPropertyChange(key: string, nv, ov) {\n        let pageSize, prevPageSize;\n        if (key === 'dataset') {\n            let data;\n            if (this.parent && this.parent.onDataNavigatorDataSetChange) {\n                data = this.parent.onDataNavigatorDataSetChange(nv);\n            } else {\n                data = nv;\n            }\n            // Set last action performed to \"dataset_update\" whenever dataset is changed in table component\n            if (this.parent.widgetType === 'wm-table') {\n                this.parent._triggeredByUser = false;\n            }\n            if (data?.length) { // calculate Pagesize options based on actual page size\n                if (this.isDataSourceHasPaging()) { // for Live variables\n                    const currentPageSize = get(data, 'pagination.size') || get(this.datasource, 'pagination.size'),\n                        totalElements = get(data, 'pagination.totalElements') || get(this.datasource, 'pagination.totalElements'),\n                        widgetState = this.parent.statePersistence.getWidgetState(this.parent);\n                    this.actualPageSize = widgetState?.actualpagesize || currentPageSize;\n                    this.actualPageSize = Number(this.actualPageSize) ? this.actualPageSize : get(this.datasource.dataSet, this.actualPageSize)\n                    if(this.defaultPageSizeOptions.length > 0){\n                         this.pageSizeOptions = [...this.defaultPageSizeOptions];\n                    }else{\n                        this.pageSizeOptions = range(this.actualPageSize,  Math.max(this.actualPageSize + 1, this.actualPageSize + totalElements), this.actualPageSize); // here data has only that page data and pagesize has totalNoof Elements\n                    }\n                    if (widgetState?.selectedItem && widgetState.actualpagesize !== widgetState.pagesize\n                        && +this.prevPageSize !== +(widgetState.pagesize || this.maxResults)) {\n                        const newPageSize = +(widgetState.pagesize || this.maxResults);\n                        if (!this.prevPageSize) {\n                            this.prevPageSize = widgetState.actualpagesize || this.actualPageSize || data?.length;\n                        }\n                        const updatedItems = this.handleStateParamsforNewPageSize(widgetState.selectedItem, this.prevPageSize,newPageSize);\n                        if (updatedItems) {\n                            this.parent.statePersistence.setWidgetState(this.parent, {\n                                pagination: 1,\n                                pagesize: this.maxResults,\n                                actualpagesize: this.actualPageSize || this.maxResults,\n                                selectedItem: updatedItems\n                            })\n                        }\n                        this.prevPageSize = newPageSize;\n                    }\n                } else {\n                    pageSize = this.parent.getActualPageSize();\n                    if(this.defaultPageSizeOptions.length > 0){\n                         this.pageSizeOptions = [...this.defaultPageSizeOptions];\n                    }else{\n                        this.pageSizeOptions = range(pageSize, data.length + pageSize, pageSize);\n                    }\n                }\n            }\n            // When the dataset is not in current page, but in previous ones directly set the result without setting page values\n            if (this.isEditNotInCurrentPage()) {\n                this.setResult(data);\n            } else {\n                this.setPagingValues(data);\n            }\n        } else if (key === 'navigation') {\n            if (nv === 'Advanced') { // Support for older projects where navigation type was advanced instead of clasic\n                this.navigation = 'Classic';\n            }\n            this.updateNavSize();\n            this.navcontrols = nv;\n        } else if (key === 'navigationsize') {\n            this.updateNavSize();\n        } else if (key === 'navigationalign') {\n            switchClass(this.nativeElement, `text-${nv}`, `text-${ov}`);\n        } else if (key === 'maxResults') {\n            this.setPagingValues(this.dataset);\n        } else {\n            super.onPropertyChange(key, nv, ov);\n        }\n    }\n   // change the selectedItems page number and index in the stateparams when pagesize is changed\n    handleStateParamsforNewPageSize(\n        selectedItem: { page: number; index: number }[],\n        oldPageSize: number,\n        newPageSize: number\n    ): { page: number; index: number }[] {\n        return selectedItem.map(({ page, index }) => {\n            const absoluteIndex = (page - 1) * oldPageSize + index;\n            const newPage = Math.floor(absoluteIndex / newPageSize) + 1; // back to 1-based\n            const newIndex = absoluteIndex % newPageSize;\n\n            return {\n                page: newPage,\n                index: newIndex\n            };\n        });\n    }\n\n    onDropdownKeydown(event, index) {\n        const $items = $('ul#dropdown-basic a.dropdown-item');\n        const maxIndex = this.pageSizeOptions.length - 1;\n        let selectedOption;\n\n        switch (event.key) {\n            case 'ArrowDown':\n            case 'Tab':\n                event.preventDefault();\n                if (event.key === 'Tab' && event.shiftKey) {\n                    // Treat Shift+Tab as ArrowUp\n                    this.focusedIndex = (index - 1) < 0 ? maxIndex : index - 1;\n                } else {\n                    // Treat Tab or ArrowDown as ArrowDown\n                    this.focusedIndex = (index + 1) > maxIndex ? 0 : index + 1;\n                }\n                break;\n            case 'ArrowUp':\n                event.preventDefault();\n                this.focusedIndex = (index - 1) < 0 ? maxIndex : index - 1;\n                break;\n\n            case 'Enter':\n                event.preventDefault();\n                selectedOption = this.pageSizeOptions[this.focusedIndex];\n                this.onPageSizeChange(event, selectedOption);\n                this.closeDropdown();\n                return;\n\n            case 'Escape':\n                event.preventDefault();\n                this.closeDropdown();\n                return;\n\n            default:\n                return;\n        }\n\n        // Move focus after index is updated\n        setTimeout(() => {\n            $items.eq(this.focusedIndex)?.focus();\n        });\n\n    }\n\n    closeDropdown() {\n        // Close dropdown\n        this.bsDropdown.hide();\n        const $toggleButton = $('button[aria-controls=\"dropdown-basic\"]');\n        $toggleButton.focus(); // Return focus to button\n    }\n\n    // Function gets called on dropdown open & close\n    onOpenChange(isOpen) {\n        if (isOpen) {\n            this.focusedIndex = 0;\n            setTimeout(() => {\n                // manually focus the dropdown as dropdown has container=\"body\"\n                const $items = $('ul#dropdown-basic a.dropdown-item');\n                const $firstItem = $items.eq(this.focusedIndex);\n                $firstItem?.focus();\n            }, 0);\n        }\n    }\n    onPageSizeChange($event, newPageSize) {\n        const widgetState = this.parent.statePersistence.getWidgetState(this.parent);\n        let updatedItems;\n        const oldPageSize = widgetState?.pagesize || this.maxResults;\n        if (widgetState?.selectedItem) {\n            updatedItems = this.handleStateParamsforNewPageSize(widgetState.selectedItem, oldPageSize, +newPageSize);\n        }\n        this.actualPageSize = widgetState?.actualpagesize || this.actualPageSize || oldPageSize;\n        this.maxResults = +newPageSize;\n        this.prevPageSize = +newPageSize;\n        this.maxResultsEmitter.emit(this.maxResults);\n        if (this.isDataSourceHasPaging() && this.datasource) {\n            this.datasource.maxResults = this.maxResults;\n        }\n        if (updatedItems) {\n            this.parent.statePersistence.setWidgetState(this.parent, {\n                pagination: 1,\n                pagesize: this.maxResults,\n                actualpagesize: this.actualPageSize || this.maxResults,\n                selectedItem: updatedItems\n            })\n        } else {\n            this.parent.statePersistence.setWidgetState(this.parent, {\n                pagination: 1,\n                pagesize: this.maxResults,\n                actualpagesize: this.actualPageSize || this.maxResults\n            })\n        }\n        this.navigatePage('first', $event, true);\n        this.calculatePagingValues();\n        if(this.nativeElement.closest('popover-container, .popover')){\n            $event.stopPropagation();\n            this.bsDropdown.hide()\n        }\n    }\n\n    onDropDownShown($event: any) {\n\n        const container = $event?._element?.nativeElement as HTMLElement;\n        if(!container) return;\n\n        adjustVerticalPosition(\n            $(container),\n            this.nativeElement?.querySelector('.items-per-page div'),\n            this.bsDropdown._dropdown,\n            $(container?.querySelector('ul[id=\"dropdown-basic\"]'))\n        );\n\n        this.dropdownScrollHandler = () => {\n            this.onDropdownScroll();\n        };\n\n        window.addEventListener('scroll', this.dropdownScrollHandler, true);\n    }\n\n    onDropdownScroll() {\n        // on scroll boostrap is applying 3d translation to prevent from that added this dummy function\n      return;\n    }\n\n    onDropdownHidden() {\n        if (this.dropdownScrollHandler) {\n            window.removeEventListener('scroll', this.dropdownScrollHandler, true);\n        }\n        this.dropdownScrollHandler = undefined!;\n    }\n\n    ngAfterViewInit() {\n        const paginationElem =  this.nativeElement as HTMLElement;\n        paginationElem.onclick = (event) => {\n            event.stopPropagation();\n        };\n    }\n\n    ngOnDestroy() {\n        if (this.dropdownScrollHandler) {\n            window.removeEventListener('scroll', this.dropdownScrollHandler, true);\n        }\n        // MEMORY LEAK FIX: Clear initialization timeout if still pending\n        if (this._initTimeoutId) {\n            clearTimeout(this._initTimeoutId);\n            this._initTimeoutId = null;\n        }\n\n        // MEMORY LEAK FIX: Complete EventEmitters\n        if (this.resultEmitter) {\n            this.resultEmitter.complete();\n        }\n        if (this.maxResultsEmitter) {\n            this.maxResultsEmitter.complete();\n        }\n\n        // MEMORY LEAK FIX: Nullify debounced function closures\n        this._debouncedApplyDataset = null;\n        this._debouncedPageChanged = null;\n\n        // MEMORY LEAK FIX: Clear data arrays and objects\n        this.dataset = null;\n        this.__fullData = null;\n        this.result = null;\n        this.filterFields = null;\n        this.sortOptions = null;\n        this.options = null;\n\n        // MEMORY LEAK FIX: Clear page size options array\n        if (this.pageSizeOptions) {\n            this.pageSizeOptions = [];\n        }\n        if (this.defaultPageSizeOptions) {\n            this.defaultPageSizeOptions = [];\n        }\n\n        // MEMORY LEAK FIX: Clear datasource reference\n        this.datasource = null;\n\n        // MEMORY LEAK FIX: Clear parent reference\n        this.parent = null;\n\n        // Call parent ngOnDestroy (sets isDestroyed = true)\n        super.ngOnDestroy();\n    }\n}\n","\n@if (navcontrols === 'Classic') {\n<ul class=\"pagination advanced {{navigationClass}}\">\n    @if (allowpagesizechange &&  pageSizeOptions?.[0]<rowSummary?.totalRecords) {\n        <li class=\"items-per-page\">\n          <label [title]=\"appLocale.LABEL_ITEMS_PER_PAGE\" class=\"app-label\">{{appLocale.LABEL_ITEMS_PER_PAGE}} :</label>\n\n            <div class=\"btn-group\" dropdown  container=\"body\" (onShown)=\"onDropDownShown($event)\" (onHidden)=\"onDropdownHidden()\" (isOpenChange)=\"onOpenChange($event)\">\n                <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn app-button dropdown-toggle\"\n                        aria-controls=\"dropdown-basic\">\n                    {{maxResults}} <span class=\"caret\"></span>\n                </button>\n                <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu pagesize-options\"\n                    role=\"menu\" aria-labelledby=\"button-basic\">\n                    @for (option of pageSizeOptions; track option; let i = $index) {\n                            <li role=\"menuitem\" [ngClass]=\"{ 'active': option == maxResults }\">\n                                <a class=\"dropdown-item\" (click)=\"onPageSizeChange($event, option)\" (keydown)=\"onDropdownKeydown($event, i)\"\n                                   [attr.tabindex]=\"i === focusedIndex ? 0 : -1\">{{option}}</a>\n                            </li>\n                            }\n                </ul>\n            </div>\n        </li>\n        @if (rowSummary?.totalRecords) {\n        <li class=\"item-range\">\n        <div>\n            <span>{{rowSummary.startIndex}} - {{rowSummary.endIndex}}</span>\n            <span>of</span>\n            <span>{{rowSummary.totalRecords}}</span>\n            </div>\n        </li>\n        }\n    }\n    @if (!(dataSize<=maxResults)) {\n    <li [ngClass]=\"{'disabled':isDisableFirst}\">\n        <a [title]=\"appLocale.LABEL_FIRST\" name=\"first\" href=\"javascript:void(0);\"\n           [attr.aria-disabled]=\"isDisableFirst\"\n           (click)=\"navigatePage('first', $event)\">\n            <span aria-hidden=\"true\"><i class=\"wi wi-first-page\"></i></span>\n            <span class=\"sr-only\">Go to first page {{ isDisableFirst ? ' , Disabled' : ''}}</span>\n        </a>\n    </li>\n    }\n    @if (!(dataSize<=maxResults)) {\n    <li [ngClass]=\"{'disabled':isDisablePrevious}\">\n        <a [title]=\"appLocale.LABEL_PREVIOUS\" name=\"prev\" href=\"javascript:void(0);\"\n            [attr.aria-disabled]=\"isDisablePrevious\"\n            (click)=\"navigatePage('prev', $event)\">\n            <span aria-hidden=\"true\"><i class=\"wi wi-chevron-left\"></i></span>\n            <span class=\"sr-only\">Go to previous page {{ isDisablePrevious ? ', Disabled' : ''}}</span>\n        </a>\n    </li>\n    }\n    @if (!(dataSize<=maxResults)) {\n    <li class=\"pagecount disabled\">\n        <a href=\"javascript:void(0);\" aria-label=\"Change Page Number\">\n            <input [(ngModel)]=\"dn.currentPage\" [attr.aria-label]=\"'Showing Page ' + dn.currentPage + ' of ' + pageCount\" [disabled]=\"isDisableCurrent\"\n                   [ngModelOptions]=\"{standalone: true}\"\n                   type=\"number\"\n                  (keydown)=\"onKeyDown($event)\" (change)=\"onModelChange($event)\" class=\"form-control\"/>\n        </a>\n    </li>\n    }\n    @if (!(dataSize<=maxResults)) {\n    <li class=\"disabled\">\n        <a [hidden]=\"isDisableCount\"> / {{pageCount}}</a>\n    </li>\n    }\n    @if (!(dataSize<=maxResults)) {\n    <li [ngClass]=\"{'disabled':isDisableNext}\">\n        <a [title]=\"appLocale.LABEL_NEXT\" name=\"next\" href=\"javascript:void(0);\"\n           [attr.aria-disabled]=\"isDisableNext\"\n           (click)=\"navigatePage('next', $event)\">\n            <span aria-hidden=\"true\"><i class=\"wi wi-chevron-right\"></i></span>\n            <span class=\"sr-only\">Go to next page {{ isDisableNext ? ' , Disabled' : ''}}</span>\n        </a>\n    </li>\n    }\n    @if (!(dataSize<=maxResults)) {\n    <li [ngClass]=\"{'disabled':isDisableLast}\">\n      <a [title]=\"appLocale.LABEL_LAST\" name=\"last\" href=\"javascript:void(0);\"\n        [attr.aria-disabled]=\"isDisableLast\"\n        (click)=\"navigatePage('last', $event)\">\n        <span aria-hidden=\"true\"><i class=\"wi wi-last-page\"></i></span>\n        <span class=\"sr-only\">Go to last page {{ isDisableLast ? ' , Disabled' : ''}}</span>\n      </a>\n    </li>\n    }\n    @if (showrecordcount) {\n      <li class=\"totalcount disabled\">\n        <a href=\"javascript:void(0);\" tabindex=\"-1\" aria-disabled=\"true\">{{appLocale.LABEL_TOTAL_RECORDS}}: {{dataSize}}</a>\n      </li>\n    }\n</ul>\n}\n@if (navcontrols === 'Pager') {\n  <ul class=\"pager {{navigationClass}}\">\n        @if (allowpagesizechange &&  pageSizeOptions?.[0]<rowSummary?.totalRecords) {\n        <li class=\"items-per-page\">\n          <label [title]=\"appLocale.LABEL_ITEMS_PER_PAGE\" class=\"app-label\">{{appLocale.LABEL_ITEMS_PER_PAGE}} :</label>\n\n            <div class=\"btn-group\" dropdown container=\"body\" (onShown)=\"onDropDownShown($event)\" (onHidden)=\"onDropdownHidden()\" (isOpenChange)=\"onOpenChange($event)\">\n                <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn app-button dropdown-toggle\"\n                        aria-controls=\"dropdown-basic\">\n                    {{maxResults}} <span class=\"caret\"></span>\n                </button>\n                <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu pagesize-options\"\n                    role=\"menu\" aria-labelledby=\"button-basic\">\n                    @for (option of pageSizeOptions; track option; let i = $index) {\n                        <li role=\"menuitem\" [ngClass]=\"{ 'active': option == maxResults }\">\n                            <a class=\"dropdown-item\" (click)=\"onPageSizeChange($event, option)\" (keydown)=\"onDropdownKeydown($event, i)\"\n                         [attr.tabindex]=\"i === focusedIndex ? 0 : -1\">{{option}}</a>\n                        </li>\n                        }\n                </ul>\n            </div>\n        </li>\n        @if (rowSummary?.totalRecords) {\n        <li class=\"item-range\">\n            <div>\n                <span>{{rowSummary.startIndex}} - {{rowSummary.endIndex}}</span>\n                <span>of</span>\n                <span>{{rowSummary.totalRecords}}</span>\n            </div>\n        </li>\n        }\n    }\n@if (!(dataSize<=maxResults)) {\n    <li class=\"previous\" [ngClass]=\"{'disabled':isDisablePrevious}\">\n      <a href=\"javascript:void(0);\" (click)=\"navigatePage('prev', $event)\"\n        [attr.aria-disabled]=\"isDisablePrevious\">\n        <span aria-hidden=\"true\"><i class=\"wi wi-chevron-left\"></i></span>\n        {{appLocale.LABEL_PREVIOUS}}\n        <span class=\"sr-only\">{{ isDisablePrevious ? ' , Disabled' : ''}}</span>\n      </a>\n    </li>\n    <li class=\"next\" [ngClass]=\"{'disabled':isDisableNext}\">\n      <a href=\"javascript:void(0);\" (click)=\"navigatePage('next', $event)\"\n        [attr.aria-disabled]=\"isDisableNext\">\n        <span aria-hidden=\"true\"><i class=\"wi wi-chevron-right\"></i></span>\n        {{appLocale.LABEL_NEXT}}\n        <span class=\"sr-only\">{{ isDisableNext ? ' , Disabled' : ''}}</span>\n      </a>\n    </li>\n  }\n  </ul>\n}\n\n@if (navcontrols === 'Basic') {\n    @if (allowpagesizechange &&  pageSizeOptions?.[0]<rowSummary?.totalRecords) {\n      <div class=\"items-per-page\">\n        <label [title]=\"appLocale.LABEL_ITEMS_PER_PAGE\" class=\"app-label\">{{appLocale.LABEL_ITEMS_PER_PAGE }} :</label>\n\n        <div class=\"btn-group\" dropdown container=\"body\"  (onShown)=\"onDropDownShown($event)\" (onHidden)=\"onDropdownHidden()\" (isOpenChange)=\"onOpenChange($event)\">\n            <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn app-button dropdown-toggle\"\n                    aria-controls=\"dropdown-basic\">\n                {{maxResults}} <span class=\"caret\"></span>\n            </button>\n            <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu pagesize-options\"\n                role=\"menu\" aria-labelledby=\"button-basic\">\n                @for (option of pageSizeOptions; track option; let i = $index) {\n                    <li role=\"menuitem\" [ngClass]=\"{ 'active': option == maxResults }\">\n                        <a class=\"dropdown-item\" (click)=\"onPageSizeChange($event, option)\" (keydown)=\"onDropdownKeydown($event, i)\"\n                         [attr.tabindex]=\"i === focusedIndex ? 0 : -1\">{{option}}</a>\n                    </li>\n                    }\n            </ul>\n        </div>\n      </div>\n        @if (rowSummary?.totalRecords) {\n        <div class=\"item-range\">\n        <div>\n            <span>{{rowSummary.startIndex}} - {{rowSummary.endIndex}}</span>\n            <span>of</span>\n            <span>{{rowSummary.totalRecords}}</span>\n        </div>\n        </div>\n        }\n    }\n    @if (!(dataSize<=maxResults)) {\n      <pagination class=\"pagination basic\" [ngClass]=\"navigationClass\" role=\"navigation\"\n        [itemsPerPage]=\"maxResults\" [totalItems]=\"dataSize\"\n        (pageChanged)=\"pageChanged($event)\" [ngModelOptions]=\"{standalone:true}\" [ngModel]=\"dn.currentPage\"\n        [attr.aria-label]=\"'Showing Page ' + dn.currentPage + ' of ' + pageCount + ' pages'\"\n        [boundaryLinks]=\"boundarylinks\" [maxSize]=\"maxsize\"\n        [directionLinks]=\"directionlinks\"\n        firstText=\"Firtst\" lastText=\"Last\"\n        [customPreviousTemplate]=\"prevTemplate\"\n        [customNextTemplate]=\"nextTemplate\"\n        [customPageTemplate]=\"pageTemplate\"></pagination>\n    }\n}\n\n@if (navcontrols === 'Basic' && showrecordcount) {\n  <ul class=\"pagination\">\n    <li class=\"totalcount disabled basiccount\">\n      <a href=\"javascript:void(0);\" tabindex=\"-1\" aria-disabled=\"true\">{{appLocale.LABEL_TOTAL_RECORDS}}: {{dataSize}}</a>\n    </li>\n  </ul>\n}\n\n<ng-template #pageTemplate let-page>\n  <span class=\"sr-only\" [attr.data-isacitvepage]=\"page.active\">{{'Page '}}</span>\n  {{page.number}}\n  @if (page.active) {\n    <span class=\"sr-only\"> {{', Showing page ' + page.number + ' of ' + pageCount}}</span>\n  }\n</ng-template>\n<ng-template #prevTemplate let-disabled=\"disabled\">\n  <span class=\"sr-only\" [attr.data-isdisabled]=\"disabled\">Go to Previous page {{disabled ? ', Disabled' : ''}}</span>\n</ng-template>\n<ng-template #nextTemplate let-disabled=\"disabled\">\n  <span class=\"sr-only\" [attr.data-isdisabled]=\"disabled\">Go to Next page {{disabled ? ', Disabled' : ''}}</span>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}