{"version":3,"file":"usitsdasdesign-dds-ng-timepicker.mjs","sources":["../../src/app/dds/timepicker/constants.ts","../../src/app/dds/timepicker/timepicker.token.ts","../../src/app/dds/timepicker/timepicker-popup/timepicker-popup.component.ts","../../src/app/dds/timepicker/timepicker-popup/timepicker-popup.component.html","../../src/app/dds/timepicker/typings.ts","../../src/app/dds/timepicker/timepicker/timepicker.component.ts","../../src/app/dds/timepicker/timepicker/timepicker.component.html","../../src/app/dds/timepicker/timepicker.module.ts","../../src/app/dds/timepicker/usitsdasdesign-dds-ng-timepicker.ts"],"sourcesContent":["export const HOUR = 60;\nexport const MAX_DAY_HOURS = 23;\nexport const MAX_MINUTES = 59;\nexport const DEFAULT_PLACEHOLDER = '--';\nexport const DEFAULT_ICON = 'dds-icon_timer';\nexport const TIMEPICKER_POPUP = 'dds-timepicker-popup';\nexport const INDENT = 0;\nexport const SHIFT = 0;\nexport const TIMEPICKER_BTN = '.dds-btn';\nexport const TIMEPICKER_MINUTE_STEP = 1;\nexport const TIMEPICKER_HOUR_STEP = 1;\n","import { InjectionToken } from '@angular/core';\n\nexport const TIMEPICKER = new InjectionToken('Timepicker Component');\n","import { CommonModule } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Inject,\n  Input,\n  Renderer2,\n  ViewChild,\n} from '@angular/core';\nimport { ButtonModule } from '@usitsdasdesign/dds-ng/button';\nimport { DestroyCtor, DestroyMixin, I18nCtor, I18nMixin } from '@usitsdasdesign/dds-ng/core/common-behaviors';\nimport { FocusHandlerModule } from '@usitsdasdesign/dds-ng/core/focus-handler';\nimport { AdditionalClass, KeyCodes } from '@usitsdasdesign/dds-ng/shared';\nimport { I18nModule, I18nService, ITranslation } from '@usitsdasdesign/dds-ng/shared/i18n';\nimport { ResizeHandlerModule } from '@usitsdasdesign/dds-ng/shared/resize-handler';\nimport { TIMEPICKER_BTN } from '../constants';\nimport { TIMEPICKER } from '../timepicker.token';\nimport type { TimepickerComponent } from '../timepicker/timepicker.component';\nimport { TimeField } from '../typings';\n\nconst TimepickerPopupBase: DestroyCtor & I18nCtor = DestroyMixin(I18nMixin());\n\n@Component({\n  selector: 'dds-timepicker-popup',\n  templateUrl: './timepicker-popup.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, ButtonModule, FocusHandlerModule, ResizeHandlerModule, I18nModule],\n})\nexport class TimepickerPopupComponent extends TimepickerPopupBase implements AfterViewInit {\n  @ViewChild('timepickerPopup') timepickerPopup: ElementRef;\n\n  @Input() isInverse: boolean;\n  @Input() isResponsive = true;\n\n  public component = this.timepickerComponent;\n  public arrowDownAriaLabel: string;\n  public arrowUpAriaLabel: string;\n  public applyBtnText: string;\n  public popupAriaLabel: string;\n\n  constructor(\n    @Inject(TIMEPICKER) private timepickerComponent: TimepickerComponent,\n    public cdr: ChangeDetectorRef,\n    public i18n: I18nService,\n    private renderer: Renderer2\n  ) {\n    super();\n  }\n\n  // Lifecycle hook that is called after the component's view has been fully initialized\n  public ngAfterViewInit(): void {\n    this.focusPopup();\n  }\n\n  // Retrieves the value of the specified time field\n  public getValue(field: TimeField): number | string {\n    return field.value ? this.formatTime(field, field.value) : this.formatTime(field, field.current);\n  }\n\n  // Handles keydown events within the popup\n  public popupKeydown(event: KeyboardEvent) {\n    this.checkFirstLastBtnFocused(event);\n  }\n\n  // Sets focus to the popup element or the first button within it\n  private focusPopup(): void {\n    if (this.component.keyboardStatus) {\n      const focusedBtn = this.timepickerPopup.nativeElement.querySelector(`.${AdditionalClass.keyboardFocus}`);\n      const firstBtn = this.timepickerPopup.nativeElement.querySelector(TIMEPICKER_BTN);\n\n      this.focusReset(focusedBtn);\n      this.renderer.addClass(firstBtn, AdditionalClass.keyboardFocus);\n      firstBtn.focus();\n    } else {\n      this.timepickerPopup.nativeElement.focus();\n    }\n  }\n\n  // Resets the focus state of the previously focused element\n  private focusReset(focusedEl: HTMLElement): void {\n    if (focusedEl) {\n      this.renderer.removeClass(focusedEl, AdditionalClass.keyboardFocus);\n    }\n  }\n\n  // Checks if the first or last button is focused and handles tab key navigation\n  private checkFirstLastBtnFocused(event: KeyboardEvent): void {\n    const btnItems = this.timepickerPopup.nativeElement.querySelectorAll(TIMEPICKER_BTN);\n    const firstBtn = btnItems[0];\n    const lastBtn = btnItems[btnItems.length - 1];\n    const isTabKey = event.keyCode === KeyCodes.TAB;\n\n    if (firstBtn === document.activeElement && isTabKey && event.shiftKey) {\n      event.preventDefault();\n      lastBtn.focus();\n    }\n    if (lastBtn === document.activeElement && isTabKey && !event.shiftKey) {\n      event.preventDefault();\n      firstBtn.focus();\n    }\n  }\n\n  // Sets the internationalization texts for the component\n  protected setI18nTexts(translation: ITranslation): void {\n    this.arrowDownAriaLabel = translation.TIMEPICKER.A11Y.ARROW_DOWN_ARIA_LABEL;\n    this.arrowUpAriaLabel = translation.TIMEPICKER.A11Y.ARROW_UP_ARIA_LABEL;\n    this.applyBtnText = translation.TIMEPICKER.RESPONSIVE.APPLY_BTN_TEXT;\n    this.popupAriaLabel = translation.TIMEPICKER.A11Y.POPUP_ARIA_LABEL;\n    this.cdr.detectChanges();\n  }\n\n  // Formats the time value based on the field type (hours or minutes)\n  private formatTime(field: TimeField, value: string | number): number | string {\n    return this.component.isHoursField(field) ? this.component.formatHour(Number(value)) : value;\n  }\n}\n","<div [ngClass]=\"{\n       'dds-timepicker_lg': component.isSizeLg && component.isExternalLabel,\n       'dds-timepicker_inverse': isInverse,\n       'dds-context-menu_inverse': isInverse\n     }\"\n     [attr.aria-label]=\"popupAriaLabel\"\n     role=\"dialog\"\n     ddsResize\n     [isResponsive]=\"isResponsive\"\n     class=\"dds-timepicker dds-context-menu\"\n     tabindex=\"0\"\n     (keydown)=\"popupKeydown($event)\"\n     #timepickerPopup>\n\n  @if (component.smallDevice) {\n    <div class=\"dds-timepicker__header\">\n      @if (component.label) {\n        <span class=\"dds-timepicker__label\">\n          {{component.label}}\n          @if (component.isRequired) {\n            <span class=\"dds-required\"></span>\n          }\n        </span>\n      }\n      <button aria-label=\"Close timepicker\"\n              class=\"dds-timepicker__close dds-icon dds-icon_close\"\n              (click)=\"component.close()\"></button>\n    </div>\n  }\n\n  <div class=\"dds-timepicker__body\"\n       role=\"group\">\n    @for (field of component.timeFields; track field; let index = $index) {\n      @if (!component.isMeridiemField(field)) {\n        <div class=\"dds-timepicker__field-wrap\">\n          <dds-button [theme]=\"component.Themes.dark\"\n                      [kind]=\"component.ButtonKind.silent\"\n                      [size]=\"component.buttonSize\"\n                      [width]=\"component.WidthState.full\"\n                      [isInverse]=\"isInverse\"\n                      [ariaLabel]=\"arrowUpAriaLabel + ' ' + field.title\" \n                      [ariaDescribedby]=\"'timeinput' + index\"\n                      role=\"button\"\n                      icon=\"dds-icon_arrow-up\"\n                      class=\"dds-timepicker__action\"\n                      (clicked)=\"component.timeChange(field.title, component.getStep(field.title))\"></dds-button>\n          <div class=\"dds-timepicker__field dds-input dds-input_external\"\n               [ngClass]=\"{\n               'dds-input_lg': component.isSizeLg && component.isExternalLabel,\n               'dds-input_inverse': isInverse,\n               'dds-timepicker__field_disabled': field.readOnly\n             }\">\n            <input [value]=\"getValue(field)\"\n                   [disabled]=\"field.readOnly\"\n                   [attr.aria-disabled]=\"field.readOnly\"\n                   [attr.aria-label]=\"field.title\"\n                   [id]=\"'timeinput' + index\"\n                   ddsFocus\n                   class=\"dds-input__field\"\n                   type=\"text\"\n                   maxlength=\"2\"\n                   (change)=\"component.fieldChange(field.title, $any($event).target.value)\"\n                   (keydown.ArrowUp)=\"component.timeChange(field.title, component.getStep(field.title)); $event.preventDefault()\"\n                   (keydown.ArrowDown)=\"component.timeChange(field.title, -component.getStep(field.title)); $event.preventDefault()\"\n                   (keyup)=\"component.validateField(field.title, $event)\" />\n          </div>\n          <dds-button [theme]=\"component.Themes.dark\"\n                      [kind]=\"component.ButtonKind.silent\"\n                      [size]=\"component.buttonSize\"\n                      [width]=\"component.WidthState.full\"\n                      [isInverse]=\"isInverse\"\n                      [ariaLabel]=\"arrowDownAriaLabel + ' ' + field.title\"\n                      [ariaDescribedby]=\"'timeinput' + index\"\n                      role=\"button\"\n                      icon=\"dds-icon_arrow-down\"\n                      class=\"dds-timepicker__action\"\n                      (clicked)=\"component.timeChange(field.title, -component.getStep(field.title))\"></dds-button>\n        </div>\n      }\n    }\n  </div>\n\n  @if (component.smallDevice) {\n    <div class=\"dds-timepicker__footer\">\n      <dds-button [width]=\"component.btnOptions.width\"\n                  [size]=\"component.btnOptions.size\"\n                  [isInverse]=\"isInverse\"\n                  [ariaLabel]=\"applyBtnText\"\n                  class=\"dds-timepicker__btn\"\n                  (clicked)=\"component.close()\">{{applyBtnText}}</dds-button>\n    </div>\n  }\n\n</div>\n","import { ErrorState, LabelPosition, PositionState, Size } from '@usitsdasdesign/dds-ng/shared';\n\nexport interface TimePickerOptions {\n  label?: string;\n  labelPosition?: LabelPosition | string;\n  description?: string;\n  errorMessage?: string;\n  icon?: string;\n  customClass?: string;\n  errorState?: string | ErrorState;\n  size?: Size | string;\n  format?: TimeFormat | number;\n  minuteStep?: number;\n  hourStep?: number;\n  disabled?: boolean;\n  isResponsive?: boolean;\n  isInverse?: boolean;\n  isError?: boolean;\n  isRequired?: boolean;\n  readonly?: boolean;\n  isClearBtnEnabled?: boolean;\n  stickerPosition?: PositionState | string;\n  stickerMaxHeight?: number | string;\n  stickerCustomClass?: string;\n  stickerIndent?: number;\n  stickerShift?: number;\n  stickerIsDisabled?: boolean;\n  stickerIsOutsideClick?: boolean;\n  stickerIsDynamic?: boolean;\n}\n\nexport interface TimeField {\n  title: string;\n  value?: string | number;\n  current?: string | number;\n  placeholder?: string;\n  readOnly?: boolean;\n}\n\nexport enum TimeFormat {\n  h12 = 12,\n  h24 = 24,\n}\n\nexport enum MeridiemState {\n  am = 'AM',\n  pm = 'PM',\n}\n\nexport enum TimepickerFields {\n  hours = 'hours',\n  minutes = 'minutes',\n  meridiem = 'meridiem',\n}\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  Optional,\n  Output,\n  Self,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { ButtonModule, ButtonOptions } from '@usitsdasdesign/dds-ng/button';\nimport {\n  DestroyCtor,\n  DestroyMixin,\n  ErrorStateCtor,\n  ErrorStateMixin,\n  FormAccessorCtor,\n  FormAccessorMixin,\n  I18nCtor,\n  I18nMixin,\n  ResponsivenessCtor,\n  ResponsivenessMixin,\n} from '@usitsdasdesign/dds-ng/core/common-behaviors';\nimport { FocusHandlerModule } from '@usitsdasdesign/dds-ng/core/focus-handler';\nimport { coerceBooleanProperty } from '@usitsdasdesign/dds-ng/core/utils';\nimport {\n  AdditionalClass,\n  ButtonKind,\n  ErrorState,\n  KeyCodes,\n  LabelPosition,\n  PositionState,\n  Size,\n  Themes,\n  WidthState,\n} 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 { ResizeHandlerModule, ResizeHandlerService } from '@usitsdasdesign/dds-ng/shared/resize-handler';\nimport { StickerDirective, StickerModule } from '@usitsdasdesign/dds-ng/sticker';\nimport {\n  DEFAULT_ICON,\n  DEFAULT_PLACEHOLDER,\n  HOUR,\n  MAX_DAY_HOURS,\n  MAX_MINUTES,\n  SHIFT,\n  TIMEPICKER_HOUR_STEP,\n  TIMEPICKER_MINUTE_STEP,\n  TIMEPICKER_POPUP,\n} from '../constants';\nimport { TimepickerPopupComponent } from '../timepicker-popup/timepicker-popup.component';\nimport { TIMEPICKER } from '../timepicker.token';\nimport { MeridiemState, TimeField, TimeFormat, TimepickerFields } from '../typings';\n\nconst TimepickerBase: DestroyCtor & I18nCtor & ResponsivenessCtor & FormAccessorCtor & ErrorStateCtor = DestroyMixin(\n  I18nMixin(ResponsivenessMixin(FormAccessorMixin(ErrorStateMixin())))\n);\n\n@Component({\n  selector: 'dds-timepicker',\n  templateUrl: './timepicker.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: TIMEPICKER,\n      useExisting: TimepickerComponent,\n    },\n  ],\n  standalone: true,\n  imports: [CommonModule, StickerModule, ButtonModule, FocusHandlerModule, ResizeHandlerModule, I18nModule, TimepickerPopupComponent],\n})\nexport class TimepickerComponent extends TimepickerBase implements OnInit, OnChanges {\n  // Host binding for disabled class and empty value attribute\n  @HostBinding(`class.${AdditionalClass.disabled}`) @Input() disabled: boolean | undefined;\n  @HostBinding(`attr.data-is-empty`) isEmptyValue: boolean; // WalkMe\n\n  // Input properties for various configurations\n  @Input() label: string | undefined;\n  @Input() description: string | undefined;\n  @Input() errorMessage: string | undefined;\n  @Input() customClass: string | undefined;\n  @Input() labelPosition: LabelPosition | string | undefined = this.ddsConfig.getConfig().labelPosition;\n  @Input() size: Size | string | undefined = this.ddsConfig.getConfig().size;\n  @Input() icon: string | undefined = DEFAULT_ICON;\n  @Input() format: TimeFormat | number | undefined = TimeFormat.h12;\n  @Input() minuteStep: number | undefined = TIMEPICKER_MINUTE_STEP;\n  @Input() hourStep: number | undefined = TIMEPICKER_HOUR_STEP;\n  @Input() isError: boolean | undefined;\n  @Input() isInverse: boolean | undefined;\n  @Input() isRequired: boolean | undefined = false;\n  @Input() readonly: boolean | undefined;\n  @Input() errorState: string | ErrorState | undefined = this.ddsConfig.getConfig().errorState;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() isClearBtnEnabled: boolean | undefined = false;\n\n  // Sticker options for the timepicker popup\n  @Input() stickerPosition: PositionState | string | undefined = this.ddsConfig.getConfig().stickerPosition;\n  @Input() stickerWidth: number | string | undefined = 'auto';\n  @Input() stickerMaxHeight: number | string | undefined;\n  @Input() stickerCustomClass: string | undefined = TIMEPICKER_POPUP;\n  @Input() stickerIndent: number | undefined = this.ddsConfig.getConfig().stickerIndent;\n  @Input() stickerShift: number | undefined = SHIFT;\n  @Input() stickerIsDisabled: boolean | undefined;\n  @Input() stickerIsOutsideClick: boolean | undefined = true;\n  @Input() stickerIsDynamic: boolean | undefined = true;\n\n  @Input()\n  get value(): Date | undefined {\n    return this._value;\n  }\n  set value(value: Date | undefined) {\n    this._value = value;\n    this.setTime(value);\n    this.toGlobalFormat();\n    this.cdr.markForCheck();\n  }\n\n  @Output() timeChanged = new EventEmitter<Date>();\n\n  @ViewChild('stickerDir') sticker: StickerDirective;\n  @ViewChild('timepicker') timepicker: ElementRef;\n  @ViewChild('timepickerBtn') timepickerBtn: ElementRef;\n  @ViewChild('clearBtn') clearBtn: ElementRef<HTMLButtonElement>;\n  @ViewChild('timeInput') timeInput: ElementRef<HTMLInputElement>;\n\n  public Themes = Themes;\n  public ButtonKind = ButtonKind;\n  public WidthState = WidthState;\n  public isShown: boolean;\n  public time = TimeFormat;\n  public meridiemState = MeridiemState;\n  public hours = {\n    title: TimepickerFields.hours,\n    value: '',\n    current: this.padNumber(new Date().getHours()),\n    placeholder: DEFAULT_PLACEHOLDER,\n  };\n  public minutes = {\n    title: TimepickerFields.minutes,\n    value: '',\n    current: this.padNumber(new Date().getMinutes()),\n    placeholder: DEFAULT_PLACEHOLDER,\n  };\n  public meridiem = {\n    title: TimepickerFields.meridiem,\n    value: '',\n    current: this.getMeridiem(),\n    placeholder: DEFAULT_PLACEHOLDER,\n    readOnly: true,\n  };\n  public timeFields: TimeField[] = [this.hours, this.minutes, this.meridiem];\n  public btnOptions: ButtonOptions = {\n    width: WidthState.full,\n    size: Size.lg,\n  };\n  public isShownByKeyboard: boolean;\n  public keyboardStatus: boolean;\n  public isSizeLg: boolean;\n  public isSizeSm: boolean;\n  public isExternalLabel: boolean;\n  public isTimeFormat24: boolean;\n  public buttonSize: Size;\n  public isInputActive: boolean;\n  public openPopupBtnAriaLabel: string;\n  public clearBtnAriaLabel: string;\n\n  private _value: Date;\n\n  // Check if the field is a meridiem field\n  public isMeridiemField(field: TimeField): boolean {\n    return field.title === this.meridiem.title && this.isTimeFormat24;\n  }\n\n  // Check if the field is an hours field\n  public isHoursField(field: TimeField): boolean {\n    return field.title === this.hours.title;\n  }\n\n  // Get the step value for hours or minutes\n  public getStep(type: string): number {\n    return type === TimepickerFields.hours ? this.hourStep : this.minuteStep;\n  }\n\n  constructor(\n    @Optional() @Self() public ngControl: NgControl,\n    @Optional() public parentForm: NgForm,\n    @Optional() public parentFormGroup: FormGroupDirective,\n    public cdr: ChangeDetectorRef,\n    public resizeService: ResizeHandlerService,\n    public i18n: I18nService,\n    private ddsConfig: DdsConfigService\n  ) {\n    super();\n\n    if (this.ngControl !== null) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  // Initialize the component\n  public ngOnInit(): void {\n    this.checkIsEmpty();\n    this.checkSize(this.size);\n    this.checkLabelPosition(this.labelPosition);\n    super.ngOnInit();\n  }\n\n  // Handle changes to input properties\n  public ngOnChanges(changes: SimpleChanges): void {\n    this.checkSize(changes.size);\n    this.checkLabelPosition(changes.labelPosition);\n    this.validateTimeStep();\n\n    if (changes.isRequired) {\n      this.isRequired = coerceBooleanProperty(changes.isRequired.currentValue);\n    }\n\n    if (changes.format && changes.format.currentValue) {\n      this.isTimeFormat24 = changes.format.currentValue === TimeFormat.h24;\n    }\n\n    super.ngOnChanges(changes);\n  }\n\n  // Write value to the component\n  public writeValue(time: Date): void {\n    if (time) {\n      this.value = time;\n      this.setTime(this.value);\n      this.toGlobalFormat(false);\n      this.cdr.markForCheck();\n    } else {\n      this.reset();\n    }\n  }\n\n  // Set the disabled state of the component\n  public setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n    this.cdr.markForCheck();\n  }\n\n  // Toggle the timepicker popup\n  public toggleTimepicker(event: Event): void {\n    if (event) event.stopPropagation();\n\n    if (!this.isShown) this.close();\n  }\n\n  // Handle keydown events\n  public onKeydown(event: KeyboardEvent) {\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      this.keyboardStatus = !this.keyboardStatus;\n    }\n  }\n\n  // Show the popup\n  public popupShown(): void {\n    this.isShown = true;\n  }\n\n  // Hide the popup\n  public popupHidden(): void {\n    this.isShown = false;\n    this.keyboardStatus = false;\n    this.checkError();\n    this.onModelTouched();\n    this.cdr.detectChanges();\n  }\n\n  // Reset the timepicker fields\n  public reset() {\n    this.clearTimeFields();\n    this.value = null;\n    this.checkError();\n  }\n\n  // Handle time change events\n  public timeChange(fieldName: string, step: number, fromInput = false): void {\n    if (this.readonly) return;\n    this.setStartTime(fromInput);\n\n    switch (fieldName) {\n      case this.hours.title: // hours\n        this.changeHour(step);\n        break;\n      case this.minutes.title: // minutes\n        this.changeMinute(step);\n        break;\n      case this.meridiem.title: // meridiem\n        this.toggleMeridiem();\n        break;\n    }\n    this.toGlobalFormat();\n  }\n\n  // Handle field change events\n  public fieldChange(fieldName: string, val: number, fromInput = false): void {\n    this.setStartTime(fromInput);\n\n    switch (fieldName) {\n      case this.hours.title: // hours\n        this.updateHour(val);\n        break;\n      case this.minutes.title: // minutes\n        this.updateMinute(val);\n        break;\n    }\n\n    this.toGlobalFormat();\n  }\n\n  // Validate the input field\n  public validateField(fieldName: string, event: KeyboardEvent): void {\n    const inputEl = event.target as HTMLInputElement;\n\n    if (fieldName !== this.meridiem.title) {\n      inputEl.value = inputEl.value.replace(/\\D/, '');\n    }\n\n    switch (fieldName) {\n      case this.hours.title: // hours\n        if (this.format === this.time.h24) {\n          this.setValidTime(inputEl, MAX_DAY_HOURS);\n        } else {\n          this.setValidTime(inputEl, this.time.h12);\n        }\n        break;\n      case this.minutes.title: // minutes\n        this.setValidTime(inputEl, MAX_MINUTES);\n        break;\n      case this.meridiem.title: // meridiem\n        this.changeMeridiemByKeypress(event);\n        break;\n    }\n  }\n\n  // Format the hour value\n  public formatHour(value: number): string {\n    if (value.toString() === '') return null;\n    if (Number.isNaN(value)) return this.padNumber(NaN);\n\n    const numericValue = Number(value);\n    const meridiemFormat = numericValue % this.time.h12 || this.time.h12;\n    const timeFormat = this.format === this.time.h12 ? meridiemFormat : numericValue % this.time.h24;\n\n    return this.padNumber(timeFormat);\n  }\n\n  // Handle input focus event\n  public inputFocus(): void {\n    this.isInputActive = true;\n  }\n\n  // Handle input blur event\n  public inputBlur(): void {\n    this.isInputActive = false;\n    if (this.errorState === ErrorState.focusOut) this.checkError();\n  }\n\n  // Close the timepicker popup\n  public close(): void {\n    this.sticker.hide();\n  }\n\n  // Clear the input field\n  public clearField(event: Event): void {\n    event.preventDefault();\n    this.reset();\n    this.removeFocus(this.clearBtn?.nativeElement);\n    this.timeInput?.nativeElement.focus();\n  }\n\n  // Remove focus from the element\n  private removeFocus(el: HTMLElement): void {\n    el.classList.remove(AdditionalClass.keyboardFocus);\n  }\n\n  // Change the hour value\n  private changeHour(step: number): void {\n    this.updateHour(this.getNumber(this.hours.value) + step);\n  }\n\n  // Update the hour value\n  private updateHour(hour: number): void {\n    const adjustedHour = hour < 0 ? this.time.h24 + hour : hour;\n\n    this.hours.value = this.padNumber(adjustedHour % this.time.h24);\n    this.meridiem.value = this.getMeridiem();\n  }\n\n  // Change the minute value\n  private changeMinute(step: number): void {\n    const value = +this.minutes.value;\n\n    this.updateMinute((Number.isNaN(value) ? 0 : value) + step);\n  }\n\n  // Update the minute value\n  private updateMinute(minute: number): void {\n    this.minutes.value = this.padNumber(minute % HOUR < 0 ? HOUR + (minute % HOUR) : minute % HOUR);\n    this.changeHour(Math.floor(minute / HOUR));\n  }\n\n  // Toggle the meridiem value\n  private toggleMeridiem(): void {\n    if (this.format === this.time.h12) {\n      this.changeHour(this.time.h12);\n    }\n  }\n\n  // Get the meridiem value\n  private getMeridiem(): MeridiemState {\n    const hours = this.value ? this.hours.value : this.hours.current;\n\n    return Number(hours) >= this.time.h12 ? this.meridiemState.pm : this.meridiemState.am;\n  }\n\n  // Change the meridiem value by keypress\n  private changeMeridiemByKeypress(event: KeyboardEvent): void {\n    const value = this.meridiem.value;\n    const keyCode = event.keyCode;\n    const inputEl = event.target as HTMLInputElement;\n\n    if ((keyCode === KeyCodes.KEY_A && value === MeridiemState.pm) || (keyCode === KeyCodes.KEY_P && value === MeridiemState.am)) {\n      this.toggleMeridiem();\n    } else {\n      inputEl.value = value;\n    }\n  }\n\n  // Convert the time to global format\n  private toGlobalFormat(isModelChange = true): void {\n    if (this.hours.value) {\n      const time = new Date();\n\n      time.setHours(+this.hours.value);\n      time.setMinutes(+this.minutes.value);\n      this._value = time;\n    }\n\n    if (isModelChange) {\n      this.onModelChange(this.value);\n      this.timeChanged.emit(this.value);\n    }\n    if (this.errorState === ErrorState.default) this.checkError();\n    this.checkIsEmpty();\n  }\n\n  // Get the numeric value\n  private getNumber<T>(value: T): number {\n    return Number.isNaN(Number(value)) ? 0 : Number(value);\n  }\n\n  // Pad the number with leading zero\n  private padNumber(value: number): string {\n    return !Number.isNaN(value) ? `0${value}`.slice(-2) : '';\n  }\n\n  // Set the valid time value\n  private setValidTime(inputEl: HTMLInputElement, maxTimeValue: number): void {\n    if (Number(inputEl.value) > maxTimeValue) {\n      inputEl.value = maxTimeValue.toString();\n    }\n  }\n\n  // Set the time value\n  private setTime(time: Date): void {\n    if (time) {\n      this.updateHour(time.getHours());\n      this.updateMinute(time.getMinutes());\n    }\n  }\n\n  // Check if the value is empty\n  private checkIsEmpty(): void {\n    this.isEmptyValue = !this._value;\n  }\n\n  // Check the label position\n  private checkLabelPosition(labelPosition: unknown): void {\n    if (labelPosition) {\n      this.isExternalLabel = this.labelPosition === LabelPosition.external;\n    }\n  }\n\n  // Check the size of the component\n  private checkSize(size: unknown): void {\n    if (size) {\n      this.isSizeLg = this.size === Size.lg;\n      this.isSizeSm = this.size === Size.sm;\n      this.buttonSize = this.size === Size.lg ? Size.lg : Size.md;\n      this.cdr.markForCheck();\n    }\n  }\n\n  // Set the start time\n  private setStartTime(fromInput: boolean): void {\n    if (!this.hours.value) {\n      this.hours.value = fromInput ? this.padNumber(1) : this.hours.current;\n    }\n    if (!this.minutes.value) {\n      this.minutes.value = fromInput ? this.padNumber(0) : this.minutes.current;\n    }\n  }\n\n  // Clear the time fields\n  private clearTimeFields(): void {\n    this.hours.value = '';\n    this.minutes.value = '';\n    this.meridiem.value = '';\n  }\n\n  // Validate the time step values\n  private validateTimeStep(): void {\n    if (this.hourStep < 1) {\n      this.hourStep = TIMEPICKER_HOUR_STEP;\n    }\n    if (this.minuteStep < 1) {\n      this.minuteStep = TIMEPICKER_MINUTE_STEP;\n    }\n  }\n\n  // Set the i18n texts\n  protected setI18nTexts(translation: ITranslation): void {\n    this.openPopupBtnAriaLabel = translation.TIMEPICKER.A11Y.OPEN_POPUP_ARIA_LABEL;\n    this.clearBtnAriaLabel = translation.TIMEPICKER.A11Y.CLEAR_BTN_ARIA_LABEL;\n    this.cdr.detectChanges();\n  }\n}\n","<div ddsResize\n     class=\"dds-timepicker-wrap {{customClass}}\"\n     [ngClass]=\"{'dds-timepicker-wrap_inverse': isInverse}\">\n  <label [ngClass]=\"{\n         'dds-select_lg': isSizeLg && isExternalLabel,\n         'dds-select_sm': isSizeSm && isExternalLabel,\n         'dds-select_external': isExternalLabel || !label,\n         'dds-select_disabled': disabled,\n         'show': isShown || isInputActive,\n         'dds-select_error': _isError,\n         'dds-select_inverse': isInverse,\n         'dds-select_readonly': readonly\n        }\"\n         class=\"dds-select dds-select_lg\">\n\n    @if ((label && isExternalLabel) || description) {\n    <div class=\"dds-select__text-wrap\">\n      @if (label && isExternalLabel) {\n      <span class=\"dds-select__title\">{{ label }}\n        @if (isRequired) {\n        <span class=\"dds-required\"></span>\n        }\n      </span>\n      }\n      @if (description) {\n      <span class=\"dds-select__description\">{{description}}</span>\n      }\n    </div>\n    }\n\n    <div [ngClass]=\"{\n           'dds-timepicker__select_active': isShown || isInputActive,\n           'dds-datepicker__field_with-clear': isClearBtnEnabled && !!value,\n          'dds-datepicker__field_with-clear_lg': isSizeLg && isExternalLabel && !!value,\n          'dds-datepicker__field_with-clear_sm': isSizeSm && isExternalLabel && !!value\n         }\"\n         class=\"dds-timepicker__select dds-select__field\"\n         #timepickerBtn>\n      @if (label && !isExternalLabel) {\n      <span class=\"dds-select__title\">{{ label }}\n        @if (isRequired) {\n        <span class=\"dds-required\"></span>\n        }\n      </span>\n      }\n\n      <div class=\"dds-timepicker__fields\"\n           role=\"group\">\n        @for (field of timeFields; track field; let index = $index; let first = $first) {\n        @if (!isMeridiemField(field)) {\n        <input [value]=\"isHoursField(field) ? formatHour(field.value) : field.value\"\n               [disabled]=\"disabled\"\n               [title]=\"field.title\"\n               [placeholder]=\"field.placeholder\"\n               [ddsFocus]=\"timepickerBtn\"\n               [attr.aria-required]=\"isRequired || _isFormControlRequired\"\n               [required]=\"isRequired\"\n               [readonly]=\"readonly\"\n               class=\"dds-timepicker__input dds-select__active-item dds-timepicker__input_{{field.title}}\"\n               type=\"text\"\n               maxlength=\"2\"\n               (focus)=\"inputFocus()\"\n               (blur)=\"inputBlur()\"\n               (change)=\"fieldChange(field.title, $any($event).target.value, true)\"\n               (keydown.ArrowUp)=\"timeChange(field.title, getStep(field.title), true); $event.preventDefault()\"\n               (keydown.ArrowDown)=\"timeChange(field.title, -getStep(field.title), true); $event.preventDefault()\"\n               (keyup)=\"validateField(field.title, $event)\"\n               #timeInput />\n        }\n        @if (first) {\n        <span class=\"dds-timepicker__separator\"\n              [ngClass]=\"{'dds-timepicker__separator_has-value': !!field.value}\">:</span>\n        }\n        }\n      </div>\n\n      @if (isClearBtnEnabled) {\n      <button class=\"dds-timepicker__clear dds-select__icon\"\n              [ngClass]=\"{\n                  'dds-timepicker__clear_shown': !!value,\n                  'dds-timepicker__clear_lg': isSizeLg && isExternalLabel,\n                  'dds-timepicker__clear_sm': isSizeSm && isExternalLabel\n                }\"\n              [attr.aria-label]=\"clearBtnAriaLabel\"\n              ddsFocus\n              type=\"button\"\n              [disabled]=\"disabled || readonly\"\n              (click)=\"clearField($event)\"\n              #clearBtn>\n        <span class=\"dds-icon dds-icon_close\"></span>\n      </button>\n      }\n      <button [disabled]=\"disabled || readonly\"\n              [ddsSticker]=\"timepickerPopup\"\n              [stickerIsOutsideClick]=\"stickerIsOutsideClick\"\n              [stickerShift]=\"stickerShift\"\n              [stickerMaxHeight]=\"stickerMaxHeight\"\n              [stickerIsDisabled]=\"stickerIsDisabled\"\n              [stickerIsResponsive]=\"isResponsive\"\n              [stickerPosition]=\"stickerPosition\"\n              [stickerIndent]=\"stickerIndent\"\n              [stickerWidth]=\"stickerWidth\"\n              [stickerCustomClass]=\"stickerCustomClass\"\n              [stickerIsDynamic]=\"stickerIsDynamic\"\n              [stickerEl]=\"timepickerBtn\"\n              [stickerFocusedEl]=\"button\"\n              [attr.aria-label]=\"openPopupBtnAriaLabel\"\n              [attr.aria-expanded]=\"isShown\"\n              [attr.aria-invalid]=\"_isError\"\n              [attr.aria-disabled]=\"disabled\"\n              aria-haspopup=\"true\"\n              role=\"button\"\n              ddsFocus\n              class=\"dds-timepicker__btn dds-select__icon dds-icon {{icon}}\"\n              (click)=\"toggleTimepicker($event)\"\n              (keydown)=\"onKeydown($event)\"\n              (onShown)=\"popupShown()\"\n              (onHidden)=\"popupHidden()\"\n              #stickerDir=\"dds-sticker\"\n              #button></button>\n    </div>\n\n    @if (_isError && errorMessage) {\n    <span class=\"dds-select__error\">{{errorMessage}}</span>\n    }\n  </label>\n\n  <ng-template #timepickerPopup>\n    <dds-timepicker-popup [isResponsive]=\"isResponsive\"\n                          [isInverse]=\"isInverse\"></dds-timepicker-popup>\n  </ng-template>\n</div>\n","import { NgModule } from '@angular/core';\nimport { TimepickerComponent } from './timepicker/timepicker.component';\n\n@NgModule({\n  declarations: [],\n  imports: [TimepickerComponent],\n  exports: [TimepickerComponent],\n})\nexport class TimepickerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i5","i1","i2","i3","i4","i7"],"mappings":"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"}