{"version":3,"file":"pagination.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/pagination/navigation/navigation.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/pagination/navigation/navigation.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/pagination/paginator/paginator.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/pagination/paginator/paginator.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/pagination/pagination.module.ts"],"sourcesContent":["import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { SbbIcon } from '@sbb-esta/angular/icon';\n\nexport type SbbNavigationPageChangeEvent = 'next' | 'previous';\n\n@Component({\n  selector: 'sbb-navigation',\n  templateUrl: './navigation.html',\n  styleUrls: ['./navigation.css'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    role: 'navigation',\n  },\n  imports: [SbbIcon],\n})\nexport class SbbNavigation implements OnChanges {\n  /** The next page descriptor. */\n  @Input()\n  nextPage: string | null = null;\n\n  /** The previous page descriptor. */\n  @Input()\n  previousPage: string | null = null;\n\n  /** This event can be used by parent components to handle events on page change. */\n  @Output()\n  pageChange: EventEmitter<SbbNavigationPageChangeEvent> =\n    new EventEmitter<SbbNavigationPageChangeEvent>();\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (!this.nextPage && !this.previousPage) {\n      throw Error('At least hasNext or hasPrevious must be defined in <sbb-navigation>');\n    }\n  }\n}\n","<ul class=\"sbb-navigation sbb-clean-list\">\n  @if (previousPage) {\n    <li\n      class=\"sbb-navigation-item sbb-navigation-item-left\"\n      [class.sbb-navigation-item-single]=\"!nextPage\"\n    >\n      <button\n        type=\"button\"\n        class=\"sbb-button-reset-frameless sbb-navigation-item-button\"\n        (click)=\"pageChange.emit('previous')\"\n      >\n        <span class=\"sbb-navigation-item-boundary sbb-navigation-item-boundary-left\">\n          <span class=\"sbb-navigation-item-boundary-arrow\">\n            <sbb-icon svgIcon=\"chevron-small-left-circle-small\" class=\"sbb-icon-scaled\"></sbb-icon>\n          </span>\n          <span class=\"sbb-navigation-item-boundary-text\">{{ previousPage }}</span>\n        </span>\n      </button>\n    </li>\n  }\n  @if (nextPage) {\n    <li\n      class=\"sbb-navigation-item sbb-navigation-item-right\"\n      [class.sbb-navigation-item-single]=\"!previousPage\"\n    >\n      <button\n        type=\"button\"\n        class=\"sbb-button-reset-frameless sbb-navigation-item-button\"\n        (click)=\"pageChange.emit('next')\"\n      >\n        <span class=\"sbb-navigation-item-boundary sbb-navigation-item-boundary-right\">\n          <span class=\"sbb-navigation-item-boundary-text\">{{ nextPage }}</span>\n          <span class=\"sbb-navigation-item-boundary-arrow\">\n            <sbb-icon svgIcon=\"chevron-small-right-circle-small\" class=\"sbb-icon-scaled\"></sbb-icon>\n          </span>\n        </span>\n      </button>\n    </li>\n  }\n</ul>\n","// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/// <reference types=\"@angular/localize/init\" />\n\nimport {\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  inject,\n  InjectionToken,\n  Input,\n  numberAttribute,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { SbbIcon } from '@sbb-esta/angular/icon';\nimport { Observable, ReplaySubject } from 'rxjs';\n\n/** The default page size if there is no page size and there are no provided page size options. */\nconst DEFAULT_PAGE_SIZE = 50;\n\nconst MAX_PAGE_NUMBERS_DISPLAYED = 3;\nconst range = (length: number, offset = 0) => Array.from({ length }, (_, k) => k + offset);\n\n/**\n * Change event object that is emitted when the user selects a\n * different page size or navigates to another page.\n */\nexport class SbbPageEvent {\n  /**\n   *\n   * @param pageIndex current page index\n   * @param previousPageIndex index of the page that was selected previously\n   * @param pageSize current page size\n   * @param length current total number of items being paged\n   */\n  constructor(\n    public pageIndex: number,\n    public previousPageIndex: number,\n    public pageSize: number,\n    public length: number,\n  ) {}\n}\n\n/** Object that can be used to configure the default options for the paginator module. */\nexport interface SbbPaginatorDefaultOptions {\n  /** Number of items to display on a page. By default set to 50. */\n  pageSize?: number;\n}\n\n/** Injection token that can be used to provide the default options for the paginator module. */\nexport const SBB_PAGINATOR_DEFAULT_OPTIONS = new InjectionToken<SbbPaginatorDefaultOptions>(\n  'SBB_PAGINATOR_DEFAULT_OPTIONS',\n);\n\n/**\n * Component to provide navigation between paged information. Displays the size of the current\n * page, user-selectable options to change that size, what items are being shown, and\n * navigational button to go to the previous or next page.\n */\n@Component({\n  selector: 'sbb-paginator',\n  exportAs: 'sbbPaginator',\n  templateUrl: './paginator.html',\n  styleUrls: ['./paginator.css'],\n  inputs: ['disabled'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    role: 'group',\n    class: 'sbb-paginator sbb-icon-fit',\n  },\n  imports: [SbbIcon],\n})\nexport class SbbPaginator implements OnInit, OnDestroy {\n  _labelPreviousPage: string = $localize`:Button label to navigate to the previous page@@sbbPaginationPreviousPage:Previous Page`;\n\n  _labelNextPage: string = $localize`:Button label to navigate to the next page@@sbbPaginationNextPage:Next Page`;\n\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  private _previousPageSize: number;\n  private _isInitialized = false;\n  private _initializedStream = new ReplaySubject<void>(1);\n\n  /** The zero-based page index of the displayed list of items. Defaulted to 0. */\n  @Input({ transform: numberAttribute })\n  get pageIndex(): number {\n    return this._pageIndex;\n  }\n  set pageIndex(value: number) {\n    const previousPageIndex = this._pageIndex;\n    this._pageIndex = this._coercePageIndexInRange(value);\n    this._emitPageEvent(previousPageIndex);\n    this._changeDetectorRef.markForCheck();\n  }\n  private _pageIndex = 0;\n\n  /** The length of the total number of items that are being paginated. Defaulted to 0. */\n  @Input({ transform: numberAttribute })\n  get length(): number {\n    return this._length;\n  }\n  set length(value: number) {\n    this._length = Math.max(value, 0);\n    this.pageIndex = this.pageIndex; // ensure index recalculating\n  }\n  private _length = 0;\n\n  /** Number of items to display on a page. By default set to 50. */\n  @Input({ transform: numberAttribute })\n  get pageSize(): number {\n    return this._pageSize;\n  }\n  set pageSize(value: number) {\n    this._changePageSize(value);\n  }\n  private _pageSize: number = DEFAULT_PAGE_SIZE;\n\n  /** Whether the paginator is disabled. */\n  @Input({ transform: booleanAttribute })\n  disabled: boolean = false;\n\n  /** Event emitted when the paginator changes the page size or page index. */\n  @Output() readonly page: EventEmitter<SbbPageEvent> = new EventEmitter<SbbPageEvent>();\n\n  /** Emits when the paginator is initialized. */\n  initialized: Observable<void> = this._initializedStream;\n\n  constructor(...args: unknown[]);\n  constructor() {\n    const defaults = inject<SbbPaginatorDefaultOptions>(SBB_PAGINATOR_DEFAULT_OPTIONS, {\n      optional: true,\n    });\n\n    if (defaults) {\n      const { pageSize } = defaults;\n\n      if (pageSize != null) {\n        this._pageSize = pageSize;\n      }\n    }\n  }\n\n  ngOnInit() {\n    this._previousPageSize = this._pageSize;\n    this._isInitialized = true;\n    this._initializedStream.next();\n  }\n\n  ngOnDestroy() {\n    this._initializedStream.complete();\n  }\n\n  /** @docs-private */\n  _pageRange(): Array<number | null> {\n    const m = this.numberOfPages();\n    const c = this.pageIndex;\n    if (m <= MAX_PAGE_NUMBERS_DISPLAYED + 2) {\n      return range(m);\n    } else if (c < MAX_PAGE_NUMBERS_DISPLAYED) {\n      return [...range(MAX_PAGE_NUMBERS_DISPLAYED + 1), null, m - 1];\n    } else if (c >= m - MAX_PAGE_NUMBERS_DISPLAYED) {\n      return [\n        0,\n        null,\n        ...range(MAX_PAGE_NUMBERS_DISPLAYED + 1, m - 1 - MAX_PAGE_NUMBERS_DISPLAYED),\n      ];\n    } else {\n      return [0, null, c - 1, c, c + 1, null, m - 1];\n    }\n  }\n\n  /** Advances to the next page if it exists. */\n  nextPage(): void {\n    this.pageIndex = this.pageIndex + 1;\n  }\n\n  /** Move back to the previous page if it exists. */\n  previousPage(): void {\n    this.pageIndex = this.pageIndex - 1;\n  }\n\n  /** Move to the first page if not already there. */\n  firstPage(): void {\n    this.pageIndex = 0;\n  }\n\n  /** Move to the last page if not already there. */\n  lastPage(): void {\n    this.pageIndex = this.numberOfPages() - 1;\n  }\n\n  /** Move to a specific page index. */\n  selectPage(index: number): void {\n    this.pageIndex = index;\n  }\n\n  /** Whether there is a previous page. */\n  hasPreviousPage(): boolean {\n    return this.pageIndex >= 1 && this.pageSize !== 0;\n  }\n\n  /** Whether there is a next page. */\n  hasNextPage(): boolean {\n    const maxPageIndex = this.numberOfPages() - 1;\n    return this.pageIndex < maxPageIndex && this.pageSize !== 0;\n  }\n\n  /** Calculate the number of pages */\n  numberOfPages(): number {\n    if (!this.pageSize) {\n      return 0;\n    }\n\n    return Math.ceil(this.length / this.pageSize);\n  }\n\n  /**\n   * Changes the page size so that the first item displayed on the page will still be\n   * displayed using the new page size.\n   *\n   * For example, if the page size is 10 and on the second page (items indexed 10-19) then\n   * switching so that the page size is 5 will set the third page as the current page so\n   * that the 10th item will still be displayed.\n   */\n  private _changePageSize(pageSize: number) {\n    // Current page needs to be updated to reflect the new page size. Navigate to the page\n    // containing the previous page's first item.\n    const startIndex = this.pageIndex * this.pageSize;\n\n    this._pageSize = Math.max(pageSize, 0);\n    this.pageIndex = Math.floor(startIndex / this._pageSize) || 0;\n    this._previousPageSize = this._pageSize;\n  }\n\n  /** Emits an event notifying that a change of the paginator's properties has been triggered. */\n  private _emitPageEvent(previousPageIndex: number) {\n    if (\n      !this._isInitialized ||\n      (this.pageIndex === previousPageIndex && this._previousPageSize === this.pageSize)\n    ) {\n      return;\n    }\n    this.page.emit(new SbbPageEvent(this.pageIndex, previousPageIndex, this.pageSize, this.length));\n  }\n\n  /**\n   * @docs-private\n   * Checks whether the buttons for going forwards should be disabled.\n   */\n  _nextButtonDisabled() {\n    return this.disabled || !this.hasNextPage();\n  }\n\n  /**\n   * @docs-private\n   * Checks whether the buttons for going backwards should be disabled.\n   */\n  _previousButtonDisabled() {\n    return this.disabled || !this.hasPreviousPage();\n  }\n\n  /** Ensures that pageIndex is in range of pages. */\n  private _coercePageIndexInRange(value: number): number {\n    return Math.max(Math.min(Math.max(value, 0), this.numberOfPages() - 1), 0);\n  }\n}\n","<ul class=\"sbb-paginator-list sbb-clean-list sbb-icon-fit\">\n  <li class=\"sbb-paginator-item\">\n    <button\n      type=\"button\"\n      [attr.aria-label]=\"_labelPreviousPage\"\n      class=\"sbb-button-reset-frameless sbb-paginator-item-boundary sbb-paginator-item-button\"\n      [disabled]=\"_previousButtonDisabled()\"\n      [class.sbb-paginator-item-disabled]=\"_previousButtonDisabled()\"\n      (click)=\"previousPage()\"\n    >\n      <sbb-icon svgIcon=\"chevron-small-left-small\" class=\"sbb-icon-scaled\"></sbb-icon>\n    </button>\n  </li>\n\n  @for (page of _pageRange(); track page) {\n    <li class=\"sbb-paginator-item\">\n      @if (page === null) {\n        <span\n          class=\"sbb-paginator-item-ellipsis\"\n          [class.sbb-paginator-item-ellipsis-disabled]=\"disabled\"\n          >...</span\n        >\n      }\n      @if (page !== null) {\n        <button\n          type=\"button\"\n          class=\"sbb-button-reset-frameless sbb-paginator-item-button\"\n          [attr.tabindex]=\"page === pageIndex ? '-1' : null\"\n          [class.sbb-paginator-item-selected]=\"page === pageIndex\"\n          [attr.aria-current]=\"page === pageIndex\"\n          [disabled]=\"disabled\"\n          [class.sbb-paginator-item-disabled]=\"disabled\"\n          (click)=\"selectPage(page)\"\n        >\n          <ng-container>{{ page + 1 }}</ng-container>\n        </button>\n      }\n    </li>\n  }\n  <li class=\"sbb-paginator-item\">\n    <button\n      type=\"button\"\n      [attr.aria-label]=\"_labelNextPage\"\n      class=\"sbb-button-reset-frameless sbb-paginator-item-boundary sbb-paginator-item-button\"\n      [disabled]=\"_nextButtonDisabled()\"\n      [class.sbb-paginator-item-disabled]=\"_nextButtonDisabled()\"\n      (click)=\"nextPage()\"\n    >\n      <sbb-icon svgIcon=\"chevron-small-right-small\" class=\"sbb-icon-scaled\"></sbb-icon>\n    </button>\n  </li>\n</ul>\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SbbCommonModule } from '@sbb-esta/angular/core';\nimport { SbbIconModule } from '@sbb-esta/angular/icon';\n\nimport { SbbNavigation } from './navigation/navigation';\nimport { SbbPaginator } from './paginator/paginator';\n\n@NgModule({\n  imports: [RouterModule, SbbCommonModule, SbbIconModule, SbbNavigation, SbbPaginator],\n  exports: [SbbNavigation, SbbPaginator],\n})\nexport class SbbPaginationModule {}\n"],"names":["SbbNavigation","nextPage","previousPage","pageChange","EventEmitter","ngOnChanges","changes","Error","deps","target","i0","ɵɵFactoryTarget","Component","isStandalone","selector","inputs","outputs","host","attributes","usesOnChanges","ngImport","template","styles","dependencies","kind","type","SbbIcon","exportAs","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","role","imports","Input","Output","DEFAULT_PAGE_SIZE","MAX_PAGE_NUMBERS_DISPLAYED","range","length","offset","Array","from","_","k","SbbPageEvent","pageIndex","previousPageIndex","pageSize","constructor","SBB_PAGINATOR_DEFAULT_OPTIONS","InjectionToken","SbbPaginator","_labelPreviousPage","$localize","_labelNextPage","_changeDetectorRef","inject","ChangeDetectorRef","_previousPageSize","_isInitialized","_initializedStream","ReplaySubject","_pageIndex","value","_coercePageIndexInRange","_emitPageEvent","markForCheck","_length","Math","max","_pageSize","_changePageSize","disabled","page","initialized","defaults","optional","ngOnInit","next","ngOnDestroy","complete","_pageRange","m","numberOfPages","c","firstPage","lastPage","selectPage","index","hasPreviousPage","hasNextPage","maxPageIndex","ceil","startIndex","floor","emit","_nextButtonDisabled","_previousButtonDisabled","min","booleanAttribute","numberAttribute","classAttribute","args","class","transform","SbbPaginationModule","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","RouterModule","SbbCommonModule","SbbIconModule","exports"],"mappings":"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"}