{"version":3,"file":"usitsdasdesign-dds-ng-pager.mjs","sources":["../../src/app/dds/pager/pager/constants.ts","../../src/app/dds/pager/pager/pager.component.ts","../../src/app/dds/pager/pager/pager.component.html","../../src/app/dds/pager/pager.module.ts","../../src/app/dds/pager/usitsdasdesign-dds-ng-pager.ts"],"sourcesContent":["export const START_PAGE = 1;\nexport const MAX_VALUE_LIMIT = 100;\nexport const DEFAULT_LABEL = 'Go to page';\n","import { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { ButtonModule } from '@usitsdasdesign/dds-ng/button';\nimport {\n  DestroyCtor,\n  DestroyMixin,\n  FormAccessorCtor,\n  FormAccessorMixin,\n  I18nCtor,\n  I18nMixin,\n  valueAccessor,\n} from '@usitsdasdesign/dds-ng/core/common-behaviors';\nimport { FocusHandlerModule } from '@usitsdasdesign/dds-ng/core/focus-handler';\nimport { AdditionalClass, Size } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport { I18nModule, I18nService, ITranslation } from '@usitsdasdesign/dds-ng/shared/i18n';\nimport { DEFAULT_LABEL, MAX_VALUE_LIMIT, START_PAGE } from './constants';\n\nconst PagerBase: DestroyCtor & I18nCtor & FormAccessorCtor = DestroyMixin(I18nMixin(FormAccessorMixin()));\n\n@Component({\n  selector: 'dds-pager',\n  templateUrl: './pager.component.html',\n  providers: [valueAccessor(PagerComponent as Component)],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, ButtonModule, FocusHandlerModule, I18nModule],\n})\nexport class PagerComponent extends PagerBase implements OnInit, OnChanges {\n  // Binds the disabled class to the host element when the component is disabled.\n  @HostBinding(`class.${AdditionalClass.disabled}`) @Input() disabled: boolean | undefined;\n\n  // Reference to the pager input field element.\n  @ViewChild('pagerField') pagerField: ElementRef<HTMLInputElement>;\n\n  // Reference to the pager button element.\n  @ViewChild('pagerBtn') pagerBtn: ElementRef<HTMLButtonElement>;\n\n  // Label for the pager component.\n  @Input() label: string | undefined = DEFAULT_LABEL;\n\n  // Custom CSS class for the pager component.\n  @Input() customClass: string | undefined;\n\n  // Size of the pager component.\n  @Input() size: Size | string | undefined = this.ddsConfig.getConfig().size;\n\n  // Minimum value for the pager.\n  @Input() minValue: number | undefined = START_PAGE;\n\n  // Maximum value for the pager.\n  @Input() maxValue: number | undefined = MAX_VALUE_LIMIT;\n\n  // Current value of the pager.\n  @Input()\n  set value(value: number | undefined) {\n    this._value = this.checkLimits(value);\n  }\n  get value(): number | undefined {\n    return this._value;\n  }\n\n  // Event emitted when the page value changes.\n  @Output() pageChanged: EventEmitter<number> = new EventEmitter();\n\n  // Indicates if the pager is in small size mode.\n  public isSmSize: boolean;\n\n  // ARIA label for the pager input field.\n  public inputAriaLabel: string;\n\n  // Internal value of the pager.\n  private _value: number = START_PAGE;\n\n  constructor(public cdr: ChangeDetectorRef, public i18n: I18nService, private ddsConfig: DdsConfigService) {\n    super();\n  }\n\n  public ngOnInit(): void {\n    this.checkSize(this.size);\n    super.ngOnInit();\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    this.checkSize(changes.size);\n  }\n\n  public writeValue(value: number): void {\n    this.value = value ? value : START_PAGE;\n    this.cdr.markForCheck();\n  }\n\n  // Sets the disabled state of the pager.\n  public setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n    this.cdr.markForCheck();\n  }\n\n  // Handles blur event on the pager input field.\n  public blur() {\n    this.onModelTouched();\n  }\n\n  // Navigates to the specified page.\n  public goToPage(field: HTMLInputElement): void {\n    this.value = this.checkLimits(Number(field.value));\n    field.value = String(this.value);\n    this.onModelChange(this.value);\n    this.pageChanged.emit(this.value);\n  }\n\n  // Handles changes in the pager input field.\n  public fieldChange(input: HTMLInputElement): void {\n    input.value = input.value.replace(/[^\\d]/g, '');\n  }\n\n  // Checks for negative values in the pager input field.\n  public negetiveValueCheck(input: HTMLInputElement): void {\n    if (Number(input.value) < START_PAGE) {\n      input.value = `${START_PAGE}`;\n    }\n  }\n\n  // Checks and adjusts the value to be within the defined limits.\n  private checkLimits(value: number): number {\n    if (value < this.minValue) {\n      value = this.minValue;\n    } else if (value > this.maxValue) {\n      value = this.maxValue;\n    }\n\n    return value;\n  }\n\n  // Checks and sets the size of the pager component.\n  private checkSize(size: unknown): void {\n    if (size) {\n      this.isSmSize = this.size === Size.sm;\n      this.cdr.markForCheck();\n    }\n  }\n\n  // Sets the internationalization texts for the pager component.\n  protected setI18nTexts(translation: ITranslation): void {\n    this.inputAriaLabel = translation.PAGER.A11Y.INPUT_ARIA_LABEL;\n    this.cdr.detectChanges();\n  }\n}\n","<div [ngClass]=\"{\n       'dds-pager_disabled': disabled,\n       'dds-pager_sm': isSmSize\n      }\"\n     class=\"dds-pager {{customClass}}\">\n  <button [attr.aria-disabled]=\"disabled\"\n          [attr.aria-label]=\"label\"\n          class=\"dds-pager__btn\"\n          tabindex=\"-1\"\n          (click)=\"goToPage(pagerField)\"\n          #pagerBtn>\n    {{ label }}\n  </button>\n  <input [value]=\"value\"\n         [disabled]=\"disabled\"\n         [attr.aria-disabled]=\"disabled\"\n         [attr.aria-label]=\"label\"\n         [attr.aria-description]=\"inputAriaLabel\"\n         class=\"dds-pager__input\"\n         type=\"text\"\n         ddsFocus\n         (input)=\"fieldChange($any($event).target)\"\n         (focusout)=\"negetiveValueCheck($any($event).target)\"\n         (keyup.enter)=\"goToPage($any($event).target)\"\n         (blur)=\"blur()\"\n         #pagerField />\n</div>\n","import { NgModule } from '@angular/core';\nimport { PagerComponent } from './pager/pager.component';\n\n@NgModule({\n  declarations: [],\n  imports: [PagerComponent],\n  exports: [PagerComponent],\n})\nexport class PagerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;AAAO,MAAM,UAAU,GAAG,CAAC;AACpB,MAAM,eAAe,GAAG,GAAG;AAC3B,MAAM,aAAa,GAAG,YAAY;;AC6BzC,MAAM,SAAS,GAA8C,YAAY,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAUnG,MAAO,cAAe,SAAQ,SAAS,CAAA;;IA0B3C,IACI,KAAK,CAAC,KAAyB,EAAA;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACvC;AACA,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;AAcA,IAAA,WAAA,CAAmB,GAAsB,EAAS,IAAiB,EAAU,SAA2B,EAAA;AACtG,QAAA,KAAK,EAAE;QADU,IAAA,CAAA,GAAG,GAAH,GAAG;QAA4B,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAuB,IAAA,CAAA,SAAS,GAAT,SAAS;;QAnC7E,IAAA,CAAA,KAAK,GAAuB,aAAa;;QAMzC,IAAA,CAAA,IAAI,GAA8B,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI;;QAGjE,IAAA,CAAA,QAAQ,GAAuB,UAAU;;QAGzC,IAAA,CAAA,QAAQ,GAAuB,eAAe;;AAY7C,QAAA,IAAA,CAAA,WAAW,GAAyB,IAAI,YAAY,EAAE;;QASxD,IAAA,CAAA,MAAM,GAAW,UAAU;IAInC;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB,KAAK,CAAC,QAAQ,EAAE;IAClB;AAEO,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;IAC9B;AAEO,IAAA,UAAU,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,UAAU;AACvC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;;AAGO,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;;IAGO,IAAI,GAAA;QACT,IAAI,CAAC,cAAc,EAAE;IACvB;;AAGO,IAAA,QAAQ,CAAC,KAAuB,EAAA;AACrC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClD,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC;;AAGO,IAAA,WAAW,CAAC,KAAuB,EAAA;AACxC,QAAA,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;IACjD;;AAGO,IAAA,kBAAkB,CAAC,KAAuB,EAAA;QAC/C,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU,EAAE;AACpC,YAAA,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,UAAU,EAAE;QAC/B;IACF;;AAGQ,IAAA,WAAW,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,KAAK,GAAG,IAAI,CAAC,QAAQ;QACvB;AAAO,aAAA,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,KAAK,GAAG,IAAI,CAAC,QAAQ;QACvB;AAEA,QAAA,OAAO,KAAK;IACd;;AAGQ,IAAA,SAAS,CAAC,IAAa,EAAA;QAC7B,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACzB;IACF;;AAGU,IAAA,YAAY,CAAC,WAAyB,EAAA;QAC9C,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB;AAC7D,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;8GAtHW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,0TALd,CAAC,aAAa,CAAC,cAA2B,CAAC,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpCzD,44BA2BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDYY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,gKAAE,UAAU,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEzD,cAAc,EAAA,UAAA,EAAA,CAAA;kBAR1B,SAAS;+BACE,WAAW,EAAA,SAAA,EAEV,CAAC,aAAa,CAAC,cAA2B,CAAC,CAAC,EAAA,eAAA,EACtC,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,44BAAA,EAAA;;sBAIpE,WAAW;uBAAC,CAAA,MAAA,EAAS,eAAe,CAAC,QAAQ,CAAA,CAAE;;sBAAG;;sBAGlD,SAAS;uBAAC,YAAY;;sBAGtB,SAAS;uBAAC,UAAU;;sBAGpB;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;sBASA;;;MEpEU,WAAW,CAAA;8GAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAX,WAAW,EAAA,OAAA,EAAA,CAHZ,cAAc,CAAA,EAAA,OAAA,EAAA,CACd,cAAc,CAAA,EAAA,CAAA,CAAA;AAEb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAHZ,cAAc,CAAA,EAAA,CAAA,CAAA;;2FAGb,WAAW,EAAA,UAAA,EAAA,CAAA;kBALvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,CAAC,cAAc,CAAC;oBACzB,OAAO,EAAE,CAAC,cAAc,CAAC;AAC1B,iBAAA;;;ACPD;;AAEG;;;;"}