{"version":3,"file":"edsis-component-date-picker.mjs","sources":["../../../library/component/date-picker/date-picker.component.ts","../../../library/component/date-picker/edsis-component-date-picker.ts"],"sourcesContent":["import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  Component,\n  DestroyRef,\n  ElementRef,\n  LOCALE_ID,\n  TemplateRef,\n  ViewContainerRef,\n  computed,\n  forwardRef,\n  inject,\n  input,\n  linkedSignal,\n  model,\n  signal,\n  viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { cn } from '@edsis/component/class';\nimport { uniqueId } from '@edsis/component/id';\nimport { overlayDismissals } from '@edsis/component/overlay';\nimport {\n  CalendarComponent,\n  type CalendarDateFilter,\n  type CalendarStartView,\n} from '@edsis/component/calendar';\n\n/**\n * Popup date picker native (tanpa Angular Material): input teks + tombol\n * kalender yang membuka `<Calendar>` dalam CDK overlay. Nilai two-way lewat\n * `value`, ControlValueAccessor untuk ngModel/reactive forms. `touchUi`\n * menampilkan kalender di tengah layar dengan backdrop (mode sentuh).\n */\n@Component({\n  selector: 'DatePicker',\n  imports: [CalendarComponent],\n  host: { '[class]': 'classes()' },\n  providers: [\n    { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatePickerComponent), multi: true },\n  ],\n  template: `\n    <div [class]=\"fieldClasses()\">\n      <input\n        #field\n        type=\"text\"\n        autocomplete=\"off\"\n        class=\"h-full w-full min-w-0 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed\"\n        [id]=\"resolvedId()\"\n        [attr.aria-label]=\"ariaLabel()\"\n        [attr.aria-labelledby]=\"ariaLabelledby()\"\n        [attr.aria-haspopup]=\"'dialog'\"\n        [attr.aria-expanded]=\"isOpen()\"\n        [placeholder]=\"placeholder()\"\n        [required]=\"required() || null\"\n        [disabled]=\"isDisabled() || null\"\n        [value]=\"displayValue()\"\n        (change)=\"parseInput(field.value)\"\n        (keydown.enter)=\"parseInput(field.value)\"\n        (blur)=\"handleTouched()\"\n      />\n      <button\n        type=\"button\"\n        data-date-picker-toggle=\"true\"\n        class=\"inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\"\n        aria-label=\"Open calendar\"\n        [attr.aria-expanded]=\"isOpen()\"\n        [disabled]=\"isDisabled() || null\"\n        (click)=\"toggle()\"\n      >\n        <svg\n          aria-hidden=\"true\"\n          class=\"h-4 w-4\"\n          viewBox=\"0 0 24 24\"\n          fill=\"none\"\n          stroke=\"currentColor\"\n          stroke-width=\"2\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        >\n          <path d=\"M8 2v4\" />\n          <path d=\"M16 2v4\" />\n          <rect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\" />\n          <path d=\"M3 10h18\" />\n        </svg>\n      </button>\n    </div>\n\n    <ng-template #panel>\n      <div role=\"dialog\" aria-label=\"Choose date\" [class]=\"panelClasses()\">\n        <Calendar\n          [value]=\"value()\"\n          (valueChange)=\"pick($event)\"\n          [min]=\"min()\"\n          [max]=\"max()\"\n          [startAt]=\"startAt()\"\n          [startView]=\"startView()\"\n          [dateFilter]=\"dateFilter()\"\n        />\n      </div>\n    </ng-template>\n  `,\n})\nexport class DatePickerComponent implements ControlValueAccessor {\n  private readonly overlay = inject(Overlay);\n  private readonly vcr = inject(ViewContainerRef);\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly locale = inject(LOCALE_ID);\n  private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n  readonly value = model<Date | null>(null);\n  readonly id = input<string | null>(null);\n  readonly placeholder = input<string>('Pick a date');\n  readonly required = input<boolean>(false);\n  readonly min = input<Date | null>(null);\n  readonly max = input<Date | null>(null);\n  readonly startAt = input<Date | null>(null);\n  readonly startView = input<CalendarStartView>('month');\n  readonly touchUi = input<boolean>(false);\n  readonly dateFilter = input<CalendarDateFilter | null>(null);\n  readonly panelClass = input<string | string[]>('');\n  readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n  readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n  readonly disabled = model<boolean>(false);\n  readonly class = input<string>('');\n\n  /** Disabled state pushed by the Forms API; kept separate so it never clobbers the `disabled` binding. */\n  private readonly cvaDisabled = signal(false);\n  protected readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n\n  private readonly fallbackId = uniqueId('DatePicker');\n  protected readonly resolvedId = computed(() => this.id() ?? this.fallbackId);\n\n  private readonly fieldRef = viewChild.required<ElementRef<HTMLInputElement>>('field');\n  private readonly panelTemplate = viewChild.required<TemplateRef<unknown>>('panel');\n  private overlayRef: OverlayRef | null = null;\n  protected readonly isOpen = signal(false);\n\n  private readonly displayFormat = computed(\n    () => new Intl.DateTimeFormat(this.locale, { dateStyle: 'medium' }),\n  );\n\n  /**\n   * Teks di input mengikuti `value`, tapi tetap bisa ditimpa sementara oleh\n   * ketikan yang tidak valid (linkedSignal) sampai nilai berikutnya masuk.\n   */\n  protected readonly displayValue = linkedSignal(() => {\n    const current = this.value();\n    return current ? this.displayFormat().format(current) : '';\n  });\n\n  protected readonly classes = computed(() => cn('inline-block', this.class()));\n\n  protected readonly fieldClasses = computed(() =>\n    cn(\n      'flex h-9 w-full items-center gap-1 rounded-md border border-input bg-transparent py-1 pl-3 pr-1',\n      'text-sm shadow-sm transition-colors',\n      'focus-within:ring-1 focus-within:ring-ring',\n      this.isDisabled() && 'cursor-not-allowed opacity-50',\n    ),\n  );\n\n  protected readonly panelClasses = computed(() =>\n    cn('rounded-md bg-popover text-popover-foreground shadow-md', this.panelClass()),\n  );\n\n  private onChangeFn: (v: Date | null) => void = () => {};\n  private onTouchedFn: () => void = () => {};\n\n  protected toggle(): void {\n    this.isOpen() ? this.close() : this.open();\n  }\n\n  protected open(): void {\n    if (this.isOpen() || this.isDisabled()) {\n      return;\n    }\n\n    const anchor = this.host.nativeElement;\n    const positionStrategy = this.touchUi()\n      ? this.overlay.position().global().centerHorizontally().centerVertically()\n      : this.overlay\n          .position()\n          .flexibleConnectedTo(anchor)\n          .withPositions([\n            { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n            {\n              originX: 'start',\n              originY: 'top',\n              overlayX: 'start',\n              overlayY: 'bottom',\n              offsetY: -4,\n            },\n          ]);\n\n    this.overlayRef = this.overlay.create({\n      positionStrategy,\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\n      hasBackdrop: this.touchUi(),\n      backdropClass: 'cdk-overlay-dark-backdrop',\n    });\n\n    this.overlayRef.attach(new TemplatePortal(this.panelTemplate(), this.vcr));\n\n    overlayDismissals(this.overlayRef, anchor)\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => this.close());\n\n    if (this.touchUi()) {\n      this.overlayRef\n        .backdropClick()\n        .pipe(takeUntilDestroyed(this.destroyRef))\n        .subscribe(() => this.close());\n    }\n\n    this.isOpen.set(true);\n  }\n\n  protected close(): void {\n    if (!this.isOpen()) {\n      return;\n    }\n\n    this.overlayRef?.dispose();\n    this.overlayRef = null;\n    this.isOpen.set(false);\n    this.fieldRef().nativeElement.focus();\n    this.onTouchedFn();\n  }\n\n  protected pick(next: Date | null): void {\n    this.setValue(next);\n    this.close();\n  }\n\n  /** Parse ketikan bebas via Date; kosong = null, tak valid = kembalikan teks nilai terakhir. */\n  protected parseInput(raw: string): void {\n    const text = raw.trim();\n\n    if (!text) {\n      this.setValue(null);\n      return;\n    }\n\n    const parsed = new Date(text);\n    if (Number.isNaN(parsed.getTime())) {\n      this.displayValue.set(raw);\n      return;\n    }\n\n    this.setValue(new Date(parsed.getFullYear(), parsed.getMonth(), parsed.getDate()));\n  }\n\n  private setValue(next: Date | null): void {\n    this.value.set(next);\n    this.onChangeFn(next);\n    // Paksa format ulang walau value sama (mis. mengetik ulang tanggal yang sama).\n    this.displayValue.set(next ? this.displayFormat().format(next) : '');\n  }\n\n  protected handleTouched(): void {\n    this.onTouchedFn();\n  }\n\n  writeValue(v: Date | null): void {\n    this.value.set(v);\n  }\n\n  registerOnChange(fn: (v: Date | null) => void): void {\n    this.onChangeFn = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouchedFn = fn;\n  }\n\n  setDisabledState(state: boolean): void {\n    this.cvaDisabled.set(state);\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}