{"version":3,"file":"tableau-ui-angular-date-picker.mjs","sources":["../../../projects/component-library/date-picker/src/date-picker.directive.ts","../../../projects/component-library/date-picker/src/date.validators.ts","../../../projects/component-library/date-picker/src/tableau-ui-date-picker.module.ts","../../../projects/component-library/date-picker/src/tableau-ui-angular-date-picker.ts"],"sourcesContent":["import type { ModelSignal } from '@angular/core';\nimport { Directive, effect, ElementRef, forwardRef, HostListener, inject, input, model, output } from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ThemeService } from 'tableau-ui-angular/theme';\n\n@Directive({\n  selector: 'input[type=date],input[type=datetime-local],input[type=datetime],input[date-picker]',\n  standalone: false,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DatePickerDirective),\n      multi: true,\n    },\n  ],\n  host: {\n    class: 'date-picker',\n    '[attr.type]': '$type() === \"datetime\" ? \"datetime-local\" : \"date\"',\n  },\n})\nexport class DatePickerDirective implements ControlValueAccessor {\n  private readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n  private readonly themeService = inject(ThemeService);\n\n  // type can only be set once. Cannot change between date and datetime\n  readonly $type = input.required<'date' | 'datetime'>({\n    alias: 'type',\n  });\n  private originalType: 'date' | 'datetime' | undefined;\n  private readonly typeChanged = effect(() => {\n    this.originalType ??= this.$type();\n    if (this.$type() !== this.originalType) {\n      throw new Error('DatePickerDirective: type must be \"date\" or \"datetime\", can not be changed later');\n    }\n  });\n  // nullable Signal type needs to be set explicitly -> ng-packagr strips nullability\n  readonly $value: ModelSignal<Date | undefined> = model<Date | undefined>(undefined, {\n    alias: 'value',\n  });\n  readonly valueChange = output<Date | undefined>();\n\n  @HostListener('input')\n  onInput() {\n    let val: Date | undefined = undefined;\n    if (!this.el.nativeElement.value) {\n      val = undefined;\n    } else {\n      const date = new Date(this.el.nativeElement.value);\n      if (isNaN(date.getTime())) {\n        val = undefined;\n      } else {\n        val = date;\n      }\n    }\n    this.$value.set(val);\n    this.valueChange.emit(val);\n    this._onTouched();\n    this._onChange(val);\n  }\n  @HostListener('focus')\n  onFocus() {\n    this._onTouched();\n  }\n\n  writeValue(obj: Date): void {\n    if (obj instanceof Date && !isNaN(obj.getTime())) {\n      if (this.$type() === 'datetime') {\n        const year = obj.getFullYear();\n        const month = (obj.getMonth() + 1).toString().padStart(2, '0');\n        const day = obj.getDate().toString().padStart(2, '0');\n        const hours = obj.getHours().toString().padStart(2, '0');\n        const minutes = obj.getMinutes().toString().padStart(2, '0');\n        this.el.nativeElement.value = `${year}-${month}-${day}T${hours}:${minutes}`;\n      } else {\n        const year = obj.getFullYear();\n        const month = (obj.getMonth() + 1).toString().padStart(2, '0');\n        const day = obj.getDate().toString().padStart(2, '0');\n        this.el.nativeElement.value = `${year}-${month}-${day}`;\n      }\n    } else {\n      this.el.nativeElement.value = '';\n    }\n  }\n  // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars\n  private _onChange = (value: Date | undefined) => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  private _onTouched = () => {};\n  registerOnChange(fn: (date: Date | undefined) => void): void {\n    this._onChange = fn;\n  }\n  registerOnTouched(fn: () => void): void {\n    this._onTouched = fn;\n  }\n  setDisabledState?(isDisabled: boolean): void {\n    this.el.nativeElement.disabled = isDisabled;\n  }\n}\n","import type { AbstractControl } from '@angular/forms';\n\nexport class DateValidators {\n  static minDate(minDate: Date) {\n    return (ctrl: AbstractControl) => {\n      if (ctrl.value !== undefined && ctrl.value !== null && ctrl.value instanceof Date && !isNaN(ctrl.value.getTime())) {\n        const date: Date = ctrl.value;\n        if (date < minDate) {\n          return { minDate: true };\n        }\n      }\n      return null;\n    };\n  }\n  static maxDate(maxDate: Date) {\n    return (ctrl: AbstractControl) => {\n      if (ctrl.value !== undefined && ctrl.value !== null && ctrl.value instanceof Date && !isNaN(ctrl.value.getTime())) {\n        const date: Date = ctrl.value;\n        if (date > maxDate) {\n          return { maxDate: true };\n        }\n      }\n      return null;\n    };\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DatePickerDirective } from './date-picker.directive';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [DatePickerDirective],\n  exports: [DatePickerDirective],\n})\nexport class TableauUiDatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}