{"version":3,"file":"dshch-rad-ui-datepicker.mjs","sources":["../../../projects/rad-ui/datepicker/classes/datepicker-dialog-config.class.ts","../../../projects/rad-ui/datepicker/classes/datepicker-dialog-ref.class.ts","../../../projects/rad-ui/datepicker/helpers/extend-object.ts","../../../projects/rad-ui/datepicker/components/dialog-container/datepicker-dialog-container.component.ts","../../../projects/rad-ui/datepicker/components/dialog-container/datepicker-dialog-container.component.html","../../../projects/rad-ui/datepicker/services/datepicker-dialog.service.ts","../../../projects/rad-ui/datepicker/classes/datepicker-date-time-format.class.ts","../../../projects/rad-ui/datepicker/services/datepicker-date-time-picker-intl.service.ts","../../../projects/rad-ui/datepicker/adapters/datepicker-date-time.adapter.ts","../../../projects/rad-ui/datepicker/components/calendar-body/datepicker-calendar-body.component.ts","../../../projects/rad-ui/datepicker/components/calendar-body/datepicker-calendar-body.component.html","../../../projects/rad-ui/datepicker/components/calendar-month-view/datepicker-calendar-month-view.component.ts","../../../projects/rad-ui/datepicker/components/calendar-month-view/datepicker-calendar-month-view.component.html","../../../projects/rad-ui/datepicker/components/calendar-multi-year-view.component/datepicker-calendar-multi-year-view.component.ts","../../../projects/rad-ui/datepicker/components/calendar-multi-year-view.component/datepicker-calendar-multi-year-view.component.html","../../../projects/rad-ui/datepicker/components/calendar-year-view/datepicker-calendar-year-view.component.ts","../../../projects/rad-ui/datepicker/components/calendar-year-view/datepicker-calendar-year-view.component.html","../../../projects/rad-ui/datepicker/components/calendar/datepicker-calendar.component.ts","../../../projects/rad-ui/datepicker/components/calendar/datepicker-calendar.component.html","../../../projects/rad-ui/datepicker/classes/datepicker-date-time.class.ts","../../../projects/rad-ui/datepicker/animations/datepicker-date-time-picker.animation.ts","../../../projects/rad-ui/datepicker/pipes/datepicker-number-fixed-length.pipe.ts","../../../projects/rad-ui/datepicker/components/timer-box/datepicker-timer-box.component.ts","../../../projects/rad-ui/datepicker/components/timer-box/datepicker-timer-box.component.html","../../../projects/rad-ui/datepicker/components/timer/datepicker-timer.component.ts","../../../projects/rad-ui/datepicker/components/timer/datepicker-timer.component.html","../../../projects/rad-ui/datepicker/components/date-time-picker-container/datepicker-date-time-picker-container.component.ts","../../../projects/rad-ui/datepicker/components/date-time-picker-container/datepicker-date-time-picker-container.component.html","../../../projects/rad-ui/datepicker/directives/datepicker-date-time-picker-input.directive.ts","../../../projects/rad-ui/datepicker/components/date-time-inline/datepicker-date-time-inline.component.ts","../../../projects/rad-ui/datepicker/components/date-time-inline/datepicker-date-time-inline.component.html","../../../projects/rad-ui/datepicker/directives/datepicker-date-time-picker-trigger.directive.ts","../../../projects/rad-ui/datepicker/components/date-time-picker/datepicker-date-time-picker.component.ts","../../../projects/rad-ui/datepicker/components/date-time-picker/datepicker-date-time-picker.component.html","../../../projects/rad-ui/datepicker/services/default-intl.ts","../../../projects/rad-ui/datepicker/adapters/datepicker-native-date-time.adapter.ts","../../../projects/rad-ui/datepicker/classes/datepicker-native-date-time-format.class.ts","../../../projects/rad-ui/datepicker/datepicker.component.ts","../../../projects/rad-ui/datepicker/datepicker.component.html","../../../projects/rad-ui/datepicker/module.ts","../../../projects/rad-ui/datepicker/dshch-rad-ui-datepicker.ts"],"sourcesContent":["import { ViewContainerRef } from '@angular/core';\nimport { NoopScrollStrategy, ScrollStrategy } from '@angular/cdk/overlay';\n\nlet uniqueId = 0;\n\n/** Possible overrides for a dialog's position. */\nexport interface DatepickerDialogPosition {\n  /** Override for the dialog's top position. */\n  top?: string;\n\n  /** Override for the dialog's bottom position. */\n  bottom?: string;\n\n  /** Override for the dialog's left position. */\n  left?: string;\n\n  /** Override for the dialog's right position. */\n  right?: string;\n}\n\nexport class DatepickerDialogConfig {\n  /**\n   * ID of the element that describes the dialog.\n   */\n  public ariaDescribedBy?: string | null = null;\n\n  /**\n   * Whether to focus the dialog when the dialog is opened\n   */\n  public autoFocus = true;\n\n  /** Whether the dialog has a backdrop. */\n  public hasBackdrop?: boolean = true;\n\n  /**\n   * Custom style for the backdrop\n   * */\n  public backdropStyle?: any;\n\n  /** Data being injected into the child component. */\n  public data?: any = null;\n\n  /** Whether the user can use escape or clicking outside to close a modal. */\n  public disableClose?: boolean = false;\n\n  /**\n   * ID for the modal. If omitted, a unique one will be generated.\n   */\n  public id?: string;\n\n  /**\n   * The ARIA role of the dialog element.\n   */\n  public role?: 'dialog' | 'alertdialog' = 'dialog';\n\n  /**\n   * Custom class for the pane\n   * */\n  public paneClass?: string | string[] = '';\n\n  /**\n   * Mouse Event\n   * */\n  public event?: MouseEvent | null = null;\n\n  /**\n   * Custom class for the backdrop\n   * */\n  public backdropClass?: string | string[] = '';\n\n  /**\n   * Whether the dialog should close when the user goes backwards/forwards in history.\n   * */\n  public closeOnNavigation?: boolean = true;\n\n  /** Width of the dialog. */\n  public width?: string = '';\n\n  /** Height of the dialog. */\n  public height?: string = '';\n\n  /**\n   * The min-width of the overlay panel.\n   * If a number is provided, pixel units are assumed.\n   * */\n  public minWidth?: number | string;\n\n  /**\n   * The min-height of the overlay panel.\n   * If a number is provided, pixel units are assumed.\n   * */\n  public minHeight?: number | string;\n\n  /**\n   * The max-width of the overlay panel.\n   * If a number is provided, pixel units are assumed.\n   * */\n  public maxWidth?: number | string = '85vw';\n\n  /**\n   * The max-height of the overlay panel.\n   * If a number is provided, pixel units are assumed.\n   * */\n  public maxHeight?: number | string;\n\n  /** Position overrides. */\n  public position?: DatepickerDialogPosition;\n\n  /**\n   * The scroll strategy when the dialog is open\n   * Learn more this from https://material.angular.io/cdk/overlay/overview#scroll-strategies\n   * */\n  public scrollStrategy?: ScrollStrategy = new NoopScrollStrategy();\n\n  public viewContainerRef?: ViewContainerRef;\n\n  constructor() {\n    this.id = `datepicker-dialog-${uniqueId++}`;\n  }\n}\n","import { AnimationEvent } from '@angular/animations';\nimport { Location } from '@angular/common';\nimport { GlobalPositionStrategy, OverlayRef } from '@angular/cdk/overlay';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { DatepickerDialogPosition } from './datepicker-dialog-config.class';\nimport { filter, take } from 'rxjs/operators';\nimport { Observable, Subject, Subscription, SubscriptionLike } from 'rxjs';\nimport { DatepickerDialogContainerComponent } from '../components/dialog-container/datepicker-dialog-container.component';\n\nexport class DatepickerDialogRef<T> {\n  private result: any;\n\n  private _beforeClose$ = new Subject<any>();\n\n  private _afterOpen$ = new Subject<any>();\n\n  private _afterClosed$ = new Subject<any>();\n\n  /** Subscription to changes in the user's location. */\n  private locationChanged: SubscriptionLike = Subscription.EMPTY;\n\n  /**\n   * The instance of component opened into modal\n   * */\n  public componentInstance?: T;\n\n  /** Whether the user is allowed to close the dialog. */\n  public disableClose = this.container.config.disableClose;\n\n  constructor(\n    private overlayRef: OverlayRef,\n    private container: DatepickerDialogContainerComponent,\n    public readonly id: string,\n    location?: Location,\n  ) {\n    this.container.animationStateChanged\n      .pipe(\n        filter((event: AnimationEvent) => event.phaseName === 'done' && event.toState === 'enter'),\n        take(1),\n      )\n      .subscribe(() => {\n        this._afterOpen$.next();\n        this._afterOpen$.complete();\n      });\n\n    this.container.animationStateChanged\n      .pipe(\n        filter((event: AnimationEvent) => event.phaseName === 'done' && event.toState === 'exit'),\n        take(1),\n      )\n      .subscribe(() => {\n        this.overlayRef.dispose();\n        this.locationChanged.unsubscribe();\n        this._afterClosed$.next(this.result);\n        this._afterClosed$.complete();\n        this.componentInstance = undefined;\n      });\n\n    this.overlayRef\n      .keydownEvents()\n      .pipe(filter((event) => event.keyCode === ESCAPE && !this.disableClose))\n      .subscribe(() => this.close());\n\n    if (location) {\n      this.locationChanged = location.subscribe(() => {\n        if (this.container.config.closeOnNavigation) {\n          this.close();\n        }\n      });\n    }\n  }\n\n  public close(dialogResult?: any) {\n    this.result = dialogResult;\n\n    this.container.animationStateChanged\n      .pipe(\n        filter((event: AnimationEvent) => event.phaseName === 'start'),\n        take(1),\n      )\n      .subscribe(() => {\n        this._beforeClose$.next(dialogResult);\n        this._beforeClose$.complete();\n        this.overlayRef.detachBackdrop();\n      });\n\n    this.container.startExitAnimation();\n  }\n\n  /**\n   * Gets an observable that emits when the overlay's backdrop has been clicked.\n   */\n  public backdropClick(): Observable<any> {\n    return this.overlayRef.backdropClick();\n  }\n\n  /**\n   * Gets an observable that emits when keydown events are targeted on the overlay.\n   */\n  public keydownEvents(): Observable<KeyboardEvent> {\n    return this.overlayRef.keydownEvents();\n  }\n\n  /**\n   * Updates the dialog's position.\n   * @param position New dialog position.\n   */\n  public updatePosition(position?: DatepickerDialogPosition): this {\n    const strategy = this.getPositionStrategy();\n\n    if (position && (position.left || position.right)) {\n      position.left ? strategy.left(position.left) : strategy.right(position.right);\n    } else {\n      strategy.centerHorizontally();\n    }\n\n    if (position && (position.top || position.bottom)) {\n      position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);\n    } else {\n      strategy.centerVertically();\n    }\n\n    this.overlayRef.updatePosition();\n\n    return this;\n  }\n\n  /**\n   * Updates the dialog's width and height.\n   * @param width New width of the dialog.\n   * @param height New height of the dialog.\n   */\n  updateSize(width: string = 'auto', height: string = 'auto'): this {\n    this.getPositionStrategy()\n      .width(width)\n      .height(height);\n    this.overlayRef.updatePosition();\n    return this;\n  }\n\n  public isAnimating(): boolean {\n    return this.container.isAnimating;\n  }\n\n  public afterOpen(): Observable<any> {\n    return this._afterOpen$.asObservable();\n  }\n\n  public beforeClose(): Observable<any> {\n    return this._beforeClose$.asObservable();\n  }\n\n  public afterClosed(): Observable<any> {\n    return this._afterClosed$.asObservable();\n  }\n\n  /** Fetches the position strategy object from the overlay ref. */\n  private getPositionStrategy(): GlobalPositionStrategy {\n    return this.overlayRef.getConfig().positionStrategy as GlobalPositionStrategy;\n  }\n}\n","/**\n * Extends an object with the *enumerable* and *own* properties of one or more source objects,\n * similar to Object.assign.\n *\n * @param dest The object which will have properties copied to it.\n * @param sources The source objects from which properties will be copied.\n */\nexport function extendObject(dest: any, ...sources: any[]): any {\n  if (dest == null) {\n    throw TypeError('Cannot convert undefined or null to object');\n  }\n\n  for (const source of sources) {\n    if (source != null) {\n      for (const key in source) {\n        if (source.hasOwnProperty(key)) {\n          dest[key] = source[key];\n        }\n      }\n    }\n  }\n\n  return dest;\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ElementRef,\n  EmbeddedViewRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Inject,\n  OnInit,\n  Optional,\n  ViewChild,\n} from '@angular/core';\nimport { animate, animateChild, AnimationEvent, keyframes, style, transition, trigger } from '@angular/animations';\nimport { DOCUMENT } from '@angular/common';\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { DatepickerDialogConfig } from '../../classes/datepicker-dialog-config.class';\n\nconst zoomFadeIn = {\n  opacity: 0,\n  transform: 'translateX({{ x }}) translateY({{ y }}) scale({{scale}})',\n};\nconst zoomFadeInFrom = {\n  opacity: 0,\n  transform: 'translateX({{ x }}) translateY({{ y }}) scale({{scale}})',\n  transformOrigin: '{{ ox }} {{ oy }}',\n};\n\n@Component({\n  selector: 'rad-ui-datepicker-dialog-container',\n  templateUrl: './datepicker-dialog-container.component.html',\n  styleUrls: ['./datepicker-dialog-container.component.scss'],\n  animations: [\n    trigger('slideModal', [\n      transition(\n        'void => enter',\n        [\n          style(zoomFadeInFrom),\n          animate('300ms cubic-bezier(0.35, 0, 0.25, 1)', style('*')),\n          animate(\n            '150ms',\n            keyframes([\n              style({ transform: 'scale(1)', offset: 0 }),\n              style({ transform: 'scale(1.05)', offset: 0.3 }),\n              style({ transform: 'scale(.95)', offset: 0.8 }),\n              style({ transform: 'scale(1)', offset: 1.0 }),\n            ]),\n          ),\n          animateChild(),\n        ],\n        {\n          params: {\n            x: '0px',\n            y: '0px',\n            ox: '50%',\n            oy: '50%',\n            scale: 1,\n          },\n        },\n      ),\n      transition('enter => exit', [animateChild(), animate(200, style(zoomFadeIn))], {\n        params: { x: '0px', y: '0px', ox: '50%', oy: '50%' },\n      }),\n    ]),\n  ],\n})\nexport class DatepickerDialogContainerComponent extends BasePortalOutlet implements OnInit {\n  @ViewChild(CdkPortalOutlet, { static: true }) portalOutlet?: CdkPortalOutlet;\n\n  @HostBinding('class.datepicker-dialog-container') datepickerDialogContainerClass = true;\n  @HostBinding('attr.tabindex') datepickerDialogContainerTabIndex = -1;\n  @HostBinding('attr.id')\n  get datepickerDialogContainerId(): string {\n    return <string>this._config?.id;\n  }\n\n  @HostBinding('attr.role')\n  get datepickerDialogContainerRole(): string {\n    return this._config?.role || '';\n  }\n\n  @HostBinding('attr.aria-labelledby')\n  get datepickerDialogContainerAriaLabelledby(): string {\n    return <string>this.ariaLabelledBy;\n  }\n\n  @HostBinding('attr.aria-describedby')\n  get datepickerDialogContainerAriaDescribedby(): string {\n    return this._config?.ariaDescribedBy || '';\n  }\n\n  @HostBinding('@slideModal')\n  get datepickerDialogContainerAnimation(): any {\n    return { value: this.state, params: this.params };\n  }\n\n  /** The class that traps and manages focus within the dialog. */\n  private focusTrap?: FocusTrap;\n\n  /** ID of the element that should be considered as the dialog's label. */\n  public ariaLabelledBy: string | null = null;\n\n  /** Emits when an animation state changes. */\n  public animationStateChanged = new EventEmitter<AnimationEvent>();\n\n  public isAnimating = false;\n\n  private _config?: DatepickerDialogConfig;\n  get config(): DatepickerDialogConfig {\n    return <DatepickerDialogConfig>this._config;\n  }\n\n  private state: 'void' | 'enter' | 'exit' = 'enter';\n\n  // for animation purpose\n  private params: any = {\n    x: '0px',\n    y: '0px',\n    ox: '50%',\n    oy: '50%',\n    scale: 0,\n  };\n\n  // A variable to hold the focused element before the dialog was open.\n  // This would help us to refocus back to element when the dialog was closed.\n  private elementFocusedBeforeDialogWasOpened: HTMLElement | null = null;\n\n  constructor(\n    private changeDetector: ChangeDetectorRef,\n    private elementRef: ElementRef,\n    private focusTrapFactory: FocusTrapFactory,\n    @Optional()\n    @Inject(DOCUMENT)\n    private document: any,\n  ) {\n    super();\n  }\n\n  public ngOnInit() {}\n\n  /**\n   * Attach a ComponentPortal as content to this dialog container.\n   */\n  public attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n    if (this.portalOutlet?.hasAttached()) {\n      throw Error('Attempting to attach dialog content after content is already attached');\n    }\n\n    this.savePreviouslyFocusedElement();\n    return <ComponentRef<T>>this.portalOutlet?.attachComponentPortal(portal);\n  }\n\n  public attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n    throw new Error('Method not implemented.');\n  }\n\n  public setConfig(config: DatepickerDialogConfig): void {\n    this._config = config;\n\n    if (config.event) {\n      this.calculateZoomOrigin(event);\n    }\n  }\n\n  @HostListener('@slideModal.start', ['$event'])\n  public onAnimationStart(event: AnimationEvent): void {\n    this.isAnimating = true;\n    this.animationStateChanged.emit(event);\n  }\n\n  @HostListener('@slideModal.done', ['$event'])\n  public onAnimationDone(event: AnimationEvent): void {\n    if (event.toState === 'enter') {\n      this.trapFocus();\n    } else if (event.toState === 'exit') {\n      this.restoreFocus();\n    }\n\n    this.animationStateChanged.emit(event);\n    this.isAnimating = false;\n  }\n\n  public startExitAnimation() {\n    this.state = 'exit';\n    this.changeDetector.markForCheck();\n  }\n\n  /**\n   * Calculate origin used in the `zoomFadeInFrom()`\n   * for animation purpose\n   */\n  private calculateZoomOrigin(event: any): void {\n    if (!event) {\n      return;\n    }\n\n    const clientX = event.clientX;\n    const clientY = event.clientY;\n\n    const wh = window.innerWidth / 2;\n    const hh = window.innerHeight / 2;\n    const x = clientX - wh;\n    const y = clientY - hh;\n    const ox = clientX / window.innerWidth;\n    const oy = clientY / window.innerHeight;\n\n    this.params.x = `${x}px`;\n    this.params.y = `${y}px`;\n    this.params.ox = `${ox * 100}%`;\n    this.params.oy = `${oy * 100}%`;\n    this.params.scale = 0;\n\n    return;\n  }\n\n  /**\n   * Save the focused element before dialog was open\n   */\n  private savePreviouslyFocusedElement(): void {\n    if (this.document) {\n      this.elementFocusedBeforeDialogWasOpened = this.document.activeElement as HTMLElement;\n\n      Promise.resolve().then(() => this.elementRef.nativeElement.focus());\n    }\n  }\n\n  private trapFocus(): void {\n    if (!this.focusTrap) {\n      this.focusTrap = this.focusTrapFactory.create(this.elementRef.nativeElement);\n    }\n\n    if (this._config?.autoFocus) {\n      this.focusTrap.focusInitialElementWhenReady();\n    }\n  }\n\n  private restoreFocus(): void {\n    const toFocus = this.elementFocusedBeforeDialogWasOpened;\n\n    // We need the extra check, because IE can set the `activeElement` to null in some cases.\n    if (toFocus && typeof toFocus.focus === 'function') {\n      toFocus.focus();\n    }\n\n    if (this.focusTrap) {\n      this.focusTrap.destroy();\n    }\n  }\n}\n","<ng-template cdkPortalOutlet></ng-template>\n","import { ComponentRef, Inject, Injectable, InjectionToken, Injector, Optional, SkipSelf, TemplateRef } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { DatepickerDialogConfig } from '../classes/datepicker-dialog-config.class';\nimport { DatepickerDialogRef } from '../classes/datepicker-dialog-ref.class';\nimport { extendObject } from '../helpers/extend-object';\nimport { startWith } from 'rxjs/operators';\nimport { Overlay, OverlayConfig, OverlayContainer, OverlayRef, ScrollStrategy } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType, PortalInjector } from '@angular/cdk/portal';\nimport { Subject, defer } from 'rxjs';\nimport { DatepickerDialogContainerComponent } from '../components/dialog-container/datepicker-dialog-container.component';\n\nexport const DATEPICKER_DIALOG_DATA = new InjectionToken<any>('DatepickerDialogData');\n\n/**\n * Injection token that determines the scroll handling while the dialog is open.\n * */\nexport const DATEPICKER_DIALOG_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('datepicker-dialog-scroll-strategy');\n\nexport function DATEPICKER_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay: Overlay): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.block();\n}\n\nexport const DATEPICKER_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n  provide: DATEPICKER_DIALOG_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: DATEPICKER_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n/**\n * Injection token that can be used to specify default dialog options.\n * */\nexport const DATEPICKER_DIALOG_DEFAULT_OPTIONS = new InjectionToken<DatepickerDialogConfig>('datepicker-dialog-default-options');\n\n@Injectable()\nexport class DatepickerDialogService {\n  private ariaHiddenElements = new Map<Element, string | null>();\n\n  private _openDialogsAtThisLevel: DatepickerDialogRef<any>[] = [];\n  private _afterOpenAtThisLevel = new Subject<DatepickerDialogRef<any>>();\n  private _afterAllClosedAtThisLevel = new Subject<void>();\n\n  /** Keeps track of the currently-open dialogs. */\n  get openDialogs(): DatepickerDialogRef<any>[] {\n    return this.parentDialog ? this.parentDialog.openDialogs : this._openDialogsAtThisLevel;\n  }\n\n  /** Stream that emits when a dialog has been opened. */\n  get afterOpen(): Subject<DatepickerDialogRef<any>> {\n    return this.parentDialog ? this.parentDialog.afterOpen : this._afterOpenAtThisLevel;\n  }\n\n  get _afterAllClosed(): any {\n    const parent = this.parentDialog;\n    return parent ? parent._afterAllClosed : this._afterAllClosedAtThisLevel;\n  }\n\n  /**\n   * Stream that emits when all open dialog have finished closing.\n   * Will emit on subscribe if there are no open dialogs to begin with.\n   */\n\n  afterAllClosed = defer(() =>\n    this._openDialogsAtThisLevel.length ? this._afterAllClosed : this._afterAllClosed.pipe(startWith(undefined)),\n  );\n\n  private scrollStrategy: () => ScrollStrategy;\n\n  constructor(\n    private overlay: Overlay,\n    private injector: Injector,\n    @Optional() private location: Location,\n    @Inject(DATEPICKER_DIALOG_SCROLL_STRATEGY) scrollStrategy: any,\n    @Optional()\n    @Inject(DATEPICKER_DIALOG_DEFAULT_OPTIONS)\n    private defaultOptions: DatepickerDialogConfig,\n    @Optional()\n    @SkipSelf()\n    private parentDialog: DatepickerDialogService,\n    private overlayContainer: OverlayContainer,\n  ) {\n    this.scrollStrategy = scrollStrategy;\n    if (!parentDialog && location) {\n      location.subscribe(() => this.closeAll());\n    }\n  }\n\n  public open<T>(componentOrTemplateRef: ComponentType<T> | TemplateRef<T>, config?: DatepickerDialogConfig): DatepickerDialogRef<any> {\n    config = applyConfigDefaults(config, this.defaultOptions);\n\n    if (config.id && this.getDialogById(config.id)) {\n      throw Error(`Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`);\n    }\n\n    const overlayRef = this.createOverlay(config);\n    const dialogContainer = this.attachDialogContainer(overlayRef, config);\n    const dialogRef = this.attachDialogContent<T>(componentOrTemplateRef, dialogContainer, overlayRef, config);\n\n    if (!this.openDialogs.length) {\n      this.hideNonDialogContentFromAssistiveTechnology();\n    }\n\n    this.openDialogs.push(dialogRef);\n    dialogRef.afterClosed().subscribe(() => this.removeOpenDialog(dialogRef));\n    this.afterOpen.next(dialogRef);\n    return dialogRef;\n  }\n\n  /**\n   * Closes all of the currently-open dialogs.\n   */\n  public closeAll(): void {\n    let i = this.openDialogs.length;\n\n    while (i--) {\n      this.openDialogs[i].close();\n    }\n  }\n\n  /**\n   * Finds an open dialog by its id.\n   * @param id ID to use when looking up the dialog.\n   */\n  public getDialogById(id: string): DatepickerDialogRef<any> | undefined {\n    return this.openDialogs.find((dialog) => dialog.id === id);\n  }\n\n  private attachDialogContent<T>(\n    componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n    dialogContainer: DatepickerDialogContainerComponent,\n    overlayRef: OverlayRef,\n    config: DatepickerDialogConfig,\n  ) {\n    const dialogRef = new DatepickerDialogRef<T>(overlayRef, dialogContainer, <string>config.id, this.location);\n\n    if (config.hasBackdrop) {\n      overlayRef.backdropClick().subscribe(() => {\n        if (!dialogRef.disableClose) {\n          dialogRef.close();\n        }\n      });\n    }\n\n    if (componentOrTemplateRef instanceof TemplateRef) {\n    } else {\n      const injector = this.createInjector<T>(config, dialogRef, dialogContainer);\n      const contentRef = dialogContainer.attachComponentPortal(new ComponentPortal(componentOrTemplateRef, undefined, injector));\n      dialogRef.componentInstance = contentRef.instance;\n    }\n\n    dialogRef.updateSize(config.width, config.height).updatePosition(config.position);\n\n    return dialogRef;\n  }\n\n  private createInjector<T>(\n    config: DatepickerDialogConfig,\n    dialogRef: DatepickerDialogRef<T>,\n    dialogContainer: DatepickerDialogContainerComponent,\n  ) {\n    const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n    const injectionTokens = new WeakMap();\n\n    injectionTokens.set(DatepickerDialogRef, dialogRef);\n    injectionTokens.set(DatepickerDialogContainerComponent, dialogContainer);\n    injectionTokens.set(DATEPICKER_DIALOG_DATA, config.data);\n\n    return new PortalInjector(userInjector || this.injector, injectionTokens);\n  }\n\n  private createOverlay(config: DatepickerDialogConfig): OverlayRef {\n    const overlayConfig = this.getOverlayConfig(config);\n    return this.overlay.create(overlayConfig);\n  }\n\n  private attachDialogContainer(overlayRef: OverlayRef, config: DatepickerDialogConfig): DatepickerDialogContainerComponent {\n    const containerPortal = new ComponentPortal(DatepickerDialogContainerComponent, config.viewContainerRef);\n    const containerRef: ComponentRef<DatepickerDialogContainerComponent> = overlayRef.attach(containerPortal);\n    containerRef.instance.setConfig(config);\n\n    return containerRef.instance;\n  }\n\n  private getOverlayConfig(dialogConfig: DatepickerDialogConfig): OverlayConfig {\n    const state = new OverlayConfig({\n      positionStrategy: this.overlay.position().global(),\n      scrollStrategy: dialogConfig.scrollStrategy || this.scrollStrategy(),\n      panelClass: dialogConfig.paneClass,\n      hasBackdrop: dialogConfig.hasBackdrop,\n      minWidth: dialogConfig.minWidth,\n      minHeight: dialogConfig.minHeight,\n      maxWidth: dialogConfig.maxWidth,\n      maxHeight: dialogConfig.maxHeight,\n    });\n\n    if (dialogConfig.backdropClass) {\n      state.backdropClass = dialogConfig.backdropClass;\n    }\n\n    return state;\n  }\n\n  private removeOpenDialog(dialogRef: DatepickerDialogRef<any>): void {\n    const index = this._openDialogsAtThisLevel.indexOf(dialogRef);\n\n    if (index > -1) {\n      this.openDialogs.splice(index, 1);\n      // If all the dialogs were closed, remove/restore the `aria-hidden`\n      // to a the siblings and emit to the `afterAllClosed` stream.\n      if (!this.openDialogs.length) {\n        this.ariaHiddenElements.forEach((previousValue, element) => {\n          if (previousValue) {\n            element.setAttribute('aria-hidden', previousValue);\n          } else {\n            element.removeAttribute('aria-hidden');\n          }\n        });\n\n        this.ariaHiddenElements.clear();\n        this._afterAllClosed.next();\n      }\n    }\n  }\n\n  /**\n   * Hides all of the content that isn't an overlay from assistive technology.\n   */\n  private hideNonDialogContentFromAssistiveTechnology() {\n    const overlayContainer = this.overlayContainer.getContainerElement();\n\n    // Ensure that the overlay container is attached to the DOM.\n    if (overlayContainer.parentElement) {\n      const siblings = overlayContainer.parentElement.children;\n\n      for (let i = siblings.length - 1; i > -1; i--) {\n        const sibling = siblings[i];\n\n        if (\n          sibling !== overlayContainer &&\n          sibling.nodeName !== 'SCRIPT' &&\n          sibling.nodeName !== 'STYLE' &&\n          !sibling.hasAttribute('aria-live')\n        ) {\n          this.ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));\n          sibling.setAttribute('aria-hidden', 'true');\n        }\n      }\n    }\n  }\n}\n\n/**\n * Applies default options to the dialog config.\n * @param config Config to be modified.\n * @param defaultOptions Default config setting\n * @returns The new configuration object.\n */\nfunction applyConfigDefaults(config?: DatepickerDialogConfig, defaultOptions?: DatepickerDialogConfig): DatepickerDialogConfig {\n  return extendObject(new DatepickerDialogConfig(), config, defaultOptions);\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface DatepickerDateTimeFormats {\n  parseInput: any;\n  fullPickerInput: any;\n  datePickerInput: any;\n  timePickerInput: any;\n  monthYearLabel: any;\n  dateA11yLabel: any;\n  monthYearA11yLabel: any;\n}\n\n/** InjectionToken for date time picker that can be used to override default format. */\nexport const DATEPICKER_DATE_TIME_FORMATS = new InjectionToken<DatepickerDateTimeFormats>('DATEPICKER_DATE_TIME_FORMATS');\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class DatepickerDateTimePickerIntlService {\n  /**\n   * Stream that emits whenever the labels here are changed. Use this to notify\n   * components if the labels have changed after initialization.\n   */\n  readonly changes: Subject<void> = new Subject<void>();\n\n  /** A label for the up second button (used by screen readers).  */\n  upSecondLabel = 'Add a second';\n\n  /** A label for the down second button (used by screen readers).  */\n  downSecondLabel = 'Minus a second';\n\n  /** A label for the up minute button (used by screen readers).  */\n  upMinuteLabel = 'Add a minute';\n\n  /** A label for the down minute button (used by screen readers).  */\n  downMinuteLabel = 'Minus a minute';\n\n  /** A label for the up hour button (used by screen readers).  */\n  upHourLabel = 'Add a hour';\n\n  /** A label for the down hour button (used by screen readers).  */\n  downHourLabel = 'Minus a hour';\n\n  /** A label for the previous month button (used by screen readers). */\n  prevMonthLabel = 'Previous month';\n\n  /** A label for the next month button (used by screen readers). */\n  nextMonthLabel = 'Next month';\n\n  /** A label for the previous year button (used by screen readers). */\n  prevYearLabel = 'Previous year';\n\n  /** A label for the next year button (used by screen readers). */\n  nextYearLabel = 'Next year';\n\n  /** A label for the previous multi-year button (used by screen readers). */\n  prevMultiYearLabel = 'Previous 21 years';\n\n  /** A label for the next multi-year button (used by screen readers). */\n  nextMultiYearLabel = 'Next 21 years';\n\n  /** A label for the 'switch to month view' button (used by screen readers). */\n  switchToMonthViewLabel = 'Change to month view';\n\n  /** A label for the 'switch to year view' button (used by screen readers). */\n  switchToMultiYearViewLabel = 'Choose month and year';\n\n  /** A label for the cancel button */\n  cancelBtnLabel = 'Cancel';\n\n  /** A label for the set button */\n  setBtnLabel = 'Set';\n\n  /** A label for the range 'from' in picker info */\n  rangeFromLabel = 'From';\n\n  /** A label for the range 'to' in picker info */\n  rangeToLabel = 'To';\n\n  /** A label for the hour12 button (AM) */\n  hour12AMLabel = 'AM';\n\n  /** A label for the hour12 button (PM) */\n  hour12PMLabel = 'PM';\n}\n","import { InjectionToken, LOCALE_ID } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Observable } from 'rxjs';\n\n/** InjectionToken for date time picker that can be used to override default locale code. */\nexport const DATEPICKER_DATE_TIME_LOCALE = new InjectionToken<string>('DATEPICKER_DATE_TIME_LOCALE');\n\n/** Provider for DATEPICKER_DATE_TIME_LOCALE injection token. */\nexport const DATEPICKER_DATE_TIME_LOCALE_PROVIDER = {\n  provide: DATEPICKER_DATE_TIME_LOCALE,\n  useExisting: LOCALE_ID,\n};\n\nexport abstract class DatepickerDateTimeAdapter<T> {\n  /** The locale to use for all dates. */\n  protected locale: any;\n\n  /** A stream that emits when the locale changes. */\n  protected _localeChanges = new Subject<void>();\n  get localeChanges(): Observable<void> {\n    return this._localeChanges;\n  }\n\n  /** total milliseconds in a day. */\n  protected readonly millisecondsInDay = 86400000;\n\n  /** total milliseconds in a minute. */\n  protected readonly milliseondsInMinute = 60000;\n\n  /**\n   * Get the year of the given date\n   */\n  abstract getYear(date: T): number;\n\n  /**\n   * Get the month of the given date\n   * 0 -- January\n   * 11 -- December\n   * */\n  abstract getMonth(date: T): number;\n\n  /**\n   * Get the day of the week of the given date\n   * 0 -- Sunday\n   * 6 -- Saturday\n   * */\n  abstract getDay(date: T): number;\n\n  /**\n   * Get the day num of the given date\n   */\n  abstract getDate(date: T): number;\n\n  /**\n   * Get the hours of the given date\n   */\n  abstract getHours(date: T| null): number;\n\n  /**\n   * Get the minutes of the given date\n   */\n  abstract getMinutes(date: T | null): number;\n\n  /**\n   * Get the seconds of the given date\n   */\n  abstract getSeconds(date: T | null): number;\n\n  /**\n   * Get the milliseconds timestamp of the given date\n   */\n  abstract getTime(date: T): number;\n\n  /**\n   * Gets the number of days in the month of the given date.\n   */\n  abstract getNumDaysInMonth(date: T): number;\n\n  /**\n   * Get the number of calendar days between the given dates.\n   * If dateLeft is before dateRight, it would return positive value\n   * If dateLeft is after dateRight, it would return negative value\n   */\n  abstract differenceInCalendarDays(dateLeft: T, dateRight: T): number;\n\n  /**\n   * Gets the name for the year of the given date.\n   */\n  abstract getYearName(date: T): string;\n\n  /**\n   * Get a list of month names\n   */\n  abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n  /**\n   * Get a list of week names\n   */\n  abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n  /**\n   * Gets a list of names for the dates of the month.\n   */\n  abstract getDateNames(): string[];\n\n  /**\n   * Return a Date object as a string, using the ISO standard\n   */\n  abstract toIso8601(date: T): string;\n\n  /**\n   * Check if the give dates are equal\n   */\n  abstract isEqual(dateLeft: T, dateRight: T): boolean;\n\n  /**\n   * Check if the give dates are the same day\n   */\n  abstract isSameDay(dateLeft: T, dateRight: T): boolean;\n\n  /**\n   * Checks whether the given date is valid.\n   */\n  abstract isValid(date: T): boolean;\n\n  /**\n   * Gets date instance that is not valid.\n   */\n  abstract invalid(): T;\n\n  /**\n   * Checks whether the given object is considered a date instance by this DateTimeAdapter.\n   */\n  abstract isDateInstance(obj: any): boolean;\n\n  /**\n   * Add the specified number of years to the given date\n   */\n  abstract addCalendarYears(date: T, amount: number): T;\n\n  /**\n   * Add the specified number of months to the given date\n   */\n  abstract addCalendarMonths(date: T, amount: number): T;\n\n  /**\n   * Add the specified number of days to the given date\n   */\n  abstract addCalendarDays(date: T, amount: number): T;\n\n  /**\n   * Set the hours to the given date.\n   */\n  abstract setHours(date: T, amount: number): T;\n\n  /**\n   * Set the minutes to the given date.\n   */\n  abstract setMinutes(date: T, amount: number): T;\n\n  /**\n   * Set the seconds to the given date.\n   */\n  abstract setSeconds(date: T, amount: number): T;\n\n  /**\n   * Creates a date with the given year, month, date, hour, minute and second. Does not allow over/under-flow of the\n   * month and date.\n   */\n  abstract createDate(year: number, month: number, date: number): T;\n  abstract createDate(year: number, month: number, date: number, hours: number, minutes: number, seconds: number): T;\n\n  /**\n   * Clone the given date\n   */\n  abstract clone(date: T): T;\n\n  /**\n   * Get a new moment\n   * */\n  abstract now(): T;\n\n  /**\n   * Formats a date as a string according to the given format.\n   */\n  abstract format(date: T, displayFormat: any): string;\n\n  /**\n   * Parse a user-provided value to a Date Object\n   */\n  abstract parse(value: any, parseFormat: any): T | null;\n\n  /**\n   * Compare two given dates\n   * 1 if the first date is after the second,\n   * -1 if the first date is before the second\n   * 0 if dates are equal.\n   * */\n  compare(first: T, second: T): number {\n    if (!this.isValid(first) || !this.isValid(second)) {\n      throw Error('JSNativeDate: Cannot compare invalid dates.');\n    }\n\n    const dateFirst = this.clone(first);\n    const dateSecond = this.clone(second);\n\n    const diff = this.getTime(dateFirst) - this.getTime(dateSecond);\n\n    if (diff < 0) {\n      return -1;\n    } else if (diff > 0) {\n      return 1;\n    } else {\n      // Return 0 if diff is 0; return NaN if diff is NaN\n      return diff;\n    }\n  }\n\n  /**\n   * Check if two given dates are in the same year\n   * 1 if the first date's year is after the second,\n   * -1 if the first date's year is before the second\n   * 0 if two given dates are in the same year\n   * */\n  compareYear(first: T, second: T): number {\n    if (!this.isValid(first) || !this.isValid(second)) {\n      throw Error('JSNativeDate: Cannot compare invalid dates.');\n    }\n\n    const yearLeft = this.getYear(first);\n    const yearRight = this.getYear(second);\n\n    const diff = yearLeft - yearRight;\n\n    if (diff < 0) {\n      return -1;\n    } else if (diff > 0) {\n      return 1;\n    } else {\n      return 0;\n    }\n  }\n\n  /**\n   * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n   * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n   * string). The default implementation does not allow any deserialization, it simply checks that\n   * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n   * method on all of it's `@Input()` properties that accept dates. It is therefore possible to\n   * support passing values from your backend directly to these properties by overriding this method\n   * to also deserialize the format used by your backend.\n   */\n  deserialize(value: any): T | null {\n    if (value == null || (this.isDateInstance(value) && this.isValid(value))) {\n      return value;\n    }\n    return this.invalid();\n  }\n\n  /**\n   * Sets the locale used for all dates.\n   */\n  setLocale(locale: any) {\n    this.locale = locale;\n    this._localeChanges.next();\n  }\n\n  /**\n   * Clamp the given date between min and max dates.\n   */\n  clampDate(date: T, min?: T | null, max?: T | null): T {\n    if (min && this.compare(date, min) < 0) {\n      return min;\n    }\n    if (max && this.compare(date, max) > 0) {\n      return max;\n    }\n    return date;\n  }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, OnInit, Output } from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { SelectMode } from '../../classes/datepicker-date-time.class';\n\nexport class CalendarCell {\n  constructor(\n    public value: number,\n    public displayValue: string,\n    public ariaLabel: string,\n    public enabled: boolean,\n    public out: boolean = false,\n    public cellClass: string = '',\n  ) {}\n}\n\n@Component({\n  selector: '[rad-ui-datepicker-calendar-body]',\n  templateUrl: './datepicker-calendar-body.component.html',\n  styleUrls: ['./datepicker-calendar-body.component.scss'],\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatepickerCalendarBodyComponent implements OnInit {\n  /**\n   * The cell number of the active cell in the table.\n   */\n  @Input()\n  activeCell = 0;\n\n  /**\n   * The cells to display in the table.\n   * */\n  @Input()\n  rows: CalendarCell[][] = [];\n\n  /**\n   * The number of columns in the table.\n   * */\n  @Input()\n  numCols = 7;\n\n  /**\n   * The ratio (width / height) to use for the cells in the table.\n   */\n  @Input()\n  cellRatio = 1;\n\n  /**\n   * The value in the table that corresponds to today.\n   * */\n  @Input()\n  todayValue?: number;\n\n  /**\n   * The value in the table that is currently selected.\n   * */\n  @Input()\n  selectedValues: number[] = [];\n\n  /**\n   * Current picker select mode\n   */\n  @Input()\n  selectMode?: SelectMode;\n\n  /**\n   * Emit when a calendar cell is selected\n   * */\n  @Output()\n  public readonly select = new EventEmitter<CalendarCell>();\n\n  @HostBinding('class.datepicker-dt-calendar-body')\n  get datepickerDTCalendarBodyClass(): boolean {\n    return true;\n  }\n\n  get isInSingleMode(): boolean {\n    return this.selectMode === 'single';\n  }\n\n  get isInRangeMode(): boolean {\n    return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n  }\n\n  constructor(private elmRef: ElementRef, private ngZone: NgZone) {}\n\n  public ngOnInit() {}\n\n  public selectCell(cell: CalendarCell): void {\n    this.select.emit(cell);\n  }\n\n  public isActiveCell(rowIndex: number, colIndex: number): boolean {\n    const cellNumber = rowIndex * this.numCols + colIndex;\n    return cellNumber === this.activeCell;\n  }\n\n  /**\n   * Check if the cell is selected\n   */\n  public isSelected(value: number): boolean {\n    if (!this.selectedValues || this.selectedValues.length === 0) {\n      return false;\n    }\n\n    if (this.isInSingleMode) {\n      return value === this.selectedValues[0];\n    }\n\n    if (this.isInRangeMode) {\n      const fromValue = this.selectedValues[0];\n      const toValue = this.selectedValues[1];\n\n      return value === fromValue || value === toValue;\n    }\n    return false;\n  }\n\n  /**\n   * Check if the cell in the range\n   * */\n  public isInRange(value: number): boolean {\n    if (this.isInRangeMode) {\n      const fromValue = this.selectedValues[0];\n      const toValue = this.selectedValues[1];\n\n      if (fromValue !== null && toValue !== null) {\n        return value >= fromValue && value <= toValue;\n      } else {\n        return value === fromValue || value === toValue;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Check if the cell is the range from\n   * */\n  public isRangeFrom(value: number): boolean {\n    if (this.isInRangeMode) {\n      const fromValue = this.selectedValues[0];\n      return fromValue !== null && value === fromValue;\n    }\n    return false;\n  }\n\n  /**\n   * Check if the cell is the range to\n   * */\n  public isRangeTo(value: number): boolean {\n    if (this.isInRangeMode) {\n      const toValue = this.selectedValues[1];\n      return toValue !== null && value === toValue;\n    }\n    return false;\n  }\n\n  /**\n   * Focus to a active cell\n   * */\n  public focusActiveCell(): void {\n    this.ngZone.runOutsideAngular(() => {\n      this.ngZone.onStable\n        .asObservable()\n        .pipe(take(1))\n        .subscribe(() => {\n          this.elmRef.nativeElement.querySelector('.datepicker-dt-calendar-cell-active').focus();\n        });\n    });\n  }\n}\n","<tr *ngFor=\"let row of rows; let rowIndex = index\" role=\"row\">\n  <td\n    *ngFor=\"let item of row; let colIndex = index\"\n    class=\"datepicker-dt-calendar-cell {{ item.cellClass }}\"\n    [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n    [class.datepicker-dt-calendar-cell-active]=\"isActiveCell(rowIndex, colIndex)\"\n    [class.datepicker-dt-calendar-cell-disabled]=\"!item.enabled\"\n    [class.datepicker-dt-calendar-cell-in-range]=\"isInRange(item.value)\"\n    [class.datepicker-dt-calendar-cell-range-from]=\"isRangeFrom(item.value)\"\n    [class.datepicker-dt-calendar-cell-range-to]=\"isRangeTo(item.value)\"\n    [attr.aria-label]=\"item.ariaLabel\"\n    [attr.aria-disabled]=\"!item.enabled || null\"\n    [style.width.%]=\"100 / numCols\"\n    [style.paddingTop.%]=\"(50 * cellRatio) / numCols\"\n    [style.paddingBottom.%]=\"(50 * cellRatio) / numCols\"\n    (click)=\"selectCell(item)\"\n  >\n    <span\n      class=\"datepicker-dt-calendar-cell-content\"\n      [ngClass]=\"{\n        'datepicker-dt-calendar-cell-out': item.out,\n        'datepicker-dt-calendar-cell-in': !item.out,\n        'datepicker-dt-calendar-cell-today': item.value === todayValue,\n        'datepicker-dt-calendar-cell-selected': isSelected(item.value)\n      }\"\n    >\n      {{ item.displayValue }}\n    </span>\n  </td>\n</tr>\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  HostBinding,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { DOWN_ARROW, END, ENTER, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { SelectMode } from '../../classes/datepicker-date-time.class';\nimport { CalendarCell, DatepickerCalendarBodyComponent } from '../calendar-body/datepicker-calendar-body.component';\nimport { Subscription } from 'rxjs';\nimport { DatepickerDateTimeAdapter } from '../../adapters/datepicker-date-time.adapter';\nimport { DATEPICKER_DATE_TIME_FORMATS, DatepickerDateTimeFormats } from '../../classes/datepicker-date-time-format.class';\n\nconst DAYS_PER_WEEK = 7;\nconst WEEKS_PER_VIEW = 6;\n\n@Component({\n  selector: 'rad-ui-datepicker-calendar-month-view',\n  templateUrl: './datepicker-calendar-month-view.component.html',\n  styleUrls: ['./datepicker-calendar-month-view.component.scss'],\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatepickerCalendarMonthViewComponent<T> implements OnInit, AfterContentInit, OnDestroy {\n  /**\n   * Whether to hide dates in other months at the start or end of the current month.\n   * */\n  @Input() hideOtherMonths = false;\n\n  /**\n   * Define the first day of a week\n   * Sunday: 0 ~ Saturday: 6\n   * */\n  private _firstDayOfWeek = 0;\n  @Input()\n  get firstDayOfWeek(): number {\n    return this._firstDayOfWeek;\n  }\n\n  set firstDayOfWeek(val: number) {\n    val = coerceNumberProperty(val);\n    if (val >= 0 && val <= 6 && val !== this._firstDayOfWeek) {\n      this._firstDayOfWeek = val;\n\n      if (this.initiated) {\n        this.generateWeekDays();\n        this.generateCalendar();\n        this.cdRef.markForCheck();\n      }\n    }\n  }\n\n  /**\n   * The select mode of the picker;\n   * */\n  private _selectMode: SelectMode = 'single';\n  @Input()\n  get selectMode(): SelectMode {\n    return this._selectMode;\n  }\n\n  set selectMode(val: SelectMode) {\n    this._selectMode = val;\n    if (this.initiated) {\n      this.generateCalendar();\n      this.cdRef.markForCheck();\n    }\n  }\n\n  /** The currently selected date. */\n  private _selected: T | null = null;\n  @Input()\n  get selected(): T | null {\n    return this._selected;\n  }\n\n  set selected(value: T | null) {\n    const oldSelected = this._selected;\n    value = this.dateTimeAdapter.deserialize(value);\n    this._selected = this.getValidDate(value);\n\n    if (!this.dateTimeAdapter.isSameDay(<T>oldSelected, <T>this._selected)) {\n      this.setSelectedDates();\n    }\n  }\n\n  private _selecteds: T[] = [];\n  @Input()\n  get selecteds(): T[] {\n    return this._selecteds;\n  }\n\n  set selecteds(values: T[]) {\n    this._selecteds = <T[]>values.map((v) => {\n      v = <T>this.dateTimeAdapter.deserialize(v);\n      return this.getValidDate(v);\n    });\n    this.setSelectedDates();\n  }\n\n  private _pickerMoment?: T;\n  @Input()\n  get pickerMoment() {\n    return <T>this._pickerMoment;\n  }\n\n  set pickerMoment(value: T) {\n    const oldMoment = this._pickerMoment;\n    value = <T>this.dateTimeAdapter.deserialize(value);\n    this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n    this.firstDateOfMonth = this.dateTimeAdapter.createDate(\n      this.dateTimeAdapter.getYear(this._pickerMoment),\n      this.dateTimeAdapter.getMonth(this._pickerMoment),\n      1,\n    );\n\n    if (!this.isSameMonth(<T>oldMoment, this._pickerMoment) && this.initiated) {\n      this.generateCalendar();\n    }\n  }\n\n  /**\n   * A function used to filter which dates are selectable\n   * */\n  private _dateFilter: (date: T) => boolean = () => true;\n  @Input()\n  get dateFilter() {\n    return this._dateFilter;\n  }\n\n  set dateFilter(filter: (date: T) => boolean) {\n    this._dateFilter = filter;\n    if (this.initiated) {\n      this.generateCalendar();\n      this.cdRef.markForCheck();\n    }\n  }\n\n  /** The minimum selectable date. */\n  private _minDate: T | null = null;\n  @Input()\n  get minDate(): T | null {\n    return this._minDate;\n  }\n\n  set minDate(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._minDate = this.getValidDate(value);\n    if (this.initiated) {\n      this.generateCalendar();\n      this.cdRef.markForCheck();\n    }\n  }\n\n  /** The maximum selectable date. */\n  private _maxDate: T | null = null;\n  @Input()\n  get maxDate(): T | null {\n    return this._maxDate;\n  }\n\n  set maxDate(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._maxDate = this.getValidDate(value);\n\n    if (this.initiated) {\n      this.generateCalendar();\n      this.cdRef.markForCheck();\n    }\n  }\n\n  private _weekdays: Array<{ long: string; short: string; narrow: string }> = [];\n  get weekdays() {\n    return this._weekdays;\n  }\n\n  private _days: CalendarCell[][] = [];\n  get days() {\n    return this._days;\n  }\n\n  get activeCell(): number {\n    if (this.pickerMoment) {\n      return this.dateTimeAdapter.getDate(this.pickerMoment) + <number>this.firstRowOffset - 1;\n    }\n    return 0;\n  }\n\n  get isInSingleMode(): boolean {\n    return this.selectMode === 'single';\n  }\n\n  get isInRangeMode(): boolean {\n    return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n  }\n\n  private firstDateOfMonth?: T;\n\n  private localeSub: Subscription = Subscription.EMPTY;\n\n  private initiated = false;\n\n  private dateNames: string[] = [];\n\n  /**\n   * The date of the month that today falls on.\n   * */\n  public todayDate?: number;\n\n  /**\n   * An array to hold all selectedDates' value\n   * the value is the day number in current month\n   * */\n  public selectedDates: number[] = [];\n\n  // the index of cell that contains the first date of the month\n  public firstRowOffset?: number;\n\n  /**\n   * Callback to invoke when a new date is selected\n   * */\n  @Output()\n  readonly selectedChange = new EventEmitter<T | null>();\n\n  /**\n   * Callback to invoke when any date is selected.\n   * */\n  @Output()\n  readonly userSelection = new EventEmitter<void>();\n\n  /** Emits when any date is activated. */\n  @Output()\n  readonly pickerMomentChange: EventEmitter<T> = new EventEmitter<T>();\n\n  /** The body of calendar table */\n  @ViewChild(DatepickerCalendarBodyComponent, { static: true }) calendarBodyElm?: DatepickerCalendarBodyComponent;\n\n  @HostBinding('class.datepicker-dt-calendar-view')\n  get datepickerDTCalendarView(): boolean {\n    return true;\n  }\n\n  constructor(\n    private cdRef: ChangeDetectorRef,\n    @Optional() private dateTimeAdapter: DatepickerDateTimeAdapter<T>,\n    @Optional()\n    @Inject(DATEPICKER_DATE_TIME_FORMATS)\n    private dateTimeFormats: DatepickerDateTimeFormats,\n  ) {}\n\n  public ngOnInit() {\n    this.generateWeekDays();\n\n    this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n      this.generateWeekDays();\n      this.generateCalendar();\n      this.cdRef.markForCheck();\n    });\n  }\n\n  public ngAfterContentInit(): void {\n    this.generateCalendar();\n    this.initiated = true;\n  }\n\n  public ngOnDestroy(): void {\n    this.localeSub.unsubscribe();\n  }\n\n  /**\n   * Handle a calendarCell selected\n   */\n  public selectCalendarCell(cell: CalendarCell): void {\n    // Cases in which the date would not be selected\n    // 1, the calendar cell is NOT enabled (is NOT valid)\n    // 2, the selected date is NOT in current picker's month and the hideOtherMonths is enabled\n    if (!cell.enabled || (this.hideOtherMonths && cell.out)) {\n      return;\n    }\n\n    this.selectDate(cell.value);\n  }\n\n  /**\n   * Handle a new date selected\n   */\n  private selectDate(date: number): void {\n    const daysDiff = date - 1;\n    const selected = this.dateTimeAdapter.addCalendarDays(<T>this.firstDateOfMonth, daysDiff);\n\n    this.selectedChange.emit(selected);\n    this.userSelection.emit();\n  }\n\n  /**\n   * Handle keydown event on calendar body\n   */\n  public handleCalendarKeydown(event: KeyboardEvent): void {\n    let moment;\n    switch (event.keyCode) {\n      // minus 1 day\n      case LEFT_ARROW:\n        moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, -1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // add 1 day\n      case RIGHT_ARROW:\n        moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, 1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // minus 1 week\n      case UP_ARROW:\n        moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, -7);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // add 1 week\n      case DOWN_ARROW:\n        moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, 7);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // move to first day of current month\n      case HOME:\n        moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, 1 - this.dateTimeAdapter.getDate(this.pickerMoment));\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // move to last day of current month\n      case END:\n        moment = this.dateTimeAdapter.addCalendarDays(\n          this.pickerMoment,\n          this.dateTimeAdapter.getNumDaysInMonth(this.pickerMoment) - this.dateTimeAdapter.getDate(this.pickerMoment),\n        );\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // minus 1 month (or 1 year)\n      case PAGE_UP:\n        moment = event.altKey\n          ? this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1)\n          : this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // add 1 month (or 1 year)\n      case PAGE_DOWN:\n        moment = event.altKey\n          ? this.dateTimeAdapter.addCalendarYears(this.pickerMoment, 1)\n          : this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // select the pickerMoment\n      case ENTER:\n        if (!this.dateFilter || this.dateFilter(this.pickerMoment)) {\n          this.selectDate(this.dateTimeAdapter.getDate(this.pickerMoment));\n        }\n        break;\n      default:\n        return;\n    }\n\n    this.focusActiveCell();\n    event.preventDefault();\n  }\n\n  /**\n   * Generate the calendar weekdays array\n   * */\n  private generateWeekDays(): void {\n    const longWeekdays = this.dateTimeAdapter.getDayOfWeekNames('long');\n    const shortWeekdays = this.dateTimeAdapter.getDayOfWeekNames('short');\n    const narrowWeekdays = this.dateTimeAdapter.getDayOfWeekNames('narrow');\n    const firstDayOfWeek = this.firstDayOfWeek;\n\n    const weekdays = longWeekdays.map((long, i) => {\n      return { long, short: shortWeekdays[i], narrow: narrowWeekdays[i] };\n    });\n\n    this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\n\n    this.dateNames = this.dateTimeAdapter.getDateNames();\n\n    return;\n  }\n\n  /**\n   * Generate the calendar days array\n   * */\n  private generateCalendar(): void {\n    if (!this.pickerMoment) {\n      return;\n    }\n\n    this.todayDate = undefined;\n\n    // the first weekday of the month\n    const startWeekdayOfMonth = this.dateTimeAdapter.getDay(<T>this.firstDateOfMonth);\n    const firstDayOfWeek = this.firstDayOfWeek;\n\n    // the amount of days from the first date of the month\n    // if it is < 0, it means the date is in previous month\n    let daysDiff = 0 - ((startWeekdayOfMonth + (DAYS_PER_WEEK - firstDayOfWeek)) % DAYS_PER_WEEK);\n\n    // the index of cell that contains the first date of the month\n    this.firstRowOffset = Math.abs(daysDiff);\n\n    this._days = [];\n    for (let i = 0; i < WEEKS_PER_VIEW; i++) {\n      const week: CalendarCell[] = [];\n      for (let j = 0; j < DAYS_PER_WEEK; j++) {\n        const date = this.dateTimeAdapter.addCalendarDays(<T>this.firstDateOfMonth, daysDiff);\n        const dateCell = this.createDateCell(date, daysDiff);\n\n        // check if the date is today\n        if (this.dateTimeAdapter.isSameDay(this.dateTimeAdapter.now(), date)) {\n          this.todayDate = daysDiff + 1;\n        }\n\n        week.push(dateCell);\n        daysDiff += 1;\n      }\n      this._days.push(week);\n    }\n\n    this.setSelectedDates();\n  }\n\n  /**\n   * Creates CalendarCell for days.\n   */\n  private createDateCell(date: T, daysDiff: number): CalendarCell {\n    // total days of the month\n    const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(this.pickerMoment);\n    const dateNum = this.dateTimeAdapter.getDate(date);\n    // const dateName = this.dateNames[dateNum - 1];\n    const dateName = dateNum.toString();\n    const ariaLabel = this.dateTimeAdapter.format(date, this.dateTimeFormats.dateA11yLabel);\n\n    // check if the date if selectable\n    const enabled = this.isDateEnabled(date);\n\n    // check if date is not in current month\n    const dayValue = daysDiff + 1;\n    const out = dayValue < 1 || dayValue > daysInMonth;\n    const cellClass = 'datepicker-dt-day-' + this.dateTimeAdapter.getDay(date);\n\n    return new CalendarCell(dayValue, dateName, ariaLabel, enabled, out, cellClass);\n  }\n\n  /**\n   * Check if the date is valid\n   */\n  private isDateEnabled(date: T): boolean {\n    return (\n      !!date &&\n      (!this.dateFilter || this.dateFilter(date)) &&\n      (!this.minDate || this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n      (!this.maxDate || this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n    );\n  }\n\n  /**\n   * Get a valid date object\n   */\n  private getValidDate(obj: any): T | null {\n    return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n  }\n\n  /**\n   * Check if the give dates are none-null and in the same month\n   */\n  public isSameMonth(dateLeft: T, dateRight: T): boolean {\n    return !!(\n      dateLeft &&\n      dateRight &&\n      this.dateTimeAdapter.isValid(dateLeft) &&\n      this.dateTimeAdapter.isValid(dateRight) &&\n      this.dateTimeAdapter.getYear(dateLeft) === this.dateTimeAdapter.getYear(dateRight) &&\n      this.dateTimeAdapter.getMonth(dateLeft) === this.dateTimeAdapter.getMonth(dateRight)\n    );\n  }\n\n  /**\n   * Set the selectedDates value.\n   * In single mode, it has only one value which represent the selected date\n   * In range mode, it would has two values, one for the fromValue and the other for the toValue\n   * */\n  private setSelectedDates(): void {\n    this.selectedDates = [];\n\n    if (!this.firstDateOfMonth) {\n      return;\n    }\n\n    if (this.isInSingleMode && this.selected) {\n      const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(this.selected, this.firstDateOfMonth);\n      this.selectedDates[0] = dayDiff + 1;\n      return;\n    }\n\n    if (this.isInRangeMode && this.selecteds) {\n      this.selectedDates = <number[]>this.selecteds.map((selected) => {\n        if (this.dateTimeAdapter.isValid(selected)) {\n          const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(selected, <T>this.firstDateOfMonth);\n          return dayDiff + 1;\n        } else {\n          return null;\n        }\n      });\n    }\n  }\n\n  private focusActiveCell() {\n    this.calendarBodyElm?.focusActiveCell();\n  }\n}\n","<table\n  class=\"datepicker-dt-calendar-table datepicker-dt-calendar-month-table\"\n  [class.datepicker-dt-calendar-only-current-month]=\"hideOtherMonths\"\n>\n  <thead class=\"datepicker-dt-calendar-header\">\n    <tr class=\"datepicker-dt-weekdays\">\n      <th *ngFor=\"let weekday of weekdays\" [attr.aria-label]=\"weekday.long\" class=\"datepicker-dt-weekday\" scope=\"col\">\n        <span>{{ weekday.short }}</span>\n      </th>\n    </tr>\n    <tr>\n      <th class=\"datepicker-dt-calendar-table-divider\" aria-hidden=\"true\" colspan=\"7\"></th>\n    </tr>\n  </thead>\n  <tbody\n    rad-ui-datepicker-calendar-body\n    role=\"grid\"\n    [rows]=\"days\"\n    [todayValue]=\"todayDate\"\n    [selectedValues]=\"selectedDates\"\n    [selectMode]=\"selectMode\"\n    [activeCell]=\"activeCell\"\n    (keydown)=\"handleCalendarKeydown($event)\"\n    (select)=\"selectCalendarCell($event)\"\n  ></tbody>\n</table>\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnInit,\n  Optional,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { DOWN_ARROW, END, ENTER, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { SelectMode } from '../../classes/datepicker-date-time.class';\nimport { CalendarCell, DatepickerCalendarBodyComponent } from '../calendar-body/datepicker-calendar-body.component';\nimport { DatepickerDateTimeAdapter } from '../../adapters/datepicker-date-time.adapter';\nimport { DatepickerDateTimePickerIntlService } from '../../services/datepicker-date-time-picker-intl.service';\n\nexport const YEARS_PER_ROW = 3;\nexport const YEAR_ROWS = 7;\n\n@Component({\n  selector: 'rad-ui-datepicker-calendar-multi-year-view',\n  templateUrl: './datepicker-calendar-multi-year-view.component.html',\n  styleUrls: ['./datepicker-calendar-multi-year-view.component.scss'],\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatepickerCalendarMultiYearViewComponent<T> implements OnInit, AfterContentInit {\n  /**\n   * The select mode of the picker;\n   * */\n  private _selectMode: SelectMode = 'single';\n  @Input()\n  get selectMode(): SelectMode {\n    return this._selectMode;\n  }\n\n  set selectMode(val: SelectMode) {\n    this._selectMode = val;\n    if (this.initiated) {\n      this.setSelectedYears();\n      this.cdRef.markForCheck();\n    }\n  }\n\n  /** The currently selected date. */\n  private _selected: T | null = null;\n  @Input()\n  get selected(): T | null {\n    return this._selected;\n  }\n\n  set selected(value: T | null) {\n    const oldSelected = <T>this._selected;\n    value = this.dateTimeAdapter.deserialize(value);\n    this._selected = this.getValidDate(value);\n\n    if (!this.dateTimeAdapter.isSameDay(oldSelected, <T>this._selected)) {\n      this.setSelectedYears();\n    }\n  }\n\n  private _selecteds: T[] = [];\n  @Input()\n  get selecteds(): T[] {\n    return this._selecteds;\n  }\n\n  set selecteds(values: T[]) {\n    this._selecteds = <T[]>values.map((v) => {\n      v = <T>this.dateTimeAdapter.deserialize(v);\n      return this.getValidDate(v);\n    });\n    this.setSelectedYears();\n  }\n\n  private _pickerMoment: T | null = null;\n  @Input()\n  get pickerMoment() {\n    return <T>this._pickerMoment;\n  }\n\n  set pickerMoment(value: T) {\n    const oldMoment = this._pickerMoment;\n    value = <T>this.dateTimeAdapter.deserialize(value);\n    this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n    if (oldMoment && this._pickerMoment && !this.isSameYearList(oldMoment, this._pickerMoment)) {\n      this.generateYearList();\n    }\n  }\n\n  /**\n   * A function used to filter which dates are selectable\n   * */\n  private _dateFilter: (date: T) => boolean = () => true;\n  @Input()\n  get dateFilter() {\n    return this._dateFilter;\n  }\n\n  set dateFilter(filter: (date: T) => boolean) {\n    this._dateFilter = filter;\n    if (this.initiated) {\n      this.generateYearList();\n    }\n  }\n\n  /** The minimum selectable date. */\n  private _minDate: T | null = null;\n  @Input()\n  get minDate(): T | null {\n    return this._minDate;\n  }\n\n  set minDate(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._minDate = this.getValidDate(value);\n    if (this.initiated) {\n      this.generateYearList();\n    }\n  }\n\n  /** The maximum selectable date. */\n  private _maxDate: T | null = null;\n  @Input()\n  get maxDate(): T | null {\n    return this._maxDate;\n  }\n\n  set maxDate(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._maxDate = this.getValidDate(value);\n    if (this.initiated) {\n      this.generateYearList();\n    }\n  }\n\n  private _todayYear?: number;\n  get todayYear(): number {\n    return <number>this._todayYear;\n  }\n\n  private _years: CalendarCell[][] = [];\n  get years() {\n    return this._years;\n  }\n\n  private _selectedYears: number[] = [];\n  get selectedYears(): number[] {\n    return this._selectedYears;\n  }\n\n  private initiated = false;\n\n  get isInSingleMode(): boolean {\n    return this.selectMode === 'single';\n  }\n\n  get isInRangeMode(): boolean {\n    return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n  }\n\n  get activeCell(): number {\n    if (this._pickerMoment) {\n      return this.dateTimeAdapter.getYear(this._pickerMoment) % (YEARS_PER_ROW * YEAR_ROWS);\n    }\n    return 0;\n  }\n\n  get tableHeader(): string {\n    if (this._years && this._years.length > 0) {\n      return `${this._years[0][0].displayValue} ~ ${this._years[YEAR_ROWS - 1][YEARS_PER_ROW - 1].displayValue}`;\n    }\n    return '';\n  }\n\n  get prevButtonLabel(): string {\n    return this.pickerIntl.prevMultiYearLabel;\n  }\n\n  get nextButtonLabel(): string {\n    return this.pickerIntl.nextMultiYearLabel;\n  }\n\n  /**\n   * Callback to invoke when a new month is selected\n   * */\n  @Output() readonly change = new EventEmitter<T>();\n\n  /**\n   * Emits the selected year. This doesn't imply a change on the selected date\n   * */\n  @Output() readonly yearSelected = new EventEmitter<T>();\n\n  /** Emits when any date is activated. */\n  @Output() readonly pickerMomentChange: EventEmitter<T> = new EventEmitter<T>();\n\n  /** Emits when use keyboard enter to select a calendar cell */\n  @Output() readonly keyboardEnter: EventEmitter<any> = new EventEmitter<any>();\n\n  /** The body of calendar table */\n  @ViewChild(DatepickerCalendarBodyComponent, { static: true }) calendarBodyElm?: DatepickerCalendarBodyComponent;\n\n  @HostBinding('class.datepicker-dt-calendar-view')\n  get datepickerDTCalendarView(): boolean {\n    return true;\n  }\n\n  @HostBinding('class.datepicker-dt-calendar-multi-year-view')\n  get datepickerDTCalendarMultiYearView(): boolean {\n    return true;\n  }\n\n  constructor(\n    private cdRef: ChangeDetectorRef,\n    private pickerIntl: DatepickerDateTimePickerIntlService,\n    @Optional() private dateTimeAdapter: DatepickerDateTimeAdapter<T>,\n  ) {}\n\n  public ngOnInit() {}\n\n  public ngAfterContentInit(): void {\n    this._todayYear = this.dateTimeAdapter.getYear(this.dateTimeAdapter.now());\n    this.generateYearList();\n    this.initiated = true;\n  }\n\n  /**\n   * Handle a calendarCell selected\n   */\n  public selectCalendarCell(cell: CalendarCell): void {\n    this.selectYear(cell.value);\n  }\n\n  private selectYear(year: number): void {\n    this.yearSelected.emit(this.dateTimeAdapter.createDate(year, 0, 1));\n    const firstDateOfMonth = this.dateTimeAdapter.createDate(year, this.dateTimeAdapter.getMonth(this.pickerMoment), 1);\n    const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(firstDateOfMonth);\n    const selected = this.dateTimeAdapter.createDate(\n      year,\n      this.dateTimeAdapter.getMonth(this.pickerMoment),\n      Math.min(daysInMonth, this.dateTimeAdapter.getDate(this.pickerMoment)),\n      this.dateTimeAdapter.getHours(this.pickerMoment),\n      this.dateTimeAdapter.getMinutes(this.pickerMoment),\n      this.dateTimeAdapter.getSeconds(this.pickerMoment),\n    );\n\n    this.change.emit(selected);\n  }\n\n  /**\n   * Generate the previous year list\n   * */\n  public prevYearList(event: any): void {\n    this._pickerMoment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1 * YEAR_ROWS * YEARS_PER_ROW);\n    this.generateYearList();\n    event.preventDefault();\n  }\n\n  /**\n   * Generate the next year list\n   * */\n  public nextYearList(event: any): void {\n    this._pickerMoment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, YEAR_ROWS * YEARS_PER_ROW);\n    this.generateYearList();\n    event.preventDefault();\n  }\n\n  public generateYearList(): void {\n    this._years = [];\n\n    const pickerMomentYear = this.dateTimeAdapter.getYear(<T>this._pickerMoment);\n    const offset = pickerMomentYear % (YEARS_PER_ROW * YEAR_ROWS);\n\n    for (let i = 0; i < YEAR_ROWS; i++) {\n      const row: CalendarCell[] = [];\n\n      for (let j = 0; j < YEARS_PER_ROW; j++) {\n        const year = pickerMomentYear - offset + (j + i * YEARS_PER_ROW);\n        const yearCell = this.createYearCell(year);\n        row.push(yearCell);\n      }\n\n      this._years.push(row);\n    }\n\n    return;\n  }\n\n  /** Whether the previous period button is enabled. */\n  public previousEnabled(): boolean {\n    if (!this.minDate) {\n      return true;\n    }\n    return !this.minDate || !this.isSameYearList(<T>this._pickerMoment, this.minDate);\n  }\n\n  /** Whether the next period button is enabled. */\n  public nextEnabled(): boolean {\n    return !this.maxDate || !this.isSameYearList(<T>this._pickerMoment, this.maxDate);\n  }\n\n  public handleCalendarKeydown(event: KeyboardEvent): void {\n    let moment;\n    switch (event.keyCode) {\n      // minus 1 year\n      case LEFT_ARROW:\n        moment = this.dateTimeAdapter.addCalendarYears(<T>this._pickerMoment, -1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // add 1 year\n      case RIGHT_ARROW:\n        moment = this.dateTimeAdapter.addCalendarYears(<T>this._pickerMoment, 1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // minus 3 years\n      case UP_ARROW:\n        moment = this.dateTimeAdapter.addCalendarYears(<T>this._pickerMoment, -1 * YEARS_PER_ROW);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // add 3 years\n      case DOWN_ARROW:\n        moment = this.dateTimeAdapter.addCalendarYears(<T>this._pickerMoment, YEARS_PER_ROW);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // go to the first year of the year page\n      case HOME:\n        moment = this.dateTimeAdapter.addCalendarYears(\n          <T>this._pickerMoment,\n          -this.dateTimeAdapter.getYear(<T>this._pickerMoment) % (YEARS_PER_ROW * YEAR_ROWS),\n        );\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // go to the last year of the year page\n      case END:\n        moment = this.dateTimeAdapter.addCalendarYears(\n          <T>this._pickerMoment,\n          YEARS_PER_ROW * YEAR_ROWS - (this.dateTimeAdapter.getYear(<T>this._pickerMoment) % (YEARS_PER_ROW * YEAR_ROWS)) - 1,\n        );\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // minus 1 year page (or 10 year pages)\n      case PAGE_UP:\n        moment = this.dateTimeAdapter.addCalendarYears(\n          this.pickerMoment,\n          event.altKey ? -10 * (YEARS_PER_ROW * YEAR_ROWS) : -1 * (YEARS_PER_ROW * YEAR_ROWS),\n        );\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // add 1 year page (or 10 year pages)\n      case PAGE_DOWN:\n        moment = this.dateTimeAdapter.addCalendarYears(\n          this.pickerMoment,\n          event.altKey ? 10 * (YEARS_PER_ROW * YEAR_ROWS) : YEARS_PER_ROW * YEAR_ROWS,\n        );\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      case ENTER:\n        this.selectYear(this.dateTimeAdapter.getYear(<T>this._pickerMoment));\n        this.keyboardEnter.emit();\n        break;\n\n      default:\n        return;\n    }\n\n    this.focusActiveCell();\n    event.preventDefault();\n  }\n\n  /**\n   * Creates an CalendarCell for the given year.\n   */\n  private createYearCell(year: number): CalendarCell {\n    const startDateOfYear = this.dateTimeAdapter.createDate(year, 0, 1);\n    const ariaLabel = this.dateTimeAdapter.getYearName(startDateOfYear);\n    const cellClass = 'datepicker-dt-year-' + year;\n    return new CalendarCell(year, year.toString(), ariaLabel, this.isYearEnabled(year), false, cellClass);\n  }\n\n  private setSelectedYears(): void {\n    this._selectedYears = [];\n\n    if (this.isInSingleMode && this.selected) {\n      this._selectedYears[0] = this.dateTimeAdapter.getYear(this.selected);\n    }\n\n    if (this.isInRangeMode && this.selecteds) {\n      this._selectedYears = <number[]>this.selecteds.map((selected) => {\n        if (this.dateTimeAdapter.isValid(selected)) {\n          return this.dateTimeAdapter.getYear(selected);\n        } else {\n          return null;\n        }\n      });\n    }\n  }\n\n  /** Whether the given year is enabled. */\n  private isYearEnabled(year: number) {\n    // disable if the year is greater than maxDate lower than minDate\n    if (\n      year === undefined ||\n      year === null ||\n      (this.maxDate && year > this.dateTimeAdapter.getYear(this.maxDate)) ||\n      (this.minDate && year < this.dateTimeAdapter.getYear(this.minDate))\n    ) {\n      return false;\n    }\n\n    // enable if it reaches here and there's no filter defined\n    if (!this.dateFilter) {\n      return true;\n    }\n\n    const firstOfYear = this.dateTimeAdapter.createDate(year, 0, 1);\n\n    // If any date in the year is enabled count the year as enabled.\n    for (\n      let date = firstOfYear;\n      Number(this.dateTimeAdapter.getYear(date)) === year;\n      date = this.dateTimeAdapter.addCalendarDays(date, 1)\n    ) {\n      if (this.dateFilter(date)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  private isSameYearList(date1: T, date2: T): boolean {\n    return (\n      Math.floor(this.dateTimeAdapter.getYear(date1) / (YEARS_PER_ROW * YEAR_ROWS)) ===\n      Math.floor(this.dateTimeAdapter.getYear(date2) / (YEARS_PER_ROW * YEAR_ROWS))\n    );\n  }\n\n  /**\n   * Get a valid date object\n   */\n  private getValidDate(obj: any): T | null {\n    return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n  }\n\n  private focusActiveCell() {\n    this.calendarBodyElm?.focusActiveCell();\n  }\n}\n","<button\n  class=\"datepicker-dt-control-button datepicker-dt-control-arrow-button\"\n  [disabled]=\"!previousEnabled()\"\n  [attr.aria-label]=\"prevButtonLabel\"\n  type=\"button\"\n  tabindex=\"0\"\n  (click)=\"prevYearList($event)\"\n>\n  <span class=\"datepicker-dt-control-button-content\" tabindex=\"-1\">\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n      version=\"1.1\"\n      x=\"0px\"\n      y=\"0px\"\n      viewBox=\"0 0 250.738 250.738\"\n      style=\"enable-background:new 0 0 250.738 250.738;\"\n      xml:space=\"preserve\"\n      width=\"100%\"\n      height=\"100%\"\n    >\n      <path\n        style=\"fill-rule: evenodd; clip-rule: evenodd;\"\n        d=\"M96.633,125.369l95.053-94.533c7.101-7.055,7.101-18.492,0-25.546   c-7.1-7.054-18.613-7.054-25.714,0L58.989,111.689c-3.784,3.759-5.487,8.759-5.238,13.68c-0.249,4.922,1.454,9.921,5.238,13.681   l106.983,106.398c7.101,7.055,18.613,7.055,25.714,0c7.101-7.054,7.101-18.491,0-25.544L96.633,125.369z\"\n      />\n    </svg>\n  </span>\n</button>\n<table class=\"datepicker-dt-calendar-table datepicker-dt-calendar-multi-year-table\">\n  <thead class=\"datepicker-dt-calendar-header\">\n    <tr>\n      <th colspan=\"3\">{{ tableHeader }}</th>\n    </tr>\n  </thead>\n  <tbody\n    rad-ui-datepicker-calendar-body\n    role=\"grid\"\n    [rows]=\"years\"\n    [numCols]=\"3\"\n    [cellRatio]=\"3 / 7\"\n    [activeCell]=\"activeCell\"\n    [todayValue]=\"todayYear\"\n    [selectedValues]=\"selectedYears\"\n    [selectMode]=\"selectMode\"\n    (keydown)=\"handleCalendarKeydown($event)\"\n    (select)=\"selectCalendarCell($event)\"\n  ></tbody>\n</table>\n<button\n  class=\"datepicker-dt-control-button datepicker-dt-control-arrow-button\"\n  [disabled]=\"!nextEnabled()\"\n  [attr.aria-label]=\"nextButtonLabel\"\n  type=\"button\"\n  tabindex=\"0\"\n  (click)=\"nextYearList($event)\"\n>\n  <span class=\"datepicker-dt-control-button-content\" tabindex=\"-1\">\n    <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\n    <svg\n      version=\"1.1\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n      x=\"0px\"\n      y=\"0px\"\n      viewBox=\"0 0 250.738 250.738\"\n      style=\"enable-background:new 0 0 250.738 250.738;\"\n      xml:space=\"preserve\"\n    >\n      <path\n        style=\"fill-rule:evenodd;clip-rule:evenodd;\"\n        d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\n                c-7.101,7.054-7.101,18.49,0,25.544l95.053,94.534l-95.053,94.533c-7.101,7.054-7.101,18.491,0,25.545\n                c7.1,7.054,18.613,7.054,25.713,0L191.75,139.05c3.784-3.759,5.487-8.759,5.238-13.681\n                C197.237,120.447,195.534,115.448,191.75,111.689z\"\n      />\n    </svg>\n  </span>\n</button>\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  HostBinding,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { DOWN_ARROW, END, ENTER, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { SelectMode } from '../../classes/datepicker-date-time.class';\nimport { CalendarCell, DatepickerCalendarBodyComponent } from '../calendar-body/datepicker-calendar-body.component';\nimport { Subscription } from 'rxjs';\nimport { DatepickerDateTimeAdapter } from '../../adapters/datepicker-date-time.adapter';\nimport { DATEPICKER_DATE_TIME_FORMATS, DatepickerDateTimeFormats } from '../../classes/datepicker-date-time-format.class';\n\nconst MONTHS_PER_YEAR = 12;\nconst MONTHS_PER_ROW = 3;\n\n@Component({\n  selector: 'rad-ui-datepicker-calendar-year-view',\n  templateUrl: './datepicker-calendar-year-view.component.html',\n  styleUrls: ['./datepicker-calendar-year-view.component.scss'],\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatepickerCalendarYearViewComponent<T> implements OnInit, AfterContentInit, OnDestroy {\n  /**\n   * The select mode of the picker;\n   * */\n  private _selectMode: SelectMode = 'single';\n  @Input()\n  get selectMode(): SelectMode {\n    return this._selectMode;\n  }\n\n  set selectMode(val: SelectMode) {\n    this._selectMode = val;\n    if (this.initiated) {\n      this.generateMonthList();\n      this.cdRef.markForCheck();\n    }\n  }\n\n  /** The currently selected date. */\n  private _selected: T | null = null;\n  @Input()\n  get selected(): T | null {\n    return this._selected;\n  }\n\n  set selected(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._selected = this.getValidDate(value);\n    this.setSelectedMonths();\n  }\n\n  private _selecteds: T[] = [];\n  @Input()\n  get selecteds(): T[] {\n    return this._selecteds;\n  }\n\n  set selecteds(values: T[]) {\n    this._selecteds = [];\n    for (let i = 0; i < values.length; i++) {\n      const value = this.dateTimeAdapter.deserialize(values[i]);\n      this._selecteds.push(<T>this.getValidDate(value));\n    }\n\n    this.setSelectedMonths();\n  }\n\n  private _pickerMoment: T | null = null;\n  @Input()\n  get pickerMoment() {\n    return <T>this._pickerMoment;\n  }\n\n  set pickerMoment(value: T) {\n    const oldMoment = <T>this._pickerMoment;\n    value = <T>this.dateTimeAdapter.deserialize(value);\n    this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n    if (!this.hasSameYear(oldMoment, this._pickerMoment) && this.initiated) {\n      this.generateMonthList();\n    }\n  }\n\n  /**\n   * A function used to filter which dates are selectable\n   * */\n  private _dateFilter: (date: T) => boolean = () => true;\n  @Input()\n  get dateFilter() {\n    return this._dateFilter;\n  }\n\n  set dateFilter(filter: (date: T) => boolean) {\n    this._dateFilter = filter;\n    if (this.initiated) {\n      this.generateMonthList();\n    }\n  }\n\n  /** The minimum selectable date. */\n  private _minDate: T | null = null;\n  @Input()\n  get minDate(): T | null {\n    return this._minDate;\n  }\n\n  set minDate(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._minDate = this.getValidDate(value);\n    if (this.initiated) {\n      this.generateMonthList();\n    }\n  }\n\n  /** The maximum selectable date. */\n  private _maxDate: T | null = null;\n  @Input()\n  get maxDate(): T | null {\n    return this._maxDate;\n  }\n\n  set maxDate(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._maxDate = this.getValidDate(value);\n    if (this.initiated) {\n      this.generateMonthList();\n    }\n  }\n\n  private readonly monthNames: string[];\n\n  private _months: CalendarCell[][] = [];\n  get months() {\n    return this._months;\n  }\n\n  get activeCell(): number {\n    if (this._pickerMoment) {\n      return <number>this.dateTimeAdapter.getMonth(this._pickerMoment);\n    }\n    return 0;\n  }\n\n  get isInSingleMode(): boolean {\n    return this.selectMode === 'single';\n  }\n\n  get isInRangeMode(): boolean {\n    return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n  }\n\n  private localeSub: Subscription = Subscription.EMPTY;\n\n  private initiated = false;\n\n  public todayMonth?: number;\n\n  /**\n   * An array to hold all selectedDates' month value\n   * the value is the month number in current year\n   * */\n  public selectedMonths: number[] = [];\n\n  /**\n   * Callback to invoke when a new month is selected\n   * */\n  @Output()\n  readonly change = new EventEmitter<T>();\n\n  /**\n   * Emits the selected year. This doesn't imply a change on the selected date\n   * */\n  @Output()\n  readonly monthSelected = new EventEmitter<T>();\n\n  /** Emits when any date is activated. */\n  @Output()\n  readonly pickerMomentChange: EventEmitter<T> = new EventEmitter<T>();\n\n  /** Emits when use keyboard enter to select a calendar cell */\n  @Output()\n  readonly keyboardEnter: EventEmitter<any> = new EventEmitter<any>();\n\n  /** The body of calendar table */\n  @ViewChild(DatepickerCalendarBodyComponent, { static: true })\n  calendarBodyElm?: DatepickerCalendarBodyComponent;\n\n  @HostBinding('class.datepicker-dt-calendar-view')\n  get datepickerDTCalendarView(): boolean {\n    return true;\n  }\n\n  constructor(\n    private cdRef: ChangeDetectorRef,\n    @Optional() private dateTimeAdapter: DatepickerDateTimeAdapter<T>,\n    @Optional()\n    @Inject(DATEPICKER_DATE_TIME_FORMATS)\n    private dateTimeFormats: DatepickerDateTimeFormats,\n  ) {\n    this.monthNames = this.dateTimeAdapter.getMonthNames('short');\n  }\n\n  public ngOnInit() {\n    this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n      this.generateMonthList();\n      this.cdRef.markForCheck();\n    });\n  }\n\n  public ngAfterContentInit(): void {\n    this.generateMonthList();\n    this.initiated = true;\n  }\n\n  public ngOnDestroy(): void {\n    this.localeSub.unsubscribe();\n  }\n\n  /**\n   * Handle a calendarCell selected\n   */\n  public selectCalendarCell(cell: CalendarCell): void {\n    this.selectMonth(cell.value);\n  }\n\n  /**\n   * Handle a new month selected\n   */\n  private selectMonth(month: number): void {\n    const firstDateOfMonth = this.dateTimeAdapter.createDate(this.dateTimeAdapter.getYear(this.pickerMoment), month, 1);\n\n    this.monthSelected.emit(firstDateOfMonth);\n\n    const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(firstDateOfMonth);\n    const result = this.dateTimeAdapter.createDate(\n      this.dateTimeAdapter.getYear(this.pickerMoment),\n      month,\n      Math.min(daysInMonth, this.dateTimeAdapter.getDate(this.pickerMoment)),\n      this.dateTimeAdapter.getHours(this.pickerMoment),\n      this.dateTimeAdapter.getMinutes(this.pickerMoment),\n      this.dateTimeAdapter.getSeconds(this.pickerMoment),\n    );\n\n    this.change.emit(result);\n  }\n\n  /**\n   * Handle keydown event on calendar body\n   */\n  public handleCalendarKeydown(event: KeyboardEvent): void {\n    let moment;\n    switch (event.keyCode) {\n      // minus 1 month\n      case LEFT_ARROW:\n        moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // add 1 month\n      case RIGHT_ARROW:\n        moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // minus 3 months\n      case UP_ARROW:\n        moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -3);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // add 3 months\n      case DOWN_ARROW:\n        moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 3);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // move to first month of current year\n      case HOME:\n        moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -this.dateTimeAdapter.getMonth(this.pickerMoment));\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // move to last month of current year\n      case END:\n        moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 11 - this.dateTimeAdapter.getMonth(this.pickerMoment));\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // minus 1 year (or 10 year)\n      case PAGE_UP:\n        moment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, event.altKey ? -10 : -1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // add 1 year (or 10 year)\n      case PAGE_DOWN:\n        moment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, event.altKey ? 10 : 1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // Select current month\n      case ENTER:\n        this.selectMonth(this.dateTimeAdapter.getMonth(this.pickerMoment));\n        this.keyboardEnter.emit();\n        break;\n      default:\n        return;\n    }\n\n    this.focusActiveCell();\n    event.preventDefault();\n  }\n\n  /**\n   * Generate the calendar month list\n   * */\n  private generateMonthList(): void {\n    if (!this.pickerMoment) {\n      return;\n    }\n\n    this.setSelectedMonths();\n    this.todayMonth = this.getMonthInCurrentYear(this.dateTimeAdapter.now());\n\n    this._months = [];\n    for (let i = 0; i < MONTHS_PER_YEAR / MONTHS_PER_ROW; i++) {\n      const row: CalendarCell[] = [];\n\n      for (let j = 0; j < MONTHS_PER_ROW; j++) {\n        const month = j + i * MONTHS_PER_ROW;\n        const monthCell = this.createMonthCell(month);\n        row.push(monthCell);\n      }\n\n      this._months.push(row);\n    }\n\n    return;\n  }\n\n  /**\n   * Creates an CalendarCell for the given month.\n   */\n  private createMonthCell(month: number): CalendarCell {\n    const startDateOfMonth = this.dateTimeAdapter.createDate(this.dateTimeAdapter.getYear(this.pickerMoment), month, 1);\n    const ariaLabel = this.dateTimeAdapter.format(startDateOfMonth, this.dateTimeFormats.monthYearA11yLabel);\n    const cellClass = 'datepicker-dt-month-' + month;\n    return new CalendarCell(month, this.monthNames[month], ariaLabel, this.isMonthEnabled(month), false, cellClass);\n  }\n\n  /**\n   * Check if the given month is enable\n   */\n  private isMonthEnabled(month: number): boolean {\n    const firstDateOfMonth = this.dateTimeAdapter.createDate(this.dateTimeAdapter.getYear(this.pickerMoment), month, 1);\n\n    // If any date in the month is selectable,\n    // we count the month as enable\n    for (let date = firstDateOfMonth; this.dateTimeAdapter.getMonth(date) === month; date = this.dateTimeAdapter.addCalendarDays(date, 1)) {\n      if (\n        !!date &&\n        (!this.dateFilter || this.dateFilter(date)) &&\n        (!this.minDate || this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n        (!this.maxDate || this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n      ) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Gets the month in this year that the given Date falls on.\n   * Returns null if the given Date is in another year.\n   */\n  private getMonthInCurrentYear(date: T | null): number | undefined {\n    if (this.getValidDate(date) && this.getValidDate(this._pickerMoment)) {\n      const result = this.dateTimeAdapter.compareYear(<T>date, <T>this._pickerMoment);\n\n      // < 0 : the given date's year is before pickerMoment's year, we return -1 as selected month value.\n      // > 0 : the given date's year is after pickerMoment's year, we return 12 as selected month value.\n      // 0 : the give date's year is same as the pickerMoment's year, we return the actual month value.\n      if (result < 0) {\n        return -1;\n      } else if (result > 0) {\n        return 12;\n      } else {\n        return this.dateTimeAdapter.getMonth(<T>date);\n      }\n    } else {\n      return undefined;\n    }\n  }\n\n  /**\n   * Set the selectedMonths value\n   * In single mode, it has only one value which represent the month the selected date in\n   * In range mode, it would has two values, one for the month the fromValue in and the other for the month the toValue in\n   * */\n  private setSelectedMonths(): void {\n    this.selectedMonths = [];\n    if (this.isInSingleMode && this.selected) {\n      this.selectedMonths[0] = <number>this.getMonthInCurrentYear(this.selected);\n    }\n\n    if (this.isInRangeMode && this.selecteds) {\n      this.selectedMonths[0] = <number>this.getMonthInCurrentYear(this.selecteds[0]);\n      this.selectedMonths[1] = <number>this.getMonthInCurrentYear(this.selecteds[1]);\n    }\n  }\n\n  /**\n   * Check the given dates are in the same year\n   */\n  private hasSameYear(dateLeft: T, dateRight: T) {\n    return !!(dateLeft && dateRight && this.dateTimeAdapter.getYear(dateLeft) === this.dateTimeAdapter.getYear(dateRight));\n  }\n\n  /**\n   * Get a valid date object\n   */\n  private getValidDate(obj: any): T | null {\n    return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n  }\n\n  private focusActiveCell() {\n    this.calendarBodyElm?.focusActiveCell();\n  }\n}\n","<table class=\"datepicker-dt-calendar-table datepicker-dt-calendar-year-table\">\n  <thead class=\"datepicker-dt-calendar-header\">\n    <tr>\n      <th class=\"datepicker-dt-calendar-table-divider\" aria-hidden=\"true\" colspan=\"3\"></th>\n    </tr>\n  </thead>\n  <tbody\n    rad-ui-datepicker-calendar-body\n    role=\"grid\"\n    [rows]=\"months\"\n    [numCols]=\"3\"\n    [cellRatio]=\"3 / 7\"\n    [activeCell]=\"activeCell\"\n    [todayValue]=\"todayMonth\"\n    [selectedValues]=\"selectedMonths\"\n    [selectMode]=\"selectMode\"\n    (keydown)=\"handleCalendarKeydown($event)\"\n    (select)=\"selectCalendarCell($event)\"\n  ></tbody>\n</table>\n","import {\n  AfterContentInit,\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Inject,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from '../../classes/datepicker-date-time.class';\nimport { DatepickerDateTimePickerIntlService } from '../../services/datepicker-date-time-picker-intl.service';\nimport { DatepickerDateTimeAdapter } from '../../adapters/datepicker-date-time.adapter';\nimport { DATEPICKER_DATE_TIME_FORMATS, DatepickerDateTimeFormats } from '../../classes/datepicker-date-time-format.class';\n\n@Component({\n  selector: 'rad-ui-datepicker-calendar',\n  templateUrl: './datepicker-calendar.component.html',\n  styleUrls: ['./datepicker-calendar.component.scss'],\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatepickerCalendarComponent<T> implements OnInit, AfterContentInit, AfterViewChecked, OnDestroy {\n  private intlChangesSub = Subscription.EMPTY;\n\n  /**\n   * Used for scheduling that focus should be moved to the active cell on the next tick.\n   * We need to schedule it, rather than do it immediately, because we have to wait\n   * for Angular to re-evaluate the view children.\n   */\n  private moveFocusOnNextTick = false;\n\n  /**\n   * Date filter for the month and year view\n   * */\n  @Input()\n  dateFilter: (date: T) => boolean = () => true;\n\n  /**\n   * Set the first day of week\n   */\n  @Input()\n  firstDayOfWeek = 0;\n\n  /** The minimum selectable date. */\n  private _minDate: T | null = null;\n  @Input()\n  get minDate(): T | null {\n    return this._minDate;\n  }\n\n  set minDate(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    value = this.getValidDate(value);\n\n    this._minDate = value\n      ? this.dateTimeAdapter.createDate(\n          this.dateTimeAdapter.getYear(value),\n          this.dateTimeAdapter.getMonth(value),\n          this.dateTimeAdapter.getDate(value),\n        )\n      : null;\n  }\n\n  /** The maximum selectable date. */\n  private _maxDate: T | null = null;\n  @Input()\n  get maxDate(): T | null {\n    return this._maxDate;\n  }\n\n  set maxDate(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    value = this.getValidDate(value);\n\n    this._maxDate = value\n      ? this.dateTimeAdapter.createDate(\n          this.dateTimeAdapter.getYear(value),\n          this.dateTimeAdapter.getMonth(value),\n          this.dateTimeAdapter.getDate(value),\n        )\n      : null;\n  }\n\n  /** The current picker moment */\n  private _pickerMoment: T | null = null;\n  @Input()\n  get pickerMoment() {\n    return <T>this._pickerMoment;\n  }\n\n  set pickerMoment(value: T) {\n    value = <T>this.dateTimeAdapter.deserialize(value);\n    this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now() || null;\n  }\n\n  @Input()\n  selectMode: SelectMode = 'single';\n\n  /** The currently selected moment. */\n  private _selected: T | null = null;\n  @Input()\n  get selected(): T | null {\n    return this._selected;\n  }\n\n  set selected(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._selected = this.getValidDate(value);\n  }\n\n  private _selecteds: T[] = [];\n  @Input()\n  get selecteds(): T[] {\n    return this._selecteds;\n  }\n\n  set selecteds(values: T[]) {\n    this._selecteds = <T[]>values.map((v) => {\n      v = <T>this.dateTimeAdapter.deserialize(v);\n      return this.getValidDate(v);\n    });\n  }\n\n  /**\n   * The view that the calendar should start in.\n   */\n  @Input()\n  startView: 'month' | 'year' | 'multi-years' = 'month';\n\n  /**\n   * Whether to hide dates in other months at the start or end of the current month.\n   * */\n  @Input()\n  hideOtherMonths: boolean = false;\n\n  /** Emits when the currently picker moment changes. */\n  @Output()\n  pickerMomentChange: EventEmitter<T> = new EventEmitter<T>();\n\n  /** Emits when the currently selected date changes. */\n  @Output()\n  selectedChange: EventEmitter<T> = new EventEmitter<T>();\n\n  /** Emits when any date is selected. */\n  @Output()\n  userSelection: EventEmitter<void> = new EventEmitter<void>();\n\n  /**\n   * Emits the selected year. This doesn't imply a change on the selected date\n   * */\n  @Output()\n  readonly yearSelected: EventEmitter<T> = new EventEmitter<T>();\n\n  /**\n   * Emits the selected month. This doesn't imply a change on the selected date\n   * */\n  @Output()\n  readonly monthSelected: EventEmitter<T> = new EventEmitter<T>();\n\n  get periodButtonText(): string {\n    return this.isMonthView\n      ? this.dateTimeAdapter.format(this.pickerMoment, this.dateTimeFormats.monthYearLabel)\n      : this.dateTimeAdapter.getYearName(this.pickerMoment);\n  }\n\n  get periodButtonLabel(): string {\n    return this.isMonthView ? this.pickerIntl.switchToMultiYearViewLabel : this.pickerIntl.switchToMonthViewLabel;\n  }\n\n  get prevButtonLabel(): string | null {\n    if (this._currentView === 'month') {\n      return this.pickerIntl.prevMonthLabel;\n    } else if (this._currentView === 'year') {\n      return this.pickerIntl.prevYearLabel;\n    } else {\n      return null;\n    }\n  }\n\n  get nextButtonLabel(): string | null {\n    if (this._currentView === 'month') {\n      return this.pickerIntl.nextMonthLabel;\n    } else if (this._currentView === 'year') {\n      return this.pickerIntl.nextYearLabel;\n    } else {\n      return null;\n    }\n  }\n\n  private _currentView: 'month' | 'year' | 'multi-years' = 'month';\n  get currentView(): 'month' | 'year' | 'multi-years' {\n    return this._currentView;\n  }\n\n  set currentView(view: 'month' | 'year' | 'multi-years') {\n    this._currentView = view;\n    this.moveFocusOnNextTick = true;\n  }\n\n  get isInSingleMode(): boolean {\n    return this.selectMode === 'single';\n  }\n\n  get isInRangeMode(): boolean {\n    return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n  }\n\n  get showControlArrows(): boolean {\n    return this._currentView !== 'multi-years';\n  }\n\n  get isMonthView() {\n    return this._currentView === 'month';\n  }\n\n  /**\n   * Date filter for the month and year view\n   */\n  public dateFilterForViews = (date: T) => {\n    return (\n      !!date &&\n      (!this.dateFilter || this.dateFilter(date)) &&\n      (!this.minDate || this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n      (!this.maxDate || this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n    );\n  };\n\n  /**\n   * Bind class 'datepicker-dt-calendar' to host\n   * */\n  @HostBinding('class.datepicker-dt-calendar')\n  get datepickerDTCalendarClass(): boolean {\n    return true;\n  }\n\n  constructor(\n    private elmRef: ElementRef,\n    private pickerIntl: DatepickerDateTimePickerIntlService,\n    private ngZone: NgZone,\n    private cdRef: ChangeDetectorRef,\n    @Optional() private dateTimeAdapter: DatepickerDateTimeAdapter<T>,\n    @Optional()\n    @Inject(DATEPICKER_DATE_TIME_FORMATS)\n    private dateTimeFormats: DatepickerDateTimeFormats,\n  ) {\n    this.intlChangesSub = this.pickerIntl.changes.subscribe(() => {\n      this.cdRef.markForCheck();\n    });\n  }\n\n  public ngOnInit() {}\n\n  public ngAfterContentInit(): void {\n    this._currentView = this.startView;\n  }\n\n  public ngAfterViewChecked() {\n    if (this.moveFocusOnNextTick) {\n      this.moveFocusOnNextTick = false;\n      this.focusActiveCell();\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this.intlChangesSub.unsubscribe();\n  }\n\n  /**\n   * Toggle between month view and year view\n   */\n  public toggleViews(): void {\n    this.currentView = this._currentView === 'month' ? 'multi-years' : 'month';\n  }\n\n  /**\n   * Handles user clicks on the previous button.\n   * */\n  public previousClicked(): void {\n    this.pickerMoment = this.isMonthView\n      ? this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1)\n      : this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1);\n\n    this.pickerMomentChange?.emit(this.pickerMoment);\n  }\n\n  /**\n   * Handles user clicks on the next button.\n   * */\n  public nextClicked(): void {\n    this.pickerMoment = this.isMonthView\n      ? this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1)\n      : this.dateTimeAdapter.addCalendarYears(this.pickerMoment, 1);\n\n    this.pickerMomentChange?.emit(this.pickerMoment);\n  }\n\n  public dateSelected(date: T|null): void {\n    if (!date) {\n      return;\n    }\n    if (!this.dateFilterForViews(date)) {\n      return;\n    }\n\n    this.selectedChange?.emit(date);\n\n    /*if ((this.isInSingleMode && !this.dateTimeAdapter.isSameDay(date, this.selected)) ||\n        this.isInRangeMode) {\n        this.selectedChange.emit(date);\n    }*/\n  }\n\n  /**\n   * Change the pickerMoment value and switch to a specific view\n   */\n  public goToDateInView(date: T, view: 'month' | 'year' | 'multi-years'): void {\n    this.handlePickerMomentChange(date);\n    this.currentView = view;\n    return;\n  }\n\n  /**\n   * Change the pickerMoment value\n   */\n  public handlePickerMomentChange(date: T): void {\n    this.pickerMoment = this.dateTimeAdapter.clampDate(date, this.minDate, this.maxDate);\n    this.pickerMomentChange?.emit(this.pickerMoment);\n    return;\n  }\n\n  public userSelected(): void {\n    this.userSelection?.emit();\n  }\n\n  /**\n   * Whether the previous period button is enabled.\n   */\n  public prevButtonEnabled(): boolean {\n    return !this.minDate || !this.isSameView(this.pickerMoment, this.minDate);\n  }\n\n  /**\n   * Whether the next period button is enabled.\n   */\n  public nextButtonEnabled(): boolean {\n    return !this.maxDate || !this.isSameView(this.pickerMoment, this.maxDate);\n  }\n\n  /**\n   * Focus to the host element\n   * */\n  public focusActiveCell() {\n    this.ngZone.runOutsideAngular(() => {\n      this.ngZone.onStable\n        .asObservable()\n        .pipe(take(1))\n        .subscribe(() => {\n          this.elmRef.nativeElement.querySelector('.datepicker-dt-calendar-cell-active').focus();\n        });\n    });\n  }\n\n  public selectYearInMultiYearView(normalizedYear: T): void {\n    this.yearSelected?.emit(normalizedYear);\n  }\n\n  public selectMonthInYearView(normalizedMonth: T): void {\n    this.monthSelected?.emit(normalizedMonth);\n  }\n\n  /**\n   * Whether the two dates represent the same view in the current view mode (month or year).\n   */\n  private isSameView(date1: T, date2: T): boolean {\n    if (this._currentView === 'month') {\n      return !!(\n        date1 &&\n        date2 &&\n        this.dateTimeAdapter.getYear(date1) === this.dateTimeAdapter.getYear(date2) &&\n        this.dateTimeAdapter.getMonth(date1) === this.dateTimeAdapter.getMonth(date2)\n      );\n    } else if (this._currentView === 'year') {\n      return !!(date1 && date2 && this.dateTimeAdapter.getYear(date1) === this.dateTimeAdapter.getYear(date2));\n    } else {\n      return false;\n    }\n  }\n\n  /**\n   * Get a valid date object\n   */\n  private getValidDate(obj: any): T | null {\n    return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n  }\n}\n","<div class=\"datepicker-dt-calendar-control\">\n  <!-- focus when keyboard tab (http://kizu.ru/en/blog/keyboard-only-focus/#x) -->\n  <button\n    class=\"datepicker-dt-control datepicker-dt-control-button datepicker-dt-control-arrow-button\"\n    type=\"button\"\n    tabindex=\"0\"\n    [style.visibility]=\"showControlArrows ? 'visible' : 'hidden'\"\n    [disabled]=\"!prevButtonEnabled()\"\n    [attr.aria-label]=\"prevButtonLabel\"\n    (click)=\"previousClicked()\"\n  >\n    <span class=\"datepicker-dt-control-content datepicker-dt-control-button-content\" tabindex=\"-1\">\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n        version=\"1.1\"\n        x=\"0px\"\n        y=\"0px\"\n        viewBox=\"0 0 250.738 250.738\"\n        style=\"enable-background:new 0 0 250.738 250.738;\"\n        xml:space=\"preserve\"\n        width=\"100%\"\n        height=\"100%\"\n      >\n        <path\n          style=\"fill-rule: evenodd; clip-rule: evenodd;\"\n          d=\"M96.633,125.369l95.053-94.533c7.101-7.055,7.101-18.492,0-25.546   c-7.1-7.054-18.613-7.054-25.714,0L58.989,111.689c-3.784,3.759-5.487,8.759-5.238,13.68c-0.249,4.922,1.454,9.921,5.238,13.681   l106.983,106.398c7.101,7.055,18.613,7.055,25.714,0c7.101-7.054,7.101-18.491,0-25.544L96.633,125.369z\"\n        />\n      </svg>\n    </span>\n  </button>\n  <div class=\"datepicker-dt-calendar-control-content\">\n    <button\n      class=\"datepicker-dt-control datepicker-dt-control-button datepicker-dt-control-period-button\"\n      type=\"button\"\n      tabindex=\"0\"\n      [attr.aria-label]=\"periodButtonLabel\"\n      (click)=\"toggleViews()\"\n    >\n      <span class=\"datepicker-dt-control-content datepicker-dt-control-button-content\" tabindex=\"-1\">\n        {{ periodButtonText }}\n\n        <span class=\"datepicker-dt-control-button-arrow\" [style.transform]=\"'rotate(' + (isMonthView ? 0 : 180) + 'deg)'\">\n          <svg\n            version=\"1.1\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            x=\"0px\"\n            y=\"0px\"\n            width=\"50%\"\n            height=\"50%\"\n            viewBox=\"0 0 292.362 292.362\"\n            style=\"enable-background:new 0 0 292.362 292.362;\"\n            xml:space=\"preserve\"\n          >\n            <g>\n              <path\n                d=\"M286.935,69.377c-3.614-3.617-7.898-5.424-12.848-5.424H18.274c-4.952,0-9.233,1.807-12.85,5.424\n                                C1.807,72.998,0,77.279,0,82.228c0,4.948,1.807,9.229,5.424,12.847l127.907,127.907c3.621,3.617,7.902,5.428,12.85,5.428\n                                s9.233-1.811,12.847-5.428L286.935,95.074c3.613-3.617,5.427-7.898,5.427-12.847C292.362,77.279,290.548,72.998,286.935,69.377z\"\n              />\n            </g>\n          </svg>\n        </span>\n      </span>\n    </button>\n  </div>\n  <button\n    class=\"datepicker-dt-control datepicker-dt-control-button datepicker-dt-control-arrow-button\"\n    type=\"button\"\n    tabindex=\"0\"\n    [style.visibility]=\"showControlArrows ? 'visible' : 'hidden'\"\n    [disabled]=\"!nextButtonEnabled()\"\n    [attr.aria-label]=\"nextButtonLabel\"\n    (click)=\"nextClicked()\"\n  >\n    <span class=\"datepicker-dt-control-content datepicker-dt-control-button-content\" tabindex=\"-1\">\n      <svg\n        version=\"1.1\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n        x=\"0px\"\n        y=\"0px\"\n        viewBox=\"0 0 250.738 250.738\"\n        style=\"enable-background:new 0 0 250.738 250.738;\"\n        xml:space=\"preserve\"\n      >\n        <path\n          style=\"fill-rule:evenodd;clip-rule:evenodd;\"\n          d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\n                    c-7.101,7.054-7.101,18.49,0,25.544l95.053,94.534l-95.053,94.533c-7.101,7.054-7.101,18.491,0,25.545\n                    c7.1,7.054,18.613,7.054,25.713,0L191.75,139.05c3.784-3.759,5.487-8.759,5.238-13.681\n                    C197.237,120.447,195.534,115.448,191.75,111.689z\"\n        />\n      </svg>\n    </span>\n  </button>\n</div>\n<div class=\"datepicker-dt-calendar-main\" cdkMonitorSubtreeFocus [ngSwitch]=\"currentView\" tabindex=\"-1\">\n  <rad-ui-datepicker-calendar-month-view\n    *ngSwitchCase=\"'month'\"\n    [pickerMoment]=\"pickerMoment\"\n    [firstDayOfWeek]=\"firstDayOfWeek\"\n    [selected]=\"selected\"\n    [selecteds]=\"selecteds\"\n    [selectMode]=\"selectMode\"\n    [minDate]=\"minDate\"\n    [maxDate]=\"maxDate\"\n    [dateFilter]=\"dateFilter\"\n    [hideOtherMonths]=\"hideOtherMonths\"\n    (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n    (selectedChange)=\"dateSelected($event)\"\n    (userSelection)=\"userSelected()\"\n  ></rad-ui-datepicker-calendar-month-view>\n\n  <rad-ui-datepicker-calendar-year-view\n    *ngSwitchCase=\"'year'\"\n    [pickerMoment]=\"pickerMoment\"\n    [selected]=\"selected\"\n    [selecteds]=\"selecteds\"\n    [selectMode]=\"selectMode\"\n    [minDate]=\"minDate\"\n    [maxDate]=\"maxDate\"\n    [dateFilter]=\"dateFilter\"\n    (keyboardEnter)=\"focusActiveCell()\"\n    (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n    (monthSelected)=\"selectMonthInYearView($event)\"\n    (change)=\"goToDateInView($event, 'month')\"\n  ></rad-ui-datepicker-calendar-year-view>\n\n  <rad-ui-datepicker-calendar-multi-year-view\n    *ngSwitchCase=\"'multi-years'\"\n    [pickerMoment]=\"pickerMoment\"\n    [selected]=\"selected\"\n    [selecteds]=\"selecteds\"\n    [selectMode]=\"selectMode\"\n    [minDate]=\"minDate\"\n    [maxDate]=\"maxDate\"\n    [dateFilter]=\"dateFilter\"\n    (keyboardEnter)=\"focusActiveCell()\"\n    (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n    (yearSelected)=\"selectYearInMultiYearView($event)\"\n    (change)=\"goToDateInView($event, 'year')\"\n  ></rad-ui-datepicker-calendar-multi-year-view>\n</div>\n","import { EventEmitter, Inject, Input, Optional, Directive } from '@angular/core';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { DatepickerDateTimeAdapter } from '../adapters/datepicker-date-time.adapter';\nimport { DATEPICKER_DATE_TIME_FORMATS, DatepickerDateTimeFormats } from './datepicker-date-time-format.class';\n\nlet nextUniqueId = 0;\n\nexport type PickerType = 'both' | 'calendar' | 'timer';\n\nexport type PickerMode = 'popup' | 'dialog' | 'inline';\n\nexport type SelectMode = 'single' | 'range' | 'rangeFrom' | 'rangeTo';\n\n@Directive()\nexport abstract class DatepickerDateTime<T> {\n  /**\n   * Whether to show the second's timer\n   */\n  private _showSecondsTimer = false;\n  @Input()\n  get showSecondsTimer(): boolean {\n    return this._showSecondsTimer;\n  }\n\n  set showSecondsTimer(val: boolean) {\n    this._showSecondsTimer = coerceBooleanProperty(val);\n  }\n\n  /**\n   * Whether the timer is in hour12 format\n   */\n  private _hour12Timer = false;\n  @Input()\n  get hour12Timer(): boolean {\n    return this._hour12Timer;\n  }\n\n  set hour12Timer(val: boolean) {\n    this._hour12Timer = coerceBooleanProperty(val);\n  }\n\n  /**\n   * The view that the calendar should start in.\n   */\n  @Input()\n  startView: 'month' | 'year' | 'multi-years' = 'month';\n\n  /**\n   * Hours to change per step\n   */\n  private _stepHour = 1;\n  @Input()\n  get stepHour(): number {\n    return this._stepHour;\n  }\n\n  set stepHour(val: number) {\n    this._stepHour = coerceNumberProperty(val, 1);\n  }\n\n  /**\n   * Minutes to change per step\n   */\n  private _stepMinute = 1;\n  @Input()\n  get stepMinute(): number {\n    return this._stepMinute;\n  }\n\n  set stepMinute(val: number) {\n    this._stepMinute = coerceNumberProperty(val, 1);\n  }\n\n  /**\n   * Seconds to change per step\n   */\n  private _stepSecond = 1;\n  @Input()\n  get stepSecond(): number {\n    return this._stepSecond;\n  }\n\n  set stepSecond(val: number) {\n    this._stepSecond = coerceNumberProperty(val, 1);\n  }\n\n  /**\n   * Set the first day of week\n   */\n  private _firstDayOfWeek = 0;\n  @Input()\n  get firstDayOfWeek() {\n    return this._firstDayOfWeek;\n  }\n\n  set firstDayOfWeek(value: number) {\n    value = coerceNumberProperty(value, 0);\n    if (value > 6 || value < 0) {\n      this._firstDayOfWeek = 0;\n    } else {\n      this._firstDayOfWeek = value;\n    }\n  }\n\n  /**\n   * Whether to hide dates in other months at the start or end of the current month.\n   */\n  private _hideOtherMonths = false;\n  @Input()\n  get hideOtherMonths(): boolean {\n    return this._hideOtherMonths;\n  }\n\n  set hideOtherMonths(val: boolean) {\n    this._hideOtherMonths = coerceBooleanProperty(val);\n  }\n\n  private _id: string;\n  get id(): string {\n    return this._id;\n  }\n\n  abstract get selected(): T | null;\n\n  abstract get selecteds(): T[] | null;\n\n  abstract get dateTimeFilter(): (date: T | null) => boolean;\n\n  abstract get maxDateTime(): T | null;\n\n  abstract get minDateTime(): T | null;\n\n  abstract get selectMode(): SelectMode;\n\n  abstract get startAt(): T | null;\n\n  abstract get opened(): boolean;\n\n  abstract get pickerMode(): PickerMode;\n\n  abstract get pickerType(): PickerType;\n\n  abstract get isInSingleMode(): boolean;\n\n  abstract get isInRangeMode(): boolean;\n\n  abstract yearSelected: EventEmitter<T>;\n\n  abstract monthSelected: EventEmitter<T>;\n\n  abstract selectYear(normalizedYear: T | null): void;\n\n  abstract selectMonth(normalizedMonth: T | null): void;\n\n  abstract select(date: T | T[] | null): void;\n\n  get formatString(): string {\n    return this.pickerType === 'both'\n      ? this.dateTimeFormats.fullPickerInput\n      : this.pickerType === 'calendar'\n      ? this.dateTimeFormats.datePickerInput\n      : this.dateTimeFormats.timePickerInput;\n  }\n\n  /**\n   * Date Time Checker to check if the give dateTime is selectable\n   */\n  public dateTimeChecker = (dateTime: T | null) => {\n    return (\n      !!dateTime &&\n      (!this.dateTimeFilter || this.dateTimeFilter(dateTime)) &&\n      (!this.minDateTime || this.dateTimeAdapter.compare(dateTime, this.minDateTime) >= 0) &&\n      (!this.maxDateTime || this.dateTimeAdapter.compare(dateTime, this.maxDateTime) <= 0)\n    );\n  };\n\n  get disabled(): boolean {\n    return false;\n  }\n\n  constructor(\n    @Optional() protected dateTimeAdapter: DatepickerDateTimeAdapter<T>,\n    @Optional()\n    @Inject(DATEPICKER_DATE_TIME_FORMATS)\n    protected dateTimeFormats: DatepickerDateTimeFormats,\n  ) {\n    if (!this.dateTimeAdapter) {\n      throw Error(`DateDateTimePicker: No provider found for DateTimeAdapter.`);\n    }\n\n    if (!this.dateTimeFormats) {\n      throw Error(`DatepickerDateTimePicker: No provider found for DATEPICKER_DATE_TIME_FORMATS.`);\n    }\n\n    this._id = `datepicker-dt-picker-${nextUniqueId++}`;\n  }\n\n  protected getValidDate(obj: any): T | null {\n    return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n  }\n}\n","import { animate, animateChild, AnimationTriggerMetadata, group, query, state, style, transition, trigger } from '@angular/animations';\n\nexport const datepickerDateTimePickerAnimation: {\n  readonly transformPicker: AnimationTriggerMetadata;\n  readonly fadeInPicker: AnimationTriggerMetadata;\n} = {\n  transformPicker: trigger('transformPicker', [\n    state('void', style({ opacity: 0, transform: 'scale(1, 0)' })),\n    state('enter', style({ opacity: 1, transform: 'scale(1, 1)' })),\n    transition(\n      'void => enter',\n      group([query('@fadeInPicker', animateChild(), { optional: true }), animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)')]),\n    ),\n    transition('enter => void', animate('100ms linear', style({ opacity: 0 }))),\n  ]),\n\n  fadeInPicker: trigger('fadeInPicker', [\n    state('enter', style({ opacity: 1 })),\n    state('void', style({ opacity: 0 })),\n    transition('void => enter', animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')),\n  ]),\n};\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'datepickerNumberFixedLength',\n})\nexport class DatepickerNumberFixedLengthPipe implements PipeTransform {\n  transform(num: number, len: number): any {\n    const number = Math.floor(num);\n    const length = Math.floor(len);\n\n    if (num === null || isNaN(number) || isNaN(length)) {\n      return num;\n    }\n\n    let numString = number.toString();\n\n    while (numString.length < length) {\n      numString = '0' + numString;\n    }\n\n    return numString;\n  }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { Subject, Subscription } from 'rxjs';\n\n@Component({\n  selector: 'rad-ui-datepicker-timer-box',\n  templateUrl: './datepicker-timer-box.component.html',\n  styleUrls: ['./datepicker-timer-box.component.scss'],\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatepickerTimerBoxComponent implements OnInit, OnDestroy {\n  @Input() showDivider = false;\n\n  @Input() upBtnAriaLabel: string = '';\n\n  @Input() upBtnDisabled: boolean = false;\n\n  @Input() downBtnAriaLabel: string = '';\n\n  @Input() downBtnDisabled: boolean = false;\n\n  /**\n   * Value would be displayed in the box\n   * If it is null, the box would display [value]\n   * */\n  @Input() boxValue?: number;\n\n  @Input() value?: number;\n\n  @Input() min?: number;\n\n  @Input() max?: number;\n\n  @Input() step = 1;\n\n  @Input() inputLabel: string = '';\n\n  @Output() valueChange = new EventEmitter<number>();\n\n  @Output() inputChange = new EventEmitter<number>();\n\n  private inputStream = new Subject<string>();\n\n  private inputStreamSub = Subscription.EMPTY;\n\n  get displayValue(): number {\n    return this.boxValue || this.value || 0;\n  }\n\n  @HostBinding('class.datepicker-dt-timer-box')\n  get datepickerDTTimerBoxClass(): boolean {\n    return true;\n  }\n\n  constructor() {}\n\n  public ngOnInit() {\n    this.inputStreamSub = this.inputStream.pipe(debounceTime(500), distinctUntilChanged()).subscribe((val: string) => {\n      if (val) {\n        const inputValue = coerceNumberProperty(val, 0);\n        this.updateValueViaInput(inputValue);\n      }\n    });\n  }\n\n  public ngOnDestroy(): void {\n    this.inputStreamSub.unsubscribe();\n  }\n\n  public upBtnClicked(): void {\n    this.updateValue(<number>this.value + this.step);\n  }\n\n  public downBtnClicked(): void {\n    this.updateValue(<number>this.value - this.step);\n  }\n\n  public handleInputChange(val: string): void {\n    this.inputStream.next(val);\n  }\n\n  private updateValue(value: number): void {\n    this.valueChange.emit(value);\n  }\n\n  private updateValueViaInput(value: number): void {\n    if (value > <number>this.max || value < <number>this.min) {\n      return;\n    }\n    this.inputChange.emit(value);\n  }\n}\n","<div *ngIf=\"showDivider\" class=\"datepicker-dt-timer-divider\" aria-hidden=\"true\"></div>\n<button\n  class=\"datepicker-dt-control-button datepicker-dt-control-arrow-button\"\n  type=\"button\"\n  tabindex=\"-1\"\n  [disabled]=\"upBtnDisabled\"\n  [attr.aria-label]=\"upBtnAriaLabel\"\n  (click)=\"upBtnClicked()\"\n>\n  <span class=\"datepicker-dt-control-button-content\" tabindex=\"-1\">\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n      version=\"1.1\"\n      x=\"0px\"\n      y=\"0px\"\n      viewBox=\"0 0 451.847 451.846\"\n      style=\"enable-background:new 0 0 451.847 451.846;\"\n      xml:space=\"preserve\"\n      width=\"100%\"\n      height=\"100%\"\n    >\n      <path\n        d=\"M248.292,106.406l194.281,194.29c12.365,12.359,12.365,32.391,0,44.744c-12.354,12.354-32.391,12.354-44.744,0\n                        L225.923,173.529L54.018,345.44c-12.36,12.354-32.395,12.354-44.748,0c-12.359-12.354-12.359-32.391,0-44.75L203.554,106.4\n                        c6.18-6.174,14.271-9.259,22.369-9.259C234.018,97.141,242.115,100.232,248.292,106.406z\"\n      />\n    </svg>\n  </span>\n</button>\n<label class=\"datepicker-dt-timer-content\">\n  <input\n    class=\"datepicker-dt-timer-input\"\n    maxlength=\"2\"\n    [value]=\"displayValue | datepickerNumberFixedLength: 2\"\n    (input)=\"handleInputChange(valueInput.value)\"\n    #valueInput\n  />\n  <span class=\"datepicker-hidden-accessible\">{{ inputLabel }}</span>\n</label>\n<button\n  class=\"datepicker-dt-control-button datepicker-dt-control-arrow-button\"\n  type=\"button\"\n  tabindex=\"-1\"\n  [disabled]=\"downBtnDisabled\"\n  [attr.aria-label]=\"downBtnAriaLabel\"\n  (click)=\"downBtnClicked()\"\n>\n  <span class=\"datepicker-dt-control-button-content\" tabindex=\"-1\">\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n      version=\"1.1\"\n      x=\"0px\"\n      y=\"0px\"\n      viewBox=\"0 0 451.847 451.846\"\n      style=\"enable-background:new 0 0 451.847 451.846;\"\n      xml:space=\"preserve\"\n      width=\"100%\"\n      height=\"100%\"\n    >\n      <path\n        d=\"M225.923,354.706c-8.098,0-16.195-3.092-22.369-9.263L9.27,151.157c-12.359-12.359-12.359-32.397,0-44.751\n                        c12.354-12.354,32.388-12.354,44.748,0l171.905,171.915l171.906-171.909c12.359-12.354,32.391-12.354,44.744,0\n                        c12.365,12.354,12.365,32.392,0,44.751L248.292,345.449C242.115,351.621,234.018,354.706,225.923,354.706z\"\n      />\n    </svg>\n  </span>\n</button>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  NgZone,\n  OnInit,\n  Optional,\n  Output,\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { DatepickerDateTimePickerIntlService } from '../../services/datepicker-date-time-picker-intl.service';\nimport { DatepickerDateTimeAdapter } from '../../adapters/datepicker-date-time.adapter';\n\n@Component({\n  selector: 'rad-ui-datepicker-timer',\n  templateUrl: './datepicker-timer.component.html',\n  styleUrls: ['./datepicker-timer.component.scss'],\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatepickerTimerComponent<T> implements OnInit {\n  /** The current picker moment */\n  private _pickerMoment?: T;\n  @Input()\n  get pickerMoment() {\n    return <T>this._pickerMoment;\n  }\n\n  set pickerMoment(value: T) {\n    value = <T>this.dateTimeAdapter.deserialize(value);\n    this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n  }\n\n  /** The minimum selectable date time. */\n  private _minDateTime: T | null = null;\n  @Input()\n  get minDateTime(): T | null {\n    return this._minDateTime;\n  }\n\n  set minDateTime(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._minDateTime = this.getValidDate(value);\n  }\n\n  /** The maximum selectable date time. */\n  private _maxDateTime: T | null = null;\n  @Input()\n  get maxDateTime(): T | null {\n    return this._maxDateTime;\n  }\n\n  set maxDateTime(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._maxDateTime = this.getValidDate(value);\n  }\n\n  private isPM = false; // a flag indicates the current timer moment is in PM or AM\n\n  /**\n   * Whether to show the second's timer\n   */\n  @Input()\n  showSecondsTimer: boolean = false;\n\n  /**\n   * Whether the timer is in hour12 format\n   */\n  @Input()\n  hour12Timer: boolean = false;\n\n  /**\n   * Hours to change per step\n   */\n  @Input()\n  stepHour = 1;\n\n  /**\n   * Minutes to change per step\n   */\n  @Input()\n  stepMinute = 1;\n\n  /**\n   * Seconds to change per step\n   */\n  @Input()\n  stepSecond = 1;\n\n  get hourValue(): number {\n    return this.dateTimeAdapter.getHours(this.pickerMoment);\n  }\n\n  /**\n   * The value would be displayed in hourBox.\n   * We need this because the value displayed in hourBox it not\n   * the same as the hourValue when the timer is in hour12Timer mode.\n   * */\n  get hourBoxValue(): number {\n    let hours = this.hourValue;\n\n    if (!this.hour12Timer) {\n      return hours;\n    } else {\n      if (hours === 0) {\n        hours = 12;\n        this.isPM = false;\n      } else if (hours > 0 && hours < 12) {\n        this.isPM = false;\n      } else if (hours === 12) {\n        this.isPM = true;\n      } else if (hours > 12 && hours < 24) {\n        hours = hours - 12;\n        this.isPM = true;\n      }\n\n      return hours;\n    }\n  }\n\n  get minuteValue(): number {\n    return this.dateTimeAdapter.getMinutes(this.pickerMoment);\n  }\n\n  get secondValue(): number {\n    return this.dateTimeAdapter.getSeconds(this.pickerMoment);\n  }\n\n  get upHourButtonLabel(): string {\n    return this.pickerIntl.upHourLabel;\n  }\n\n  get downHourButtonLabel(): string {\n    return this.pickerIntl.downHourLabel;\n  }\n\n  get upMinuteButtonLabel(): string {\n    return this.pickerIntl.upMinuteLabel;\n  }\n\n  get downMinuteButtonLabel(): string {\n    return this.pickerIntl.downMinuteLabel;\n  }\n\n  get upSecondButtonLabel(): string {\n    return this.pickerIntl.upSecondLabel;\n  }\n\n  get downSecondButtonLabel(): string {\n    return this.pickerIntl.downSecondLabel;\n  }\n\n  get hour12ButtonLabel(): string {\n    return this.isPM ? this.pickerIntl.hour12PMLabel : this.pickerIntl.hour12AMLabel;\n  }\n\n  @Output()\n  selectedChange = new EventEmitter<T>();\n\n  @HostBinding('class.datepicker-dt-timer')\n  get datepickerDTTimerClass(): boolean {\n    return true;\n  }\n\n  @HostBinding('attr.tabindex')\n  get datepickerDTTimeTabIndex(): number {\n    return -1;\n  }\n\n  constructor(\n    private ngZone: NgZone,\n    private elmRef: ElementRef,\n    private pickerIntl: DatepickerDateTimePickerIntlService,\n    private cdr: ChangeDetectorRef,\n    @Optional() private dateTimeAdapter: DatepickerDateTimeAdapter<T>,\n  ) {}\n\n  public ngOnInit() {}\n\n  /**\n   * Focus to the host element\n   * */\n  public focus() {\n    this.ngZone.runOutsideAngular(() => {\n      this.ngZone.onStable\n        .asObservable()\n        .pipe(take(1))\n        .subscribe(() => {\n          this.elmRef.nativeElement.focus();\n        });\n    });\n  }\n\n  /**\n   * Set the hour value via typing into timer box input\n   * We need this to handle the hour value when the timer is in hour12 mode\n   * */\n  public setHourValueViaInput(hours: number): void {\n    if (this.hour12Timer && this.isPM && hours >= 1 && hours <= 11) {\n      hours = hours + 12;\n    } else if (this.hour12Timer && !this.isPM && hours === 12) {\n      hours = 0;\n    }\n\n    this.setHourValue(hours);\n  }\n\n  public setHourValue(hours: number): void {\n    const m = this.dateTimeAdapter.setHours(this.pickerMoment, hours);\n    this.selectedChange.emit(m);\n    this.cdr.markForCheck();\n  }\n\n  public setMinuteValue(minutes: number): void {\n    const m = this.dateTimeAdapter.setMinutes(this.pickerMoment, minutes);\n    this.selectedChange.emit(m);\n    this.cdr.markForCheck();\n  }\n\n  public setSecondValue(seconds: number): void {\n    const m = this.dateTimeAdapter.setSeconds(this.pickerMoment, seconds);\n    this.selectedChange.emit(m);\n    this.cdr.markForCheck();\n  }\n\n  public setMeridiem(event: any): void {\n    this.isPM = !this.isPM;\n\n    let hours = this.hourValue;\n    if (this.isPM) {\n      hours = hours + 12;\n    } else {\n      hours = hours - 12;\n    }\n\n    if (hours >= 0 && hours <= 23) {\n      this.setHourValue(hours);\n    }\n\n    this.cdr.markForCheck();\n    event.preventDefault();\n  }\n\n  /**\n   * Check if the up hour button is enabled\n   */\n  public upHourEnabled(): boolean {\n    return !this.maxDateTime || this.compareHours(this.stepHour, this.maxDateTime) < 1;\n  }\n\n  /**\n   * Check if the down hour button is enabled\n   */\n  public downHourEnabled(): boolean {\n    return !this.minDateTime || this.compareHours(-this.stepHour, this.minDateTime) > -1;\n  }\n\n  /**\n   * Check if the up minute button is enabled\n   */\n  public upMinuteEnabled(): boolean {\n    return !this.maxDateTime || this.compareMinutes(this.stepMinute, this.maxDateTime) < 1;\n  }\n\n  /**\n   * Check if the down minute button is enabled\n   */\n  public downMinuteEnabled(): boolean {\n    return !this.minDateTime || this.compareMinutes(-this.stepMinute, this.minDateTime) > -1;\n  }\n\n  /**\n   * Check if the up second button is enabled\n   */\n  public upSecondEnabled(): boolean {\n    return !this.maxDateTime || this.compareSeconds(this.stepSecond, this.maxDateTime) < 1;\n  }\n\n  /**\n   * Check if the down second button is enabled\n   */\n  public downSecondEnabled(): boolean {\n    return !this.minDateTime || this.compareSeconds(-this.stepSecond, this.minDateTime) > -1;\n  }\n\n  /**\n   * PickerMoment's hour value +/- certain amount and compare it to the give date\n   * 1 is after the comparedDate\n   * -1 is before the comparedDate\n   * 0 is equal the comparedDate\n   * */\n  private compareHours(amount: number, comparedDate: T): number {\n    const hours = this.dateTimeAdapter.getHours(this.pickerMoment) + amount;\n    const result = this.dateTimeAdapter.setHours(this.pickerMoment, hours);\n    return this.dateTimeAdapter.compare(result, comparedDate);\n  }\n\n  /**\n   * PickerMoment's minute value +/- certain amount and compare it to the give date\n   * 1 is after the comparedDate\n   * -1 is before the comparedDate\n   * 0 is equal the comparedDate\n   * */\n  private compareMinutes(amount: number, comparedDate: T): number {\n    const minutes = this.dateTimeAdapter.getMinutes(this.pickerMoment) + amount;\n    const result = this.dateTimeAdapter.setMinutes(this.pickerMoment, minutes);\n    return this.dateTimeAdapter.compare(result, comparedDate);\n  }\n\n  /**\n   * PickerMoment's second value +/- certain amount and compare it to the give date\n   * 1 is after the comparedDate\n   * -1 is before the comparedDate\n   * 0 is equal the comparedDate\n   * */\n  private compareSeconds(amount: number, comparedDate: T): number {\n    const seconds = this.dateTimeAdapter.getSeconds(this.pickerMoment) + amount;\n    const result = this.dateTimeAdapter.setSeconds(this.pickerMoment, seconds);\n    return this.dateTimeAdapter.compare(result, comparedDate);\n  }\n\n  /**\n   * Get a valid date object\n   */\n  private getValidDate(obj: any): T | null {\n    return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n  }\n}\n","<rad-ui-datepicker-timer-box\n  [upBtnAriaLabel]=\"upHourButtonLabel\"\n  [downBtnAriaLabel]=\"downHourButtonLabel\"\n  [upBtnDisabled]=\"!upHourEnabled()\"\n  [downBtnDisabled]=\"!downHourEnabled()\"\n  [boxValue]=\"hourBoxValue\"\n  [value]=\"hourValue\"\n  [min]=\"0\"\n  [max]=\"23\"\n  [step]=\"stepHour\"\n  [inputLabel]=\"'Hour'\"\n  (inputChange)=\"setHourValueViaInput($event)\"\n  (valueChange)=\"setHourValue($event)\"\n></rad-ui-datepicker-timer-box>\n\n<rad-ui-datepicker-timer-box\n  [showDivider]=\"true\"\n  [upBtnAriaLabel]=\"upMinuteButtonLabel\"\n  [downBtnAriaLabel]=\"downMinuteButtonLabel\"\n  [upBtnDisabled]=\"!upMinuteEnabled()\"\n  [downBtnDisabled]=\"!downMinuteEnabled()\"\n  [value]=\"minuteValue\"\n  [min]=\"0\"\n  [max]=\"59\"\n  [step]=\"stepMinute\"\n  [inputLabel]=\"'Minute'\"\n  (inputChange)=\"setMinuteValue($event)\"\n  (valueChange)=\"setMinuteValue($event)\"\n></rad-ui-datepicker-timer-box>\n\n<rad-ui-datepicker-timer-box\n  *ngIf=\"showSecondsTimer\"\n  [showDivider]=\"true\"\n  [upBtnAriaLabel]=\"upSecondButtonLabel\"\n  [downBtnAriaLabel]=\"downSecondButtonLabel\"\n  [upBtnDisabled]=\"!upSecondEnabled()\"\n  [downBtnDisabled]=\"!downSecondEnabled()\"\n  [value]=\"secondValue\"\n  [min]=\"0\"\n  [max]=\"59\"\n  [step]=\"stepSecond\"\n  [inputLabel]=\"'Second'\"\n  (inputChange)=\"setSecondValue($event)\"\n  (valueChange)=\"setSecondValue($event)\"\n></rad-ui-datepicker-timer-box>\n\n<div *ngIf=\"hour12Timer\" class=\"datepicker-dt-timer-hour12\">\n  <button class=\"datepicker-dt-control-button datepicker-dt-timer-hour12-box\" type=\"button\" tabindex=\"0\" (click)=\"setMeridiem($event)\">\n    <span class=\"datepicker-dt-control-button-content\" tabindex=\"-1\">\n      {{ hour12ButtonLabel }}\n    </span>\n  </button>\n</div>\n","import {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  OnInit,\n  Optional,\n  ViewChild,\n} from '@angular/core';\nimport { AnimationEvent } from '@angular/animations';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { datepickerDateTimePickerAnimation } from '../../animations/datepicker-date-time-picker.animation';\nimport { DatepickerCalendarComponent } from '../calendar/datepicker-calendar.component';\nimport { DatepickerTimerComponent } from '../timer/datepicker-timer.component';\nimport { DatepickerDateTime, PickerType } from '../../classes/datepicker-date-time.class';\nimport { DatepickerDateTimePickerIntlService } from '../../services/datepicker-date-time-picker-intl.service';\nimport { DatepickerDateTimeAdapter } from '../../adapters/datepicker-date-time.adapter';\nimport { Observable, Subject } from 'rxjs';\n\n@Component({\n  selector: 'rad-ui-datepicker-date-time-picker-container',\n  templateUrl: './datepicker-date-time-picker-container.component.html',\n  styleUrls: ['./datepicker-date-time-picker-container.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n  animations: [datepickerDateTimePickerAnimation.transformPicker, datepickerDateTimePickerAnimation.fadeInPicker],\n})\nexport class DatepickerDateTimePickerContainerComponent<T> implements OnInit, AfterContentInit, AfterViewInit {\n  @ViewChild(DatepickerCalendarComponent)\n  calendar?: DatepickerCalendarComponent<T>;\n  @ViewChild(DatepickerTimerComponent)\n  timer?: DatepickerTimerComponent<T>;\n\n  defaultDateTimeFilter = (date: T | null) => true;\n  public picker?: DatepickerDateTime<T>;\n  public activeSelectedIndex = 0; // The current active SelectedIndex in range select mode (0: 'from', 1: 'to')\n\n  /**\n   * Stream emits when try to hide picker\n   * */\n  private hidePicker$ = new Subject<any>();\n\n  get hidePickerStream(): Observable<any> {\n    return this.hidePicker$.asObservable();\n  }\n\n  /**\n   * Stream emits when try to confirm the selected value\n   * */\n  private confirmSelected$ = new Subject<any>();\n\n  get confirmSelectedStream(): Observable<any> {\n    return this.confirmSelected$.asObservable();\n  }\n\n  private pickerOpened$ = new Subject<any>();\n\n  get pickerOpenedStream(): Observable<any> {\n    return this.pickerOpened$.asObservable();\n  }\n\n  /**\n   * The current picker moment. This determines which time period is shown and which date is\n   * highlighted when using keyboard navigation.\n   */\n  private _clamPickerMoment: T | null = null;\n\n  get pickerMoment() {\n    return <T>this._clamPickerMoment;\n  }\n\n  set pickerMoment(value: T | null) {\n    if (value) {\n      this._clamPickerMoment = this.dateTimeAdapter.clampDate(value, this.picker?.minDateTime, this.picker?.maxDateTime);\n    }\n    this.cdRef.markForCheck();\n  }\n\n  get pickerType(): PickerType {\n    return <PickerType>this.picker?.pickerType;\n  }\n\n  get cancelLabel(): string {\n    return this.pickerIntl.cancelBtnLabel;\n  }\n\n  get setLabel(): string {\n    return this.pickerIntl.setBtnLabel;\n  }\n\n  /**\n   * The range 'from' label\n   * */\n  get fromLabel(): string {\n    return this.pickerIntl.rangeFromLabel;\n  }\n\n  /**\n   * The range 'to' label\n   * */\n  get toLabel(): string {\n    return this.pickerIntl.rangeToLabel;\n  }\n\n  /**\n   * The range 'from' formatted value\n   * */\n  get fromFormattedValue(): string {\n    const value = this.picker?.selecteds ? this.picker?.selecteds[0] : null;\n    return value ? this.dateTimeAdapter.format(value, this.picker?.formatString) : '';\n  }\n\n  /**\n   * The range 'to' formatted value\n   * */\n  get toFormattedValue(): string {\n    const value = this.picker?.selecteds ? this.picker.selecteds[1] : null;\n    return value ? this.dateTimeAdapter.format(value, this.picker?.formatString) : '';\n  }\n\n  /**\n   * Cases in which the control buttons show in the picker\n   * 1) picker mode is 'dialog'\n   * 2) picker type is NOT 'calendar' and the picker mode is NOT 'inline'\n   * */\n  get showControlButtons(): boolean {\n    return this.picker?.pickerMode === 'dialog' || (this.picker?.pickerType !== 'calendar' && this.picker?.pickerMode !== 'inline');\n  }\n\n  get containerElm(): HTMLElement {\n    return this.elmRef.nativeElement;\n  }\n\n  @HostBinding('class.datepicker-dt-container')\n  get datepickerDTContainerClass(): boolean {\n    return true;\n  }\n\n  @HostBinding('class.datepicker-dt-popup-container')\n  get datepickerDTPopupContainerClass(): boolean {\n    return this.picker?.pickerMode === 'popup';\n  }\n\n  @HostBinding('class.datepicker-dt-dialog-container')\n  get datepickerDTDialogContainerClass(): boolean {\n    return this.picker?.pickerMode === 'dialog';\n  }\n\n  @HostBinding('class.datepicker-dt-inline-container')\n  get datepickerDTInlineContainerClass(): boolean {\n    return this.picker?.pickerMode === 'inline';\n  }\n\n  @HostBinding('class.datepicker-dt-container-disabled')\n  get datepickerDTContainerDisabledClass(): boolean {\n    return <boolean>this.picker?.disabled;\n  }\n\n  @HostBinding('attr.id')\n  get datepickerDTContainerId(): string {\n    return <string>this.picker?.id;\n  }\n\n  @HostBinding('@transformPicker')\n  get datepickerDTContainerAnimation(): any {\n    return this.picker?.pickerMode === 'inline' ? '' : 'enter';\n  }\n\n  constructor(\n    private cdRef: ChangeDetectorRef,\n    private elmRef: ElementRef,\n    private pickerIntl: DatepickerDateTimePickerIntlService,\n    @Optional() private dateTimeAdapter: DatepickerDateTimeAdapter<T>,\n  ) {}\n\n  public ngOnInit() {}\n\n  public ngAfterContentInit(): void {\n    this.initPicker();\n  }\n\n  public ngAfterViewInit(): void {\n    this.focusPicker();\n  }\n\n  @HostListener('@transformPicker.done', ['$event'])\n  public handleContainerAnimationDone(event: AnimationEvent): void {\n    const toState = event.toState;\n    if (toState === 'enter') {\n      this.pickerOpened$.next();\n    }\n  }\n\n  public dateSelected(date: T | null): void {\n    if (!date) {\n      return;\n    }\n    let result;\n\n    if (this.picker?.isInSingleMode) {\n      result = this.dateSelectedInSingleMode(date);\n      if (result) {\n        this.pickerMoment = result;\n        this.picker.select(result);\n      } else {\n        // we close the picker when result is null and pickerType is calendar.\n        if (this.pickerType === 'calendar') {\n          this.hidePicker$.next(null);\n        }\n      }\n      return;\n    }\n\n    if (this.picker?.isInRangeMode) {\n      result = this.dateSelectedInRangeMode(date);\n      if (result) {\n        this.pickerMoment = result[this.activeSelectedIndex];\n        this.picker.select(result);\n      }\n    }\n  }\n\n  public timeSelected(time: T | null): void {\n    if (!time) {\n      return;\n    }\n    this.pickerMoment = this.dateTimeAdapter.clone(time);\n\n    if (!this.picker?.dateTimeChecker(this.pickerMoment)) {\n      return;\n    }\n\n    if (this.picker.isInSingleMode) {\n      this.picker.select(this.pickerMoment);\n      return;\n    }\n\n    if (this.picker.isInRangeMode) {\n      const selecteds = [...(<T[]>this.picker?.selecteds)];\n\n      // check if the 'from' is after 'to' or 'to'is before 'from'\n      // In this case, we set both the 'from' and 'to' the same value\n      if (\n        (this.activeSelectedIndex === 0 && selecteds[1] && this.dateTimeAdapter.compare(this.pickerMoment, selecteds[1]) === 1) ||\n        (this.activeSelectedIndex === 1 && selecteds[0] && this.dateTimeAdapter.compare(this.pickerMoment, selecteds[0]) === -1)\n      ) {\n        selecteds[0] = this.pickerMoment;\n        selecteds[1] = this.pickerMoment;\n      } else {\n        selecteds[this.activeSelectedIndex] = this.pickerMoment;\n      }\n\n      this.picker.select(selecteds);\n    }\n  }\n\n  /**\n   * Handle click on cancel button\n   */\n  public onCancelClicked(event: any): void {\n    this.hidePicker$.next(null);\n    event.preventDefault();\n    return;\n  }\n\n  /**\n   * Handle click on set button\n   */\n  public onSetClicked(event: any): void {\n    if (!this.picker?.dateTimeChecker(this.pickerMoment)) {\n      this.hidePicker$.next(null);\n      event.preventDefault();\n      return;\n    }\n\n    this.confirmSelected$.next(event);\n    event.preventDefault();\n    return;\n  }\n\n  /**\n   * Handle click on inform radio group\n   */\n  public handleClickOnInfoGroup(event: any, index: number): void {\n    this.setActiveSelectedIndex(index);\n    event.preventDefault();\n    event.stopPropagation();\n  }\n\n  /**\n   * Handle click on inform radio group\n   */\n  public handleKeydownOnInfoGroup(event: any, next: any, index: number): void {\n    switch (event.keyCode) {\n      case DOWN_ARROW:\n      case RIGHT_ARROW:\n      case UP_ARROW:\n      case LEFT_ARROW:\n        next.focus();\n        this.setActiveSelectedIndex(index === 0 ? 1 : 0);\n        event.preventDefault();\n        event.stopPropagation();\n        break;\n\n      case SPACE:\n        this.setActiveSelectedIndex(index);\n        event.preventDefault();\n        event.stopPropagation();\n        break;\n\n      default:\n        return;\n    }\n  }\n\n  /**\n   * Set the value of activeSelectedIndex\n   */\n  private setActiveSelectedIndex(index: number): void {\n    if (this.picker?.selectMode === 'range' && this.activeSelectedIndex !== index) {\n      this.activeSelectedIndex = index;\n\n      const selected = (this.picker?.selecteds as T[])[this.activeSelectedIndex];\n      if (this.picker.selecteds && selected) {\n        this.pickerMoment = this.dateTimeAdapter.clone(selected);\n      }\n    }\n    return;\n  }\n\n  private initPicker(): void {\n    this.pickerMoment = this.picker?.selected || this.picker?.startAt || this.dateTimeAdapter.now();\n    this.activeSelectedIndex = this.picker?.selectMode === 'rangeTo' ? 1 : 0;\n  }\n\n  /**\n   * Select calendar date in single mode,\n   * it returns null when date is not selected.\n   */\n  private dateSelectedInSingleMode(date: T): T | null {\n    if (this.dateTimeAdapter.isSameDay(date, <T>this.picker?.selected)) {\n      return null;\n    }\n\n    return this.updateAndCheckCalendarDate(date);\n  }\n\n  /**\n   * Select dates in range Mode\n   */\n  private dateSelectedInRangeMode(date: T): T[] | null {\n    let from: T | null = (this.picker?.selecteds as T[])[0];\n    let to: T | null = (this.picker?.selecteds as T[])[1];\n\n    const result = this.updateAndCheckCalendarDate(date);\n\n    if (!result) {\n      return null;\n    }\n\n    // if the given calendar day is after or equal to 'from',\n    // set ths given date as 'to'\n    // otherwise, set it as 'from' and set 'to' to null\n    if (this.picker?.selectMode === 'range') {\n      if (\n        this.picker.selecteds &&\n        this.picker.selecteds.length &&\n        !to &&\n        from &&\n        this.dateTimeAdapter.differenceInCalendarDays(result, from) >= 0\n      ) {\n        to = result;\n        this.activeSelectedIndex = 1;\n      } else {\n        from = result;\n        to = null;\n        this.activeSelectedIndex = 0;\n      }\n    } else if (this.picker?.selectMode === 'rangeFrom') {\n      from = result;\n\n      // if the from value is after the to value, set the to value as null\n      if (to && this.dateTimeAdapter.compare(from, to) > 0) {\n        to = null;\n      }\n    } else if (this.picker?.selectMode === 'rangeTo') {\n      to = result;\n\n      // if the from value is after the to value, set the from value as null\n      if (from && this.dateTimeAdapter.compare(from, to) > 0) {\n        from = null;\n      }\n    }\n\n    return [<T>from, <T>to];\n  }\n\n  /**\n   * Update the given calendar date's time and check if it is valid\n   * Because the calendar date has 00:00:00 as default time, if the picker type is 'both',\n   * we need to update the given calendar date's time before selecting it.\n   * if it is valid, return the updated dateTime\n   * if it is not valid, return null\n   */\n  private updateAndCheckCalendarDate(date: T): T | null {\n    let result;\n\n    // if the picker is 'both', update the calendar date's time value\n    if (this.picker?.pickerType === 'both') {\n      result = this.dateTimeAdapter.createDate(\n        this.dateTimeAdapter.getYear(date),\n        this.dateTimeAdapter.getMonth(date),\n        this.dateTimeAdapter.getDate(date),\n        this.dateTimeAdapter.getHours(this.pickerMoment),\n        this.dateTimeAdapter.getMinutes(this.pickerMoment),\n        this.dateTimeAdapter.getSeconds(this.pickerMoment),\n      );\n      result = this.dateTimeAdapter.clampDate(result, this.picker.minDateTime, this.picker.maxDateTime);\n    } else {\n      result = this.dateTimeAdapter.clone(date);\n    }\n\n    // check the updated dateTime\n    return this.picker?.dateTimeChecker(result) ? result : null;\n  }\n\n  /**\n   * Focus to the picker\n   * */\n  private focusPicker(): void {\n    if (this.picker?.pickerMode === 'inline') {\n      return;\n    }\n\n    if (this.calendar) {\n      this.calendar.focusActiveCell();\n    } else if (this.timer) {\n      this.timer.focus();\n    }\n  }\n}\n","<div\n  [cdkTrapFocus]=\"picker?.pickerMode !== 'inline'\"\n  [@fadeInPicker]=\"picker?.pickerMode === 'inline' ? '' : 'enter'\"\n  class=\"datepicker-dt-container-inner\"\n>\n  <rad-ui-datepicker-calendar\n    *ngIf=\"pickerType === 'both' || pickerType === 'calendar'\"\n    class=\"datepicker-dt-container-row\"\n    [firstDayOfWeek]=\"picker?.firstDayOfWeek || 0\"\n    [(pickerMoment)]=\"pickerMoment\"\n    [selected]=\"picker?.selected || null\"\n    [selecteds]=\"picker?.selecteds || []\"\n    [selectMode]=\"picker?.selectMode || 'single'\"\n    [minDate]=\"picker?.minDateTime || null\"\n    [maxDate]=\"picker?.maxDateTime || null\"\n    [dateFilter]=\"picker?.dateTimeFilter || defaultDateTimeFilter\"\n    [startView]=\"picker?.startView || 'month'\"\n    [hideOtherMonths]=\"picker?.hideOtherMonths || false\"\n    (yearSelected)=\"picker?.selectYear($event)\"\n    (monthSelected)=\"picker?.selectMonth($event)\"\n    (selectedChange)=\"dateSelected($event)\"\n  ></rad-ui-datepicker-calendar>\n\n  <rad-ui-datepicker-timer\n    *ngIf=\"pickerType === 'both' || pickerType === 'timer'\"\n    class=\"datepicker-dt-container-row\"\n    [pickerMoment]=\"pickerMoment\"\n    [minDateTime]=\"picker?.minDateTime || null\"\n    [maxDateTime]=\"picker?.maxDateTime || null\"\n    [showSecondsTimer]=\"picker?.showSecondsTimer || false\"\n    [hour12Timer]=\"picker?.hour12Timer || false\"\n    [stepHour]=\"picker?.stepHour || 1\"\n    [stepMinute]=\"picker?.stepMinute || 1\"\n    [stepSecond]=\"picker?.stepSecond || 1\"\n    (selectedChange)=\"timeSelected($event)\"\n  ></rad-ui-datepicker-timer>\n\n  <div *ngIf=\"picker?.isInRangeMode\" role=\"radiogroup\" class=\"datepicker-dt-container-info datepicker-dt-container-row\">\n    <div\n      role=\"radio\"\n      [tabindex]=\"activeSelectedIndex === 0 ? 0 : -1\"\n      [attr.aria-checked]=\"activeSelectedIndex === 0\"\n      class=\"datepicker-dt-control datepicker-dt-container-range datepicker-dt-container-from\"\n      [ngClass]=\"{ 'datepicker-dt-container-info-active': activeSelectedIndex === 0 }\"\n      (click)=\"handleClickOnInfoGroup($event, 0)\"\n      (keydown)=\"handleKeydownOnInfoGroup($event, to, 0)\"\n      #from\n    >\n      <span class=\"datepicker-dt-control-content datepicker-dt-container-range-content\" tabindex=\"-1\">\n        <span class=\"datepicker-dt-container-info-label\">{{ fromLabel }}:</span>\n        <span class=\"datepicker-dt-container-info-value\">{{ fromFormattedValue }}</span>\n      </span>\n    </div>\n    <div\n      role=\"radio\"\n      [tabindex]=\"activeSelectedIndex === 1 ? 0 : -1\"\n      [attr.aria-checked]=\"activeSelectedIndex === 1\"\n      class=\"datepicker-dt-control datepicker-dt-container-range datepicker-dt-container-to\"\n      [ngClass]=\"{ 'datepicker-dt-container-info-active': activeSelectedIndex === 1 }\"\n      (click)=\"handleClickOnInfoGroup($event, 1)\"\n      (keydown)=\"handleKeydownOnInfoGroup($event, from, 1)\"\n      #to\n    >\n      <span class=\"datepicker-dt-control-content datepicker-dt-container-range-content\" tabindex=\"-1\">\n        <span class=\"datepicker-dt-container-info-label\">{{ toLabel }}:</span>\n        <span class=\"datepicker-dt-container-info-value\">{{ toFormattedValue }}</span>\n      </span>\n    </div>\n  </div>\n\n  <div *ngIf=\"showControlButtons\" class=\"datepicker-dt-container-buttons datepicker-dt-container-row\">\n    <button\n      class=\"datepicker-dt-control datepicker-dt-control-button datepicker-dt-container-control-button\"\n      type=\"button\"\n      tabindex=\"0\"\n      (click)=\"onCancelClicked($event)\"\n    >\n      <span class=\"datepicker-dt-control-content datepicker-dt-control-button-content\" tabindex=\"-1\">\n        {{ cancelLabel }}\n      </span>\n    </button>\n    <button\n      class=\"datepicker-dt-control datepicker-dt-control-button datepicker-dt-container-control-button\"\n      type=\"button\"\n      tabindex=\"0\"\n      (click)=\"onSetClicked($event)\"\n    >\n      <span class=\"datepicker-dt-control-content datepicker-dt-control-button-content\" tabindex=\"-1\">\n        {{ setLabel }}\n      </span>\n    </button>\n  </div>\n</div>\n","import {\n  AfterContentInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  HostListener,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  Renderer2,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator,\n  ValidatorFn,\n  Validators,\n} from '@angular/forms';\nimport { DOWN_ARROW } from '@angular/cdk/keycodes';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DatepickerDateTimePickerComponent } from '../components/date-time-picker/datepicker-date-time-picker.component';\nimport { SelectMode } from '../classes/datepicker-date-time.class';\nimport { Subscription } from 'rxjs';\nimport { DatepickerDateTimeAdapter } from '../adapters/datepicker-date-time.adapter';\nimport { DATEPICKER_DATE_TIME_FORMATS, DatepickerDateTimeFormats } from '../classes/datepicker-date-time-format.class';\n\nexport const DATEPICKER_DATETIME_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => DatepickerDateTimePickerInputDirective),\n  multi: true,\n};\n\nexport const DATEPICKER_DATETIME_VALIDATORS: any = {\n  provide: NG_VALIDATORS,\n  useExisting: forwardRef(() => DatepickerDateTimePickerInputDirective),\n  multi: true,\n};\n\n@Directive({\n  selector: 'input[radUiDatepickerDateTime]',\n  providers: [DATEPICKER_DATETIME_VALUE_ACCESSOR, DATEPICKER_DATETIME_VALIDATORS],\n})\nexport class DatepickerDateTimePickerInputDirective<T> implements OnInit, AfterContentInit, OnDestroy, ControlValueAccessor, Validator {\n  /**\n   * The date time picker that this input is associated with.\n   * */\n  @Input()\n  set radUiDatepickerDateTime(value: DatepickerDateTimePickerComponent<T>) {\n    this.registerDateTimePicker(value);\n  }\n\n  /**\n   * A function to filter date time\n   */\n  @Input()\n  set datepickerDateTimeFilter(filter: (date: T | null) => boolean) {\n    this._dateTimeFilter = filter;\n    this.validatorOnChange();\n  }\n\n  get dateTimeFilter() {\n    return this._dateTimeFilter;\n  }\n\n  get disabled() {\n    return !!this._disabled;\n  }\n\n  set disabled(value: boolean) {\n    const newValue = coerceBooleanProperty(value);\n    const element = this.elmRef.nativeElement;\n\n    if (this._disabled !== newValue) {\n      this._disabled = newValue;\n      this.disabledChange.emit(newValue);\n    }\n\n    // We need to null check the `blur` method, because it's undefined during SSR.\n    if (newValue && element.blur) {\n      // Normally, native input elements automatically blur if they turn disabled. This behavior\n      // is problematic, because it would mean that it triggers another change detection cycle,\n      // which then causes a changed after checked error if the input element was focused before.\n      element.blur();\n    }\n  }\n\n  @Input()\n  get min(): T | null {\n    return this._min;\n  }\n\n  set min(value: T | null) {\n    this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n    this.validatorOnChange();\n  }\n\n  @Input()\n  get max(): T | null {\n    return this._max;\n  }\n\n  set max(value: T | null) {\n    this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n    this.validatorOnChange();\n  }\n\n  @Input()\n  get selectMode() {\n    return this._selectMode;\n  }\n\n  set selectMode(mode: SelectMode) {\n    if (mode !== 'single' && mode !== 'range' && mode !== 'rangeFrom' && mode !== 'rangeTo') {\n      throw Error('DatepickerDateTime Error: invalid selectMode value!');\n    }\n\n    this._selectMode = mode;\n  }\n\n  @Input()\n  get value() {\n    return this._value;\n  }\n\n  set value(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this.lastValueValid = !value || this.dateTimeAdapter.isValid(value);\n    value = this.getValidDate(value);\n    const oldDate = this._value;\n    this._value = value;\n\n    // set the input property 'value'\n    this.formatNativeInputValue();\n\n    // check if the input value changed\n    if (!this.dateTimeAdapter.isEqual(<T>oldDate, <T>value)) {\n      this.valueChange.emit(value);\n    }\n  }\n\n  @Input()\n  get values() {\n    return this._values;\n  }\n\n  set values(values: T[]) {\n    if (values && values.length > 0) {\n      this._values = <T[]>values.map((v) => {\n        v = <T>this.dateTimeAdapter.deserialize(v);\n        return this.getValidDate(v);\n      });\n      this.lastValueValid =\n        (!this._values[0] || this.dateTimeAdapter.isValid(this._values[0])) &&\n        (!this._values[1] || this.dateTimeAdapter.isValid(this._values[1]));\n    } else {\n      this._values = [];\n      this.lastValueValid = true;\n    }\n\n    // set the input property 'value'\n    this.formatNativeInputValue();\n\n    this.valueChange.emit(this._values);\n  }\n\n  get elementRef(): ElementRef {\n    return this.elmRef;\n  }\n\n  get isInSingleMode(): boolean {\n    return this._selectMode === 'single';\n  }\n\n  get isInRangeMode(): boolean {\n    return this._selectMode === 'range' || this._selectMode === 'rangeFrom' || this._selectMode === 'rangeTo';\n  }\n\n  @HostBinding('attr.aria-haspopup')\n  get datepickerDateTimeInputAriaHaspopup(): boolean {\n    return true;\n  }\n\n  @HostBinding('attr.aria-owns')\n  get datepickerDateTimeInputAriaOwns(): string {\n    return (this.dtPicker && this.dtPicker.opened && this.dtPicker.id) || '';\n  }\n\n  @HostBinding('attr.min')\n  get minIso8601(): string {\n    return this.min ? this.dateTimeAdapter.toIso8601(this.min) : '';\n  }\n\n  @HostBinding('attr.max')\n  get maxIso8601(): string {\n    return this.max ? this.dateTimeAdapter.toIso8601(this.max) : '';\n  }\n\n  @HostBinding('disabled')\n  get datepickerDateTimeInputDisabled(): boolean {\n    return this.disabled;\n  }\n\n  constructor(\n    private elmRef: ElementRef,\n    private renderer: Renderer2,\n    @Optional() private dateTimeAdapter: DatepickerDateTimeAdapter<T>,\n    @Optional() @Inject(DATEPICKER_DATE_TIME_FORMATS) private dateTimeFormats: DatepickerDateTimeFormats,\n  ) {\n    if (!this.dateTimeAdapter) {\n      throw Error(`DatepickerDateTimePicker: No provider found for DateTimePicker.`);\n    }\n\n    if (!this.dateTimeFormats) {\n      throw Error(`DatepickerDateTimePicker: No provider found for DATEPICKER_DATE_TIME_FORMATS.`);\n    }\n\n    this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n      this.value = this.value;\n    });\n  }\n\n  private _dateTimeFilter: (date: T | null) => boolean = (date: T | null) => true;\n\n  /** Whether the date time picker's input is disabled. */\n  @Input()\n  private _disabled: boolean = false;\n\n  /** The minimum valid date. */\n  private _min: T | null = null;\n\n  /** The maximum valid date. */\n  private _max: T | null = null;\n\n  /**\n   * The picker's select mode\n   */\n  private _selectMode: SelectMode = 'single';\n\n  /**\n   * The character to separate the 'from' and 'to' in input value\n   */\n  @Input()\n  rangeSeparator = '~';\n\n  private _value: T | null = null;\n\n  private _values: T[] = [];\n\n  /**\n   * Callback to invoke when `change` event is fired on this `<input>`\n   * */\n  @Output()\n  dateTimeChange = new EventEmitter<any>();\n\n  /**\n   * Callback to invoke when an `input` event is fired on this `<input>`.\n   * */\n  @Output()\n  dateTimeInput = new EventEmitter<any>();\n\n  /** The date-time-picker that this input is associated with. */\n  public dtPicker?: DatepickerDateTimePickerComponent<T>;\n\n  private dtPickerSub: Subscription = Subscription.EMPTY;\n  private localeSub: Subscription = Subscription.EMPTY;\n\n  private lastValueValid = true;\n\n  /** Emits when the value changes (either due to user input or programmatic change). */\n  public valueChange = new EventEmitter<T[] | T | null>();\n  /** Emits when the disabled state has changed */\n  public disabledChange = new EventEmitter<boolean>();\n\n  private onModelChange: Function = () => {};\n  private onModelTouched: Function = () => {};\n  private validatorOnChange: Function = () => {};\n\n  /** The form control validator for whether the input parses. */\n  private parseValidator: ValidatorFn = (): ValidationErrors | null => {\n    return this.lastValueValid ? null : { datepickerDateTimeParse: { text: this.elmRef.nativeElement.value } };\n  };\n\n  /** The form control validator for the min date. */\n  private minValidator: ValidatorFn = (control: AbstractControl) => {\n    if (this.isInSingleMode) {\n      const controlValue = this.getValidDate(this.dateTimeAdapter.deserialize(control.value));\n      return !this.min || !controlValue || this.dateTimeAdapter.compare(this.min, controlValue) <= 0\n        ? null\n        : { datepickerDateTimeMin: { min: this.min, actual: controlValue } };\n    } else if (this.isInRangeMode && control.value) {\n      const controlValueFrom = this.getValidDate(this.dateTimeAdapter.deserialize(control.value[0]));\n      const controlValueTo = this.getValidDate(this.dateTimeAdapter.deserialize(control.value[1]));\n      return !this.min || !controlValueFrom || !controlValueTo || this.dateTimeAdapter.compare(this.min, controlValueFrom) <= 0\n        ? null\n        : {\n            datepickerDateTimeMin: {\n              min: this.min,\n              actual: [controlValueFrom, controlValueTo],\n            },\n          };\n    }\n    return {};\n  };\n\n  /** The form control validator for the max date. */\n  private maxValidator: ValidatorFn = (control: AbstractControl) => {\n    if (this.isInSingleMode) {\n      const controlValue = this.getValidDate(this.dateTimeAdapter.deserialize(control.value));\n      return !this.max || !controlValue || this.dateTimeAdapter.compare(this.max, controlValue) >= 0\n        ? {}\n        : { datepickerDateTimeMax: { max: this.max, actual: controlValue } };\n    } else if (this.isInRangeMode && control.value) {\n      const controlValueFrom = this.getValidDate(this.dateTimeAdapter.deserialize(control.value[0]));\n      const controlValueTo = this.getValidDate(this.dateTimeAdapter.deserialize(control.value[1]));\n      return !this.max || !controlValueFrom || !controlValueTo || this.dateTimeAdapter.compare(this.max, controlValueTo) >= 0\n        ? {}\n        : {\n            datepickerDateTimeMax: {\n              max: this.max,\n              actual: [controlValueFrom, controlValueTo],\n            },\n          };\n    }\n    return {};\n  };\n\n  /** The form control validator for the date filter. */\n  private filterValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n    const controlValue = this.getValidDate(this.dateTimeAdapter.deserialize(control.value));\n    return !this._dateTimeFilter || !controlValue || this._dateTimeFilter(controlValue) ? null : { datepickerDateTimeFilter: true };\n  };\n\n  /**\n   * The form control validator for the range.\n   * Check whether the 'before' value is before the 'to' value\n   * */\n  private rangeValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n    if (this.isInSingleMode || !control.value) {\n      return null;\n    }\n\n    const controlValueFrom = this.getValidDate(this.dateTimeAdapter.deserialize(control.value[0]));\n    const controlValueTo = this.getValidDate(this.dateTimeAdapter.deserialize(control.value[1]));\n\n    return !controlValueFrom || !controlValueTo || this.dateTimeAdapter.compare(controlValueFrom, controlValueTo) <= 0\n      ? null\n      : { datepickerDateTimeRange: true };\n  };\n\n  /** The combined form control validator for this input. */\n  // tslint:disable-next-line:member-ordering\n  private validator: ValidatorFn | null = Validators.compose([\n    this.parseValidator,\n    this.minValidator,\n    this.maxValidator,\n    this.filterValidator,\n    this.rangeValidator,\n  ]);\n\n  public ngOnInit(): void {\n    if (!this.dtPicker) {\n      throw Error(`DatepickerDateTimePicker: the picker input doesn't have any associated app-datepicker-date-time-picker component`);\n    }\n  }\n\n  public ngAfterContentInit(): void {\n    this.dtPickerSub = <Subscription>this.dtPicker?.confirmSelectedChange.subscribe((selecteds: T[] | T) => {\n      if (Array.isArray(selecteds)) {\n        this.values = selecteds;\n      } else {\n        this.value = selecteds;\n      }\n\n      this.onModelChange(selecteds);\n      this.onModelTouched();\n      this.dateTimeChange.emit({\n        source: this,\n        value: selecteds,\n        input: this.elmRef.nativeElement,\n      });\n      this.dateTimeInput.emit({\n        source: this,\n        value: selecteds,\n        input: this.elmRef.nativeElement,\n      });\n    });\n  }\n\n  public ngOnDestroy(): void {\n    this.dtPickerSub.unsubscribe();\n    this.localeSub.unsubscribe();\n    this.valueChange.complete();\n    this.disabledChange.complete();\n  }\n\n  public writeValue(value: any): void {\n    if (this.isInSingleMode) {\n      this.value = value;\n    } else {\n      this.values = value;\n    }\n  }\n\n  public registerOnChange(fn: any): void {\n    this.onModelChange = fn;\n  }\n\n  public registerOnTouched(fn: any): void {\n    this.onModelTouched = fn;\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  public validate(c: AbstractControl) {\n    return this.validator ? this.validator(c) : {};\n  }\n\n  public registerOnValidatorChange(fn: () => void): void {\n    this.validatorOnChange = fn;\n  }\n\n  /**\n   * Open the picker when user hold alt + DOWN_ARROW\n   * */\n  @HostListener('keydown', ['$event'])\n  public handleKeydownOnHost(event: KeyboardEvent): void {\n    if (event.altKey && event.keyCode === DOWN_ARROW) {\n      this.dtPicker?.open();\n      event.preventDefault();\n    }\n  }\n\n  @HostListener('blur', ['$event'])\n  public handleBlurOnHost(event: Event): void {\n    this.onModelTouched();\n  }\n\n  @HostListener('input', ['$event'])\n  public handleInputOnHost(event: any): void {\n    const value = event.target.value;\n    if (this._selectMode === 'single') {\n      this.changeInputInSingleMode(value);\n    } else if (this._selectMode === 'range') {\n      this.changeInputInRangeMode(value);\n    } else {\n      this.changeInputInRangeFromToMode(value);\n    }\n  }\n\n  @HostListener('input', ['$event'])\n  public handleChangeOnHost(event: any): void {\n    let v;\n    if (this.isInSingleMode) {\n      v = this.value;\n    } else if (this.isInRangeMode) {\n      v = this.values;\n    }\n\n    this.dateTimeChange.emit({\n      source: this,\n      value: v,\n      input: this.elmRef.nativeElement,\n    });\n  }\n\n  /**\n   * Set the native input property 'value'\n   */\n  public formatNativeInputValue(): void {\n    if (this.isInSingleMode) {\n      this.renderer.setProperty(\n        this.elmRef.nativeElement,\n        'value',\n        this._value ? this.dateTimeAdapter.format(this._value, this.dtPicker?.formatString) : '',\n      );\n    } else if (this.isInRangeMode) {\n      if (this._values && this.values.length > 0) {\n        const from = this._values[0];\n        const to = this._values[1];\n\n        const fromFormatted = from ? this.dateTimeAdapter.format(from, this.dtPicker?.formatString) : '';\n        const toFormatted = to ? this.dateTimeAdapter.format(to, this.dtPicker?.formatString) : '';\n\n        if (!fromFormatted && !toFormatted) {\n          this.renderer.setProperty(this.elmRef.nativeElement, 'value', null);\n        } else {\n          if (this._selectMode === 'range') {\n            this.renderer.setProperty(this.elmRef.nativeElement, 'value', fromFormatted + ' ' + this.rangeSeparator + ' ' + toFormatted);\n          } else if (this._selectMode === 'rangeFrom') {\n            this.renderer.setProperty(this.elmRef.nativeElement, 'value', fromFormatted);\n          } else if (this._selectMode === 'rangeTo') {\n            this.renderer.setProperty(this.elmRef.nativeElement, 'value', toFormatted);\n          }\n        }\n      } else {\n        this.renderer.setProperty(this.elmRef.nativeElement, 'value', '');\n      }\n    }\n\n    return;\n  }\n\n  /**\n   * Register the relationship between this input and its picker component\n   */\n  private registerDateTimePicker(picker: DatepickerDateTimePickerComponent<T>) {\n    if (picker) {\n      this.dtPicker = picker;\n      this.dtPicker.registerInput(this);\n    }\n  }\n\n  /**\n   * Convert a given obj to a valid date object\n   */\n  private getValidDate(obj: any): T | null {\n    return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n  }\n\n  /**\n   * Convert a time string to a date-time string\n   * When pickerType is 'timer', the value in the picker's input is a time string.\n   * The dateTimeAdapter parse fn could not parse a time string to a Date Object.\n   * Therefore we need this fn to convert a time string to a date-time string.\n   */\n  private convertTimeStringToDateTimeString(timeString: string, dateTime: T): string | null {\n    if (timeString) {\n      const v = dateTime || this.dateTimeAdapter.now();\n      const dateString = this.dateTimeAdapter.format(v, this.dateTimeFormats.datePickerInput);\n      return dateString + ' ' + timeString;\n    } else {\n      return null;\n    }\n  }\n\n  /**\n   * Handle input change in single mode\n   */\n  private changeInputInSingleMode(inputValue: string): void {\n    let value = inputValue;\n    if (this.dtPicker?.pickerType === 'timer') {\n      value = <string>this.convertTimeStringToDateTimeString(value, <T>this.value);\n    }\n\n    let result = this.dateTimeAdapter.parse(value, this.dateTimeFormats.parseInput);\n    this.lastValueValid = !result || this.dateTimeAdapter.isValid(result);\n    result = this.getValidDate(result);\n\n    // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\n    // result equals to null means there is input event, but the input value is invalid\n    if (!this.isSameValue(result, this._value) || result === null) {\n      this._value = result;\n      this.valueChange.emit(result);\n      this.onModelChange(result);\n      this.dateTimeInput.emit({\n        source: this,\n        value: result,\n        input: this.elmRef.nativeElement,\n      });\n    }\n  }\n\n  /**\n   * Handle input change in rangeFrom or rangeTo mode\n   */\n  private changeInputInRangeFromToMode(inputValue: string): void {\n    const originalValue = this._selectMode === 'rangeFrom' ? this._values[0] : this._values[1];\n\n    if (this.dtPicker?.pickerType === 'timer') {\n      inputValue = <string>this.convertTimeStringToDateTimeString(inputValue, originalValue);\n    }\n\n    let result = this.dateTimeAdapter.parse(inputValue, this.dateTimeFormats.parseInput);\n    this.lastValueValid = !result || this.dateTimeAdapter.isValid(result);\n    result = this.getValidDate(result);\n\n    // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\n    if (\n      (this._selectMode === 'rangeFrom' && this.isSameValue(result, this._values[0]) && result) ||\n      (this._selectMode === 'rangeTo' && this.isSameValue(result, this._values[1]) && result)\n    ) {\n      return;\n    }\n\n    this._values = this._selectMode === 'rangeFrom' ? <T[]>[result, this._values[1]] : <T[]>[this._values[0], result];\n    this.valueChange.emit(this._values);\n    this.onModelChange(this._values);\n    this.dateTimeInput.emit({\n      source: this,\n      value: this._values,\n      input: this.elmRef.nativeElement,\n    });\n  }\n\n  /**\n   * Handle input change in range mode\n   */\n  private changeInputInRangeMode(inputValue: string): void {\n    const selecteds = inputValue.split(this.rangeSeparator);\n    let fromString = selecteds[0];\n    let toString = selecteds[1];\n\n    if (this.dtPicker?.pickerType === 'timer') {\n      fromString = <string>this.convertTimeStringToDateTimeString(fromString, this.values[0]);\n      toString = <string>this.convertTimeStringToDateTimeString(toString, this.values[1]);\n    }\n\n    let from = this.dateTimeAdapter.parse(fromString, this.dateTimeFormats.parseInput);\n    let to = this.dateTimeAdapter.parse(toString, this.dateTimeFormats.parseInput);\n    this.lastValueValid = (!from || this.dateTimeAdapter.isValid(from)) && (!to || this.dateTimeAdapter.isValid(to));\n    from = this.getValidDate(from);\n    to = this.getValidDate(to);\n\n    // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\n    if (!this.isSameValue(from, this._values[0]) || !this.isSameValue(to, this._values[1]) || (from === null && to === null)) {\n      this._values = <T[]>[from, to];\n      this.valueChange.emit(this._values);\n      this.onModelChange(this._values);\n      this.dateTimeInput.emit({\n        source: this,\n        value: this._values,\n        input: this.elmRef.nativeElement,\n      });\n    }\n  }\n\n  /**\n   * Check if the two value is the same\n   */\n  private isSameValue(first: T | null, second: T | null): boolean {\n    if (first && second) {\n      return this.dateTimeAdapter.compare(first, second) === 0;\n    }\n\n    return first === second;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  Inject,\n  Input,\n  OnInit,\n  Optional,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DatepickerDateTime, PickerMode, PickerType, SelectMode } from '../../classes/datepicker-date-time.class';\nimport { DatepickerDateTimePickerContainerComponent } from '../date-time-picker-container/datepicker-date-time-picker-container.component';\nimport { DatepickerDateTimeAdapter } from '../../adapters/datepicker-date-time.adapter';\nimport { DATEPICKER_DATE_TIME_FORMATS, DatepickerDateTimeFormats } from '../../classes/datepicker-date-time-format.class';\nimport { DATEPICKER_DATETIME_VALUE_ACCESSOR } from \"../../directives/datepicker-date-time-picker-input.directive\";\n\n@Component({\n  selector: 'rad-ui-datepicker-date-time-inline',\n  templateUrl: './datepicker-date-time-inline.component.html',\n  styleUrls: ['./datepicker-date-time-inline.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n  providers: [DATEPICKER_DATETIME_VALUE_ACCESSOR],\n})\nexport class DatepickerDateTimeInlineComponent<T> extends DatepickerDateTime<T> implements OnInit, ControlValueAccessor {\n  @ViewChild(DatepickerDateTimePickerContainerComponent, { static: true }) container?: DatepickerDateTimePickerContainerComponent<T>;\n\n  /**\n   * Set the type of the dateTime picker\n   *      'both' -- show both calendar and timer\n   *      'calendar' -- show only calendar\n   *      'timer' -- show only timer\n   */\n  private _pickerType: PickerType = 'both';\n  @Input()\n  get pickerType(): PickerType {\n    return this._pickerType;\n  }\n\n  set pickerType(val: PickerType) {\n    if (val !== this._pickerType) {\n      this._pickerType = val;\n    }\n  }\n\n  private _disabled = false;\n  @Input()\n  override get disabled(): boolean {\n    return !!this._disabled;\n  }\n\n  override set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n  }\n\n  private _selectMode: SelectMode = 'single';\n  @Input()\n  get selectMode() {\n    return this._selectMode;\n  }\n\n  set selectMode(mode: SelectMode) {\n    if (mode !== 'single' && mode !== 'range' && mode !== 'rangeFrom' && mode !== 'rangeTo') {\n      throw Error('DatepickerDateTime Error: invalid selectMode value!');\n    }\n\n    this._selectMode = mode;\n  }\n\n  /** The date to open the calendar to initially. */\n  private _startAt: T | null = null;\n  @Input()\n  get startAt(): T | null {\n    if (this._startAt) {\n      return this._startAt;\n    }\n\n    if (this.selectMode === 'single') {\n      return this.value || null;\n    } else if (this.selectMode === 'range' || this.selectMode === 'rangeFrom') {\n      return this.values[0] || null;\n    } else if (this.selectMode === 'rangeTo') {\n      return this.values[1] || null;\n    } else {\n      return null;\n    }\n  }\n\n  set startAt(date: T | null) {\n    this._startAt = this.getValidDate(this.dateTimeAdapter.deserialize(date));\n  }\n\n  private _dateTimeFilter?: (date: T | null) => boolean;\n  @Input('datepickerDateTimeFilter')\n  get dateTimeFilter() {\n    return <(date: T | null) => boolean>this._dateTimeFilter;\n  }\n\n  set dateTimeFilter(filter: (date: T | null) => boolean) {\n    this._dateTimeFilter = filter;\n  }\n\n  /** The minimum valid date. */\n  private _min: T | null = null;\n\n  get minDateTime(): T | null {\n    return this._min || null;\n  }\n\n  @Input('min')\n  set minDateTime(value: T | null) {\n    this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n    this.cdr.markForCheck();\n  }\n\n  /** The maximum valid date. */\n  private _max: T | null = null;\n\n  get maxDateTime(): T | null {\n    return this._max || null;\n  }\n\n  @Input('max')\n  set maxDateTime(value: T | null) {\n    this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n    this.cdr.markForCheck();\n  }\n\n  private _value: T | null = null;\n  @Input()\n  get value() {\n    return this._value;\n  }\n\n  set value(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    value = this.getValidDate(value);\n    this._value = value;\n    this.selected = value;\n  }\n\n  private _values: T[] = [];\n  @Input()\n  get values() {\n    return this._values;\n  }\n\n  set values(values: T[]) {\n    if (values && values.length > 0) {\n      values = <T[]>values.map((v) => {\n        v = <T>this.dateTimeAdapter.deserialize(v);\n        v = <T>this.getValidDate(v);\n        return v ? this.dateTimeAdapter.clone(v) : null;\n      });\n      this._values = [...values];\n      this.selecteds = [...values];\n    } else {\n      this._values = [];\n      this.selecteds = [];\n    }\n  }\n\n  /**\n   * Emits selected year in multi-year view\n   * This doesn't imply a change on the selected date.\n   * */\n  @Output()\n  yearSelected = new EventEmitter<T>();\n\n  /**\n   * Emits selected month in year view\n   * This doesn't imply a change on the selected date.\n   * */\n  @Output()\n  monthSelected = new EventEmitter<T>();\n\n  private _selected: T | null = null;\n  get selected() {\n    return this._selected;\n  }\n\n  set selected(value: T | null) {\n    this._selected = value;\n    this.cdr.markForCheck();\n  }\n\n  private _selecteds: T[] = [];\n  get selecteds() {\n    return this._selecteds;\n  }\n\n  set selecteds(values: T[]) {\n    this._selecteds = values;\n    this.cdr.markForCheck();\n  }\n\n  get opened(): boolean {\n    return true;\n  }\n\n  get pickerMode(): PickerMode {\n    return 'inline';\n  }\n\n  get isInSingleMode(): boolean {\n    return this._selectMode === 'single';\n  }\n\n  get isInRangeMode(): boolean {\n    return this._selectMode === 'range' || this._selectMode === 'rangeFrom' || this._selectMode === 'rangeTo';\n  }\n\n  @HostBinding('class.datepicker-dt-inline')\n  get datepickerDTInlineClass(): boolean {\n    return true;\n  }\n\n  private onModelChange: Function = () => {};\n  private onModelTouched: Function = () => {};\n\n  constructor(\n    protected cdr: ChangeDetectorRef,\n    @Optional() protected override dateTimeAdapter: DatepickerDateTimeAdapter<T>,\n    @Optional()\n    @Inject(DATEPICKER_DATE_TIME_FORMATS)\n    protected override dateTimeFormats: DatepickerDateTimeFormats,\n  ) {\n    super(dateTimeAdapter, dateTimeFormats);\n  }\n\n  public ngOnInit() {\n    this.container ? (this.container.picker = this) : null;\n  }\n\n  public writeValue(value: any): void {\n    if (this.isInSingleMode) {\n      this.value = value;\n      this.container ? (this.container.pickerMoment = value) : null;\n    } else {\n      this.values = value;\n      this.container ? (this.container.pickerMoment = this._values[this.container.activeSelectedIndex]) : null;\n    }\n  }\n\n  public registerOnChange(fn: any): void {\n    this.onModelChange = fn;\n  }\n\n  public registerOnTouched(fn: any): void {\n    this.onModelTouched = fn;\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  public select(date: T[] | T): void {\n    if (this.disabled) {\n      return;\n    }\n\n    if (Array.isArray(date)) {\n      this.values = [...date];\n    } else {\n      this.value = date;\n    }\n    this.onModelChange(date);\n    this.onModelTouched();\n  }\n\n  /**\n   * Emits the selected year in multi-year view\n   * */\n  public selectYear(normalizedYear: T): void {\n    this.yearSelected.emit(normalizedYear);\n  }\n\n  /**\n   * Emits selected month in year view\n   * */\n  public selectMonth(normalizedMonth: T): void {\n    this.monthSelected.emit(normalizedMonth);\n  }\n}\n","<rad-ui-datepicker-date-time-picker-container></rad-ui-datepicker-date-time-picker-container>\n","import {\n  AfterContentInit,\n  ChangeDetectorRef,\n  Directive,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\nimport { DatepickerDateTimePickerComponent } from '../components/date-time-picker/datepicker-date-time-picker.component';\nimport { merge, of, Subscription } from 'rxjs';\n\n@Directive({\n  selector: '[radUiDatepickerDateTimeTrigger]',\n})\nexport class DatepickerDateTimePickerTriggerDirective<T> implements OnInit, OnChanges, AfterContentInit, OnDestroy {\n  @Input() radUiDatepickerDateTimeTrigger?: DatepickerDateTimePickerComponent<T>;\n\n  private _disabled: boolean = false;\n  @Input()\n  get disabled(): boolean {\n    return this._disabled === undefined ? !!this.radUiDatepickerDateTimeTrigger?.disabled : !!this._disabled;\n  }\n\n  set disabled(value: boolean) {\n    this._disabled = value;\n  }\n\n  @HostBinding('class.datepicker-dt-trigger-disabled')\n  get datepickerDTTriggerDisabledClass(): boolean {\n    return this.disabled;\n  }\n\n  private stateChanges = Subscription.EMPTY;\n\n  constructor(protected changeDetector: ChangeDetectorRef) {}\n\n  public ngOnInit(): void {}\n\n  public ngOnChanges(changes: SimpleChanges) {\n    if (changes['datepicker']) {\n      this.watchStateChanges();\n    }\n  }\n\n  public ngAfterContentInit() {\n    this.watchStateChanges();\n  }\n\n  public ngOnDestroy(): void {\n    this.stateChanges.unsubscribe();\n  }\n\n  @HostListener('click', ['$event'])\n  public handleClickOnHost(event: Event): void {\n    if (this.radUiDatepickerDateTimeTrigger) {\n      this.radUiDatepickerDateTimeTrigger.open();\n      event.stopPropagation();\n    }\n  }\n\n  private watchStateChanges(): void {\n    this.stateChanges.unsubscribe();\n\n    const inputDisabled =\n      this.radUiDatepickerDateTimeTrigger && this.radUiDatepickerDateTimeTrigger.dtInput\n        ? this.radUiDatepickerDateTimeTrigger.dtInput.disabledChange\n        : of();\n\n    const pickerDisabled = this.radUiDatepickerDateTimeTrigger ? this.radUiDatepickerDateTimeTrigger.disabledChange : of();\n\n    this.stateChanges = merge(pickerDisabled, inputDisabled).subscribe(() => {\n      this.changeDetector.markForCheck();\n    });\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  ViewContainerRef,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { BlockScrollStrategy, Overlay, OverlayConfig, OverlayRef, PositionStrategy, ScrollStrategy } from '@angular/cdk/overlay';\nimport { ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { filter, take } from 'rxjs/operators';\nimport { DatepickerDateTime, PickerMode, PickerType, SelectMode } from '../../classes/datepicker-date-time.class';\nimport { DatepickerDateTimePickerContainerComponent } from '../date-time-picker-container/datepicker-date-time-picker-container.component';\nimport { DatepickerDialogRef } from '../../classes/datepicker-dialog-ref.class';\nimport { DatepickerDateTimePickerInputDirective } from '../../directives/datepicker-date-time-picker-input.directive';\nimport { DatepickerDialogService } from '../../services/datepicker-dialog.service';\nimport { DatepickerDateTimeAdapter } from '../../adapters/datepicker-date-time.adapter';\nimport { DATEPICKER_DATE_TIME_FORMATS, DatepickerDateTimeFormats } from '../../classes/datepicker-date-time-format.class';\nimport { merge, Subscription } from 'rxjs';\n\n/** Injection token that determines the scroll handling while the dtPicker is open. */\nexport const DATEPICKER_DTPICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('datepicker-dtpicker-scroll-strategy');\n\nexport function DATEPICKER_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay: Overlay): () => BlockScrollStrategy {\n  return () => overlay.scrollStrategies.block();\n}\n\nexport const DATEPICKER_DTPICKER_SCROLL_STRATEGY_PROVIDER = {\n  provide: DATEPICKER_DTPICKER_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: DATEPICKER_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n@Component({\n  selector: 'rad-ui-datepicker-date-time-picker',\n  templateUrl: './datepicker-date-time-picker.component.html',\n  styleUrls: ['./datepicker-date-time-picker.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n})\nexport class DatepickerDateTimePickerComponent<T> extends DatepickerDateTime<T> implements OnInit, OnDestroy {\n  /** Custom class for the picker backdrop. */\n  @Input()\n  public backdropClass: string | string[] = [];\n\n  /** Custom class for the picker overlay pane. */\n  @Input()\n  public panelClass: string | string[] = [];\n\n  /** The date to open the calendar to initially. */\n  private _startAt: T | null = null;\n  @Input()\n  get startAt(): T | null {\n    // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n    // selected value is.\n    if (this._startAt) {\n      return this._startAt;\n    }\n\n    if (this._dtInput) {\n      if (this._dtInput.selectMode === 'single') {\n        return this._dtInput.value || null;\n      } else if (this._dtInput.selectMode === 'range' || this._dtInput.selectMode === 'rangeFrom') {\n        return this._dtInput.values[0] || null;\n      } else if (this._dtInput.selectMode === 'rangeTo') {\n        return this._dtInput.values[1] || null;\n      }\n    }\n    return null;\n  }\n\n  set startAt(date: T | null) {\n    this._startAt = this.getValidDate(this.dateTimeAdapter.deserialize(date));\n  }\n\n  /**\n   * Set the type of the dateTime picker\n   *      'both' -- show both calendar and timer\n   *      'calendar' -- show only calendar\n   *      'timer' -- show only timer\n   */\n  private _pickerType: PickerType = 'both';\n  @Input()\n  get pickerType(): PickerType {\n    return this._pickerType;\n  }\n\n  set pickerType(val: PickerType) {\n    if (val !== this._pickerType) {\n      this._pickerType = val;\n      if (this._dtInput) {\n        this._dtInput.formatNativeInputValue();\n      }\n    }\n  }\n\n  /**\n   * Whether the picker open as a dialog\n   */\n  _pickerMode: PickerMode = 'popup';\n  @Input()\n  get pickerMode() {\n    return this._pickerMode;\n  }\n\n  set pickerMode(mode: PickerMode) {\n    if (mode === 'popup') {\n      this._pickerMode = mode;\n    } else {\n      this._pickerMode = 'dialog';\n    }\n  }\n\n  /** Whether the date time picker should be disabled. */\n  private _disabled: boolean = false;\n  @Input()\n  override get disabled(): boolean {\n    return this._disabled === undefined && this._dtInput ? this._dtInput.disabled : !!this._disabled;\n  }\n\n  override set disabled(value: boolean) {\n    value = coerceBooleanProperty(value);\n    if (value !== this._disabled) {\n      this._disabled = value;\n      this.disabledChange.next(value);\n    }\n  }\n\n  /** Whether the calendar is open. */\n  private _opened = false;\n  @Input()\n  get opened(): boolean {\n    return this._opened;\n  }\n\n  set opened(val: boolean) {\n    val ? this.open() : this.close();\n  }\n\n  /**\n   * The scroll strategy when the picker is open\n   * Learn more this from https://material.angular.io/cdk/overlay/overview#scroll-strategies\n   * */\n  @Input()\n  public scrollStrategy?: ScrollStrategy;\n\n  /**\n   * Callback when the picker is closed\n   * */\n  @Output()\n  afterPickerClosed = new EventEmitter<any>();\n\n  /**\n   * Callback when the picker is open\n   * */\n  @Output()\n  afterPickerOpen = new EventEmitter<any>();\n\n  /**\n   * Emits selected year in multi-year view\n   * This doesn't imply a change on the selected date.\n   * */\n  @Output()\n  yearSelected = new EventEmitter<T>();\n\n  /**\n   * Emits selected month in year view\n   * This doesn't imply a change on the selected date.\n   * */\n  @Output()\n  monthSelected = new EventEmitter<T>();\n\n  /**\n   * Emit when the selected value has been confirmed\n   * */\n  public confirmSelectedChange = new EventEmitter<T[] | T>();\n\n  /**\n   * Emits when the date time picker is disabled.\n   * */\n  public disabledChange = new EventEmitter<boolean>();\n\n  private pickerContainerPortal?: ComponentPortal<DatepickerDateTimePickerContainerComponent<T>>;\n  private pickerContainer?: DatepickerDateTimePickerContainerComponent<T>;\n  private popupRef?: OverlayRef;\n  private dialogRef: DatepickerDialogRef<DatepickerDateTimePickerContainerComponent<T>> | null = null;\n  private dtInputSub: Subscription | null = Subscription.EMPTY;\n  private hidePickerStreamSub: Subscription | null = Subscription.EMPTY;\n  private confirmSelectedStreamSub: Subscription | null = Subscription.EMPTY;\n  private pickerOpenedStreamSub: Subscription | null = Subscription.EMPTY;\n\n  /** The element that was focused before the date time picker was opened. */\n  private focusedElementBeforeOpen: HTMLElement | null = null;\n\n  private _dtInput?: DatepickerDateTimePickerInputDirective<T>;\n  get dtInput() {\n    return this._dtInput;\n  }\n\n  private _selected: T | null = null;\n  get selected() {\n    return this._selected;\n  }\n\n  set selected(value: T | null) {\n    this._selected = value;\n    this.cdr.markForCheck();\n  }\n\n  private _selecteds: T[] = [];\n  get selecteds() {\n    return this._selecteds;\n  }\n\n  set selecteds(values: T[]) {\n    this._selecteds = values;\n    this.cdr.markForCheck();\n  }\n\n  /** The minimum selectable date. */\n  get minDateTime(): T | null {\n    return this._dtInput?.min || null;\n  }\n\n  /** The maximum selectable date. */\n  get maxDateTime(): T | null {\n    return this._dtInput?.max || null;\n  }\n\n  get dateTimeFilter(): (date: T | null) => boolean {\n    const defaultFn = (date: any) => true;\n    return this._dtInput?.dateTimeFilter || defaultFn;\n  }\n\n  get selectMode(): SelectMode {\n    return <SelectMode>this._dtInput?.selectMode;\n  }\n\n  get isInSingleMode(): boolean {\n    return this._dtInput?.isInSingleMode || false;\n  }\n\n  get isInRangeMode(): boolean {\n    return this._dtInput?.isInRangeMode || false;\n  }\n\n  private defaultScrollStrategy: () => ScrollStrategy;\n\n  constructor(\n    private overlay: Overlay,\n    private viewContainerRef: ViewContainerRef,\n    private dialogService: DatepickerDialogService,\n    private ngZone: NgZone,\n    protected cdr: ChangeDetectorRef,\n    @Optional() protected override dateTimeAdapter: DatepickerDateTimeAdapter<T>,\n    @Inject(DATEPICKER_DTPICKER_SCROLL_STRATEGY) defaultScrollStrategy: any,\n    @Optional()\n    @Inject(DATEPICKER_DATE_TIME_FORMATS)\n    protected override dateTimeFormats: DatepickerDateTimeFormats,\n    @Optional()\n    @Inject(DOCUMENT)\n    private document: any,\n  ) {\n    super(dateTimeAdapter, dateTimeFormats);\n    this.defaultScrollStrategy = defaultScrollStrategy;\n  }\n\n  public ngOnInit() {}\n\n  public ngOnDestroy(): void {\n    this.close();\n    this.dtInputSub?.unsubscribe();\n    this.disabledChange.complete();\n\n    if (this.popupRef) {\n      this.popupRef.dispose();\n    }\n  }\n\n  public registerInput(input: DatepickerDateTimePickerInputDirective<T>): void {\n    if (this._dtInput) {\n      throw Error('A Datepicker DateTimePicker can only be associated with a single input.');\n    }\n\n    this._dtInput = input;\n    this.dtInputSub = this._dtInput.valueChange.subscribe((value: T[] | T | null) => {\n      if (Array.isArray(value)) {\n        this.selecteds = value;\n      } else {\n        this.selected = value;\n      }\n    });\n  }\n\n  public open(): void {\n    if (this._opened || this.disabled) {\n      return;\n    }\n\n    if (!this._dtInput) {\n      throw Error('Attempted to open an DateTimePicker with no associated input.');\n    }\n\n    if (this.document) {\n      this.focusedElementBeforeOpen = this.document.activeElement;\n    }\n\n    // reset the picker selected value\n    if (this.isInSingleMode) {\n      this.selected = this._dtInput.value;\n    } else if (this.isInRangeMode) {\n      this.selecteds = this._dtInput.values;\n    }\n\n    // when the picker is open , we make sure the picker's current selected time value\n    // is the same as the _startAt time value.\n    if (\n      this.pickerType !== 'calendar' &&\n      ((!this.selected && this._startAt !== null) ||\n        (this.minDateTime && this.selected && this.dateTimeAdapter.compare(this.selected, this.minDateTime) < 0))\n    ) {\n      this.selected = this.dateTimeAdapter.createDate(\n        this.dateTimeAdapter.getYear(<T>this._startAt),\n        this.dateTimeAdapter.getMonth(<T>this._startAt),\n        this.dateTimeAdapter.getDate(<T>this._startAt),\n        this.dateTimeAdapter.getHours(<T>this._startAt),\n        this.dateTimeAdapter.getMinutes(<T>this._startAt),\n        this.dateTimeAdapter.getSeconds(<T>this._startAt),\n      );\n    }\n\n    this.pickerMode === 'dialog' ? this.openAsDialog() : this.openAsPopup();\n\n    this.pickerContainer ? (this.pickerContainer.picker = this) : null;\n\n    // Listen to picker container's hidePickerStream\n    this.hidePickerStreamSub = <Subscription>this.pickerContainer?.hidePickerStream.subscribe(() => {\n      this.close();\n    });\n\n    // Listen to picker container's confirmSelectedStream\n    this.confirmSelectedStreamSub = <Subscription>this.pickerContainer?.confirmSelectedStream.subscribe((event: any) => {\n      this.confirmSelect(event);\n    });\n  }\n\n  /**\n   * Selects the given date\n   */\n  public select(date: T[] | T): void {\n    if (Array.isArray(date)) {\n      this.selecteds = [...date];\n    } else {\n      this.selected = date;\n    }\n\n    /**\n     * Cases in which automatically confirm the select when date or dates are selected:\n     * 1) picker mode is NOT 'dialog'\n     * 2) picker type is 'calendar' and selectMode is 'single'.\n     * 3) picker type is 'calendar' and selectMode is 'range' and\n     *    the 'selecteds' has 'from'(selecteds[0]) and 'to'(selecteds[1]) values.\n     * 4) selectMode is 'rangeFrom' and selecteds[0] has value.\n     * 5) selectMode is 'rangeTo' and selecteds[1] has value.\n     * */\n    if (\n      this.pickerMode !== 'dialog' &&\n      this.pickerType === 'calendar' &&\n      ((this.selectMode === 'single' && this.selected) ||\n        (this.selectMode === 'rangeFrom' && this.selecteds[0]) ||\n        (this.selectMode === 'rangeTo' && this.selecteds[1]) ||\n        (this.selectMode === 'range' && this.selecteds[0] && this.selecteds[1]))\n    ) {\n      this.confirmSelect();\n    }\n  }\n\n  /**\n   * Emits the selected year in multi-year view\n   * */\n  public selectYear(normalizedYear: T): void {\n    this.yearSelected.emit(normalizedYear);\n  }\n\n  /**\n   * Emits selected month in year view\n   * */\n  public selectMonth(normalizedMonth: T): void {\n    this.monthSelected.emit(normalizedMonth);\n  }\n\n  /**\n   * Hide the picker\n   */\n  public close(): void {\n    if (!this._opened) {\n      return;\n    }\n\n    if (this.popupRef && this.popupRef.hasAttached()) {\n      this.popupRef.detach();\n    }\n\n    if (this.pickerContainerPortal && this.pickerContainerPortal.isAttached) {\n      this.pickerContainerPortal.detach();\n    }\n\n    if (this.hidePickerStreamSub) {\n      this.hidePickerStreamSub.unsubscribe();\n      this.hidePickerStreamSub = null;\n    }\n\n    if (this.confirmSelectedStreamSub) {\n      this.confirmSelectedStreamSub.unsubscribe();\n      this.confirmSelectedStreamSub = null;\n    }\n\n    if (this.pickerOpenedStreamSub) {\n      this.pickerOpenedStreamSub.unsubscribe();\n      this.pickerOpenedStreamSub = null;\n    }\n\n    if (this.dialogRef) {\n      this.dialogRef.close();\n      this.dialogRef = null;\n    }\n\n    const completeClose = () => {\n      if (this._opened) {\n        this._opened = false;\n        this.afterPickerClosed.emit(null);\n        this.focusedElementBeforeOpen = null;\n      }\n    };\n\n    if (this.focusedElementBeforeOpen && typeof this.focusedElementBeforeOpen.focus === 'function') {\n      // Because IE moves focus asynchronously, we can't count on it being restored before we've\n      // marked the datepicker as closed. If the event fires out of sequence and the element that\n      // we're refocusing opens the datepicker on focus, the user could be stuck with not being\n      // able to close the calendar at all. We work around it by making the logic, that marks\n      // the datepicker as closed, async as well.\n      this.focusedElementBeforeOpen.focus();\n      setTimeout(completeClose);\n    } else {\n      completeClose();\n    }\n  }\n\n  /**\n   * Confirm the selected value\n   */\n  public confirmSelect(event?: any): void {\n    if (this.isInSingleMode) {\n      const selected = this.selected || this.startAt || this.dateTimeAdapter.now();\n      this.confirmSelectedChange.emit(selected);\n    } else if (this.isInRangeMode) {\n      this.confirmSelectedChange.emit(this.selecteds);\n    }\n\n    this.close();\n    return;\n  }\n\n  /**\n   * Open the picker as a dialog\n   */\n  private openAsDialog(): void {\n    this.dialogRef = this.dialogService.open(DatepickerDateTimePickerContainerComponent, {\n      autoFocus: false,\n      backdropClass: ['cdk-overlay-dark-backdrop', ...coerceArray(this.backdropClass)],\n      paneClass: ['datepicker-dt-dialog', ...coerceArray(this.panelClass)],\n      viewContainerRef: this.viewContainerRef,\n      scrollStrategy: this.scrollStrategy || this.defaultScrollStrategy(),\n    });\n    this.pickerContainer = this.dialogRef.componentInstance;\n\n    this.dialogRef.afterOpen().subscribe(() => {\n      this.afterPickerOpen.emit(null);\n      this._opened = true;\n    });\n    this.dialogRef.afterClosed().subscribe(() => this.close());\n  }\n\n  /**\n   * Open the picker as popup\n   */\n  private openAsPopup(): void {\n    if (!this.pickerContainerPortal) {\n      this.pickerContainerPortal = new ComponentPortal<DatepickerDateTimePickerContainerComponent<T>>(\n        DatepickerDateTimePickerContainerComponent,\n        this.viewContainerRef,\n      );\n    }\n\n    if (!this.popupRef) {\n      this.createPopup();\n    }\n\n    if (!this.popupRef?.hasAttached()) {\n      const componentRef = <ComponentRef<DatepickerDateTimePickerContainerComponent<T>>>this.popupRef?.attach(this.pickerContainerPortal);\n      this.pickerContainer = componentRef.instance;\n\n      // Update the position once the calendar has rendered.\n      this.ngZone.onStable\n        .asObservable()\n        .pipe(take(1))\n        .subscribe(() => {\n          this.popupRef?.updatePosition();\n        });\n\n      // emit open stream\n      this.pickerOpenedStreamSub = this.pickerContainer.pickerOpenedStream.pipe(take(1)).subscribe(() => {\n        this.afterPickerOpen.emit(null);\n        this._opened = true;\n      });\n    }\n  }\n\n  private createPopup(): void {\n    const overlayConfig = new OverlayConfig({\n      positionStrategy: this.createPopupPositionStrategy(),\n      hasBackdrop: true,\n      backdropClass: ['cdk-overlay-transparent-backdrop', ...coerceArray(this.backdropClass)],\n      scrollStrategy: this.scrollStrategy || this.defaultScrollStrategy(),\n      panelClass: ['datepicker-dt-popup', ...coerceArray(this.panelClass)],\n    });\n\n    this.popupRef = this.overlay.create(overlayConfig);\n\n    merge(\n      this.popupRef.backdropClick(),\n      this.popupRef.detachments(),\n      this.popupRef\n        .keydownEvents()\n        .pipe(filter((event) => event.keyCode === ESCAPE || (this._dtInput !== undefined && event.altKey && event.keyCode === UP_ARROW))),\n    ).subscribe(() => this.close());\n  }\n\n  /**\n   * Create the popup PositionStrategy.\n   * */\n  private createPopupPositionStrategy(): PositionStrategy {\n    return this.overlay\n      .position()\n      .flexibleConnectedTo(<ElementRef<any>>this._dtInput?.elementRef)\n      .withTransformOriginOn('.datepicker-dt-container')\n      .withFlexibleDimensions(false)\n      .withPush(false)\n      .withPositions([\n        {\n          originX: 'start',\n          originY: 'bottom',\n          overlayX: 'start',\n          overlayY: 'top',\n        },\n        {\n          originX: 'start',\n          originY: 'top',\n          overlayX: 'start',\n          overlayY: 'bottom',\n        },\n        {\n          originX: 'end',\n          originY: 'bottom',\n          overlayX: 'end',\n          overlayY: 'top',\n        },\n        {\n          originX: 'end',\n          originY: 'top',\n          overlayX: 'end',\n          overlayY: 'bottom',\n        },\n        {\n          originX: 'start',\n          originY: 'top',\n          overlayX: 'start',\n          overlayY: 'top',\n          offsetY: -176,\n        },\n        {\n          originX: 'start',\n          originY: 'top',\n          overlayX: 'start',\n          overlayY: 'top',\n          offsetY: -352,\n        },\n      ]);\n  }\n}\n","","import {\n  DatepickerDateTimePickerIntlService\n} from \"./datepicker-date-time-picker-intl.service\";\nimport { Injectable } from \"@angular/core\";\n\n@Injectable()\nexport class DefaultIntl extends DatepickerDateTimePickerIntlService {\n  /** A label for the cancel button */\n  override cancelBtnLabel = 'Отмена';\n\n  /** A label for the set button */\n  override setBtnLabel = 'Выбрать';\n\n  override rangeFromLabel = 'От';\n\n  override rangeToLabel = 'До';\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport { DATEPICKER_DATE_TIME_LOCALE, DatepickerDateTimeAdapter } from './datepicker-date-time.adapter';\n\n/** The default month names to use if Intl API is not available. */\nconst DEFAULT_MONTH_NAMES = {\n  long: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n  short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n};\n\n/** The default day of the week names to use if Intl API is not available. */\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\n  long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n  short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n};\n\n/** The default date names to use if Intl API is not available. */\nconst DEFAULT_DATE_NAMES = range(31, (i) => String(i + 1));\n\n/** Whether the browser supports the Intl API. */\nconst SUPPORTS_INTL_API = typeof Intl !== 'undefined';\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n  const valuesArray = Array(length);\n  for (let i = 0; i < length; i++) {\n    valuesArray[i] = valueFunction(i);\n  }\n  return valuesArray;\n}\n\n@Injectable()\nexport class DatepickerNativeDateTimeAdapter extends DatepickerDateTimeAdapter<Date> {\n  /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n  private readonly _clampDate: boolean;\n\n  /**\n   * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n   * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n   * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n   * will produce `'8/13/1800'`.\n   */\n  useUtcForDisplay: boolean;\n\n  constructor(\n    @Optional()\n    @Inject(DATEPICKER_DATE_TIME_LOCALE)\n    private datepickerDateTimeLocale: string,\n    platform: Platform,\n  ) {\n    super();\n    super.setLocale(datepickerDateTimeLocale);\n\n    // IE does its own time zone correction, so we disable this on IE.\n    this.useUtcForDisplay = !platform.TRIDENT;\n    this._clampDate = platform.TRIDENT || platform.EDGE;\n  }\n\n  public getYear(date: Date): number {\n    return date.getFullYear();\n  }\n\n  public getMonth(date: Date): number {\n    return date.getMonth();\n  }\n\n  public getDay(date: Date): number {\n    return date.getDay();\n  }\n\n  public getDate(date: Date): number {\n    return date.getDate();\n  }\n\n  public getHours(date: Date): number {\n    return date.getHours();\n  }\n\n  public getMinutes(date: Date): number {\n    return date.getMinutes();\n  }\n\n  public getSeconds(date: Date): number {\n    return date.getSeconds();\n  }\n\n  public getTime(date: Date): number {\n    return date.getTime();\n  }\n\n  public getNumDaysInMonth(date: Date): number {\n    const lastDateOfMonth = this.createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0);\n\n    return this.getDate(lastDateOfMonth);\n  }\n\n  public differenceInCalendarDays(dateLeft: Date, dateRight: Date): number {\n    if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n      const dateLeftStartOfDay = this.createDate(this.getYear(dateLeft), this.getMonth(dateLeft), this.getDate(dateLeft));\n      const dateRightStartOfDay = this.createDate(this.getYear(dateRight), this.getMonth(dateRight), this.getDate(dateRight));\n\n      const timeStampLeft = this.getTime(dateLeftStartOfDay) - dateLeftStartOfDay.getTimezoneOffset() * this.milliseondsInMinute;\n      const timeStampRight = this.getTime(dateRightStartOfDay) - dateRightStartOfDay.getTimezoneOffset() * this.milliseondsInMinute;\n      return Math.round((timeStampLeft - timeStampRight) / this.millisecondsInDay);\n    } else {\n      return -1;\n    }\n  }\n\n  public getYearName(date: Date): string {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {\n        year: 'numeric',\n        timeZone: 'utc',\n      });\n      return this.stripDirectionalityCharacters(this._format(dtf, date));\n    }\n    return String(this.getYear(date));\n  }\n\n  public getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {\n        month: style,\n        timeZone: 'utc',\n      });\n      return range(12, (i) => this.stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));\n    }\n    return DEFAULT_MONTH_NAMES[style];\n  }\n\n  public getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {\n        weekday: style,\n        timeZone: 'utc',\n      });\n      return range(7, (i) => this.stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));\n    }\n\n    return DEFAULT_DAY_OF_WEEK_NAMES[style];\n  }\n\n  public getDateNames(): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {\n        day: 'numeric',\n        timeZone: 'utc',\n      });\n      return range(31, (i) => this.stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));\n    }\n    return DEFAULT_DATE_NAMES;\n  }\n\n  public toIso8601(date: Date): string {\n    return date.toISOString();\n  }\n\n  public isEqual(dateLeft: Date, dateRight: Date): boolean {\n    if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n      return dateLeft.getTime() === dateRight.getTime();\n    } else {\n      return false;\n    }\n  }\n\n  public isSameDay(dateLeft: Date, dateRight: Date): boolean {\n    if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n      const dateLeftStartOfDay = this.clone(dateLeft);\n      const dateRightStartOfDay = this.clone(dateRight);\n      dateLeftStartOfDay.setHours(0, 0, 0, 0);\n      dateRightStartOfDay.setHours(0, 0, 0, 0);\n      return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n    } else {\n      return false;\n    }\n  }\n\n  public isValid(date: Date): boolean {\n    return date && !isNaN(date.getTime());\n  }\n\n  public invalid(): Date {\n    return new Date(NaN);\n  }\n\n  public isDateInstance(obj: any): boolean {\n    return obj instanceof Date;\n  }\n\n  public addCalendarYears(date: Date, amount: number): Date {\n    return this.addCalendarMonths(date, amount * 12);\n  }\n\n  public addCalendarMonths(date: Date, amount: number): Date {\n    const result = this.clone(date);\n    amount = Number(amount);\n\n    const desiredMonth = result.getMonth() + amount;\n    const dateWithDesiredMonth = new Date(0);\n    dateWithDesiredMonth.setFullYear(result.getFullYear(), desiredMonth, 1);\n    dateWithDesiredMonth.setHours(0, 0, 0, 0);\n\n    const daysInMonth = this.getNumDaysInMonth(dateWithDesiredMonth);\n    // Set the last day of the new month\n    // if the original date was the last day of the longer month\n    result.setMonth(desiredMonth, Math.min(daysInMonth, result.getDate()));\n    return result;\n  }\n\n  public addCalendarDays(date: Date, amount: number): Date {\n    const result = this.clone(date);\n    amount = Number(amount);\n    result.setDate(result.getDate() + amount);\n    return result;\n  }\n\n  public setHours(date: Date, amount: number): Date {\n    const result = this.clone(date);\n    result.setHours(amount);\n    return result;\n  }\n\n  public setMinutes(date: Date, amount: number): Date {\n    const result = this.clone(date);\n    result.setMinutes(amount);\n    return result;\n  }\n\n  public setSeconds(date: Date, amount: number): Date {\n    const result = this.clone(date);\n    result.setSeconds(amount);\n    return result;\n  }\n\n  public createDate(year: number, month: number, date: number, hours: number = 0, minutes: number = 0, seconds: number = 0): Date {\n    if (month < 0 || month > 11) {\n      throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n    }\n\n    if (date < 1) {\n      throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n    }\n\n    if (hours < 0 || hours > 23) {\n      throw Error(`Invalid hours \"${hours}\". Hours has to be between 0 and 23.`);\n    }\n\n    if (minutes < 0 || minutes > 59) {\n      throw Error(`Invalid minutes \"${minutes}\". Minutes has to between 0 and 59.`);\n    }\n\n    if (seconds < 0 || seconds > 59) {\n      throw Error(`Invalid seconds \"${seconds}\". Seconds has to be between 0 and 59.`);\n    }\n\n    const result = this.createDateWithOverflow(year, month, date, hours, minutes, seconds);\n\n    // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n    // For example, createDate(2017, 1, 31) would try to create a date 2017/02/31 which is invalid\n    if (result.getMonth() !== month) {\n      throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n    }\n\n    return result;\n  }\n\n  public clone(date: Date): Date {\n    return this.createDate(\n      this.getYear(date),\n      this.getMonth(date),\n      this.getDate(date),\n      this.getHours(date),\n      this.getMinutes(date),\n      this.getSeconds(date),\n    );\n  }\n\n  public now(): Date {\n    return new Date();\n  }\n\n  public format(date: Date, displayFormat: any): string {\n    if (!this.isValid(date)) {\n      throw Error('JSNativeDate: Cannot format invalid date.');\n    }\n\n    if (SUPPORTS_INTL_API) {\n      if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {\n        date = this.clone(date);\n        date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n      }\n\n      displayFormat = { ...displayFormat, timeZone: 'utc' };\n      const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n      return this.stripDirectionalityCharacters(this._format(dtf, date));\n    }\n\n    return this.stripDirectionalityCharacters(date.toDateString());\n  }\n\n  public parse(value: any, parseFormat: any): Date | null {\n    // There is no way using the native JS Date to set the parse format or locale\n    if (typeof value === 'number') {\n      return new Date(value);\n    }\n    return value ? new Date(Date.parse(value)) : null;\n  }\n\n  /**\n   * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n   * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n   * invalid date for all other values.\n   */\n   public override deserialize(value: any): Date | null {\n    if (typeof value === 'string') {\n      if (!value) {\n        return null;\n      }\n      // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n      // string is the right format first.\n      if (ISO_8601_REGEX.test(value)) {\n        const date = new Date(value);\n        if (this.isValid(date)) {\n          return date;\n        }\n      }\n    }\n    return super.deserialize(value);\n  }\n\n  /**\n   * Creates a date but allows the month and date to overflow.\n   */\n  private createDateWithOverflow(\n    year: number,\n    month: number,\n    date: number,\n    hours: number = 0,\n    minutes: number = 0,\n    seconds: number = 0,\n  ): Date {\n    const result = new Date(year, month, date, hours, minutes, seconds);\n\n    if (year >= 0 && year < 100) {\n      result.setFullYear(this.getYear(result) - 1900);\n    }\n    return result;\n  }\n\n  /**\n   * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n   * other browsers do not. We remove them to make output consistent and because they interfere with\n   * date parsing.\n   */\n  private stripDirectionalityCharacters(str: string) {\n    return str.replace(/[\\u200e\\u200f]/g, '');\n  }\n\n  /**\n   * When converting Date object to string, javascript built-in functions may return wrong\n   * results because it applies its internal DST rules. The DST rules around the world change\n   * very frequently, and the current valid rule is not always valid in previous years though.\n   * We work around this problem building a new Date object which has its internal UTC\n   * representation with the local date and time.\n   */\n  private _format(dtf: Intl.DateTimeFormat, date: Date) {\n    const d = new Date(\n      Date.UTC(\n        date.getFullYear(),\n        date.getMonth(),\n        date.getDate(),\n        date.getHours(),\n        date.getMinutes(),\n        date.getSeconds(),\n        date.getMilliseconds(),\n      ),\n    );\n    return dtf.format(d);\n  }\n}\n","import { DatepickerDateTimeFormats } from './datepicker-date-time-format.class';\n\nexport const DATEPICKER_NATIVE_DATE_TIME_FORMATS: DatepickerDateTimeFormats = {\n  parseInput: null,\n  fullPickerInput: { year: 'numeric', month: 'numeric', day: 'numeric', hour: 'numeric', minute: 'numeric' },\n  datePickerInput: { year: 'numeric', month: 'numeric', day: 'numeric' },\n  timePickerInput: { hour: 'numeric', minute: 'numeric' },\n  monthYearLabel: { year: 'numeric', month: 'short' },\n  dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n  monthYearA11yLabel: { year: 'numeric', month: 'long' },\n};\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  forwardRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\nimport { ClassListCtor, Element, mixinClassList } from '@dshch/rad-ui/common';\nimport * as moment from 'moment';\nimport { PickerType, SelectMode } from './classes/datepicker-date-time.class';\nimport { DatepickerDateTimePickerComponent } from './components/date-time-picker/datepicker-date-time-picker.component';\n\nclass DatepickerBase {\n  constructor() {}\n}\n\nconst _DatepickerMixinBase: ClassListCtor & typeof DatepickerBase = mixinClassList(DatepickerBase);\n\n@Component({\n  selector: 'rad-ui-datepicker',\n  templateUrl: './datepicker.component.html',\n  styleUrls: ['./datepicker.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DatepickerComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatepickerComponent extends _DatepickerMixinBase implements OnInit, OnChanges, OnDestroy, ControlValueAccessor {\n  @Input() id: string = '';\n  @Input() max = new Date(2100, 0, 1, 0, 0, 0);\n  @Input() min = new Date(1970, 0, 1, 0, 0, 0);\n  @Input() pickerType: PickerType = 'calendar';\n  @Input() selectMode: SelectMode = 'single';\n  @Input() datepickerDateTimeFilter: (date: Date|null) => boolean = (date: Date|null) => true;\n  @Input() stepMinute = 10;\n  @Input() tooltip: string = '';\n  @Input() required = false;\n  @Input() readonly = false;\n  @Input() hasClearButton = true;\n  @Input() disabled = false;\n  @Input() formControl: FormControl<Date|string|null> = new FormControl(new Date());\n  @Input() errorMessages = {};\n  @Input() placeholder = '';\n  @Input() name = '';\n  now: Date;\n\n  // Classlist mixin\n  @Input() override label: string = '';\n  @Input() override inputClassList: string = '';\n  @Input() override labelClassList: string = '';\n  @Input() override wrapClassList: string = '';\n\n  @ViewChild(DatepickerDateTimePickerComponent, { static: true }) datepickerDateTimePicker!: DatepickerDateTimePickerComponent<Date>;\n\n  private value: string | Date = '';\n  private unsubscribe$ = new Subject();\n\n  onChange = (value: string | Date) => {};\n\n  onTouched = () => {};\n\n  constructor(private cdr: ChangeDetectorRef) {\n    super();\n    this.now = new Date();\n  }\n\n  ngOnInit() {\n    if (this.pickerType === 'calendar') {\n      this.now.setHours(0);\n      this.now.setMinutes(0);\n      this.now.setSeconds(0);\n    }\n\n    if (!this.id) {\n      this.id = Element.generateId();\n    }\n\n    if (!this.name) {\n      this.name = this.id;\n    }\n  }\n\n  private initFormControl(): void {\n    // Для асинхронных валидаторов\n    this.formControl.statusChanges.pipe(distinctUntilChanged(), takeUntil(this.unsubscribe$)).subscribe((value) => {\n      if (value === 'VALID' || value === 'INVALID') {\n        this.cdr.detectChanges();\n      }\n    });\n\n    // Переопределяем markAsTouched чтобы запустить обнаружение изменений\n    const oldMarkAsTouched = this.formControl.markAsTouched.bind(this.formControl);\n    this.formControl.markAsTouched = (opts?: { onlySelf?: boolean }) => {\n      oldMarkAsTouched(opts);\n      this.cdr.markForCheck();\n    };\n\n    // Пустая строка => null\n    this.formControl.valueChanges\n      .pipe(\n        filter((value) => value === '' || value === null),\n        takeUntil(this.unsubscribe$),\n      )\n      .subscribe((value) => {\n        if (value === '') {\n          this.formControl.setValue(null);\n        }\n        this.cdr.detectChanges();\n      });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.hasOwnProperty('formControl')) {\n      this.initFormControl();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.unsubscribe$.next();\n    this.unsubscribe$.complete();\n  }\n\n  writeValue(value: Date | string): void {\n    if (value !== this.value) {\n      if (typeof value === 'string') {\n        try {\n          value = moment(value).toDate();\n        } catch (e) {}\n      }\n      this.value = value;\n      this.formControl.patchValue(value as Date | null);\n      this.onChange(this.value);\n    }\n  }\n\n  registerOnChange(fn: (value: string | Date) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  /**\n   * @returns {string}\n   */\n  getCalendarWindowType() {\n    if (window.innerWidth < 500) {\n      return 'dialog';\n    }\n\n    return 'popup';\n  }\n\n  clear() {\n    this.formControl.setValue(null);\n    this.formControl.markAsTouched();\n  }\n\n  setStyle(): void {\n    if (window.innerWidth < 500) {\n      const appRoots = window.document.getElementsByTagName('app-root');\n      for (let i = 0; i < appRoots.length; i++) {\n        (appRoots[i] as HTMLDivElement).setAttribute('aria-hidden', 'true');\n      }\n    }\n  }\n\n  resetStyle(): void {\n    if (window.innerWidth < 500) {\n      const appRoots = window.document.getElementsByTagName('app-root');\n      for (let i = 0; i < appRoots.length; i++) {\n        (appRoots[i] as HTMLDivElement).setAttribute('aria-hidden', 'false');\n      }\n    }\n  }\n}\n","<div class=\"row form-group mx-0\">\n  <rad-ui-label\n    *ngIf=\"label\"\n    [id]=\"id\"\n    [label]=\"label\"\n    [required]=\"required\"\n    [tooltip]=\"tooltip\"\n    [ngClass]=\"getLabelClassList()\"\n  ></rad-ui-label>\n\n  <div [ngClass]=\"getInputClassList()\">\n    <input\n      readonly\n      [id]=\"id\"\n      [name]=\"name\"\n      [required]=\"required\"\n      class=\"form-control\"\n      [max]=\"max\"\n      [min]=\"min\"\n      [selectMode]=\"selectMode\"\n      [datepickerDateTimeFilter]=\"datepickerDateTimeFilter\"\n      [radUiDatepickerDateTime]=\"datepickerDateTimePicker\"\n      [radUiDatepickerDateTimeTrigger]=\"datepickerDateTimePicker\"\n      [formControl]=\"formControl\"\n      [placeholder]=\"placeholder\"\n    />\n    <span *ngIf=\"formControl.value !== null && !readonly && hasClearButton\" (click)=\"clear()\" class=\"datepicker__clear-icon\">×</span>\n    <label *ngIf=\"!readonly\" [for]=\"id\" class=\"d-flex\">\n      <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n    </label>\n\n    <rad-ui-datepicker-date-time-picker\n      [pickerMode]=\"getCalendarWindowType()\"\n      [pickerType]=\"pickerType\"\n      [hour12Timer]=\"false\"\n      [stepMinute]=\"stepMinute\"\n      [firstDayOfWeek]=\"1\"\n      [startAt]=\"now\"\n      [disabled]=\"readonly\"\n      (afterPickerClosed)=\"resetStyle()\"\n      (afterPickerOpen)=\"setStyle()\"\n    >\n    </rad-ui-datepicker-date-time-picker>\n\n    <rad-ui-control-errors\n      [control]=\"formControl\"\n      [touched]=\"formControl.touched\"\n      [errorMessages]=\"errorMessages\"\n    ></rad-ui-control-errors>\n  </div>\n</div>\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\nimport {\n  DATEPICKER_DIALOG_SCROLL_STRATEGY_PROVIDER,\n  DatepickerDialogService\n} from \"./services/datepicker-dialog.service\";\nimport {\n  DatepickerCalendarComponent\n} from \"./components/calendar/datepicker-calendar.component\";\nimport {\n  DatepickerCalendarBodyComponent\n} from \"./components/calendar-body/datepicker-calendar-body.component\";\nimport {\n  DatepickerCalendarMonthViewComponent\n} from \"./components/calendar-month-view/datepicker-calendar-month-view.component\";\nimport {\n  DatepickerCalendarMultiYearViewComponent\n} from \"./components/calendar-multi-year-view.component/datepicker-calendar-multi-year-view.component\";\nimport {\n  DatepickerDialogContainerComponent\n} from \"./components/dialog-container/datepicker-dialog-container.component\";\nimport {\n  DatepickerDateTimeInlineComponent\n} from \"./components/date-time-inline/datepicker-date-time-inline.component\";\nimport {\n  DatepickerDateTimePickerInputDirective\n} from \"./directives/datepicker-date-time-picker-input.directive\";\nimport {\n  DatepickerDateTimePickerTriggerDirective\n} from \"./directives/datepicker-date-time-picker-trigger.directive\";\nimport {\n  DATEPICKER_DTPICKER_SCROLL_STRATEGY_PROVIDER,\n  DatepickerDateTimePickerComponent\n} from \"./components/date-time-picker/datepicker-date-time-picker.component\";\nimport {\n  DatepickerDateTimePickerContainerComponent\n} from \"./components/date-time-picker-container/datepicker-date-time-picker-container.component\";\nimport { A11yModule } from \"@angular/cdk/a11y\";\nimport { PortalModule } from \"@angular/cdk/portal\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport {\n  DatepickerTimerComponent\n} from \"./components/timer/datepicker-timer.component\";\nimport {\n  DatepickerTimerBoxComponent\n} from \"./components/timer-box/datepicker-timer-box.component\";\nimport {\n  DatepickerNumberFixedLengthPipe\n} from \"./pipes/datepicker-number-fixed-length.pipe\";\nimport {\n  DATEPICKER_DATE_TIME_LOCALE, DatepickerDateTimeAdapter\n} from \"./adapters/datepicker-date-time.adapter\";\nimport {\n  DatepickerDateTimePickerIntlService\n} from \"./services/datepicker-date-time-picker-intl.service\";\nimport { DefaultIntl } from \"./services/default-intl\";\nimport {\n  DATEPICKER_DATE_TIME_FORMATS\n} from \"./classes/datepicker-date-time-format.class\";\nimport {\n  DatepickerNativeDateTimeAdapter\n} from \"./adapters/datepicker-native-date-time.adapter\";\nimport {\n  DATEPICKER_NATIVE_DATE_TIME_FORMATS\n} from \"./classes/datepicker-native-date-time-format.class\";\nimport {\n  DatepickerCalendarYearViewComponent\n} from \"./components/calendar-year-view/datepicker-calendar-year-view.component\";\nimport { DatepickerComponent } from \"./datepicker.component\";\nimport { RadUILabelModule } from \"@dshch/rad-ui/label\";\nimport { RadUIControlErrorsModule } from \"@dshch/rad-ui/control-errors\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\n\n// learn more about this from\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\nexport const MY_NATIVE_FORMATS = {\n  fullPickerInput: { year: 'numeric', month: 'numeric', day: 'numeric', hour: 'numeric', minute: 'numeric' },\n  datePickerInput: { year: 'numeric', month: 'numeric', day: 'numeric' },\n  timePickerInput: { hour: 'numeric', minute: 'numeric' },\n  monthYearLabel: { year: 'numeric', month: 'short' },\n  dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n  monthYearA11yLabel: { year: 'numeric', month: 'long' },\n};\n\n@NgModule({\n  imports: [\n    CommonModule,\n    A11yModule,\n    OverlayModule,\n    PortalModule,\n    RadUILabelModule,\n    RadUIControlErrorsModule,\n    ReactiveFormsModule,\n  ],\n  exports: [\n    DatepickerDateTimePickerInputDirective,\n    DatepickerDateTimePickerTriggerDirective,\n    DatepickerCalendarComponent,\n    DatepickerCalendarBodyComponent,\n    DatepickerCalendarMonthViewComponent,\n    DatepickerCalendarMultiYearViewComponent,\n    DatepickerCalendarYearViewComponent,\n    DatepickerDialogContainerComponent,\n    DatepickerDateTimeInlineComponent,\n    DatepickerDateTimePickerComponent,\n    DatepickerDateTimePickerContainerComponent,\n    DatepickerTimerComponent,\n    DatepickerTimerBoxComponent,\n    DatepickerNumberFixedLengthPipe,\n    DatepickerComponent,\n  ],\n  declarations: [\n    DatepickerDateTimePickerInputDirective,\n    DatepickerDateTimePickerTriggerDirective,\n    DatepickerCalendarComponent,\n    DatepickerCalendarBodyComponent,\n    DatepickerCalendarMonthViewComponent,\n    DatepickerCalendarMultiYearViewComponent,\n    DatepickerCalendarYearViewComponent,\n    DatepickerDialogContainerComponent,\n    DatepickerDateTimeInlineComponent,\n    DatepickerDateTimePickerComponent,\n    DatepickerDateTimePickerContainerComponent,\n    DatepickerTimerComponent,\n    DatepickerTimerBoxComponent,\n    DatepickerNumberFixedLengthPipe,\n    DatepickerComponent,\n  ],\n  providers: [\n    // русский язык в datepicker\n    { provide: DATEPICKER_DATE_TIME_LOCALE, useValue: 'ru' },\n    // изменение названия кнопок в datepicker\n    { provide: DatepickerDateTimePickerIntlService, useClass: DefaultIntl },\n    // кастомный формат даты/времени\n    { provide: DATEPICKER_DATE_TIME_FORMATS, useValue: MY_NATIVE_FORMATS },\n    DATEPICKER_DIALOG_SCROLL_STRATEGY_PROVIDER,\n    DatepickerDialogService,\n    { provide: DatepickerDateTimeAdapter, useClass: DatepickerNativeDateTimeAdapter },\n    { provide: DATEPICKER_DATE_TIME_FORMATS, useValue: DATEPICKER_NATIVE_DATE_TIME_FORMATS },\n    DATEPICKER_DTPICKER_SCROLL_STRATEGY_PROVIDER,\n  ],\n})\nexport class RadUIDatepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3.DatepickerCalendarBodyComponent","i1.DatepickerDateTimePickerIntlService","i2.DatepickerDateTimeAdapter","i2.DatepickerCalendarBodyComponent","i4","i5.DatepickerCalendarMonthViewComponent","i6.DatepickerCalendarMultiYearViewComponent","i7.DatepickerCalendarYearViewComponent","i2.DatepickerNumberFixedLengthPipe","i4.DatepickerTimerBoxComponent","i5.DatepickerCalendarComponent","i6.DatepickerTimerComponent","i2.DatepickerDateTimePickerContainerComponent","i2.DatepickerDialogService","i3.DatepickerDateTimeAdapter","i3","i5.DatepickerDateTimePickerInputDirective","i6.DatepickerDateTimePickerTriggerDirective","i7.DatepickerDateTimePickerComponent"],"mappings":"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"}