{"version":3,"file":"eui-components-eui-paginator.mjs","sources":["../../eui-paginator/eui-paginator.component.ts","../../eui-paginator/eui-paginator.component.html","../../eui-paginator/index.ts","../../eui-paginator/eui-components-eui-paginator.ts"],"sourcesContent":["import {\n    Component,\n    OnInit,\n    Input,\n    OnDestroy,\n    EventEmitter,\n    Output,\n    OnChanges,\n    SimpleChanges,\n    HostBinding,\n    booleanAttribute,\n    inject,\n} from '@angular/core';\nimport { Subject, BehaviorSubject } from 'rxjs';\nimport { takeUntil, distinctUntilChanged } from 'rxjs/operators';\n// import { EuiAppShellService } from '@eui/core';\n\nimport { EuiPaginationEvent } from './models/pagination-event.model';\nimport { AsyncPipe, DecimalPipe } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { EUI_SELECT } from '@eui/components/eui-select';\n\n/**\n * @description\n * The eui-paginator component is in charge of the pagination by splitting up content or data into several pages and adding visual controls for better user experience like:\n * - identifying the current page: clearly identify which page the user is on by displaying the current page number.\n * - providing context into how many pages there are in total: can help provide clarity around the data displayed.\n * - providing various options for navigating: previous and next chevrons or links are the most useful way for the user to move forward or backward through pages of data.\n * - items per page: allows selecting the amount of data displayed per page.\n *\n *  Best practices & Usage\n * Generally, pagination is recommended to be used if there are more than 25 items displayed in one view. The default number of displayed items may vary depending on the context.\n *\n * The main benefits of using pagination:\n * - delivers structure and feedback over the displayed data\n * - supports embedded navigation (and in particular back and forward, first and last)\n * - pagination is accessible (see A11Y)\n * - pagination typically means smaller, shorter pages and as a result reduced load times\n * - compared to infinite scroll display, it helps to focus the user's mind and not continue to offer more and more choices.\n *\n * @usageNotes\n * ### Basic usage\n * ```html\n * <eui-paginator \n *   [length]=\"totalItems\" \n *   [pageSize]=\"10\" \n *   (pageChange)=\"onPageChange($event)\">\n * </eui-paginator>\n * ```\n *\n * ### With page number navigation\n * ```html\n * <eui-paginator \n *   [length]=\"100\" \n *   [page]=\"currentPage\"\n *   [hasPageNumberNavigation]=\"true\"\n *   [nbPageNumberNavigation]=\"5\">\n * </eui-paginator>\n * ```\n *\n * ### Basic mode (minimal UI)\n * ```html\n * <eui-paginator [length]=\"50\" [isBasicMode]=\"true\"></eui-paginator>\n * ```\n *\n * ### Accessibility\n * - Navigation buttons have descriptive labels for screen readers\n * - Current page and total pages announced to assistive technologies\n * - Keyboard navigable with standard tab and enter interactions\n * - Page size selector is a standard accessible dropdown\n *\n * ### Notes\n * - Use `hasDynamicLength` when total items count changes during pagination\n * - Page numbers are zero-indexed internally but displayed as 1-indexed\n * - Hide with `isHidden` when only one page exists\n * - Customize page size options via `pageSizeOptions` array\n */\n@Component({\n    selector: 'eui-paginator',\n    templateUrl: './eui-paginator.component.html',\n    styleUrl: './eui-paginator.scss',\n    imports: [\n        DecimalPipe,\n        AsyncPipe,\n        TranslateModule,\n        FormsModule,\n        ...EUI_ICON,\n        ...EUI_BUTTON,\n        ...EUI_SELECT,\n    ],\n    providers: [DecimalPipe],\n})\nexport class EuiPaginatorComponent implements OnInit, OnDestroy, OnChanges {\n    /**\n     * Sets the `data-e2e` attribute for the host element.\n     *\n     * @default 'eui-paginator'\n     */\n    @HostBinding('attr.data-e2e') @Input() e2eAttr = 'eui-paginator';\n    /**\n     * Sets the `class` attribute for the host element.\n     *\n     * @returns A string with all CSS classes applied.\n     */\n    @HostBinding('class')\n    get cssClasses(): string {\n        return [\n            'eui-paginator',\n            this.isHidden ? 'eui-paginator--hidden' : '',\n        ].join(' ').trim();\n    }\n    /**\n     * Sets the page size options that will be displayed in the dropdown.\n     *\n     * @default [5, 10, 25, 50, 100]\n     */\n    @Input() pageSizeOptions: number[] = [5, 10, 25, 50, 100];\n    /**\n     * Sets the number of items displayed in the page.\n     *\n     * @default 10\n     */\n    @Input() pageSize = 10;\n    /**\n     * Sets the current page number.\n     *\n     * @default 0\n     */\n    @Input() page = 0;\n    /**\n     * Sets the total number of items.\n     *\n     * @default 0\n     */\n    @Input() length = 0;\n    /**\n     * In combination with `hasPageNumberNavigation`, sets the number of page numbers displayed in the paginator.\n     *\n     * @default 5\n     */\n    @Input() nbPageNumberNavigation = 5;\n    /**\n     * Whether the paginator is hidden or not.\n     *\n     * @default false (visible)\n     */\n    @Input({ transform: booleanAttribute }) isHidden = false;\n    /**\n     * Whether the paginator is in basic mode or not.\n     * In this mode, the paginator will only display the previous and next buttons.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isBasicMode = false;\n    /**\n     * Whether the page number is displayed or not.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) hasPageNumberNavigation = false;\n    /**\n     * Whether the page number is displayed or not.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) hasPageNumberNavigationCompact = false;    \n    /**\n     * Whether the datasource length is dynamic or not.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) hasDynamicLength = false;\n    /**\n     * Whether the page size is displayed or not. Default: true.\n     *\n     * @default true\n     */\n    @Input({ transform: booleanAttribute }) hasPageSize = true;\n\n    /** Event emitted when the page has changed. */\n    @Output() pageChange = new EventEmitter<EuiPaginationEvent>();\n\n    /**\n     * Observable that emits the current page number, the page size and the number of pages.\n     */\n    public page$: BehaviorSubject<EuiPaginationEvent> = new BehaviorSubject(null);\n    /**\n     * Observable that emits the length of the datasource\n     */\n    public length$: BehaviorSubject<number> = new BehaviorSubject(0);\n    /**\n     * The range of items displayed in the paginator.\n     */\n    public range: string;\n    /**\n     * The range length of items displayed in the paginator.\n     */\n    public rangeLength: string;\n    /**\n     * The number of pages.\n     */\n    public nbPage: number;\n\n    // EuiAppShellService = inject(EuiAppShellService);\n    private nbPageNumberNav: number;\n    private destroy$: Subject<boolean> = new Subject<boolean>();\n    private decimal = inject(DecimalPipe);\n\n    ngOnChanges(c: SimpleChanges): void {\n        if (c && c.length) {\n            this.length$.next(c.length.currentValue);\n            this.getRange();\n        }\n        if (c && c.page) {\n            this.page$.next({ page: c.page.currentValue, pageSize: this.pageSize, nbPage: this.nbPage });\n            this.getRange();\n        }\n        if (c && c.pageSize) {\n            this.page$.next({ page: this.page, pageSize: c.pageSize.currentValue, nbPage: this.nbPage });\n            this.getRange();\n        }\n    }\n\n    ngOnInit(): void {\n        if (this.length) {\n            this.length$.next(this.length);\n        }\n\n        this.nbPageNumberNav = this.nbPageNumberNavigation;\n\n        this.length$.pipe(takeUntil(this.destroy$), distinctUntilChanged()).subscribe((length) => {\n            this.length = length;\n            this.nbPage = Math.ceil(this.length / this.pageSize);\n            if (!this.hasDynamicLength) {\n                this.page = 0;\n            }\n            this.getRange();\n\n            if (this.nbPage < this.nbPageNumberNavigation) {\n                this.nbPageNumberNav = this.nbPage;\n            } else {\n                this.nbPageNumberNav = this.nbPageNumberNavigation;\n            }\n\n            this.page$.next({ page: this.page, pageSize: this.pageSize, nbPage: this.nbPage });\n        });\n        this.page$.next({ page: this.page, pageSize: this.pageSize, nbPage: this.nbPage });\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.unsubscribe();\n    }\n\n    /**\n     * Returns the page number navigation array.\n     *\n     * @returns An array of page numbers.\n     */\n    get pageNumberNavigation(): number[] {\n        const pages = [];\n        for (let i = 0; i < this.nbPage; i++) {\n            pages.push(i);\n        }\n\n        const delta = Math.floor(this.nbPageNumberNav / 2);\n        let start = 0;\n        if (this.page - delta > 0) {\n            start = this.page - delta;\n        } else {\n            start = 0;\n        }\n\n        if (this.nbPage - this.page <= this.nbPageNumberNav - (delta + 1)) {\n            start = this.nbPage - this.nbPageNumberNav;\n        }\n\n        if (start < 0) {\n            start = 0;\n        }\n\n        const end = start + this.nbPageNumberNav;\n        return pages.slice(start, end);\n    }\n\n    /**\n     * Changes the page size by the one provided as parameter.\n     *\n     * @param size New page size.\n     */\n    public changePageSize(size: string): void {\n        this.pageSize = parseInt(size, 10);\n        this.nbPage = Math.ceil(this.length / this.pageSize);\n        this.page = 0;\n        this.page$.next({ page: this.page, pageSize: this.pageSize, nbPage: this.nbPage });\n        this.getRange();\n\n        if (this.nbPage < this.nbPageNumberNavigation) {\n            this.nbPageNumberNav = this.nbPage;\n        } else {\n            this.nbPageNumberNav = this.nbPageNumberNavigation;\n        }\n\n        this.pageChange.emit({ page: this.page, pageSize: this.pageSize, nbPage: this.nbPage });\n    }\n\n    /**\n     * Sets the page number to the one provided as parameter.\n     *\n     * @param page New page\n     * @param options\n     * `emitEvent`: When true or not provided, event is emitted. When false, no events are emitted\n     */\n    public goToPage(page: number, options?: { emitEvent: boolean }): void {\n        this.page = page;\n        this.page$.next({ page: this.page, pageSize: this.pageSize, nbPage: this.nbPage });\n        this.getRange();\n\n        if (!options || options?.emitEvent) {\n            this.pageChange.emit({ page: this.page, pageSize: this.pageSize, nbPage: this.nbPage });\n        }\n    }\n\n    /**\n     * Sets the page number to 0 (first page).\n     *\n     * @param options\n     * `emitEvent`: When true or not provided, event is emitted. When false, no events are emitted\n     */\n    public goFirstPage(options?: { emitEvent: boolean }): void {\n        this.page = 0;\n        this.page$.next({ page: this.page, pageSize: this.pageSize, nbPage: this.nbPage });\n        this.getRange();\n\n        if (!options || options?.emitEvent) {\n            this.pageChange.emit({ page: this.page, pageSize: this.pageSize, nbPage: this.nbPage });\n        }\n    }\n\n    /**\n     * Sets the page number to current - 1.\n     */\n    public goPreviousPage(): void {\n        this.page--;\n        this.page$.next({ page: this.page, pageSize: this.pageSize, nbPage: this.nbPage });\n        this.getRange();\n        this.pageChange.emit({ page: this.page, pageSize: this.pageSize, nbPage: this.nbPage });\n    }\n\n    /**\n     * Sets the page number to current + 1.\n     */\n    public goNextPage(): void {\n        this.page++;\n        this.page$.next({ page: this.page, pageSize: this.pageSize, nbPage: this.nbPage });\n        this.getRange();\n        this.pageChange.emit({ page: this.page, pageSize: this.pageSize, nbPage: this.nbPage });\n    }\n\n    /**\n     * Sets the page number to last page.\n     */\n    public goLastPage(): void {\n        this.page = this.nbPage - 1;\n        this.page$.next({ page: this.page, pageSize: this.pageSize, nbPage: this.nbPage });\n        this.getRange();\n        this.pageChange.emit({ page: this.page, pageSize: this.pageSize, nbPage: this.nbPage });\n    }\n\n    /**\n     * Gives new values to page number, page size and number of pages.\n     */\n    public setPage(page: EuiPaginationEvent): void {\n        this.page$.next(page);\n    }\n\n    /**\n     * Gives new value to the length of the datasource.\n     */\n    public setLength(length: number): void {\n        this.length$.next(length);\n    }\n\n    /**\n     * Calculates the range of items displayed in the paginator.\n     */\n    public getRange(): void {\n        const from = this.length > 0 ? this.page * this.pageSize + 1 : 0;\n        const limit = this.page * this.pageSize + this.pageSize;\n        const to = limit <= this.length ? limit : this.length;\n        this.range = from && to && this.length ? this.decimal.transform(from) + '–' + this.decimal.transform(to) : '';\n        this.rangeLength = this.length ? this.length.toString() : '';\n    }\n\n    /**\n     * Change the pagination to the given page number\n     *\n     * @param page 0-based page number to be displayed\n     * @param options\n     * `emitEvent`: When true or not provided, event is emitted. When false, no events are emitted\n     */\n    public getPage(page: number, options?: { emitEvent: boolean }): void {\n        setTimeout(() => {\n            this.goToPage(page, options);\n        });\n    }\n\n    /**\n     * Returns the current pagination state.\n     *\n     * @returns An object with the properties of the paginator state.\n     */\n    public getCurrentPagination(): EuiPaginationEvent {\n        return {\n            page: this.page,\n            pageSize: this.pageSize,\n            nbPage: this.nbPage,\n        };\n    }\n}\n","<div class=\"eui-paginator__page\">\n    @if (!isBasicMode || hasPageSize) {\n        <div class=\"eui-paginator__page-selector-wrapper\" [class.eui-paginator__page-selector-wrapper--compact]=\"hasPageNumberNavigationCompact\">\n            <div class=\"eui-paginator__page-selector\">\n                <div>{{ 'eui.euitable.ITEMS-PER-PAGE' | translate }}:</div>\n                <div class=\"page-size__select-wrapper\">\n                    <select euiSelect class=\"page-size__select\" ariaLabel=\"{{ 'eui.euitable.ITEMS-PER-PAGE' | translate }}\" [(ngModel)]=\"pageSize\" (ngModelChange)=\"changePageSize($event)\">\n                        @for (pageSizeOption of pageSizeOptions; track pageSizeOption) {\n                            <option value=\"{{ pageSizeOption }}\">{{ pageSizeOption }}</option>\n                        }\n                    </select>\n                </div>\n            </div>\n            @if ((length$ | async) > 0) {\n                <div class=\"eui-paginator__page-range-main\" role=\"status\">\n                    {{ 'eui.euitable.SHOWING-RANGE' | translate: { range: range } }} {{ 'eui.euitable.RANGE-LABEL' | translate }}\n                    {{ rangeLength | number }}\n                </div>\n            }\n        </div>\n    }\n</div>\n\n<nav class=\"eui-paginator__page-navigation\" [attr.aria-label]=\"'Table pagination navigation with ' + rangeLength + ' total items'\">\n    @if (isBasicMode) {\n\n        <div class=\"eui-paginator__page-navigation-item\">\n            <button\n                type=\"button\"\n                euiSizeS\n                euiButton\n                euiIconButton\n                euiBasicButton\n                aria-label=\"Go to previous page\" \n                [euiDisabled]=\"page === 0 || length === 0\"\n                (click)=\"goPreviousPage()\">\n                <eui-icon-svg icon=\"eui-caret-left\" fillColor=\"primary\"/>\n            </button>\n        </div>\n        <div class=\"eui-paginator__page-navigation-item\">\n            <button\n                type=\"button\"\n                euiSizeS\n                euiButton\n                euiIconButton\n                euiBasicButton\n                aria-label=\"Go to next page\" \n                [euiDisabled]=\"page + 1 === nbPage || length === 0\"\n                (click)=\"goNextPage()\">\n                <eui-icon-svg icon=\"eui-caret-right\" fillColor=\"primary\"/>\n            </button>\n        </div>\n\n    } @else {\n        <div class=\"eui-paginator__page-navigation-item\">\n            <button\n                type=\"button\"\n                euiSizeS\n                euiButton\n                euiIconButton\n                euiBasicButton\n                aria-label=\"Go to first page\" \n                [euiDisabled]=\"page === 0 || length === 0\"\n                (click)=\"goFirstPage()\">\n                <eui-icon-svg icon=\"eui-caret-first\" fillColor=\"primary\"/>\n            </button>\n        </div>\n        <div class=\"eui-paginator__page-navigation-item\">\n            <button\n                type=\"button\"\n                euiSizeS\n                euiButton\n                euiIconButton\n                euiBasicButton\n                aria-label=\"Go to previous page\" \n                [euiDisabled]=\"page === 0 || length === 0\"\n                (click)=\"goPreviousPage()\">\n                <eui-icon-svg icon=\"eui-caret-left\" fillColor=\"primary\"/>\n            </button>\n        </div>\n        @if (hasPageNumberNavigation) {\n        <div class=\"eui-paginator__page-navigation-numbers\">\n            @for (pageNumber of pageNumberNavigation; track pageNumber) {\n            <button\n                type=\"button\"\n                [attr.aria-current]=\"pageNumber === page\"\n                euiSizeS\n                euiButton\n                euiBasicButton\n                [euiPrimary]=\"pageNumber === page\"\n                [euiOutline]=\"pageNumber === page\"\n                (click)=\"goToPage(pageNumber)\">\n                {{ pageNumber + 1 | number }}\n            </button>\n            }\n        </div>\n        }\n        @if ((length$ | async) > 0) {\n        <div class=\"eui-paginator__page-range\">\n            {{ range }} {{ 'eui.euitable.RANGE-LABEL' | translate }} {{ rangeLength }}\n        </div>\n        }\n        <div class=\"eui-paginator__page-navigation-item\">\n            <button\n                type=\"button\"\n                euiSizeS\n                euiButton\n                euiIconButton\n                euiBasicButton\n                aria-label=\"Go to next page\" \n                [euiDisabled]=\"page + 1 === nbPage || length === 0\"\n                (click)=\"goNextPage()\">\n                <eui-icon-svg icon=\"eui-caret-right\" fillColor=\"primary\"/>\n            </button>\n        </div>\n        <div class=\"eui-paginator__page-navigation-item\">\n            <button\n                type=\"button\"\n                euiSizeS\n                euiButton\n                euiIconButton\n                euiBasicButton\n                aria-label=\"Go to last page\" \n                [euiDisabled]=\"page + 1 === nbPage || length === 0\"\n                (click)=\"goLastPage()\">\n                <eui-icon-svg icon=\"eui-caret-last\" fillColor=\"primary\"/>\n            </button>\n        </div>\n    }\n</nav>\n\n","import { EuiPaginatorComponent } from './eui-paginator.component';\n\nexport * from './eui-paginator.component';\nexport * from './models/pagination-event.model';\n\nexport const EUI_PAGINATOR = [ EuiPaginatorComponent ] as const;\n\n// export { EuiPaginatorComponent as EuiPaginator } from './eui-paginator.component';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}