{"version":3,"file":"servicemind.tis-angular-date-time-picker.mjs","sources":["../../../projects/angular-date-time-picker/src/lib/angular-date-picker/angular-date-picker-dialog/angular-date-picker-dialog.component.ts","../../../projects/angular-date-time-picker/src/lib/angular-date-picker/angular-date-picker-dialog/angular-date-picker-dialog.component.html","../../../projects/angular-date-time-picker/src/lib/utils/sync-touched-state.ts","../../../projects/angular-date-time-picker/src/lib/utils/soft-keyboard-guard.directive.ts","../../../projects/angular-date-time-picker/src/lib/angular-date-picker/angular-date-picker.component.ts","../../../projects/angular-date-time-picker/src/lib/angular-date-picker/angular-date-picker.component.html","../../../projects/angular-date-time-picker/src/lib/angular-time-picker/angular-time-picker-dialog/angular-time-picker-dialog.component.ts","../../../projects/angular-date-time-picker/src/lib/angular-time-picker/angular-time-picker-dialog/angular-time-picker-dialog.component.html","../../../projects/angular-date-time-picker/src/lib/angular-time-picker/angular-time-picker.component.ts","../../../projects/angular-date-time-picker/src/lib/angular-time-picker/angular-time-picker.component.html","../../../projects/angular-date-time-picker/src/lib/angular-date-time-picker/angular-date-time-picker-dialog/angular-date-time-picker-dialog.component.ts","../../../projects/angular-date-time-picker/src/lib/angular-date-time-picker/angular-date-time-picker-dialog/angular-date-time-picker-dialog.component.html","../../../projects/angular-date-time-picker/src/lib/angular-date-time-picker/angular-date-time-picker.component.ts","../../../projects/angular-date-time-picker/src/lib/angular-date-time-picker/angular-date-time-picker.component.html","../../../projects/angular-date-time-picker/src/lib/angular-date-time-picker.module.ts","../../../projects/angular-date-time-picker/src/public-api.ts","../../../projects/angular-date-time-picker/src/servicemind.tis-angular-date-time-picker.ts"],"sourcesContent":["import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n  selector: 'angular-date-picker-dialog',\n  standalone: false,\n  templateUrl: './angular-date-picker-dialog.component.html',\n  styleUrl: './angular-date-picker-dialog.component.css'\n})\nexport class AngularDatePickerDialogComponent {\n  selected: Date = new Date();\n  minDate!: Date | null;\n  maxDate!: Date | null;\n  disabledSubmit = false;\n\n  constructor(\n    public dialogRef: MatDialogRef<AngularDatePickerDialogComponent>,\n    @Inject(MAT_DIALOG_DATA) public data: any,\n  ) {}\n\n  ngOnInit() {\n    this.minDate = this.data?.min ?? null;\n    this.maxDate = this.data?.max ?? null;\n    this.selected = this.data?.date ?? new Date();\n\n    if (this.minDate && this.startOfDay(this.minDate) > this.startOfDay(this.selected)) {\n      this.disabledSubmit = true;\n    } else if (this.maxDate && this.startOfDay(this.maxDate) < this.startOfDay(this.selected)) {\n      this.disabledSubmit = true;\n    }\n  }\n\n  updateFormDate(value: Date) {\n    this.selected = value;\n    this.disabledSubmit = false;\n\n    if (this.minDate && this.startOfDay(this.minDate) > this.startOfDay(this.selected)) {\n      this.disabledSubmit = true;\n    } else if (this.maxDate && this.startOfDay(this.maxDate) < this.startOfDay(this.selected)) {\n      this.disabledSubmit = true;\n    }\n  }\n\n  private startOfDay(d: Date): number {\n    return new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime();\n  }\n\n  onDateDoubleClick(event: MouseEvent): void {\n    const target = event.target as HTMLElement;\n    if (!target.closest('.mat-calendar-body-cell:not(.mat-calendar-body-disabled)')) return;\n    if (this.disabledSubmit) return;\n    this.onSubmit();\n  }\n\n  onSubmit() {\n    this.onClose(this.selected);\n  }\n\n  onClose(date: Date | null): void {\n    this.dialogRef.close(date);\n  }\n}\n","@if(data.label){\n  <h1 mat-dialog-title>{{data.label}}</h1>\n}\n<div class=\"lib-date-picker-dialog\">\n  <mat-calendar [startAt]=\"selected\" [minDate]=\"minDate\" [maxDate]=\"maxDate\" [selected]=\"selected\" (selectedChange)=\"updateFormDate($event)\" (dblclick)=\"onDateDoubleClick($event)\"></mat-calendar>\n  <div class=\"lib-dt-picker-action\">\n    <button mat-button class=\"lib-dt-btn-cancel\" (click)=\"onClose(null)\">Cancel</button>\n    <button mat-button class=\"lib-dt-btn-set\" cdkFocusInitial (click)=\"onSubmit()\" [disabled]=\"disabledSubmit\">Set</button>\n  </div>\n</div>\n","import { ChangeDetectorRef, Injector } from '@angular/core';\nimport { AbstractControl, NgControl, TouchedChangeEvent } from '@angular/forms';\nimport { Observable, filter, takeUntil } from 'rxjs';\n\n/**\n * Mirrors the touched state of the control bound to this component (formControlName /\n * formControl / ngModel) onto an internal control, so a parent `markAllAsTouched()` shows\n * validation errors inside the picker and a form reset clears them.\n *\n * Call from ngAfterContentInit: by then formControlName has set up its control, and the\n * component's own view has not been checked yet.\n */\nexport function syncTouchedState(\n  injector: Injector,\n  target: AbstractControl,\n  changeDetectorRef: ChangeDetectorRef,\n  destroy$: Observable<void>,\n): void {\n  const control = injector.get(NgControl, null, { self: true, optional: true })?.control;\n  if (!control) return;\n\n  const apply = (touched: boolean) => {\n    if (touched) target.markAsTouched();\n    else target.markAsUntouched();\n    changeDetectorRef.markForCheck();\n  };\n\n  if (control.touched) apply(true);\n\n  control.events\n    .pipe(\n      filter((e): e is TouchedChangeEvent => e instanceof TouchedChangeEvent),\n      takeUntil(destroy$),\n    )\n    .subscribe(e => apply(e.touched));\n}\n","import { Directive, ElementRef, HostListener, OnInit, inject } from '@angular/core';\n\n/**\n * Stops the on-screen keyboard from opening when a text input is focused by code rather than\n * by the user, e.g. a parent MatDialog's autoFocus or focus restored after the picker dialog\n * closes. iOS opens the keyboard for any focused editable input, so on touch devices the\n * input stays readonly until the user taps it, and goes back to readonly on blur.\n */\n@Directive({\n  selector: 'input[libSoftKeyboardGuard]',\n  standalone: false,\n})\nexport class SoftKeyboardGuardDirective implements OnInit {\n  private input: HTMLInputElement = inject(ElementRef).nativeElement;\n  private enabled = typeof window !== 'undefined' && !!window.matchMedia?.('(pointer: coarse)').matches;\n  private refocusOnClick = false;\n\n  ngOnInit() {\n    if (this.enabled) this.input.readOnly = true;\n  }\n\n  @HostListener('pointerdown')\n  onPointerDown() {\n    if (!this.enabled || !this.input.readOnly) return;\n    // Already focused by code: the tap won't fire a new focus, so refocus on click (a user gesture).\n    this.refocusOnClick = document.activeElement === this.input;\n    this.input.readOnly = false;\n  }\n\n  @HostListener('click')\n  onClick() {\n    if (!this.refocusOnClick) return;\n    this.refocusOnClick = false;\n    this.input.blur();\n    this.input.readOnly = false;\n    this.input.focus();\n  }\n\n  /** The tap turned into a scroll, so the input was never focused. */\n  @HostListener('pointercancel')\n  onPointerCancel() {\n    if (this.enabled && document.activeElement !== this.input) this.input.readOnly = true;\n  }\n\n  @HostListener('blur')\n  onBlur() {\n    if (this.enabled) this.input.readOnly = true;\n  }\n}\n","import { ChangeDetectorRef, Component, Injector, inject, EventEmitter, Input, Output, SimpleChanges, forwardRef } from '@angular/core';\nimport { FormControl, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AngularDatePickerDialogComponent } from './angular-date-picker-dialog/angular-date-picker-dialog.component';\nimport { Subject, debounceTime, takeUntil } from 'rxjs';\nimport { ValidationMessages } from '../models/validation-messages.model';\nimport { syncTouchedState } from '../utils/sync-touched-state';\n\n@Component({\n  selector: 'angular-date-picker',\n  standalone: false,\n  templateUrl: './angular-date-picker.component.html',\n  styleUrl: './angular-date-picker.component.css',\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => AngularDatePickerComponent),\n    multi: true\n  }]\n})\nexport class AngularDatePickerComponent {\n  dateCtrl = new FormControl('');\n  tempDate!: string;\n\n  @Input() label!: string;\n  @Input() placeholder: string = '';\n  @Input() isLabelOutside = false;\n  @Input() dateFormate: string = 'DD/MM/YYYY';\n  @Input() classes: string = '';\n  @Input() appearance: MatFormFieldAppearance = 'outline';\n  @Input() hint!: string;\n  @Input() validationMessages: ValidationMessages[] = [];\n  @Input() min!: Date | number;\n  @Input() max!: Date | number;\n  @Input() required!: boolean;\n  @Input() disabled!: boolean;\n  @Input() isDisplayPickerLabel: boolean = false;\n  @Output() dateChange = new EventEmitter<Date>();\n\n  date!: Date;\n  touched = false;\n  disable = false;\n  dialogOpened = false;\n\n  private _onDestroy = new Subject<void>();\n  private injector = inject(Injector);\n  private changeDetectorRef = inject(ChangeDetectorRef);\n\n  constructor(public dialog: MatDialog) {}\n\n  private toDate(value: Date | number): Date {\n    return typeof value === 'number' ? new Date(value) : value;\n  }\n\n  get minDate(): Date | null {\n    return this.min ? this.toDate(this.min) : null;\n  }\n\n  get maxDate(): Date | null {\n    return this.max ? this.toDate(this.max) : null;\n  }\n\n  ngOnInit() {\n    this.validationMessages?.forEach(v => {\n      if (v.type === 'required') {\n        this.dateCtrl.setValidators(Validators.required);\n        this.dateCtrl.updateValueAndValidity();\n      }\n    });\n\n    if (this.required && !this.validationMessages?.length) {\n      this.dateCtrl.setValidators(Validators.required);\n      this.dateCtrl.updateValueAndValidity();\n    }\n\n    this.dateCtrl.valueChanges.pipe(takeUntil(this._onDestroy), debounceTime(600)).subscribe((dateStr: any) => {\n      if (dateStr && typeof dateStr === 'string' && dateStr.length >= 8) {\n        const parsedDate = this.parseDate(dateStr);\n        if (parsedDate && !isNaN(parsedDate.getTime())) {\n          if (!this.date || this.date.getTime() !== parsedDate.getTime()) {\n            let validDate = parsedDate;\n            if (this.minDate && this.getDateEpoch(this.minDate) > this.getDateEpoch(parsedDate)) {\n              validDate = this.minDate;\n            } else if (this.maxDate && this.getDateEpoch(this.maxDate) < this.getDateEpoch(parsedDate)) {\n              validDate = this.maxDate;\n            }\n            setTimeout(() => {\n              this.date = validDate;\n              if (validDate !== parsedDate) {\n                this.dateCtrl.setValue(this.dateFormat(validDate), { emitEvent: false });\n              }\n              this.onChanged(this.date);\n              this.dateChange.emit(this.date);\n            }, 20);\n          }\n        }\n      } else if (!dateStr || dateStr === '') {\n        this.date = null as any;\n        this.onChanged(null as any);\n        this.dateChange.emit(null as any);\n      }\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['disabled']) {\n      this.disabled = changes['disabled'].currentValue;\n      this.setDisabledState(this.disabled);\n    }\n    if (changes['required']) {\n      this.required = changes['required'].currentValue;\n      if (this.required && !this.validationMessages?.length) {\n        this.dateCtrl.setValidators(Validators.required);\n        this.dateCtrl.updateValueAndValidity();\n      } else if (!this.required && !this.validationMessages?.length) {\n        this.dateCtrl.removeValidators(Validators.required);\n        this.dateCtrl.updateValueAndValidity();\n      }\n    }\n  }\n\n  ngAfterContentInit() {\n    syncTouchedState(this.injector, this.dateCtrl, this.changeDetectorRef, this._onDestroy);\n  }\n\n  ngOnDestroy() {\n    this._onDestroy.next();\n    this._onDestroy.complete();\n  }\n\n  /* eslint-disable */\n  onChanged = (date: Date) => {}\n  onTouched = () => {}\n\n  registerOnChange(fn: any) { this.onChanged = fn; }\n  registerOnTouched(fn: any) { this.onTouched = fn; }\n\n  writeValue(value: Date): void {\n    if (value) {\n      this.date = new Date(value);\n      const date = this.dateFormat(this.date);\n      this.dateCtrl.setValue(date);\n      this.tempDate = date;\n    } else {\n      this.dateCtrl.setValue(null);\n    }\n  }\n\n  public dateFormat(date: Date): string {\n    const day = date.getDate();\n    const dayStr = day < 10 ? '0' + day : '' + day;\n    const month = date.getMonth() + 1;\n    const monthStr = month < 10 ? '0' + month : '' + month;\n    const year = date.getFullYear().toString().padStart(4, '0');\n    const fmt = this.dateFormate || 'DD/MM/YYYY';\n    if (fmt === 'MM/DD/YYYY') return `${monthStr}/${dayStr}/${year}`;\n    if (fmt === 'YYYY/MM/DD') return `${year}/${monthStr}/${dayStr}`;\n    if (fmt === 'YYYY-MM-DD') return `${year}-${monthStr}-${dayStr}`;\n    if (fmt === 'DD-MM-YYYY') return `${dayStr}-${monthStr}-${year}`;\n    if (fmt === 'MM-DD-YYYY') return `${monthStr}-${dayStr}-${year}`;\n    return `${dayStr}/${monthStr}/${year}`;\n  }\n\n  public parseDate(dateStr: string): Date | null {\n    if (!dateStr) return null;\n    const fmt = this.dateFormate || 'DD/MM/YYYY';\n    const delim = fmt.includes('/') ? '/' : '-';\n    const parts = dateStr.split(delim);\n    if (parts.length !== 3) return null;\n    let day: number, month: number, year: number;\n    if (fmt === 'DD/MM/YYYY' || fmt === 'DD-MM-YYYY') {\n      [day, month, year] = parts.map(Number);\n    } else if (fmt === 'MM/DD/YYYY' || fmt === 'MM-DD-YYYY') {\n      [month, day, year] = parts.map(Number);\n    } else {\n      [year, month, day] = parts.map(Number);\n    }\n    if (isNaN(day!) || isNaN(month!) || isNaN(year!)) return null;\n    if (day! < 1 || day! > 31 || month! < 1 || month! > 12) return null;\n    const d = new Date(year!, month! - 1, day!);\n    if (d.getDate() !== day! || d.getMonth() !== month! - 1 || d.getFullYear() !== year!) return null;\n    return d;\n  }\n\n  getDateEpoch(date: Date) { return date.getTime(); }\n\n  getDatePattern(): string {\n    const fmt = this.dateFormate || 'DD/MM/YYYY';\n    if (fmt === 'DD/MM/YYYY') return '^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/[0-9]{4}$';\n    if (fmt === 'MM/DD/YYYY') return '^(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])/[0-9]{4}$';\n    if (fmt === 'YYYY/MM/DD') return '^[0-9]{4}/(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])$';\n    if (fmt === 'DD-MM-YYYY') return '^(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[0-2])-[0-9]{4}$';\n    if (fmt === 'MM-DD-YYYY') return '^(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])-[0-9]{4}$';\n    if (fmt === 'YYYY-MM-DD') return '^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$';\n    return '^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/[0-9]{4}$';\n  }\n\n  getPlaceholder(): string {\n    return this.dateFormate || 'DD/MM/YYYY';\n  }\n\n  onKeyDown(event: KeyboardEvent): void {\n    const allowed = ['Backspace', 'Delete', 'Tab', 'Escape', 'Enter'];\n    if (allowed.includes(event.key)) return;\n    if (event.ctrlKey && ['a', 'c', 'v', 'x'].includes(event.key.toLowerCase())) return;\n    if (!/[0-9]/.test(event.key)) { event.preventDefault(); return; }\n\n    const input = event.target as HTMLInputElement;\n    const fmt = this.dateFormate || 'DD/MM/YYYY';\n    const delim = fmt.includes('/') ? '/' : '-';\n    const digits = input.value.replace(/[^0-9]/g, '');\n    if (digits.length >= 8) { event.preventDefault(); return; }\n    const next = digits.length + 1;\n\n    const addDelim = (pos1: number, pos2: number) => {\n      if (next === pos1 || next === pos2) {\n        event.preventDefault();\n        setTimeout(() => {\n          const v = input.value + event.key + delim;\n          this.dateCtrl.setValue(v);\n          input.setSelectionRange(v.length, v.length);\n        }, 0);\n      }\n    };\n\n    if (fmt.startsWith('YYYY')) addDelim(4, 6);\n    else addDelim(2, 4);\n  }\n\n  onInput(event: Event): void {\n    const input = event.target as HTMLInputElement;\n    const fmt = this.dateFormate || 'DD/MM/YYYY';\n    const delim = fmt.includes('/') ? '/' : '-';\n    const clean = input.value.replace(new RegExp(`[^0-9${delim === '/' ? '/' : '-'}]`, 'g'), '');\n    if (clean.replace(/[^0-9]/g, '').length > 8) return;\n    if (clean !== input.value) {\n      this.dateCtrl.setValue(clean, { emitEvent: false });\n      setTimeout(() => input.setSelectionRange(clean.length, clean.length), 0);\n    }\n  }\n\n  onPaste(event: ClipboardEvent): void {\n    event.preventDefault();\n    const paste = event.clipboardData?.getData('text') || '';\n    const parsed = this.parseDate(paste);\n    if (parsed) {\n      this.dateCtrl.setValue(this.dateFormat(parsed));\n    } else {\n      const nums = paste.replace(/\\D/g, '');\n      if (nums.length >= 4) {\n        const fmt = this.dateFormate || 'DD/MM/YYYY';\n        const delim = fmt.includes('/') ? '/' : '-';\n        let out = '';\n        for (let i = 0; i < nums.length && i < 8; i++) {\n          if (i === 2 || i === 4) out += delim;\n          out += nums[i];\n        }\n        this.dateCtrl.setValue(out);\n      }\n    }\n  }\n\n  onFocus(event: FocusEvent): void {\n    const input = event.target as HTMLInputElement;\n    setTimeout(() => input.setSelectionRange(input.value.length, input.value.length), 0);\n  }\n\n  setDateValue(date: Date) {\n    this.writeValue(date);\n    this.onChanged(date);\n    this.dateChange.emit(date);\n  }\n\n  markAsTouched() {\n    if (!this.touched) { this.onTouched(); this.touched = true; }\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disable = isDisabled;\n    if (this.disabled || this.disable) this.dateCtrl.disable();\n    else this.dateCtrl.enable();\n  }\n\n  openPicker(event: any): void {\n    event.stopPropagation();\n    event.preventDefault();\n    if (this.disable) return;\n    // Sync parse in case debounce hasn't fired yet\n    const typedDate = this.parseDate(this.dateCtrl.value || '');\n    if (typedDate) this.date = typedDate;\n    this.dialogOpened = true;\n    const ref = this.dialog.open(AngularDatePickerDialogComponent, {\n      data: {\n        label: this.isDisplayPickerLabel && this.label ? this.label : null,\n        date: this.date,\n        min: this.minDate,\n        max: this.maxDate,\n      },\n      panelClass: ['lib-date-picker-dialog']\n    });\n    ref.afterClosed().subscribe((date: Date | null) => {\n      this.dialogOpened = false;\n      if (date) this.setDateValue(date);\n    });\n  }\n\n  get checkValidation() {\n    return this.dateCtrl.hasValidator(Validators.required);\n  }\n}\n","@if(isLabelOutside && label && label != ''){\n  <label class=\"lib-label\">\n    {{label}}\n    @if(checkValidation){ <span class=\"lib-required\">*</span> }\n  </label>\n}\n<mat-form-field class=\"lib-w-full lib-date-picker {{classes}}\" [appearance]=\"appearance\">\n  @if(!isLabelOutside && label && label != ''){\n    <mat-label>{{label}}</mat-label>\n  }\n  <input matInput libSoftKeyboardGuard type=\"text\" [formControl]=\"dateCtrl\" [placeholder]=\"getPlaceholder()\" [pattern]=\"getDatePattern()\"\n    maxlength=\"10\" (keydown)=\"onKeyDown($event)\" (input)=\"onInput($event)\" (paste)=\"onPaste($event)\"\n    (focus)=\"onFocus($event)\" (click)=\"onFocus($event)\" />\n  <button type=\"button\" matIconSuffix mat-icon-button aria-label=\"Date Picker\"\n    (click)=\"dateCtrl.disabled ? null : openPicker($event)\" [disabled]=\"dateCtrl.disabled\">\n    <mat-icon [class.lib-icon-disabled]=\"dateCtrl.disabled\">today</mat-icon>\n  </button>\n  @if(hint && hint != ''){ <mat-hint>{{hint}}</mat-hint> }\n  <mat-error>\n    @for(v of validationMessages; track v.type){\n      @if(dateCtrl.hasError(v.type) && (dateCtrl.dirty || dateCtrl.touched) && !dialogOpened){\n        {{v.message}}\n      }\n    }\n  </mat-error>\n</mat-form-field>\n","import { Component, Inject } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { Subject, debounceTime, takeUntil } from 'rxjs';\n\n@Component({\n  selector: 'angular-time-picker-dialog',\n  standalone: false,\n  templateUrl: './angular-time-picker-dialog.component.html',\n  styleUrl: './angular-time-picker-dialog.component.css'\n})\nexport class AngularTimePickerDialogComponent {\n  hoursCtrl = new FormControl();\n  minCtrl = new FormControl();\n  amPmCtrl = new FormControl();\n\n  minTimeArr = ['00', '00'];\n  maxTimeArr = ['23', '59'];\n\n  private _onDestroy = new Subject<void>();\n\n  time = { hh: '00', mm: '00' };\n\n  inputConfig = { minHour: 0, maxHour: 23, minMinute: 0, maxMinute: 59 };\n\n  btnConfig = {\n    addHourDisable: false,\n    minusHourDisable: false,\n    addMinuteDisable: false,\n    minusMinuteDisable: false,\n  };\n\n  constructor(\n    public dialogRef: MatDialogRef<AngularTimePickerDialogComponent>,\n    @Inject(MAT_DIALOG_DATA) public data: any,\n  ) {}\n\n  get is12HourFormat(): boolean { return (this.data?.timeFormat ?? '24') === '12'; }\n\n  ngOnInit() {\n    const minTime: string | null = this.data?.min ?? null;\n    const maxTime: string | null = this.data?.max ?? null;\n\n    if (minTime) this.minTimeArr = minTime.split(':');\n    if (maxTime) this.maxTimeArr = maxTime.split(':');\n\n    const timeStr: string | null = this.data?.time ?? null;\n    if (timeStr) {\n      const parts = timeStr.split(':');\n      if (parts[0]) this.time.hh = parts[0];\n      if (parts[1]) this.time.mm = parts[1];\n    }\n\n    this.hoursCtrl.valueChanges.pipe(takeUntil(this._onDestroy), debounceTime(400)).subscribe(hh => {\n      if (!hh) return;\n      if (isNaN(hh)) { this.setTime(); return; }\n      let n = Number(hh);\n      if (n > this.inputConfig.maxHour) n = this.inputConfig.maxHour;\n      if (n < this.inputConfig.minHour) n = this.inputConfig.minHour;\n      if (this.is12HourFormat) {\n        let display: any = n <= 0 ? 12 : n <= 12 ? n : n % 12;\n        if (display < 10) display = `0${display}`;\n        this.hoursCtrl.setValue(display, { emitEvent: false });\n        this.amPmCtrl.setValue(n < 12 ? 'AM' : 'PM');\n      } else {\n        const display: any = n < 10 ? `0${n}` : `${n}`;\n        this.hoursCtrl.setValue(display, { emitEvent: false });\n      }\n      this.time.hh = n < 10 ? `0${n}` : `${n}`;\n      this.updateDateTime();\n    });\n\n    this.minCtrl.valueChanges.pipe(takeUntil(this._onDestroy), debounceTime(400)).subscribe(mm => {\n      if (!mm) return;\n      if (isNaN(mm)) { this.setTime(); return; }\n      let n = Number(mm);\n      if (n > this.inputConfig.maxMinute) n = this.inputConfig.maxMinute;\n      if (n < this.inputConfig.minMinute) n = this.inputConfig.minMinute;\n      this.minCtrl.setValue(n < 10 ? `0${n}` : `${n}`, { emitEvent: false });\n      this.time.mm = n < 10 ? `0${n}` : `${n}`;\n      this.updateDateTime();\n    });\n\n    this.setTime();\n  }\n\n  addHour() {\n    if (Number(this.time.hh) < 23) {\n      let hh: any = Number(this.time.hh) + 1;\n      if (hh < 10) hh = `0${hh}`;\n      this.time.hh = hh;\n      this.setTime();\n    }\n  }\n\n  minusHour() {\n    if (Number(this.time.hh) > 0) {\n      let hh: any = Number(this.time.hh) - 1;\n      if (hh < 10) hh = `0${hh}`;\n      this.time.hh = hh;\n      this.setTime();\n    }\n  }\n\n  addMinute() {\n    if (Number(this.time.mm) < 59) {\n      let mm: any = Number(this.time.mm) + 1;\n      if (mm < 10) mm = `0${mm}`;\n      this.time.mm = mm;\n      this.setTime();\n    }\n  }\n\n  minusMinute() {\n    if (Number(this.time.mm) > 0) {\n      let mm: any = Number(this.time.mm) - 1;\n      if (mm < 10) mm = `0${mm}`;\n      this.time.mm = mm;\n      this.setTime();\n    }\n  }\n\n  setTime() {\n    let hh = Number(this.time.hh);\n    if (hh < Number(this.minTimeArr[0])) hh = Number(this.minTimeArr[0]);\n    if (hh > Number(this.maxTimeArr[0])) hh = Number(this.maxTimeArr[0]);\n\n    let mm: any = Number(this.time.mm);\n    if (mm < Number(this.minTimeArr[1])) mm = Number(this.minTimeArr[1]);\n    if (mm > Number(this.maxTimeArr[1])) mm = Number(this.maxTimeArr[1]);\n    if (mm < 10) mm = `0${mm}`;\n\n    if (this.is12HourFormat) {\n      let display12: any = hh === 0 ? 12 : hh <= 12 ? hh : hh % 12;\n      if (display12 < 10) display12 = `0${display12}`;\n      this.hoursCtrl.setValue(display12, { emitEvent: false });\n      this.amPmCtrl.setValue(hh < 12 ? 'AM' : 'PM');\n    } else {\n      this.hoursCtrl.setValue(hh < 10 ? `0${hh}` : `${hh}`, { emitEvent: false });\n    }\n\n    this.minCtrl.setValue(mm, { emitEvent: false });\n    this.time.hh = hh < 10 ? `0${hh}` : `${hh}`;\n    this.time.mm = mm;\n    this.setBtnEnableDisable();\n  }\n\n  updateDateTime() {\n    const min = Number(this.minCtrl.value);\n    let hh: any;\n    if (this.is12HourFormat) {\n      const hour12 = Number(this.hoursCtrl.value);\n      const ampm = this.amPmCtrl.value;\n      hh = ampm === 'AM' ? (hour12 === 12 ? 0 : hour12) : (hour12 === 12 ? 12 : hour12 + 12);\n    } else {\n      hh = Number(this.hoursCtrl.value);\n    }\n    let mm: any = min;\n    if (hh < 10) hh = `0${hh}`;\n    if (mm < 10) mm = `0${mm}`;\n    this.time = { hh, mm };\n    this.setBtnEnableDisable();\n  }\n\n  toggleAmPm() {\n    this.amPmCtrl.setValue(this.amPmCtrl.value === 'PM' ? 'AM' : 'PM');\n    setTimeout(() => this.updateDateTime(), 100);\n  }\n\n  setBtnEnableDisable() {\n    this.btnConfig = { addHourDisable: false, minusHourDisable: false, addMinuteDisable: false, minusMinuteDisable: false };\n    const h = Number(this.time.hh), m = Number(this.time.mm);\n    const minH = Number(this.minTimeArr[0]), minM = Number(this.minTimeArr[1]);\n    const maxH = Number(this.maxTimeArr[0]), maxM = Number(this.maxTimeArr[1]);\n    this.btnConfig.minusHourDisable = minH >= h;\n    if (minH === h) this.btnConfig.minusMinuteDisable = minM >= m;\n    this.btnConfig.addHourDisable = maxH <= h;\n    if (maxH === h) this.btnConfig.addMinuteDisable = maxM <= m;\n  }\n\n  get disabledSubmit(): boolean {\n    const min = Number(this.minCtrl.value);\n    let hh: number;\n    if (this.is12HourFormat) {\n      const hour12 = Number(this.hoursCtrl.value);\n      const ampm = this.amPmCtrl.value;\n      hh = ampm === 'AM' ? (hour12 === 12 ? 0 : hour12) : (hour12 === 12 ? 12 : hour12 + 12);\n    } else {\n      hh = Number(this.hoursCtrl.value);\n    }\n    return hh < Number(this.minTimeArr[0]) || hh > Number(this.maxTimeArr[0]) ||\n      min < Number(this.minTimeArr[1]) || min > Number(this.maxTimeArr[1]);\n  }\n\n  onSubmit() {\n    this.updateDateTime();\n    setTimeout(() => this.onClose(`${this.time.hh}:${this.time.mm}`), 50);\n  }\n\n  onClose(time: string | null): void {\n    this.dialogRef.close(time);\n  }\n\n  ngOnDestroy() {\n    this._onDestroy.next();\n    this._onDestroy.complete();\n  }\n}\n","@if(data.label){\n  <h1 mat-dialog-title style=\"margin: 0px;\">{{data.label}}</h1>\n}\n<div class=\"lib-time-picker-dialog\">\n  <div class=\"lib-dt-timer\">\n    <div class=\"lib-dt-timer-box\">\n      <button mat-icon-button class=\"lib-dt-arrow-btn\" aria-label=\"Add a hour\" (click)=\"addHour()\" [disabled]=\"btnConfig.addHourDisable\">\n        <mat-icon>expand_less</mat-icon>\n      </button>\n      <label class=\"lib-dt-timer-content\">\n        <input maxlength=\"2\" class=\"lib-dt-timer-input\" [formControl]=\"hoursCtrl\">\n        <span class=\"lib-sr-only\">Hour</span>\n      </label>\n      <button mat-icon-button class=\"lib-dt-arrow-btn\" aria-label=\"Minus a hour\" (click)=\"minusHour()\" [disabled]=\"btnConfig.minusHourDisable\">\n        <mat-icon>expand_more</mat-icon>\n      </button>\n    </div>\n    <div class=\"lib-dt-timer-box\">\n      <div aria-hidden=\"true\" class=\"lib-dt-timer-divider\"></div>\n      <button mat-icon-button class=\"lib-dt-arrow-btn\" aria-label=\"Add a minute\" (click)=\"addMinute()\" [disabled]=\"btnConfig.addMinuteDisable\">\n        <mat-icon>expand_less</mat-icon>\n      </button>\n      <label class=\"lib-dt-timer-content\">\n        <input maxlength=\"2\" class=\"lib-dt-timer-input\" [formControl]=\"minCtrl\">\n        <span class=\"lib-sr-only\">Minute</span>\n      </label>\n      <button mat-icon-button class=\"lib-dt-arrow-btn\" aria-label=\"Minus a minute\" (click)=\"minusMinute()\" [disabled]=\"btnConfig.minusMinuteDisable\">\n        <mat-icon>expand_more</mat-icon>\n      </button>\n    </div>\n    @if(is12HourFormat){\n      <div class=\"lib-dt-timer-ampm\">\n        <button type=\"button\" class=\"lib-dt-ampm-btn\" (click)=\"toggleAmPm()\">\n          <span class=\"lib-dt-ampm-label\">{{amPmCtrl.value}}</span>\n        </button>\n      </div>\n    }\n  </div>\n  <div class=\"lib-dt-picker-action\">\n    <button mat-button class=\"lib-dt-btn-cancel\" (click)=\"onClose(null)\">Cancel</button>\n    <button mat-button class=\"lib-dt-btn-set\" cdkFocusInitial (click)=\"onSubmit()\" [disabled]=\"disabledSubmit\">Set</button>\n  </div>\n</div>\n","import { ChangeDetectorRef, Component, Injector, inject, EventEmitter, Input, Output, SimpleChanges, forwardRef } from '@angular/core';\nimport { AbstractControl, FormControl, NG_VALUE_ACCESSOR, ValidatorFn, Validators } from '@angular/forms';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Subject, debounceTime, takeUntil } from 'rxjs';\nimport { ValidationMessages } from '../models/validation-messages.model';\nimport { AngularTimePickerDialogComponent } from './angular-time-picker-dialog/angular-time-picker-dialog.component';\nimport { syncTouchedState } from '../utils/sync-touched-state';\n\n@Component({\n  selector: 'angular-time-picker',\n  standalone: false,\n  templateUrl: './angular-time-picker.component.html',\n  styleUrl: './angular-time-picker.component.css',\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => AngularTimePickerComponent),\n    multi: true\n  }]\n})\nexport class AngularTimePickerComponent {\n  timeCtrl = new FormControl('');\n  minTime: string = '00:00';\n  maxTime: string = '23:59';\n\n  @Input() label!: string;\n  @Input() placeholder: string = '';\n  @Input() classes: string = '';\n  @Input() appearance: MatFormFieldAppearance = 'outline';\n  @Input() hint!: string;\n  @Input() validationMessages: ValidationMessages[] = [];\n  @Input() min!: string;\n  @Input() max!: string;\n  @Input() required!: boolean;\n  @Input() disabled!: boolean;\n  @Input() isDisplayPickerLabel: boolean = false;\n  /** '24' (default) keeps HH:MM; '12' shows HH:MM AM/PM while internal value stays 24h. */\n  @Input() timeFormat: '12' | '24' = '24';\n  @Output() timeChange = new EventEmitter<string>();\n\n  timeStr!: string;\n  touched = false;\n  disable = false;\n  dialogOpened = false;\n\n  private _onDestroy = new Subject<void>();\n  private injector = inject(Injector);\n  private changeDetectorRef = inject(ChangeDetectorRef);\n\n  constructor(public dialog: MatDialog) {}\n\n  ngOnInit() {\n    this.validationMessages?.forEach(v => {\n      if (v.type === 'required') {\n        this.timeCtrl.setValidators(Validators.required);\n        this.timeCtrl.updateValueAndValidity();\n      }\n    });\n\n    this.validationMessages = [\n      ...this.validationMessages,\n      { type: 'minTime', message: this.timeErrorMessage },\n      { type: 'maxTime', message: this.timeErrorMessage },\n    ];\n\n    if (this.required && !this.validationMessages?.length) {\n      this.timeCtrl.setValidators(Validators.required);\n      this.timeCtrl.updateValueAndValidity();\n    }\n\n    this.timeCtrl.valueChanges.pipe(takeUntil(this._onDestroy), debounceTime(400)).subscribe((time: any) => {\n      if (this.timeFormat !== '12') this.timeStr = time;\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['disabled']) {\n      this.disabled = changes['disabled'].currentValue;\n      this.setDisabledState(this.disabled);\n    }\n    if (changes['required']) {\n      this.required = changes['required'].currentValue;\n      if (this.required && !this.validationMessages?.length) {\n        this.timeCtrl.setValidators(Validators.required);\n        this.timeCtrl.updateValueAndValidity();\n      } else if (!this.required && !this.validationMessages?.length) {\n        this.timeCtrl.removeValidators(Validators.required);\n        this.timeCtrl.updateValueAndValidity();\n      }\n    }\n    if (changes['min']) {\n      this.min = changes['min'].currentValue;\n      this.minTime = this.min || '00:00';\n      this.timeCtrl.setValidators([timeRangeValidator(this.minTime, this.maxTime)]);\n    }\n    if (changes['max']) {\n      this.max = changes['max'].currentValue;\n      this.maxTime = this.max || '23:59';\n      this.timeCtrl.setValidators([timeRangeValidator(this.minTime, this.maxTime)]);\n    }\n  }\n\n  ngAfterContentInit() {\n    syncTouchedState(this.injector, this.timeCtrl, this.changeDetectorRef, this._onDestroy);\n  }\n\n  ngOnDestroy() {\n    this._onDestroy.next();\n    this._onDestroy.complete();\n  }\n\n  /* eslint-disable */\n  onChanged = (time: string) => {}\n  onTouched = () => {}\n\n  registerOnChange(fn: any) { this.onChanged = fn; }\n  registerOnTouched(fn: any) { this.onTouched = fn; }\n\n  writeValue(value: string): void {\n    if (value) {\n      this.timeStr = value;\n      this.timeCtrl.setValue(this.timeFormat === '12' ? this.to12h(value) : value);\n    } else {\n      this.timeStr = '00:00';\n      this.timeCtrl.setValue(this.timeFormat === '12' ? '' : '00:00');\n    }\n  }\n\n  private to12h(time24: string): string {\n    const parts = (time24 || '00:00').split(':');\n    const hh = parseInt(parts[0] || '0', 10);\n    const mm = parts[1] ?? '00';\n    const period = hh < 12 ? 'AM' : 'PM';\n    const h12 = hh % 12 || 12;\n    return `${h12.toString().padStart(2, '0')}:${mm} ${period}`;\n  }\n\n  get displayPlaceholder(): string {\n    if (this.placeholder) return this.placeholder;\n    if (this.timeFormat === '12') return '00:00 --';\n    return 'HH:MM';\n  }\n\n  setDateValue(time: string) {\n    this.timeStr = time;\n    this.timeCtrl.setValue(this.timeFormat === '12' ? this.to12h(time) : time);\n    this.onChanged(time);\n    this.timeChange.emit(time);\n  }\n\n  markAsTouched() {\n    if (!this.touched) { this.onTouched(); this.touched = true; }\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disable = isDisabled;\n    if (this.disabled || this.disable) this.timeCtrl.disable();\n    else this.timeCtrl.enable();\n  }\n\n  openPicker(event: any): void {\n    event.stopPropagation();\n    event.preventDefault();\n    if (this.disable) return;\n    this.dialogOpened = true;\n    const ref = this.dialog.open(AngularTimePickerDialogComponent, {\n      data: {\n        label: this.isDisplayPickerLabel && this.label ? this.label : null,\n        time: this.timeStr,\n        min: this.min,\n        max: this.max,\n        timeFormat: this.timeFormat,\n      },\n      panelClass: ['lib-time-picker-dialog']\n    });\n    ref.afterClosed().subscribe((time: string | null) => {\n      this.dialogOpened = false;\n      if (time) this.setDateValue(time);\n    });\n  }\n\n  get timeErrorMessage(): string {\n    if (this.timeCtrl.hasError('minTime')) return `Time cannot be earlier than ${this.minTime}`;\n    if (this.timeCtrl.hasError('maxTime')) return `Time cannot be later than ${this.maxTime}`;\n    return '';\n  }\n}\n\nexport function timeRangeValidator(minTime: string, maxTime: string): ValidatorFn {\n  return (control: AbstractControl): { [key: string]: any } | null => {\n    const value = control.value;\n    if (!value) return null;\n    if (value < minTime) return { minTime: true };\n    if (value > maxTime) return { maxTime: true };\n    return null;\n  };\n}\n","<mat-form-field class=\"lib-w-full lib-time-picker {{classes}}\" [appearance]=\"appearance\">\n  @if(label && label != ''){\n    <mat-label>{{label}}</mat-label>\n  }\n  <input matInput type=\"text\" inputmode=\"none\" [formControl]=\"timeCtrl\"\n    [placeholder]=\"displayPlaceholder\" class=\"lib-time-input\" readonly\n    (click)=\"timeCtrl.disabled ? null : openPicker($event)\" />\n  <button type=\"button\" matIconSuffix mat-icon-button aria-label=\"Time Picker\"\n    (click)=\"timeCtrl.disabled ? null : openPicker($event)\" [disabled]=\"timeCtrl.disabled\">\n    <mat-icon [class.lib-icon-disabled]=\"timeCtrl.disabled\">schedule</mat-icon>\n  </button>\n  @if(hint && hint != ''){ <mat-hint>{{hint}}</mat-hint> }\n  <mat-error>\n    @for(v of validationMessages; track v.type){\n      @if(timeCtrl.hasError(v.type) && (timeCtrl.dirty || timeCtrl.touched) && !dialogOpened){\n        {{v.message}}\n      }\n    }\n  </mat-error>\n</mat-form-field>\n","import { Component, Inject, OnDestroy } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { Subject, combineLatest, debounceTime, startWith, takeUntil } from 'rxjs';\ninterface DialogData {\n  label?: string;\n  min?: Date | number | null;\n  max?: Date | number | null;\n  date?: Date | number | null;\n  timeFormat?: '12' | '24';\n}\n\ninterface InputConfig {\n  minHour: number;\n  maxHour: number;\n  minMinute: number;\n  maxMinute: number;\n  timeFormat: '12' | '24';\n}\n\n@Component({\n  selector: 'angular-date-time-picker-dialog',\n  standalone: false,\n  templateUrl: './angular-date-time-picker-dialog.component.html',\n  styleUrl: './angular-date-time-picker-dialog.component.css'\n})\nexport class AngularDateTimePickerDialogComponent implements OnDestroy {\n\n  selectedCtrl = new FormControl();\n  selected: Date = new Date();\n  minDate!: Date | null;\n  maxDate!: Date | null;\n  hoursCtrl = new FormControl();\n  minCtrl = new FormControl();\n  amPmCtrl = new FormControl();\n  disabledSubmit = false;\n\n  data: DialogData = {};\n\n  private _onDestroy = new Subject<void>();\n  private _cachedTotalMinutes = 0;\n  private _lastCalculatedTime = '';\n\n  inputConfig: InputConfig = { minHour: 0, maxHour: 23, minMinute: 0, maxMinute: 59, timeFormat: '24' };\n\n  btnConfig = { addHourDisable: false, minusHourDisable: false, addMinuteDisable: false, minusMinuteDisable: false };\n\n  constructor(\n    public dialogRef: MatDialogRef<AngularDateTimePickerDialogComponent>,\n    @Inject(MAT_DIALOG_DATA) public dialogData: DialogData,\n  ) {\n    this.data = { ...dialogData };\n    if (dialogData?.min instanceof Date) this.data.min = new Date((dialogData.min as Date).getTime());\n    if (dialogData?.max instanceof Date) this.data.max = new Date((dialogData.max as Date).getTime());\n    if (dialogData?.date instanceof Date) this.data.date = new Date((dialogData.date as Date).getTime());\n  }\n\n  get is12HourFormat(): boolean { return this.inputConfig.timeFormat === '12'; }\n\n  private convertToDate(v: Date | number | null | undefined): Date | null {\n    if (!v) return null;\n    const d = typeof v === 'number' ? new Date(v) : v;\n    return isNaN(d.getTime()) ? null : d;\n  }\n\n  ngOnInit(): void {\n    this.minDate = this.convertToDate(this.data?.min);\n    this.maxDate = this.convertToDate(this.data?.max);\n    this.selected = this.convertToDate(this.data?.date) || new Date();\n    this.selectedCtrl.setValue(this.selected);\n\n    this.inputConfig = { minHour: 0, maxHour: 23, minMinute: 0, maxMinute: 59, timeFormat: this.data?.timeFormat || '24' };\n\n    if (this.is12HourFormat) {\n      this.amPmCtrl.setValue(this.selected.getHours() < 12 ? 'AM' : 'PM');\n    }\n\n    this.updateTimeConstraints();\n    this.validateCurrentTime();\n    this.setTime();\n    this.updateSubmitValidation();\n\n    combineLatest([\n      this.hoursCtrl.valueChanges.pipe(startWith(this.hoursCtrl.value)),\n      this.minCtrl.valueChanges.pipe(startWith(this.minCtrl.value)),\n      this.amPmCtrl.valueChanges.pipe(startWith(this.amPmCtrl.value)),\n    ]).pipe(takeUntil(this._onDestroy), debounceTime(200))\n      .subscribe(() => {\n        this.updateSelectedTime();\n        this.setBtnEnableDisable();\n        this.updateSubmitValidation();\n      });\n\n    this.setTime();\n  }\n\n  ngOnDestroy(): void {\n    this._onDestroy.next();\n    this._onDestroy.complete();\n  }\n\n  updateFormDate(value: Date) {\n    this.selected = value;\n    this.updateTimeConstraints();\n    this.validateCurrentTime();\n    this.updateDateTime(value);\n  }\n\n  updateTimeConstraints(): void {\n    this.inputConfig = { ...this.inputConfig, minHour: 0, maxHour: 23, minMinute: 0, maxMinute: 59 };\n    if (!this.selected) return;\n    const selStr = this.dateStr(this.selected);\n    if (this.minDate && this.dateStr(this.minDate) === selStr) {\n      this.inputConfig.minHour = this.minDate.getHours();\n      this.inputConfig.minMinute = this.minDate.getMinutes();\n    }\n    if (this.maxDate && this.dateStr(this.maxDate) === selStr) {\n      this.inputConfig.maxHour = this.maxDate.getHours();\n      this.inputConfig.maxMinute = this.maxDate.getMinutes();\n    }\n  }\n\n  validateCurrentTime(): void {\n    const cur = this.selected.getHours() * 60 + this.selected.getMinutes();\n    const min = this.inputConfig.minHour * 60 + this.inputConfig.minMinute;\n    const max = this.inputConfig.maxHour * 60 + this.inputConfig.maxMinute;\n    if (cur < min) { this.selected.setHours(this.inputConfig.minHour, this.inputConfig.minMinute, 0, 0); this.setTime(); this.updateDateTime(); }\n    else if (cur > max) { this.selected.setHours(this.inputConfig.maxHour, this.inputConfig.maxMinute, 0, 0); this.setTime(); this.updateDateTime(); }\n  }\n\n  updateSelectedTime(): void {\n    const h12 = Number(this.hoursCtrl.value) || 0;\n    const mm = Number(this.minCtrl.value) || 0;\n    let hh = this.is12HourFormat ? this.to24h(h12, this.amPmCtrl.value || 'AM') : h12;\n    hh = Math.max(0, Math.min(23, hh));\n    this.selected.setHours(hh, Math.max(0, Math.min(59, mm)), 0, 0);\n    this.selectedCtrl.setValue(this.selected);\n    this._lastCalculatedTime = '';\n  }\n\n  updateSubmitValidation(): void {\n    this.disabledSubmit = false;\n    if (!this.selected) { this.disabledSubmit = true; return; }\n    const selStr = this.dateStr(this.selected);\n    if (this.minDate) {\n      if (selStr < this.dateStr(this.minDate)) { this.disabledSubmit = true; return; }\n      if (selStr === this.dateStr(this.minDate)) {\n        const cur = this.getCurrentTotalMinutes();\n        if (cur < this.inputConfig.minHour * 60 + this.inputConfig.minMinute) { this.disabledSubmit = true; return; }\n      }\n    }\n    if (this.maxDate) {\n      if (selStr > this.dateStr(this.maxDate)) { this.disabledSubmit = true; return; }\n      if (selStr === this.dateStr(this.maxDate)) {\n        const cur = this.getCurrentTotalMinutes();\n        if (cur > this.inputConfig.maxHour * 60 + this.inputConfig.maxMinute) { this.disabledSubmit = true; return; }\n      }\n    }\n  }\n\n  private getCurrentTotalMinutes(): number {\n    const key = `${this.selected.getHours()}-${this.selected.getMinutes()}`;\n    if (this._lastCalculatedTime !== key) {\n      this._cachedTotalMinutes = this.selected.getHours() * 60 + this.selected.getMinutes();\n      this._lastCalculatedTime = key;\n    }\n    return this._cachedTotalMinutes;\n  }\n\n  addHour() {\n    const cur = this.selected.getHours() * 60 + this.selected.getMinutes();\n    const next = cur + 60;\n    const max = this.inputConfig.maxHour * 60 + this.inputConfig.maxMinute;\n    const newH = Math.floor(Math.min(next, max) / 60);\n    const newM = Math.min(next, max) % 60;\n    this.selected.setHours(newH, newM);\n    this.updateTimeConstraints();\n    this.setTime();\n    this.setBtnEnableDisable();\n  }\n\n  minusHour() {\n    const cur = this.selected.getHours() * 60 + this.selected.getMinutes();\n    const next = Math.max(cur - 60, this.inputConfig.minHour * 60 + this.inputConfig.minMinute);\n    this.selected.setHours(Math.floor(next / 60), next % 60);\n    this.updateTimeConstraints();\n    this.setTime();\n    this.setBtnEnableDisable();\n  }\n\n  addMinute() {\n    const cur = this.selected.getHours() * 60 + this.selected.getMinutes();\n    const next = cur + 1;\n    const max = this.inputConfig.maxHour * 60 + this.inputConfig.maxMinute;\n    if (next <= max && Math.floor(next / 60) <= 23) {\n      this.selected.setHours(Math.floor(next / 60), next % 60);\n      this.updateTimeConstraints();\n      this.setTime();\n    }\n    this.setBtnEnableDisable();\n  }\n\n  minusMinute() {\n    const cur = this.selected.getHours() * 60 + this.selected.getMinutes();\n    const next = cur - 1;\n    const min = this.inputConfig.minHour * 60 + this.inputConfig.minMinute;\n    if (next >= min && next >= 0) {\n      this.selected.setHours(Math.floor(next / 60), next % 60);\n      this.updateTimeConstraints();\n      this.setTime();\n    }\n    this.setBtnEnableDisable();\n  }\n\n  setTime(): void {\n    let hh = this.selected.getHours();\n    let mm = this.selected.getMinutes();\n    let displayH: any = this.is12HourFormat ? (hh === 0 ? 12 : hh > 12 ? hh - 12 : hh) : hh;\n    this.hoursCtrl.setValue(displayH.toString().padStart(2, '0'), { emitEvent: false });\n    this.minCtrl.setValue(mm.toString().padStart(2, '0'), { emitEvent: false });\n    if (this.is12HourFormat) this.amPmCtrl.setValue(hh < 12 ? 'AM' : 'PM', { emitEvent: false });\n  }\n\n  updateDateTime(selected: Date | null = null): void {\n    if (!selected) selected = this.selected;\n    const h12 = Number(this.hoursCtrl.value) || 0;\n    const mm = Number(this.minCtrl.value) || 0;\n    let hh = this.is12HourFormat ? this.to24h(h12, this.amPmCtrl.value || 'AM') : h12;\n    hh = Math.max(0, Math.min(23, hh));\n    const y = selected.getFullYear().toString().padStart(4, '0');\n    const mo = (selected.getMonth() + 1).toString().padStart(2, '0');\n    const d = selected.getDate().toString().padStart(2, '0');\n    const iso = `${y}-${mo}-${d}T${hh.toString().padStart(2, '0')}:${Math.max(0, Math.min(59, mm)).toString().padStart(2, '0')}:00`;\n    this.selected = new Date(iso);\n    this.selectedCtrl.setValue(this.selected);\n    this._lastCalculatedTime = '';\n    this.setBtnEnableDisable();\n  }\n\n  setBtnEnableDisable(): void {\n    this.btnConfig = { addHourDisable: false, minusHourDisable: false, addMinuteDisable: false, minusMinuteDisable: false };\n    if (!this.selected) return;\n    const cur = this.getCurrentTotalMinutes();\n    const h = this.selected.getHours(), m = this.selected.getMinutes();\n    if (this.minDate && this.isSameDate(this.minDate, this.selected)) {\n      const min = this.inputConfig.minHour * 60 + this.inputConfig.minMinute;\n      this.btnConfig.minusHourDisable = cur - 60 < min;\n      this.btnConfig.minusMinuteDisable = cur - 1 < min;\n    }\n    if (this.maxDate && this.isSameDate(this.maxDate, this.selected)) {\n      const max = this.inputConfig.maxHour * 60 + this.inputConfig.maxMinute;\n      this.btnConfig.addHourDisable = cur + 60 > max;\n      this.btnConfig.addMinuteDisable = cur + 1 > max;\n    }\n    if (h === 23 && m === 59) { this.btnConfig.addHourDisable = true; this.btnConfig.addMinuteDisable = true; }\n    if (h === 0 && m === 0) { this.btnConfig.minusHourDisable = true; this.btnConfig.minusMinuteDisable = true; }\n  }\n\n  toggleAmPm() {\n    if (!this.is12HourFormat) return;\n    this.amPmCtrl.setValue(this.amPmCtrl.value === 'PM' ? 'AM' : 'PM');\n  }\n\n  isSameDate(d1: Date, d2: Date): boolean { return this.dateStr(d1) === this.dateStr(d2); }\n\n  dateStr(d: Date): string {\n    return `${d.getFullYear()}-${(d.getMonth() + 1).toString().padStart(2, '0')}-${d.getDate().toString().padStart(2, '0')}`;\n  }\n\n  private to24h(h12: number, ampm: string): number {\n    if (ampm === 'AM') return h12 === 12 ? 0 : h12;\n    return h12 === 12 ? 12 : h12 + 12;\n  }\n\n  onDateDoubleClick(event: MouseEvent): void {\n    const target = event.target as HTMLElement;\n    if (!target.closest('.mat-calendar-body-cell:not(.mat-calendar-body-disabled)')) return;\n    this.onSubmit();\n  }\n\n  onSubmit() {\n    this.updateDateTime();\n    this.updateSubmitValidation();\n    if (this.disabledSubmit) { alert('Please select a valid date and time within the allowed range.'); return; }\n    setTimeout(() => this.onClose(this.selected), 50);\n  }\n\n  onClose(date: Date | null): void { this.dialogRef.close(date); }\n}\n","@if(data.label){\n  <h1 mat-dialog-title>{{data.label}}</h1>\n}\n<div class=\"lib-date-time-picker-dialog\">\n  <mat-calendar [startAt]=\"selected\" [minDate]=\"minDate\" [maxDate]=\"maxDate\" [selected]=\"selectedCtrl.value\" (selectedChange)=\"updateFormDate($event)\" (dblclick)=\"onDateDoubleClick($event)\"></mat-calendar>\n  <div class=\"lib-dt-timer\">\n    <div class=\"lib-dt-timer-box\">\n      <button mat-icon-button class=\"lib-dt-arrow-btn\" aria-label=\"Add a hour\" (click)=\"addHour()\" [disabled]=\"btnConfig.addHourDisable\">\n        <mat-icon>expand_less</mat-icon>\n      </button>\n      <label class=\"lib-dt-timer-content\">\n        <input maxlength=\"2\" type=\"text\" pattern=\"[0-9]{1,2}\" class=\"lib-dt-timer-input\" [formControl]=\"hoursCtrl\" aria-label=\"Hours\" placeholder=\"00\">\n        <span class=\"lib-sr-only\">Hour</span>\n      </label>\n      <button mat-icon-button class=\"lib-dt-arrow-btn\" aria-label=\"Minus a hour\" (click)=\"minusHour()\" [disabled]=\"btnConfig.minusHourDisable\">\n        <mat-icon>expand_more</mat-icon>\n      </button>\n    </div>\n    <div class=\"lib-dt-timer-box\">\n      <div aria-hidden=\"true\" class=\"lib-dt-timer-divider\"></div>\n      <button mat-icon-button class=\"lib-dt-arrow-btn\" aria-label=\"Add a minute\" (click)=\"addMinute()\" [disabled]=\"btnConfig.addMinuteDisable\">\n        <mat-icon>expand_less</mat-icon>\n      </button>\n      <label class=\"lib-dt-timer-content\">\n        <input maxlength=\"2\" type=\"text\" pattern=\"[0-9]{1,2}\" class=\"lib-dt-timer-input\" [formControl]=\"minCtrl\" aria-label=\"Minutes\" placeholder=\"00\">\n        <span class=\"lib-sr-only\">Minute</span>\n      </label>\n      <button mat-icon-button class=\"lib-dt-arrow-btn\" aria-label=\"Minus a minute\" (click)=\"minusMinute()\" [disabled]=\"btnConfig.minusMinuteDisable\">\n        <mat-icon>expand_more</mat-icon>\n      </button>\n    </div>\n    @if(is12HourFormat){\n      <div class=\"lib-dt-timer-ampm\">\n        <button type=\"button\" class=\"lib-dt-ampm-btn\" (click)=\"toggleAmPm()\">\n          <span class=\"lib-dt-ampm-label\">{{amPmCtrl.value}}</span>\n        </button>\n      </div>\n    }\n  </div>\n  <div class=\"lib-dt-picker-action\">\n    <button mat-button class=\"lib-dt-btn-cancel\" (click)=\"onClose(null)\">Cancel</button>\n    <button mat-button class=\"lib-dt-btn-set\" cdkFocusInitial (click)=\"onSubmit()\" [disabled]=\"disabledSubmit\">Set</button>\n  </div>\n</div>\n","import { ChangeDetectorRef, Component, Injector, inject, EventEmitter, Input, Output, SimpleChanges, forwardRef } from '@angular/core';\nimport { FormControl, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AngularDateTimePickerDialogComponent } from './angular-date-time-picker-dialog/angular-date-time-picker-dialog.component';\nimport { Subject, debounceTime, takeUntil } from 'rxjs';\nimport { ValidationMessages } from '../models/validation-messages.model';\nimport { syncTouchedState } from '../utils/sync-touched-state';\n\n@Component({\n  selector: 'angular-date-time-picker',\n  standalone: false,\n  templateUrl: './angular-date-time-picker.component.html',\n  styleUrl: './angular-date-time-picker.component.css',\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => AngularDateTimePickerComponent),\n    multi: true\n  }]\n})\nexport class AngularDateTimePickerComponent {\n  dateCtrl = new FormControl('');\n  tempDate!: string;\n\n  @Input() label!: string;\n  @Input() placeholder: string = '';\n  @Input() isLabelOutside = false;\n  @Input() dateFormate: string = 'DD/MM/YYYY';\n  @Input() classes: string = '';\n  @Input() appearance: MatFormFieldAppearance = 'outline';\n  @Input() hint!: string;\n  @Input() validationMessages: ValidationMessages[] = [];\n  @Input() min!: Date | number;\n  @Input() max!: Date | number;\n  @Input() required!: boolean;\n  @Input() disabled!: boolean;\n  @Input() isDisplayPickerLabel: boolean = false;\n  @Input() timeFormat: '12' | '24' = '24';\n  @Output() dateChange = new EventEmitter<Date>();\n\n  date!: Date;\n  touched = false;\n  disable = false;\n  dialogOpened = false;\n\n  private _onDestroy = new Subject<void>();\n  private injector = inject(Injector);\n  private changeDetectorRef = inject(ChangeDetectorRef);\n\n  constructor(public dialog: MatDialog) {}\n\n  private toDate(value: Date | number): Date {\n    return typeof value === 'number' ? new Date(value) : value;\n  }\n\n  get minDate(): Date | null { return this.min ? this.toDate(this.min) : null; }\n  get maxDate(): Date | null { return this.max ? this.toDate(this.max) : null; }\n\n  ngOnInit() {\n    this.validationMessages?.forEach(v => {\n      if (v.type === 'required') {\n        this.dateCtrl.setValidators(Validators.required);\n        this.dateCtrl.updateValueAndValidity();\n      }\n    });\n\n    if (this.required && !this.validationMessages?.length) {\n      this.dateCtrl.setValidators(Validators.required);\n      this.dateCtrl.updateValueAndValidity();\n    }\n\n    this.dateCtrl.valueChanges.pipe(takeUntil(this._onDestroy), debounceTime(600)).subscribe((v: any) => {\n      if (v && typeof v === 'string') {\n        const parsed = this.parseDateTime(v);\n        if (parsed && !isNaN(parsed.getTime())) {\n          if (!this.date || this.date.getTime() !== parsed.getTime()) {\n            let valid = parsed;\n            if (this.minDate && this.minDate.getTime() > parsed.getTime()) valid = this.minDate;\n            else if (this.maxDate && this.maxDate.getTime() < parsed.getTime()) valid = this.maxDate;\n            setTimeout(() => {\n              this.date = valid;\n              if (valid !== parsed) this.dateCtrl.setValue(this.dateTimeFormat(valid), { emitEvent: false });\n              this.onChanged(this.date);\n              this.dateChange.emit(this.date);\n            }, 20);\n          }\n        }\n      } else if (!v || v === '') {\n        this.date = null as any;\n        this.onChanged(null as any);\n        this.dateChange.emit(null as any);\n      }\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['disabled']) { this.disabled = changes['disabled'].currentValue; this.setDisabledState(this.disabled); }\n    if (changes['required']) {\n      this.required = changes['required'].currentValue;\n      if (this.required && !this.validationMessages?.length) {\n        this.dateCtrl.setValidators(Validators.required); this.dateCtrl.updateValueAndValidity();\n      } else if (!this.required && !this.validationMessages?.length) {\n        this.dateCtrl.removeValidators(Validators.required); this.dateCtrl.updateValueAndValidity();\n      }\n    }\n  }\n\n  ngAfterContentInit() {\n    syncTouchedState(this.injector, this.dateCtrl, this.changeDetectorRef, this._onDestroy);\n  }\n\n  ngOnDestroy() { this._onDestroy.next(); this._onDestroy.complete(); }\n\n  /* eslint-disable */\n  onChanged = (date: Date) => {}\n  onTouched = () => {}\n  registerOnChange(fn: any) { this.onChanged = fn; }\n  registerOnTouched(fn: any) { this.onTouched = fn; }\n\n  writeValue(value: Date): void {\n    if (value) {\n      this.date = new Date(value);\n      const str = this.dateTimeFormat(this.date);\n      this.dateCtrl.setValue(str);\n      this.tempDate = str;\n    } else {\n      this.dateCtrl.setValue(null);\n    }\n  }\n\n  private dateTimeFormat(date: Date): string {\n    const day = date.getDate().toString().padStart(2, '0');\n    const month = (date.getMonth() + 1).toString().padStart(2, '0');\n    const year = date.getFullYear().toString().padStart(4, '0');\n    const fmt = this.dateFormate || 'DD/MM/YYYY';\n    let datePart = `${day}/${month}/${year}`;\n    if (fmt === 'MM/DD/YYYY') datePart = `${month}/${day}/${year}`;\n    else if (fmt === 'YYYY/MM/DD') datePart = `${year}/${month}/${day}`;\n    else if (fmt === 'YYYY-MM-DD') datePart = `${year}-${month}-${day}`;\n    else if (fmt === 'DD-MM-YYYY') datePart = `${day}-${month}-${year}`;\n    else if (fmt === 'MM-DD-YYYY') datePart = `${month}-${day}-${year}`;\n\n    if (this.timeFormat === '12') {\n      const h24 = date.getHours();\n      const period = h24 < 12 ? 'AM' : 'PM';\n      const h12 = (h24 % 12 || 12).toString().padStart(2, '0');\n      const mm = date.getMinutes().toString().padStart(2, '0');\n      return `${datePart} ${h12}:${mm} ${period}`;\n    }\n    const hh = date.getHours().toString().padStart(2, '0');\n    const mm = date.getMinutes().toString().padStart(2, '0');\n    return `${datePart} ${hh}:${mm}`;\n  }\n\n  public parseDateTime(str: string): Date | null {\n    if (!str) return null;\n\n    if (this.timeFormat === '12') {\n      // Expected: \"DD/MM/YYYY HH:MM AM\" or \"DD/MM/YYYY HH:MM PM\"\n      const parts = str.trim().split(' ');\n      if (parts.length !== 3) return null;\n      const d = this.parseDate(parts[0]);\n      if (!d) return null;\n      const m = parts[1].match(/^(\\d{1,2}):(\\d{2})$/);\n      if (!m) return null;\n      const ampm = parts[2].toUpperCase();\n      if (ampm !== 'AM' && ampm !== 'PM') return null;\n      let h = parseInt(m[1], 10);\n      const min = parseInt(m[2], 10);\n      if (h < 1 || h > 12 || min < 0 || min > 59) return null;\n      h = ampm === 'AM' ? (h === 12 ? 0 : h) : (h === 12 ? 12 : h + 12);\n      d.setHours(h, min, 0, 0);\n      return d;\n    }\n\n    const parts = str.split(' ');\n    if (parts.length !== 2) return null;\n    const d = this.parseDate(parts[0]);\n    if (!d) return null;\n    const m = parts[1].match(/^(\\d{1,2}):(\\d{2})$/);\n    if (!m) return null;\n    const h = parseInt(m[1], 10), min = parseInt(m[2], 10);\n    if (h < 0 || h > 23 || min < 0 || min > 59) return null;\n    d.setHours(h, min, 0, 0);\n    return d;\n  }\n\n  public parseDate(dateStr: string): Date | null {\n    if (!dateStr) return null;\n    const fmt = this.dateFormate || 'DD/MM/YYYY';\n    const delim = fmt.includes('/') ? '/' : '-';\n    const parts = dateStr.split(delim);\n    if (parts.length !== 3) return null;\n    let day: number, month: number, year: number;\n    if (fmt === 'DD/MM/YYYY' || fmt === 'DD-MM-YYYY') { [day, month, year] = parts.map(Number); }\n    else if (fmt === 'MM/DD/YYYY' || fmt === 'MM-DD-YYYY') { [month, day, year] = parts.map(Number); }\n    else { [year, month, day] = parts.map(Number); }\n    if (isNaN(day!) || isNaN(month!) || isNaN(year!)) return null;\n    if (day! < 1 || day! > 31 || month! < 1 || month! > 12) return null;\n    const d = new Date(year!, month! - 1, day!);\n    if (d.getDate() !== day! || d.getMonth() !== month! - 1 || d.getFullYear() !== year!) return null;\n    return d;\n  }\n\n  getDateTimePattern(): string {\n    const fmt = this.dateFormate || 'DD/MM/YYYY';\n    const patterns: Record<string, string> = {\n      'DD/MM/YYYY': '(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/[0-9]{4}',\n      'MM/DD/YYYY': '(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])/[0-9]{4}',\n      'YYYY/MM/DD': '[0-9]{4}/(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])',\n      'DD-MM-YYYY': '(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[0-2])-[0-9]{4}',\n      'MM-DD-YYYY': '(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])-[0-9]{4}',\n      'YYYY-MM-DD': '[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])',\n    };\n    const datePat = patterns[fmt] || patterns['DD/MM/YYYY'];\n    const timePat = this.timeFormat === '12'\n      ? '(0[1-9]|1[0-2]):([0-5][0-9]) (AM|PM)'\n      : '(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9])';\n    return `^${datePat} ${timePat}$`;\n  }\n\n  getPlaceholder(): string {\n    const fmt = this.dateFormate || 'DD/MM/YYYY';\n    return this.timeFormat === '12' ? `${fmt} HH:MM AM/PM` : `${fmt} HH:MM`;\n  }\n\n  onKeyDown(event: KeyboardEvent): void {\n    const allowed = ['Backspace', 'Delete', 'Tab', 'Escape', 'Enter'];\n    if (allowed.includes(event.key)) return;\n    if (event.ctrlKey && ['a', 'c', 'v', 'x'].includes(event.key.toLowerCase())) return;\n\n    const input = event.target as HTMLInputElement;\n    const fmt = this.dateFormate || 'DD/MM/YYYY';\n    const delim = fmt.includes('/') ? '/' : '-';\n    const digits = input.value.replace(/[^0-9]/g, '');\n    const isNum = /[0-9]/.test(event.key);\n\n    // In 12h mode: once 12 digits are entered, handle A/P → AM/PM\n    if (this.timeFormat === '12' && digits.length >= 12) {\n      const key = event.key.toUpperCase();\n      if (key === 'A' || key === 'P') {\n        event.preventDefault();\n        const base = input.value.replace(/\\s*(AM|PM)$/i, '');\n        const v = `${base} ${key === 'A' ? 'AM' : 'PM'}`;\n        this.dateCtrl.setValue(v);\n        setTimeout(() => input.setSelectionRange(v.length, v.length), 0);\n        return;\n      }\n      if (!isNum) { event.preventDefault(); return; }\n    }\n\n    if (!isNum && event.key !== ':' && event.key !== ' ') { event.preventDefault(); return; }\n    if (!isNum) return;\n\n    if (digits.length >= 12) { event.preventDefault(); return; }\n    const next = digits.length + 1;\n\n    const addSuffix = (pos: number, suffix: string) => {\n      if (next === pos) {\n        event.preventDefault();\n        setTimeout(() => {\n          const v = input.value + event.key + suffix;\n          this.dateCtrl.setValue(v);\n          input.setSelectionRange(v.length, v.length);\n        }, 0);\n      }\n    };\n\n    if (fmt.startsWith('YYYY')) { addSuffix(4, delim); addSuffix(6, delim); addSuffix(8, ' '); addSuffix(10, ':'); }\n    else { addSuffix(2, delim); addSuffix(4, delim); addSuffix(8, ' '); addSuffix(10, ':'); }\n  }\n\n  onInput(event: Event): void {\n    const input = event.target as HTMLInputElement;\n    const fmt = this.dateFormate || 'DD/MM/YYYY';\n    const delim = fmt.includes('/') ? '/' : '-';\n    // In 12h mode also allow A, M, P letters (for AM/PM suffix)\n    const extraChars = this.timeFormat === '12' ? 'AaMmPp' : '';\n    const clean = input.value.replace(new RegExp(`[^0-9${delim === '/' ? '/' : '-'} :${extraChars}]`, 'g'), '');\n    if (clean.replace(/[^0-9]/g, '').length > 12) return;\n    if (clean !== input.value) {\n      this.dateCtrl.setValue(clean, { emitEvent: false });\n      setTimeout(() => input.setSelectionRange(clean.length, clean.length), 0);\n    }\n  }\n\n  onPaste(event: ClipboardEvent): void {\n    event.preventDefault();\n    const paste = event.clipboardData?.getData('text') || '';\n    const parsed = this.parseDateTime(paste);\n    if (parsed) this.dateCtrl.setValue(this.dateTimeFormat(parsed));\n  }\n\n  onFocus(event: FocusEvent): void {\n    const input = event.target as HTMLInputElement;\n    setTimeout(() => input.setSelectionRange(input.value.length, input.value.length), 0);\n  }\n\n  setDateValue(date: Date) { this.writeValue(date); this.onChanged(date); this.dateChange.emit(date); }\n  markAsTouched() { if (!this.touched) { this.onTouched(); this.touched = true; } }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disable = isDisabled;\n    if (this.disabled || this.disable) this.dateCtrl.disable();\n    else this.dateCtrl.enable();\n  }\n\n  openPicker(event: any): void {\n    event.stopPropagation();\n    event.preventDefault();\n    if (this.disable) return;\n    // Sync parse in case debounce hasn't fired yet\n    const typedDate = this.parseDateTime(this.dateCtrl.value || '');\n    if (typedDate) this.date = typedDate;\n    this.dialogOpened = true;\n    const ref = this.dialog.open(AngularDateTimePickerDialogComponent, {\n      data: {\n        label: this.isDisplayPickerLabel && this.label ? this.label : null,\n        date: this.date,\n        min: this.minDate,\n        max: this.maxDate,\n        timeFormat: this.timeFormat,\n      },\n      panelClass: ['lib-date-time-picker-dialog']\n    });\n    ref.afterClosed().subscribe((date: Date | null) => {\n      this.dialogOpened = false;\n      if (date) this.setDateValue(date);\n    });\n  }\n\n  get checkValidation() { return this.dateCtrl.hasValidator(Validators.required); }\n}\n","@if(isLabelOutside && label && label != ''){\n  <label class=\"lib-label\">\n    {{label}}\n    @if(checkValidation){ <span class=\"lib-required\">*</span> }\n  </label>\n}\n<mat-form-field class=\"lib-w-full lib-date-time-picker {{classes}}\" [appearance]=\"appearance\">\n  @if(!isLabelOutside && label && label != ''){\n    <mat-label>{{label}}</mat-label>\n  }\n  <input matInput libSoftKeyboardGuard type=\"text\" [formControl]=\"dateCtrl\" [placeholder]=\"getPlaceholder()\"\n    [pattern]=\"getDateTimePattern()\" [maxlength]=\"timeFormat === '12' ? 19 : 16\"\n    (keydown)=\"onKeyDown($event)\" (input)=\"onInput($event)\" (paste)=\"onPaste($event)\"\n    (focus)=\"onFocus($event)\" (click)=\"onFocus($event)\" />\n  <button type=\"button\" matIconSuffix mat-icon-button aria-label=\"Date Time Picker\"\n    (click)=\"dateCtrl.disabled ? null : openPicker($event)\" [disabled]=\"dateCtrl.disabled\">\n    <mat-icon [class.lib-icon-disabled]=\"dateCtrl.disabled\">today</mat-icon>\n  </button>\n  @if(hint && hint != ''){ <mat-hint>{{hint}}</mat-hint> }\n  <mat-error>\n    @for(v of validationMessages; track v.type){\n      @if(dateCtrl.hasError(v.type) && (dateCtrl.dirty || dateCtrl.touched) && !dialogOpened){\n        {{v.message}}\n      }\n    }\n  </mat-error>\n</mat-form-field>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\n\nimport { AngularDatePickerComponent } from './angular-date-picker/angular-date-picker.component';\nimport { AngularDatePickerDialogComponent } from './angular-date-picker/angular-date-picker-dialog/angular-date-picker-dialog.component';\nimport { AngularTimePickerComponent } from './angular-time-picker/angular-time-picker.component';\nimport { AngularTimePickerDialogComponent } from './angular-time-picker/angular-time-picker-dialog/angular-time-picker-dialog.component';\nimport { AngularDateTimePickerComponent } from './angular-date-time-picker/angular-date-time-picker.component';\nimport { AngularDateTimePickerDialogComponent } from './angular-date-time-picker/angular-date-time-picker-dialog/angular-date-time-picker-dialog.component';\nimport { SoftKeyboardGuardDirective } from './utils/soft-keyboard-guard.directive';\n\n@NgModule({\n  declarations: [\n    AngularDatePickerComponent,\n    AngularDatePickerDialogComponent,\n    AngularTimePickerComponent,\n    AngularTimePickerDialogComponent,\n    AngularDateTimePickerComponent,\n    AngularDateTimePickerDialogComponent,\n    SoftKeyboardGuardDirective,\n  ],\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    MatFormFieldModule,\n    MatInputModule,\n    MatIconModule,\n    MatButtonModule,\n    MatDialogModule,\n    MatDatepickerModule,\n    MatNativeDateModule,\n  ],\n  exports: [\n    AngularDatePickerComponent,\n    AngularDatePickerDialogComponent,\n    AngularTimePickerComponent,\n    AngularTimePickerDialogComponent,\n    AngularDateTimePickerComponent,\n    AngularDateTimePickerDialogComponent,\n  ]\n})\nexport class AngularDateTimePickerModule { }\n","/*\n * Public API Surface of angular-date-time-picker\n */\n\nexport * from './lib/angular-date-time-picker.module';\nexport * from './lib/models/validation-messages.model';\nexport * from './lib/angular-date-picker/angular-date-picker.component';\nexport * from './lib/angular-date-picker/angular-date-picker-dialog/angular-date-picker-dialog.component';\nexport * from './lib/angular-time-picker/angular-time-picker.component';\nexport * from './lib/angular-time-picker/angular-time-picker-dialog/angular-time-picker-dialog.component';\nexport * from './lib/angular-date-time-picker/angular-date-time-picker.component';\nexport * from './lib/angular-date-time-picker/angular-date-time-picker-dialog/angular-date-time-picker-dialog.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i4","i6","i7.SoftKeyboardGuardDirective","i5"],"mappings":"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"}