{"version":3,"file":"yuuvis-client-framework-datepicker.mjs","sources":["../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker.interface.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker.utils.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker.service.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/date-input/date-input-element/date-input-element.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/date-input/date-input-element/date-input-element.component.html","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/date-input/date-input-hour-element/date-input-hour-element.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/time-input/time-input.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/time-input/time-input.component.html","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/calendar/calendar.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/calendar/calendar.component.html","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/date-input/date-input.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/date-input/date-input.component.html","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker-calendar/datepicker-calendar.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker-calendar/datepicker-calendar.component.html","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker.component.html","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker-calendar/datepicker-calendar-trigger.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker.module.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/yuuvis-client-framework-datepicker.ts"],"sourcesContent":["export interface DatepickerLabels {\n  calendarApply: string;\n  calendarCancel: string;\n  shortcut: {\n    today: string;\n  };\n}\n\nexport interface DatepickerCalendarTriggerTarget {\n  openCalendar: () => void;\n}\n\nexport interface DatepickerValueChange {\n  value: Date | null;\n  propagateChange: boolean;\n}\n\nexport interface DatepickerValidationOptions {\n  withTime?: boolean;\n  onlyFutureDates?: boolean;\n  minDate?: Date;\n  maxDate?: Date;\n}\nexport interface DatepickerCalendarOptions extends DatepickerValidationOptions {\n  hour12?: boolean;\n  locale?: string;\n  labels?: DatepickerLabels;\n}\n\nexport type DayPeriod = 'am' | 'pm';\n\nexport interface DayPeriodLabels {\n  am: string;\n  pm: string;\n}\n\nexport const DEFAULT_DAY_PERIOD_LABELS = {\n  am: 'AM',\n  pm: 'PM'\n};\n","import { ValidationErrors } from '@angular/forms';\n\nimport { DatepickerValidationOptions } from './datepicker.interface';\n\nexport class DatepickerUtils {\n  /**\n   * Get preferred hour cycle for a given locale\n   * @param locale the locale to get the hour cycle for\n   */\n  static getPreferredHourCycle(locale: string): 'h11' | 'h12' | 'h23' | 'h24' | undefined {\n    const l = new Intl.Locale(locale) as any;\n    const hc =\n      l.hourCycles || l.getHourCycles\n        ? // Chrome and Edge\n          l.hourCycles ||\n          // Safari\n          l.getHourCycles()\n        : // Not supported by Firefox right now\n          [];\n    return hc.length ? hc[0] : 'h23';\n  }\n\n  /**\n   * Get week info for a given locale.\n   * Notice:\n   * @param locale the locale to get the weekinfo for\n   */\n  static getWeekInfo(locale: string): {\n    firstDay: number;\n    minimalDays: number;\n    weekend: number[];\n  } {\n    const l = new Intl.Locale(locale) as any;\n    const weekInfo =\n      l.weekInfo || l.getWeekInfo\n        ? // Chrome and Edge\n          l.weekInfo ||\n          // Safari\n          l.getWeekInfo()\n        : undefined;\n    // Not supported by Firefox right now so we'll return defaults\n\n    return {\n      firstDay: weekInfo?.firstDay || 7,\n      minimalDays: weekInfo?.minimalDays || 1,\n      weekend: weekInfo?.weekend || [6, 7]\n    };\n  }\n\n  static isFutureDate(d: Date, withTime = false): boolean {\n    const today = new Date();\n    if (!withTime) {\n      // future date without time also includes the whole current day\n      today.setDate(today.getDate() - 1);\n      today.setUTCHours(23, 59, 59);\n    }\n    return d.getTime() >= today.getTime();\n  }\n\n  static isValidDate(v: any): boolean {\n    const date = new Date(v);\n    return !!date && Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date!.getTime());\n  }\n\n  static isValidValue(date: Date | null, o: DatepickerValidationOptions): boolean {\n    const err = DatepickerUtils.validateValue(date, o);\n    return !!err && Object.keys(err).length > 0;\n  }\n\n  static validateValue(date: Date | null | undefined, o: DatepickerValidationOptions): ValidationErrors | null {\n    const err: { [key: string]: any } = {};\n    if (date) {\n      if (o.onlyFutureDates && !DatepickerUtils.isFutureDate(date, o.withTime)) {\n        err['onlyFutureDates'] = { onlyFutureDates: false };\n      }\n      if (o.minDate && !(date > o.minDate)) {\n        err['minDate'] = { minDate: false };\n      }\n      if (o.maxDate && !(date < o.maxDate)) {\n        err['maxDate'] = { maxDate: false };\n      }\n    }\n    return Object.keys(err).length ? err : null;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { DatepickerValidationOptions, DatepickerValueChange, DayPeriodLabels } from './datepicker.interface';\nimport { DatepickerUtils } from './datepicker.utils';\n\n@Injectable()\nexport class DatepickerService {\n  private _value: Date | null = null;\n  private _valueChangeSource = new ReplaySubject<DatepickerValueChange>();\n  valueChange$: Observable<DatepickerValueChange> = this._valueChangeSource.asObservable();\n\n  private _validationChangeSource = new ReplaySubject<boolean>();\n  validationChange$: Observable<boolean> = this._validationChangeSource.asObservable();\n\n  DEFAULT_LANGUAGE = 'en';\n  yearOffset = 0;\n  datePattern?: string;\n  private _language: string = this.DEFAULT_LANGUAGE;\n  private _languageSource = new ReplaySubject<string>();\n  language$: Observable<string> = this._languageSource.asObservable();\n\n  private _validationErrors: ValidationErrors | null = null;\n  private _options: DatepickerValidationOptions = {};\n\n  /**\n   * Handler for paste events from the components inputs. If the clipboard\n   * contains a whole date it will be covered by the service.\n   * @param event the ClipboardEvent\n   * @returns true if the paste event has been processed by the service, false otherwise\n   */\n  onPaste(e: string | ClipboardEvent): boolean {\n    const paste: string = typeof e === 'string' ? e : (e.clipboardData || (window as any).clipboardData).getData('text');\n    if (DatepickerUtils.isValidDate(paste)) {\n      this.setValue(new Date(paste));\n      return true;\n    } else return false;\n  }\n\n  setLanguage(isoCode: string) {\n    if (isoCode === this._language) return;\n    this._language = isoCode || this.DEFAULT_LANGUAGE;\n    // check for year offset\n    // e.g. Taiwan has a year offset of +543 years (Thai solar calendar)\n    const d = new Date();\n    const dtf = new Intl.DateTimeFormat(this._language, {\n      year: 'numeric'\n    }).formatToParts(d);\n    const dtfYear = dtf.find((t) => t.type === 'year');\n    this.yearOffset = parseInt(dtfYear!.value) - d.getFullYear();\n    this._languageSource.next(this._language);\n    this.setValue(this._value);\n  }\n\n  getDatePattern(locale: string, withTime: boolean, hour12: boolean): string {\n    let pattern = '';\n    Intl.DateTimeFormat(locale, this.getIntlOptions(withTime, hour12))\n      .formatToParts(new Date())\n      .forEach((t: Intl.DateTimeFormatPart) => {\n        switch (t.type) {\n          case 'day': {\n            pattern += 'dd';\n            break;\n          }\n          case 'month': {\n            pattern += 'MM';\n            break;\n          }\n          case 'year': {\n            pattern += 'yyyy';\n            break;\n          }\n          case 'hour': {\n            pattern += 'HH';\n            break;\n          }\n          case 'minute': {\n            pattern += 'mm';\n            break;\n          }\n          case 'dayPeriod': {\n            pattern += t.value;\n            break;\n          }\n          default: {\n            pattern += t.value;\n          }\n        }\n      });\n    return pattern;\n  }\n\n  isDifferent(d1: Date | null, d2: Date | null): boolean {\n    const x1: number = d1 instanceof Date ? d1.getTime() : -1;\n    const x2: number = d2 instanceof Date ? d2.getTime() : -1;\n    return x1 !== x2;\n  }\n\n  setValue(date: Date | null, silent?: boolean) {\n    if (this.isDifferent(date, this._value)) {\n      this._value = date;\n      if (date === null) {\n        this._validationErrors = {};\n        this._emitValidationChange();\n      }\n      this._validateValue();\n      this._valueChangeSource.next({\n        value: this._value,\n        propagateChange: !silent\n      });\n    }\n  }\n\n  setOption(options: DatepickerValidationOptions) {\n    this._options = {\n      ...this._options,\n      ...options\n    } as DatepickerValidationOptions;\n  }\n\n  hasErrors(): boolean {\n    return this._validationErrors !== null;\n  }\n\n  getErrors(): ValidationErrors | null {\n    return this._validationErrors;\n  }\n\n  setErrors(err: ValidationErrors) {\n    this._validationErrors = { ...(this._validationErrors || {}), ...err };\n    this._emitValidationChange();\n  }\n\n  removeErrors(err: string[]) {\n    if (this._validationErrors) {\n      err.forEach((k) => {\n        delete this._validationErrors![k];\n      });\n      this._emitValidationChange();\n    }\n  }\n\n  private _emitValidationChange() {\n    const valid = !this._validationErrors || Object.keys(this._validationErrors).length === 0;\n    this._validationChangeSource.next(valid);\n  }\n\n  getIntlOptions(withTime = false, hour12 = false): Intl.DateTimeFormatOptions {\n    const baseIntlOptions: Intl.DateTimeFormatOptions = {\n      day: '2-digit',\n      month: '2-digit',\n      year: 'numeric'\n    };\n    const timeIntlOptions: Intl.DateTimeFormatOptions = {\n      hour: '2-digit',\n      minute: '2-digit',\n      hourCycle: hour12 ? 'h12' : 'h23'\n    };\n    return withTime ? { ...baseIntlOptions, ...timeIntlOptions } : baseIntlOptions;\n  }\n\n  /**\n   * Returns locale specific values for AM/PM\n   * @param locale locale string\n   * @returns\n   */\n  getDayPeriodLabels(locale: string): DayPeriodLabels {\n    const dtf = new Intl.DateTimeFormat(locale, this.getIntlOptions(true, true));\n    const amPart = dtf.formatToParts(new Date('2000-01-01T03:00:00')).find((p) => p.type === 'dayPeriod');\n    const pmPart = dtf.formatToParts(new Date('2000-01-01T15:00:00')).find((p) => p.type === 'dayPeriod');\n    return {\n      am: amPart?.value || 'AM',\n      pm: pmPart?.value || 'PM'\n    };\n  }\n\n  private _validateValue(): void {\n    this._validationErrors = DatepickerUtils.validateValue(this._value, this._options);\n  }\n}\n","import { Component, forwardRef, inject, input, Input, output } from '@angular/core';\nimport {\n  ControlValueAccessor,\n  FormControl,\n  FormsModule,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ReactiveFormsModule,\n  UntypedFormControl,\n  Validator\n} from '@angular/forms';\nimport { DatepickerService } from '../../datepicker.service';\n\n@Component({\n  selector: 'yuv-date-input-element',\n  templateUrl: './date-input-element.component.html',\n  styleUrls: ['./date-input-element.component.scss'],\n  imports: [FormsModule, ReactiveFormsModule],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DateInputElementComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => DateInputElementComponent),\n      multi: true\n    }\n  ],\n  host: {\n    '(paste)': 'pasteHandler($event)',\n    '(keydown)': 'keyDownHandler($event)'\n  }\n})\nexport class DateInputElementComponent implements ControlValueAccessor, Validator {\n  private datepickerService = inject(DatepickerService);\n\n  _value?: string;\n\n  pasteHandler(event: ClipboardEvent) {\n    const paste = (event.clipboardData || (window as any).clipboardData).getData('text');\n    if (paste.length > this.maxLength() && this.datepickerService.onPaste(paste)) event.preventDefault();\n  }\n\n  keyDownHandler(event: KeyboardEvent) {\n    if (this.disabled) return;\n    // increase value\n    else if (event.key === 'ArrowUp') {\n      this._stopEvent(event);\n      this.increaseValue(event.shiftKey ? 10 : 1);\n    }\n    // decrease value\n    else if (event.key === 'ArrowDown') {\n      this._stopEvent(event);\n      this.decreaseValue(event.shiftKey ? 10 : 1);\n    }\n  }\n\n  readonly maxLength = input(2);\n  @Input() maxValue: number | undefined;\n  @Input() minValue = 1;\n  @Input() disabled = false;\n  placeholder = input<string>('');\n  readonly next = output();\n  readonly prev = output();\n\n  fc = new FormControl();\n\n  protected _isNumber(v: any) {\n    return typeof v === 'number' && isFinite(v);\n  }\n\n  private _stopEvent(event: Event) {\n    event.preventDefault();\n    event.stopPropagation();\n  }\n\n  onInputChange(iv: string) {\n    this._propagate();\n    if (iv?.length === this.maxLength()) {\n      this.next.emit();\n    }\n  }\n\n  onBlur() {\n    if (this._value && this._value.length < this.maxLength()) {\n      this._setValue(this._value!);\n    }\n  }\n\n  wheelHandler(event: WheelEvent) {\n    this._stopEvent(event);\n    if (event.deltaY < 0) this.increaseValue();\n    else if (event.deltaY > 0) this.decreaseValue();\n  }\n\n  keydownHandler(event: KeyboardEvent) {\n    if (event.key === 'ArrowRight') {\n      const caretPos = (event.target as HTMLInputElement).selectionStart;\n      if (caretPos === this.maxLength()) {\n        this.next.emit();\n      }\n    } else if (event.key === 'ArrowLeft') {\n      const caretPos = (event.target as HTMLInputElement).selectionStart;\n      if (caretPos === 0) {\n        this.prev.emit();\n      }\n    }\n  }\n\n  focusHandler(event: FocusEvent) {\n    const i = event.target as HTMLInputElement;\n  }\n\n  protected _setValue(n: any, silent = false) {\n    const v = this._isValidInput(n)\n      ? `${[...Array(this.maxLength() - n.toString().length).keys()].map((_) => '0').join('')}${n.toString()}`\n      : undefined;\n    if (v !== this._value) {\n      this._value = v;\n      if (!silent) this._propagate();\n      // if (n.toString().length !== v?.length) this.validationChange();\n    }\n  }\n\n  increaseValue(step = 1) {\n    const v = (parseInt(this._value!) || 0) + step;\n    this._setValue(this.maxValue ? (v <= this.maxValue ? v : this.minValue) : v);\n  }\n\n  decreaseValue(step = 1) {\n    const v = (parseInt(this._value!) || 0) - step;\n    this._setValue(this.maxValue ? (v < this.minValue ? this.maxValue : v) : v);\n  }\n\n  private _applyOffset(): boolean {\n    return this.maxLength() === 4 && !!this.datepickerService.yearOffset;\n  }\n\n  private _propagate() {\n    // being the year input (4 digits) also take yearOffset into accout\n    if (this._applyOffset()) {\n      let parsedValue = parseInt(this._value || '');\n      if (!isNaN(parsedValue)) {\n        parsedValue -= this.datepickerService.yearOffset;\n        this.propagateChange(`${parsedValue}`);\n      } else this.propagateChange(undefined);\n    } else this.propagateChange(this._value);\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  propagateChange = (_: any) => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  validationChange = () => {};\n\n  writeValue(value: any): void {\n    if (value !== undefined && this._applyOffset()) {\n      let parsedValue = parseInt(value || '');\n      if (!isNaN(parsedValue)) {\n        parsedValue += this.datepickerService.yearOffset;\n        this._setValue(parsedValue);\n      }\n    } else this._setValue(value, true);\n  }\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n\n  registerOnValidatorChange?(fn: () => void): void {\n    this.validationChange = fn;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  registerOnTouched(fn: any): void {}\n\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  private _isValidInput(v: any): boolean {\n    const n = parseInt(v);\n    return this._isNumber(n) && (!this.maxValue || n <= this.maxValue) && (!this.minValue || n >= this.minValue);\n  }\n\n  validate(c: UntypedFormControl) {\n    return !this._value || this._isValidInput(this._value) ? null : { dateInputElement: { valid: false } };\n  }\n}\n","<input\n[placeholder]=\"placeholder()\"\n  type=\"text\"\n  (focus)=\"focusHandler($event)\"\n  (keydown)=\"keydownHandler($event)\"\n  (wheel)=\"wheelHandler($event)\"\n  (blur)=\"onBlur()\"\n  [readonly]=\"disabled\"\n  pattern=\"[0-9]*\"\n  [disabled]=\"disabled\"\n  [maxlength]=\"maxLength()\"\n  [(ngModel)]=\"_value\"\n  (ngModelChange)=\"onInputChange($event)\"\n/>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, forwardRef, output } from '@angular/core';\nimport { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DateInputElementComponent } from '../date-input-element/date-input-element.component';\n\n@Component({\n  selector: 'yuv-date-input-hour-element',\n  templateUrl: './../date-input-element/date-input-element.component.html',\n  styleUrls: ['./../date-input-element/date-input-element.component.scss'],\n  standalone: true,\n  imports: [CommonModule, FormsModule],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DateInputHourElementComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => DateInputHourElementComponent),\n      multi: true\n    }\n  ]\n})\nexport class DateInputHourElementComponent extends DateInputElementComponent {\n  @Input() set dayPeriod(p: 'am' | 'pm' | undefined) {\n    if (p === 'am' || p === 'pm') {\n      this.maxValue = 12;\n      this.minValue = 1;\n    } else {\n      this.maxValue = 23;\n      this.minValue = 0;\n    }\n  }\n  readonly dayPeriodChange = output<'am' | 'pm'>();\n\n  constructor() {\n    super();\n  }\n\n  override writeValue(value: any): void {\n    if (parseInt(value) === 0) this._value = '12';\n    this._setValue(value, true);\n  }\n}\n","import { Component, forwardRef, Input, input, viewChild } from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  FormBuilder,\n  FormGroup,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ReactiveFormsModule,\n  ValidationErrors,\n  Validator,\n  Validators\n} from '@angular/forms';\n\nimport { CommonModule } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DateInputElementComponent } from '../date-input/date-input-element/date-input-element.component';\nimport { DateInputHourElementComponent } from '../date-input/date-input-hour-element/date-input-hour-element.component';\nimport { DayPeriod, DayPeriodLabels, DEFAULT_DAY_PERIOD_LABELS } from '../datepicker.interface';\nimport { TimeValue } from './time-input.interface';\n\n@Component({\n  selector: 'yuv-time-input',\n  templateUrl: './time-input.component.html',\n  styleUrls: ['./time-input.component.scss'],\n  standalone: true,\n  imports: [CommonModule, MatIconModule, DateInputHourElementComponent, DateInputElementComponent, MatButtonModule, ReactiveFormsModule],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => TimeInputComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => TimeInputComponent),\n      multi: true\n    }\n  ]\n})\nexport class TimeInputComponent implements ControlValueAccessor, Validator {\n  readonly hourInput = viewChild.required<DateInputHourElementComponent>('dipHour');\n  readonly minuteInput = viewChild.required<DateInputElementComponent>('dipMinute');\n\n  private _time?: TimeValue;\n  protected _hour12 = false;\n  @Input()\n  get hour12() {\n    return this._hour12;\n  }\n  set hour12(b: boolean) {\n    this._hour12 = b;\n    if (this._hour12 && this._time) this._patch(this._time, true);\n  }\n  readonly dayPeriodLabels = input<DayPeriodLabels>(DEFAULT_DAY_PERIOD_LABELS);\n\n  private _currentDayPeriod?: DayPeriod;\n  set currentDayPeriod(p: DayPeriod | undefined) {\n    if (p !== this._currentDayPeriod) {\n      this._currentDayPeriod = p;\n      this._propagate();\n    }\n  }\n  get currentDayPeriod() {\n    return this._currentDayPeriod;\n  }\n  form: FormGroup = this.fb.group({\n    hour: ['', [Validators.required]],\n    minute: ['', [Validators.required, Validators.max(59)]]\n  });\n\n  constructor(private fb: FormBuilder) {\n    this.form.valueChanges.pipe(\n      takeUntilDestroyed()\n    ).subscribe({\n      next: (v) => this._propagate()\n    })\n    this.form.statusChanges.pipe(\n      takeUntilDestroyed()\n    ).subscribe({\n      next: (v) => this.validationChange()\n    })\n  }\n\n  private _propagate() {\n    if (this.form.valid) {\n      const strHour = this.form.value.hour;\n      let hour = parseInt(strHour);\n      if (isNaN(hour)) hour = 0;\n      if (this.hour12 && hour === 0) {\n        hour = 12;\n      }\n      this._time = {\n        hour,\n        minute: parseInt(this.form.value.minute),\n        dayPeriod: this.currentDayPeriod\n      };\n      this.propagateChange(this._time);\n    }\n  }\n\n  private _patch(value: TimeValue, silent?: boolean) {\n    if (!this._time) {\n      const now = new Date();\n      this._time = {\n        hour: now.getHours(),\n        minute: now.getMinutes()\n      };\n    }\n    const patch = {\n      hour: value.hour,\n      minute: value.minute\n    };\n    if (this._hour12 && value) {\n      this.currentDayPeriod = value.dayPeriod;\n      if (this.currentDayPeriod === 'pm' && patch.hour >= 12) {\n        patch.hour -= 12;\n      }\n      if (patch.hour === 0) patch.hour = 12;\n    }\n    this.form.patchValue(patch, { onlySelf: true, emitEvent: !silent });\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  propagateChange = (_: any) => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  validationChange = () => {};\n\n  writeValue(value: TimeValue): void {\n    if (value === null) return;\n    this._time = value;\n    this._patch(value, true);\n  }\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n\n  registerOnValidatorChange?(fn: () => void): void {\n    this.validationChange = fn;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  registerOnTouched(fn: any): void {}\n\n  validate(ac: AbstractControl): ValidationErrors | null {\n    return this.form.valid ? null : { invalidTime: true };\n  }\n}\n","<form [formGroup]=\"form\">\n  <yuv-date-input-hour-element\n    #dipHour\n    class=\"time hour focusable\"\n    [(dayPeriod)]=\"currentDayPeriod\"\n    formControlName=\"hour\"\n    [maxLength]=\"2\"\n  ></yuv-date-input-hour-element>\n\n  <div class=\"literal\">:</div>\n\n  <yuv-date-input-element\n    #dipMinute\n    class=\"time minute focusable\"\n    [maxValue]=\"59\"\n    [minValue]=\"0\"\n    formControlName=\"minute\"\n    [maxLength]=\"2\"\n  ></yuv-date-input-element>\n\n  @if (hour12) {\n    <div class=\"dayPeriod\">\n      <button type=\"button\" class=\"dp pm\" [ngClass]=\"{ active: currentDayPeriod === 'pm' }\" (click)=\"currentDayPeriod = 'pm'\">\n        {{ dayPeriodLabels().pm }}\n      </button>\n      <button type=\"button\" class=\"dp am\" [ngClass]=\"{ active: currentDayPeriod === 'am' }\" (click)=\"currentDayPeriod = 'am'\">\n        {{ dayPeriodLabels().am }}\n      </button>\n    </div>\n  }\n</form>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, OnInit, effect, inject, input, model, untracked, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { DEFAULT_DAY_PERIOD_LABELS, DayPeriodLabels } from '../datepicker.interface';\nimport { DatepickerService } from '../datepicker.service';\nimport { DatepickerUtils } from '../datepicker.utils';\nimport { TimeInputComponent } from '../time-input/time-input.component';\nimport { TimeValue } from '../time-input/time-input.interface';\n\nexport interface CalendarItem {\n  id: string;\n  day: number;\n  // marked as inactive but still selectable\n  inactive?: boolean;\n  // not selectable\n  disabled?: boolean;\n}\n\n@Component({\n  selector: 'yuv-calendar',\n  templateUrl: './calendar.component.html',\n  styleUrls: ['./calendar.component.scss'],\n  standalone: true,\n  imports: [CommonModule, FormsModule, TranslatePipe, MatSelectModule, TimeInputComponent],\n  providers: [DatepickerService]\n})\nexport class CalendarComponent implements OnInit {\n  private datepickerService = inject(DatepickerService);\n\n  calEl = viewChild.required<ElementRef>('cal');\n  private _initialized = false;\n\n  maxYear = 9999;\n  minYear = -9999;\n\n  year?: number;\n  _offsetYear?: number;\n  month?: number;\n  time?: TimeValue;\n\n  // feature flag for immediately selecting a new (close) Date when\n  // navigating between years/months\n  #immediatelySelect = true;\n\n  /**\n   * Allow only date inputs after this date\n   */\n  minDate = input<Date>();\n  /**\n   * Allow only date inputs before this date\n   */\n  maxDate = input<Date>();\n  /**\n   * Allow only date inputs that are after today\n   */\n  onlyFutureDates = input(false);\n\n  date = model<Date | undefined>(new Date());\n  #dateEffect = effect(() => {\n    const d = this.date();\n    untracked(() => {\n      // clone date\n      const dc = d ? new Date(d.toISOString()) : null;\n      if (this.datepickerService.isDifferent(d || null, dc)) {\n        if (this._initialized) this.#buildDate();\n      }\n    });\n  });\n\n  months: { label: string; value: number }[] = [];\n  private DEFAULT_FIRST_DAY_OF_WEEK = 7;\n  private _firstDayOfWeek: number = this.DEFAULT_FIRST_DAY_OF_WEEK;\n  daysOfWeek: string[] = [];\n  dayPeriodLabels: DayPeriodLabels = DEFAULT_DAY_PERIOD_LABELS;\n\n  locale = input<string | undefined>();\n  #localeEffect = effect(() => {\n    this._setLocale(this.locale() || 'en');\n  });\n\n  withTime = input<boolean>(false);\n  #withTimeEffect = effect(() => {\n    // keep to trigger effect\n    const wt = this.withTime();\n    untracked(() => {\n      const d = this.date();\n      if (d) {\n        this.time = this._dateToTime(d);\n      }\n    });\n  });\n  hour12 = input<boolean>(false);\n\n  selectedIndex = -1;\n  focusedIndex = 0;\n  private _focusPos: { col: number; row: number } = {\n    col: 1,\n    row: 1\n  };\n  calendarDays: CalendarItem[] = [];\n  private _numberOfWeeks = 4;\n\n  ngOnInit(): void {\n    this._initialized = true;\n    const d = this.date();\n    if (d) {\n      this.selectMonthOfYear(d.getMonth(), d.getFullYear());\n      this.time = {\n        hour: d.getHours(),\n        minute: d.getMinutes()\n      };\n    }\n  }\n\n  private _dateToTime(date: Date): TimeValue {\n    const hour = date.getHours();\n    const dayPeriod = this.hour12() ? (date.getHours() >= 12 ? 'pm' : 'am') : undefined;\n\n    return structuredClone({\n      hour: dayPeriod === 'pm' && hour > 12 ? hour - 12 : hour,\n      minute: date.getMinutes(),\n      dayPeriod\n    });\n  }\n\n  #buildDate() {\n    const _date = this.date();\n    const _withTime = this.withTime();\n    if (_date) {\n      this.selectedIndex = -1;\n      this.selectMonthOfYear(_date.getMonth(), _date.getFullYear(), true);\n\n      if (_withTime) {\n        this.time = this._dateToTime(_date);\n        _date.setSeconds(0, 0);\n      } else {\n        _date.setHours(0, 0, 0, 0);\n      }\n      this.select(_date, true, true);\n    }\n  }\n\n  selectByIndex(i: number, setFocusPosition?: boolean) {\n    const d = new Date(this.calendarDays[i].id);\n    if (this.time) {\n      d.setHours(this.time.dayPeriod === 'pm' && this.time.hour < 12 ? this.time.hour + 12 : this.time.hour);\n      d.setMinutes(this.time.minute);\n    }\n    this.select(d, setFocusPosition);\n  }\n\n  select(d: Date | string | number, setFocusPosition?: boolean, silent?: boolean) {\n    const date = d instanceof Date ? d : new Date(d);\n\n    // check if the selected date is in a different month/year\n    if (date.getFullYear() !== this.year || date.getMonth() !== this.month) {\n      this.selectMonthOfYear(date.getMonth(), date.getFullYear(), true);\n    }\n\n    // also be aware of time\n    if (this.withTime()) {\n      const time = this._dateToTime(date);\n\n      if (this.time && this.time.hour === time.hour && this.time.minute === time.minute) {\n        let amPmShift = this.time.dayPeriod === 'pm' && this.time.hour !== 12 ? 12 : 0;\n        if (this.time.dayPeriod === 'am' && this.time.hour === 12) amPmShift = -12;\n        date.setHours(this.time.hour + amPmShift);\n        date.setMinutes(this.time.minute, 0, 0);\n      } else this.time = time;\n    }\n    if (!this.onlyFutureDates() || DatepickerUtils.isFutureDate(date)) {\n      this.selectedIndex = this._getCalendarIndex(date);\n      if (setFocusPosition) this._setFocusPosByCalendarIndex(this.selectedIndex);\n      this.date.update(() => date);\n      // if (!silent) this.dateChange.emit(date);\n    }\n  }\n\n  selectMonthOfYear(month: number, year?: number, skipImmediateSelect?: boolean) {\n    if (month < 0 || month > 11) return;\n    if (month !== this.month) this.month = month;\n    if (!this.year && !year) this.year = new Date().getFullYear();\n    if (year && this.year !== year) this.year = year;\n    if (this.year && this.datepickerService.yearOffset)\n      this._offsetYear = this.year + this.datepickerService.yearOffset;\n    else this._offsetYear = this.year;\n    this._buildMonth(this.year!, this.month);\n\n    const date = this.date();\n    if (!skipImmediateSelect && this.#immediatelySelect && date) {\n      let d = new Date(date);\n      d.setMonth(month);\n\n      if (d.getMonth() !== month) {\n        // already in the next month (e.g. going from the 31st of August to September)\n        // so we'll pick the last date of the month that has been selected\n        d = new Date(d.getFullYear(), month + 1, 0);\n      }\n      this.select(d, true);\n    }\n  }\n\n  selectYear(year: number, skipImmediateSelect?: boolean) {\n    if (this.datepickerService.yearOffset) year -= this.datepickerService.yearOffset;\n    if (year > this.maxYear || year < this.minYear) return;\n    if (year && this.year !== year) this.year = year;\n    this._buildMonth(this.year!, this.month!);\n\n    const date = this.date();\n    if (!skipImmediateSelect && this.#immediatelySelect && date) {\n      const d = new Date(date);\n      d.setFullYear(year);\n      this.select(d, true);\n    }\n  }\n\n  onYearInputKeydown(e: KeyboardEvent) {\n    e.stopPropagation();\n  }\n\n  onTimeChange(e: TimeValue) {\n    const date = this.date();\n    if (date) {\n      const newDate = new Date(date.getTime());\n      let hour: number = e.dayPeriod === 'pm' && e.hour < 12 ? e.hour + 12 : e.hour;\n      hour = e.dayPeriod === 'am' && hour === 12 ? 0 : hour;\n      newDate.setHours(hour === 24 ? 0 : hour);\n      newDate.setMinutes(e.minute);\n      this.time = e;\n      this.date.update(() => newDate);\n    }\n  }\n\n  private _setLocale(locale: string) {\n    this.dayPeriodLabels = this.datepickerService.getDayPeriodLabels(locale);\n    const mFormat = new Intl.DateTimeFormat(locale, { month: 'long' }).format;\n    this.months = [...Array(12).keys()]\n      .map((m) => mFormat(new Date(Date.UTC(2021, m % 12))))\n      .map((label, index) => ({ label, value: index }));\n\n    const dFormat = new Intl.DateTimeFormat(locale, { weekday: 'short' }).format;\n\n    this._firstDayOfWeek = DatepickerUtils.getWeekInfo(this.locale() || 'en').firstDay - 1;\n    const daysOfWeekIdx = [];\n    for (let i = 0; i < 7; i++) {\n      let x = this._firstDayOfWeek + i;\n      if (x > 6) x -= 7;\n      daysOfWeekIdx.push(x);\n    }\n    this.daysOfWeek = daysOfWeekIdx.map((day) => dFormat(new Date(Date.UTC(2021, 5, day))));\n    this._buildMonth(this.year!, this.month!);\n  }\n\n  private _reset() {\n    this.selectedIndex = -1;\n    this.focusedIndex = 0;\n  }\n\n  private _buildMonth(year: number, month: number) {\n    this._reset();\n    // TODO: find a more generic approach (if there actually are other first days of week than sonday and monday)\n    const startDayOffset = this._firstDayOfWeek === 0 ? -1 : 0;\n    let firstDayOfMonthInWeek: number = new Date(year, month).getDay() + startDayOffset;\n    if (firstDayOfMonthInWeek === -1) firstDayOfMonthInWeek = 6;\n    const lastDateOfMonth: number = new Date(year, month + 1, 0).getDate(),\n      lastDayOfMonthInWeek: number = new Date(year, month, lastDateOfMonth).getDay() + startDayOffset,\n      lastDateOfPreviousMonth: number = new Date(year, month, 0).getDate();\n\n    const today = new Date();\n    today.setDate(today.getDate() - 1);\n    today.setHours(23, 59, 59);\n    const items: CalendarItem[] = [];\n    // previous months last days\n    for (let i = firstDayOfMonthInWeek; i > 0; i--) {\n      const day = lastDateOfPreviousMonth - i + 1;\n      items.push({\n        day,\n        disabled: DatepickerUtils.isValidValue(new Date(year, month, i), {\n          onlyFutureDates: this.onlyFutureDates(),\n          withTime: this.withTime(),\n          maxDate: this.maxDate(),\n          minDate: this.minDate()\n        }),\n        inactive: true,\n        id: this._getDayId(year, month - 1, day)\n      });\n    }\n    // all days of current month\n    for (let i = 1; i <= lastDateOfMonth; i++) {\n      items.push({\n        day: i,\n        disabled: DatepickerUtils.isValidValue(new Date(year, month, i), {\n          onlyFutureDates: this.onlyFutureDates(),\n          withTime: this.withTime(),\n          maxDate: this.maxDate(),\n          minDate: this.minDate()\n        }),\n        id: this._getDayId(year, month, i)\n      });\n    }\n    // next months first days\n    for (let i = lastDayOfMonthInWeek; i < 6; i++) {\n      const day = i - lastDayOfMonthInWeek + 1;\n      items.push({\n        day,\n        inactive: true,\n        id: this._getDayId(year, month + 1, day)\n      });\n    }\n    this._numberOfWeeks = items.length / 7;\n    this.calendarDays = items;\n\n    const date = this.date();\n    if (date?.getMonth() === month && date?.getFullYear() === year) {\n      this.select(date, true, true);\n    }\n  }\n\n  private _getDayId(year: number, month: number, day: number): string {\n    const d = new Date(year, month, day);\n    return `${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}`;\n  }\n\n  protected handleKeyboardEvent(event: KeyboardEvent) {\n    switch (event.code) {\n      case 'PageDown': {\n        // go to previous month\n        const d = new Date(this.year!, this.month!);\n        d.setMonth(this.month! - 1);\n        this.selectMonthOfYear(d.getMonth(), d.getFullYear());\n        this._stopEvent(event);\n        break;\n      }\n      case 'PageUp': {\n        // go to next month\n        const d = new Date(this.year!, this.month!);\n        d.setMonth(this.month! + 1);\n        this.selectMonthOfYear(d.getMonth(), d.getFullYear());\n        this._stopEvent(event);\n        break;\n      }\n      case 'Home': {\n        // focus first day of month\n        this._setFocusPosByCalendarIndex(this._getCalendarIndex(new Date(this.year!, this.month!, 1)));\n        this._stopEvent(event);\n        break;\n      }\n      case 'End': {\n        // focus last day of month\n        this._setFocusPosByCalendarIndex(this._getCalendarIndex(new Date(this.year!, this.month! + 1, 0)));\n        this._stopEvent(event);\n        break;\n      }\n      case 'Space': {\n        this.selectByIndex(this.focusedIndex, false);\n        this._stopEvent(event);\n        break;\n      }\n      case 'ArrowUp': {\n        let row = this._focusPos.row - 1;\n        if (row <= 0) row = this._numberOfWeeks;\n        this._setFocusPos(row, undefined);\n        this._stopEvent(event);\n        break;\n      }\n      case 'ArrowDown': {\n        let row = this._focusPos.row + 1;\n        if (row > this._numberOfWeeks) row = 1;\n        this._setFocusPos(row, undefined);\n        this._stopEvent(event);\n        break;\n      }\n      case 'ArrowRight': {\n        let col = this._focusPos.col + 1;\n        let row = this._focusPos.row;\n        if (col > 7) {\n          col = 1;\n          row++;\n          if (row > this._numberOfWeeks) {\n            // go to next month\n            const d = new Date(this.calendarDays[this.calendarDays.length - 1].id);\n            d.setDate(d.getDate() + 1);\n            row = col = 1;\n            this.selectMonthOfYear(d.getMonth(), d.getFullYear());\n          }\n        }\n        this._setFocusPos(row, col);\n        this._stopEvent(event);\n        break;\n      }\n      case 'ArrowLeft': {\n        let col = this._focusPos.col - 1;\n        let row = this._focusPos.row;\n        if (col <= 0) {\n          col = 7;\n          row--;\n          if (row <= 0) {\n            // go to previous month\n            const d = new Date(this.calendarDays[0].id);\n            d.setDate(d.getDate() - 1);\n            row = this._numberOfWeeks;\n            col = 7;\n            this.selectMonthOfYear(d.getMonth(), d.getFullYear());\n          }\n        }\n        this._setFocusPos(row, col);\n        this._stopEvent(event);\n        break;\n      }\n    }\n  }\n\n  private _getCalendarIndex(date: Date): number {\n    return this.calendarDays.findIndex(\n      (cd) => cd.id === this._getDayId(date.getFullYear(), date.getMonth(), date.getDate())\n    );\n  }\n\n  private _stopEvent(e?: Event) {\n    if (e) {\n      e.stopPropagation();\n      e.preventDefault();\n    }\n  }\n\n  private _setFocusPos(row?: number, col?: number) {\n    if (row !== undefined) this._focusPos.row = row;\n    if (col !== undefined) this._focusPos.col = col;\n    this.focusedIndex = (this._focusPos.row - 1) * 7 + this._focusPos.col - 1;\n  }\n  private _setFocusPosByCalendarIndex(index: number) {\n    this.focusedIndex = index;\n    this._focusPos = {\n      col: (this.focusedIndex % 7) + 1,\n      row: Math.round(this.focusedIndex / this._numberOfWeeks)\n    };\n  }\n}\n","<section class=\"date\">\n  <header>\n    <div class=\"month-picker\">\n      <mat-select [panelWidth]=\"null\" [(ngModel)]=\"month\" (ngModelChange)=\"selectMonthOfYear($event)\">\n        <mat-select-trigger> {{ month !== undefined ? months[month].label : '' }} &nbsp; </mat-select-trigger>\n        @for (m of months; track $index) {\n          <mat-option [value]=\"m.value\">{{ m.label }}</mat-option>\n        }\n      </mat-select>\n    </div>\n\n    <input\n      class=\"year-picker\"\n      name=\"year\"\n      type=\"number\"\n      [min]=\"minYear\"\n      [max]=\"maxYear\"\n      [(ngModel)]=\"_offsetYear\"\n      (keydown)=\"onYearInputKeydown($event)\"\n      (ngModelChange)=\"selectYear($event)\"\n    />\n  </header>\n  <main>\n    <ul class=\"daysOfWeek\">\n      @for (d of daysOfWeek; track d) {\n        <li>{{ d }}</li>\n      }\n    </ul>\n    <ul class=\"days\" tabindex=\"0\" (keydown)=\"handleKeyboardEvent($event)\">\n      @for (d of calendarDays; track d; let i = $index) {\n        <li\n          [attr.data-day]=\"d.id\"\n          (click)=\"selectByIndex(i, true)\"\n          [ngClass]=\"{\n            disabled: d.disabled,\n            inactive: d.inactive,\n            focused: i === focusedIndex,\n            selected: i === selectedIndex\n          }\"\n        >\n          {{ d.day }}\n        </li>\n      }\n    </ul>\n  </main>\n</section>\n@if (withTime()) {\n  <section class=\"time\">\n    <label>\n      {{ 'yuv.calendar.time.label' | translate }}\n      <yuv-time-input [(ngModel)]=\"time\" [hour12]=\"hour12()\" [dayPeriodLabels]=\"dayPeriodLabels\" (ngModelChange)=\"onTimeChange($event)\"> </yuv-time-input>\n    </label>\n  </section>\n}\n","import { Component, ElementRef, Input, OnDestroy, OnInit, signal, viewChildren } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { CommonModule } from '@angular/common';\nimport { DatepickerValueChange, DayPeriod, DayPeriodLabels } from '../datepicker.interface';\nimport { DatepickerService } from '../datepicker.service';\nimport { DateInputElementComponent } from './date-input-element/date-input-element.component';\nimport { DateInputHourElementComponent } from './date-input-hour-element/date-input-hour-element.component';\n\n/**\n *\n */\n@Component({\n  selector: 'yuv-date-input',\n  templateUrl: './date-input.component.html',\n  styleUrls: ['./date-input.component.scss'],\n  imports: [CommonModule, DateInputHourElementComponent, DateInputElementComponent, ReactiveFormsModule],\n  host: {\n    '[class.invalid]': 'invalid()',\n    '[class.has-value]': 'date',\n    '[attr.data-datevalue]': 'dateAttribute'\n  }\n})\nexport class DateInputComponent implements OnInit, OnDestroy {\n  readonly dateInputEls = viewChildren(DateInputElementComponent, { read: ElementRef });\n\n  private _subs: Subscription[] = [];\n  private _formValueSub?: Subscription;\n  private _formStateSub?: Subscription;\n  protected date: Date | null = null;\n  private _intlOptions?: Intl.DateTimeFormatOptions;\n\n  dateAttribute?: string;\n\n  @Input() set disabled(d: boolean) {\n    this._disabled = d;\n    if (d) {\n      this.dateInputForm?.disable();\n    } else {\n      this.dateInputForm?.enable();\n    }\n  }\n  private _disabled = false;\n  invalid = signal<boolean>(false);\n\n  private _refreshPlaceholder = true;\n  _placeholder?: string;\n  @Input() set placeholder(p: string) {\n    this._placeholder = p;\n    this._refreshPlaceholder = false;\n  }\n\n  private _locale: string = this.datepickerService.DEFAULT_LANGUAGE;\n  private _withTime = false;\n  @Input()\n  set withTime(b: boolean) {\n    this._withTime = b;\n    if (b !== undefined) this._init();\n  }\n  get withTime() {\n    return this._withTime;\n  }\n\n  private _hour12 = false;\n  @Input() set hour12(b: boolean) {\n    if (b === this._hour12) return;\n    this._hour12 = b;\n    if (b !== undefined) this._init(true);\n  }\n  get hour12() {\n    return this._hour12;\n  }\n\n  get hoursControl(): AbstractControl {\n    return this.dateInputForm!.controls['hour']!;\n  }\n\n  // @Output() blur = new EventEmitter<any>();\n  // @Output() focus = new EventEmitter<any>();\n\n  dateTokens: Intl.DateTimeFormatPart[] = [];\n  dateInputForm?: FormGroup;\n  currentDayPeriod?: DayPeriod;\n  dayPeriodLabels: DayPeriodLabels = {\n    am: 'AM',\n    pm: 'PM'\n  };\n  // _placeholderVisible = true;\n\n  constructor(\n    private datepickerService: DatepickerService,\n    private fb: FormBuilder,\n    private elRef: ElementRef\n  ) {}\n\n  private _setupForm() {\n    const dateTokens = this._getPatch(this.date);\n    const dateCfg = {\n      day: [dateTokens.day, [Validators.max(31), Validators.minLength(2)]],\n      month: [dateTokens.month, [Validators.max(12), Validators.minLength(2)]],\n      year: [dateTokens.year, [Validators.minLength(4)]]\n    };\n    const timeCfg = {\n      hour: [dateTokens.hour, [Validators.minLength(2)]],\n      minute: [dateTokens.minute, [Validators.max(59), Validators.minLength(2)]]\n    };\n\n    this.dateInputForm = this.fb.group(this.withTime ? { ...dateCfg, ...timeCfg } : dateCfg, {\n      validators: (g: FormGroup) => {\n        let valueCount = 0;\n        Object.keys(g.value).forEach((k) => {\n          if (g.value[k] && `${g.value[k]?.length}`) valueCount++;\n        });\n        return valueCount === 0 || valueCount === Object.keys(g.value).length\n          ? null\n          : {\n              missingValue: true\n            };\n      }\n    });\n\n    if (this._formValueSub) {\n      this._formValueSub.unsubscribe();\n      this._formValueSub = undefined;\n      this._formStateSub!.unsubscribe();\n      this._formStateSub = undefined;\n    }\n\n    this._disabled && this.dateInputForm?.disable();\n    this._formValueSub = this.dateInputForm!.valueChanges.subscribe({\n      next: (v) => {\n        this._checkAndPropagateForm();\n      }\n    });\n    this._formStateSub = this.dateInputForm!.statusChanges.subscribe({\n      next: (v) => {\n        this._setInvalidInputError(v === 'INVALID');\n      }\n    });\n  }\n\n  private _setInvalidInputError(isInvalid: boolean) {\n    this.invalid.set(isInvalid);\n    if (isInvalid) {\n      this.datepickerService.setErrors({\n        invalidInput: true\n      });\n    } else {\n      this.datepickerService.removeErrors(['invalidInput']);\n    }\n  }\n\n  private _checkAndPropagateForm() {\n    if (this.dateInputForm?.status === 'VALID') {\n      this.date = this._formToDate(this.dateInputForm!);\n      this.datepickerService.setValue(this.date);\n    }\n  }\n\n  private _formToDate(g: FormGroup): Date | null {\n    // starting with a year of '0000' because there could be negative values\n    // that would break the date creation using string parameter\n    let dateString = `0000-${g.controls['month'].value}-${g.controls['day'].value}`;\n    if (this.withTime) {\n      const strHour: string = g.controls['hour'].value;\n      let hour: number = strHour?.length ? parseInt(strHour) : -1;\n      if (this.hour12) {\n        hour = this.currentDayPeriod === 'pm' && hour < 12 ? hour + 12 : hour;\n        hour = this.currentDayPeriod === 'am' && hour === 12 ? 0 : hour;\n        hour = hour === 24 ? 0 : hour;\n      }\n      dateString += `T${hour < 10 ? `0${hour}` : `${hour}`}:${g.controls['minute'].value}:00`;\n    }\n    const date = new Date(dateString);\n    let isValidDateObject =\n      !!date && Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date!.getTime());\n    if (isValidDateObject) {\n      // set the year independently\n      const parsedYear = parseInt(g.controls['year'].value);\n      if (!isNaN(parsedYear)) {\n        date.setFullYear(parsedYear);\n      } else {\n        isValidDateObject = false;\n      }\n    }\n    this._setInvalidInputError(!isValidDateObject);\n    return isValidDateObject ? date : null;\n  }\n\n  private _focusInput(offset: number) {\n    const inputs: HTMLInputElement[] = this._getFocusableElements();\n    let i = inputs.findIndex((i) => i === document.activeElement);\n    i = i + offset;\n    if (i > inputs.length - 1) i = 0;\n    if (i < 0) i = inputs.length - 1;\n    inputs[i].focus();\n  }\n\n  onFormClick(event: MouseEvent) {\n    if ((event.target as HTMLElement).tagName.toLowerCase() === 'form') {\n      this.focusFirstInput();\n    }\n  }\n\n  onDateInputBlur() {\n    let hasValue = false;\n    Object.keys(this.dateInputForm?.value || {}).forEach((k) => {\n      if (!hasValue && !!this.dateInputForm?.value[k]) hasValue = true;\n    });\n    (this.elRef.nativeElement as HTMLElement).classList.toggle('is-dirty', hasValue);\n  }\n\n  focusFirstInput() {\n    this._getFocusableElements()[0].focus();\n  }\n\n  private _getFocusableElements(): HTMLInputElement[] {\n    return Array.from(this.elRef.nativeElement.querySelectorAll('input:not([inert])'));\n  }\n\n  private _getPatch(d?: Date | null): {\n    day: string;\n    month: string;\n    year: string;\n    hour: string;\n    minute: string;\n  } {\n    const patch: any = {\n      day: undefined,\n      month: undefined,\n      year: undefined,\n      hour: undefined,\n      minute: undefined\n    };\n    if (d) {\n      // year may have an offset (e.g. locale 'th')\n      // Intl would return the offsetted value therefore we get the year from the date itself\n      patch.year = d.getFullYear();\n      const l = patch.year.length;\n      if (l > 0 && l !== 4) {\n        patch.year = `${[...Array(4 - l).keys()].map((_) => '0').join('')}${patch.year}`;\n      }\n\n      Intl.DateTimeFormat(this._locale, this._intlOptions)\n        .formatToParts(d)\n        .forEach((t: Intl.DateTimeFormatPart) => {\n          switch (t.type) {\n            case 'day': {\n              patch.day = t.value;\n              break;\n            }\n            case 'month': {\n              patch.month = t.value;\n              break;\n            }\n            case 'hour': {\n              patch.hour = t.value === '24' ? '0' : t.value;\n              break;\n            }\n            case 'minute': {\n              patch.minute = t.value;\n              break;\n            }\n            case 'dayPeriod': {\n              this.currentDayPeriod = t.value === 'AM' ? 'am' : 'pm';\n              break;\n            }\n          }\n        });\n    }\n    return patch;\n  }\n\n  reset() {\n    this.datepickerService.setValue(null);\n  }\n\n  getFormattedValue(): string | null {\n    return this.date ? Intl.DateTimeFormat(this._locale, this._intlOptions).format(this.date) : null;\n  }\n\n  onInputNext() {\n    this._focusInput(1);\n  }\n\n  onInputPrev() {\n    this._focusInput(-1);\n  }\n\n  toggleDayPeriod() {\n    this.currentDayPeriod = this.currentDayPeriod === 'pm' ? 'am' : 'pm';\n    this._checkAndPropagateForm();\n  }\n\n  private _init(skipFormSetup = false) {\n    this._setPlaceholder();\n    this._intlOptions = this.datepickerService.getIntlOptions(this.withTime, this.hour12);\n    const d: Date = this.date || new Date();\n    this.dateTokens = new Intl.DateTimeFormat(this._locale, this._intlOptions).formatToParts(d);\n    if (this.hour12) {\n      this.currentDayPeriod = d.getHours() > 12 ? 'pm' : 'am';\n\n      this.dayPeriodLabels = this.datepickerService.getDayPeriodLabels(this._locale);\n    }\n    if (!skipFormSetup) this._setupForm();\n  }\n\n  private _setPlaceholder() {\n    this.placeholder = this.datepickerService.getDatePattern(this._locale, this.withTime, this.hour12);\n  }\n\n  ngOnInit(): void {\n    this._subs.push(\n      this.datepickerService.language$.subscribe({\n        next: (lang) => {\n          if (lang !== this._locale) {\n            this._locale = lang;\n            this._init(true);\n            if (this._refreshPlaceholder) this._setPlaceholder();\n          }\n        }\n      })\n    );\n    this._subs.push(\n      this.datepickerService.valueChange$.subscribe({\n        next: (vc: DatepickerValueChange) => {\n          this.date = vc.value;\n          this.dateAttribute = this.getFormattedValue() || undefined;\n          this.dateInputForm!.patchValue(this._getPatch(vc.value), {\n            emitEvent: false\n          });\n          // this.dateInputForm?.updateValueAndValidity()\n        }\n      })\n    );\n    this._init();\n  }\n\n  ngOnDestroy(): void {\n    if (this._formValueSub) this._formValueSub.unsubscribe();\n    if (this._formStateSub) this._formStateSub.unsubscribe();\n    this._subs.forEach((s) => s.unsubscribe());\n  }\n}\n","@if (dateInputForm) {\n  <form [formGroup]=\"dateInputForm!\" \n  (click)=\"onFormClick($event)\" (yuvFocusWithinBlur)=\"onDateInputBlur()\">\n    @for (t of dateTokens; track t) {\n      @switch (t.type) {\n        <!-- day -->\n        @case ('day') {\n          <yuv-date-input-element\n            placeholder=\"31\"\n            [ngClass]=\"{ disabled: dateInputForm.disabled }\"\n            [attr.aria-disabled]=\"dateInputForm.disabled\"\n            formControlName=\"day\"\n            [disabled]=\"disabled\"\n            [maxLength]=\"2\"\n            [minValue]=\"1\"\n            [maxValue]=\"31\"\n            (prev)=\"onInputPrev()\"\n            (next)=\"onInputNext()\"\n          ></yuv-date-input-element>\n        }\n        <!-- month -->\n        @case ('month') {\n          <yuv-date-input-element\n            placeholder=\"12\"\n            [ngClass]=\"{ disabled: dateInputForm.disabled }\"\n            [attr.aria-disabled]=\"dateInputForm.disabled\"\n            formControlName=\"month\"\n            [disabled]=\"disabled\"\n            [maxLength]=\"2\"\n            [minValue]=\"1\"\n            [maxValue]=\"12\"\n            (prev)=\"onInputPrev()\"\n            (next)=\"onInputNext()\"\n          ></yuv-date-input-element>\n        }\n        <!-- year -->\n        @case ('year') {\n          <yuv-date-input-element\n            placeholder=\"2000\"\n            class=\"year\"\n            [ngClass]=\"{ disabled: dateInputForm.disabled }\"\n            [attr.aria-disabled]=\"dateInputForm.disabled\"\n            formControlName=\"year\"\n            [disabled]=\"disabled\"\n            [maxLength]=\"4\"\n            (prev)=\"onInputPrev()\"\n            (next)=\"onInputNext()\"\n          ></yuv-date-input-element>\n        }\n        <!-- hours -->\n        @case ('hour') {\n          <yuv-date-input-hour-element\n            placeholder=\"10\"\n            [ngClass]=\"{ disabled: dateInputForm.disabled }\"\n            [attr.aria-disabled]=\"dateInputForm.disabled\"\n            [(dayPeriod)]=\"currentDayPeriod\"\n            formControlName=\"hour\"\n            [disabled]=\"disabled\"\n            [maxLength]=\"2\"\n            (prev)=\"onInputPrev()\"\n            (next)=\"onInputNext()\"\n          ></yuv-date-input-hour-element>\n        }\n        <!-- minutes -->\n        @case ('minute') {\n          <yuv-date-input-element\n            placeholder=\"00\"\n            [ngClass]=\"{ disabled: dateInputForm.disabled }\"\n            [attr.aria-disabled]=\"dateInputForm.disabled\"\n            [minValue]=\"0\"\n            [maxValue]=\"59\"\n            formControlName=\"minute\"\n            [disabled]=\"disabled\"\n            [maxLength]=\"2\"\n            (prev)=\"onInputPrev()\"\n            (next)=\"onInputNext()\"\n          ></yuv-date-input-element>\n        }\n        @case ('literal') {\n          <input type=\"text\" class=\"literal\" [value]=\"t.value\" readonly inert />\n        }\n        @case ('dayPeriod') {\n          <button type=\"button\" class=\"dayPeriod\" [disabled]=\"dateInputForm.disabled\" (click)=\"toggleDayPeriod()\">\n            {{ dayPeriodLabels[currentDayPeriod!] }}\n          </button>\n        }\n      }\n    }\n  </form>\n}\n","import { Component, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { CalendarComponent } from '../calendar/calendar.component';\nimport { DatepickerCalendarOptions } from '../datepicker.interface';\n\n@Component({\n  selector: 'yuv-datepicker-calendar',\n  templateUrl: './datepicker-calendar.component.html',\n  styleUrls: ['./datepicker-calendar.component.scss'],\n  imports: [CalendarComponent, MatDialogModule, MatButtonModule, YmtButtonDirective],\n  host: {\n    '(keydown.enter)': 'enterKeyHandler($event)'\n  }\n})\nexport class DatepickerCalendarComponent {\n  #dialogData = inject<any>(MAT_DIALOG_DATA);\n  readonly #dialogRef = inject(MatDialogRef<DatepickerCalendarComponent>);\n\n  date: Date | undefined = this.#dialogData.date;\n  options: DatepickerCalendarOptions = this.#dialogData.options;\n\n  enterKeyHandler(event: KeyboardEvent | Event) {\n    this.applyDate();\n    event.preventDefault();\n    event.stopPropagation();\n  }\n\n  shortcut(key: string) {\n    switch (key) {\n      case 'today': {\n        const today = new Date();\n        if (this.options.withTime && this.date) {\n          // keep time value\n          today.setHours(this.date.getHours());\n          today.setMinutes(this.date.getMinutes());\n        }\n        this.date = today;\n        break;\n      }\n    }\n  }\n\n  applyDate() {\n    this.#dialogRef.close(this.date);\n  }\n}\n","<mat-dialog-content>\n  <yuv-calendar tabindex=\"0\"\n    [locale]=\"options.locale\"\n    [onlyFutureDates]=\"options.onlyFutureDates || false\"\n    [(date)]=\"date\"\n    [withTime]=\"options.withTime || false\"\n    [minDate]=\"options.minDate\"\n    [maxDate]=\"options.maxDate\"\n    [hour12]=\"options.hour12 || false\"\n  ></yuv-calendar>\n</mat-dialog-content>\n<mat-dialog-actions>\n  <button type=\"button\" ymtButton=\"secondary\" mat-dialog-close>{{ options.labels!.calendarCancel }}</button>\n  <!-- <button type=\"button\" mat-button (click)=\"shortcut('today')\">{{ options.labels!.shortcut.today }}</button> -->\n  <button type=\"button\" ymtButton=\"primary\" [mat-dialog-close]=\"true\" (click)=\"applyDate()\">{{ options.labels!.calendarApply }}</button>\n</mat-dialog-actions>\n","import { Component, forwardRef, inject, Input, input, OnDestroy, OnInit, signal, viewChild } from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ReactiveFormsModule,\n  ValidationErrors,\n  Validator\n} from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FocusWithinDirective } from '@yuuvis/client-framework/common';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\nimport { DateInputComponent } from './date-input/date-input.component';\nimport { DatepickerCalendarComponent } from './datepicker-calendar/datepicker-calendar.component';\nimport { DatepickerLabels, DatepickerValueChange } from './datepicker.interface';\nimport { DatepickerService } from './datepicker.service';\nimport { DatepickerUtils } from './datepicker.utils';\n\n@Component({\n  selector: 'yuv-datepicker',\n  templateUrl: './datepicker.component.html',\n  styleUrls: ['./datepicker.component.scss'],\n  standalone: true,\n  imports: [MatIconModule, DateInputComponent, YmtIconButtonDirective, MatButtonModule, ReactiveFormsModule],\n  providers: [\n    DatepickerService,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DatepickerComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => DatepickerComponent),\n      multi: true\n    }\n  ],\n  host: {\n    'class.all-selected': 'allSelected()',\n    '[attr.aria-disabled]': 'disabled',\n    '(keydown)': 'keydownHandler($event)',\n    '(click)': 'clickHandler()',\n    '(focusout)': 'focusOutHandler()'\n  },\n  hostDirectives: [FocusWithinDirective]\n})\nexport class DatepickerComponent implements ControlValueAccessor, Validator, OnInit, OnDestroy {\n  #dialog = inject(MatDialog);\n  #datepickerService = inject(DatepickerService);\n\n  private _subs: Subscription[] = [];\n  readonly dateInputCmp = viewChild.required(DateInputComponent);\n\n  allSelected = signal<boolean>(false);\n\n  keydownHandler(e: KeyboardEvent) {\n    if (e.key === 'a' && e.ctrlKey) {\n      // select all\n      e.preventDefault();\n      this.allSelected.set(true);\n    } else if (e.key === 'Delete' && this.allSelected) {\n      // delete the whole date\n      if (this.readonly() || this.disabled) return;\n      this.allSelected.set(false);\n      this.clear();\n      e.preventDefault();\n      e.stopPropagation();\n    } else if (this.allSelected() && e.key === 'c' && e.ctrlKey) {\n      this.copyToClipboard();\n    } else {\n      this.allSelected.set(false);\n    }\n  }\n\n  clickHandler() {\n    this.allSelected.set(false);\n  }\n\n  focusOutHandler() {\n    this.allSelected.set(false);\n  }\n\n  /**\n   * Whether or not to show a calendar picker\n   */\n  readonly calendar = input(false);\n\n  /**\n   * Whether or not the component is readonly\n   */\n  readonly readonly = input(false);\n  _hour12 = false;\n  /**\n   * Whether or not to 12-hour format vs. default 24h format.\n   * By default the component will try to figure out which hour cycle to\n   * use based on the locale. Setting hour12 property to either `\n   * `true`or `false will overwrite that.\n   */\n  @Input() set hour12(b: boolean) {\n    if (b === true || b === false) {\n      this._hour12 = b;\n      this._detectHourCycle = false;\n    }\n  }\n  private _detectHourCycle = true;\n\n  private _locale: string = this.#datepickerService.DEFAULT_LANGUAGE;\n  @Input() set locale(iso: string) {\n    if (iso !== this._locale) {\n      this._locale = iso;\n      if (this._detectHourCycle) this._getHourCycle();\n      this.#datepickerService.setLanguage(iso);\n    }\n  }\n  get locale() {\n    return this._locale;\n  }\n\n  private _defaultLabelslabels: DatepickerLabels = {\n    calendarApply: 'Apply',\n    calendarCancel: 'Cancel',\n    shortcut: { today: 'today' }\n  };\n\n  private _labels: DatepickerLabels = this._defaultLabelslabels;\n  @Input() set labels(l: DatepickerLabels | undefined) {\n    this._labels = l || this._defaultLabelslabels;\n  }\n  get labels() {\n    return this._labels;\n  }\n\n  private _withTime = false;\n  /**\n   * Whether or not to also include time\n   */\n  @Input() set withTime(b: boolean) {\n    this._withTime = b;\n    this.#datepickerService.setOption({ withTime: b });\n  }\n  get withTime() {\n    return this._withTime;\n  }\n  /**\n   * Allow only date inputs that are after today\n   */\n  @Input() set onlyFutureDates(b: boolean) {\n    this.#datepickerService.setOption({ onlyFutureDates: b });\n  }\n  /**\n   * Allow only date inputs after this date\n   */\n  @Input() set minDate(d: Date) {\n    this.#datepickerService.setOption({ minDate: d || undefined });\n  }\n  /**\n   * Allow only date inputs before this date\n   */\n  @Input() set maxDate(d: Date) {\n    this.#datepickerService.setOption({ maxDate: d || undefined });\n  }\n\n  @Input()\n  disabled = false;\n  calendarValue: Date | null = null;\n  #dialogRef: MatDialogRef<DatepickerCalendarComponent> | undefined;\n\n  copyToClipboard() {\n    const fd = this.dateInputCmp().getFormattedValue();\n    if (fd) navigator.clipboard.writeText(fd);\n  }\n\n  clear() {\n    this.#datepickerService.setValue(null);\n    this.dateInputCmp().focusFirstInput();\n  }\n\n  openCalendar() {\n    if (!this.calendarValue) this.calendarValue = new Date();\n    this.#dialogRef = this.#dialog.open(DatepickerCalendarComponent, {\n      data: {\n        date: this.calendarValue,\n        options: {\n          withTime: this.withTime,\n          onlyFutureDates: this.onlyFutureDates,\n          minDate: this.minDate,\n          maxDate: this.maxDate,\n          hour12: this._hour12,\n          locale: this.locale,\n          labels: this.labels\n        }\n      }\n    });\n    this.#dialogRef.afterClosed().subscribe({\n      next: (date: Date) => {\n        if (date) this.onCalendarDateApply(date);\n      }\n    });\n  }\n\n  onCalendarDateApply(date: Date) {\n    this.calendarValue = date;\n    this.#datepickerService.setValue(this.calendarValue);\n    this.closeCalendar();\n  }\n\n  onTextInputStatusChange(e: { valid: boolean }) {\n    this.validationChange();\n  }\n\n  closeCalendar() {\n    this.#dialogRef?.close();\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onDateInputBlur() {}\n\n  validate(ac: AbstractControl): ValidationErrors | null {\n    return this.#datepickerService.getErrors();\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  propagateChange = (_: any) => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  validationChange = () => {};\n\n  writeValue(value: any): void {\n    this.#datepickerService.setValue(value && DatepickerUtils.isValidDate(value) ? value : null, true);\n  }\n\n  registerOnChange(fn: () => void): void {\n    this.propagateChange = fn;\n  }\n\n  registerOnValidatorChange?(fn: () => void): void {\n    this.validationChange = fn;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  registerOnTouched(fn: () => void): void {}\n\n  private _getHourCycle() {\n    this._hour12 = DatepickerUtils.getPreferredHourCycle(this._locale) === 'h12';\n  }\n\n  ngOnInit(): void {\n    if (this._detectHourCycle) this._getHourCycle();\n    this._subs.push(\n      this.#datepickerService.valueChange$.subscribe({\n        next: (vc: DatepickerValueChange) => {\n          this.calendarValue = vc.value;\n          if (vc.propagateChange) this.propagateChange(vc.value);\n        }\n      })\n    );\n    this._subs.push(\n      this.#datepickerService.validationChange$.subscribe({\n        next: (valid: boolean) => {\n          this.validationChange();\n        }\n      })\n    );\n  }\n\n  ngOnDestroy(): void {\n    this._subs.forEach((s) => s.unsubscribe());\n  }\n}\n","<yuv-date-input [disabled]=\"disabled\" [withTime]=\"withTime\" [hour12]=\"_hour12\"></yuv-date-input>\n\n@if (calendar()) {\n  <button ymtIconButton icon-button-size=\"small\" type=\"button\" class=\"calender\" [disabled]=\"disabled\" (click)=\"openCalendar()\">\n    <mat-icon>calendar_month</mat-icon>\n  </button>\n}\n","import { Component, input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DatepickerCalendarTriggerTarget } from '../datepicker.interface';\n\n@Component({\n  selector: 'yuv-datepicker-calendar-trigger',\n  template: `<button mat-icon-button>\n    <mat-icon (click)=\"for().openCalendar()\">calendar_month</mat-icon>\n  </button>`,\n  styles: [``],\n  standalone: true,\n  imports: [MatButtonModule, MatIconModule]\n})\nexport class DatepickerCalendarTriggerComponent {\n  for = input.required<DatepickerCalendarTriggerTarget>();\n}\n","import { NgModule } from '@angular/core';\nimport { CalendarComponent } from './calendar/calendar.component';\nimport { DatepickerComponent } from './datepicker.component';\nimport { DatepickerCalendarTriggerComponent } from './datepicker-calendar/datepicker-calendar-trigger.component';\n\n\nconst cmp = [CalendarComponent, DatepickerComponent, DatepickerCalendarTriggerComponent];\n@NgModule({\n  imports: [...cmp],\n  exports: [...cmp],\n})\nexport class YuvDatepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i1.DatepickerService","i3"],"mappings":"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"}