{"version":3,"file":"ifsworld-granite-components-date-picker.mjs","sources":["../../../../libs/granite-components/date-picker/src/lib/date-picker-base.ts","../../../../libs/granite-components/date-picker/src/lib/date-picker.component.ts","../../../../libs/granite-components/date-picker/src/lib/date-picker.component.html","../../../../libs/granite-components/date-picker/src/lib/date-range-picker.component.ts","../../../../libs/granite-components/date-picker/src/lib/date-range-picker.component.html","../../../../libs/granite-components/date-picker/src/lib/date-picker-trigger-for.directive.ts","../../../../libs/granite-components/date-picker/src/lib/date-picker.module.ts","../../../../libs/granite-components/date-picker/src/ifsworld-granite-components-date-picker.ts"],"sourcesContent":["import {\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild,\n  inject,\n} from '@angular/core';\nimport { Direction } from '@angular/cdk/bidi';\n// eslint-disable-next-line import/no-internal-modules\nimport {\n  ClientInputInterface,\n  ClientOutputInterface,\n} from '@ifsworld/granite-components';\nimport { PrimeNG } from 'primeng/config';\n\nexport type PositionX = 'before' | 'after';\n\nexport type PositionY = 'above' | 'below';\n\nlet pickerPanelUid = 0;\n\n/** Base class with common functionality for date/date-range pickers. */\n@Directive({\n  standalone: false,\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class _DatePickerBase implements OnInit {\n  @Input()\n  minDate: Date | null = null;\n\n  @Input()\n  maxDate: Date | null = null;\n\n  @Input()\n  firstDayOfWeek: number = 0;\n\n  @Output()\n  readonly pickerClosed: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild(TemplateRef) templateRef: TemplateRef<any>;\n\n  _elementRef = inject(ElementRef);\n  primeNG = inject(PrimeNG);\n\n  xPosition: PositionX = 'before';\n  yPosition: PositionY = 'below';\n\n  direction: Direction;\n\n  /**\n   * Used for locating the panel in tests and setting the aria-control attribute\n   * for the picker trigger.\n   */\n  readonly panelId = `granite-date-picker-panel-${pickerPanelUid++}`;\n\n  /** Client input device information */\n  clientInput: ClientInputInterface;\n\n  /** Client output device information */\n  clientOutput: ClientOutputInterface;\n\n  // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n  ngOnInit() {\n    this.primeNG.setTranslation({\n      dayNamesMin: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n    });\n  }\n\n  _handleKeydown(event: KeyboardEvent): void {\n    if (event.key === 'Escape') {\n      this.pickerClosed.emit();\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ViewEncapsulation,\n} from '@angular/core';\n// eslint-disable-next-line import/no-internal-modules\nimport { _DatePickerBase } from './date-picker-base';\n\n@Component({\n  selector: 'granite-date-picker',\n  templateUrl: './date-picker.component.html',\n  styleUrls: ['./date-picker.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class GraniteDatePickerComponent extends _DatePickerBase {\n  @Input()\n  selectedDate: Date | undefined = undefined;\n\n  @Output()\n  readonly selectionChanged: EventEmitter<Date> = new EventEmitter<Date>();\n\n  dateSelectionChanged(newDate: Date): void {\n    this.selectedDate = newDate;\n    this.selectionChanged.emit(newDate);\n  }\n}\n","<ng-template>\n  <div class=\"granite-date-picker\" cdkTrapFocus>\n    <div *ngIf=\"selectedDate; else notSelected\">\n      <p-datepicker\n        [(ngModel)]=\"selectedDate\"\n        [focusTrap]=\"true\"\n        [showButtonBar]=\"true\"\n        [inline]=\"true\"\n        [showIcon]=\"false\"\n        [clearButtonStyleClass]=\"'hideClearButton'\"\n        [minDate]=\"minDate\"\n        [maxDate]=\"maxDate\"\n        [firstDayOfWeek]=\"firstDayOfWeek\"\n        [showWeek]=\"false\"\n        [touchUI]=\"clientOutput?.device === 'touch'\"\n        (onSelect)=\"dateSelectionChanged($event)\"\n        (keydown)=\"_handleKeydown($event)\"\n      ></p-datepicker>\n    </div>\n    <ng-template #notSelected>\n      <p-datepicker\n        [focusTrap]=\"true\"\n        [showButtonBar]=\"true\"\n        [inline]=\"true\"\n        [showIcon]=\"false\"\n        [clearButtonStyleClass]=\"'hideClearButton'\"\n        [minDate]=\"minDate\"\n        [maxDate]=\"maxDate\"\n        [firstDayOfWeek]=\"firstDayOfWeek\"\n        [showWeek]=\"false\"\n        [touchUI]=\"clientOutput?.device === 'touch'\"\n        (onSelect)=\"dateSelectionChanged($event)\"\n        (keydown)=\"_handleKeydown($event)\"\n      ></p-datepicker>\n    </ng-template>\n  </div>\n</ng-template>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ViewEncapsulation,\n  Output,\n  EventEmitter,\n  Input,\n  OnChanges,\n  SimpleChanges,\n} from '@angular/core';\n// eslint-disable-next-line import/no-internal-modules\nimport { _DatePickerBase } from './date-picker-base';\n\n@Component({\n  selector: 'granite-date-range-picker',\n  templateUrl: './date-range-picker.component.html',\n  styleUrls: ['./date-picker.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class GraniteDateRangePickerComponent\n  extends _DatePickerBase\n  implements OnChanges\n{\n  @Input()\n  selectedDateRange: Date[] = null;\n\n  @Output()\n  readonly selectionChanged: EventEmitter<Date[]> = new EventEmitter<Date[]>();\n\n  _selectedDateRangeInternal: Date[] = null;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.selectedDateRange) {\n      this._selectedDateRangeInternal =\n        this.selectedDateRange?.length > 0 ? this.selectedDateRange : null;\n    }\n  }\n\n  dateRangeSelectionChanged(date: Date): void {\n    if (\n      this._selectedDateRangeInternal == null ||\n      this._selectedDateRangeInternal.length === 0\n    ) {\n      this._selectedDateRangeInternal = [date];\n    } else if (this._selectedDateRangeInternal.length === 1) {\n      this._selectedDateRangeInternal.push(date);\n    } else if (\n      this._selectedDateRangeInternal.length === 2 &&\n      this._selectedDateRangeInternal[1] != null\n    ) {\n      this.selectionChanged.emit(this._selectedDateRangeInternal);\n    }\n  }\n}\n","<ng-template>\n  <div\n    class=\"granite-date-picker\"\n    [class.granite-date-range-picker]=\"true\"\n    cdkTrapFocus\n  >\n    <div *ngIf=\"_selectedDateRangeInternal !== null; else rangeNotSelected\">\n      <p-datepicker\n        selectionMode=\"range\"\n        [(ngModel)]=\"_selectedDateRangeInternal\"\n        [focusTrap]=\"true\"\n        [showButtonBar]=\"false\"\n        [inline]=\"true\"\n        [showIcon]=\"false\"\n        [clearButtonStyleClass]=\"'hideClearButton'\"\n        [minDate]=\"minDate\"\n        [maxDate]=\"maxDate\"\n        [firstDayOfWeek]=\"firstDayOfWeek\"\n        [showWeek]=\"false\"\n        [touchUI]=\"clientOutput.device === 'touch'\"\n        (onSelect)=\"dateRangeSelectionChanged($event)\"\n        (keydown)=\"_handleKeydown($event)\"\n      ></p-datepicker>\n    </div>\n    <ng-template #rangeNotSelected>\n      <p-datepicker\n        selectionMode=\"range\"\n        [focusTrap]=\"true\"\n        [showButtonBar]=\"false\"\n        [inline]=\"true\"\n        [showIcon]=\"false\"\n        [clearButtonStyleClass]=\"'hideClearButton'\"\n        [minDate]=\"minDate\"\n        [maxDate]=\"maxDate\"\n        [firstDayOfWeek]=\"firstDayOfWeek\"\n        [showWeek]=\"false\"\n        [touchUI]=\"clientOutput.device === 'touch'\"\n        (onSelect)=\"dateRangeSelectionChanged($event)\"\n        (keydown)=\"_handleKeydown($event)\"\n      ></p-datepicker>\n    </ng-template>\n  </div>\n</ng-template>\n","import {\n  AfterContentInit,\n  Directive,\n  ElementRef,\n  Input,\n  OnDestroy,\n  ViewContainerRef,\n  inject,\n} from '@angular/core';\n\nimport { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n  FlexibleConnectedPositionStrategy,\n  HorizontalConnectionPos,\n  Overlay,\n  OverlayConfig,\n  OverlayOutsideClickDispatcher,\n  OverlayRef,\n  PositionStrategy,\n  VerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\nimport { merge, Observable, Subscription } from 'rxjs';\n\nimport {\n  ClientInputInterface,\n  ClientOutputInterface,\n  GRANITE_CLIENT_INPUT,\n  GRANITE_CLIENT_OUTPUT,\n} from '@ifsworld/granite-components';\nimport { GraniteDatePickerComponent } from './date-picker.component';\nimport { GraniteDateRangePickerComponent } from './date-range-picker.component';\n\n@Directive({\n  selector: `[graniteDatePickerTriggerFor]`,\n  standalone: false,\n  host: {\n    class: 'granite-date-picker-trigger',\n    'aria-haspopup': 'true',\n    '[attr.aria-expanded]': '_isPickerOpen || null',\n    '[attr.aria-controls]': '_isPickerOpen ? picker.panelId : null',\n    '(keydown)': '_handleKeydown($event)',\n    '(click)': '_handleClick($event)',\n  },\n})\nexport class GraniteDatePickerTriggerForDirective\n  implements AfterContentInit, OnDestroy\n{\n  /** References the picker instance that the trigger is associated with. */\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('graniteDatePickerTriggerFor')\n  picker: GraniteDatePickerComponent | GraniteDateRangePickerComponent;\n\n  _clientInput = inject<ClientInputInterface>(GRANITE_CLIENT_INPUT, {\n    optional: true,\n  });\n  _clientOutput = inject<ClientOutputInterface>(GRANITE_CLIENT_OUTPUT, {\n    optional: true,\n  });\n\n  /** Whether the associated picker is open */\n  _isPickerOpen: boolean = false;\n\n  private _overlay = inject(Overlay);\n  private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _viewContainerRef = inject(ViewContainerRef);\n  private _outsideClickDispatcher = inject(OverlayOutsideClickDispatcher);\n  private _dir = inject(Directionality, { optional: true });\n  private _focusMonitor = inject(FocusMonitor);\n\n  private _pickerCloseSubscription = Subscription.EMPTY;\n\n  private _portal: TemplatePortal | null = null;\n  private _overlayRef: OverlayRef | null = null;\n\n  ngAfterContentInit(): void {\n    const selectionChanged = this.picker.selectionChanged as Observable<any>;\n    const closed = this.picker.pickerClosed as Observable<any>;\n\n    this._pickerCloseSubscription = merge(selectionChanged, closed).subscribe(\n      () => {\n        this.closePicker();\n      }\n    );\n  }\n\n  ngOnDestroy(): void {\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n      this._overlayRef = null;\n    }\n    this._pickerCloseSubscription.unsubscribe();\n  }\n\n  isOpen(): boolean {\n    return this._isPickerOpen;\n  }\n\n  openPicker(): void {\n    if (this._isPickerOpen) {\n      return;\n    }\n\n    this.picker.direction = this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n    this.picker.clientInput = this._clientInput;\n    this.picker.clientOutput = this._clientOutput;\n\n    const panelClass: string[] = [];\n    if (this._clientOutput?.device === 'touch') {\n      panelClass.push('granite-overlay-pane-center');\n    }\n\n    const scrollStrategy =\n      this._clientOutput?.device !== 'touch'\n        ? this._overlay.scrollStrategies.reposition()\n        : this._overlay.scrollStrategies.block();\n\n    const hasBackdrop = this._clientOutput?.device === 'touch';\n\n    if (!this._overlayRef) {\n      const config = new OverlayConfig({\n        positionStrategy: this._positionStrategy(),\n        backdropClass: 'granite-overlay-dark-glass-backdrop',\n        scrollStrategy,\n        direction: this._dir,\n        panelClass,\n        hasBackdrop,\n      });\n\n      this._overlayRef = this._overlay.create(config);\n    }\n\n    if (!this._portal || this._portal.templateRef !== this.picker.templateRef) {\n      this._portal = new TemplatePortal(\n        this.picker.templateRef,\n        this._viewContainerRef\n      );\n    }\n    // Attach portal to overlay ref (which is a portal outlet)\n    this._overlayRef.attach(this._portal);\n    this._outsideClickDispatcher.add(this._overlayRef);\n    this._overlayRef.outsidePointerEvents().subscribe((event: MouseEvent) => {\n      event.stopPropagation();\n      this.closePicker();\n    });\n\n    this._isPickerOpen = true;\n  }\n\n  /** Toggles the picker between the open and closed states. */\n  togglePicker(): void {\n    if (this._isPickerOpen) {\n      this.closePicker();\n    } else {\n      this.openPicker();\n    }\n  }\n\n  /** Close the associated picker */\n  closePicker(): void {\n    if (!this._overlayRef || !this._isPickerOpen) {\n      return;\n    }\n\n    this._outsideClickDispatcher.remove(this._overlayRef);\n    this._overlayRef.detach();\n\n    this._restoreFocus();\n    this._isPickerOpen = false;\n  }\n\n  /** Handles key presses on the trigger. */\n  _handleKeydown(event: KeyboardEvent): void {\n    if (event.key === 'Enter') {\n      event.preventDefault();\n      this.togglePicker();\n    }\n  }\n\n  /** Handles click events on the trigger. */\n  _handleClick(): void {\n    this.togglePicker();\n  }\n\n  /**\n   * Restores focus to the element that was focused before the picker was open.\n   */\n  _restoreFocus(origin: FocusOrigin = 'program', options?: FocusOptions): void {\n    if (this._focusMonitor) {\n      this._focusMonitor.focusVia(this._element, origin, options);\n    } else {\n      this._element.nativeElement.focus(options);\n    }\n  }\n\n  /**\n   * Returns strategy for positioning the overlay for desktop devices:\n   */\n  private _desktopPositionStrategy(): PositionStrategy {\n    const positionStrategy: FlexibleConnectedPositionStrategy = this._overlay\n      .position()\n      .flexibleConnectedTo(this._element)\n      .withLockedPosition()\n      .withTransformOriginOn('.granite-date-picker')\n      .withPush(false);\n\n    this._setPosition(positionStrategy);\n    return positionStrategy;\n  }\n\n  /**\n   * Sets the appropriate positions on a position strategy\n   * so the overlay connects with the trigger correctly.\n   * @param positionStrategy Strategy whose position to update.\n   */\n  private _setPosition(positionStrategy: FlexibleConnectedPositionStrategy) {\n    const [originX, originFallbackX]: HorizontalConnectionPos[] =\n      this.picker.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];\n\n    const [overlayY, overlayFallbackY]: VerticalConnectionPos[] =\n      this.picker.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];\n\n    let [originY, originFallbackY] = [overlayY, overlayFallbackY];\n    const [overlayX, overlayFallbackX] = [originX, originFallbackX];\n    const offsetY = 0;\n\n    originY = overlayY === 'top' ? 'bottom' : 'top';\n    originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\n\n    positionStrategy.withPositions([\n      { originX, originY, overlayX, overlayY, offsetY },\n      {\n        originX: originFallbackX,\n        originY,\n        overlayX: overlayFallbackX,\n        overlayY,\n        offsetY,\n      },\n      {\n        originX,\n        originY: originFallbackY,\n        overlayX,\n        overlayY: overlayFallbackY,\n        offsetY: -offsetY,\n      },\n      {\n        originX: originFallbackX,\n        originY: originFallbackY,\n        overlayX: overlayFallbackX,\n        overlayY: overlayFallbackY,\n        offsetY: -offsetY,\n      },\n    ]);\n  }\n\n  /**\n   * Returns strategy for positioning the overlay depending on what type of\n   * device the picker is being shown on\n   */\n  private _positionStrategy(): PositionStrategy {\n    if (this._clientOutput?.device !== 'touch') {\n      return this._desktopPositionStrategy();\n    }\n    return this._touchPositionStrategy();\n  }\n\n  /**\n   * Returns strategy for positioning the overlay for touch devices:\n   * Place centered in the screen.\n   */\n  private _touchPositionStrategy(): PositionStrategy {\n    return this._overlay.position().global();\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { GraniteDatePickerComponent } from './date-picker.component';\nimport { GraniteDateRangePickerComponent } from './date-range-picker.component';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport {\n  GraniteIconModule,\n  GraniteButtonModule,\n} from '@ifsworld/granite-components';\nimport { GraniteDatePickerTriggerForDirective } from './date-picker-trigger-for.directive';\nimport { A11yModule } from '@angular/cdk/a11y';\n\n@NgModule({\n  declarations: [\n    GraniteDatePickerComponent,\n    GraniteDateRangePickerComponent,\n    GraniteDatePickerTriggerForDirective,\n  ],\n  imports: [\n    CommonModule,\n    OverlayModule,\n    DatePickerModule,\n    FormsModule,\n    GraniteIconModule,\n    GraniteButtonModule,\n    A11yModule,\n  ],\n  exports: [\n    GraniteDatePickerComponent,\n    GraniteDateRangePickerComponent,\n    GraniteDatePickerTriggerForDirective,\n  ],\n  providers: [],\n})\nexport class GraniteDatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}