{"version":3,"file":"usitsdasdesign-dds-ng-mobile-pager.mjs","sources":["../../src/app/dds/mobile-pager/mobile-pager/constants.ts","../../src/app/dds/mobile-pager/mobile-pager/mobile-pager.component.ts","../../src/app/dds/mobile-pager/mobile-pager/mobile-pager.component.html","../../src/app/dds/mobile-pager/mobile-pager.module.ts","../../src/app/dds/mobile-pager/usitsdasdesign-dds-ng-mobile-pager.ts"],"sourcesContent":["export const START_PAGE = 1;\nexport const PAGE_LENGTH = 2;\nexport const ARIA_CURRENT_PAGE = 'Page';\nexport const ARIA_LABEL = 'pagination';\n","import { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChildren,\n} from '@angular/core';\nimport { FormAccessorCtor, FormAccessorMixin, valueAccessor } from '@usitsdasdesign/dds-ng/core/common-behaviors';\nimport { FocusHandlerModule } from '@usitsdasdesign/dds-ng/core/focus-handler';\nimport { ARIA_CURRENT_PAGE, ARIA_LABEL, PAGE_LENGTH, START_PAGE } from './constants';\n\nconst MobilePagerBase: FormAccessorCtor = FormAccessorMixin();\n\n@Component({\n  selector: 'dds-mobile-pager',\n  templateUrl: './mobile-pager.component.html',\n  providers: [valueAccessor(MobilePagerComponent as Component)],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, FocusHandlerModule],\n})\nexport class MobilePagerComponent extends MobilePagerBase implements OnInit, OnChanges {\n  // A QueryList of button elements representing the page buttons.\n  @ViewChildren('pageBtns') pageBtns: QueryList<ElementRef<HTMLButtonElement>>;\n\n  // The total number of pages. Defaults to PAGE_LENGTH.\n  @Input() pagesLength: number | undefined = PAGE_LENGTH;\n\n  // A boolean indicating if the pager is in inverse mode.\n  @Input() isInverse: boolean | undefined;\n\n  // The current page value. Defaults to START_PAGE.\n  @Input() value: number | undefined = START_PAGE;\n\n  // The aria-label attribute for accessibility. Defaults to ARIA_LABEL.\n  @Input() ariaLabel: string | undefined = ARIA_LABEL;\n\n  // A custom CSS class to apply to the pager.\n  @Input() customClass: string | undefined;\n\n  // An event emitter that emits the current page number when the page changes.\n  @Output() pageChanged: EventEmitter<number> = new EventEmitter();\n\n  // An array representing the pages.\n  public pagesArray: number[];\n\n  constructor(public cdr: ChangeDetectorRef) {\n    super();\n  }\n\n  public ngOnInit(): void {\n    this.pagesArray = this.genPageArray(this.pagesLength);\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (changes.value) {\n      this.value = this.validateCurrentPage(changes.value.currentValue);\n    }\n\n    if (changes.pagesLength) {\n      this.pagesArray = this.genPageArray(changes.pagesLength.currentValue);\n      this.value = this.validateCurrentPage(this.value);\n    }\n  }\n\n  // Changes the current page to the specified page number.\n  public changePage(page: number): void {\n    this.value = page;\n\n    this.onModelChange(this.value);\n    this.pageChanged.emit(page);\n    this.onModelTouched();\n  }\n\n  // Writes the specified page number to the component.\n  public writeValue(page: number): void {\n    this.value = this.validateCurrentPage(page);\n    this.cdr.markForCheck();\n  }\n\n  // Gets the aria-label for the specified page index.\n  public getAriaLabel(index): string {\n    return this.value === index + 1 ? ARIA_CURRENT_PAGE : `${ARIA_CURRENT_PAGE} ${index + 1}`;\n  }\n\n  // Gets the aria-current attribute for the specified page index.\n  public getAriaCurrent(index: number): string {\n    return this.value === index + 1 ? ARIA_CURRENT_PAGE : `false`;\n  }\n\n  // Generates an array of page numbers based on the specified size.\n  private genPageArray(size: number): number[] {\n    return Array.from({ length: size }, (v, k) => k + 1);\n  }\n\n  // Validates the current page number to ensure it is within the valid range.\n  private validateCurrentPage(currentPage: number): number {\n    const pageLength = Number(this.pagesLength);\n    let validPage = Number(currentPage);\n\n    if (validPage < 1) {\n      validPage = 1;\n    }\n\n    if (validPage > pageLength) {\n      validPage = pageLength;\n    }\n\n    return validPage;\n  }\n}\n","<div [ngClass]=\"{\n            'dds-mobile-pager_inverse': isInverse\n      }\"\n     [attr.aria-label]=\"ariaLabel\"\n     role=\"navigation\"\n     data-qa=\"mobile-pager\"\n     class=\"dds-mobile-pager {{customClass}}\">\n  @for (item of pagesArray; track item; let index = $index) {\n    <button [ngClass]=\"{'dds-mobile-pager__item_active': value === index + 1}\"\n            [attr.aria-current]=\"getAriaCurrent(index)\"\n            [attr.aria-label]=\"getAriaLabel(index)\"\n            data-qa=\"mobile-pager-item\"\n            class=\"dds-mobile-pager__item\"\n            ddsFocus\n            (click)=\"changePage(item)\"\n            #pageBtns></button>\n  }\n</div>","import { NgModule } from '@angular/core';\nimport { MobilePagerComponent } from './mobile-pager/mobile-pager.component';\n\n@NgModule({\n  declarations: [],\n  imports: [MobilePagerComponent],\n  exports: [MobilePagerComponent],\n})\nexport class MobilePagerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}