@dintecom/ngx-datetime-picker 22.0.0 → 22.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"dintecom-ngx-datetime-picker.mjs","sources":["../../../projects/picker/src/lib/date-time/date-time-picker-intl.service.ts","../../../projects/picker/src/lib/dialog/dialog-config.class.ts","../../../projects/picker/src/lib/dialog/dialog-ref.class.ts","../../../projects/picker/src/lib/dialog/dialog-container.component.ts","../../../projects/picker/src/lib/dialog/dialog-container.component.html","../../../projects/picker/src/lib/utils/object.utils.ts","../../../projects/picker/src/lib/utils/index.ts","../../../projects/picker/src/lib/dialog/dialog.service.ts","../../../projects/picker/src/lib/date-time/adapter/date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/adapter/date-time-format.class.ts","../../../projects/picker/src/lib/date-time/date-time.class.ts","../../../projects/picker/src/lib/date-time/calendar-body.component.ts","../../../projects/picker/src/lib/date-time/calendar-body.component.html","../../../projects/picker/src/lib/date-time/calendar-month-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-month-view.component.html","../../../projects/picker/src/lib/date-time/calendar-year-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-year-view.component.html","../../../projects/picker/src/lib/date-time/options-provider.ts","../../../projects/picker/src/lib/date-time/calendar-multi-year-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-multi-year-view.component.html","../../../projects/picker/src/lib/date-time/calendar.component.ts","../../../projects/picker/src/lib/date-time/calendar.component.html","../../../projects/picker/src/lib/date-time/timer-box.component.ts","../../../projects/picker/src/lib/date-time/timer-box.component.html","../../../projects/picker/src/lib/date-time/timer.component.ts","../../../projects/picker/src/lib/date-time/timer.component.html","../../../projects/picker/src/lib/date-time/date-time-picker-container.component.ts","../../../projects/picker/src/lib/date-time/date-time-picker-container.component.html","../../../projects/picker/src/lib/date-time/date-time-picker.component.ts","../../../projects/picker/src/lib/date-time/date-time-picker.component.html","../../../projects/picker/src/lib/date-time/provide-date-time.ts","../../../projects/picker/src/lib/utils/array.utils.ts","../../../projects/picker/src/lib/utils/date.utils.ts","../../../projects/picker/src/lib/utils/constants.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time-format.class.ts","../../../projects/picker/src/lib/date-time/adapter/provide-native-date-time.ts","../../../projects/picker/src/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class.ts","../../../projects/picker/src/lib/date-time/adapter/unix-timestamp-adapter/provide-unix-timestamp-date-time.ts","../../../projects/picker/src/lib/dialog/provide-dialog.ts","../../../projects/picker/src/lib/date-time/date-time-picker-trigger.directive.ts","../../../projects/picker/src/lib/date-time/date-time-picker-input.directive.ts","../../../projects/picker/src/lib/date-time/numberedFixLen.pipe.ts","../../../projects/picker/src/lib/date-time/date-time-inline.component.ts","../../../projects/picker/src/lib/date-time/date-time-inline.component.html","../../../projects/picker/src/lib/dialog/dialog.module.ts","../../../projects/picker/src/lib/date-time/hour-input.component.ts","../../../projects/picker/src/lib/date-time/hour-input.component.html","../../../projects/picker/src/lib/date-time/date-time.module.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time.module.ts","../../../projects/picker/src/public-api.ts","../../../projects/picker/src/dintecom-ngx-datetime-picker.ts"],"sourcesContent":["/**\n * date-time-picker-intl.service\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({providedIn: 'root'})\nexport class OwlDateTimeIntl {\n\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","/**\n * dialog-config.class\n */\nimport { 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 DialogPosition {\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 interface OwlDialogConfigInterface {\n /**\n * ID of the element that describes the dialog.\n */\n ariaDescribedBy?: string | null;\n\n /**\n * Whether to focus the dialog when the dialog is opened\n */\n autoFocus?: boolean;\n\n /** Whether the dialog has a backdrop. */\n hasBackdrop?: boolean;\n\n /**\n * Custom style for the backdrop\n * */\n backdropStyle?: any;\n\n /** Data being injected into the child component. */\n data?: any ;\n\n /** Whether the user can use escape or clicking outside to close a modal. */\n disableClose?: boolean;\n\n /**\n * ID for the modal. If omitted, a unique one will be generated.\n */\n id?: string;\n\n /**\n * The ARIA role of the dialog element.\n */\n role?: 'dialog' | 'alertdialog';\n\n /**\n * Custom class for the pane\n * */\n paneClass?: string | string[];\n\n /**\n * Mouse Event\n * */\n event?: MouseEvent;\n\n /**\n * Custom class for the backdrop\n * */\n backdropClass?: string | string[];\n\n /**\n * Whether the dialog should close when the user goes backwards/forwards in history.\n * */\n closeOnNavigation?: boolean;\n\n /** Width of the dialog. */\n width?: string ;\n\n /** Height of the dialog. */\n height?: string;\n\n /**\n * The min-width of the overlay panel.\n * If a number is provided, pixel units are assumed.\n * */\n 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 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 maxWidth?: number | string;\n\n /**\n * The max-height of the overlay panel.\n * If a number is provided, pixel units are assumed.\n * */\n maxHeight?: number | string;\n\n /** Position overrides. */\n position?: DialogPosition;\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 scrollStrategy?: ScrollStrategy;\n\n viewContainerRef?: ViewContainerRef;\n}\n\nexport class OwlDialogConfig implements OwlDialogConfigInterface {\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 = 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 = 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;\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 = true;\n\n /** Width of the dialog. */\n public width = '';\n\n /** Height of the dialog. */\n public height = '';\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: DialogPosition;\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 = `owl-dialog-${uniqueId++}`;\n }\n}\n","/**\n * dialog-ref.class\n */\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { GlobalPositionStrategy, OverlayRef } from '@angular/cdk/overlay';\nimport { Location } from '@angular/common';\nimport { Signal, signal } from '@angular/core';\nimport { Observable, Subject, Subscription, SubscriptionLike, filter, take } from 'rxjs';\nimport { IDateTimePickerAnimationEvent } from '../date-time/date-time-picker-animation-event';\nimport { DialogPosition } from './dialog-config.class';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\n\nexport class OwlDialogRef<T> {\n\n private result: any;\n\n private _beforeClose$ = new Subject<any>();\n\n private _beforeOpen$ = 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 = signal<T | undefined>(undefined);\n\n /** Whether the user is allowed to close the dialog. */\n public disableClose = true;\n\n constructor(private overlayRef: OverlayRef,\n private container: OwlDialogContainerComponent,\n public readonly id: string,\n location?: Location) {\n this.disableClose = this.container.config.disableClose;\n\n this.container.animationStateChanged\n .pipe(\n filter(( event: IDateTimePickerAnimationEvent ) => event.phaseName === 'start' && event.toState === 'enter'),\n take(1)\n )\n .subscribe(() => {\n this._beforeOpen$.next(null);\n this._beforeOpen$.complete();\n });\n\n this.container.animationStateChanged\n .pipe(\n filter(( event: IDateTimePickerAnimationEvent ) => event.phaseName === 'done' && event.toState === 'enter'),\n take(1)\n )\n .subscribe(() => {\n this._afterOpen$.next(null);\n this._afterOpen$.complete();\n });\n\n this.container.animationStateChanged\n .pipe(\n filter((event: IDateTimePickerAnimationEvent) => event.phaseName === 'done' && event.toState === 'leave'),\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.set(undefined);\n });\n\n this.overlayRef.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 => 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?: DialogPosition): 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().width(width).height(height);\n this.overlayRef.updatePosition();\n return this;\n }\n\n public isAnimating(): Signal<boolean> {\n return this.container.isAnimating;\n }\n\n public beforeOpen(): Observable<any> {\n return this._beforeOpen$.asObservable();\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 * dialog-container.component\n */\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentRef, ElementRef, EmbeddedViewRef, EventEmitter, OnInit, signal, ViewChild, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\nimport {\n BasePortalOutlet,\n CdkPortalOutlet,\n ComponentPortal,\n TemplatePortal,\n} from '@angular/cdk/portal';\nimport { OwlDateTimeContainerComponent } from '../date-time/date-time-picker-container.component';\nimport { IDateTimePickerAnimationEvent } from '../date-time/date-time-picker-animation-event';\nimport { OwlDialogConfigInterface } from './dialog-config.class';\n\n@Component({\n selector: 'owl-dialog-container',\n templateUrl: './dialog-container.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n host: {\n '[class.owl-dialog-container]': 'owlDialogContainerClass',\n '[attr.tabindex]': 'owlDialogContainerTabIndex',\n '[attr.id]': 'owlDialogContainerId',\n '[attr.role]': 'owlDialogContainerRole',\n '[attr.aria-labelledby]': 'owlDialogContainerAriaLabelledby',\n '[attr.aria-describedby]': 'owlDialogContainerAriaDescribedby'\n },\n imports: [CdkPortalOutlet],\n})\nexport class OwlDialogContainerComponent extends BasePortalOutlet\n implements OnInit {\n private changeDetector = inject(ChangeDetectorRef);\n private elementRef = inject(ElementRef);\n private focusTrapFactory = inject(FocusTrapFactory);\n private document = inject(DOCUMENT, { optional: true })!;\n\n @ViewChild(CdkPortalOutlet, { static: true })\n portalOutlet: CdkPortalOutlet | null = null;\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<IDateTimePickerAnimationEvent>();\n\n public isAnimating = signal(false);\n\n private _config: OwlDialogConfigInterface;\n private _component: ComponentRef<unknown>;\n get config(): OwlDialogConfigInterface {\n return this._config;\n }\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 get owlDialogContainerClass(): boolean {\n return true;\n }\n\n get owlDialogContainerTabIndex(): number {\n return -1;\n }\n\n get owlDialogContainerId(): string {\n return this._config.id;\n }\n\n get owlDialogContainerRole(): string {\n return this._config.role || null;\n }\n\n get owlDialogContainerAriaLabelledby(): string {\n return this.ariaLabelledBy;\n }\n\n get owlDialogContainerAriaDescribedby(): string {\n return this._config.ariaDescribedBy || null;\n }\n\n public ngOnInit() {}\n\n /**\n * Attach a ComponentPortal as content to this dialog container.\n */\n public attachComponentPortal<T>(\n portal: ComponentPortal<T>,\n ): ComponentRef<T> {\n if (this.portalOutlet.hasAttached()) {\n throw Error(\n 'Attempting to attach dialog content after content is already attached',\n );\n }\n\n this.savePreviouslyFocusedElement();\n const component = this.portalOutlet.attachComponentPortal(portal);\n const pickerContainer = component.instance as OwlDateTimeContainerComponent<unknown>;\n pickerContainer.animationStateChanged.subscribe(state => this.onAnimationDone(state));\n this._component = component;\n return component;\n }\n\n public attachTemplatePortal<C>(\n portal: TemplatePortal<C>,\n ): EmbeddedViewRef<C> {\n throw new Error('Method not implemented.');\n }\n\n public setConfig(config: OwlDialogConfigInterface): void {\n this._config = config;\n\n if (config.event) {\n this.calculateZoomOrigin(event);\n }\n }\n\n public onAnimationStart(event: IDateTimePickerAnimationEvent): void {\n this.isAnimating.set(true);\n this.animationStateChanged.emit(event);\n }\n\n public onAnimationDone(event: IDateTimePickerAnimationEvent): void {\n if (event.toState === 'enter') {\n this.trapFocus();\n } else if (event.toState === 'leave') {\n this.restoreFocus();\n }\n\n this.animationStateChanged.emit(event);\n this.isAnimating.set(false);\n }\n\n public startExitAnimation() {\n this._component.destroy();\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\n .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(\n this.elementRef.nativeElement,\n );\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","/**\n * object.utils\n */\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","/**\n * index\n */\n\nexport * from './object.utils';\n","/**\n * dialog.service\n */\n\nimport { ComponentRef, Injectable, InjectionToken, Injector, TemplateRef, inject } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { OwlDialogConfig, OwlDialogConfigInterface } from './dialog-config.class';\nimport { OwlDialogRef } from './dialog-ref.class';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\nimport { extendObject } from '../utils';\nimport { defer, Observable, Subject } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport {\n Overlay,\n OverlayConfig,\n OverlayContainer,\n OverlayRef,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport {\n ComponentPortal,\n ComponentType,\n} from '@angular/cdk/portal';\n\nexport const OWL_DIALOG_DATA = new InjectionToken<any>('OwlDialogData');\n\n/**\n * Injection token that determines the scroll handling while the dialog is open.\n * */\nexport const OWL_DIALOG_SCROLL_STRATEGY = new InjectionToken<\n () => ScrollStrategy\n>('owl-dialog-scroll-strategy');\n\nexport function OWL_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(\n overlay: Overlay\n): () => ScrollStrategy {\n const fn = () => overlay.scrollStrategies.block();\n return fn;\n}\n\n/** @docs-private */\nexport const OWL_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n provide: OWL_DIALOG_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: OWL_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n\n/**\n * Injection token that can be used to specify default dialog options.\n * */\nexport const OWL_DIALOG_DEFAULT_OPTIONS = new InjectionToken<OwlDialogConfig>(\n 'owl-dialog-default-options'\n);\n\n@Injectable()\nexport class OwlDialogService {\n private overlay = inject(Overlay);\n private injector = inject(Injector);\n private location = inject(Location, { optional: true })!;\n private defaultOptions = inject<OwlDialogConfigInterface>(OWL_DIALOG_DEFAULT_OPTIONS, { optional: true })!;\n private parentDialog = inject(OwlDialogService, { optional: true, skipSelf: true })!;\n private overlayContainer = inject(OverlayContainer);\n\n private ariaHiddenElements = new Map<Element, string | null>();\n\n private _openDialogsAtThisLevel: OwlDialogRef<any>[] = [];\n private _beforeOpenAtThisLevel = new Subject<OwlDialogRef<any>>();\n private _afterOpenAtThisLevel = new Subject<OwlDialogRef<any>>();\n private _afterAllClosedAtThisLevel = new Subject<void>();\n\n /** Keeps track of the currently-open dialogs. */\n get openDialogs(): OwlDialogRef<any>[] {\n return this.parentDialog\n ? this.parentDialog.openDialogs\n : this._openDialogsAtThisLevel;\n }\n\n /** Stream that emits when a dialog has been opened. */\n get beforeOpen(): Subject<OwlDialogRef<any>> {\n return this.parentDialog\n ? this.parentDialog.beforeOpen\n : this._beforeOpenAtThisLevel;\n }\n\n /** Stream that emits when a dialog has been opened. */\n get afterOpen(): Subject<OwlDialogRef<any>> {\n return this.parentDialog\n ? this.parentDialog.afterOpen\n : this._afterOpenAtThisLevel;\n }\n\n get _afterAllClosed(): any {\n const parent = this.parentDialog;\n return parent\n ? parent._afterAllClosed\n : 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: Observable<{}> = defer(\n () =>\n this._openDialogsAtThisLevel.length\n ? this._afterAllClosed\n : this._afterAllClosed.pipe(startWith(undefined))\n );\n\n private readonly scrollStrategy: () => ScrollStrategy;\n\n constructor() {\n const location = this.location;\n const scrollStrategy = inject(OWL_DIALOG_SCROLL_STRATEGY);\n const parentDialog = this.parentDialog;\n\n this.scrollStrategy = scrollStrategy;\n if (!parentDialog && location) {\n location.subscribe(() => this.closeAll());\n }\n }\n\n public open<T>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: OwlDialogConfigInterface\n ): OwlDialogRef<any> {\n config = applyConfigDefaults(config, this.defaultOptions);\n\n if (config.id && this.getDialogById(config.id)) {\n throw Error(\n `Dialog with id \"${\n config.id\n }\" exists already. The dialog id must be unique.`\n );\n }\n\n const overlayRef = this.createOverlay(config);\n const dialogContainer = this.attachDialogContainer(overlayRef, config);\n const dialogRef = this.attachDialogContent<T>(\n componentOrTemplateRef,\n dialogContainer,\n overlayRef,\n config\n );\n\n if (!this.openDialogs.length) {\n this.hideNonDialogContentFromAssistiveTechnology();\n }\n\n this.openDialogs.push(dialogRef);\n dialogRef\n .afterClosed()\n .subscribe(() => this.removeOpenDialog(dialogRef));\n this.beforeOpen.next(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): OwlDialogRef<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: OwlDialogContainerComponent,\n overlayRef: OverlayRef,\n config: OwlDialogConfigInterface\n ) {\n const dialogRef = new OwlDialogRef<T>(\n overlayRef,\n dialogContainer,\n config.id,\n this.location\n );\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>(\n config,\n dialogRef,\n dialogContainer\n );\n const contentRef = dialogContainer.attachComponentPortal(\n new ComponentPortal(componentOrTemplateRef, undefined, injector)\n );\n dialogRef.componentInstance.set(contentRef.instance);\n }\n\n dialogRef\n .updateSize(config.width, config.height)\n .updatePosition(config.position);\n\n return dialogRef;\n }\n\n private createInjector<T>(\n config: OwlDialogConfigInterface,\n dialogRef: OwlDialogRef<T>,\n dialogContainer: OwlDialogContainerComponent\n ) {\n const userInjector =\n config?.viewContainerRef?.injector;\n const providers = [\n { provide: OwlDialogRef, useValue: dialogRef },\n { provide: OwlDialogContainerComponent, useValue: dialogContainer },\n { provide: OWL_DIALOG_DATA, useValue: config?.data },\n ];\n\n return Injector.create({\n providers,\n parent: userInjector || this.injector,\n });\n }\n\n private createOverlay(config: OwlDialogConfigInterface): OverlayRef {\n const overlayConfig = this.getOverlayConfig(config);\n return this.overlay.create(overlayConfig);\n }\n\n private attachDialogContainer(\n overlayRef: OverlayRef,\n config: OwlDialogConfigInterface\n ): OwlDialogContainerComponent {\n const containerPortal = new ComponentPortal(\n OwlDialogContainerComponent,\n config.viewContainerRef\n );\n const containerRef: ComponentRef<\n OwlDialogContainerComponent\n > = overlayRef.attach(containerPortal);\n containerRef.instance.setConfig(config);\n\n return containerRef.instance;\n }\n\n private getOverlayConfig(dialogConfig: OwlDialogConfigInterface): OverlayConfig {\n const state = new OverlayConfig({\n positionStrategy: this.overlay.position().global(),\n scrollStrategy:\n 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: OwlDialogRef<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(\n sibling,\n sibling.getAttribute('aria-hidden')\n );\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(\n config?: OwlDialogConfigInterface,\n defaultOptions?: OwlDialogConfigInterface\n): OwlDialogConfig {\n return extendObject(new OwlDialogConfig(), config, defaultOptions);\n}\n","/**\n * date-time-adapter.class\n */\nimport { Observable, Subject } from 'rxjs';\nimport { inject, InjectionToken, LOCALE_ID } from '@angular/core';\n\n/** InjectionToken for date time picker that can be used to override default locale code. */\nexport const OWL_DATE_TIME_LOCALE = new InjectionToken<string>(\n 'OWL_DATE_TIME_LOCALE',\n {\n providedIn: 'root',\n factory: OWL_DATE_TIME_LOCALE_FACTORY\n }\n);\n\n/** @docs-private */\nexport function OWL_DATE_TIME_LOCALE_FACTORY(): string {\n return inject(LOCALE_ID);\n}\n\n/** Provider for OWL_DATE_TIME_LOCALE injection token. */\nexport const OWL_DATE_TIME_LOCALE_PROVIDER = {\n provide: OWL_DATE_TIME_LOCALE,\n useExisting: LOCALE_ID\n};\n\nexport abstract class DateTimeAdapter<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<string>();\n get localeChanges(): Observable<string> {\n return this._localeChanges;\n }\n\n\tpublic firstMonthOfTheYear: number = 0;\n\tpublic firstDayOfTheWeek: number = 0;\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): number;\n\n /**\n * Get the minutes of the given date\n */\n abstract getMinutes(date: T): number;\n\n /**\n * Get the seconds of the given date\n */\n abstract getSeconds(date: T): 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(\n year: number,\n month: number,\n date: number,\n hours: number,\n minutes: number,\n seconds: number\n ): 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 (\n value == null ||\n (this.isDateInstance(value) && this.isValid(value))\n ) {\n return value;\n }\n return this.invalid();\n }\n\n /**\n * Sets the locale used for all dates.\n */\n setLocale(locale: string) {\n this.locale = locale;\n this._localeChanges.next(locale);\n }\n\n /**\n * Get the locale used for all dates.\n * */\n getLocale() {\n return this.locale;\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","/**\n * date-time-format.class\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport interface OwlDateTimeFormats {\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 OWL_DATE_TIME_FORMATS = new InjectionToken<OwlDateTimeFormats>('OWL_DATE_TIME_FORMATS');\n","/**\n * date-time.class\n */\nimport {EventEmitter, Inject, Input, Optional, Directive, input, OutputEmitterRef} from '@angular/core';\nimport {\n coerceBooleanProperty,\n coerceNumberProperty\n} from '@angular/cdk/coercion';\nimport {DateTimeAdapter} from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/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\nexport enum DateView {\n MONTH = 'month',\n YEAR = 'year',\n MULTI_YEARS = 'multi-years'\n}\n\nexport type DateViewType = DateView.MONTH | DateView.YEAR | DateView.MULTI_YEARS;\n\n@Directive()\nexport abstract class OwlDateTime<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 readonly startView = input<DateViewType>(DateView.MONTH);\n\n /**\n * Whether to show calendar weeks in the calendar\n * */\n readonly showCalendarWeeks = input(false);\n\n /**\n * Whether to should only the year and multi-year views.\n */\n readonly yearOnly = input(false);\n\n /**\n * Whether to should only the multi-year view.\n */\n readonly multiyearOnly = input(false);\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: number;\n @Input()\n get firstDayOfWeek() {\n return this._firstDayOfWeek;\n }\n\n set firstDayOfWeek(value: number) {\n value = coerceNumberProperty(value);\n if (value > 6 || value < 0) {\n this._firstDayOfWeek = undefined;\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 readonly _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 endAt(): 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 select(date: T | T[]): void;\n\n abstract yearSelected: OutputEmitterRef<T>;\n\n abstract monthSelected: OutputEmitterRef<T>;\n\n abstract dateSelected: OutputEmitterRef<T>;\n\n abstract selectYear(normalizedYear: T): void;\n\n abstract selectMonth(normalizedMonth: T): void;\n\n abstract selectDate(normalizedDate: T): void;\n\n get formatString(): any {\n if (this.pickerType === 'both') {\n // If showSecondsTimer is enabled, add seconds to the format\n if (this.showSecondsTimer && typeof this.dateTimeFormats.fullPickerInput === 'object') {\n return { ...this.dateTimeFormats.fullPickerInput, second: 'numeric' };\n }\n return this.dateTimeFormats.fullPickerInput;\n } else if (this.pickerType === 'calendar') {\n return this.dateTimeFormats.datePickerInput;\n } else {\n // pickerType === 'timer'\n // If showSecondsTimer is enabled, add seconds to the format\n if (this.showSecondsTimer && typeof this.dateTimeFormats.timePickerInput === 'object') {\n return { ...this.dateTimeFormats.timePickerInput, second: 'numeric' };\n }\n return this.dateTimeFormats.timePickerInput;\n }\n }\n\n /**\n * Date Time Checker to check if the give dateTime is selectable\n */\n public dateTimeChecker = (dateTime: T) => {\n return (\n !!dateTime &&\n (!this.dateTimeFilter || this.dateTimeFilter(dateTime)) &&\n (!this.minDateTime ||\n this.dateTimeAdapter.compare(dateTime, this.minDateTime) >=\n 0) &&\n (!this.maxDateTime ||\n this.dateTimeAdapter.compare(dateTime, this.maxDateTime) <= 0)\n );\n };\n\n get disabled(): boolean {\n return false;\n }\n\n protected constructor(\n @Optional() protected dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n protected dateTimeFormats: OwlDateTimeFormats\n ) {\n if (!this.dateTimeAdapter) {\n throw Error(\n `OwlDateTimePicker: No provider found for DateTimeAdapter. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n if (!this.dateTimeFormats) {\n throw Error(\n `OwlDateTimePicker: No provider found for OWL_DATE_TIME_FORMATS. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n this._id = `owl-dt-picker-${nextUniqueId++}`;\n }\n\n protected getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n}\n","/**\n * calendar-body.component\n */\n\nimport { ChangeDetectionStrategy, Component, ElementRef, OnInit, afterNextRender, inject, input, output, Injector } from '@angular/core';\nimport { SelectMode } from './date-time.class';\nimport { NgClass } from '@angular/common';\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: '[owl-date-time-calendar-body]',\n exportAs: 'owlDateTimeCalendarBody',\n templateUrl: './calendar-body.component.html',\n styleUrls: ['./calendar-body.component.scss'],\n host: {\n '[class.owl-dt-calendar-body]': 'owlDTCalendarBodyClass'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass]\n})\nexport class OwlCalendarBodyComponent implements OnInit {\n private elmRef = inject(ElementRef);\n private injector = inject(Injector);\n\n /**\n * The cell number of the active cell in the table.\n */\n readonly activeCell = input(0);\n\n /**\n * The cells to display in the table.\n * */\n readonly rows = input<CalendarCell[][]>(undefined);\n\n /**\n * The number of columns in the table.\n * */\n readonly numCols = input(7);\n\n /**\n * The ratio (width / height) to use for the cells in the table.\n */\n readonly cellRatio = input(1);\n\n /**\n * The value in the table that corresponds to today.\n * */\n readonly todayValue = input<number>(undefined);\n\n /**\n * The value in the table that is currently selected.\n * */\n readonly selectedValues = input<number[]>(undefined);\n\n /**\n * Current picker select mode\n */\n readonly selectMode = input<SelectMode>(undefined);\n\n /**\n * Emit when a calendar cell is selected\n * */\n public readonly select = output<CalendarCell>();\n\n get owlDTCalendarBodyClass(): boolean {\n return true;\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode() === 'single';\n }\n\n get isInRangeMode(): boolean {\n const selectMode = this.selectMode();\n return (\n selectMode === 'range' ||\n selectMode === 'rangeFrom' ||\n selectMode === 'rangeTo'\n );\n }\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 const selectedValues = this.selectedValues();\n if (!selectedValues || selectedValues.length === 0) {\n return false;\n }\n\n if (this.isInSingleMode) {\n return value === selectedValues[0];\n }\n\n if (this.isInRangeMode) {\n const fromValue = selectedValues[0];\n const toValue = selectedValues[1];\n\n return value === fromValue || value === toValue;\n }\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 }\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 }\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 }\n\n /**\n * Focus to a active cell\n * */\n public focusActiveCell(): void {\n afterNextRender(() => {\n const activeCell = this.elmRef.nativeElement\n .querySelector('.owl-dt-calendar-cell-active');\n if (activeCell) {\n activeCell.focus();\n }\n }, { injector: this.injector });\n }\n}\n","@for (row of rows(); track $index; let rowIndex = $index) {\n <tr role=\"row\">\n @for (item of row; track $index; let colIndex = $index) {\n <td\n class=\"owl-dt-calendar-cell {{ item.cellClass }}\"\n [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [class.owl-dt-calendar-cell-active]=\"\n isActiveCell(rowIndex, colIndex)\n \"\n [class.owl-dt-calendar-cell-disabled]=\"!item.enabled\"\n [class.owl-dt-calendar-cell-in-range]=\"isInRange(item.value)\"\n [class.owl-dt-calendar-cell-range-from]=\"\n isRangeFrom(item.value)\n \"\n [class.owl-dt-calendar-cell-range-to]=\"isRangeTo(item.value)\"\n [attr.aria-label]=\"item.ariaLabel\"\n [attr.aria-disabled]=\"!item.enabled || null\"\n [attr.aria-current]=\"item.value === todayValue() ? 'date' : null\"\n [attr.aria-selected]=\"isSelected(item.value)\"\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=\"owl-dt-calendar-cell-content\"\n [ngClass]=\"{\n 'owl-dt-calendar-cell-out': item.out,\n 'owl-dt-calendar-cell-today': item.value === todayValue(),\n 'owl-dt-calendar-cell-selected': isSelected(item.value),\n }\"\n >\n {{ item.displayValue }}\n </span>\n </td>\n }\n </tr>\n}\n","/**\n * calendar-month-view.component\n */\n\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, inject, input, output, viewChild } from '@angular/core';\nimport {\n CalendarCell,\n OwlCalendarBodyComponent\n} from './calendar-body.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from './date-time.class';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { getLocaleFirstDayOfWeek, NgClass } from '@angular/common';\n\nconst DAYS_PER_WEEK = 7;\nconst WEEKS_PER_VIEW = 6;\n\n@Component({\n selector: 'owl-date-time-month-view',\n exportAs: 'owlYearView',\n templateUrl: './calendar-month-view.component.html',\n styleUrls: ['./calendar-month-view.component.scss'],\n host: {\n '[class.owl-dt-calendar-view]': 'owlDTCalendarView'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, OwlCalendarBodyComponent]\n})\nexport class OwlMonthViewComponent<T>\n implements OnInit, AfterContentInit, OnDestroy {\n private cdRef = inject(ChangeDetectorRef);\n private dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true })!;\n private dateTimeFormats = inject<OwlDateTimeFormats>(OWL_DATE_TIME_FORMATS, { optional: true })!;\n\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n * */\n readonly hideOtherMonths = input(false);\n\n /**\n * Whether to show calendar weeks in the calendar\n * */\n readonly showCalendarWeeks = input(false);\n\n private isDefaultFirstDayOfWeek = true;\n\n /**\n * Define the first day of a week\n * Sunday: 0 - Saturday: 6\n * */\n private _firstDayOfWeek: number;\n\n @Input()\n get firstDayOfWeek(): number {\n return this._firstDayOfWeek;\n }\n\n set firstDayOfWeek(val: number) {\n if (val >= 0 && val <= 6 && val !== this._firstDayOfWeek) {\n this._firstDayOfWeek = val;\n this.isDefaultFirstDayOfWeek = false;\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;\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(oldSelected, 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 = values.map(v => {\n v = 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 this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n const oldMoment = this._pickerMoment;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment =\n 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 (\n !this.isSameMonth(oldMoment, this._pickerMoment) &&\n this.initiated\n ) {\n this.generateCalendar();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n * */\n private _dateFilter: (date: T) => boolean;\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;\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;\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 (\n this.dateTimeAdapter.getDate(this.pickerMoment) +\n this.firstRowOffset -\n 1\n );\n }\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom' ||\n this.selectMode === 'rangeTo'\n );\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 | null;\n\n /**\n * Week day numbers\n * */\n public weekNumbers: 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 readonly selectedChange = output<T | null>();\n\n /**\n * Callback to invoke when any date is selected.\n * */\n readonly userSelection = output<void>();\n\n /** Emits when any date is activated. */\n readonly pickerMomentChange = output<T>();\n\n /** The body of calendar table */\n readonly calendarBodyElm = viewChild(OwlCalendarBodyComponent);\n\n get owlDTCalendarView(): boolean {\n return true;\n }\n\n public ngOnInit() {\n this.updateFirstDayOfWeek(this.dateTimeAdapter.getLocale());\n this.generateWeekDays();\n\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(\n locale => {\n this.updateFirstDayOfWeek(locale);\n this.generateWeekDays();\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\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(\n this.firstDateOfMonth,\n daysDiff\n );\n\n // TODO: The 'emit' function requires a mandatory void argument\n this.userSelection.emit();\n this.selectedChange.emit(selected);\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(\n this.pickerMoment,\n -1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 day\n case RIGHT_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(\n this.pickerMoment,\n 1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 week\n case UP_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(\n this.pickerMoment,\n -7\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 week\n case DOWN_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(\n this.pickerMoment,\n 7\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to first day of current month\n case HOME:\n moment = this.dateTimeAdapter.addCalendarDays(\n this.pickerMoment,\n 1 - this.dateTimeAdapter.getDate(this.pickerMoment)\n );\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) -\n 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(\n this.pickerMoment,\n -1\n )\n : this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n -1\n );\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(\n this.pickerMoment,\n 1\n )\n : this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n 1\n );\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(\n this.dateTimeAdapter.getDate(this.pickerMoment)\n );\n // Selecting may auto-close (and destroy) the picker. Bail out\n // before focusActiveCell() so we don't schedule render work on\n // a destroyed view (NG0911). The active cell keeps its focus.\n event.preventDefault();\n return;\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\n .slice(firstDayOfWeek-this.dateTimeAdapter.firstDayOfTheWeek)\n .concat(weekdays.slice(0, firstDayOfWeek-this.dateTimeAdapter.firstDayOfTheWeek));\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 = null;\n this.weekNumbers = [];\n\n // the first weekday of the month\n const startWeekdayOfMonth = this.dateTimeAdapter.getDay(\n this.firstDateOfMonth\n );\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 =\n 0 -\n ((startWeekdayOfMonth + (DAYS_PER_WEEK - firstDayOfWeek)) %\n 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 = [];\n for (let j = 0; j < DAYS_PER_WEEK; j++) {\n const date = this.dateTimeAdapter.addCalendarDays(\n this.firstDateOfMonth,\n daysDiff\n );\n const dateCell = this.createDateCell(date, daysDiff);\n // check if the date is today\n if (\n this.dateTimeAdapter.isSameDay(\n this.dateTimeAdapter.now(),\n date\n )\n ) {\n this.todayDate = daysDiff + 1;\n }\n\n week.push(dateCell);\n daysDiff += 1;\n }\n this._days.push(week);\n if (this.showCalendarWeeks()) {\n const weekNumber = this.getISOWeek(new Date(week[0].ariaLabel));\n this.weekNumbers.push(weekNumber);\n }\n }\n this.setSelectedDates();\n }\n\n public getISOWeek(d: Date): number {\n const clonedDate = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));\n // Make Sunday's day number 7\n clonedDate.setUTCDate(clonedDate.getUTCDate() + 4 - (clonedDate.getUTCDay()||7));\n // Get first day of year\n const yearStart = new Date(Date.UTC(clonedDate.getUTCFullYear(),0,1));\n // Calculate full weeks to nearest Thursday\n const weekNo = Math.ceil(( ( (+clonedDate - +yearStart) / 86400000) + 1)/7);\n return weekNo;\n }\n\n private updateFirstDayOfWeek(locale: string): void {\n if (this.isDefaultFirstDayOfWeek) {\n try {\n this._firstDayOfWeek = getLocaleFirstDayOfWeek(locale);\n } catch {\n this._firstDayOfWeek = 0;\n }\n }\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(\n this.pickerMoment\n );\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(\n date,\n this.dateTimeFormats.dateA11yLabel\n );\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 = 'owl-dt-day-' + this.dateTimeAdapter.getDay(date);\n\n return new CalendarCell(\n dayValue,\n dateName,\n ariaLabel,\n enabled,\n out,\n cellClass\n );\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 ||\n this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate ||\n 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) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : 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) ===\n this.dateTimeAdapter.getYear(dateRight) &&\n this.dateTimeAdapter.getMonth(dateLeft) ===\n 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(\n this.selected,\n this.firstDateOfMonth\n );\n this.selectedDates[0] = dayDiff + 1;\n return;\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this.selectedDates = this.selecteds.map(selected => {\n if (this.dateTimeAdapter.isValid(selected)) {\n const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(\n selected,\n this.firstDateOfMonth\n );\n return dayDiff + 1;\n } else {\n return null;\n }\n });\n }\n }\n\n private focusActiveCell() {\n this.calendarBodyElm().focusActiveCell();\n }\n}\n","@if (showCalendarWeeks()) {\n <ul class=\"week-number\">\n @for (week of weekNumbers; track week) {\n <li>\n <span>{{ week }}</span>\n </li>\n }\n </ul>\n}\n<table\n class=\"owl-dt-calendar-table owl-dt-calendar-month-table\"\n [ngClass]=\"{ 'owl-calendar-weeks': showCalendarWeeks() }\"\n [class.owl-dt-calendar-only-current-month]=\"hideOtherMonths()\"\n>\n <thead class=\"owl-dt-calendar-header\">\n <tr class=\"owl-dt-weekdays\">\n @for (weekday of weekdays; track weekday.short) {\n <th\n [attr.aria-label]=\"weekday.long\"\n class=\"owl-dt-weekday\"\n scope=\"col\"\n >\n <span>{{ weekday.short }}</span>\n </th>\n }\n </tr>\n <tr>\n <th\n class=\"owl-dt-calendar-table-divider\"\n [ngClass]=\"{ 'owl-calendar-weeks': showCalendarWeeks() }\"\n aria-hidden=\"true\"\n colspan=\"7\"\n ></th>\n </tr>\n </thead>\n <tbody\n owl-date-time-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","/**\n * calendar-year-view.component\n */\n\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, inject, output, viewChild } from '@angular/core';\nimport {\n CalendarCell,\n OwlCalendarBodyComponent\n} from './calendar-body.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from './date-time.class';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\n\nconst MONTHS_PER_YEAR = 12;\nconst MONTHS_PER_ROW = 3;\n\n@Component({\n selector: 'owl-date-time-year-view',\n exportAs: 'owlMonthView',\n templateUrl: './calendar-year-view.component.html',\n styleUrls: ['./calendar-year-view.component.scss'],\n host: {\n '[class.owl-dt-calendar-view]': 'owlDTCalendarView'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [OwlCalendarBodyComponent]\n})\nexport class OwlYearViewComponent<T>\n implements OnInit, AfterContentInit, OnDestroy {\n private cdRef = inject(ChangeDetectorRef);\n private dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true })!;\n private dateTimeFormats = inject<OwlDateTimeFormats>(OWL_DATE_TIME_FORMATS, { optional: true })!;\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.generateMonthList();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | 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(this.getValidDate(value));\n }\n\n this.setSelectedMonths();\n }\n\n private _pickerMoment: T | null;\n @Input()\n get pickerMoment() {\n return this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n const oldMoment = this._pickerMoment;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment =\n this.getValidDate(value) || this.dateTimeAdapter.now();\n\n if (\n !this.hasSameYear(oldMoment, this._pickerMoment) &&\n this.initiated\n ) {\n this.generateMonthList();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n * */\n private _dateFilter: (date: T) => boolean;\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;\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;\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 this.dateTimeAdapter.getMonth(this._pickerMoment);\n }\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom' ||\n this.selectMode === 'rangeTo'\n );\n }\n\n private localeSub: Subscription = Subscription.EMPTY;\n\n private initiated = false;\n\n public todayMonth: number | null;\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 readonly change = output<T>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n * */\n readonly monthSelected = output<T>();\n\n /** Emits when any date is activated. */\n readonly pickerMomentChange = output<T>();\n\n /** Emits when use keyboard enter to select a calendar cell */\n readonly keyboardEnter = output<void>();\n\n /** The body of calendar table */\n readonly calendarBodyElm = viewChild(OwlCalendarBodyComponent);\n\n get owlDTCalendarView(): boolean {\n return true;\n }\n\n constructor() {\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(\n this.dateTimeAdapter.getYear(this.pickerMoment),\n month,\n 1\n );\n\n this.monthSelected.emit(firstDateOfMonth);\n\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(\n firstDateOfMonth\n );\n const result = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.pickerMoment),\n month,\n Math.min(\n daysInMonth,\n this.dateTimeAdapter.getDate(this.pickerMoment)\n ),\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(\n this.pickerMoment,\n -1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 month\n case RIGHT_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n 1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 3 months\n case UP_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n -3\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 3 months\n case DOWN_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n 3\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to first month of current year\n case HOME:\n moment = this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n -this.dateTimeAdapter.getMonth(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to last month of current year\n case END:\n moment = this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n 11 - this.dateTimeAdapter.getMonth(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 year (or 10 year)\n case PAGE_UP:\n moment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n event.altKey ? -10 : -1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 year (or 10 year)\n case PAGE_DOWN:\n moment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n event.altKey ? 10 : 1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // Select current month\n case ENTER:\n this.selectMonth(\n this.dateTimeAdapter.getMonth(this.pickerMoment)\n );\n this.keyboardEnter.emit(undefined);\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(\n this.dateTimeAdapter.now()\n );\n\n this._months = [];\n for (let i = 0; i < MONTHS_PER_YEAR / MONTHS_PER_ROW; i++) {\n const row = [];\n\n for (let j = 0; j < MONTHS_PER_ROW; j++) {\n const month = j + i * MONTHS_PER_ROW + this.dateTimeAdapter.firstMonthOfTheYear;\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(\n this.dateTimeAdapter.getYear(this.pickerMoment),\n month,\n 1\n );\n const ariaLabel = this.dateTimeAdapter.format(\n startDateOfMonth,\n this.dateTimeFormats.monthYearA11yLabel\n );\n const cellClass = 'owl-dt-month-' + month;\n return new CalendarCell(\n month,\n this.monthNames[month-this.dateTimeAdapter.firstMonthOfTheYear],\n ariaLabel,\n this.isMonthEnabled(month),\n false,\n cellClass\n );\n }\n\n /**\n * Check if the given month is enable\n */\n private isMonthEnabled(month: number): boolean {\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.pickerMoment),\n month,\n 1\n );\n\n // If any date in the month is selectable,\n // we count the month as enable\n for (\n let date = firstDateOfMonth;\n this.dateTimeAdapter.getMonth(date) === month;\n date = this.dateTimeAdapter.addCalendarDays(date, 1)\n ) {\n if (\n !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate ||\n this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate ||\n 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 {\n if (this.getValidDate(date) && this.getValidDate(this._pickerMoment)) {\n const result = this.dateTimeAdapter.compareYear(\n date,\n this._pickerMoment\n );\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(date);\n }\n } else {\n return null;\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] = this.getMonthInCurrentYear(this.selected);\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this.selectedMonths[0] = this.getMonthInCurrentYear(\n this.selecteds[0]\n );\n this.selectedMonths[1] = this.getMonthInCurrentYear(\n this.selecteds[1]\n );\n }\n }\n\n /**\n * Check the given dates are in the same year\n */\n private hasSameYear(dateLeft: T, dateRight: T) {\n return !!(\n dateLeft &&\n dateRight &&\n this.dateTimeAdapter.getYear(dateLeft) ===\n this.dateTimeAdapter.getYear(dateRight)\n );\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n\n private focusActiveCell() {\n this.calendarBodyElm().focusActiveCell();\n }\n}\n","<table class=\"owl-dt-calendar-table owl-dt-calendar-year-table\">\n <thead class=\"owl-dt-calendar-header\">\n <tr>\n <th class=\"owl-dt-calendar-table-divider\" aria-hidden=\"true\" colspan=\"3\"></th>\n </tr>\n </thead>\n <tbody owl-date-time-calendar-body role=\"grid\"\n [rows]=\"months\" [numCols]=\"3\" [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 { InjectionToken, Provider } from '@angular/core';\r\n\r\nexport function defaultOptionsFactory() {\r\n return DefaultOptions.create();\r\n\r\n}\r\nexport function multiYearOptionsFactory(options: Options) {\r\n return options.multiYear;\r\n }\r\n\r\nexport interface Options {\r\n multiYear: {\r\n yearsPerRow: number,\r\n yearRows: number\r\n };\r\n}\r\nexport class DefaultOptions {\r\n public static create(): Options {\r\n // Always return new instance\r\n return {\r\n multiYear: {\r\n yearRows: 7,\r\n yearsPerRow: 3\r\n }\r\n };\r\n }\r\n}\r\n\r\nexport abstract class OptionsTokens {\r\n public static all = new InjectionToken<Options>('All options token');\r\n public static multiYear = new InjectionToken<Options['multiYear']>('Grid view options token');\r\n}\r\n\r\nexport const optionsProviders: Provider[] = [\r\n {\r\n provide: OptionsTokens.all,\r\n useFactory: defaultOptionsFactory,\r\n },\r\n {\r\n provide: OptionsTokens.multiYear,\r\n useFactory: multiYearOptionsFactory,\r\n deps: [OptionsTokens.all],\r\n },\r\n];\r\n","/**\n * calendar-multi-year-view.component\n */\n\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, inject, output, viewChild } from '@angular/core';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { CalendarCell, OwlCalendarBodyComponent } from './calendar-body.component';\nimport { SelectMode } from './date-time.class';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OptionsTokens, Options } from './options-provider';\n\n@Component({\n selector: 'owl-date-time-multi-year-view',\n templateUrl: './calendar-multi-year-view.component.html',\n styleUrls: ['./calendar-multi-year-view.component.scss'],\n host: {\n '[class.owl-dt-calendar-view]': 'owlDTCalendarView',\n '[class.owl-dt-calendar-multi-year-view]': 'owlDTCalendarMultiYearView'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [OwlCalendarBodyComponent],\n})\n\nexport class OwlMultiYearViewComponent<T> implements OnInit, AfterContentInit {\n private cdRef = inject(ChangeDetectorRef);\n private pickerIntl = inject(OwlDateTimeIntl);\n private dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true })!;\n private options = inject(OptionsTokens.multiYear);\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.setSelectedYears();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | 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(oldSelected, 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 = values.map(( v ) => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n this.setSelectedYears();\n }\n\n private _pickerMoment: T | null;\n @Input()\n get pickerMoment() {\n return this._pickerMoment;\n }\n\n set pickerMoment( value: T ) {\n const oldMoment = this._pickerMoment;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n if (oldMoment && this._pickerMoment &&\n !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;\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;\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;\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 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'\n || this.selectMode === 'rangeTo';\n }\n\n get activeCell(): number {\n if (this._pickerMoment) {\n return this.dateTimeAdapter.getYear(this._pickerMoment) % (this.options.yearsPerRow * this.options.yearRows);\n }\n }\n\n get tableHeader(): string {\n if (this._years && this._years.length > 0) {\n return `${this._years[0][0].displayValue} - ${this._years[this.options.yearRows - 1][this.options.yearsPerRow - 1].displayValue}`;\n }\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 readonly change = output<T>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n * */\n readonly yearSelected = output<T>();\n\n /** Emits when any date is activated. */\n readonly pickerMomentChange = output<T>();\n\n /** Emits when use keyboard enter to select a calendar cell */\n readonly keyboardEnter = output<void>();\n\n /** The body of calendar table */\n readonly calendarBodyElm = viewChild(OwlCalendarBodyComponent);\n\n get owlDTCalendarView(): boolean {\n return true;\n }\n\n get owlDTCalendarMultiYearView(): boolean {\n return true;\n }\n\n public ngOnInit() {\n }\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, this.dateTimeAdapter.firstMonthOfTheYear, 1));\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\n year,\n this.dateTimeAdapter.getMonth(this.pickerMoment),\n 1\n );\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 * this.options.yearsPerRow * this.options.yearRows);\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, this.options.yearsPerRow * this.options.yearRows);\n this.generateYearList();\n event.preventDefault();\n }\n\n public generateYearList(): void {\n this._years = [];\n\n const pickerMomentYear = this.dateTimeAdapter.getYear(this._pickerMoment);\n const offset = pickerMomentYear % (this.options.yearsPerRow * this.options.yearRows);\n\n for (let i = 0; i < this.options.yearRows; i++) {\n const row = [];\n\n for (let j = 0; j < this.options.yearsPerRow; j++) {\n const year = pickerMomentYear - offset + (j + i * this.options.yearsPerRow);\n const yearCell = this.createYearCell(year);\n row.push(yearCell);\n }\n\n this._years.push(row);\n }\n\n return;\n\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(this._pickerMoment, this.minDate);\n }\n\n /** Whether the next period button is enabled. */\n public nextEnabled(): boolean {\n return !this.maxDate || !this.isSameYearList(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(this._pickerMoment, -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 year\n case RIGHT_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 3 years\n case UP_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -1 * this.options.yearsPerRow);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 3 years\n case DOWN_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, this.options.yearsPerRow);\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(this._pickerMoment,\n -this.dateTimeAdapter.getYear(this._pickerMoment) % (this.options.yearsPerRow * this.options.yearRows));\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(this._pickerMoment,\n (this.options.yearsPerRow * this.options.yearRows) - this.dateTimeAdapter.getYear(this._pickerMoment) % (this.options.yearsPerRow * this.options.yearRows) - 1);\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(this.pickerMoment, event.altKey ? -10 * (this.options.yearsPerRow * this.options.yearRows) : -1 * (this.options.yearsPerRow * this.options.yearRows));\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(this.pickerMoment, event.altKey ? 10 * (this.options.yearsPerRow * this.options.yearRows) : (this.options.yearsPerRow * this.options.yearRows));\n this.pickerMomentChange.emit(moment);\n break;\n\n case ENTER:\n this.selectYear(this.dateTimeAdapter.getYear(this._pickerMoment));\n this.keyboardEnter.emit(undefined);\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, this.dateTimeAdapter.firstMonthOfTheYear, 1);\n const ariaLabel = this.dateTimeAdapter.getYearName(startDateOfYear);\n const cellClass = 'owl-dt-year-' + year;\n return new CalendarCell(year, year.toString(), ariaLabel, this.isYearEnabled(year), false, cellClass);\n }\n\n private setSelectedYears(): void {\n\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 = 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 (year === undefined || year === null ||\n (this.maxDate && year > this.dateTimeAdapter.getYear(this.maxDate)) ||\n (this.minDate && year < this.dateTimeAdapter.getYear(this.minDate))) {\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, this.dateTimeAdapter.firstMonthOfTheYear, 1);\n\n // If any date in the year is enabled count the year as enabled.\n for (let date = firstOfYear; this.dateTimeAdapter.getYear(date) === year;\n date = this.dateTimeAdapter.addCalendarDays(date, 1)) {\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 Math.floor(this.dateTimeAdapter.getYear(date1) / (this.options.yearsPerRow * this.options.yearRows)) ===\n Math.floor(this.dateTimeAdapter.getYear(date2) / (this.options.yearsPerRow * this.options.yearRows));\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 class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n [disabled]=\"!previousEnabled()\" [attr.aria-label]=\"prevButtonLabel\"\n type=\"button\" tabindex=\"0\" (click)=\"prevYearList($event)\">\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 250.738 250.738\"\n style=\"enable-background:new 0 0 250.738 250.738;\" xml:space=\"preserve\"\n width=\"100%\" height=\"100%\">\n <path style=\"fill-rule: evenodd; clip-rule: evenodd;\" 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 </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n<table class=\"owl-dt-calendar-table owl-dt-calendar-multi-year-table\">\n <thead class=\"owl-dt-calendar-header\">\n <tr>\n <th colspan=\"3\">{{tableHeader}}</th>\n </tr>\n </thead>\n <tbody owl-date-time-calendar-body role=\"grid\"\n [rows]=\"years\" [numCols]=\"3\" [cellRatio]=\"3 / 7\"\n [activeCell]=\"activeCell\"\n [todayValue]=\"todayYear\"\n [selectedValues]=\"selectedYears\"\n [selectMode]=\"selectMode\"\n (keydown)=\"handleCalendarKeydown($event)\"\n (select)=\"selectCalendarCell($event)\"></tbody>\n</table>\n<button class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n [disabled]=\"!nextEnabled()\" [attr.aria-label]=\"nextButtonLabel\"\n type=\"button\" tabindex=\"0\" (click)=\"nextYearList($event)\">\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\n <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 250.738 250.738\" style=\"enable-background:new 0 0 250.738 250.738;\" xml:space=\"preserve\">\n <path style=\"fill-rule:evenodd;clip-rule:evenodd;\" 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 </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n","/**\n * calendar.component\n */\n\nimport { AfterContentInit, AfterViewChecked, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnDestroy, OnInit, afterNextRender, inject, input, output, Injector } from '@angular/core';\nimport {OwlDateTimeIntl} from './date-time-picker-intl.service';\nimport {DateTimeAdapter} from './adapter/date-time-adapter.class';\nimport {OWL_DATE_TIME_FORMATS, OwlDateTimeFormats} from './adapter/date-time-format.class';\nimport {DateView, DateViewType, SelectMode} from './date-time.class';\nimport {Subscription} from 'rxjs';\nimport { CdkMonitorFocus } from '@angular/cdk/a11y';\nimport { OwlMonthViewComponent } from './calendar-month-view.component';\nimport { OwlYearViewComponent } from './calendar-year-view.component';\nimport { OwlMultiYearViewComponent } from './calendar-multi-year-view.component';\n\n@Component({\n selector: 'owl-date-time-calendar',\n exportAs: 'owlDateTimeCalendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n host: {\n '[class.owl-dt-calendar]': 'owlDTCalendarClass'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CdkMonitorFocus, OwlMonthViewComponent, OwlYearViewComponent, OwlMultiYearViewComponent]\n})\nexport class OwlCalendarComponent<T>\n implements OnInit, AfterContentInit, AfterViewChecked, OnDestroy {\n private elmRef = inject(ElementRef);\n private pickerIntl = inject(OwlDateTimeIntl);\n private injector = inject(Injector);\n private cdRef = inject(ChangeDetectorRef);\n private dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true })!;\n private dateTimeFormats = inject<OwlDateTimeFormats>(OWL_DATE_TIME_FORMATS, { optional: true })!;\n\n\n DateView = DateView;\n\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 @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 @Input()\n get pickerMoment() {\n return this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment =\n this.getValidDate(value) || this.dateTimeAdapter.now();\n }\n\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 @Input()\n get selecteds(): T[] {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = values.map(v => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n }\n\n get periodButtonText(): string {\n return this.isMonthView\n ? this.dateTimeAdapter.format(\n this.pickerMoment,\n this.dateTimeFormats.monthYearLabel\n )\n : this.dateTimeAdapter.getYearName(this.pickerMoment);\n }\n\n get periodButtonLabel(): string {\n return this.isMonthView\n ? this.pickerIntl.switchToMultiYearViewLabel\n : this.pickerIntl.switchToMonthViewLabel;\n }\n\n get prevButtonLabel(): string {\n if (this._currentView === DateView.MONTH) {\n return this.pickerIntl.prevMonthLabel;\n } else if (this._currentView === DateView.YEAR) {\n return this.pickerIntl.prevYearLabel;\n } else {\n return null;\n }\n }\n\n get nextButtonLabel(): string {\n if (this._currentView === DateView.MONTH) {\n return this.pickerIntl.nextMonthLabel;\n } else if (this._currentView === DateView.YEAR) {\n return this.pickerIntl.nextYearLabel;\n } else {\n return null;\n }\n }\n\n get currentView(): DateViewType {\n return this._currentView;\n }\n\n set currentView(view: DateViewType) {\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 const selectMode = this.selectMode();\n return (\n selectMode === 'range' ||\n selectMode === 'rangeFrom' ||\n selectMode === 'rangeTo'\n );\n }\n\n get showControlArrows(): boolean {\n return this._currentView !== DateView.MULTI_YEARS;\n }\n\n get isMonthView() {\n return this._currentView === DateView.MONTH;\n }\n\n /**\n * Bind class 'owl-dt-calendar' to host\n * */\n get owlDTCalendarClass(): boolean {\n return true;\n }\n\n constructor() {\n this.intlChangesSub = this.pickerIntl.changes.subscribe(() => {\n this.cdRef.markForCheck();\n });\n }\n\n /**\n * Date filter for the month and year view\n * */\n readonly dateFilter = input<(date: T) => boolean>(undefined);\n\n /**\n * Set the first day of week\n */\n readonly firstDayOfWeek = input<number>(undefined);\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n\n /** The current picker moment */\n private _pickerMoment: T;\n\n readonly selectMode = input<SelectMode>(undefined);\n\n /** The currently selected moment. */\n private _selected: T | null;\n\n private _selecteds: T[] = [];\n\n /**\n * The view that the calendar should start in.\n */\n readonly startView = input<DateViewType>(DateView.MONTH);\n\n /**\n * Whether to should only the year and multi-year views.\n */\n readonly yearOnly = input(false);\n\n /**\n * Whether to show calendar weeks in the calendar\n * */\n readonly showCalendarWeeks = input(false);\n\n /**\n * Whether to should only the multi-year view.\n */\n readonly multiyearOnly = input(false);\n\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n * */\n readonly hideOtherMonths = input<boolean>(undefined);\n\n /** Emits when the currently picker moment changes. */\n readonly pickerMomentChange = output<T>();\n\n /** Emits when the selected date changes. */\n readonly dateClicked = output<T>();\n\n /** Emits when the currently selected date changes. */\n readonly selectedChange = output<T>();\n\n /** Emits when any date is selected. */\n readonly userSelection = output<void>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n * */\n readonly yearSelected = output<T>();\n\n /**\n * Emits the selected month. This doesn't imply a change on the selected date\n * */\n readonly monthSelected = output<T>();\n\n private _currentView: DateViewType;\n\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 public dateFilterForViews = (date: T) => {\n const dateFilter = this.dateFilter();\n return (\n !!date &&\n (!dateFilter || dateFilter(date)) &&\n (!this.minDate ||\n this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate ||\n this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n );\n };\n\n public ngOnInit() {\n }\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 let nextView = null;\n if (this._currentView === DateView.MONTH) {\n nextView = DateView.MULTI_YEARS;\n } else {\n if (this.multiyearOnly()) {\n nextView = DateView.MULTI_YEARS;\n } else if (this.yearOnly()) {\n nextView = this._currentView === DateView.YEAR ? DateView.MULTI_YEARS : DateView.YEAR;\n } else {\n nextView = DateView.MONTH;\n }\n }\n this.currentView = nextView;\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): void {\n if (!this.dateFilterForViews(date)) {\n return;\n }\n\n this.dateClicked.emit(date);\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(\n date: T,\n view: DateViewType\n ): void {\n this.handlePickerMomentChange(date);\n const multiyearOnly = this.multiyearOnly();\n const yearOnly = this.yearOnly();\n if ((!yearOnly && !multiyearOnly) ||\n (multiyearOnly && (view !== DateView.MONTH && view !== DateView.YEAR)) ||\n (yearOnly && view !== DateView.MONTH)) {\n this.currentView = view;\n } else {\n this.dateSelected(date);\n }\n return;\n }\n\n /**\n * Change the pickerMoment value\n */\n public handlePickerMomentChange(date: T): void {\n this.pickerMoment = this.dateTimeAdapter.clampDate(\n date,\n this.minDate,\n this.maxDate\n );\n this.pickerMomentChange.emit(this.pickerMoment);\n return;\n }\n\n public userSelected(): void {\n // TODO: The 'emit' function requires a mandatory void argument\n this.userSelection.emit();\n }\n\n /**\n * Whether the previous period button is enabled.\n */\n public prevButtonEnabled(): boolean {\n return (\n !this.minDate || !this.isSameView(this.pickerMoment, this.minDate)\n );\n }\n\n /**\n * Whether the next period button is enabled.\n */\n public nextButtonEnabled(): boolean {\n return (\n !this.maxDate || !this.isSameView(this.pickerMoment, this.maxDate)\n );\n }\n\n /**\n * Focus to the host element\n * */\n public focusActiveCell() {\n afterNextRender(() => {\n const activeCell = this.elmRef.nativeElement\n .querySelector('.owl-dt-calendar-cell-active');\n if (activeCell) {\n activeCell.focus();\n }\n }, { injector: this.injector });\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 === DateView.MONTH) {\n return !!(\n date1 &&\n date2 &&\n this.dateTimeAdapter.getYear(date1) ===\n this.dateTimeAdapter.getYear(date2) &&\n this.dateTimeAdapter.getMonth(date1) ===\n this.dateTimeAdapter.getMonth(date2)\n );\n } else if (this._currentView === DateView.YEAR) {\n return !!(\n date1 &&\n date2 &&\n this.dateTimeAdapter.getYear(date1) ===\n this.dateTimeAdapter.getYear(date2)\n );\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) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n}\n","<div class=\"owl-dt-calendar-control\">\n <!-- focus when keyboard tab (http://kizu.ru/en/blog/keyboard-only-focus/#x) -->\n <button\n class=\"owl-dt-control owl-dt-control-button owl-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\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\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 <!-- </editor-fold> -->\n </span>\n </button>\n <div class=\"owl-dt-calendar-control-content\">\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-control-period-button\"\n type=\"button\"\n tabindex=\"0\"\n [attr.aria-label]=\"periodButtonLabel\"\n (click)=\"toggleViews()\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n {{ periodButtonText }}\n\n <span\n class=\"owl-dt-control-button-arrow\"\n [style.transform]=\"\n 'rotate(' + (isMonthView ? 0 : 180) + 'deg)'\n \"\n >\n <!-- <editor-fold desc=\"SVG Arrow\"> -->\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 <!-- </editor-fold> -->\n </span>\n </span>\n </button>\n </div>\n <button\n class=\"owl-dt-control owl-dt-control-button owl-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\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\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 <!-- </editor-fold> -->\n </span>\n </button>\n</div>\n<div class=\"owl-dt-calendar-main\" cdkMonitorSubtreeFocus tabindex=\"-1\">\n @switch (currentView) {\n @case (DateView.MONTH) {\n <owl-date-time-month-view\n [pickerMoment]=\"pickerMoment\"\n [firstDayOfWeek]=\"firstDayOfWeek()\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n [selectMode]=\"selectMode()\"\n [minDate]=\"minDate\"\n [showCalendarWeeks]=\"showCalendarWeeks()\"\n [maxDate]=\"maxDate\"\n [dateFilter]=\"dateFilter()\"\n [hideOtherMonths]=\"hideOtherMonths()\"\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n (selectedChange)=\"dateSelected($event)\"\n (userSelection)=\"userSelected()\"\n ></owl-date-time-month-view>\n }\n @case (DateView.YEAR) {\n <owl-date-time-year-view\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, DateView.MONTH)\"\n ></owl-date-time-year-view>\n }\n @case (DateView.MULTI_YEARS) {\n <owl-date-time-multi-year-view\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, DateView.YEAR)\"\n ></owl-date-time-multi-year-view>\n }\n }\n</div>\n","/**\n * timer-box.component\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n OnInit,\n input,\n output,\n viewChild\n} from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n exportAs: 'owlDateTimeTimerBox',\n selector: 'owl-date-time-timer-box',\n templateUrl: './timer-box.component.html',\n styleUrls: ['./timer-box.component.scss'],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.owl-dt-timer-box]': 'owlDTTimerBoxClass'\n }\n})\n\nexport class OwlTimerBoxComponent implements OnInit, OnDestroy {\n\n readonly showDivider = input(false);\n\n readonly upBtnAriaLabel = input<string>(undefined);\n\n readonly upBtnDisabled = input<boolean>(undefined);\n\n readonly downBtnAriaLabel = input<string>(undefined);\n\n readonly downBtnDisabled = input<boolean>(undefined);\n\n /**\n * Value would be displayed in the box\n * If it is null, the box would display [value]\n * */\n readonly boxValue = input<number>(undefined);\n\n readonly value = input<number>(undefined);\n\n readonly min = input<number>(undefined);\n\n readonly max = input<number>(undefined);\n\n readonly step = input(1);\n\n readonly inputLabel = input<string>(undefined);\n\n readonly valueChange = output<number>();\n\n readonly inputChange = output<number>();\n\n private inputStream = new Subject<string>();\n\n private inputStreamSub = Subscription.EMPTY;\n\n private hasFocus = false;\n\n get displayValue(): string {\n if (this.hasFocus) {\n // Don't try to reformat the value that user is currently editing\n return this.valueInput().nativeElement.value;\n }\n\n const value = this.boxValue() || this.value();\n\n if (value === null || isNaN(value)) {\n return '';\n }\n\n return value < 10 ? '0' + value.toString() : value.toString();\n }\n\n get owlDTTimerBoxClass(): boolean {\n return true;\n }\n\n private readonly valueInput = viewChild<ElementRef<HTMLInputElement>>('valueInput');\n private onValueInputMouseWheelBind = this.onValueInputMouseWheel.bind(this);\n\n constructor() {\n }\n\n public ngOnInit() {\n this.inputStreamSub = this.inputStream.pipe(debounceTime(750)).subscribe(( val: string ) => {\n if (val) {\n const inputValue = coerceNumberProperty(val, 0);\n this.updateValueViaInput(inputValue);\n }\n });\n this.bindValueInputMouseWheel();\n }\n\n public ngOnDestroy(): void {\n this.unbindValueInputMouseWheel();\n this.inputStreamSub.unsubscribe();\n }\n\n public upBtnClicked(): void {\n this.updateValue(this.value() + this.step());\n }\n\n public downBtnClicked(): void {\n this.updateValue(this.value() - this.step());\n }\n\n public handleInputChange(val: string ): void {\n this.inputStream.next(val);\n }\n\n public focusIn(): void {\n this.hasFocus = true;\n }\n\n public focusOut(value: string): void {\n this.hasFocus = false;\n if (value) {\n const inputValue = coerceNumberProperty(value, 0);\n this.updateValueViaInput(inputValue);\n }\n }\n\n private updateValue( value: number ): void {\n this.valueChange.emit(value);\n }\n\n private updateValueViaInput( value: number ): void {\n if (value > this.max() || value < this.min()) {\n return;\n }\n this.inputChange.emit(value);\n }\n\n private onValueInputMouseWheel( event: any ): void {\n event = event || window.event;\n const delta = event.wheelDelta || -event.deltaY || -event.detail;\n\n if (delta > 0) {\n if (!this.upBtnDisabled()) {\n this.upBtnClicked();\n }\n } else if (delta < 0) {\n if (!this.downBtnDisabled()) {\n this.downBtnClicked();\n }\n }\n\n event.preventDefault ? event.preventDefault() : (event.returnValue = false);\n }\n\n private bindValueInputMouseWheel(): void {\n this.valueInput().nativeElement.addEventListener(\n 'onwheel' in document ? 'wheel' : 'mousewheel',\n this.onValueInputMouseWheelBind);\n }\n\n private unbindValueInputMouseWheel(): void {\n this.valueInput().nativeElement.removeEventListener(\n 'onwheel' in document ? 'wheel' : 'mousewheel',\n this.onValueInputMouseWheelBind);\n }\n}\n","@if (showDivider()) {\n <div class=\"owl-dt-timer-divider\" aria-hidden=\"true\"></div>\n}\n<button\n class=\"owl-dt-control-button owl-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=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Up\"> -->\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 <!-- </editor-fold> -->\n </span>\n</button>\n<label class=\"owl-dt-timer-content\">\n <input\n class=\"owl-dt-timer-input\"\n maxlength=\"2\"\n inputmode=\"numeric\"\n [value]=\"displayValue\"\n (keydown.arrowup)=\"!upBtnDisabled() && upBtnClicked()\"\n (keydown.arrowdown)=\"!downBtnDisabled() && downBtnClicked()\"\n (input)=\"handleInputChange(valueInput.value)\"\n (focusin)=\"focusIn()\"\n (focusout)=\"focusOut(valueInput.value)\"\n #valueInput\n />\n <span class=\"owl-hidden-accessible\">{{ inputLabel() }}</span>\n</label>\n<button\n class=\"owl-dt-control-button owl-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=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Down\"> -->\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 <!-- </editor-fold> -->\n </span>\n</button>\n","/**\n * timer.component\n */\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnInit, afterNextRender, inject, input, output, Injector } from '@angular/core';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OwlTimerBoxComponent } from './timer-box.component';\n\n@Component({\n exportAs: 'owlDateTimeTimer',\n selector: 'owl-date-time-timer',\n templateUrl: './timer.component.html',\n styleUrls: ['./timer.component.scss'],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.owl-dt-timer]': 'owlDTTimerClass',\n '[attr.tabindex]': 'owlDTTimeTabIndex'\n },\n imports: [OwlTimerBoxComponent]\n})\nexport class OwlTimerComponent<T> implements OnInit {\n private injector = inject(Injector);\n private elmRef = inject(ElementRef);\n private pickerIntl = inject(OwlDateTimeIntl);\n private cdRef = inject(ChangeDetectorRef);\n private dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true })!;\n\n /** The current picker moment */\n private _pickerMoment: T;\n @Input()\n get pickerMoment() {\n return this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment =\n this.getValidDate(value) || this.dateTimeAdapter.now();\n }\n\n /** The minimum selectable date time. */\n private _minDateTime: T | 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;\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 readonly showSecondsTimer = input<boolean>(undefined);\n\n /**\n * Whether the timer is in hour12 format\n */\n readonly hour12Timer = input<boolean>(undefined);\n\n /**\n * Hours to change per step\n */\n readonly stepHour = input(1);\n\n /**\n * Minutes to change per step\n */\n readonly stepMinute = input(1);\n\n /**\n * Seconds to change per step\n */\n readonly stepSecond = input(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\n ? this.pickerIntl.hour12PMLabel\n : this.pickerIntl.hour12AMLabel;\n }\n\n readonly selectedChange = output<T>();\n\n get owlDTTimerClass(): boolean {\n return true;\n }\n\n get owlDTTimeTabIndex(): number {\n return -1;\n }\n\n public ngOnInit() {}\n\n /**\n * Focus to the host element\n * */\n public focus() {\n afterNextRender(() => {\n this.elmRef.nativeElement.focus();\n }, { injector: this.injector });\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 const hour12Timer = this.hour12Timer();\n if (hour12Timer && this.isPM && hours >= 1 && hours <= 11) {\n hours = hours + 12;\n } else if (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.cdRef.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.cdRef.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.cdRef.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.cdRef.markForCheck();\n event.preventDefault();\n }\n\n /**\n * Check if the up hour button is enabled\n */\n public upHourEnabled(): boolean {\n return (\n !this.maxDateTime ||\n this.compareHours(this.stepHour(), this.maxDateTime) < 1\n );\n }\n\n /**\n * Check if the down hour button is enabled\n */\n public downHourEnabled(): boolean {\n return (\n !this.minDateTime ||\n this.compareHours(-this.stepHour(), this.minDateTime) > -1\n );\n }\n\n /**\n * Check if the up minute button is enabled\n */\n public upMinuteEnabled(): boolean {\n return (\n !this.maxDateTime ||\n this.compareMinutes(this.stepMinute(), this.maxDateTime) < 1\n );\n }\n\n /**\n * Check if the down minute button is enabled\n */\n public downMinuteEnabled(): boolean {\n return (\n !this.minDateTime ||\n this.compareMinutes(-this.stepMinute(), this.minDateTime) > -1\n );\n }\n\n /**\n * Check if the up second button is enabled\n */\n public upSecondEnabled(): boolean {\n return (\n !this.maxDateTime ||\n this.compareSeconds(this.stepSecond(), this.maxDateTime) < 1\n );\n }\n\n /**\n * Check if the down second button is enabled\n */\n public downSecondEnabled(): boolean {\n return (\n !this.minDateTime ||\n this.compareSeconds(-this.stepSecond(), this.minDateTime) > -1\n );\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 =\n this.dateTimeAdapter.getMinutes(this.pickerMoment) + amount;\n const result = this.dateTimeAdapter.setMinutes(\n this.pickerMoment,\n minutes\n );\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 =\n this.dateTimeAdapter.getSeconds(this.pickerMoment) + amount;\n const result = this.dateTimeAdapter.setSeconds(\n this.pickerMoment,\n seconds\n );\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) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n}\n","<owl-date-time-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></owl-date-time-timer-box>\n<owl-date-time-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></owl-date-time-timer-box>\n@if (showSecondsTimer()) {\n <owl-date-time-timer-box\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 ></owl-date-time-timer-box>\n}\n@if (hour12Timer()) {\n <div class=\"owl-dt-timer-hour12\">\n <button\n class=\"owl-dt-control-button owl-dt-timer-hour12-box\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"setMeridiem($event)\"\n >\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n {{ hour12ButtonLabel }}\n </span>\n </button>\n </div>\n}\n","/**\n * date-time-picker-container.component\n */\n\nimport { AfterContentInit, AfterViewInit, AnimationCallbackEvent, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, OnDestroy, OnInit, inject, viewChild } from '@angular/core';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { IDateTimePickerAnimationEvent } from './date-time-picker-animation-event';\nimport { OwlTimerComponent } from './timer.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OwlDateTime, PickerType } from './date-time.class';\nimport { Observable, Subject } from 'rxjs';\nimport {\n DOWN_ARROW,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW,\n} from '@angular/cdk/keycodes';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { NgClass } from '@angular/common';\n\n@Component({\n exportAs: 'owlDateTimeContainer',\n selector: 'owl-date-time-container',\n templateUrl: './date-time-picker-container.component.html',\n styleUrls: ['./date-time-picker-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n host: {\n '(animate.enter)': 'onAnimateEnter($event)',\n '(animate.leave)': 'onAnimateLeave($event)',\n '[class.owl-dt-container]': 'owlDTContainerClass',\n '[class.owl-dt-popup-container]': 'owlDTPopupContainerClass',\n '[class.owl-dt-dialog-container]': 'owlDTDialogContainerClass',\n '[class.owl-dt-inline-container]': 'owlDTInlineContainerClass',\n '[class.owl-dt-container-disabled]': 'owlDTContainerDisabledClass',\n '[attr.id]': 'owlDTContainerId',\n },\n imports: [\n CdkTrapFocus,\n OwlCalendarComponent,\n OwlTimerComponent,\n NgClass,\n ],\n})\nexport class OwlDateTimeContainerComponent<T>\n implements OnInit, AfterContentInit, AfterViewInit, OnDestroy\n{\n private cdRef = inject(ChangeDetectorRef);\n private elmRef = inject(ElementRef);\n private pickerIntl = inject(OwlDateTimeIntl);\n private dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true })!;\n\n readonly calendar = viewChild(OwlCalendarComponent);\n readonly timer = viewChild(OwlTimerComponent);\n\n public picker: OwlDateTime<T>;\n public activeSelectedIndex = 0; // The current active SelectedIndex in range select mode (0: 'from', 1: 'to')\n\n /** Emits when an animation state changes. */\n public animationStateChanged = new EventEmitter<IDateTimePickerAnimationEvent>();\n\n // retain start and end time\n private retainStartTime: T;\n private retainEndTime: T;\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 beforePickerOpened$ = new Subject<any>();\n\n get beforePickerOpenedStream(): Observable<any> {\n return this.beforePickerOpened$.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;\n\n get pickerMoment() {\n return this._clamPickerMoment;\n }\n\n set pickerMoment(value: T) {\n if (value) {\n this._clamPickerMoment = this.dateTimeAdapter.clampDate(\n value,\n this.picker.minDateTime,\n this.picker.maxDateTime,\n );\n }\n this.cdRef.markForCheck();\n }\n\n get pickerType(): PickerType {\n return 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[0];\n return value\n ? this.dateTimeAdapter.format(value, this.picker.formatString)\n : '';\n }\n\n /**\n * The range 'to' formatted value\n * */\n get toFormattedValue(): string {\n const value = this.picker.selecteds[1];\n return value\n ? this.dateTimeAdapter.format(value, this.picker.formatString)\n : '';\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 (\n this.picker.pickerMode === 'dialog' ||\n (this.picker.pickerType !== 'calendar' &&\n this.picker.pickerMode !== 'inline')\n );\n }\n\n get containerElm(): HTMLElement {\n return this.elmRef.nativeElement;\n }\n\n get owlDTContainerClass(): boolean {\n return true;\n }\n\n get owlDTPopupContainerClass(): boolean {\n return this.picker.pickerMode === 'popup';\n }\n\n get owlDTDialogContainerClass(): boolean {\n return this.picker.pickerMode === 'dialog';\n }\n\n get owlDTInlineContainerClass(): boolean {\n return this.picker.pickerMode === 'inline';\n }\n\n get owlDTContainerDisabledClass(): boolean {\n return this.picker.disabled;\n }\n\n get owlDTContainerId(): string {\n return this.picker.id;\n }\n\n get owlDTContainerAnimation(): any {\n return this.picker.pickerMode === 'inline' ? '' : 'enter';\n }\n\n public ngOnInit() {\n if (this.picker.selectMode === 'range') {\n if (this.picker.selecteds[0]) {\n this.retainStartTime = this.dateTimeAdapter.clone(\n this.picker.selecteds[0],\n );\n }\n if (this.picker.selecteds[1]) {\n this.retainEndTime = this.dateTimeAdapter.clone(\n this.picker.selecteds[1],\n );\n }\n }\n }\n\n public ngOnDestroy(): void {\n // The enter animation completes via an async promise. If this container is\n // destroyed before it settles (e.g. opened then torn down), that late\n // callback would push into these streams and re-emit lifecycle events on\n // the already-destroyed picker. Completing them makes such a late `next()`\n // a no-op. `animationStateChanged` is intentionally left open so the leave\n // animation can still drive the dialog teardown.\n this.beforePickerOpened$.complete();\n this.pickerOpened$.complete();\n this.hidePicker$.complete();\n this.confirmSelected$.complete();\n }\n\n public ngAfterContentInit(): void {\n this.initPicker();\n }\n\n public ngAfterViewInit(): void {\n this.focusPicker();\n }\n\n public handleContainerAnimationStart(animationName: 'enter' | 'leave'): void {\n if (animationName === 'enter') {\n this.beforePickerOpened$.next(null);\n }\n this.animationStateChanged.emit({\n phaseName: 'start',\n toState: animationName\n });\n }\n\n public handleContainerAnimationDone(animationName: 'enter' | 'leave'): void {\n if (animationName === 'enter') {\n this.pickerOpened$.next(null);\n }\n this.animationStateChanged.emit({\n phaseName: 'done',\n toState: animationName\n });\n }\n\n public dateSelected(date: T): void {\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): void {\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 = [...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 &&\n selecteds[1] &&\n this.dateTimeAdapter.compare(\n this.pickerMoment,\n selecteds[1],\n ) === 1) ||\n (this.activeSelectedIndex === 1 &&\n selecteds[0] &&\n this.dateTimeAdapter.compare(\n this.pickerMoment,\n selecteds[0],\n ) === -1)\n ) {\n selecteds[0] = this.pickerMoment;\n selecteds[1] = this.pickerMoment;\n } else {\n selecteds[this.activeSelectedIndex] = this.pickerMoment;\n }\n\n if (selecteds[0]) {\n this.retainStartTime = this.dateTimeAdapter.clone(selecteds[0]);\n }\n if (selecteds[1]) {\n this.retainEndTime = this.dateTimeAdapter.clone(selecteds[1]);\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(\n event: any,\n next: any,\n index: number,\n ): 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 protected onAnimateEnter(event: AnimationCallbackEvent): void {\n this.handleContainerAnimationStart('enter');\n const duration = this.parseCssVariableDuration(event.target, '--container-enter-animation-duration');\n if (duration === 0) {\n this.handleContainerAnimationDone('enter');\n event.animationComplete();\n } else {\n const animation = event.target.animate([\n { opacity: 0, transform: 'scaleY(0)' },\n { opacity: 1, transform: 'scaleY(1)' }\n ], {\n duration: duration ?? 400,\n easing: 'cubic-bezier(0.25, 0.8, 0.25, 1)',\n fill: 'forwards'\n });\n animation.finished.then(() => {\n this.handleContainerAnimationDone('enter');\n event.animationComplete();\n });\n }\n }\n\n protected onAnimateLeave(event: AnimationCallbackEvent): void {\n this.handleContainerAnimationStart('leave');\n const duration = this.parseCssVariableDuration(event.target, '--container-leave-animation-duration');\n if (duration === 0) {\n this.handleContainerAnimationDone('leave');\n event.animationComplete();\n } else {\n event.target.animate([\n { opacity: 1 },\n { opacity: 0 }\n ], {\n duration: duration ?? 100,\n easing: 'linear',\n fill: 'forwards'\n }).finished.then(() => {\n this.handleContainerAnimationDone('leave');\n event.animationComplete();\n });\n }\n }\n\n /**\n * Set the value of activeSelectedIndex\n */\n private setActiveSelectedIndex(index: number): void {\n if (\n this.picker.selectMode === 'range' &&\n this.activeSelectedIndex !== index\n ) {\n this.activeSelectedIndex = index;\n\n const selected = this.picker.selecteds[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.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, 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 = this.picker.selecteds[0];\n let to = this.picker.selecteds[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 if (this.picker.endAt && !this.retainEndTime) {\n to = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(result),\n this.dateTimeAdapter.getMonth(result),\n this.dateTimeAdapter.getDate(result),\n this.dateTimeAdapter.getHours(this.picker.endAt),\n this.dateTimeAdapter.getMinutes(this.picker.endAt),\n this.dateTimeAdapter.getSeconds(this.picker.endAt),\n );\n } else if (this.retainEndTime) {\n to = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(result),\n this.dateTimeAdapter.getMonth(result),\n this.dateTimeAdapter.getDate(result),\n this.dateTimeAdapter.getHours(this.retainEndTime),\n this.dateTimeAdapter.getMinutes(this.retainEndTime),\n this.dateTimeAdapter.getSeconds(this.retainEndTime),\n );\n } else {\n to = result;\n }\n this.activeSelectedIndex = 1;\n } else {\n if (this.picker.startAt && !this.retainStartTime) {\n from = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(result),\n this.dateTimeAdapter.getMonth(result),\n this.dateTimeAdapter.getDate(result),\n this.dateTimeAdapter.getHours(this.picker.startAt),\n this.dateTimeAdapter.getMinutes(this.picker.startAt),\n this.dateTimeAdapter.getSeconds(this.picker.startAt),\n );\n } else if (this.retainStartTime) {\n from = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(result),\n this.dateTimeAdapter.getMonth(result),\n this.dateTimeAdapter.getDate(result),\n this.dateTimeAdapter.getHours(this.retainStartTime),\n this.dateTimeAdapter.getMinutes(this.retainStartTime),\n this.dateTimeAdapter.getSeconds(this.retainStartTime),\n );\n } else {\n from = result;\n }\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 [from, 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 {\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(\n result,\n this.picker.minDateTime,\n this.picker.maxDateTime,\n );\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 const calendar = this.calendar();\n const timer = this.timer();\n if (calendar) {\n calendar.focusActiveCell();\n } else if (timer) {\n timer.focus();\n }\n }\n\n private parseCssVariableDuration(el: Element, cssVariableName: string) {\n const durationStr = getComputedStyle(el).getPropertyValue(cssVariableName).trim();\n\n // Convert to ms\n let duration: number | undefined = undefined;\n if (durationStr.endsWith('ms')) {\n duration = parseFloat(durationStr);\n } else if (durationStr.endsWith('s')) {\n duration = parseFloat(durationStr) * 1000;\n } else if (durationStr) {\n duration = parseFloat(durationStr);\n if (isNaN(duration)) {\n duration = undefined;\n }\n }\n return duration;\n }\n}\n","<div\n [cdkTrapFocus]=\"picker.pickerMode !== 'inline'\"\n class=\"owl-dt-container-inner\"\n>\n @if (pickerType === 'both' || pickerType === 'calendar') {\n <owl-date-time-calendar\n class=\"owl-dt-container-row\"\n [firstDayOfWeek]=\"picker.firstDayOfWeek\"\n [(pickerMoment)]=\"pickerMoment\"\n [selected]=\"picker.selected\"\n [selecteds]=\"picker.selecteds\"\n [selectMode]=\"picker.selectMode\"\n [minDate]=\"picker.minDateTime\"\n [maxDate]=\"picker.maxDateTime\"\n [dateFilter]=\"picker.dateTimeFilter\"\n [startView]=\"picker.startView()\"\n [yearOnly]=\"picker.yearOnly()\"\n [showCalendarWeeks]=\"picker.showCalendarWeeks()\"\n [multiyearOnly]=\"picker.multiyearOnly()\"\n [hideOtherMonths]=\"picker.hideOtherMonths\"\n (yearSelected)=\"picker.selectYear($event)\"\n (monthSelected)=\"picker.selectMonth($event)\"\n (dateClicked)=\"picker.selectDate($event)\"\n (selectedChange)=\"dateSelected($event)\"\n ></owl-date-time-calendar>\n }\n @if (pickerType === 'both' || pickerType === 'timer') {\n <owl-date-time-timer\n class=\"owl-dt-container-row\"\n [pickerMoment]=\"pickerMoment\"\n [minDateTime]=\"picker.minDateTime\"\n [maxDateTime]=\"picker.maxDateTime\"\n [showSecondsTimer]=\"picker.showSecondsTimer\"\n [hour12Timer]=\"picker.hour12Timer\"\n [stepHour]=\"picker.stepHour\"\n [stepMinute]=\"picker.stepMinute\"\n [stepSecond]=\"picker.stepSecond\"\n (selectedChange)=\"timeSelected($event)\"\n ></owl-date-time-timer>\n }\n @if (picker.isInRangeMode) {\n <div\n role=\"radiogroup\"\n class=\"owl-dt-container-info owl-dt-container-row\"\n >\n <div\n role=\"radio\"\n [tabindex]=\"activeSelectedIndex === 0 ? 0 : -1\"\n [attr.aria-checked]=\"activeSelectedIndex === 0\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-from\"\n [ngClass]=\"{\n 'owl-dt-container-info-active': activeSelectedIndex === 0,\n }\"\n (click)=\"handleClickOnInfoGroup($event, 0)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, to, 0)\"\n #from\n >\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\"\n >\n <span class=\"owl-dt-container-info-label\"\n >{{ fromLabel }}:</span\n >\n <span class=\"owl-dt-container-info-value\">{{\n fromFormattedValue\n }}</span>\n </span>\n </div>\n <div\n role=\"radio\"\n [tabindex]=\"activeSelectedIndex === 1 ? 0 : -1\"\n [attr.aria-checked]=\"activeSelectedIndex === 1\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-to\"\n [ngClass]=\"{\n 'owl-dt-container-info-active': activeSelectedIndex === 1,\n }\"\n (click)=\"handleClickOnInfoGroup($event, 1)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, from, 1)\"\n #to\n >\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\"\n >\n <span class=\"owl-dt-container-info-label\"\n >{{ toLabel }}:</span\n >\n <span class=\"owl-dt-container-info-value\">{{\n toFormattedValue\n }}</span>\n </span>\n </div>\n </div>\n }\n @if (showControlButtons) {\n <div class=\"owl-dt-container-buttons owl-dt-container-row\">\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"onCancelClicked($event)\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n {{ cancelLabel }}\n </span>\n </button>\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"onSetClicked($event)\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n {{ setLabel }}\n </span>\n </button>\n </div>\n }\n</div>\n","/**\n * date-time-picker.component\n */\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n ViewContainerRef,\n afterNextRender,\n inject,\n input,\n output,\n untracked,\n EventEmitter,\n Injector\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n BlockScrollStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { merge, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { OwlDialogRef } from '../dialog/dialog-ref.class';\nimport { OwlDialogService } from '../dialog/dialog.service';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS, OwlDateTimeFormats } from './adapter/date-time-format.class';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTimeInputDirective } from './date-time-picker-input.directive';\nimport { OwlDateTime, PickerMode, PickerType, SelectMode } from './date-time.class';\n\n/** Injection token that determines the scroll handling while the dtPicker is open. */\nexport const OWL_DTPICKER_SCROLL_STRATEGY = new InjectionToken<\n () => ScrollStrategy\n>('owl-dtpicker-scroll-strategy');\n\n/** @docs-private */\nexport function OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY(\n overlay: Overlay\n): () => BlockScrollStrategy {\n const fn = () => overlay.scrollStrategies.block();\n return fn;\n}\n\n/** @docs-private */\nexport const OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER = {\n provide: OWL_DTPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n\n@Component({\n selector: 'owl-date-time',\n exportAs: 'owlDateTime',\n templateUrl: './date-time-picker.component.html',\n styleUrls: ['./date-time-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false\n})\nexport class OwlDateTimeComponent<T> extends OwlDateTime<T>\n implements OnInit, OnDestroy {\n overlay = inject(Overlay);\n private viewContainerRef = inject(ViewContainerRef);\n private dialogService = inject(OwlDialogService);\n private injector = inject(Injector);\n protected changeDetector = inject(ChangeDetectorRef);\n private document = inject(DOCUMENT, { optional: true })!;\n\n /** Custom class for the picker backdrop. */\n public readonly backdropClass = input<string | string[]>([]);\n\n /** Custom class for the picker overlay pane. */\n public readonly panelClass = input<string | string[]>([]);\n\n /** The date to open the calendar to initially. */\n private _startAt: T | 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 (\n this._dtInput.selectMode === 'range' ||\n this._dtInput.selectMode === 'rangeFrom'\n ) {\n return this._dtInput.values[0] || null;\n } else if (this._dtInput.selectMode === 'rangeTo') {\n return this._dtInput.values[1] || null;\n }\n } else {\n return null;\n }\n }\n\n set startAt(date: T | null) {\n this._startAt = this.getValidDate(\n this.dateTimeAdapter.deserialize(date)\n );\n }\n\n /** The end date to set for range calendar. */\n private _endAt: T | null;\n @Input()\n get endAt(): T | null {\n if (this._endAt) {\n return this._endAt;\n }\n\n if (this._dtInput) {\n if (this._dtInput.selectMode === 'single') {\n return this._dtInput.value || null;\n } else if (\n this._dtInput.selectMode === 'range' ||\n this._dtInput.selectMode === 'rangeFrom'\n ) {\n return this._dtInput.values[1] || null;\n }\n } else {\n return null;\n }\n }\n\n set endAt(date: T | null) {\n this._endAt = this.getValidDate(\n this.dateTimeAdapter.deserialize(date)\n );\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;\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined && this._dtInput\n ? this._dtInput.disabled\n : !!this._disabled;\n }\n\n 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 public readonly scrollStrategy = input<ScrollStrategy>(undefined);\n\n /**\n * Callback when the picker is closed\n * */\n readonly afterPickerClosed = output<any>();\n\n /**\n * Callback before the picker is open\n * */\n readonly beforePickerOpen = output<any>();\n\n /**\n * Callback when the picker is open\n * */\n readonly afterPickerOpen = output<any>();\n\n /**\n * Emits selected year in multi-year view\n * This doesn't imply a change on the selected date.\n * */\n readonly yearSelected = output<T>();\n\n /**\n * Emits selected month in year view\n * This doesn't imply a change on the selected date.\n * */\n readonly monthSelected = output<T>();\n\n /**\n * Emits selected date\n * */\n readonly dateSelected = output<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<\n OwlDateTimeContainerComponent<T>\n >;\n private pickerContainer: OwlDateTimeContainerComponent<T>;\n private popupRef: OverlayRef;\n private dialogRef: OwlDialogRef<OwlDateTimeContainerComponent<T>>;\n private dtInputSub = Subscription.EMPTY;\n private hidePickerStreamSub = Subscription.EMPTY;\n private confirmSelectedStreamSub = Subscription.EMPTY;\n private pickerOpenedStreamSub = Subscription.EMPTY;\n private pickerBeforeOpenedStreamSub = Subscription.EMPTY;\n private dialogEventsSub = Subscription.EMPTY;\n\n /** Pending async close (focus-restore path); cleared on destroy. */\n private closeTimer: ReturnType<typeof setTimeout>;\n\n /** The element that was focused before the date time picker was opened. */\n private focusedElementBeforeOpen: HTMLElement | null = null;\n\n private _dtInput: OwlDateTimeInputDirective<T>;\n get dtInput() {\n return this._dtInput;\n }\n\n private _selected: T | null;\n get selected() {\n return this._selected;\n }\n\n set selected(value: T | null) {\n this._selected = value;\n this.changeDetector.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.changeDetector.markForCheck();\n }\n\n /** The minimum selectable date. */\n get minDateTime(): T | null {\n return this._dtInput && this._dtInput.min;\n }\n\n /** The maximum selectable date. */\n get maxDateTime(): T | null {\n return this._dtInput && this._dtInput.max;\n }\n\n get dateTimeFilter(): (date: T | null) => boolean {\n return this._dtInput && this._dtInput.dateTimeFilter;\n }\n\n get selectMode(): SelectMode {\n return this._dtInput.selectMode;\n }\n\n get isInSingleMode(): boolean {\n return this._dtInput.isInSingleMode;\n }\n\n get isInRangeMode(): boolean {\n return this._dtInput.isInRangeMode;\n }\n\n private readonly defaultScrollStrategy: () => ScrollStrategy;\n\n constructor() {\n const dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true })!;\n const defaultScrollStrategy = inject(OWL_DTPICKER_SCROLL_STRATEGY);\n const dateTimeFormats = inject<OwlDateTimeFormats>(OWL_DATE_TIME_FORMATS, { optional: true })!;\n\n super(dateTimeAdapter, dateTimeFormats);\n this.dateTimeAdapter = dateTimeAdapter;\n this.dateTimeFormats = dateTimeFormats;\n\n this.defaultScrollStrategy = defaultScrollStrategy;\n }\n\n public ngOnInit() {}\n\n public ngOnDestroy(): void {\n // Tearing down is not the same as the user closing the picker: release\n // the overlay/subscriptions but do NOT emit `afterPickerClosed`, and drop\n // any pending async close so it can't emit into a destroyed component.\n clearTimeout(this.closeTimer);\n this.disposeOverlayResources();\n this._opened = false;\n this.dtInputSub.unsubscribe();\n this.disabledChange.complete();\n\n if (this.popupRef) {\n this.popupRef.dispose();\n }\n }\n\n public registerInput(input: OwlDateTimeInputDirective<T>): void {\n if (this._dtInput) {\n throw Error(\n 'A Owl DateTimePicker can only be associated with a single input.'\n );\n }\n\n this._dtInput = input;\n this.dtInputSub = this._dtInput.valueChange.subscribe(\n (value: T[] | T | null) => {\n if (Array.isArray(value)) {\n this.selecteds = value;\n } else {\n this.selected = value;\n }\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(\n 'Attempted to open an DateTimePicker with no associated input.'\n );\n }\n\n if (this.document) {\n this.focusedElementBeforeOpen = this.document.activeElement as HTMLElement;\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 (this.selected && this.pickerType !== 'calendar' && this._startAt) {\n this.selected = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.selected),\n this.dateTimeAdapter.getMonth(this.selected),\n this.dateTimeAdapter.getDate(this.selected),\n this.dateTimeAdapter.getHours(this._startAt),\n this.dateTimeAdapter.getMinutes(this._startAt),\n this.dateTimeAdapter.getSeconds(this._startAt)\n );\n }\n\n this.pickerMode === 'dialog' ? this.openAsDialog() : this.openAsPopup();\n\n this.pickerContainer.picker = this;\n\n // Listen to picker container's hidePickerStream\n this.hidePickerStreamSub = this.pickerContainer.hidePickerStream.subscribe(\n () => {\n this.close();\n }\n );\n\n // Listen to picker container's confirmSelectedStream\n this.confirmSelectedStreamSub = this.pickerContainer.confirmSelectedStream.subscribe(\n (event: any) => {\n this.confirmSelect(event);\n }\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' &&\n this.selecteds[0] &&\n 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 * Emits the selected date\n * */\n public selectDate(normalizedDate: T): void {\n this.dateSelected.emit(normalizedDate);\n }\n\n /**\n * Hide the picker\n */\n public close(): void {\n if (!this._opened) {\n return;\n }\n\n this.disposeOverlayResources();\n\n const completeClose = () => {\n if (this._opened) {\n this._opened = false;\n const selected = this.selected || this.selecteds;\n this.afterPickerClosed.emit(selected);\n this.focusedElementBeforeOpen = null;\n }\n };\n\n if (\n this.focusedElementBeforeOpen &&\n typeof this.focusedElementBeforeOpen.focus === 'function'\n ) {\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 this.closeTimer = setTimeout(completeClose);\n } else {\n completeClose();\n }\n }\n\n /**\n * Release the overlay/dialog and the container stream subscriptions. Shared\n * by close() and ngOnDestroy(); does not emit any lifecycle event itself.\n */\n private disposeOverlayResources(): void {\n if (this.popupRef && this.popupRef.hasAttached()) {\n this.popupRef.detach();\n }\n\n if (\n this.pickerContainerPortal &&\n this.pickerContainerPortal.isAttached\n ) {\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.pickerBeforeOpenedStreamSub) {\n this.pickerBeforeOpenedStreamSub.unsubscribe();\n this.pickerBeforeOpenedStreamSub = null;\n }\n\n if (this.pickerOpenedStreamSub) {\n this.pickerOpenedStreamSub.unsubscribe();\n this.pickerOpenedStreamSub = null;\n }\n\n this.dialogEventsSub.unsubscribe();\n\n if (this.dialogRef) {\n this.dialogRef.close();\n this.dialogRef = null;\n }\n }\n\n /**\n * Confirm the selected value\n */\n public confirmSelect(event?: any): void {\n if (this.isInSingleMode) {\n const selected =\n 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(\n OwlDateTimeContainerComponent,\n {\n autoFocus: false,\n backdropClass: [\n 'cdk-overlay-dark-backdrop',\n ...coerceArray(this.backdropClass())\n ],\n paneClass: ['owl-dt-dialog', ...coerceArray(this.panelClass())],\n viewContainerRef: this.viewContainerRef,\n scrollStrategy:\n this.scrollStrategy() || this.defaultScrollStrategy()\n }\n );\n this.pickerContainer = untracked(this.dialogRef.componentInstance);\n\n this.dialogEventsSub = new Subscription();\n this.dialogEventsSub.add(this.dialogRef.beforeOpen().subscribe(() => {\n this.beforePickerOpen.emit(null);\n }));\n this.dialogEventsSub.add(this.dialogRef.afterOpen().subscribe(() => {\n this.afterPickerOpen.emit(null);\n this._opened = true;\n }));\n this.dialogEventsSub.add(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<\n OwlDateTimeContainerComponent<T>\n >(OwlDateTimeContainerComponent, this.viewContainerRef);\n }\n\n if (!this.popupRef) {\n this.createPopup();\n }\n\n if (!this.popupRef.hasAttached()) {\n const componentRef: ComponentRef<\n OwlDateTimeContainerComponent<T>\n > = this.popupRef.attach(this.pickerContainerPortal);\n this.pickerContainer = componentRef.instance;\n\n // Update the position once the calendar has rendered.\n afterNextRender(() => {\n this.popupRef.updatePosition();\n }, { injector: this.injector });\n\n this.pickerBeforeOpenedStreamSub = this.pickerContainer.beforePickerOpenedStream\n .pipe(take(1))\n .subscribe(() => {\n this.beforePickerOpen.emit(null);\n });\n\n // emit open stream\n this.pickerOpenedStreamSub = this.pickerContainer.pickerOpenedStream\n .pipe(take(1))\n .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: [\n 'cdk-overlay-transparent-backdrop',\n ...coerceArray(this.backdropClass())\n ],\n scrollStrategy: this.scrollStrategy() || this.defaultScrollStrategy(),\n panelClass: ['owl-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(\n filter(\n event =>\n event.keyCode === ESCAPE ||\n (this._dtInput &&\n event.altKey &&\n event.keyCode === UP_ARROW)\n )\n )\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(this._dtInput.elementRef)\n .withTransformOriginOn('.owl-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","","/**\n * provide-date-time.ts\n * Provider functions for OwlDateTime in standalone mode\n */\n\nimport { EnvironmentProviders, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER } from './date-time-picker.component';\nimport { optionsProviders, Options, OptionsTokens } from './options-provider';\nimport { OWL_DIALOG_SCROLL_STRATEGY_PROVIDER, OwlDialogService } from '../dialog/dialog.service';\n\n/**\n * Provides the core OwlDateTime functionality without any date adapter.\n * You must also provide a date adapter using `provideOwlNativeDateTime()` or `provideOwlUnixTimestampDateTime()`.\n *\n * This includes:\n * - Date time picker internationalization service\n * - Scroll strategy for picker overlay\n * - Dialog service and scroll strategy (for dialog mode)\n * - Default options configuration\n *\n * @example\n * ```typescript\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideOwlDateTime(),\n * provideOwlNativeDateTime()\n * ]\n * });\n * ```\n */\nexport function provideOwlDateTime(): EnvironmentProviders {\n return makeEnvironmentProviders([\n OwlDateTimeIntl,\n OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER,\n OWL_DIALOG_SCROLL_STRATEGY_PROVIDER,\n OwlDialogService,\n ...optionsProviders,\n ]);\n}\n\n/**\n * Provides custom options for OwlDateTime.\n * This is optional - default options will be used if not provided.\n *\n * @param options - Custom options for multi-year view configuration\n *\n * @example\n * ```typescript\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideOwlDateTime(),\n * provideOwlNativeDateTime(),\n * provideOwlDateTimeOptions({\n * multiYear: {\n * yearsPerRow: 4,\n * yearRows: 5\n * }\n * })\n * ]\n * });\n * ```\n */\nexport function provideOwlDateTimeOptions(options: Partial<Options>): Provider[] {\n return [\n {\n provide: OptionsTokens.all,\n useValue: options,\n },\n {\n provide: OptionsTokens.multiYear,\n useFactory: (opts: Options) => opts.multiYear,\n deps: [OptionsTokens.all],\n },\n ];\n}\n\n/**\n * Provides the core OwlDateTime functionality for component-level usage.\n * Returns regular Provider[] instead of EnvironmentProviders, allowing use in @Component({ providers: [] }).\n *\n * Use this when you want to provide OwlDateTime configuration at the component level\n * rather than globally in main.ts.\n *\n * @example\n * ```typescript\n * @Component({\n * providers: [\n * ...owlDateTimeProviders(),\n * ...owlNativeDateTimeProviders()\n * ]\n * })\n * export class MyPickerComponent { }\n * ```\n */\nexport function owlDateTimeProviders(): Provider[] {\n return [\n OwlDateTimeIntl,\n OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER,\n OWL_DIALOG_SCROLL_STRATEGY_PROVIDER,\n OwlDialogService,\n ...optionsProviders,\n ];\n}\n","/**\n * array.utils\n */\n\n/** Creates an array and fills it with values. */\nexport function 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 * date.utils\n */\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 */\nexport function createDate(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n): Date {\n if (month < 0 || month > 11) {\n throw Error(\n `Invalid month index \"${month}\". Month index has to be between 0 and 11.`\n );\n }\n\n if (date < 1) {\n throw Error(\n `Invalid date \"${date}\". Date has to be greater than 0.`\n );\n }\n\n if (hours < 0 || hours > 23) {\n throw Error(\n `Invalid hours \"${hours}\". Hours has to be between 0 and 23.`\n );\n }\n\n if (minutes < 0 || minutes > 59) {\n throw Error(\n `Invalid minutes \"${minutes}\". Minutes has to between 0 and 59.`\n );\n }\n\n if (seconds < 0 || seconds > 59) {\n throw Error(\n `Invalid seconds \"${seconds}\". Seconds has to be between 0 and 59.`\n );\n }\n\n const result = createDateWithOverflow(\n year,\n month,\n date,\n hours,\n minutes,\n seconds\n );\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(\n `Invalid date \"${date}\" for month with index \"${month}\".`\n );\n }\n\n return result;\n}\n\n/**\n * Gets the number of days in the month of the given date.\n */\nexport function getNumDaysInMonth(date: Date): number {\n const lastDateOfMonth = createDateWithOverflow(\n date.getFullYear(),\n date.getMonth() + 1,\n 0\n );\n\n return lastDateOfMonth.getDate();\n}\n\n/**\n * Creates a date but allows the month and date to overflow.\n */\nfunction 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(result.getFullYear() - 1900);\n }\n return result;\n}\n","/**\n * constants\n */\n\nimport {range} from './array.utils';\n\n/** Whether the browser supports the Intl API. */\nexport const SUPPORTS_INTL_API = typeof Intl !== 'undefined';\n\n/** The default month names to use if Intl API is not available. */\nexport const DEFAULT_MONTH_NAMES = {\n long: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n short: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n ],\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. */\nexport const DEFAULT_DAY_OF_WEEK_NAMES = {\n long: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday'\n ],\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. */\nexport const DEFAULT_DATE_NAMES = range(31, i => String(i + 1));\n","/**\n * native-date-time-adapter.class\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n DateTimeAdapter,\n OWL_DATE_TIME_LOCALE\n} from './date-time-adapter.class';\nimport { range } from '../../utils/array.utils';\nimport { createDate, getNumDaysInMonth } from '../../utils/date.utils';\nimport {\n DEFAULT_DATE_NAMES,\n DEFAULT_DAY_OF_WEEK_NAMES,\n DEFAULT_MONTH_NAMES,\n SUPPORTS_INTL_API\n} from '../../utils/constants';\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@Injectable()\nexport class NativeDateTimeAdapter extends DateTimeAdapter<Date> {\n \tprivate owlDateTimeLocale = inject(OWL_DATE_TIME_LOCALE, { optional: true })!;\n\n \tpublic firstMonthOfTheYear: number = 0;\n \tpublic firstDayOfTheWeek: number = 0;\n \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 const platform = inject(Platform);\n\n super();\n const owlDateTimeLocale = this.owlDateTimeLocale;\n\n super.setLocale(owlDateTimeLocale);\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 return getNumDaysInMonth(date);\n }\n\n public differenceInCalendarDays(dateLeft: Date, dateRight: Date): number {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = this.createDate(\n this.getYear(dateLeft),\n this.getMonth(dateLeft),\n this.getDate(dateLeft)\n );\n const dateRightStartOfDay = this.createDate(\n this.getYear(dateRight),\n this.getMonth(dateRight),\n this.getDate(dateRight)\n );\n\n const timeStampLeft =\n this.getTime(dateLeftStartOfDay) -\n dateLeftStartOfDay.getTimezoneOffset() *\n this.milliseondsInMinute;\n const timeStampRight =\n this.getTime(dateRightStartOfDay) -\n dateRightStartOfDay.getTimezoneOffset() *\n this.milliseondsInMinute;\n return Math.round(\n (timeStampLeft - timeStampRight) / this.millisecondsInDay\n );\n } else {\n return null;\n }\n }\n\n public getYearName(date: Date): string {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.getLocale(), {\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.getLocale(), {\n month: style,\n timeZone: 'utc'\n });\n return range(12, i =>\n this.stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, i, 1))\n )\n );\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.getLocale(), {\n weekday: style,\n timeZone: 'utc'\n });\n return range(7, i =>\n this.stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, 0, i + 1))\n )\n );\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.getLocale(), {\n day: 'numeric',\n timeZone: 'utc'\n });\n return range(31, i =>\n this.stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, 0, i + 1))\n )\n );\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 (\n dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime()\n );\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(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n ): Date {\n return createDate(year, month, date, hours, minutes, seconds);\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 (\n this._clampDate &&\n (date.getFullYear() < 1 || date.getFullYear() > 9999)\n ) {\n date = this.clone(date);\n date.setFullYear(\n Math.max(1, Math.min(9999, date.getFullYear()))\n );\n }\n\n displayFormat = { ...displayFormat, timeZone: 'utc' };\n const dtf = new Intl.DateTimeFormat(this.getLocale(), 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 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 * 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","/**\n * native-date-time-format.class\n */\nimport { OwlDateTimeFormats } from './date-time-format.class';\n\nexport const OWL_NATIVE_DATE_TIME_FORMATS: OwlDateTimeFormats = {\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","/**\n * provide-native-date-time.ts\n * Provider functions for native JavaScript Date adapter\n */\n\nimport { EnvironmentProviders, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { DateTimeAdapter } from './date-time-adapter.class';\nimport { NativeDateTimeAdapter } from './native-date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS, OwlDateTimeFormats } from './date-time-format.class';\nimport { OWL_NATIVE_DATE_TIME_FORMATS } from './native-date-time-format.class';\n\n/**\n * Provides the native JavaScript Date adapter for OwlDateTime.\n * This includes both the adapter and the default date formats.\n *\n * @example\n * ```typescript\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideOwlDateTime(),\n * provideOwlNativeDateTime()\n * ]\n * });\n * ```\n */\nexport function provideOwlNativeDateTime(): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: DateTimeAdapter, useClass: NativeDateTimeAdapter },\n { provide: OWL_DATE_TIME_FORMATS, useValue: OWL_NATIVE_DATE_TIME_FORMATS },\n ]);\n}\n\n/**\n * Provides the native JavaScript Date adapter with custom formats.\n *\n * @param formats - Custom date time formats\n *\n * @example\n * ```typescript\n * const customFormats: OwlDateTimeFormats = {\n * parseInput: 'DD/MM/YYYY HH:mm',\n * fullPickerInput: 'DD/MM/YYYY HH:mm:ss',\n * datePickerInput: 'DD/MM/YYYY',\n * timePickerInput: 'HH:mm:ss',\n * monthYearLabel: 'MMM YYYY',\n * dateA11yLabel: 'LL',\n * monthYearA11yLabel: 'MMMM YYYY',\n * };\n *\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideOwlDateTime(),\n * provideOwlNativeDateTimeWithFormats(customFormats)\n * ]\n * });\n * ```\n */\nexport function provideOwlNativeDateTimeWithFormats(formats: OwlDateTimeFormats): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: DateTimeAdapter, useClass: NativeDateTimeAdapter },\n { provide: OWL_DATE_TIME_FORMATS, useValue: formats },\n ]);\n}\n\n/**\n * Provides the native JavaScript Date adapter for component-level usage.\n * Returns regular Provider[] instead of EnvironmentProviders, allowing use in @Component({ providers: [] }).\n *\n * Use this when you want to provide the date adapter at the component level\n * rather than globally in main.ts.\n *\n * @example\n * ```typescript\n * @Component({\n * providers: [\n * ...owlDateTimeProviders(),\n * ...owlNativeDateTimeProviders()\n * ]\n * })\n * export class MyPickerComponent { }\n * ```\n */\nexport function owlNativeDateTimeProviders(): Provider[] {\n return [\n { provide: DateTimeAdapter, useClass: NativeDateTimeAdapter },\n { provide: OWL_DATE_TIME_FORMATS, useValue: OWL_NATIVE_DATE_TIME_FORMATS },\n ];\n}\n\n/**\n * Provides the native JavaScript Date adapter with custom formats for component-level usage.\n * Returns regular Provider[] instead of EnvironmentProviders, allowing use in @Component({ providers: [] }).\n *\n * @param formats - Custom date time formats\n *\n * @example\n * ```typescript\n * const customFormats: OwlDateTimeFormats = {\n * parseInput: 'DD/MM/YYYY HH:mm',\n * fullPickerInput: 'DD/MM/YYYY HH:mm:ss',\n * datePickerInput: 'DD/MM/YYYY',\n * timePickerInput: 'HH:mm:ss',\n * monthYearLabel: 'MMM YYYY',\n * dateA11yLabel: 'LL',\n * monthYearA11yLabel: 'MMMM YYYY',\n * };\n *\n * @Component({\n * providers: [\n * ...owlDateTimeProviders(),\n * ...owlNativeDateTimeProvidersWithFormats(customFormats)\n * ]\n * })\n * export class MyPickerComponent { }\n * ```\n */\nexport function owlNativeDateTimeProvidersWithFormats(formats: OwlDateTimeFormats): Provider[] {\n return [\n { provide: DateTimeAdapter, useClass: NativeDateTimeAdapter },\n { provide: OWL_DATE_TIME_FORMATS, useValue: formats },\n ];\n}\n","/**\n * unix-timestamp-date-time-adapter.class\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport {DateTimeAdapter, OWL_DATE_TIME_LOCALE} from '../date-time-adapter.class';\nimport {Platform} from '@angular/cdk/platform';\nimport {range} from '../../../utils/array.utils';\nimport {createDate, getNumDaysInMonth} from '../../../utils/date.utils';\nimport {DEFAULT_DATE_NAMES, DEFAULT_DAY_OF_WEEK_NAMES, DEFAULT_MONTH_NAMES, SUPPORTS_INTL_API} from '../../../utils/constants';\n\n@Injectable()\nexport class UnixTimestampDateTimeAdapter extends DateTimeAdapter<number> {\n\tprivate owlDateTimeLocale = inject(OWL_DATE_TIME_LOCALE, { optional: true })!;\n\n\tpublic firstMonthOfTheYear: number = 0;\n\tpublic firstDayOfTheWeek: number = 0;\n \n constructor() {\n const platform = inject(Platform);\n\n super();\n const owlDateTimeLocale = this.owlDateTimeLocale;\n\n super.setLocale(owlDateTimeLocale);\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 /** 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 /**\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 static search_ltr_rtl_pattern = '/[\\u200e\\u200f]/g';\n private static stripDirectionalityCharacters(str: string) {\n return str.replace(UnixTimestampDateTimeAdapter.search_ltr_rtl_pattern, '');\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 static _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 addCalendarDays(date: number, amount: number): number {\n const result = new Date(date);\n amount = Number(amount);\n result.setDate(result.getDate() + amount);\n return result.getTime();\n }\n\n addCalendarMonths(date: number, amount: number): number {\n const result = new Date(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.getTime());\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.getTime();\n }\n\n addCalendarYears(date: number, amount: number): number {\n return this.addCalendarMonths(date, amount * 12);\n }\n\n clone(date: number): number {\n return date;\n }\n\n public createDate(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n ): number {\n return createDate(year, month, date, hours, minutes, seconds).getTime();\n }\n\n differenceInCalendarDays(dateLeft: number, dateRight: number): number {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = this.createDate(\n this.getYear(dateLeft),\n this.getMonth(dateLeft),\n this.getDate(dateLeft)\n );\n const dateRightStartOfDay = this.createDate(\n this.getYear(dateRight),\n this.getMonth(dateRight),\n this.getDate(dateRight)\n );\n\n const timeStampLeft =\n this.getTime(dateLeftStartOfDay) -\n new Date(dateLeftStartOfDay).getTimezoneOffset() *\n this.milliseondsInMinute;\n const timeStampRight =\n this.getTime(dateRightStartOfDay) -\n new Date(dateRightStartOfDay).getTimezoneOffset() *\n this.milliseondsInMinute;\n return Math.round(\n (timeStampLeft - timeStampRight) / this.millisecondsInDay\n );\n } else {\n return null;\n }\n }\n\n format(date: number, displayFormat: any): string {\n if (!this.isValid(date)) {\n throw Error('JSNativeDate: Cannot format invalid date.');\n }\n\n const jsDate = new Date(date);\n\n if (SUPPORTS_INTL_API) {\n if (this._clampDate &&\n (jsDate.getFullYear() < 1 || jsDate.getFullYear() > 9999)) {\n jsDate.setFullYear(\n Math.max(1, Math.min(9999, jsDate.getFullYear()))\n );\n }\n\n displayFormat = {...displayFormat, timeZone: 'utc'};\n const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(UnixTimestampDateTimeAdapter._format(dtf, jsDate));\n }\n\n return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(jsDate.toDateString());\n }\n\n getDate(date: number): number {\n return new Date(date).getDate();\n }\n\n 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 =>\n UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n UnixTimestampDateTimeAdapter._format(dtf, new Date(2017, 0, i + 1))\n )\n );\n }\n return DEFAULT_DATE_NAMES;\n }\n\n getDay(date: number): number {\n return new Date(date).getDay();\n }\n\n 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 =>\n UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n UnixTimestampDateTimeAdapter._format(dtf, new Date(2017, 0, i + 1))\n )\n );\n }\n\n return DEFAULT_DAY_OF_WEEK_NAMES[style];\n }\n\n getHours(date: number): number {\n return new Date(date).getHours();\n }\n\n getMinutes(date: number): number {\n return new Date(date).getMinutes();\n }\n\n getMonth(date: number): number {\n return new Date(date).getMonth();\n }\n\n 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 =>\n UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n UnixTimestampDateTimeAdapter._format(dtf, new Date(2017, i, 1))\n )\n );\n }\n return DEFAULT_MONTH_NAMES[style];\n }\n\n getNumDaysInMonth(date: number): number {\n return getNumDaysInMonth(new Date(date));\n }\n\n getSeconds(date: number): number {\n return new Date(date).getSeconds();\n }\n\n getTime(date: number): number {\n return date;\n }\n\n getYear(date: number): number {\n return new Date(date).getFullYear();\n }\n\n getYearName(date: number): string {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n year: 'numeric',\n timeZone: 'utc'\n });\n return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(UnixTimestampDateTimeAdapter._format(dtf, new Date(date)));\n }\n return String(this.getYear(date));\n }\n\n invalid(): number {\n return NaN;\n }\n\n isDateInstance(obj: any): boolean {\n return typeof obj === 'number';\n }\n\n isEqual(dateLeft: number, dateRight: number): boolean {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n return dateLeft === dateRight;\n } else {\n return false;\n }\n }\n\n isSameDay(dateLeft: number, dateRight: number): boolean {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = new Date(dateLeft);\n const dateRightStartOfDay = new Date(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 isValid(date: number): boolean {\n return (date || date === 0) && !isNaN(date);\n }\n\n now(): number {\n return new Date().getTime();\n }\n\n parse(value: any, parseFormat: any): number | 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 value;\n }\n return value ? new Date(Date.parse(value)).getTime() : null;\n }\n\n setHours(date: number, amount: number): number {\n const result = new Date(date);\n result.setHours(amount);\n return result.getTime();\n }\n\n setMinutes(date: number, amount: number): number {\n const result = new Date(date);\n result.setMinutes(amount);\n return result.getTime();\n }\n\n setSeconds(date: number, amount: number): number {\n const result = new Date(date);\n result.setSeconds(amount);\n return result.getTime();\n }\n\n toIso8601(date: number): string {\n return new Date(date).toISOString();\n }\n}\n","/**\n * unix-timestamp-date-time-format.class\n */\nimport {OwlDateTimeFormats} from '../date-time-format.class';\n\nexport const OWL_UNIX_TIMESTAMP_DATE_TIME_FORMATS: OwlDateTimeFormats = {\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","/**\n * provide-unix-timestamp-date-time.ts\n * Provider functions for Unix timestamp adapter\n */\n\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { DateTimeAdapter } from '../date-time-adapter.class';\nimport { UnixTimestampDateTimeAdapter } from './unix-timestamp-date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS, OwlDateTimeFormats } from '../date-time-format.class';\nimport { OWL_UNIX_TIMESTAMP_DATE_TIME_FORMATS } from './unix-timestamp-date-time-format.class';\n\n/**\n * Provides the Unix timestamp adapter for OwlDateTime.\n * This includes both the adapter and the default date formats.\n *\n * @example\n * ```typescript\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideOwlDateTime(),\n * provideOwlUnixTimestampDateTime()\n * ]\n * });\n * ```\n */\nexport function provideOwlUnixTimestampDateTime(): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: DateTimeAdapter, useClass: UnixTimestampDateTimeAdapter },\n { provide: OWL_DATE_TIME_FORMATS, useValue: OWL_UNIX_TIMESTAMP_DATE_TIME_FORMATS },\n ]);\n}\n\n/**\n * Provides the Unix timestamp adapter with custom formats.\n *\n * @param formats - Custom date time formats\n *\n * @example\n * ```typescript\n * const customFormats: OwlDateTimeFormats = {\n * parseInput: 'X',\n * fullPickerInput: 'X',\n * datePickerInput: 'X',\n * timePickerInput: 'X',\n * monthYearLabel: 'MMM YYYY',\n * dateA11yLabel: 'LL',\n * monthYearA11yLabel: 'MMMM YYYY',\n * };\n *\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideOwlDateTime(),\n * provideOwlUnixTimestampDateTimeWithFormats(customFormats)\n * ]\n * });\n * ```\n */\nexport function provideOwlUnixTimestampDateTimeWithFormats(formats: OwlDateTimeFormats): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: DateTimeAdapter, useClass: UnixTimestampDateTimeAdapter },\n { provide: OWL_DATE_TIME_FORMATS, useValue: formats },\n ]);\n}\n","/**\n * provide-dialog.ts\n * Provider functions for OwlDialog in standalone mode\n */\n\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { OWL_DIALOG_SCROLL_STRATEGY_PROVIDER, OwlDialogService } from './dialog.service';\n\n/**\n * Provides the OwlDialog service and its dependencies.\n * This is required for dialog mode date-time picker.\n *\n * Note: This is automatically included when using `provideOwlDateTime()`,\n * so you typically don't need to call this separately.\n *\n * @example\n * ```typescript\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideOwlDialog()\n * ]\n * });\n * ```\n */\nexport function provideOwlDialog(): EnvironmentProviders {\n return makeEnvironmentProviders([\n OWL_DIALOG_SCROLL_STRATEGY_PROVIDER,\n OwlDialogService,\n ]);\n}\n","/**\n * date-time-picker-trigger.directive\n */\n\n\nimport { AfterContentInit, ChangeDetectorRef, Directive, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, inject, input } from '@angular/core';\nimport { OwlDateTimeComponent } from './date-time-picker.component';\nimport { merge, of as observableOf, Subscription } from 'rxjs';\n\n@Directive({\n selector: '[owlDateTimeTrigger]',\n host: {\n '(click)': 'handleClickOnHost($event)',\n '[class.owl-dt-trigger-disabled]': 'owlDTTriggerDisabledClass'\n }\n})\nexport class OwlDateTimeTriggerDirective<T> implements OnInit, OnChanges, AfterContentInit, OnDestroy {\n protected changeDetector = inject(ChangeDetectorRef);\n\n\n readonly dtPicker = input<OwlDateTimeComponent<T>>(undefined, { alias: \"owlDateTimeTrigger\" });\n\n private _disabled: boolean;\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined ? this.dtPicker().disabled : !!this._disabled;\n }\n\n set disabled( value: boolean ) {\n this._disabled = value;\n }\n\n get owlDTTriggerDisabledClass(): boolean {\n return this.disabled;\n }\n\n private stateChanges = Subscription.EMPTY;\n\n public ngOnInit(): void {\n }\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 public handleClickOnHost( event: Event ): void {\n const dtPicker = this.dtPicker();\n if (dtPicker) {\n dtPicker.open();\n event.stopPropagation();\n }\n }\n\n private watchStateChanges(): void {\n this.stateChanges.unsubscribe();\n\n const dtPicker = this.dtPicker();\n const inputDisabled = dtPicker && dtPicker.dtInput ?\n dtPicker.dtInput.disabledChange : observableOf();\n\n const dtPickerValue = this.dtPicker();\n const pickerDisabled = dtPickerValue ?\n dtPickerValue.disabledChange : observableOf();\n\n this.stateChanges = merge([pickerDisabled, inputDisabled])\n .subscribe(() => {\n this.changeDetector.markForCheck();\n });\n }\n}\n","/**\n * date-time-picker-input.directive\n */\n\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n inject,\n input,\n model,\n output\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 { OwlDateTimeComponent } from './date-time-picker.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from './date-time.class';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport const OWL_DATETIME_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OwlDateTimeInputDirective),\n multi: true\n};\n\nexport const OWL_DATETIME_VALIDATORS: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => OwlDateTimeInputDirective),\n multi: true\n};\n\n@Directive({\n selector: 'input[owlDateTime]',\n exportAs: 'owlDateTimeInput',\n host: {\n '(keydown)': 'handleKeydownOnHost($event)',\n '(blur)': 'handleBlurOnHost($event)',\n '(input)': 'handleInputOnHost($event)',\n '(change)': 'handleChangeOnHost($event)',\n '[attr.aria-haspopup]': 'owlDateTimeInputAriaHaspopup',\n '[attr.aria-owns]': 'owlDateTimeInputAriaOwns',\n '[attr.min]': 'minIso8601',\n '[attr.max]': 'maxIso8601',\n '[disabled]': 'owlDateTimeInputDisabled'\n },\n providers: [\n OWL_DATETIME_VALUE_ACCESSOR,\n OWL_DATETIME_VALIDATORS,\n ],\n})\nexport class OwlDateTimeInputDirective<T>\n implements\n OnInit,\n AfterContentInit,\n OnDestroy,\n ControlValueAccessor,\n Validator {\n private elmRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n private dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true })!;\n private dateTimeFormats = inject<OwlDateTimeFormats>(OWL_DATE_TIME_FORMATS, { optional: true })!;\n\n static ngAcceptInputType_disabled: boolean|'';\n\n /**\n * Required flag to be used for range of [null, null]\n * */\n private _required: boolean;\n @Input()\n get required() {\n return this._required;\n }\n\n set required(value: any) {\n this._required = value === '' || value;\n this.validatorOnChange();\n }\n\n /**\n * The date time picker that this input is associated with.\n * */\n @Input()\n set owlDateTime(value: OwlDateTimeComponent<T>) {\n this.registerDateTimePicker(value);\n }\n\n /**\n * A function to filter date time\n */\n @Input()\n set owlDateTimeFilter(filter: (date: T | null) => boolean) {\n this._dateTimeFilter = filter;\n this.validatorOnChange();\n }\n\n private _dateTimeFilter: (date: T | null) => boolean;\n get dateTimeFilter() {\n return this._dateTimeFilter;\n }\n\n /** Whether the date time picker's input is disabled. */\n protected readonly _disabled = model<boolean>(undefined);\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.set(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 /** The minimum valid date. */\n private _min: T | null;\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 /** The maximum valid date. */\n private _max: T | null;\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 /**\n * The picker's select mode\n */\n private _selectMode: SelectMode = 'single';\n @Input()\n get selectMode() {\n return this._selectMode;\n }\n\n set selectMode(mode: SelectMode) {\n if (\n mode !== 'single' &&\n mode !== 'range' &&\n mode !== 'rangeFrom' &&\n mode !== 'rangeTo'\n ) {\n throw Error('OwlDateTime Error: invalid selectMode value!');\n }\n\n this._selectMode = mode;\n }\n\n /**\n * The character to separate the 'from' and 'to' in input value\n */\n readonly rangeSeparator = input('-');\n\n private _value: T | 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 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(oldDate, value)) {\n this.valueChange.emit(value);\n }\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 this._values = values.map(v => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n this.lastValueValid =\n (!this._values[0] ||\n this.dateTimeAdapter.isValid(this._values[0])) &&\n (!this._values[1] ||\n 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 /**\n * Callback to invoke when `change` event is fired on this `<input>`\n * */\n readonly dateTimeChange = output<any>();\n\n /**\n * Callback to invoke when an `input` event is fired on this `<input>`.\n * */\n readonly dateTimeInput = output<any>();\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 (\n this._selectMode === 'range' ||\n this._selectMode === 'rangeFrom' ||\n this._selectMode === 'rangeTo'\n );\n }\n\n /** The date-time-picker that this input is associated with. */\n public dtPicker: OwlDateTimeComponent<T>;\n\n private dtPickerSub: Subscription = Subscription.EMPTY;\n private localeSub: Subscription = Subscription.EMPTY;\n\n private lastValueValid = true;\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\n ? null\n : { owlDateTimeParse: { text: this.elmRef.nativeElement.value } };\n }\n\n /** The form control validator for the min date. */\n private minValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n if (this.isInSingleMode) {\n const controlValue = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value)\n );\n return !this.min ||\n !controlValue ||\n this.dateTimeAdapter.compare(this.min, controlValue) <= 0\n ? null\n : { owlDateTimeMin: { min: this.min, actual: controlValue } };\n } else if (this.isInRangeMode && control.value) {\n const controlValueFrom = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[0])\n );\n const controlValueTo = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[1])\n );\n return !this.min ||\n !controlValueFrom ||\n !controlValueTo ||\n this.dateTimeAdapter.compare(this.min, controlValueFrom) <= 0\n ? null\n : {\n owlDateTimeMin: {\n min: this.min,\n actual: [controlValueFrom, controlValueTo]\n }\n };\n }\n }\n\n /** The form control validator for the max date. */\n private maxValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n if (this.isInSingleMode) {\n const controlValue = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value)\n );\n return !this.max ||\n !controlValue ||\n this.dateTimeAdapter.compare(this.max, controlValue) >= 0\n ? null\n : { owlDateTimeMax: { max: this.max, actual: controlValue } };\n } else if (this.isInRangeMode && control.value) {\n const controlValueFrom = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[0])\n );\n const controlValueTo = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[1])\n );\n return !this.max ||\n !controlValueFrom ||\n !controlValueTo ||\n this.dateTimeAdapter.compare(this.max, controlValueTo) >= 0\n ? null\n : {\n owlDateTimeMax: {\n max: this.max,\n actual: [controlValueFrom, controlValueTo]\n }\n };\n }\n }\n\n /** The form control validator for the date filter. */\n private filterValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n const controlValue = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value)\n );\n return !this._dateTimeFilter ||\n !controlValue ||\n this._dateTimeFilter(controlValue)\n ? null\n : { owlDateTimeFilter: 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 = (\n control: AbstractControl\n ): ValidationErrors | null => {\n if (this.isInSingleMode || !control.value) {\n return null;\n }\n\n const controlValueFrom = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[0])\n );\n const controlValueTo = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[1])\n );\n\n return !controlValueFrom ||\n !controlValueTo ||\n this.dateTimeAdapter.compare(controlValueFrom, controlValueTo) <= 0\n ? null\n : { owlDateTimeRange: true };\n }\n\n /**\n * The form control validator for the range when required.\n * Check whether the 'before' and 'to' values are present\n * */\n private requiredRangeValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n if (this.isInSingleMode || !control.value || !this.required) {\n return null;\n }\n\n const controlValueFrom = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[0])\n );\n const controlValueTo = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[1])\n );\n\n return !controlValueFrom ||\n !controlValueTo\n ? { owlRequiredDateTimeRange: [controlValueFrom, controlValueTo] }\n : null;\n }\n\n /** The combined form control validator for this input. */\n private validator: ValidatorFn | null = Validators.compose([\n this.parseValidator,\n this.minValidator,\n this.maxValidator,\n this.filterValidator,\n this.rangeValidator,\n this.requiredRangeValidator\n ]);\n\n /** Emits when the value changes (either due to user input or programmatic change). */\n public valueChange = new EventEmitter<T[] | T | null>();\n\n /** Emits when the disabled state has changed */\n public disabledChange = new EventEmitter<boolean>();\n\n get owlDateTimeInputAriaHaspopup(): boolean {\n return true;\n }\n\n get owlDateTimeInputAriaOwns(): string {\n return (this.dtPicker.opened && this.dtPicker.id) || null;\n }\n\n get minIso8601(): string {\n return this.min ? this.dateTimeAdapter.toIso8601(this.min) : null;\n }\n\n get maxIso8601(): string {\n return this.max ? this.dateTimeAdapter.toIso8601(this.max) : null;\n }\n\n get owlDateTimeInputDisabled(): boolean {\n return this.disabled;\n }\n\n constructor() {\n if (!this.dateTimeAdapter) {\n throw Error(\n `OwlDateTimePicker: No provider found for DateTimePicker. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n if (!this.dateTimeFormats) {\n throw Error(\n `OwlDateTimePicker: No provider found for OWL_DATE_TIME_FORMATS. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n this.value = this.value;\n });\n }\n\n public ngOnInit(): void {\n if (!this.dtPicker) {\n throw Error(\n `OwlDateTimePicker: the picker input doesn't have any associated owl-date-time component`\n );\n }\n }\n\n public ngAfterContentInit(): void {\n this.dtPickerSub = this.dtPicker.confirmSelectedChange.subscribe(\n (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\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): { [key: string]: any } {\n return this.validator ? this.validator(c) : null;\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 public handleKeydownOnHost(event: KeyboardEvent ): void {\n if (event.altKey && event.keyCode === DOWN_ARROW) {\n this.dtPicker.open();\n event.preventDefault();\n }\n }\n\n public handleBlurOnHost(event: Event ): void {\n this.onModelTouched();\n }\n\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 public handleChangeOnHost(event: any ): void {\n\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\n ? this.dateTimeAdapter.format(\n this._value,\n this.dtPicker.formatString\n )\n : ''\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\n ? this.dateTimeAdapter.format(\n from,\n this.dtPicker.formatString\n )\n : '';\n const toFormatted = to\n ? this.dateTimeAdapter.format(\n to,\n this.dtPicker.formatString\n )\n : '';\n\n if (!fromFormatted && !toFormatted) {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n null\n );\n } else {\n if (this._selectMode === 'range') {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n fromFormatted +\n ' ' +\n this.rangeSeparator() +\n ' ' +\n toFormatted\n );\n } else if (this._selectMode === 'rangeFrom') {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n fromFormatted\n );\n } else if (this._selectMode === 'rangeTo') {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n toFormatted\n );\n }\n }\n } else {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n ''\n );\n }\n }\n\n return;\n }\n\n /**\n * Register the relationship between this input and its picker component\n */\n private registerDateTimePicker(picker: OwlDateTimeComponent<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) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : 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(\n timeString: string,\n dateTime: T\n ): string | null {\n if (timeString) {\n const v = dateTime || this.dateTimeAdapter.now();\n const dateString = this.dateTimeAdapter.format(\n v,\n this.dateTimeFormats.datePickerInput\n );\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 = this.convertTimeStringToDateTimeString(value, this.value);\n }\n\n let result = this.dateTimeAdapter.parse(\n value,\n this.dateTimeFormats.parseInput\n );\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 =\n this._selectMode === 'rangeFrom'\n ? this._values[0]\n : this._values[1];\n\n if (this.dtPicker.pickerType === 'timer') {\n inputValue = this.convertTimeStringToDateTimeString(\n inputValue,\n originalValue\n );\n }\n\n let result = this.dateTimeAdapter.parse(\n inputValue,\n this.dateTimeFormats.parseInput\n );\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' &&\n this.isSameValue(result, this._values[0]) &&\n result) ||\n (this._selectMode === 'rangeTo' &&\n this.isSameValue(result, this._values[1]) &&\n result)\n ) {\n return;\n }\n\n this._values =\n this._selectMode === 'rangeFrom'\n ? [result, this._values[1]]\n : [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 = this.convertTimeStringToDateTimeString(\n fromString,\n this.values[0]\n );\n toString = this.convertTimeStringToDateTimeString(\n toString,\n this.values[1]\n );\n }\n\n let from = this.dateTimeAdapter.parse(\n fromString,\n this.dateTimeFormats.parseInput\n );\n let to = this.dateTimeAdapter.parse(\n toString,\n this.dateTimeFormats.parseInput\n );\n this.lastValueValid =\n (!from || this.dateTimeAdapter.isValid(from)) &&\n (!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 (\n !this.isSameValue(from, this._values[0]) ||\n !this.isSameValue(to, this._values[1]) ||\n (from === null && to === null)\n ) {\n this._values = [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","/**\n * numberFixedLen.pipe\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'numberFixedLen', })\nexport class NumberFixedLenPipe 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","/**\n * date-time-inline.component\n */\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, OnInit, inject, output, viewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n OwlDateTime,\n PickerMode,\n PickerType,\n SelectMode\n} from './date-time.class';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\n\nexport const OWL_DATETIME_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OwlDateTimeInlineComponent),\n multi: true\n};\n\n@Component({\n selector: 'owl-date-time-inline',\n templateUrl: './date-time-inline.component.html',\n styleUrls: ['./date-time-inline.component.scss'],\n host: {\n '[class.owl-dt-inline]': 'owlDTInlineClass'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n providers: [OWL_DATETIME_VALUE_ACCESSOR],\n imports: [OwlDateTimeContainerComponent]\n})\nexport class OwlDateTimeInlineComponent<T> extends OwlDateTime<T>\n implements OnInit, ControlValueAccessor {\n protected changeDetector = inject(ChangeDetectorRef);\n\n readonly container = viewChild(OwlDateTimeContainerComponent);\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 get disabled(): boolean {\n return !!this._disabled;\n }\n\n 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 (\n mode !== 'single' &&\n mode !== 'range' &&\n mode !== 'rangeFrom' &&\n mode !== 'rangeTo'\n ) {\n throw Error('OwlDateTime 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;\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 (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom'\n ) {\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(\n this.dateTimeAdapter.deserialize(date)\n );\n }\n\n /** The date to open for range calendar. */\n private _endAt: T | null;\n @Input()\n get endAt(): T | null {\n if (this._endAt) {\n return this._endAt;\n }\n\n if (this.selectMode === 'single') {\n return this.value || null;\n } else if (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom'\n ) {\n return this.values[1] || null;\n } else {\n return null;\n }\n }\n\n set endAt(date: T | null) {\n this._endAt = this.getValidDate(\n this.dateTimeAdapter.deserialize(date)\n );\n }\n\n private _dateTimeFilter: (date: T | null) => boolean;\n @Input('owlDateTimeFilter')\n get dateTimeFilter() {\n return 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;\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.changeDetector.markForCheck();\n }\n\n /** The maximum valid date. */\n private _max: T | 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.changeDetector.markForCheck();\n }\n\n private _value: T | 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 = values.map(v => {\n v = this.dateTimeAdapter.deserialize(v);\n v = 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 readonly yearSelected = output<T>();\n\n /**\n * Emits selected month in year view\n * This doesn't imply a change on the selected date.\n * */\n readonly monthSelected = output<T>();\n\n /**\n * Emits selected date\n * */\n readonly dateSelected = output<T>();\n\n private _selected: T | null;\n get selected() {\n return this._selected;\n }\n\n set selected(value: T | null) {\n this._selected = value;\n this.changeDetector.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.changeDetector.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 (\n this._selectMode === 'range' ||\n this._selectMode === 'rangeFrom' ||\n this._selectMode === 'rangeTo'\n );\n }\n\n get owlDTInlineClass(): boolean {\n return true;\n }\n\n private onModelChange: Function = () => { };\n private onModelTouched: Function = () => { };\n\n constructor() {\n const dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true })!;\n const dateTimeFormats = inject<OwlDateTimeFormats>(OWL_DATE_TIME_FORMATS, { optional: true })!;\n\n super(dateTimeAdapter, dateTimeFormats);\n \n this.dateTimeAdapter = dateTimeAdapter;\n this.dateTimeFormats = dateTimeFormats;\n }\n\n public ngOnInit() {\n this.container().picker = this;\n }\n\n public writeValue(value: any): void {\n if (this.isInSingleMode) {\n this.value = value;\n this.container().pickerMoment = value;\n } else {\n this.values = value;\n this.container().pickerMoment = this._values[\n this.container().activeSelectedIndex\n ];\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 /**\n * Emits the selected date\n * */\n public selectDate(normalizedDate: T): void {\n this.dateSelected.emit(normalizedDate);\n }\n}\n","<owl-date-time-container></owl-date-time-container>","/**\n * dialog.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { OWL_DIALOG_SCROLL_STRATEGY_PROVIDER, OwlDialogService } from './dialog.service';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\n\n/**\n * @deprecated Use `provideOwlDialog()` instead. This module will be removed in v21.0.0.\n * Note: Dialog providers are automatically included in `provideOwlDateTime()`.\n *\n * Migration guide:\n * ```typescript\n * // Before:\n * import { OwlDialogModule } from '@dintecom/ngx-datetime-picker';\n * @NgModule({ imports: [OwlDialogModule] })\n *\n * // After (if using separately):\n * import { provideOwlDialog } from '@dintecom/ngx-datetime-picker';\n * providers: [provideOwlDialog()]\n *\n * // Or just use provideOwlDateTime() which includes it:\n * import { provideOwlDateTime } from '@dintecom/ngx-datetime-picker';\n * providers: [provideOwlDateTime()]\n * ```\n */\n@NgModule({\n imports: [CommonModule, A11yModule, OverlayModule, PortalModule, OwlDialogContainerComponent],\n exports: [],\n providers: [\n OWL_DIALOG_SCROLL_STRATEGY_PROVIDER,\n OwlDialogService,\n ]\n})\nexport class OwlDialogModule {\n}\n","/**\n * hour-input.component\n */\n\nimport {\n Component,\n computed,\n forwardRef,\n inject,\n input,\n model\n} from '@angular/core';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { OwlTimerBoxComponent } from './timer-box.component';\n\n@Component({\n exportAs: 'owlHourInput',\n selector: 'owl-hour-input',\n templateUrl: './hour-input.component.html',\n imports: [OwlTimerBoxComponent],\n host: {\n '[class.owl-hour-input]': 'owlHourInputClass'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OwlHourInputComponent),\n multi: true\n }\n ]\n})\nexport class OwlHourInputComponent implements ControlValueAccessor {\n private readonly pickerIntl = inject(OwlDateTimeIntl);\n\n readonly upBtnAriaLabel = input<string>(undefined);\n readonly downBtnAriaLabel = input<string>(undefined);\n readonly min = input(0);\n readonly max = input(23);\n readonly step = input(1);\n readonly hour12Timer = input<boolean>(undefined);\n\n readonly value = model<number>();\n readonly disabled = model<boolean>();\n\n protected readonly isPM = computed(() => {\n const hours = this.value();\n return hours >= 12 && hours <= 23;\n });\n\n protected readonly hour12ButtonLabel = computed(() =>\n this.isPM()\n ? this.pickerIntl.hour12PMLabel\n : this.pickerIntl.hour12AMLabel\n );\n\n protected readonly boxValue = computed(() => {\n const hours = this.value();\n\n if (!this.hour12Timer()) {\n return hours;\n }\n if (hours === 0) {\n return 12;\n }\n if (hours > 12 && hours < 24) {\n return hours - 12;\n }\n return hours;\n });\n\n get owlHourInputClass(): boolean {\n return true;\n }\n\n public upBtnClicked(): void {\n // Emits `valueChange` via the model; does not touch the forms value.\n this.value.set(this.value() + this.step());\n }\n\n public downBtnClicked(): void {\n this.value.set(this.value() - this.step());\n }\n\n public setValueViaInput(hours: number): void {\n if (this.value() && this.isPM() && hours >= 1 && hours <= 11) {\n hours = hours + 12;\n } else if (this.value() && !this.isPM() && hours === 12) {\n hours = 0;\n }\n\n this.commitValue(hours);\n }\n\n public setValue(hours: number): void {\n if (hours < this.min()) {\n this.commitValue(this.max());\n } else if (hours > this.max()) {\n this.commitValue(this.min());\n } else {\n this.commitValue(hours);\n }\n }\n\n public setMeridian(): void {\n // Toggle AM/PM by shifting the hour by 12; `isPM` recomputes from value.\n const hours = this.value() + (this.isPM() ? -12 : 12);\n\n if (hours >= 0 && hours <= 23) {\n this.setValue(hours);\n }\n }\n\n /**\n * Update the value (which emits `valueChange` through the model) and notify\n * the forms API, mirroring the behaviour of the old value setter.\n */\n private commitValue(value: number): void {\n this.value.set(value);\n this.onChange(value);\n this.onTouch(value);\n }\n\n onChange: any = () => {};\n\n onTouch: any = () => {};\n\n writeValue(value: any) {\n this.value.set(value);\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","<owl-date-time-timer-box\n [upBtnAriaLabel]=\"upBtnAriaLabel()\"\n [downBtnAriaLabel]=\"downBtnAriaLabel()\"\n [upBtnDisabled]=\"disabled()\"\n [downBtnDisabled]=\"disabled()\"\n [boxValue]=\"boxValue()\"\n [value]=\"value()\"\n [min]=\"0\"\n [max]=\"23\"\n [step]=\"step()\"\n [inputLabel]=\"'Hour'\"\n (inputChange)=\"setValueViaInput($event)\"\n (valueChange)=\"setValue($event)\"\n></owl-date-time-timer-box>\n\n@if (hour12Timer()) {\n <div class=\"owl-dt-timer-hour12\">\n <button\n class=\"owl-dt-control-button owl-dt-timer-hour12-box\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"setMeridian()\"\n [disabled]=\"disabled()\"\n >\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n {{ hour12ButtonLabel() }}\n </span>\n </button>\n </div>\n}\n","/**\n * date-time.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { OwlDateTimeTriggerDirective } from './date-time-picker-trigger.directive';\nimport { OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER, OwlDateTimeComponent } from './date-time-picker.component';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTimeInputDirective } from './date-time-picker-input.directive';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OwlMonthViewComponent } from './calendar-month-view.component';\nimport { OwlCalendarBodyComponent } from './calendar-body.component';\nimport { OwlYearViewComponent } from './calendar-year-view.component';\nimport { OwlMultiYearViewComponent } from './calendar-multi-year-view.component';\nimport { OwlTimerBoxComponent } from './timer-box.component';\nimport { OwlTimerComponent } from './timer.component';\nimport { NumberFixedLenPipe } from './numberedFixLen.pipe';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { OwlDateTimeInlineComponent } from './date-time-inline.component';\nimport { OwlDialogModule } from '../dialog/dialog.module';\nimport { optionsProviders } from './options-provider';\nimport { OwlHourInputComponent } from './hour-input.component';\n\n/**\n * @deprecated Use `provideOwlDateTime()` instead. This module will be removed in v21.0.0.\n *\n * Migration guide:\n * ```typescript\n * // Before (NgModule approach):\n * import { OwlDateTimeModule, OwlNativeDateTimeModule } from '@dintecom/ngx-datetime-picker';\n *\n * @NgModule({\n * imports: [OwlDateTimeModule, OwlNativeDateTimeModule]\n * })\n * export class AppModule { }\n *\n * // After (Standalone/Provider approach):\n * import { provideOwlDateTime, provideOwlNativeDateTime } from '@dintecom/ngx-datetime-picker';\n *\n * // For standalone app:\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideOwlDateTime(),\n * provideOwlNativeDateTime()\n * ]\n * });\n *\n * // For existing NgModule app:\n * @NgModule({\n * providers: [\n * provideOwlDateTime(),\n * provideOwlNativeDateTime()\n * ]\n * })\n * export class AppModule { }\n * ```\n */\n@NgModule({\n imports: [CommonModule, OverlayModule, OwlDialogModule, A11yModule, OwlDateTimeTriggerDirective,\n OwlDateTimeInputDirective,\n OwlDateTimeComponent,\n OwlDateTimeContainerComponent,\n OwlMultiYearViewComponent,\n OwlYearViewComponent,\n OwlMonthViewComponent,\n OwlTimerComponent,\n OwlTimerBoxComponent,\n OwlHourInputComponent,\n OwlCalendarComponent,\n OwlCalendarBodyComponent,\n NumberFixedLenPipe,\n OwlDateTimeInlineComponent],\n exports: [\n OwlCalendarComponent,\n OwlTimerComponent,\n OwlTimerBoxComponent,\n OwlHourInputComponent,\n OwlDateTimeTriggerDirective,\n OwlDateTimeInputDirective,\n OwlDateTimeComponent,\n OwlDateTimeInlineComponent,\n OwlMultiYearViewComponent,\n OwlYearViewComponent,\n OwlMonthViewComponent,\n ],\n providers: [\n OwlDateTimeIntl,\n OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER,\n ...optionsProviders,\n ]\n})\nexport class OwlDateTimeModule {\n}\n","/**\n * native-date-time.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { DateTimeAdapter } from './date-time-adapter.class';\nimport { NativeDateTimeAdapter } from './native-date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS } from './date-time-format.class';\nimport { OWL_NATIVE_DATE_TIME_FORMATS } from './native-date-time-format.class';\n\n/**\n * @deprecated Use `provideOwlNativeDateTime()` instead. This module will be removed in v21.0.0.\n * @see provideOwlNativeDateTime\n */\n@NgModule({\n imports: [PlatformModule],\n providers: [\n {provide: DateTimeAdapter, useClass: NativeDateTimeAdapter},\n ],\n})\nexport class NativeDateTimeModule {\n}\n\n/**\n * @deprecated Use `provideOwlNativeDateTime()` instead. This module will be removed in v21.0.0.\n *\n * Migration guide:\n * ```typescript\n * // Before:\n * import { OwlNativeDateTimeModule } from '@dintecom/ngx-datetime-picker';\n * @NgModule({ imports: [OwlNativeDateTimeModule] })\n *\n * // After:\n * import { provideOwlNativeDateTime } from '@dintecom/ngx-datetime-picker';\n * providers: [provideOwlNativeDateTime()]\n * ```\n */\n@NgModule({\n imports: [NativeDateTimeModule],\n providers: [{provide: OWL_DATE_TIME_FORMATS, useValue: OWL_NATIVE_DATE_TIME_FORMATS}],\n})\nexport class OwlNativeDateTimeModule {\n}\n","/**\n * picker\n */\n\n// ============================================================================\n// Standalone Provider Functions (Recommended for new projects)\n// ============================================================================\n\nexport {\n provideOwlDateTime,\n provideOwlDateTimeOptions,\n owlDateTimeProviders\n} from './lib/date-time/provide-date-time';\n\nexport {\n provideOwlNativeDateTime,\n provideOwlNativeDateTimeWithFormats,\n owlNativeDateTimeProviders,\n owlNativeDateTimeProvidersWithFormats\n} from './lib/date-time/adapter/provide-native-date-time';\n\nexport {\n provideOwlUnixTimestampDateTime,\n provideOwlUnixTimestampDateTimeWithFormats\n} from './lib/date-time/adapter/unix-timestamp-adapter/provide-unix-timestamp-date-time';\n\nexport { provideOwlDialog } from './lib/dialog/provide-dialog';\n\n// ============================================================================\n// NgModules (Deprecated - use provider functions instead)\n// ============================================================================\n\n/**\n * @deprecated Use `provideOwlDateTime()` instead. Will be removed in v21.0.0.\n * @example\n * Before:\n * ```typescript\n * import { OwlDateTimeModule, OwlNativeDateTimeModule } from '@dintecom/ngx-datetime-picker';\n *\n * @NgModule({\n * imports: [OwlDateTimeModule, OwlNativeDateTimeModule]\n * })\n * ```\n * After:\n * ```typescript\n * import { provideOwlDateTime, provideOwlNativeDateTime } from '@dintecom/ngx-datetime-picker';\n *\n * bootstrapApplication(AppComponent, {\n * providers: [provideOwlDateTime(), provideOwlNativeDateTime()]\n * });\n * ```\n */\nexport { OwlDateTimeModule } from './lib/date-time/date-time.module';\n\n/**\n * @deprecated Use `provideOwlNativeDateTime()` instead. Will be removed in v21.0.0.\n */\nexport { OwlNativeDateTimeModule } from './lib/date-time/adapter/native-date-time.module';\n\n// ============================================================================\n// Services, Components, Directives, and Types\n// ============================================================================\n\nexport { OwlDateTimeIntl } from './lib/date-time/date-time-picker-intl.service';\n\nexport {\n OWL_DATE_TIME_LOCALE_PROVIDER,\n OWL_DATE_TIME_LOCALE,\n DateTimeAdapter,\n\n} from './lib/date-time/adapter/date-time-adapter.class';\n\nexport { OWL_DATE_TIME_FORMATS } from './lib/date-time/adapter/date-time-format.class';\nexport type { OwlDateTimeFormats } from './lib/date-time/adapter/date-time-format.class';\n\nexport {\n UnixTimestampDateTimeAdapter\n} from './lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class';\n\nexport { OWL_UNIX_TIMESTAMP_DATE_TIME_FORMATS } from './lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class';\n\nexport { OwlDateTimeInlineComponent } from './lib/date-time/date-time-inline.component';\n\nexport { OwlDateTimeComponent } from './lib/date-time/date-time-picker.component';\n\nexport * from './lib/date-time/calendar-body.component';\n\nexport * from './lib/date-time/timer.component';\n\nexport * from './lib/date-time/timer-box.component';\n\nexport * from './lib/date-time/hour-input.component';\n\nexport * from './lib/date-time/date-time-picker-trigger.directive';\n\nexport * from './lib/date-time/date-time-picker-input.directive';\n\nexport * from './lib/date-time/calendar-multi-year-view.component';\n\nexport * from './lib/date-time/calendar-year-view.component';\n\nexport * from './lib/date-time/calendar-month-view.component';\n\nexport * from './lib/date-time/calendar.component';\n\nexport { NativeDateTimeAdapter } from './lib/date-time/adapter/native-date-time-adapter.class';\n\nexport * from './lib/date-time/options-provider';\n\nexport { DateView } from './lib/date-time/date-time.class';\nexport type { PickerType, PickerMode, SelectMode, DateViewType } from './lib/date-time/date-time.class';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["take","filter","observableOf","OWL_DATETIME_VALUE_ACCESSOR"],"mappings":"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"}
1
+ {"version":3,"file":"dintecom-ngx-datetime-picker.mjs","sources":["../../../projects/picker/src/lib/date-time/date-time-picker-intl.service.ts","../../../projects/picker/src/lib/dialog/dialog-config.class.ts","../../../projects/picker/src/lib/dialog/dialog-ref.class.ts","../../../projects/picker/src/lib/dialog/dialog-container.component.ts","../../../projects/picker/src/lib/dialog/dialog-container.component.html","../../../projects/picker/src/lib/utils/object.utils.ts","../../../projects/picker/src/lib/utils/index.ts","../../../projects/picker/src/lib/dialog/dialog.service.ts","../../../projects/picker/src/lib/date-time/adapter/date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/adapter/date-time-format.class.ts","../../../projects/picker/src/lib/date-time/options-provider.ts","../../../projects/picker/src/lib/date-time/date-time.class.ts","../../../projects/picker/src/lib/date-time/calendar-body.component.ts","../../../projects/picker/src/lib/date-time/calendar-body.component.html","../../../projects/picker/src/lib/date-time/calendar-month-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-month-view.component.html","../../../projects/picker/src/lib/date-time/calendar-year-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-year-view.component.html","../../../projects/picker/src/lib/date-time/calendar-multi-year-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-multi-year-view.component.html","../../../projects/picker/src/lib/date-time/calendar.component.ts","../../../projects/picker/src/lib/date-time/calendar.component.html","../../../projects/picker/src/lib/date-time/timer-box.component.ts","../../../projects/picker/src/lib/date-time/timer-box.component.html","../../../projects/picker/src/lib/date-time/timer.component.ts","../../../projects/picker/src/lib/date-time/timer.component.html","../../../projects/picker/src/lib/date-time/date-time-picker-container.component.ts","../../../projects/picker/src/lib/date-time/date-time-picker-container.component.html","../../../projects/picker/src/lib/date-time/date-time-picker.component.ts","../../../projects/picker/src/lib/date-time/date-time-picker.component.html","../../../projects/picker/src/lib/date-time/provide-date-time.ts","../../../projects/picker/src/lib/utils/array.utils.ts","../../../projects/picker/src/lib/utils/date.utils.ts","../../../projects/picker/src/lib/utils/constants.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time-format.class.ts","../../../projects/picker/src/lib/date-time/adapter/provide-native-date-time.ts","../../../projects/picker/src/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class.ts","../../../projects/picker/src/lib/date-time/adapter/unix-timestamp-adapter/provide-unix-timestamp-date-time.ts","../../../projects/picker/src/lib/dialog/provide-dialog.ts","../../../projects/picker/src/lib/date-time/date-time-picker-trigger.directive.ts","../../../projects/picker/src/lib/date-time/date-time-picker-input.directive.ts","../../../projects/picker/src/lib/date-time/numberedFixLen.pipe.ts","../../../projects/picker/src/lib/date-time/date-time-inline.component.ts","../../../projects/picker/src/lib/date-time/date-time-inline.component.html","../../../projects/picker/src/lib/dialog/dialog.module.ts","../../../projects/picker/src/lib/date-time/hour-input.component.ts","../../../projects/picker/src/lib/date-time/hour-input.component.html","../../../projects/picker/src/lib/date-time/date-time.module.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time.module.ts","../../../projects/picker/src/public-api.ts","../../../projects/picker/src/dintecom-ngx-datetime-picker.ts"],"sourcesContent":["/**\n * date-time-picker-intl.service\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({providedIn: 'root'})\nexport class OwlDateTimeIntl {\n\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","/**\n * dialog-config.class\n */\nimport { 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 DialogPosition {\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 interface OwlDialogConfigInterface {\n /**\n * ID of the element that describes the dialog.\n */\n ariaDescribedBy?: string | null;\n\n /**\n * Whether to focus the dialog when the dialog is opened\n */\n autoFocus?: boolean;\n\n /** Whether the dialog has a backdrop. */\n hasBackdrop?: boolean;\n\n /**\n * Custom style for the backdrop\n * */\n backdropStyle?: any;\n\n /** Data being injected into the child component. */\n data?: any ;\n\n /** Whether the user can use escape or clicking outside to close a modal. */\n disableClose?: boolean;\n\n /**\n * ID for the modal. If omitted, a unique one will be generated.\n */\n id?: string;\n\n /**\n * The ARIA role of the dialog element.\n */\n role?: 'dialog' | 'alertdialog';\n\n /**\n * Custom class for the pane\n * */\n paneClass?: string | string[];\n\n /**\n * Mouse Event\n * */\n event?: MouseEvent;\n\n /**\n * Custom class for the backdrop\n * */\n backdropClass?: string | string[];\n\n /**\n * Whether the dialog should close when the user goes backwards/forwards in history.\n * */\n closeOnNavigation?: boolean;\n\n /** Width of the dialog. */\n width?: string ;\n\n /** Height of the dialog. */\n height?: string;\n\n /**\n * The min-width of the overlay panel.\n * If a number is provided, pixel units are assumed.\n * */\n 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 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 maxWidth?: number | string;\n\n /**\n * The max-height of the overlay panel.\n * If a number is provided, pixel units are assumed.\n * */\n maxHeight?: number | string;\n\n /** Position overrides. */\n position?: DialogPosition;\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 scrollStrategy?: ScrollStrategy;\n\n viewContainerRef?: ViewContainerRef;\n}\n\nexport class OwlDialogConfig implements OwlDialogConfigInterface {\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 = 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 = 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;\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 = true;\n\n /** Width of the dialog. */\n public width = '';\n\n /** Height of the dialog. */\n public height = '';\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: DialogPosition;\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 = `owl-dialog-${uniqueId++}`;\n }\n}\n","/**\n * dialog-ref.class\n */\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { GlobalPositionStrategy, OverlayRef } from '@angular/cdk/overlay';\nimport { Location } from '@angular/common';\nimport { Signal, signal } from '@angular/core';\nimport { Observable, Subject, Subscription, SubscriptionLike, filter, take } from 'rxjs';\nimport { IDateTimePickerAnimationEvent } from '../date-time/date-time-picker-animation-event';\nimport { DialogPosition } from './dialog-config.class';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\n\nexport class OwlDialogRef<T> {\n\n private result: any;\n\n private _beforeClose$ = new Subject<any>();\n\n private _beforeOpen$ = 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 = signal<T | undefined>(undefined);\n\n /** Whether the user is allowed to close the dialog. */\n public disableClose = true;\n\n constructor(private overlayRef: OverlayRef,\n private container: OwlDialogContainerComponent,\n public readonly id: string,\n location?: Location) {\n this.disableClose = this.container.config.disableClose;\n\n this.container.animationStateChanged\n .pipe(\n filter(( event: IDateTimePickerAnimationEvent ) => event.phaseName === 'start' && event.toState === 'enter'),\n take(1)\n )\n .subscribe(() => {\n this._beforeOpen$.next(null);\n this._beforeOpen$.complete();\n });\n\n this.container.animationStateChanged\n .pipe(\n filter(( event: IDateTimePickerAnimationEvent ) => event.phaseName === 'done' && event.toState === 'enter'),\n take(1)\n )\n .subscribe(() => {\n this._afterOpen$.next(null);\n this._afterOpen$.complete();\n });\n\n this.container.animationStateChanged\n .pipe(\n filter((event: IDateTimePickerAnimationEvent) => event.phaseName === 'done' && event.toState === 'leave'),\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.set(undefined);\n });\n\n this.overlayRef.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 => 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?: DialogPosition): 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().width(width).height(height);\n this.overlayRef.updatePosition();\n return this;\n }\n\n public isAnimating(): Signal<boolean> {\n return this.container.isAnimating;\n }\n\n public beforeOpen(): Observable<any> {\n return this._beforeOpen$.asObservable();\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 * dialog-container.component\n */\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentRef, ElementRef, EmbeddedViewRef, EventEmitter, OnInit, signal, ViewChild, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\nimport {\n BasePortalOutlet,\n CdkPortalOutlet,\n ComponentPortal,\n TemplatePortal,\n} from '@angular/cdk/portal';\nimport { OwlDateTimeContainerComponent } from '../date-time/date-time-picker-container.component';\nimport { IDateTimePickerAnimationEvent } from '../date-time/date-time-picker-animation-event';\nimport { OwlDialogConfigInterface } from './dialog-config.class';\n\n@Component({\n selector: 'owl-dialog-container',\n templateUrl: './dialog-container.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n host: {\n '[class.owl-dialog-container]': 'owlDialogContainerClass',\n '[attr.tabindex]': 'owlDialogContainerTabIndex',\n '[attr.id]': 'owlDialogContainerId',\n '[attr.role]': 'owlDialogContainerRole',\n '[attr.aria-labelledby]': 'owlDialogContainerAriaLabelledby',\n '[attr.aria-describedby]': 'owlDialogContainerAriaDescribedby'\n },\n imports: [CdkPortalOutlet],\n})\nexport class OwlDialogContainerComponent extends BasePortalOutlet\n implements OnInit {\n private changeDetector = inject(ChangeDetectorRef);\n private elementRef = inject(ElementRef);\n private focusTrapFactory = inject(FocusTrapFactory);\n private document = inject(DOCUMENT, { optional: true })!;\n\n @ViewChild(CdkPortalOutlet, { static: true })\n portalOutlet: CdkPortalOutlet | null = null;\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<IDateTimePickerAnimationEvent>();\n\n public isAnimating = signal(false);\n\n private _config: OwlDialogConfigInterface;\n private _component: ComponentRef<unknown>;\n get config(): OwlDialogConfigInterface {\n return this._config;\n }\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 get owlDialogContainerClass(): boolean {\n return true;\n }\n\n get owlDialogContainerTabIndex(): number {\n return -1;\n }\n\n get owlDialogContainerId(): string {\n return this._config.id;\n }\n\n get owlDialogContainerRole(): string {\n return this._config.role || null;\n }\n\n get owlDialogContainerAriaLabelledby(): string {\n return this.ariaLabelledBy;\n }\n\n get owlDialogContainerAriaDescribedby(): string {\n return this._config.ariaDescribedBy || null;\n }\n\n public ngOnInit() {}\n\n /**\n * Attach a ComponentPortal as content to this dialog container.\n */\n public attachComponentPortal<T>(\n portal: ComponentPortal<T>,\n ): ComponentRef<T> {\n if (this.portalOutlet.hasAttached()) {\n throw Error(\n 'Attempting to attach dialog content after content is already attached',\n );\n }\n\n this.savePreviouslyFocusedElement();\n const component = this.portalOutlet.attachComponentPortal(portal);\n const pickerContainer = component.instance as OwlDateTimeContainerComponent<unknown>;\n pickerContainer.animationStateChanged.subscribe(state => this.onAnimationDone(state));\n this._component = component;\n return component;\n }\n\n public attachTemplatePortal<C>(\n portal: TemplatePortal<C>,\n ): EmbeddedViewRef<C> {\n throw new Error('Method not implemented.');\n }\n\n public setConfig(config: OwlDialogConfigInterface): void {\n this._config = config;\n\n if (config.event) {\n this.calculateZoomOrigin(event);\n }\n }\n\n public onAnimationStart(event: IDateTimePickerAnimationEvent): void {\n this.isAnimating.set(true);\n this.animationStateChanged.emit(event);\n }\n\n public onAnimationDone(event: IDateTimePickerAnimationEvent): void {\n if (event.toState === 'enter') {\n this.trapFocus();\n } else if (event.toState === 'leave') {\n this.restoreFocus();\n }\n\n this.animationStateChanged.emit(event);\n this.isAnimating.set(false);\n }\n\n public startExitAnimation() {\n this._component.destroy();\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\n .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(\n this.elementRef.nativeElement,\n );\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","/**\n * object.utils\n */\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","/**\n * index\n */\n\nexport * from './object.utils';\n","/**\n * dialog.service\n */\n\nimport { ComponentRef, Injectable, InjectionToken, Injector, TemplateRef, inject } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { OwlDialogConfig, OwlDialogConfigInterface } from './dialog-config.class';\nimport { OwlDialogRef } from './dialog-ref.class';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\nimport { extendObject } from '../utils';\nimport { defer, Observable, Subject } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport {\n Overlay,\n OverlayConfig,\n OverlayContainer,\n OverlayRef,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport {\n ComponentPortal,\n ComponentType,\n} from '@angular/cdk/portal';\n\nexport const OWL_DIALOG_DATA = new InjectionToken<any>('OwlDialogData');\n\n/**\n * Injection token that determines the scroll handling while the dialog is open.\n * */\nexport const OWL_DIALOG_SCROLL_STRATEGY = new InjectionToken<\n () => ScrollStrategy\n>('owl-dialog-scroll-strategy');\n\nexport function OWL_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(\n overlay: Overlay\n): () => ScrollStrategy {\n const fn = () => overlay.scrollStrategies.block();\n return fn;\n}\n\n/** @docs-private */\nexport const OWL_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n provide: OWL_DIALOG_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: OWL_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n\n/**\n * Injection token that can be used to specify default dialog options.\n * */\nexport const OWL_DIALOG_DEFAULT_OPTIONS = new InjectionToken<OwlDialogConfig>(\n 'owl-dialog-default-options'\n);\n\n@Injectable()\nexport class OwlDialogService {\n private overlay = inject(Overlay);\n private injector = inject(Injector);\n private location = inject(Location, { optional: true })!;\n private defaultOptions = inject<OwlDialogConfigInterface>(OWL_DIALOG_DEFAULT_OPTIONS, { optional: true })!;\n private parentDialog = inject(OwlDialogService, { optional: true, skipSelf: true })!;\n private overlayContainer = inject(OverlayContainer);\n\n private ariaHiddenElements = new Map<Element, string | null>();\n\n private _openDialogsAtThisLevel: OwlDialogRef<any>[] = [];\n private _beforeOpenAtThisLevel = new Subject<OwlDialogRef<any>>();\n private _afterOpenAtThisLevel = new Subject<OwlDialogRef<any>>();\n private _afterAllClosedAtThisLevel = new Subject<void>();\n\n /** Keeps track of the currently-open dialogs. */\n get openDialogs(): OwlDialogRef<any>[] {\n return this.parentDialog\n ? this.parentDialog.openDialogs\n : this._openDialogsAtThisLevel;\n }\n\n /** Stream that emits when a dialog has been opened. */\n get beforeOpen(): Subject<OwlDialogRef<any>> {\n return this.parentDialog\n ? this.parentDialog.beforeOpen\n : this._beforeOpenAtThisLevel;\n }\n\n /** Stream that emits when a dialog has been opened. */\n get afterOpen(): Subject<OwlDialogRef<any>> {\n return this.parentDialog\n ? this.parentDialog.afterOpen\n : this._afterOpenAtThisLevel;\n }\n\n get _afterAllClosed(): any {\n const parent = this.parentDialog;\n return parent\n ? parent._afterAllClosed\n : 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: Observable<{}> = defer(\n () =>\n this._openDialogsAtThisLevel.length\n ? this._afterAllClosed\n : this._afterAllClosed.pipe(startWith(undefined))\n );\n\n private readonly scrollStrategy: () => ScrollStrategy;\n\n constructor() {\n const location = this.location;\n const scrollStrategy = inject(OWL_DIALOG_SCROLL_STRATEGY);\n const parentDialog = this.parentDialog;\n\n this.scrollStrategy = scrollStrategy;\n if (!parentDialog && location) {\n location.subscribe(() => this.closeAll());\n }\n }\n\n public open<T>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: OwlDialogConfigInterface\n ): OwlDialogRef<any> {\n config = applyConfigDefaults(config, this.defaultOptions);\n\n if (config.id && this.getDialogById(config.id)) {\n throw Error(\n `Dialog with id \"${\n config.id\n }\" exists already. The dialog id must be unique.`\n );\n }\n\n const overlayRef = this.createOverlay(config);\n const dialogContainer = this.attachDialogContainer(overlayRef, config);\n const dialogRef = this.attachDialogContent<T>(\n componentOrTemplateRef,\n dialogContainer,\n overlayRef,\n config\n );\n\n if (!this.openDialogs.length) {\n this.hideNonDialogContentFromAssistiveTechnology();\n }\n\n this.openDialogs.push(dialogRef);\n dialogRef\n .afterClosed()\n .subscribe(() => this.removeOpenDialog(dialogRef));\n this.beforeOpen.next(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): OwlDialogRef<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: OwlDialogContainerComponent,\n overlayRef: OverlayRef,\n config: OwlDialogConfigInterface\n ) {\n const dialogRef = new OwlDialogRef<T>(\n overlayRef,\n dialogContainer,\n config.id,\n this.location\n );\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>(\n config,\n dialogRef,\n dialogContainer\n );\n const contentRef = dialogContainer.attachComponentPortal(\n new ComponentPortal(componentOrTemplateRef, undefined, injector)\n );\n dialogRef.componentInstance.set(contentRef.instance);\n }\n\n dialogRef\n .updateSize(config.width, config.height)\n .updatePosition(config.position);\n\n return dialogRef;\n }\n\n private createInjector<T>(\n config: OwlDialogConfigInterface,\n dialogRef: OwlDialogRef<T>,\n dialogContainer: OwlDialogContainerComponent\n ) {\n const userInjector =\n config?.viewContainerRef?.injector;\n const providers = [\n { provide: OwlDialogRef, useValue: dialogRef },\n { provide: OwlDialogContainerComponent, useValue: dialogContainer },\n { provide: OWL_DIALOG_DATA, useValue: config?.data },\n ];\n\n return Injector.create({\n providers,\n parent: userInjector || this.injector,\n });\n }\n\n private createOverlay(config: OwlDialogConfigInterface): OverlayRef {\n const overlayConfig = this.getOverlayConfig(config);\n return this.overlay.create(overlayConfig);\n }\n\n private attachDialogContainer(\n overlayRef: OverlayRef,\n config: OwlDialogConfigInterface\n ): OwlDialogContainerComponent {\n const containerPortal = new ComponentPortal(\n OwlDialogContainerComponent,\n config.viewContainerRef\n );\n const containerRef: ComponentRef<\n OwlDialogContainerComponent\n > = overlayRef.attach(containerPortal);\n containerRef.instance.setConfig(config);\n\n return containerRef.instance;\n }\n\n private getOverlayConfig(dialogConfig: OwlDialogConfigInterface): OverlayConfig {\n const state = new OverlayConfig({\n positionStrategy: this.overlay.position().global(),\n scrollStrategy:\n 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: OwlDialogRef<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(\n sibling,\n sibling.getAttribute('aria-hidden')\n );\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(\n config?: OwlDialogConfigInterface,\n defaultOptions?: OwlDialogConfigInterface\n): OwlDialogConfig {\n return extendObject(new OwlDialogConfig(), config, defaultOptions);\n}\n","/**\n * date-time-adapter.class\n */\nimport { Observable, Subject } from 'rxjs';\nimport { inject, InjectionToken, LOCALE_ID } from '@angular/core';\n\n/** InjectionToken for date time picker that can be used to override default locale code. */\nexport const OWL_DATE_TIME_LOCALE = new InjectionToken<string>(\n 'OWL_DATE_TIME_LOCALE',\n {\n providedIn: 'root',\n factory: OWL_DATE_TIME_LOCALE_FACTORY\n }\n);\n\n/** @docs-private */\nexport function OWL_DATE_TIME_LOCALE_FACTORY(): string {\n return inject(LOCALE_ID);\n}\n\n/** Provider for OWL_DATE_TIME_LOCALE injection token. */\nexport const OWL_DATE_TIME_LOCALE_PROVIDER = {\n provide: OWL_DATE_TIME_LOCALE,\n useExisting: LOCALE_ID\n};\n\nexport abstract class DateTimeAdapter<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<string>();\n get localeChanges(): Observable<string> {\n return this._localeChanges;\n }\n\n\tpublic firstMonthOfTheYear: number = 0;\n\tpublic firstDayOfTheWeek: number = 0;\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): number;\n\n /**\n * Get the minutes of the given date\n */\n abstract getMinutes(date: T): number;\n\n /**\n * Get the seconds of the given date\n */\n abstract getSeconds(date: T): 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 * Checks whether the text matches the parse format.\n * Used by the strictFormat input, accepts any text unless an adapter overrides it.\n */\n isValidFormat(value: string, parseFormat: any): boolean {\n return true;\n }\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(\n year: number,\n month: number,\n date: number,\n hours: number,\n minutes: number,\n seconds: number\n ): 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 (\n value == null ||\n (this.isDateInstance(value) && this.isValid(value))\n ) {\n return value;\n }\n return this.invalid();\n }\n\n /**\n * Sets the locale used for all dates.\n */\n setLocale(locale: string) {\n this.locale = locale;\n this._localeChanges.next(locale);\n }\n\n /**\n * Get the locale used for all dates.\n * */\n getLocale() {\n return this.locale;\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","/**\n * date-time-format.class\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport interface OwlDateTimeFormats {\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 OWL_DATE_TIME_FORMATS = new InjectionToken<OwlDateTimeFormats>('OWL_DATE_TIME_FORMATS');\n","import { InjectionToken, Provider } from '@angular/core';\r\n\r\nexport function defaultOptionsFactory() {\r\n return DefaultOptions.create();\r\n\r\n}\r\nexport function multiYearOptionsFactory(options: Options) {\r\n return options.multiYear;\r\n }\r\n\r\nexport interface Options {\r\n multiYear: {\r\n yearsPerRow: number,\r\n yearRows: number\r\n };\r\n /** Default of the lazyValidation input of owl-date-time */\r\n lazyValidation: boolean;\r\n /** Default of the strictFormat input of input[owlDateTime] */\r\n strictFormat: boolean;\r\n /** Default of the wrapTimer input of owl-date-time and owl-date-time-inline */\r\n wrapTimer: boolean;\r\n /** Default of the timerInputDebounce input of owl-date-time and owl-date-time-inline */\r\n timerInputDebounce: number;\r\n}\r\nexport class DefaultOptions {\r\n public static create(): Options {\r\n // Always return new instance\r\n return {\r\n multiYear: {\r\n yearRows: 7,\r\n yearsPerRow: 3\r\n },\r\n lazyValidation: false,\r\n strictFormat: false,\r\n wrapTimer: false,\r\n timerInputDebounce: 750\r\n };\r\n }\r\n}\r\n\r\nexport abstract class OptionsTokens {\r\n public static all = new InjectionToken<Options>('All options token');\r\n public static multiYear = new InjectionToken<Options['multiYear']>('Grid view options token');\r\n}\r\n\r\nexport const optionsProviders: Provider[] = [\r\n {\r\n provide: OptionsTokens.all,\r\n useFactory: defaultOptionsFactory,\r\n },\r\n {\r\n provide: OptionsTokens.multiYear,\r\n useFactory: multiYearOptionsFactory,\r\n deps: [OptionsTokens.all],\r\n },\r\n];\r\n","/**\n * date-time.class\n */\nimport {EventEmitter, Inject, Input, Optional, Directive, input, OutputEmitterRef} from '@angular/core';\nimport {\n coerceBooleanProperty,\n coerceNumberProperty\n} from '@angular/cdk/coercion';\nimport {DateTimeAdapter} from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { inject } from '@angular/core';\nimport { OptionsTokens } from './options-provider';\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\nexport enum DateView {\n MONTH = 'month',\n YEAR = 'year',\n MULTI_YEARS = 'multi-years'\n}\n\nexport type DateViewType = DateView.MONTH | DateView.YEAR | DateView.MULTI_YEARS;\n\n@Directive()\nexport abstract class OwlDateTime<T> {\n /** Global defaults of the inputs, see provideOwlDateTimeOptions */\n protected readonly options = inject(OptionsTokens.all, { optional: true });\n\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 readonly startView = input<DateViewType>(DateView.MONTH);\n\n /**\n * Whether to show calendar weeks in the calendar\n * */\n readonly showCalendarWeeks = input(false);\n\n /**\n * Whether to should only the year and multi-year views.\n */\n readonly yearOnly = input(false);\n\n /**\n * Whether to should only the multi-year view.\n */\n readonly multiyearOnly = input(false);\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 * Whether the hour, minute and second boxes go from the max to the min and back (59 → 0)\n * instead of carrying over to the next hour or day.\n * Defaults to the wrapTimer global option (false).\n */\n private _wrapTimer: boolean | undefined;\n @Input()\n get wrapTimer(): boolean {\n return this._wrapTimer ?? this.options?.wrapTimer ?? false;\n }\n\n set wrapTimer(val: boolean) {\n this._wrapTimer = coerceBooleanProperty(val);\n }\n\n /**\n * Milliseconds the hour, minute and second boxes wait after typing before applying the value,\n * 0 applies it at once. Defaults to the timerInputDebounce global option (750).\n */\n private _timerInputDebounce: number | null = null;\n @Input()\n get timerInputDebounce(): number {\n return this._timerInputDebounce ?? this.options?.timerInputDebounce ?? 750;\n }\n\n set timerInputDebounce(val: number) {\n this._timerInputDebounce = coerceNumberProperty(val, null);\n }\n\n /**\n * Set the first day of week\n */\n private _firstDayOfWeek: number;\n @Input()\n get firstDayOfWeek() {\n return this._firstDayOfWeek;\n }\n\n set firstDayOfWeek(value: number) {\n value = coerceNumberProperty(value);\n if (value > 6 || value < 0) {\n this._firstDayOfWeek = undefined;\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 readonly _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 endAt(): 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 select(date: T | T[]): void;\n\n abstract yearSelected: OutputEmitterRef<T>;\n\n abstract monthSelected: OutputEmitterRef<T>;\n\n abstract dateSelected: OutputEmitterRef<T>;\n\n abstract selectYear(normalizedYear: T): void;\n\n abstract selectMonth(normalizedMonth: T): void;\n\n abstract selectDate(normalizedDate: T): void;\n\n get formatString(): any {\n if (this.pickerType === 'both') {\n // If showSecondsTimer is enabled, add seconds to the format\n if (this.showSecondsTimer && typeof this.dateTimeFormats.fullPickerInput === 'object') {\n return { ...this.dateTimeFormats.fullPickerInput, second: 'numeric' };\n }\n return this.dateTimeFormats.fullPickerInput;\n } else if (this.pickerType === 'calendar') {\n return this.dateTimeFormats.datePickerInput;\n } else {\n // pickerType === 'timer'\n // If showSecondsTimer is enabled, add seconds to the format\n if (this.showSecondsTimer && typeof this.dateTimeFormats.timePickerInput === 'object') {\n return { ...this.dateTimeFormats.timePickerInput, second: 'numeric' };\n }\n return this.dateTimeFormats.timePickerInput;\n }\n }\n\n /**\n * Date Time Checker to check if the give dateTime is selectable\n */\n public dateTimeChecker = (dateTime: T) => {\n return (\n !!dateTime &&\n (!this.dateTimeFilter || this.dateTimeFilter(dateTime)) &&\n (!this.minDateTime ||\n this.dateTimeAdapter.compare(dateTime, this.minDateTime) >=\n 0) &&\n (!this.maxDateTime ||\n this.dateTimeAdapter.compare(dateTime, this.maxDateTime) <= 0)\n );\n };\n\n get disabled(): boolean {\n return false;\n }\n\n protected constructor(\n @Optional() protected dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n protected dateTimeFormats: OwlDateTimeFormats\n ) {\n if (!this.dateTimeAdapter) {\n throw Error(\n `OwlDateTimePicker: No provider found for DateTimeAdapter. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n if (!this.dateTimeFormats) {\n throw Error(\n `OwlDateTimePicker: No provider found for OWL_DATE_TIME_FORMATS. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n this._id = `owl-dt-picker-${nextUniqueId++}`;\n }\n\n protected getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n}\n","/**\n * calendar-body.component\n */\n\nimport { ChangeDetectionStrategy, Component, ElementRef, OnInit, afterNextRender, inject, input, output, Injector } from '@angular/core';\nimport { SelectMode } from './date-time.class';\nimport { NgClass } from '@angular/common';\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: '[owl-date-time-calendar-body]',\n exportAs: 'owlDateTimeCalendarBody',\n templateUrl: './calendar-body.component.html',\n styleUrls: ['./calendar-body.component.scss'],\n host: {\n '[class.owl-dt-calendar-body]': 'owlDTCalendarBodyClass'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass]\n})\nexport class OwlCalendarBodyComponent implements OnInit {\n private elmRef = inject(ElementRef);\n private injector = inject(Injector);\n\n /**\n * The cell number of the active cell in the table.\n */\n readonly activeCell = input(0);\n\n /**\n * The cells to display in the table.\n * */\n readonly rows = input<CalendarCell[][]>(undefined);\n\n /**\n * The number of columns in the table.\n * */\n readonly numCols = input(7);\n\n /**\n * The ratio (width / height) to use for the cells in the table.\n */\n readonly cellRatio = input(1);\n\n /**\n * The value in the table that corresponds to today.\n * */\n readonly todayValue = input<number>(undefined);\n\n /**\n * The value in the table that is currently selected.\n * */\n readonly selectedValues = input<number[]>(undefined);\n\n /**\n * Current picker select mode\n */\n readonly selectMode = input<SelectMode>(undefined);\n\n /**\n * Emit when a calendar cell is selected\n * */\n public readonly select = output<CalendarCell>();\n\n get owlDTCalendarBodyClass(): boolean {\n return true;\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode() === 'single';\n }\n\n get isInRangeMode(): boolean {\n const selectMode = this.selectMode();\n return (\n selectMode === 'range' ||\n selectMode === 'rangeFrom' ||\n selectMode === 'rangeTo'\n );\n }\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 const selectedValues = this.selectedValues();\n if (!selectedValues || selectedValues.length === 0) {\n return false;\n }\n\n if (this.isInSingleMode) {\n return value === selectedValues[0];\n }\n\n if (this.isInRangeMode) {\n const fromValue = selectedValues[0];\n const toValue = selectedValues[1];\n\n return value === fromValue || value === toValue;\n }\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 }\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 }\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 }\n\n /**\n * Focus to a active cell\n * */\n public focusActiveCell(): void {\n afterNextRender(() => {\n const activeCell = this.elmRef.nativeElement\n .querySelector('.owl-dt-calendar-cell-active');\n if (activeCell) {\n activeCell.focus();\n }\n }, { injector: this.injector });\n }\n}\n","@for (row of rows(); track $index; let rowIndex = $index) {\n <tr role=\"row\">\n @for (item of row; track $index; let colIndex = $index) {\n <td\n class=\"owl-dt-calendar-cell {{ item.cellClass }}\"\n [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [class.owl-dt-calendar-cell-active]=\"\n isActiveCell(rowIndex, colIndex)\n \"\n [class.owl-dt-calendar-cell-disabled]=\"!item.enabled\"\n [class.owl-dt-calendar-cell-in-range]=\"isInRange(item.value)\"\n [class.owl-dt-calendar-cell-range-from]=\"\n isRangeFrom(item.value)\n \"\n [class.owl-dt-calendar-cell-range-to]=\"isRangeTo(item.value)\"\n [attr.aria-label]=\"item.ariaLabel\"\n [attr.aria-disabled]=\"!item.enabled || null\"\n [attr.aria-current]=\"item.value === todayValue() ? 'date' : null\"\n [attr.aria-selected]=\"isSelected(item.value)\"\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=\"owl-dt-calendar-cell-content\"\n [ngClass]=\"{\n 'owl-dt-calendar-cell-out': item.out,\n 'owl-dt-calendar-cell-today': item.value === todayValue(),\n 'owl-dt-calendar-cell-selected': isSelected(item.value),\n }\"\n >\n {{ item.displayValue }}\n </span>\n </td>\n }\n </tr>\n}\n","/**\n * calendar-month-view.component\n */\n\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, inject, input, output, viewChild } from '@angular/core';\nimport {\n CalendarCell,\n OwlCalendarBodyComponent\n} from './calendar-body.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from './date-time.class';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { getLocaleFirstDayOfWeek, NgClass } from '@angular/common';\n\nconst DAYS_PER_WEEK = 7;\nconst WEEKS_PER_VIEW = 6;\n\n@Component({\n selector: 'owl-date-time-month-view',\n exportAs: 'owlYearView',\n templateUrl: './calendar-month-view.component.html',\n styleUrls: ['./calendar-month-view.component.scss'],\n host: {\n '[class.owl-dt-calendar-view]': 'owlDTCalendarView'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, OwlCalendarBodyComponent]\n})\nexport class OwlMonthViewComponent<T>\n implements OnInit, AfterContentInit, OnDestroy {\n private cdRef = inject(ChangeDetectorRef);\n private dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true })!;\n private dateTimeFormats = inject<OwlDateTimeFormats>(OWL_DATE_TIME_FORMATS, { optional: true })!;\n\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n * */\n readonly hideOtherMonths = input(false);\n\n /**\n * Whether to show calendar weeks in the calendar\n * */\n readonly showCalendarWeeks = input(false);\n\n private isDefaultFirstDayOfWeek = true;\n\n /**\n * Define the first day of a week\n * Sunday: 0 - Saturday: 6\n * */\n private _firstDayOfWeek: number;\n\n @Input()\n get firstDayOfWeek(): number {\n return this._firstDayOfWeek;\n }\n\n set firstDayOfWeek(val: number) {\n if (val >= 0 && val <= 6 && val !== this._firstDayOfWeek) {\n this._firstDayOfWeek = val;\n this.isDefaultFirstDayOfWeek = false;\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;\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(oldSelected, 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 = values.map(v => {\n v = 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 this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n const oldMoment = this._pickerMoment;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment =\n 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 (\n !this.isSameMonth(oldMoment, this._pickerMoment) &&\n this.initiated\n ) {\n this.generateCalendar();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n * */\n private _dateFilter: (date: T) => boolean;\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;\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;\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 (\n this.dateTimeAdapter.getDate(this.pickerMoment) +\n this.firstRowOffset -\n 1\n );\n }\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom' ||\n this.selectMode === 'rangeTo'\n );\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 | null;\n\n /**\n * Week day numbers\n * */\n public weekNumbers: 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 readonly selectedChange = output<T | null>();\n\n /**\n * Callback to invoke when any date is selected.\n * */\n readonly userSelection = output<void>();\n\n /** Emits when any date is activated. */\n readonly pickerMomentChange = output<T>();\n\n /** The body of calendar table */\n readonly calendarBodyElm = viewChild(OwlCalendarBodyComponent);\n\n get owlDTCalendarView(): boolean {\n return true;\n }\n\n public ngOnInit() {\n this.updateFirstDayOfWeek(this.dateTimeAdapter.getLocale());\n this.generateWeekDays();\n\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(\n locale => {\n this.updateFirstDayOfWeek(locale);\n this.generateWeekDays();\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\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(\n this.firstDateOfMonth,\n daysDiff\n );\n\n // TODO: The 'emit' function requires a mandatory void argument\n this.userSelection.emit();\n this.selectedChange.emit(selected);\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(\n this.pickerMoment,\n -1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 day\n case RIGHT_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(\n this.pickerMoment,\n 1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 week\n case UP_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(\n this.pickerMoment,\n -7\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 week\n case DOWN_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(\n this.pickerMoment,\n 7\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to first day of current month\n case HOME:\n moment = this.dateTimeAdapter.addCalendarDays(\n this.pickerMoment,\n 1 - this.dateTimeAdapter.getDate(this.pickerMoment)\n );\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) -\n 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(\n this.pickerMoment,\n -1\n )\n : this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n -1\n );\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(\n this.pickerMoment,\n 1\n )\n : this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n 1\n );\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(\n this.dateTimeAdapter.getDate(this.pickerMoment)\n );\n // Selecting may auto-close (and destroy) the picker. Bail out\n // before focusActiveCell() so we don't schedule render work on\n // a destroyed view (NG0911). The active cell keeps its focus.\n event.preventDefault();\n return;\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\n .slice(firstDayOfWeek-this.dateTimeAdapter.firstDayOfTheWeek)\n .concat(weekdays.slice(0, firstDayOfWeek-this.dateTimeAdapter.firstDayOfTheWeek));\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 = null;\n this.weekNumbers = [];\n\n // the first weekday of the month\n const startWeekdayOfMonth = this.dateTimeAdapter.getDay(\n this.firstDateOfMonth\n );\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 =\n 0 -\n ((startWeekdayOfMonth + (DAYS_PER_WEEK - firstDayOfWeek)) %\n 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 = [];\n for (let j = 0; j < DAYS_PER_WEEK; j++) {\n const date = this.dateTimeAdapter.addCalendarDays(\n this.firstDateOfMonth,\n daysDiff\n );\n const dateCell = this.createDateCell(date, daysDiff);\n // check if the date is today\n if (\n this.dateTimeAdapter.isSameDay(\n this.dateTimeAdapter.now(),\n date\n )\n ) {\n this.todayDate = daysDiff + 1;\n }\n\n week.push(dateCell);\n daysDiff += 1;\n }\n this._days.push(week);\n if (this.showCalendarWeeks()) {\n const weekNumber = this.getISOWeek(new Date(week[0].ariaLabel));\n this.weekNumbers.push(weekNumber);\n }\n }\n this.setSelectedDates();\n }\n\n public getISOWeek(d: Date): number {\n const clonedDate = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));\n // Make Sunday's day number 7\n clonedDate.setUTCDate(clonedDate.getUTCDate() + 4 - (clonedDate.getUTCDay()||7));\n // Get first day of year\n const yearStart = new Date(Date.UTC(clonedDate.getUTCFullYear(),0,1));\n // Calculate full weeks to nearest Thursday\n const weekNo = Math.ceil(( ( (+clonedDate - +yearStart) / 86400000) + 1)/7);\n return weekNo;\n }\n\n private updateFirstDayOfWeek(locale: string): void {\n if (this.isDefaultFirstDayOfWeek) {\n try {\n this._firstDayOfWeek = getLocaleFirstDayOfWeek(locale);\n } catch {\n this._firstDayOfWeek = 0;\n }\n }\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(\n this.pickerMoment\n );\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(\n date,\n this.dateTimeFormats.dateA11yLabel\n );\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 = 'owl-dt-day-' + this.dateTimeAdapter.getDay(date);\n\n return new CalendarCell(\n dayValue,\n dateName,\n ariaLabel,\n enabled,\n out,\n cellClass\n );\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 ||\n this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate ||\n 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) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : 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) ===\n this.dateTimeAdapter.getYear(dateRight) &&\n this.dateTimeAdapter.getMonth(dateLeft) ===\n 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(\n this.selected,\n this.firstDateOfMonth\n );\n this.selectedDates[0] = dayDiff + 1;\n return;\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this.selectedDates = this.selecteds.map(selected => {\n if (this.dateTimeAdapter.isValid(selected)) {\n const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(\n selected,\n this.firstDateOfMonth\n );\n return dayDiff + 1;\n } else {\n return null;\n }\n });\n }\n }\n\n private focusActiveCell() {\n this.calendarBodyElm().focusActiveCell();\n }\n}\n","@if (showCalendarWeeks()) {\n <ul class=\"week-number\">\n @for (week of weekNumbers; track week) {\n <li>\n <span>{{ week }}</span>\n </li>\n }\n </ul>\n}\n<table\n class=\"owl-dt-calendar-table owl-dt-calendar-month-table\"\n [ngClass]=\"{ 'owl-calendar-weeks': showCalendarWeeks() }\"\n [class.owl-dt-calendar-only-current-month]=\"hideOtherMonths()\"\n>\n <thead class=\"owl-dt-calendar-header\">\n <tr class=\"owl-dt-weekdays\">\n @for (weekday of weekdays; track weekday.short) {\n <th\n [attr.aria-label]=\"weekday.long\"\n class=\"owl-dt-weekday\"\n scope=\"col\"\n >\n <span>{{ weekday.short }}</span>\n </th>\n }\n </tr>\n <tr>\n <th\n class=\"owl-dt-calendar-table-divider\"\n [ngClass]=\"{ 'owl-calendar-weeks': showCalendarWeeks() }\"\n aria-hidden=\"true\"\n colspan=\"7\"\n ></th>\n </tr>\n </thead>\n <tbody\n owl-date-time-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","/**\n * calendar-year-view.component\n */\n\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, inject, output, viewChild } from '@angular/core';\nimport {\n CalendarCell,\n OwlCalendarBodyComponent\n} from './calendar-body.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from './date-time.class';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\n\nconst MONTHS_PER_YEAR = 12;\nconst MONTHS_PER_ROW = 3;\n\n@Component({\n selector: 'owl-date-time-year-view',\n exportAs: 'owlMonthView',\n templateUrl: './calendar-year-view.component.html',\n styleUrls: ['./calendar-year-view.component.scss'],\n host: {\n '[class.owl-dt-calendar-view]': 'owlDTCalendarView'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [OwlCalendarBodyComponent]\n})\nexport class OwlYearViewComponent<T>\n implements OnInit, AfterContentInit, OnDestroy {\n private cdRef = inject(ChangeDetectorRef);\n private dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true })!;\n private dateTimeFormats = inject<OwlDateTimeFormats>(OWL_DATE_TIME_FORMATS, { optional: true })!;\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.generateMonthList();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | 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(this.getValidDate(value));\n }\n\n this.setSelectedMonths();\n }\n\n private _pickerMoment: T | null;\n @Input()\n get pickerMoment() {\n return this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n const oldMoment = this._pickerMoment;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment =\n this.getValidDate(value) || this.dateTimeAdapter.now();\n\n if (\n !this.hasSameYear(oldMoment, this._pickerMoment) &&\n this.initiated\n ) {\n this.generateMonthList();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n * */\n private _dateFilter: (date: T) => boolean;\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;\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;\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 this.dateTimeAdapter.getMonth(this._pickerMoment);\n }\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom' ||\n this.selectMode === 'rangeTo'\n );\n }\n\n private localeSub: Subscription = Subscription.EMPTY;\n\n private initiated = false;\n\n public todayMonth: number | null;\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 readonly change = output<T>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n * */\n readonly monthSelected = output<T>();\n\n /** Emits when any date is activated. */\n readonly pickerMomentChange = output<T>();\n\n /** Emits when use keyboard enter to select a calendar cell */\n readonly keyboardEnter = output<void>();\n\n /** The body of calendar table */\n readonly calendarBodyElm = viewChild(OwlCalendarBodyComponent);\n\n get owlDTCalendarView(): boolean {\n return true;\n }\n\n constructor() {\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(\n this.dateTimeAdapter.getYear(this.pickerMoment),\n month,\n 1\n );\n\n this.monthSelected.emit(firstDateOfMonth);\n\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(\n firstDateOfMonth\n );\n const result = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.pickerMoment),\n month,\n Math.min(\n daysInMonth,\n this.dateTimeAdapter.getDate(this.pickerMoment)\n ),\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(\n this.pickerMoment,\n -1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 month\n case RIGHT_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n 1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 3 months\n case UP_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n -3\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 3 months\n case DOWN_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n 3\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to first month of current year\n case HOME:\n moment = this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n -this.dateTimeAdapter.getMonth(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to last month of current year\n case END:\n moment = this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n 11 - this.dateTimeAdapter.getMonth(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 year (or 10 year)\n case PAGE_UP:\n moment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n event.altKey ? -10 : -1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 year (or 10 year)\n case PAGE_DOWN:\n moment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n event.altKey ? 10 : 1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // Select current month\n case ENTER:\n this.selectMonth(\n this.dateTimeAdapter.getMonth(this.pickerMoment)\n );\n this.keyboardEnter.emit(undefined);\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(\n this.dateTimeAdapter.now()\n );\n\n this._months = [];\n for (let i = 0; i < MONTHS_PER_YEAR / MONTHS_PER_ROW; i++) {\n const row = [];\n\n for (let j = 0; j < MONTHS_PER_ROW; j++) {\n const month = j + i * MONTHS_PER_ROW + this.dateTimeAdapter.firstMonthOfTheYear;\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(\n this.dateTimeAdapter.getYear(this.pickerMoment),\n month,\n 1\n );\n const ariaLabel = this.dateTimeAdapter.format(\n startDateOfMonth,\n this.dateTimeFormats.monthYearA11yLabel\n );\n const cellClass = 'owl-dt-month-' + month;\n return new CalendarCell(\n month,\n this.monthNames[month-this.dateTimeAdapter.firstMonthOfTheYear],\n ariaLabel,\n this.isMonthEnabled(month),\n false,\n cellClass\n );\n }\n\n /**\n * Check if the given month is enable\n */\n private isMonthEnabled(month: number): boolean {\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.pickerMoment),\n month,\n 1\n );\n\n // If any date in the month is selectable,\n // we count the month as enable\n for (\n let date = firstDateOfMonth;\n this.dateTimeAdapter.getMonth(date) === month;\n date = this.dateTimeAdapter.addCalendarDays(date, 1)\n ) {\n if (\n !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate ||\n this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate ||\n 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 {\n if (this.getValidDate(date) && this.getValidDate(this._pickerMoment)) {\n const result = this.dateTimeAdapter.compareYear(\n date,\n this._pickerMoment\n );\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(date);\n }\n } else {\n return null;\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] = this.getMonthInCurrentYear(this.selected);\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this.selectedMonths[0] = this.getMonthInCurrentYear(\n this.selecteds[0]\n );\n this.selectedMonths[1] = this.getMonthInCurrentYear(\n this.selecteds[1]\n );\n }\n }\n\n /**\n * Check the given dates are in the same year\n */\n private hasSameYear(dateLeft: T, dateRight: T) {\n return !!(\n dateLeft &&\n dateRight &&\n this.dateTimeAdapter.getYear(dateLeft) ===\n this.dateTimeAdapter.getYear(dateRight)\n );\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n\n private focusActiveCell() {\n this.calendarBodyElm().focusActiveCell();\n }\n}\n","<table class=\"owl-dt-calendar-table owl-dt-calendar-year-table\">\n <thead class=\"owl-dt-calendar-header\">\n <tr>\n <th class=\"owl-dt-calendar-table-divider\" aria-hidden=\"true\" colspan=\"3\"></th>\n </tr>\n </thead>\n <tbody owl-date-time-calendar-body role=\"grid\"\n [rows]=\"months\" [numCols]=\"3\" [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","/**\n * calendar-multi-year-view.component\n */\n\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, inject, output, viewChild } from '@angular/core';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { CalendarCell, OwlCalendarBodyComponent } from './calendar-body.component';\nimport { SelectMode } from './date-time.class';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OptionsTokens, Options } from './options-provider';\n\n@Component({\n selector: 'owl-date-time-multi-year-view',\n templateUrl: './calendar-multi-year-view.component.html',\n styleUrls: ['./calendar-multi-year-view.component.scss'],\n host: {\n '[class.owl-dt-calendar-view]': 'owlDTCalendarView',\n '[class.owl-dt-calendar-multi-year-view]': 'owlDTCalendarMultiYearView'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [OwlCalendarBodyComponent],\n})\n\nexport class OwlMultiYearViewComponent<T> implements OnInit, AfterContentInit {\n private cdRef = inject(ChangeDetectorRef);\n private pickerIntl = inject(OwlDateTimeIntl);\n private dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true })!;\n private options = inject(OptionsTokens.multiYear);\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.setSelectedYears();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | 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(oldSelected, 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 = values.map(( v ) => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n this.setSelectedYears();\n }\n\n private _pickerMoment: T | null;\n @Input()\n get pickerMoment() {\n return this._pickerMoment;\n }\n\n set pickerMoment( value: T ) {\n const oldMoment = this._pickerMoment;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n if (oldMoment && this._pickerMoment &&\n !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;\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;\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;\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 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'\n || this.selectMode === 'rangeTo';\n }\n\n get activeCell(): number {\n if (this._pickerMoment) {\n return this.dateTimeAdapter.getYear(this._pickerMoment) % (this.options.yearsPerRow * this.options.yearRows);\n }\n }\n\n get tableHeader(): string {\n if (this._years && this._years.length > 0) {\n return `${this._years[0][0].displayValue} - ${this._years[this.options.yearRows - 1][this.options.yearsPerRow - 1].displayValue}`;\n }\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 readonly change = output<T>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n * */\n readonly yearSelected = output<T>();\n\n /** Emits when any date is activated. */\n readonly pickerMomentChange = output<T>();\n\n /** Emits when use keyboard enter to select a calendar cell */\n readonly keyboardEnter = output<void>();\n\n /** The body of calendar table */\n readonly calendarBodyElm = viewChild(OwlCalendarBodyComponent);\n\n get owlDTCalendarView(): boolean {\n return true;\n }\n\n get owlDTCalendarMultiYearView(): boolean {\n return true;\n }\n\n public ngOnInit() {\n }\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, this.dateTimeAdapter.firstMonthOfTheYear, 1));\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\n year,\n this.dateTimeAdapter.getMonth(this.pickerMoment),\n 1\n );\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 * this.options.yearsPerRow * this.options.yearRows);\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, this.options.yearsPerRow * this.options.yearRows);\n this.generateYearList();\n event.preventDefault();\n }\n\n public generateYearList(): void {\n this._years = [];\n\n const pickerMomentYear = this.dateTimeAdapter.getYear(this._pickerMoment);\n const offset = pickerMomentYear % (this.options.yearsPerRow * this.options.yearRows);\n\n for (let i = 0; i < this.options.yearRows; i++) {\n const row = [];\n\n for (let j = 0; j < this.options.yearsPerRow; j++) {\n const year = pickerMomentYear - offset + (j + i * this.options.yearsPerRow);\n const yearCell = this.createYearCell(year);\n row.push(yearCell);\n }\n\n this._years.push(row);\n }\n\n return;\n\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(this._pickerMoment, this.minDate);\n }\n\n /** Whether the next period button is enabled. */\n public nextEnabled(): boolean {\n return !this.maxDate || !this.isSameYearList(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(this._pickerMoment, -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 year\n case RIGHT_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 3 years\n case UP_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -1 * this.options.yearsPerRow);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 3 years\n case DOWN_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, this.options.yearsPerRow);\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(this._pickerMoment,\n -this.dateTimeAdapter.getYear(this._pickerMoment) % (this.options.yearsPerRow * this.options.yearRows));\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(this._pickerMoment,\n (this.options.yearsPerRow * this.options.yearRows) - this.dateTimeAdapter.getYear(this._pickerMoment) % (this.options.yearsPerRow * this.options.yearRows) - 1);\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(this.pickerMoment, event.altKey ? -10 * (this.options.yearsPerRow * this.options.yearRows) : -1 * (this.options.yearsPerRow * this.options.yearRows));\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(this.pickerMoment, event.altKey ? 10 * (this.options.yearsPerRow * this.options.yearRows) : (this.options.yearsPerRow * this.options.yearRows));\n this.pickerMomentChange.emit(moment);\n break;\n\n case ENTER:\n this.selectYear(this.dateTimeAdapter.getYear(this._pickerMoment));\n this.keyboardEnter.emit(undefined);\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, this.dateTimeAdapter.firstMonthOfTheYear, 1);\n const ariaLabel = this.dateTimeAdapter.getYearName(startDateOfYear);\n const cellClass = 'owl-dt-year-' + year;\n return new CalendarCell(year, year.toString(), ariaLabel, this.isYearEnabled(year), false, cellClass);\n }\n\n private setSelectedYears(): void {\n\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 = 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 (year === undefined || year === null ||\n (this.maxDate && year > this.dateTimeAdapter.getYear(this.maxDate)) ||\n (this.minDate && year < this.dateTimeAdapter.getYear(this.minDate))) {\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, this.dateTimeAdapter.firstMonthOfTheYear, 1);\n\n // If any date in the year is enabled count the year as enabled.\n for (let date = firstOfYear; this.dateTimeAdapter.getYear(date) === year;\n date = this.dateTimeAdapter.addCalendarDays(date, 1)) {\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 Math.floor(this.dateTimeAdapter.getYear(date1) / (this.options.yearsPerRow * this.options.yearRows)) ===\n Math.floor(this.dateTimeAdapter.getYear(date2) / (this.options.yearsPerRow * this.options.yearRows));\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 class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n [disabled]=\"!previousEnabled()\" [attr.aria-label]=\"prevButtonLabel\"\n type=\"button\" tabindex=\"0\" (click)=\"prevYearList($event)\">\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 250.738 250.738\"\n style=\"enable-background:new 0 0 250.738 250.738;\" xml:space=\"preserve\"\n width=\"100%\" height=\"100%\">\n <path style=\"fill-rule: evenodd; clip-rule: evenodd;\" 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 </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n<table class=\"owl-dt-calendar-table owl-dt-calendar-multi-year-table\">\n <thead class=\"owl-dt-calendar-header\">\n <tr>\n <th colspan=\"3\">{{tableHeader}}</th>\n </tr>\n </thead>\n <tbody owl-date-time-calendar-body role=\"grid\"\n [rows]=\"years\" [numCols]=\"3\" [cellRatio]=\"3 / 7\"\n [activeCell]=\"activeCell\"\n [todayValue]=\"todayYear\"\n [selectedValues]=\"selectedYears\"\n [selectMode]=\"selectMode\"\n (keydown)=\"handleCalendarKeydown($event)\"\n (select)=\"selectCalendarCell($event)\"></tbody>\n</table>\n<button class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n [disabled]=\"!nextEnabled()\" [attr.aria-label]=\"nextButtonLabel\"\n type=\"button\" tabindex=\"0\" (click)=\"nextYearList($event)\">\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\n <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 250.738 250.738\" style=\"enable-background:new 0 0 250.738 250.738;\" xml:space=\"preserve\">\n <path style=\"fill-rule:evenodd;clip-rule:evenodd;\" 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 </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n","/**\n * calendar.component\n */\n\nimport { AfterContentInit, AfterViewChecked, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnDestroy, OnInit, afterNextRender, inject, input, output, Injector } from '@angular/core';\nimport {OwlDateTimeIntl} from './date-time-picker-intl.service';\nimport {DateTimeAdapter} from './adapter/date-time-adapter.class';\nimport {OWL_DATE_TIME_FORMATS, OwlDateTimeFormats} from './adapter/date-time-format.class';\nimport {DateView, DateViewType, SelectMode} from './date-time.class';\nimport {Subscription} from 'rxjs';\nimport { CdkMonitorFocus } from '@angular/cdk/a11y';\nimport { OwlMonthViewComponent } from './calendar-month-view.component';\nimport { OwlYearViewComponent } from './calendar-year-view.component';\nimport { OwlMultiYearViewComponent } from './calendar-multi-year-view.component';\n\n@Component({\n selector: 'owl-date-time-calendar',\n exportAs: 'owlDateTimeCalendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n host: {\n '[class.owl-dt-calendar]': 'owlDTCalendarClass'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CdkMonitorFocus, OwlMonthViewComponent, OwlYearViewComponent, OwlMultiYearViewComponent]\n})\nexport class OwlCalendarComponent<T>\n implements OnInit, AfterContentInit, AfterViewChecked, OnDestroy {\n private elmRef = inject(ElementRef);\n private pickerIntl = inject(OwlDateTimeIntl);\n private injector = inject(Injector);\n private cdRef = inject(ChangeDetectorRef);\n private dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true })!;\n private dateTimeFormats = inject<OwlDateTimeFormats>(OWL_DATE_TIME_FORMATS, { optional: true })!;\n\n\n DateView = DateView;\n\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 @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 @Input()\n get pickerMoment() {\n return this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment =\n this.getValidDate(value) || this.dateTimeAdapter.now();\n }\n\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 @Input()\n get selecteds(): T[] {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = values.map(v => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n }\n\n get periodButtonText(): string {\n return this.isMonthView\n ? this.dateTimeAdapter.format(\n this.pickerMoment,\n this.dateTimeFormats.monthYearLabel\n )\n : this.dateTimeAdapter.getYearName(this.pickerMoment);\n }\n\n get periodButtonLabel(): string {\n return this.isMonthView\n ? this.pickerIntl.switchToMultiYearViewLabel\n : this.pickerIntl.switchToMonthViewLabel;\n }\n\n get prevButtonLabel(): string {\n if (this._currentView === DateView.MONTH) {\n return this.pickerIntl.prevMonthLabel;\n } else if (this._currentView === DateView.YEAR) {\n return this.pickerIntl.prevYearLabel;\n } else {\n return null;\n }\n }\n\n get nextButtonLabel(): string {\n if (this._currentView === DateView.MONTH) {\n return this.pickerIntl.nextMonthLabel;\n } else if (this._currentView === DateView.YEAR) {\n return this.pickerIntl.nextYearLabel;\n } else {\n return null;\n }\n }\n\n get currentView(): DateViewType {\n return this._currentView;\n }\n\n set currentView(view: DateViewType) {\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 const selectMode = this.selectMode();\n return (\n selectMode === 'range' ||\n selectMode === 'rangeFrom' ||\n selectMode === 'rangeTo'\n );\n }\n\n get showControlArrows(): boolean {\n return this._currentView !== DateView.MULTI_YEARS;\n }\n\n get isMonthView() {\n return this._currentView === DateView.MONTH;\n }\n\n /**\n * Bind class 'owl-dt-calendar' to host\n * */\n get owlDTCalendarClass(): boolean {\n return true;\n }\n\n constructor() {\n this.intlChangesSub = this.pickerIntl.changes.subscribe(() => {\n this.cdRef.markForCheck();\n });\n }\n\n /**\n * Date filter for the month and year view\n * */\n readonly dateFilter = input<(date: T) => boolean>(undefined);\n\n /**\n * Set the first day of week\n */\n readonly firstDayOfWeek = input<number>(undefined);\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n\n /** The current picker moment */\n private _pickerMoment: T;\n\n readonly selectMode = input<SelectMode>(undefined);\n\n /** The currently selected moment. */\n private _selected: T | null;\n\n private _selecteds: T[] = [];\n\n /**\n * The view that the calendar should start in.\n */\n readonly startView = input<DateViewType>(DateView.MONTH);\n\n /**\n * Whether to should only the year and multi-year views.\n */\n readonly yearOnly = input(false);\n\n /**\n * Whether to show calendar weeks in the calendar\n * */\n readonly showCalendarWeeks = input(false);\n\n /**\n * Whether to should only the multi-year view.\n */\n readonly multiyearOnly = input(false);\n\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n * */\n readonly hideOtherMonths = input<boolean>(undefined);\n\n /** Emits when the currently picker moment changes. */\n readonly pickerMomentChange = output<T>();\n\n /** Emits when the selected date changes. */\n readonly dateClicked = output<T>();\n\n /** Emits when the currently selected date changes. */\n readonly selectedChange = output<T>();\n\n /** Emits when any date is selected. */\n readonly userSelection = output<void>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n * */\n readonly yearSelected = output<T>();\n\n /**\n * Emits the selected month. This doesn't imply a change on the selected date\n * */\n readonly monthSelected = output<T>();\n\n private _currentView: DateViewType;\n\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 public dateFilterForViews = (date: T) => {\n const dateFilter = this.dateFilter();\n return (\n !!date &&\n (!dateFilter || dateFilter(date)) &&\n (!this.minDate ||\n this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate ||\n this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n );\n };\n\n public ngOnInit() {\n }\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 let nextView = null;\n if (this._currentView === DateView.MONTH) {\n nextView = DateView.MULTI_YEARS;\n } else {\n if (this.multiyearOnly()) {\n nextView = DateView.MULTI_YEARS;\n } else if (this.yearOnly()) {\n nextView = this._currentView === DateView.YEAR ? DateView.MULTI_YEARS : DateView.YEAR;\n } else {\n nextView = DateView.MONTH;\n }\n }\n this.currentView = nextView;\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): void {\n if (!this.dateFilterForViews(date)) {\n return;\n }\n\n this.dateClicked.emit(date);\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(\n date: T,\n view: DateViewType\n ): void {\n this.handlePickerMomentChange(date);\n const multiyearOnly = this.multiyearOnly();\n const yearOnly = this.yearOnly();\n if ((!yearOnly && !multiyearOnly) ||\n (multiyearOnly && (view !== DateView.MONTH && view !== DateView.YEAR)) ||\n (yearOnly && view !== DateView.MONTH)) {\n this.currentView = view;\n } else {\n this.dateSelected(date);\n }\n return;\n }\n\n /**\n * Change the pickerMoment value\n */\n public handlePickerMomentChange(date: T): void {\n this.pickerMoment = this.dateTimeAdapter.clampDate(\n date,\n this.minDate,\n this.maxDate\n );\n this.pickerMomentChange.emit(this.pickerMoment);\n return;\n }\n\n public userSelected(): void {\n // TODO: The 'emit' function requires a mandatory void argument\n this.userSelection.emit();\n }\n\n /**\n * Whether the previous period button is enabled.\n */\n public prevButtonEnabled(): boolean {\n return (\n !this.minDate || !this.isSameView(this.pickerMoment, this.minDate)\n );\n }\n\n /**\n * Whether the next period button is enabled.\n */\n public nextButtonEnabled(): boolean {\n return (\n !this.maxDate || !this.isSameView(this.pickerMoment, this.maxDate)\n );\n }\n\n /**\n * Focus to the host element\n * */\n public focusActiveCell() {\n afterNextRender(() => {\n const activeCell = this.elmRef.nativeElement\n .querySelector('.owl-dt-calendar-cell-active');\n if (activeCell) {\n activeCell.focus();\n }\n }, { injector: this.injector });\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 === DateView.MONTH) {\n return !!(\n date1 &&\n date2 &&\n this.dateTimeAdapter.getYear(date1) ===\n this.dateTimeAdapter.getYear(date2) &&\n this.dateTimeAdapter.getMonth(date1) ===\n this.dateTimeAdapter.getMonth(date2)\n );\n } else if (this._currentView === DateView.YEAR) {\n return !!(\n date1 &&\n date2 &&\n this.dateTimeAdapter.getYear(date1) ===\n this.dateTimeAdapter.getYear(date2)\n );\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) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n}\n","<div class=\"owl-dt-calendar-control\">\n <!-- focus when keyboard tab (http://kizu.ru/en/blog/keyboard-only-focus/#x) -->\n <button\n class=\"owl-dt-control owl-dt-control-button owl-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\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\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 <!-- </editor-fold> -->\n </span>\n </button>\n <div class=\"owl-dt-calendar-control-content\">\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-control-period-button\"\n type=\"button\"\n tabindex=\"0\"\n [attr.aria-label]=\"periodButtonLabel\"\n (click)=\"toggleViews()\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n {{ periodButtonText }}\n\n <span\n class=\"owl-dt-control-button-arrow\"\n [style.transform]=\"\n 'rotate(' + (isMonthView ? 0 : 180) + 'deg)'\n \"\n >\n <!-- <editor-fold desc=\"SVG Arrow\"> -->\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 <!-- </editor-fold> -->\n </span>\n </span>\n </button>\n </div>\n <button\n class=\"owl-dt-control owl-dt-control-button owl-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\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\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 <!-- </editor-fold> -->\n </span>\n </button>\n</div>\n<div class=\"owl-dt-calendar-main\" cdkMonitorSubtreeFocus tabindex=\"-1\">\n @switch (currentView) {\n @case (DateView.MONTH) {\n <owl-date-time-month-view\n [pickerMoment]=\"pickerMoment\"\n [firstDayOfWeek]=\"firstDayOfWeek()\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n [selectMode]=\"selectMode()\"\n [minDate]=\"minDate\"\n [showCalendarWeeks]=\"showCalendarWeeks()\"\n [maxDate]=\"maxDate\"\n [dateFilter]=\"dateFilter()\"\n [hideOtherMonths]=\"hideOtherMonths()\"\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n (selectedChange)=\"dateSelected($event)\"\n (userSelection)=\"userSelected()\"\n ></owl-date-time-month-view>\n }\n @case (DateView.YEAR) {\n <owl-date-time-year-view\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, DateView.MONTH)\"\n ></owl-date-time-year-view>\n }\n @case (DateView.MULTI_YEARS) {\n <owl-date-time-multi-year-view\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, DateView.YEAR)\"\n ></owl-date-time-multi-year-view>\n }\n }\n</div>\n","/**\n * timer-box.component\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Injector,\n OnDestroy,\n OnInit,\n afterNextRender,\n inject,\n input,\n output,\n viewChild\n} from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { of, Subject, Subscription, timer } from 'rxjs';\nimport { debounce } from 'rxjs/operators';\n\n@Component({\n exportAs: 'owlDateTimeTimerBox',\n selector: 'owl-date-time-timer-box',\n templateUrl: './timer-box.component.html',\n styleUrls: ['./timer-box.component.scss'],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.owl-dt-timer-box]': 'owlDTTimerBoxClass'\n }\n})\n\nexport class OwlTimerBoxComponent implements OnInit, OnDestroy {\n\n readonly showDivider = input(false);\n\n readonly upBtnAriaLabel = input<string>(undefined);\n\n readonly upBtnDisabled = input<boolean>(undefined);\n\n readonly downBtnAriaLabel = input<string>(undefined);\n\n readonly downBtnDisabled = input<boolean>(undefined);\n\n /**\n * Value would be displayed in the box\n * If it is null, the box would display [value]\n * */\n readonly boxValue = input<number>(undefined);\n\n readonly value = input<number>(undefined);\n\n readonly min = input<number>(undefined);\n\n readonly max = input<number>(undefined);\n\n readonly step = input(1);\n\n /** Whether the value goes from the max to the min and back */\n readonly wrap = input(false);\n\n /** Milliseconds to wait after typing before applying the value, 0 applies it at once */\n readonly inputDebounce = input(750);\n\n readonly inputLabel = input<string>(undefined);\n\n readonly valueChange = output<number>();\n\n readonly inputChange = output<number>();\n\n private inputStream = new Subject<string>();\n\n private inputStreamSub = Subscription.EMPTY;\n\n private hasFocus = false;\n\n /** Whether the user typed into the box: the typed text is shown as is until the focus leaves */\n private editing = false;\n\n private readonly injector = inject(Injector);\n\n get displayValue(): string {\n if (this.hasFocus && this.editing) {\n // Don't try to reformat the value that user is currently editing\n return this.valueInput().nativeElement.value;\n }\n\n const value = this.boxValue() || this.value();\n\n if (value === null || isNaN(value)) {\n return '';\n }\n\n return value < 10 ? '0' + value.toString() : value.toString();\n }\n\n get owlDTTimerBoxClass(): boolean {\n return true;\n }\n\n private readonly valueInput = viewChild<ElementRef<HTMLInputElement>>('valueInput');\n private onValueInputMouseWheelBind = this.onValueInputMouseWheel.bind(this);\n\n constructor() {\n }\n\n public ngOnInit() {\n this.inputStreamSub = this.inputStream.pipe(\n debounce(() => (this.inputDebounce() > 0 ? timer(this.inputDebounce()) : of(0)))\n ).subscribe(( val: string ) => {\n if (val) {\n const inputValue = coerceNumberProperty(val, 0);\n this.updateValueViaInput(inputValue);\n }\n });\n this.bindValueInputMouseWheel();\n }\n\n public ngOnDestroy(): void {\n this.unbindValueInputMouseWheel();\n this.inputStreamSub.unsubscribe();\n }\n\n /** With wrap, past the max goes to the min (59 → 0), otherwise carries over to the larger unit. */\n public upBtnClicked(): void {\n const value = this.stepBase + this.step();\n this.updateValue(this.wrap() && value > this.max() ? this.min() : value);\n }\n\n /** With wrap, past the min goes to the max (0 → 59), otherwise carries over to the larger unit. */\n public downBtnClicked(): void {\n const value = this.stepBase - this.step();\n this.updateValue(this.wrap() && value < this.min() ? this.max() : value);\n }\n\n public handleInputChange(val: string ): void {\n this.editing = true;\n this.inputStream.next(val);\n }\n\n public focusIn(): void {\n this.hasFocus = true;\n }\n\n public focusOut(value: string): void {\n this.hasFocus = false;\n this.editing = false;\n if (value) {\n const inputValue = coerceNumberProperty(value, 0);\n this.updateValueViaInput(inputValue);\n }\n }\n\n /** The value the arrows step from: the typed number while it is not applied yet */\n private get stepBase(): number {\n if (this.editing) {\n const typed = coerceNumberProperty(this.valueInput().nativeElement.value, NaN);\n if (typed >= this.min() && typed <= this.max()) {\n return typed;\n }\n }\n return this.value();\n }\n\n /** Applies the arrow buttons, keys or wheel: the box shows the new value even while focused */\n private updateValue( value: number ): void {\n this.editing = false;\n // Drop the typed text waiting for the debounce, the arrows already stepped from it\n this.inputStream.next('');\n this.valueChange.emit(value);\n if (this.hasFocus) {\n // Keep the new value selected, so typing replaces it\n afterNextRender(() => this.valueInput().nativeElement.select(), { injector: this.injector });\n }\n }\n\n private updateValueViaInput( value: number ): void {\n if (value > this.max() || value < this.min()) {\n return;\n }\n this.inputChange.emit(value);\n }\n\n private onValueInputMouseWheel( event: any ): void {\n event = event || window.event;\n const delta = event.wheelDelta || -event.deltaY || -event.detail;\n\n if (delta > 0) {\n if (!this.upBtnDisabled()) {\n this.upBtnClicked();\n }\n } else if (delta < 0) {\n if (!this.downBtnDisabled()) {\n this.downBtnClicked();\n }\n }\n\n event.preventDefault ? event.preventDefault() : (event.returnValue = false);\n }\n\n private bindValueInputMouseWheel(): void {\n this.valueInput().nativeElement.addEventListener(\n 'onwheel' in document ? 'wheel' : 'mousewheel',\n this.onValueInputMouseWheelBind);\n }\n\n private unbindValueInputMouseWheel(): void {\n this.valueInput().nativeElement.removeEventListener(\n 'onwheel' in document ? 'wheel' : 'mousewheel',\n this.onValueInputMouseWheelBind);\n }\n}\n","@if (showDivider()) {\n <div class=\"owl-dt-timer-divider\" aria-hidden=\"true\"></div>\n}\n<button\n class=\"owl-dt-control-button owl-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=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Up\"> -->\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 <!-- </editor-fold> -->\n </span>\n</button>\n<label class=\"owl-dt-timer-content\">\n <input\n class=\"owl-dt-timer-input\"\n maxlength=\"2\"\n inputmode=\"numeric\"\n [value]=\"displayValue\"\n (keydown.arrowup)=\"!upBtnDisabled() && upBtnClicked()\"\n (keydown.arrowdown)=\"!downBtnDisabled() && downBtnClicked()\"\n (input)=\"handleInputChange(valueInput.value)\"\n (focusin)=\"valueInput.select(); focusIn()\"\n (focusout)=\"focusOut(valueInput.value)\"\n #valueInput\n />\n <span class=\"owl-hidden-accessible\">{{ inputLabel() }}</span>\n</label>\n<button\n class=\"owl-dt-control-button owl-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=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Down\"> -->\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 <!-- </editor-fold> -->\n </span>\n</button>\n","/**\n * timer.component\n */\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnInit, afterNextRender, inject, input, output, Injector } from '@angular/core';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OwlTimerBoxComponent } from './timer-box.component';\n\n@Component({\n exportAs: 'owlDateTimeTimer',\n selector: 'owl-date-time-timer',\n templateUrl: './timer.component.html',\n styleUrls: ['./timer.component.scss'],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.owl-dt-timer]': 'owlDTTimerClass',\n '[attr.tabindex]': 'owlDTTimeTabIndex'\n },\n imports: [OwlTimerBoxComponent]\n})\nexport class OwlTimerComponent<T> implements OnInit {\n private injector = inject(Injector);\n private elmRef = inject(ElementRef);\n private pickerIntl = inject(OwlDateTimeIntl);\n private cdRef = inject(ChangeDetectorRef);\n private dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true })!;\n\n /** The current picker moment */\n private _pickerMoment: T;\n @Input()\n get pickerMoment() {\n return this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment =\n this.getValidDate(value) || this.dateTimeAdapter.now();\n }\n\n /** The minimum selectable date time. */\n private _minDateTime: T | 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;\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 readonly showSecondsTimer = input<boolean>(undefined);\n\n /**\n * Whether the timer is in hour12 format\n */\n readonly hour12Timer = input<boolean>(undefined);\n\n /**\n * Hours to change per step\n */\n readonly stepHour = input(1);\n\n /**\n * Minutes to change per step\n */\n readonly stepMinute = input(1);\n\n /**\n * Seconds to change per step\n */\n readonly stepSecond = input(1);\n\n /**\n * Whether the boxes go from the max to the min and back\n */\n readonly wrapTimer = input(false);\n\n /**\n * Milliseconds the boxes wait after typing before applying the value\n */\n readonly timerInputDebounce = input(750);\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\n ? this.pickerIntl.hour12PMLabel\n : this.pickerIntl.hour12AMLabel;\n }\n\n readonly selectedChange = output<T>();\n\n get owlDTTimerClass(): boolean {\n return true;\n }\n\n get owlDTTimeTabIndex(): number {\n return -1;\n }\n\n public ngOnInit() {}\n\n /**\n * Focus to the host element\n * */\n public focus() {\n afterNextRender(() => {\n this.elmRef.nativeElement.focus();\n }, { injector: this.injector });\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 const hour12Timer = this.hour12Timer();\n if (hour12Timer && this.isPM && hours >= 1 && hours <= 11) {\n hours = hours + 12;\n } else if (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.cdRef.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.cdRef.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.cdRef.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.cdRef.markForCheck();\n event.preventDefault();\n }\n\n /**\n * Check if the up hour button is enabled\n */\n public upHourEnabled(): boolean {\n return (\n !this.maxDateTime ||\n this.compareHours(this.stepHour(), this.maxDateTime) < 1\n );\n }\n\n /**\n * Check if the down hour button is enabled\n */\n public downHourEnabled(): boolean {\n return (\n !this.minDateTime ||\n this.compareHours(-this.stepHour(), this.minDateTime) > -1\n );\n }\n\n /**\n * Check if the up minute button is enabled\n */\n public upMinuteEnabled(): boolean {\n return (\n !this.maxDateTime ||\n this.compareMinutes(this.stepMinute(), this.maxDateTime) < 1\n );\n }\n\n /**\n * Check if the down minute button is enabled\n */\n public downMinuteEnabled(): boolean {\n return (\n !this.minDateTime ||\n this.compareMinutes(-this.stepMinute(), this.minDateTime) > -1\n );\n }\n\n /**\n * Check if the up second button is enabled\n */\n public upSecondEnabled(): boolean {\n return (\n !this.maxDateTime ||\n this.compareSeconds(this.stepSecond(), this.maxDateTime) < 1\n );\n }\n\n /**\n * Check if the down second button is enabled\n */\n public downSecondEnabled(): boolean {\n return (\n !this.minDateTime ||\n this.compareSeconds(-this.stepSecond(), this.minDateTime) > -1\n );\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 =\n this.dateTimeAdapter.getMinutes(this.pickerMoment) + amount;\n const result = this.dateTimeAdapter.setMinutes(\n this.pickerMoment,\n minutes\n );\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 =\n this.dateTimeAdapter.getSeconds(this.pickerMoment) + amount;\n const result = this.dateTimeAdapter.setSeconds(\n this.pickerMoment,\n seconds\n );\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) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n}\n","<owl-date-time-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 [wrap]=\"wrapTimer()\"\n [inputDebounce]=\"timerInputDebounce()\"\n [inputLabel]=\"'Hour'\"\n (inputChange)=\"setHourValueViaInput($event)\"\n (valueChange)=\"setHourValue($event)\"\n></owl-date-time-timer-box>\n<owl-date-time-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 [wrap]=\"wrapTimer()\"\n [inputDebounce]=\"timerInputDebounce()\"\n [inputLabel]=\"'Minute'\"\n (inputChange)=\"setMinuteValue($event)\"\n (valueChange)=\"setMinuteValue($event)\"\n></owl-date-time-timer-box>\n@if (showSecondsTimer()) {\n <owl-date-time-timer-box\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 [wrap]=\"wrapTimer()\"\n [inputDebounce]=\"timerInputDebounce()\"\n [inputLabel]=\"'Second'\"\n (inputChange)=\"setSecondValue($event)\"\n (valueChange)=\"setSecondValue($event)\"\n ></owl-date-time-timer-box>\n}\n@if (hour12Timer()) {\n <div class=\"owl-dt-timer-hour12\">\n <button\n class=\"owl-dt-control-button owl-dt-timer-hour12-box\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"setMeridiem($event)\"\n >\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n {{ hour12ButtonLabel }}\n </span>\n </button>\n </div>\n}\n","/**\n * date-time-picker-container.component\n */\n\nimport { AfterContentInit, AfterViewInit, AnimationCallbackEvent, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, OnDestroy, OnInit, inject, viewChild } from '@angular/core';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { IDateTimePickerAnimationEvent } from './date-time-picker-animation-event';\nimport { OwlTimerComponent } from './timer.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OwlDateTime, PickerType } from './date-time.class';\nimport { Observable, Subject } from 'rxjs';\nimport {\n DOWN_ARROW,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW,\n} from '@angular/cdk/keycodes';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { NgClass } from '@angular/common';\n\n@Component({\n exportAs: 'owlDateTimeContainer',\n selector: 'owl-date-time-container',\n templateUrl: './date-time-picker-container.component.html',\n styleUrls: ['./date-time-picker-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n host: {\n '(animate.enter)': 'onAnimateEnter($event)',\n '(animate.leave)': 'onAnimateLeave($event)',\n '[class.owl-dt-container]': 'owlDTContainerClass',\n '[class.owl-dt-popup-container]': 'owlDTPopupContainerClass',\n '[class.owl-dt-dialog-container]': 'owlDTDialogContainerClass',\n '[class.owl-dt-inline-container]': 'owlDTInlineContainerClass',\n '[class.owl-dt-container-disabled]': 'owlDTContainerDisabledClass',\n '[attr.id]': 'owlDTContainerId',\n },\n imports: [\n CdkTrapFocus,\n OwlCalendarComponent,\n OwlTimerComponent,\n NgClass,\n ],\n})\nexport class OwlDateTimeContainerComponent<T>\n implements OnInit, AfterContentInit, AfterViewInit, OnDestroy\n{\n private cdRef = inject(ChangeDetectorRef);\n private elmRef = inject(ElementRef);\n private pickerIntl = inject(OwlDateTimeIntl);\n private dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true })!;\n\n readonly calendar = viewChild(OwlCalendarComponent);\n readonly timer = viewChild(OwlTimerComponent);\n\n public picker: OwlDateTime<T>;\n public activeSelectedIndex = 0; // The current active SelectedIndex in range select mode (0: 'from', 1: 'to')\n\n /** Whether an inverted range is corrected only on 'Set' or when the other end is activated (see OwlDateTimeComponent). */\n public lazyValidation = false;\n\n /** Emits when an animation state changes. */\n public animationStateChanged = new EventEmitter<IDateTimePickerAnimationEvent>();\n\n // retain start and end time\n private retainStartTime: T;\n private retainEndTime: T;\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 beforePickerOpened$ = new Subject<any>();\n\n get beforePickerOpenedStream(): Observable<any> {\n return this.beforePickerOpened$.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;\n\n get pickerMoment() {\n return this._clamPickerMoment;\n }\n\n set pickerMoment(value: T) {\n if (value) {\n this._clamPickerMoment = this.dateTimeAdapter.clampDate(\n value,\n this.picker.minDateTime,\n this.picker.maxDateTime,\n );\n }\n this.cdRef.markForCheck();\n }\n\n get pickerType(): PickerType {\n return 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[0];\n return value\n ? this.dateTimeAdapter.format(value, this.picker.formatString)\n : '';\n }\n\n /**\n * The range 'to' formatted value\n * */\n get toFormattedValue(): string {\n const value = this.picker.selecteds[1];\n return value\n ? this.dateTimeAdapter.format(value, this.picker.formatString)\n : '';\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 (\n this.picker.pickerMode === 'dialog' ||\n (this.picker.pickerType !== 'calendar' &&\n this.picker.pickerMode !== 'inline')\n );\n }\n\n get containerElm(): HTMLElement {\n return this.elmRef.nativeElement;\n }\n\n get owlDTContainerClass(): boolean {\n return true;\n }\n\n get owlDTPopupContainerClass(): boolean {\n return this.picker.pickerMode === 'popup';\n }\n\n get owlDTDialogContainerClass(): boolean {\n return this.picker.pickerMode === 'dialog';\n }\n\n get owlDTInlineContainerClass(): boolean {\n return this.picker.pickerMode === 'inline';\n }\n\n get owlDTContainerDisabledClass(): boolean {\n return this.picker.disabled;\n }\n\n get owlDTContainerId(): string {\n return this.picker.id;\n }\n\n get owlDTContainerAnimation(): any {\n return this.picker.pickerMode === 'inline' ? '' : 'enter';\n }\n\n public ngOnInit() {\n if (this.picker.selectMode === 'range') {\n if (this.picker.selecteds[0]) {\n this.retainStartTime = this.dateTimeAdapter.clone(\n this.picker.selecteds[0],\n );\n }\n if (this.picker.selecteds[1]) {\n this.retainEndTime = this.dateTimeAdapter.clone(\n this.picker.selecteds[1],\n );\n }\n }\n }\n\n public ngOnDestroy(): void {\n // The enter animation completes via an async promise. If this container is\n // destroyed before it settles (e.g. opened then torn down), that late\n // callback would push into these streams and re-emit lifecycle events on\n // the already-destroyed picker. Completing them makes such a late `next()`\n // a no-op. `animationStateChanged` is intentionally left open so the leave\n // animation can still drive the dialog teardown.\n this.beforePickerOpened$.complete();\n this.pickerOpened$.complete();\n this.hidePicker$.complete();\n this.confirmSelected$.complete();\n }\n\n public ngAfterContentInit(): void {\n this.initPicker();\n }\n\n public ngAfterViewInit(): void {\n this.focusPicker();\n }\n\n public handleContainerAnimationStart(animationName: 'enter' | 'leave'): void {\n if (animationName === 'enter') {\n this.beforePickerOpened$.next(null);\n }\n this.animationStateChanged.emit({\n phaseName: 'start',\n toState: animationName\n });\n }\n\n public handleContainerAnimationDone(animationName: 'enter' | 'leave'): void {\n if (animationName === 'enter') {\n this.pickerOpened$.next(null);\n }\n this.animationStateChanged.emit({\n phaseName: 'done',\n toState: animationName\n });\n }\n\n public dateSelected(date: T): void {\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): void {\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 = [...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 (!this.lazyValidation && this.isRangeInverted(selecteds)) {\n selecteds[0] = this.pickerMoment;\n selecteds[1] = this.pickerMoment;\n } else {\n selecteds[this.activeSelectedIndex] = this.pickerMoment;\n }\n\n if (selecteds[0]) {\n this.retainStartTime = this.dateTimeAdapter.clone(selecteds[0]);\n }\n if (selecteds[1]) {\n this.retainEndTime = this.dateTimeAdapter.clone(selecteds[1]);\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 this.checkInvertedRange();\n\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(\n event: any,\n next: any,\n index: number,\n ): 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 protected onAnimateEnter(event: AnimationCallbackEvent): void {\n this.handleContainerAnimationStart('enter');\n const duration = this.parseCssVariableDuration(event.target, '--container-enter-animation-duration');\n if (duration === 0) {\n this.handleContainerAnimationDone('enter');\n event.animationComplete();\n } else {\n const animation = event.target.animate([\n { opacity: 0, transform: 'scaleY(0)' },\n { opacity: 1, transform: 'scaleY(1)' }\n ], {\n duration: duration ?? 400,\n easing: 'cubic-bezier(0.25, 0.8, 0.25, 1)',\n fill: 'forwards'\n });\n animation.finished.then(() => {\n this.handleContainerAnimationDone('enter');\n event.animationComplete();\n });\n }\n }\n\n protected onAnimateLeave(event: AnimationCallbackEvent): void {\n this.handleContainerAnimationStart('leave');\n const duration = this.parseCssVariableDuration(event.target, '--container-leave-animation-duration');\n if (duration === 0) {\n this.handleContainerAnimationDone('leave');\n event.animationComplete();\n } else {\n event.target.animate([\n { opacity: 1 },\n { opacity: 0 }\n ], {\n duration: duration ?? 100,\n easing: 'linear',\n fill: 'forwards'\n }).finished.then(() => {\n this.handleContainerAnimationDone('leave');\n event.animationComplete();\n });\n }\n }\n\n /**\n * Set the value of activeSelectedIndex\n */\n private setActiveSelectedIndex(index: number): void {\n if (\n this.picker.selectMode === 'range' &&\n this.activeSelectedIndex !== index\n ) {\n this.activeSelectedIndex = index;\n\n const selected = this.picker.selecteds[this.activeSelectedIndex];\n if (this.picker.selecteds && selected) {\n this.pickerMoment = this.dateTimeAdapter.clone(selected);\n }\n\n this.checkInvertedRange();\n }\n return;\n }\n\n private initPicker(): void {\n this.pickerMoment = 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, 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 = this.picker.selecteds[0];\n let to = this.picker.selecteds[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 if (this.picker.endAt && !this.retainEndTime) {\n to = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(result),\n this.dateTimeAdapter.getMonth(result),\n this.dateTimeAdapter.getDate(result),\n this.dateTimeAdapter.getHours(this.picker.endAt),\n this.dateTimeAdapter.getMinutes(this.picker.endAt),\n this.dateTimeAdapter.getSeconds(this.picker.endAt),\n );\n } else if (this.retainEndTime) {\n to = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(result),\n this.dateTimeAdapter.getMonth(result),\n this.dateTimeAdapter.getDate(result),\n this.dateTimeAdapter.getHours(this.retainEndTime),\n this.dateTimeAdapter.getMinutes(this.retainEndTime),\n this.dateTimeAdapter.getSeconds(this.retainEndTime),\n );\n } else {\n to = result;\n }\n this.activeSelectedIndex = 1;\n } else {\n if (this.picker.startAt && !this.retainStartTime) {\n from = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(result),\n this.dateTimeAdapter.getMonth(result),\n this.dateTimeAdapter.getDate(result),\n this.dateTimeAdapter.getHours(this.picker.startAt),\n this.dateTimeAdapter.getMinutes(this.picker.startAt),\n this.dateTimeAdapter.getSeconds(this.picker.startAt),\n );\n } else if (this.retainStartTime) {\n from = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(result),\n this.dateTimeAdapter.getMonth(result),\n this.dateTimeAdapter.getDate(result),\n this.dateTimeAdapter.getHours(this.retainStartTime),\n this.dateTimeAdapter.getMinutes(this.retainStartTime),\n this.dateTimeAdapter.getSeconds(this.retainStartTime),\n );\n } else {\n from = result;\n }\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 [from, 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 {\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(\n result,\n this.picker.minDateTime,\n this.picker.maxDateTime,\n );\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 * Whether the picker moment of the active end is after 'to' (or before 'from').\n */\n private isRangeInverted(selecteds: T[]): boolean {\n return (\n (this.activeSelectedIndex === 0 &&\n !!selecteds[1] &&\n this.dateTimeAdapter.compare(this.pickerMoment, selecteds[1]) === 1) ||\n (this.activeSelectedIndex === 1 &&\n !!selecteds[0] &&\n this.dateTimeAdapter.compare(this.pickerMoment, selecteds[0]) === -1)\n );\n }\n\n /**\n * With lazyValidation, sets both the 'from' and 'to' to the picker moment when the range is inverted.\n */\n private checkInvertedRange(): void {\n if (!this.lazyValidation || !this.picker.isInRangeMode) {\n return;\n }\n\n const selecteds = [...this.picker.selecteds];\n if (this.isRangeInverted(selecteds)) {\n selecteds[0] = this.pickerMoment;\n selecteds[1] = this.pickerMoment;\n this.picker.select(selecteds);\n }\n }\n\n /**\n * Focus to the picker\n * */\n private focusPicker(): void {\n if (this.picker.pickerMode === 'inline') {\n return;\n }\n\n const calendar = this.calendar();\n const timer = this.timer();\n if (calendar) {\n calendar.focusActiveCell();\n } else if (timer) {\n timer.focus();\n }\n }\n\n private parseCssVariableDuration(el: Element, cssVariableName: string) {\n const durationStr = getComputedStyle(el).getPropertyValue(cssVariableName).trim();\n\n // Convert to ms\n let duration: number | undefined = undefined;\n if (durationStr.endsWith('ms')) {\n duration = parseFloat(durationStr);\n } else if (durationStr.endsWith('s')) {\n duration = parseFloat(durationStr) * 1000;\n } else if (durationStr) {\n duration = parseFloat(durationStr);\n if (isNaN(duration)) {\n duration = undefined;\n }\n }\n return duration;\n }\n}\n","<div\n [cdkTrapFocus]=\"picker.pickerMode !== 'inline'\"\n class=\"owl-dt-container-inner\"\n>\n @if (pickerType === 'both' || pickerType === 'calendar') {\n <owl-date-time-calendar\n class=\"owl-dt-container-row\"\n [firstDayOfWeek]=\"picker.firstDayOfWeek\"\n [(pickerMoment)]=\"pickerMoment\"\n [selected]=\"picker.selected\"\n [selecteds]=\"picker.selecteds\"\n [selectMode]=\"picker.selectMode\"\n [minDate]=\"picker.minDateTime\"\n [maxDate]=\"picker.maxDateTime\"\n [dateFilter]=\"picker.dateTimeFilter\"\n [startView]=\"picker.startView()\"\n [yearOnly]=\"picker.yearOnly()\"\n [showCalendarWeeks]=\"picker.showCalendarWeeks()\"\n [multiyearOnly]=\"picker.multiyearOnly()\"\n [hideOtherMonths]=\"picker.hideOtherMonths\"\n (yearSelected)=\"picker.selectYear($event)\"\n (monthSelected)=\"picker.selectMonth($event)\"\n (dateClicked)=\"picker.selectDate($event)\"\n (selectedChange)=\"dateSelected($event)\"\n ></owl-date-time-calendar>\n }\n @if (pickerType === 'both' || pickerType === 'timer') {\n <owl-date-time-timer\n class=\"owl-dt-container-row\"\n [pickerMoment]=\"pickerMoment\"\n [minDateTime]=\"picker.minDateTime\"\n [maxDateTime]=\"picker.maxDateTime\"\n [showSecondsTimer]=\"picker.showSecondsTimer\"\n [hour12Timer]=\"picker.hour12Timer\"\n [stepHour]=\"picker.stepHour\"\n [stepMinute]=\"picker.stepMinute\"\n [stepSecond]=\"picker.stepSecond\"\n [wrapTimer]=\"picker.wrapTimer\"\n [timerInputDebounce]=\"picker.timerInputDebounce\"\n (selectedChange)=\"timeSelected($event)\"\n ></owl-date-time-timer>\n }\n @if (picker.isInRangeMode) {\n <div\n role=\"radiogroup\"\n class=\"owl-dt-container-info owl-dt-container-row\"\n >\n <div\n role=\"radio\"\n [tabindex]=\"activeSelectedIndex === 0 ? 0 : -1\"\n [attr.aria-checked]=\"activeSelectedIndex === 0\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-from\"\n [ngClass]=\"{\n 'owl-dt-container-info-active': activeSelectedIndex === 0,\n }\"\n (click)=\"handleClickOnInfoGroup($event, 0)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, to, 0)\"\n #from\n >\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\"\n >\n <span class=\"owl-dt-container-info-label\"\n >{{ fromLabel }}:</span\n >\n <span class=\"owl-dt-container-info-value\">{{\n fromFormattedValue\n }}</span>\n </span>\n </div>\n <div\n role=\"radio\"\n [tabindex]=\"activeSelectedIndex === 1 ? 0 : -1\"\n [attr.aria-checked]=\"activeSelectedIndex === 1\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-to\"\n [ngClass]=\"{\n 'owl-dt-container-info-active': activeSelectedIndex === 1,\n }\"\n (click)=\"handleClickOnInfoGroup($event, 1)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, from, 1)\"\n #to\n >\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\"\n >\n <span class=\"owl-dt-container-info-label\"\n >{{ toLabel }}:</span\n >\n <span class=\"owl-dt-container-info-value\">{{\n toFormattedValue\n }}</span>\n </span>\n </div>\n </div>\n }\n @if (showControlButtons) {\n <div class=\"owl-dt-container-buttons owl-dt-container-row\">\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"onCancelClicked($event)\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n {{ cancelLabel }}\n </span>\n </button>\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"onSetClicked($event)\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n {{ setLabel }}\n </span>\n </button>\n </div>\n }\n</div>\n","/**\n * date-time-picker.component\n */\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n ViewContainerRef,\n afterNextRender,\n inject,\n input,\n output,\n untracked,\n EventEmitter,\n Injector\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n BlockScrollStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { merge, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { OwlDialogRef } from '../dialog/dialog-ref.class';\nimport { OwlDialogService } from '../dialog/dialog.service';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS, OwlDateTimeFormats } from './adapter/date-time-format.class';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTimeInputDirective } from './date-time-picker-input.directive';\nimport { OwlDateTime, PickerMode, PickerType, SelectMode } from './date-time.class';\n\n/** Injection token that determines the scroll handling while the dtPicker is open. */\nexport const OWL_DTPICKER_SCROLL_STRATEGY = new InjectionToken<\n () => ScrollStrategy\n>('owl-dtpicker-scroll-strategy');\n\n/** @docs-private */\nexport function OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY(\n overlay: Overlay\n): () => BlockScrollStrategy {\n const fn = () => overlay.scrollStrategies.block();\n return fn;\n}\n\n/** @docs-private */\nexport const OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER = {\n provide: OWL_DTPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n\n@Component({\n selector: 'owl-date-time',\n exportAs: 'owlDateTime',\n templateUrl: './date-time-picker.component.html',\n styleUrls: ['./date-time-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false\n})\nexport class OwlDateTimeComponent<T> extends OwlDateTime<T>\n implements OnInit, OnDestroy {\n overlay = inject(Overlay);\n private viewContainerRef = inject(ViewContainerRef);\n private dialogService = inject(OwlDialogService);\n private injector = inject(Injector);\n protected changeDetector = inject(ChangeDetectorRef);\n private document = inject(DOCUMENT, { optional: true })!;\n\n /** Custom class for the picker backdrop. */\n public readonly backdropClass = input<string | string[]>([]);\n\n /** Custom class for the picker overlay pane. */\n public readonly panelClass = input<string | string[]>([]);\n\n /** The date to open the calendar to initially. */\n private _startAt: T | 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 (\n this._dtInput.selectMode === 'range' ||\n this._dtInput.selectMode === 'rangeFrom'\n ) {\n return this._dtInput.values[0] || null;\n } else if (this._dtInput.selectMode === 'rangeTo') {\n return this._dtInput.values[1] || null;\n }\n } else {\n return null;\n }\n }\n\n set startAt(date: T | null) {\n this._startAt = this.getValidDate(\n this.dateTimeAdapter.deserialize(date)\n );\n }\n\n /** The end date to set for range calendar. */\n private _endAt: T | null;\n @Input()\n get endAt(): T | null {\n if (this._endAt) {\n return this._endAt;\n }\n\n if (this._dtInput) {\n if (this._dtInput.selectMode === 'single') {\n return this._dtInput.value || null;\n } else if (\n this._dtInput.selectMode === 'range' ||\n this._dtInput.selectMode === 'rangeFrom'\n ) {\n return this._dtInput.values[1] || null;\n }\n } else {\n return null;\n }\n }\n\n set endAt(date: T | null) {\n this._endAt = this.getValidDate(\n this.dateTimeAdapter.deserialize(date)\n );\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;\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined && this._dtInput\n ? this._dtInput.disabled\n : !!this._disabled;\n }\n\n 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 /** Whether the picker is being opened: from open() until afterPickerOpen. */\n private _opening = false;\n get opening(): boolean {\n return this._opening;\n }\n\n /** Whether the picker is being closed: from close() until afterPickerClosed. */\n private _closing = false;\n get closing(): boolean {\n return this._closing;\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 public readonly scrollStrategy = input<ScrollStrategy>(undefined);\n\n /**\n * For the range mode: when false, an inverted range ('from' after 'to' or 'to' before 'from')\n * is corrected on every change by setting both ends to the same value. When true, it is corrected only\n * when 'Set' is clicked or the other end is activated, so the time can be edited step by step.\n * Defaults to the lazyValidation global option (false).\n * */\n private _lazyValidation: boolean | undefined;\n @Input()\n get lazyValidation(): boolean {\n return this._lazyValidation ?? this.options?.lazyValidation ?? false;\n }\n\n set lazyValidation(value: boolean) {\n this._lazyValidation = coerceBooleanProperty(value);\n }\n\n /**\n * Callback when the picker is closed\n * */\n readonly afterPickerClosed = output<any>();\n\n /**\n * Callback before the picker is open\n * */\n readonly beforePickerOpen = output<any>();\n\n /**\n * Callback when the picker is open\n * */\n readonly afterPickerOpen = output<any>();\n\n /**\n * Emits at the start of open(), before the picker is created\n * */\n readonly pickerOpening = output<void>();\n\n /**\n * Emits at the start of close(), before the picker is destroyed\n * */\n readonly pickerClosing = output<void>();\n\n /**\n * Emits selected year in multi-year view\n * This doesn't imply a change on the selected date.\n * */\n readonly yearSelected = output<T>();\n\n /**\n * Emits selected month in year view\n * This doesn't imply a change on the selected date.\n * */\n readonly monthSelected = output<T>();\n\n /**\n * Emits selected date\n * */\n readonly dateSelected = output<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<\n OwlDateTimeContainerComponent<T>\n >;\n private pickerContainer: OwlDateTimeContainerComponent<T>;\n private popupRef: OverlayRef;\n private dialogRef: OwlDialogRef<OwlDateTimeContainerComponent<T>>;\n private dtInputSub = Subscription.EMPTY;\n private hidePickerStreamSub = Subscription.EMPTY;\n private confirmSelectedStreamSub = Subscription.EMPTY;\n private pickerOpenedStreamSub = Subscription.EMPTY;\n private pickerBeforeOpenedStreamSub = Subscription.EMPTY;\n private dialogEventsSub = Subscription.EMPTY;\n\n /** Pending async close (focus-restore path); cleared on destroy. */\n private closeTimer: ReturnType<typeof setTimeout>;\n\n /** The element that was focused before the date time picker was opened. */\n private focusedElementBeforeOpen: HTMLElement | null = null;\n\n private _dtInput: OwlDateTimeInputDirective<T>;\n get dtInput() {\n return this._dtInput;\n }\n\n private _selected: T | null;\n get selected() {\n return this._selected;\n }\n\n set selected(value: T | null) {\n this._selected = value;\n this.changeDetector.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.changeDetector.markForCheck();\n }\n\n /** The minimum selectable date. */\n get minDateTime(): T | null {\n return this._dtInput && this._dtInput.min;\n }\n\n /** The maximum selectable date. */\n get maxDateTime(): T | null {\n return this._dtInput && this._dtInput.max;\n }\n\n get dateTimeFilter(): (date: T | null) => boolean {\n return this._dtInput && this._dtInput.dateTimeFilter;\n }\n\n get selectMode(): SelectMode {\n return this._dtInput.selectMode;\n }\n\n get isInSingleMode(): boolean {\n return this._dtInput.isInSingleMode;\n }\n\n get isInRangeMode(): boolean {\n return this._dtInput.isInRangeMode;\n }\n\n private readonly defaultScrollStrategy: () => ScrollStrategy;\n\n constructor() {\n const dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true })!;\n const defaultScrollStrategy = inject(OWL_DTPICKER_SCROLL_STRATEGY);\n const dateTimeFormats = inject<OwlDateTimeFormats>(OWL_DATE_TIME_FORMATS, { optional: true })!;\n\n super(dateTimeAdapter, dateTimeFormats);\n this.dateTimeAdapter = dateTimeAdapter;\n this.dateTimeFormats = dateTimeFormats;\n\n this.defaultScrollStrategy = defaultScrollStrategy;\n }\n\n public ngOnInit() {}\n\n public ngOnDestroy(): void {\n // Tearing down is not the same as the user closing the picker: release\n // the overlay/subscriptions but do NOT emit `afterPickerClosed`, and drop\n // any pending async close so it can't emit into a destroyed component.\n clearTimeout(this.closeTimer);\n this.disposeOverlayResources();\n this._opened = false;\n this.dtInputSub.unsubscribe();\n this.disabledChange.complete();\n\n if (this.popupRef) {\n this.popupRef.dispose();\n }\n }\n\n public registerInput(input: OwlDateTimeInputDirective<T>): void {\n if (this._dtInput) {\n throw Error(\n 'A Owl DateTimePicker can only be associated with a single input.'\n );\n }\n\n this._dtInput = input;\n this.dtInputSub = this._dtInput.valueChange.subscribe(\n (value: T[] | T | null) => {\n if (Array.isArray(value)) {\n this.selecteds = value;\n } else {\n this.selected = value;\n }\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(\n 'Attempted to open an DateTimePicker with no associated input.'\n );\n }\n\n this._opening = true;\n this.pickerOpening.emit();\n\n if (this.document) {\n this.focusedElementBeforeOpen = this.document.activeElement as HTMLElement;\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 (this.selected && this.pickerType !== 'calendar' && this._startAt) {\n this.selected = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.selected),\n this.dateTimeAdapter.getMonth(this.selected),\n this.dateTimeAdapter.getDate(this.selected),\n this.dateTimeAdapter.getHours(this._startAt),\n this.dateTimeAdapter.getMinutes(this._startAt),\n this.dateTimeAdapter.getSeconds(this._startAt)\n );\n }\n\n this.pickerMode === 'dialog' ? this.openAsDialog() : this.openAsPopup();\n\n this.pickerContainer.picker = this;\n this.pickerContainer.lazyValidation = this.lazyValidation;\n\n // Listen to picker container's hidePickerStream\n this.hidePickerStreamSub = this.pickerContainer.hidePickerStream.subscribe(\n () => {\n this.close();\n }\n );\n\n // Listen to picker container's confirmSelectedStream\n this.confirmSelectedStreamSub = this.pickerContainer.confirmSelectedStream.subscribe(\n (event: any) => {\n this.confirmSelect(event);\n }\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' &&\n this.selecteds[0] &&\n 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 * Emits the selected date\n * */\n public selectDate(normalizedDate: T): void {\n this.dateSelected.emit(normalizedDate);\n }\n\n /**\n * Hide the picker\n */\n public close(): void {\n // Detaching the popup calls close() again, emit pickerClosing once\n if (!this._opened || this._closing) {\n return;\n }\n\n this._closing = true;\n this.pickerClosing.emit();\n\n this.disposeOverlayResources();\n\n const completeClose = () => {\n if (this._opened) {\n this._closing = false;\n this._opened = false;\n const selected = this.selected || this.selecteds;\n this.afterPickerClosed.emit(selected);\n this.focusedElementBeforeOpen = null;\n }\n };\n\n if (\n this.focusedElementBeforeOpen &&\n typeof this.focusedElementBeforeOpen.focus === 'function'\n ) {\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 this.closeTimer = setTimeout(completeClose);\n } else {\n completeClose();\n }\n }\n\n /**\n * Release the overlay/dialog and the container stream subscriptions. Shared\n * by close() and ngOnDestroy(); does not emit any lifecycle event itself.\n */\n private disposeOverlayResources(): void {\n if (this.popupRef && this.popupRef.hasAttached()) {\n this.popupRef.detach();\n }\n\n if (\n this.pickerContainerPortal &&\n this.pickerContainerPortal.isAttached\n ) {\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.pickerBeforeOpenedStreamSub) {\n this.pickerBeforeOpenedStreamSub.unsubscribe();\n this.pickerBeforeOpenedStreamSub = null;\n }\n\n if (this.pickerOpenedStreamSub) {\n this.pickerOpenedStreamSub.unsubscribe();\n this.pickerOpenedStreamSub = null;\n }\n\n this.dialogEventsSub.unsubscribe();\n\n if (this.dialogRef) {\n this.dialogRef.close();\n this.dialogRef = null;\n }\n }\n\n /**\n * Confirm the selected value\n */\n public confirmSelect(event?: any): void {\n if (this.isInSingleMode) {\n const selected =\n 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(\n OwlDateTimeContainerComponent,\n {\n autoFocus: false,\n backdropClass: [\n 'cdk-overlay-dark-backdrop',\n ...coerceArray(this.backdropClass())\n ],\n paneClass: ['owl-dt-dialog', ...coerceArray(this.panelClass())],\n viewContainerRef: this.viewContainerRef,\n scrollStrategy:\n this.scrollStrategy() || this.defaultScrollStrategy()\n }\n );\n this.pickerContainer = untracked(this.dialogRef.componentInstance);\n\n this.dialogEventsSub = new Subscription();\n this.dialogEventsSub.add(this.dialogRef.beforeOpen().subscribe(() => {\n this.beforePickerOpen.emit(null);\n }));\n this.dialogEventsSub.add(this.dialogRef.afterOpen().subscribe(() => {\n this._opening = false;\n this._opened = true;\n this.afterPickerOpen.emit(null);\n }));\n this.dialogEventsSub.add(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<\n OwlDateTimeContainerComponent<T>\n >(OwlDateTimeContainerComponent, this.viewContainerRef);\n }\n\n if (!this.popupRef) {\n this.createPopup();\n }\n\n if (!this.popupRef.hasAttached()) {\n const componentRef: ComponentRef<\n OwlDateTimeContainerComponent<T>\n > = this.popupRef.attach(this.pickerContainerPortal);\n this.pickerContainer = componentRef.instance;\n\n // Update the position once the calendar has rendered.\n afterNextRender(() => {\n this.popupRef.updatePosition();\n }, { injector: this.injector });\n\n this.pickerBeforeOpenedStreamSub = this.pickerContainer.beforePickerOpenedStream\n .pipe(take(1))\n .subscribe(() => {\n this.beforePickerOpen.emit(null);\n });\n\n // emit open stream\n this.pickerOpenedStreamSub = this.pickerContainer.pickerOpenedStream\n .pipe(take(1))\n .subscribe(() => {\n this._opening = false;\n this._opened = true;\n this.afterPickerOpen.emit(null);\n });\n }\n }\n\n private createPopup(): void {\n const overlayConfig = new OverlayConfig({\n positionStrategy: this.createPopupPositionStrategy(),\n hasBackdrop: true,\n backdropClass: [\n 'cdk-overlay-transparent-backdrop',\n ...coerceArray(this.backdropClass())\n ],\n scrollStrategy: this.scrollStrategy() || this.defaultScrollStrategy(),\n panelClass: ['owl-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(\n filter(\n event =>\n event.keyCode === ESCAPE ||\n (this._dtInput &&\n event.altKey &&\n event.keyCode === UP_ARROW)\n )\n )\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(this._dtInput.elementRef)\n .withTransformOriginOn('.owl-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","","/**\n * provide-date-time.ts\n * Provider functions for OwlDateTime in standalone mode\n */\n\nimport { EnvironmentProviders, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER } from './date-time-picker.component';\nimport { DefaultOptions, optionsProviders, Options, OptionsTokens } from './options-provider';\nimport { OWL_DIALOG_SCROLL_STRATEGY_PROVIDER, OwlDialogService } from '../dialog/dialog.service';\n\n/**\n * Provides the core OwlDateTime functionality without any date adapter.\n * You must also provide a date adapter using `provideOwlNativeDateTime()` or `provideOwlUnixTimestampDateTime()`.\n *\n * This includes:\n * - Date time picker internationalization service\n * - Scroll strategy for picker overlay\n * - Dialog service and scroll strategy (for dialog mode)\n * - Default options configuration\n *\n * @example\n * ```typescript\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideOwlDateTime(),\n * provideOwlNativeDateTime()\n * ]\n * });\n * ```\n */\nexport function provideOwlDateTime(): EnvironmentProviders {\n return makeEnvironmentProviders([\n OwlDateTimeIntl,\n OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER,\n OWL_DIALOG_SCROLL_STRATEGY_PROVIDER,\n OwlDialogService,\n ...optionsProviders,\n ]);\n}\n\n/**\n * Provides custom options for OwlDateTime.\n * This is optional - default options will be used if not provided.\n *\n * @param options - Custom options: multi-year view configuration and the global defaults of the inputs,\n * the missing ones keep their default values\n *\n * @example\n * ```typescript\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideOwlDateTime(),\n * provideOwlNativeDateTime(),\n * provideOwlDateTimeOptions({\n * multiYear: {\n * yearsPerRow: 4,\n * yearRows: 5\n * },\n * lazyValidation: true\n * })\n * ]\n * });\n * ```\n */\nexport function provideOwlDateTimeOptions(options: Partial<Options>): Provider[] {\n const defaults = DefaultOptions.create();\n return [\n {\n provide: OptionsTokens.all,\n useValue: { ...defaults, ...options, multiYear: { ...defaults.multiYear, ...options.multiYear } },\n },\n {\n provide: OptionsTokens.multiYear,\n useFactory: (opts: Options) => opts.multiYear,\n deps: [OptionsTokens.all],\n },\n ];\n}\n\n/**\n * Provides the core OwlDateTime functionality for component-level usage.\n * Returns regular Provider[] instead of EnvironmentProviders, allowing use in @Component({ providers: [] }).\n *\n * Use this when you want to provide OwlDateTime configuration at the component level\n * rather than globally in main.ts.\n *\n * @example\n * ```typescript\n * @Component({\n * providers: [\n * ...owlDateTimeProviders(),\n * ...owlNativeDateTimeProviders()\n * ]\n * })\n * export class MyPickerComponent { }\n * ```\n */\nexport function owlDateTimeProviders(): Provider[] {\n return [\n OwlDateTimeIntl,\n OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER,\n OWL_DIALOG_SCROLL_STRATEGY_PROVIDER,\n OwlDialogService,\n ...optionsProviders,\n ];\n}\n","/**\n * array.utils\n */\n\n/** Creates an array and fills it with values. */\nexport function 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 * date.utils\n */\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 */\nexport function createDate(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n): Date {\n if (month < 0 || month > 11) {\n throw Error(\n `Invalid month index \"${month}\". Month index has to be between 0 and 11.`\n );\n }\n\n if (date < 1) {\n throw Error(\n `Invalid date \"${date}\". Date has to be greater than 0.`\n );\n }\n\n if (hours < 0 || hours > 23) {\n throw Error(\n `Invalid hours \"${hours}\". Hours has to be between 0 and 23.`\n );\n }\n\n if (minutes < 0 || minutes > 59) {\n throw Error(\n `Invalid minutes \"${minutes}\". Minutes has to between 0 and 59.`\n );\n }\n\n if (seconds < 0 || seconds > 59) {\n throw Error(\n `Invalid seconds \"${seconds}\". Seconds has to be between 0 and 59.`\n );\n }\n\n const result = createDateWithOverflow(\n year,\n month,\n date,\n hours,\n minutes,\n seconds\n );\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(\n `Invalid date \"${date}\" for month with index \"${month}\".`\n );\n }\n\n return result;\n}\n\n/**\n * Gets the number of days in the month of the given date.\n */\nexport function getNumDaysInMonth(date: Date): number {\n const lastDateOfMonth = createDateWithOverflow(\n date.getFullYear(),\n date.getMonth() + 1,\n 0\n );\n\n return lastDateOfMonth.getDate();\n}\n\n/**\n * Creates a date but allows the month and date to overflow.\n */\nfunction 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(result.getFullYear() - 1900);\n }\n return result;\n}\n\n/**\n * Checks whether the text matches the Intl format of the locale,\n * e.g. `11/9/2026, 1:05 PM` for `en-US` and the full input format.\n * Whitespace in the format literals matches any whitespace,\n * since Intl puts non-breaking spaces where the user types plain ones.\n */\nexport function isValidIntlFormat(\n value: string,\n locale: string,\n format: Intl.DateTimeFormatOptions\n): boolean {\n const dtf = new Intl.DateTimeFormat(locale, { ...format, timeZone: 'utc' });\n let pattern = '^';\n for (const part of dtf.formatToParts()) {\n switch (part.type) {\n case 'day':\n pattern += '(0?[1-9]|[12][0-9]|3[01])';\n break;\n case 'month':\n pattern += '(0?[1-9]|1[0-2])';\n break;\n case 'year':\n pattern += '([0-9]{1,4})';\n break;\n case 'hour':\n pattern += dtf.resolvedOptions().hour12\n ? '(0?[1-9]|1[0-2])'\n : '([01]?[0-9]|2[0-3])';\n break;\n case 'minute':\n case 'second':\n pattern += '([0-5]?[0-9])';\n break;\n case 'dayPeriod':\n pattern += '([ap]m?)';\n break;\n case 'literal':\n pattern += part.value\n .replace(/[.*+?^${}()|[\\]\\\\/]/g, '\\\\$&')\n .replace(/\\s+/g, '\\\\s+');\n break;\n }\n }\n pattern += '$';\n return new RegExp(pattern, 'i').test(value);\n}\n","/**\n * constants\n */\n\nimport {range} from './array.utils';\n\n/** Whether the browser supports the Intl API. */\nexport const SUPPORTS_INTL_API = typeof Intl !== 'undefined';\n\n/** The default month names to use if Intl API is not available. */\nexport const DEFAULT_MONTH_NAMES = {\n long: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n short: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n ],\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. */\nexport const DEFAULT_DAY_OF_WEEK_NAMES = {\n long: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday'\n ],\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. */\nexport const DEFAULT_DATE_NAMES = range(31, i => String(i + 1));\n","/**\n * native-date-time-adapter.class\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n DateTimeAdapter,\n OWL_DATE_TIME_LOCALE\n} from './date-time-adapter.class';\nimport { range } from '../../utils/array.utils';\nimport {\n createDate,\n getNumDaysInMonth,\n isValidIntlFormat\n} from '../../utils/date.utils';\nimport {\n DEFAULT_DATE_NAMES,\n DEFAULT_DAY_OF_WEEK_NAMES,\n DEFAULT_MONTH_NAMES,\n SUPPORTS_INTL_API\n} from '../../utils/constants';\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@Injectable()\nexport class NativeDateTimeAdapter extends DateTimeAdapter<Date> {\n \tprivate owlDateTimeLocale = inject(OWL_DATE_TIME_LOCALE, { optional: true })!;\n\n \tpublic firstMonthOfTheYear: number = 0;\n \tpublic firstDayOfTheWeek: number = 0;\n \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 const platform = inject(Platform);\n\n super();\n const owlDateTimeLocale = this.owlDateTimeLocale;\n\n super.setLocale(owlDateTimeLocale);\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 return getNumDaysInMonth(date);\n }\n\n public differenceInCalendarDays(dateLeft: Date, dateRight: Date): number {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = this.createDate(\n this.getYear(dateLeft),\n this.getMonth(dateLeft),\n this.getDate(dateLeft)\n );\n const dateRightStartOfDay = this.createDate(\n this.getYear(dateRight),\n this.getMonth(dateRight),\n this.getDate(dateRight)\n );\n\n const timeStampLeft =\n this.getTime(dateLeftStartOfDay) -\n dateLeftStartOfDay.getTimezoneOffset() *\n this.milliseondsInMinute;\n const timeStampRight =\n this.getTime(dateRightStartOfDay) -\n dateRightStartOfDay.getTimezoneOffset() *\n this.milliseondsInMinute;\n return Math.round(\n (timeStampLeft - timeStampRight) / this.millisecondsInDay\n );\n } else {\n return null;\n }\n }\n\n public getYearName(date: Date): string {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.getLocale(), {\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.getLocale(), {\n month: style,\n timeZone: 'utc'\n });\n return range(12, i =>\n this.stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, i, 1))\n )\n );\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.getLocale(), {\n weekday: style,\n timeZone: 'utc'\n });\n return range(7, i =>\n this.stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, 0, i + 1))\n )\n );\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.getLocale(), {\n day: 'numeric',\n timeZone: 'utc'\n });\n return range(31, i =>\n this.stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, 0, i + 1))\n )\n );\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 (\n dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime()\n );\n } else {\n return false;\n }\n }\n\n public isValid(date: Date): boolean {\n return date && !isNaN(date.getTime());\n }\n\n public isValidFormat(value: string, parseFormat: any): boolean {\n if (SUPPORTS_INTL_API) {\n return isValidIntlFormat(value, this.getLocale(), parseFormat);\n }\n return this.isValid(new Date(value));\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(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n ): Date {\n return createDate(year, month, date, hours, minutes, seconds);\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 (\n this._clampDate &&\n (date.getFullYear() < 1 || date.getFullYear() > 9999)\n ) {\n date = this.clone(date);\n date.setFullYear(\n Math.max(1, Math.min(9999, date.getFullYear()))\n );\n }\n\n displayFormat = { ...displayFormat, timeZone: 'utc' };\n const dtf = new Intl.DateTimeFormat(this.getLocale(), 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 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 * 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","/**\n * native-date-time-format.class\n */\nimport { OwlDateTimeFormats } from './date-time-format.class';\n\nexport const OWL_NATIVE_DATE_TIME_FORMATS: OwlDateTimeFormats = {\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","/**\n * provide-native-date-time.ts\n * Provider functions for native JavaScript Date adapter\n */\n\nimport { EnvironmentProviders, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { DateTimeAdapter } from './date-time-adapter.class';\nimport { NativeDateTimeAdapter } from './native-date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS, OwlDateTimeFormats } from './date-time-format.class';\nimport { OWL_NATIVE_DATE_TIME_FORMATS } from './native-date-time-format.class';\n\n/**\n * Provides the native JavaScript Date adapter for OwlDateTime.\n * This includes both the adapter and the default date formats.\n *\n * @example\n * ```typescript\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideOwlDateTime(),\n * provideOwlNativeDateTime()\n * ]\n * });\n * ```\n */\nexport function provideOwlNativeDateTime(): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: DateTimeAdapter, useClass: NativeDateTimeAdapter },\n { provide: OWL_DATE_TIME_FORMATS, useValue: OWL_NATIVE_DATE_TIME_FORMATS },\n ]);\n}\n\n/**\n * Provides the native JavaScript Date adapter with custom formats.\n *\n * @param formats - Custom date time formats\n *\n * @example\n * ```typescript\n * const customFormats: OwlDateTimeFormats = {\n * parseInput: 'DD/MM/YYYY HH:mm',\n * fullPickerInput: 'DD/MM/YYYY HH:mm:ss',\n * datePickerInput: 'DD/MM/YYYY',\n * timePickerInput: 'HH:mm:ss',\n * monthYearLabel: 'MMM YYYY',\n * dateA11yLabel: 'LL',\n * monthYearA11yLabel: 'MMMM YYYY',\n * };\n *\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideOwlDateTime(),\n * provideOwlNativeDateTimeWithFormats(customFormats)\n * ]\n * });\n * ```\n */\nexport function provideOwlNativeDateTimeWithFormats(formats: OwlDateTimeFormats): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: DateTimeAdapter, useClass: NativeDateTimeAdapter },\n { provide: OWL_DATE_TIME_FORMATS, useValue: formats },\n ]);\n}\n\n/**\n * Provides the native JavaScript Date adapter for component-level usage.\n * Returns regular Provider[] instead of EnvironmentProviders, allowing use in @Component({ providers: [] }).\n *\n * Use this when you want to provide the date adapter at the component level\n * rather than globally in main.ts.\n *\n * @example\n * ```typescript\n * @Component({\n * providers: [\n * ...owlDateTimeProviders(),\n * ...owlNativeDateTimeProviders()\n * ]\n * })\n * export class MyPickerComponent { }\n * ```\n */\nexport function owlNativeDateTimeProviders(): Provider[] {\n return [\n { provide: DateTimeAdapter, useClass: NativeDateTimeAdapter },\n { provide: OWL_DATE_TIME_FORMATS, useValue: OWL_NATIVE_DATE_TIME_FORMATS },\n ];\n}\n\n/**\n * Provides the native JavaScript Date adapter with custom formats for component-level usage.\n * Returns regular Provider[] instead of EnvironmentProviders, allowing use in @Component({ providers: [] }).\n *\n * @param formats - Custom date time formats\n *\n * @example\n * ```typescript\n * const customFormats: OwlDateTimeFormats = {\n * parseInput: 'DD/MM/YYYY HH:mm',\n * fullPickerInput: 'DD/MM/YYYY HH:mm:ss',\n * datePickerInput: 'DD/MM/YYYY',\n * timePickerInput: 'HH:mm:ss',\n * monthYearLabel: 'MMM YYYY',\n * dateA11yLabel: 'LL',\n * monthYearA11yLabel: 'MMMM YYYY',\n * };\n *\n * @Component({\n * providers: [\n * ...owlDateTimeProviders(),\n * ...owlNativeDateTimeProvidersWithFormats(customFormats)\n * ]\n * })\n * export class MyPickerComponent { }\n * ```\n */\nexport function owlNativeDateTimeProvidersWithFormats(formats: OwlDateTimeFormats): Provider[] {\n return [\n { provide: DateTimeAdapter, useClass: NativeDateTimeAdapter },\n { provide: OWL_DATE_TIME_FORMATS, useValue: formats },\n ];\n}\n","/**\n * unix-timestamp-date-time-adapter.class\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport {DateTimeAdapter, OWL_DATE_TIME_LOCALE} from '../date-time-adapter.class';\nimport {Platform} from '@angular/cdk/platform';\nimport {range} from '../../../utils/array.utils';\nimport {createDate, getNumDaysInMonth, isValidIntlFormat} from '../../../utils/date.utils';\nimport {DEFAULT_DATE_NAMES, DEFAULT_DAY_OF_WEEK_NAMES, DEFAULT_MONTH_NAMES, SUPPORTS_INTL_API} from '../../../utils/constants';\n\n@Injectable()\nexport class UnixTimestampDateTimeAdapter extends DateTimeAdapter<number> {\n\tprivate owlDateTimeLocale = inject(OWL_DATE_TIME_LOCALE, { optional: true })!;\n\n\tpublic firstMonthOfTheYear: number = 0;\n\tpublic firstDayOfTheWeek: number = 0;\n \n constructor() {\n const platform = inject(Platform);\n\n super();\n const owlDateTimeLocale = this.owlDateTimeLocale;\n\n super.setLocale(owlDateTimeLocale);\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 /** 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 /**\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 static search_ltr_rtl_pattern = '/[\\u200e\\u200f]/g';\n private static stripDirectionalityCharacters(str: string) {\n return str.replace(UnixTimestampDateTimeAdapter.search_ltr_rtl_pattern, '');\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 static _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 addCalendarDays(date: number, amount: number): number {\n const result = new Date(date);\n amount = Number(amount);\n result.setDate(result.getDate() + amount);\n return result.getTime();\n }\n\n addCalendarMonths(date: number, amount: number): number {\n const result = new Date(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.getTime());\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.getTime();\n }\n\n addCalendarYears(date: number, amount: number): number {\n return this.addCalendarMonths(date, amount * 12);\n }\n\n clone(date: number): number {\n return date;\n }\n\n public createDate(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n ): number {\n return createDate(year, month, date, hours, minutes, seconds).getTime();\n }\n\n differenceInCalendarDays(dateLeft: number, dateRight: number): number {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = this.createDate(\n this.getYear(dateLeft),\n this.getMonth(dateLeft),\n this.getDate(dateLeft)\n );\n const dateRightStartOfDay = this.createDate(\n this.getYear(dateRight),\n this.getMonth(dateRight),\n this.getDate(dateRight)\n );\n\n const timeStampLeft =\n this.getTime(dateLeftStartOfDay) -\n new Date(dateLeftStartOfDay).getTimezoneOffset() *\n this.milliseondsInMinute;\n const timeStampRight =\n this.getTime(dateRightStartOfDay) -\n new Date(dateRightStartOfDay).getTimezoneOffset() *\n this.milliseondsInMinute;\n return Math.round(\n (timeStampLeft - timeStampRight) / this.millisecondsInDay\n );\n } else {\n return null;\n }\n }\n\n format(date: number, displayFormat: any): string {\n if (!this.isValid(date)) {\n throw Error('JSNativeDate: Cannot format invalid date.');\n }\n\n const jsDate = new Date(date);\n\n if (SUPPORTS_INTL_API) {\n if (this._clampDate &&\n (jsDate.getFullYear() < 1 || jsDate.getFullYear() > 9999)) {\n jsDate.setFullYear(\n Math.max(1, Math.min(9999, jsDate.getFullYear()))\n );\n }\n\n displayFormat = {...displayFormat, timeZone: 'utc'};\n const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(UnixTimestampDateTimeAdapter._format(dtf, jsDate));\n }\n\n return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(jsDate.toDateString());\n }\n\n getDate(date: number): number {\n return new Date(date).getDate();\n }\n\n 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 =>\n UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n UnixTimestampDateTimeAdapter._format(dtf, new Date(2017, 0, i + 1))\n )\n );\n }\n return DEFAULT_DATE_NAMES;\n }\n\n getDay(date: number): number {\n return new Date(date).getDay();\n }\n\n 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 =>\n UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n UnixTimestampDateTimeAdapter._format(dtf, new Date(2017, 0, i + 1))\n )\n );\n }\n\n return DEFAULT_DAY_OF_WEEK_NAMES[style];\n }\n\n getHours(date: number): number {\n return new Date(date).getHours();\n }\n\n getMinutes(date: number): number {\n return new Date(date).getMinutes();\n }\n\n getMonth(date: number): number {\n return new Date(date).getMonth();\n }\n\n 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 =>\n UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n UnixTimestampDateTimeAdapter._format(dtf, new Date(2017, i, 1))\n )\n );\n }\n return DEFAULT_MONTH_NAMES[style];\n }\n\n getNumDaysInMonth(date: number): number {\n return getNumDaysInMonth(new Date(date));\n }\n\n getSeconds(date: number): number {\n return new Date(date).getSeconds();\n }\n\n getTime(date: number): number {\n return date;\n }\n\n getYear(date: number): number {\n return new Date(date).getFullYear();\n }\n\n getYearName(date: number): string {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n year: 'numeric',\n timeZone: 'utc'\n });\n return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(UnixTimestampDateTimeAdapter._format(dtf, new Date(date)));\n }\n return String(this.getYear(date));\n }\n\n invalid(): number {\n return NaN;\n }\n\n isDateInstance(obj: any): boolean {\n return typeof obj === 'number';\n }\n\n isEqual(dateLeft: number, dateRight: number): boolean {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n return dateLeft === dateRight;\n } else {\n return false;\n }\n }\n\n isSameDay(dateLeft: number, dateRight: number): boolean {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = new Date(dateLeft);\n const dateRightStartOfDay = new Date(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 isValid(date: number): boolean {\n return (date || date === 0) && !isNaN(date);\n }\n\n isValidFormat(value: string, parseFormat: any): boolean {\n if (SUPPORTS_INTL_API) {\n return isValidIntlFormat(value, this.getLocale(), parseFormat);\n }\n return this.isValid(new Date(value).getTime());\n }\n\n now(): number {\n return new Date().getTime();\n }\n\n parse(value: any, parseFormat: any): number | 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 value;\n }\n return value ? new Date(Date.parse(value)).getTime() : null;\n }\n\n setHours(date: number, amount: number): number {\n const result = new Date(date);\n result.setHours(amount);\n return result.getTime();\n }\n\n setMinutes(date: number, amount: number): number {\n const result = new Date(date);\n result.setMinutes(amount);\n return result.getTime();\n }\n\n setSeconds(date: number, amount: number): number {\n const result = new Date(date);\n result.setSeconds(amount);\n return result.getTime();\n }\n\n toIso8601(date: number): string {\n return new Date(date).toISOString();\n }\n}\n","/**\n * unix-timestamp-date-time-format.class\n */\nimport {OwlDateTimeFormats} from '../date-time-format.class';\n\nexport const OWL_UNIX_TIMESTAMP_DATE_TIME_FORMATS: OwlDateTimeFormats = {\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","/**\n * provide-unix-timestamp-date-time.ts\n * Provider functions for Unix timestamp adapter\n */\n\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { DateTimeAdapter } from '../date-time-adapter.class';\nimport { UnixTimestampDateTimeAdapter } from './unix-timestamp-date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS, OwlDateTimeFormats } from '../date-time-format.class';\nimport { OWL_UNIX_TIMESTAMP_DATE_TIME_FORMATS } from './unix-timestamp-date-time-format.class';\n\n/**\n * Provides the Unix timestamp adapter for OwlDateTime.\n * This includes both the adapter and the default date formats.\n *\n * @example\n * ```typescript\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideOwlDateTime(),\n * provideOwlUnixTimestampDateTime()\n * ]\n * });\n * ```\n */\nexport function provideOwlUnixTimestampDateTime(): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: DateTimeAdapter, useClass: UnixTimestampDateTimeAdapter },\n { provide: OWL_DATE_TIME_FORMATS, useValue: OWL_UNIX_TIMESTAMP_DATE_TIME_FORMATS },\n ]);\n}\n\n/**\n * Provides the Unix timestamp adapter with custom formats.\n *\n * @param formats - Custom date time formats\n *\n * @example\n * ```typescript\n * const customFormats: OwlDateTimeFormats = {\n * parseInput: 'X',\n * fullPickerInput: 'X',\n * datePickerInput: 'X',\n * timePickerInput: 'X',\n * monthYearLabel: 'MMM YYYY',\n * dateA11yLabel: 'LL',\n * monthYearA11yLabel: 'MMMM YYYY',\n * };\n *\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideOwlDateTime(),\n * provideOwlUnixTimestampDateTimeWithFormats(customFormats)\n * ]\n * });\n * ```\n */\nexport function provideOwlUnixTimestampDateTimeWithFormats(formats: OwlDateTimeFormats): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: DateTimeAdapter, useClass: UnixTimestampDateTimeAdapter },\n { provide: OWL_DATE_TIME_FORMATS, useValue: formats },\n ]);\n}\n","/**\n * provide-dialog.ts\n * Provider functions for OwlDialog in standalone mode\n */\n\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { OWL_DIALOG_SCROLL_STRATEGY_PROVIDER, OwlDialogService } from './dialog.service';\n\n/**\n * Provides the OwlDialog service and its dependencies.\n * This is required for dialog mode date-time picker.\n *\n * Note: This is automatically included when using `provideOwlDateTime()`,\n * so you typically don't need to call this separately.\n *\n * @example\n * ```typescript\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideOwlDialog()\n * ]\n * });\n * ```\n */\nexport function provideOwlDialog(): EnvironmentProviders {\n return makeEnvironmentProviders([\n OWL_DIALOG_SCROLL_STRATEGY_PROVIDER,\n OwlDialogService,\n ]);\n}\n","/**\n * date-time-picker-trigger.directive\n */\n\n\nimport { AfterContentInit, ChangeDetectorRef, Directive, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, inject, input } from '@angular/core';\nimport { OwlDateTimeComponent } from './date-time-picker.component';\nimport { merge, of as observableOf, Subscription } from 'rxjs';\n\n@Directive({\n selector: '[owlDateTimeTrigger]',\n host: {\n '(click)': 'handleClickOnHost($event)',\n '[class.owl-dt-trigger-disabled]': 'owlDTTriggerDisabledClass'\n }\n})\nexport class OwlDateTimeTriggerDirective<T> implements OnInit, OnChanges, AfterContentInit, OnDestroy {\n protected changeDetector = inject(ChangeDetectorRef);\n\n\n readonly dtPicker = input<OwlDateTimeComponent<T>>(undefined, { alias: \"owlDateTimeTrigger\" });\n\n private _disabled: boolean;\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined ? this.dtPicker().disabled : !!this._disabled;\n }\n\n set disabled( value: boolean ) {\n this._disabled = value;\n }\n\n get owlDTTriggerDisabledClass(): boolean {\n return this.disabled;\n }\n\n private stateChanges = Subscription.EMPTY;\n\n public ngOnInit(): void {\n }\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 public handleClickOnHost( event: Event ): void {\n const dtPicker = this.dtPicker();\n if (dtPicker) {\n dtPicker.open();\n event.stopPropagation();\n }\n }\n\n private watchStateChanges(): void {\n this.stateChanges.unsubscribe();\n\n const dtPicker = this.dtPicker();\n const inputDisabled = dtPicker && dtPicker.dtInput ?\n dtPicker.dtInput.disabledChange : observableOf();\n\n const dtPickerValue = this.dtPicker();\n const pickerDisabled = dtPickerValue ?\n dtPickerValue.disabledChange : observableOf();\n\n this.stateChanges = merge([pickerDisabled, inputDisabled])\n .subscribe(() => {\n this.changeDetector.markForCheck();\n });\n }\n}\n","/**\n * date-time-picker-input.directive\n */\n\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n inject,\n input,\n model,\n output\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 { OwlDateTimeComponent } from './date-time-picker.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from './date-time.class';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { OptionsTokens } from './options-provider';\n\nexport const OWL_DATETIME_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OwlDateTimeInputDirective),\n multi: true\n};\n\nexport const OWL_DATETIME_VALIDATORS: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => OwlDateTimeInputDirective),\n multi: true\n};\n\n@Directive({\n selector: 'input[owlDateTime]',\n exportAs: 'owlDateTimeInput',\n host: {\n '(keydown)': 'handleKeydownOnHost($event)',\n '(blur)': 'handleBlurOnHost($event)',\n '(input)': 'handleInputOnHost($event)',\n '(change)': 'handleChangeOnHost($event)',\n '[attr.aria-haspopup]': 'owlDateTimeInputAriaHaspopup',\n '[attr.aria-owns]': 'owlDateTimeInputAriaOwns',\n '[attr.min]': 'minIso8601',\n '[attr.max]': 'maxIso8601',\n '[disabled]': 'owlDateTimeInputDisabled'\n },\n providers: [\n OWL_DATETIME_VALUE_ACCESSOR,\n OWL_DATETIME_VALIDATORS,\n ],\n})\nexport class OwlDateTimeInputDirective<T>\n implements\n OnInit,\n AfterContentInit,\n OnDestroy,\n ControlValueAccessor,\n Validator {\n private elmRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n private dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true })!;\n private dateTimeFormats = inject<OwlDateTimeFormats>(OWL_DATE_TIME_FORMATS, { optional: true })!;\n\n static ngAcceptInputType_disabled: boolean|'';\n\n /**\n * Required flag to be used for range of [null, null]\n * */\n private _required: boolean;\n @Input()\n get required() {\n return this._required;\n }\n\n set required(value: any) {\n this._required = value === '' || value;\n this.validatorOnChange();\n }\n\n /**\n * The date time picker that this input is associated with.\n * */\n @Input()\n set owlDateTime(value: OwlDateTimeComponent<T>) {\n this.registerDateTimePicker(value);\n }\n\n /**\n * A function to filter date time\n */\n @Input()\n set owlDateTimeFilter(filter: (date: T | null) => boolean) {\n this._dateTimeFilter = filter;\n this.validatorOnChange();\n }\n\n private _dateTimeFilter: (date: T | null) => boolean;\n get dateTimeFilter() {\n return this._dateTimeFilter;\n }\n\n /** Whether the date time picker's input is disabled. */\n protected readonly _disabled = model<boolean>(undefined);\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.set(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 /** The minimum valid date. With strictFormat, it is year 1 by default. */\n private _min: T | null;\n @Input()\n get min(): T | null {\n return this._min ?? (this.strictFormat ? this.strictMin : null);\n }\n\n set min(value: T | null) {\n this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n this.validatorOnChange();\n }\n\n /** The maximum valid date. With strictFormat, it is year 9999 by default. */\n private _max: T | null;\n @Input()\n get max(): T | null {\n return this._max ?? (this.strictFormat ? this.strictMax : null);\n }\n\n set max(value: T | null) {\n this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n this.validatorOnChange();\n }\n\n /**\n * Whether the typed text must match the display format of the picker (adapter isValidFormat),\n * otherwise it gets the owlDateTimeParse error. Also limits min and max to 4-digit years.\n * Defaults to the strictFormat global option (false).\n */\n private _strictFormat: boolean | undefined;\n @Input()\n get strictFormat(): boolean {\n return this._strictFormat ?? this.options?.strictFormat ?? false;\n }\n\n set strictFormat(value: boolean) {\n this._strictFormat = coerceBooleanProperty(value);\n this.validatorOnChange();\n }\n\n private readonly options = inject(OptionsTokens.all, { optional: true });\n private strictMin: T;\n private strictMax: T;\n\n /**\n * The picker's select mode\n */\n private _selectMode: SelectMode = 'single';\n @Input()\n get selectMode() {\n return this._selectMode;\n }\n\n set selectMode(mode: SelectMode) {\n if (\n mode !== 'single' &&\n mode !== 'range' &&\n mode !== 'rangeFrom' &&\n mode !== 'rangeTo'\n ) {\n throw Error('OwlDateTime Error: invalid selectMode value!');\n }\n\n this._selectMode = mode;\n }\n\n /**\n * The character to separate the 'from' and 'to' in input value\n */\n readonly rangeSeparator = input('-');\n\n private _value: T | 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 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(oldDate, value)) {\n this.valueChange.emit(value);\n }\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 this._values = values.map(v => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n this.lastValueValid =\n (!this._values[0] ||\n this.dateTimeAdapter.isValid(this._values[0])) &&\n (!this._values[1] ||\n 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 /**\n * Callback to invoke when `change` event is fired on this `<input>`\n * */\n readonly dateTimeChange = output<any>();\n\n /**\n * Callback to invoke when an `input` event is fired on this `<input>`.\n * */\n readonly dateTimeInput = output<any>();\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 (\n this._selectMode === 'range' ||\n this._selectMode === 'rangeFrom' ||\n this._selectMode === 'rangeTo'\n );\n }\n\n /** The date-time-picker that this input is associated with. */\n public dtPicker: OwlDateTimeComponent<T>;\n\n private dtPickerSub: Subscription = Subscription.EMPTY;\n private localeSub: Subscription = Subscription.EMPTY;\n\n private lastValueValid = true;\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 const text = this.elmRef.nativeElement.value;\n if (!text) {\n return null;\n }\n\n return this.lastValueValid ? null : { owlDateTimeParse: { text } };\n }\n\n /** The form control validator for the min date. */\n private minValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n if (this.isInSingleMode) {\n const controlValue = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value)\n );\n return !this.min ||\n !controlValue ||\n this.dateTimeAdapter.compare(this.min, controlValue) <= 0\n ? null\n : { owlDateTimeMin: { min: this.min, actual: controlValue } };\n } else if (this.isInRangeMode && control.value) {\n const controlValueFrom = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[0])\n );\n const controlValueTo = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[1])\n );\n return !this.min ||\n !controlValueFrom ||\n !controlValueTo ||\n this.dateTimeAdapter.compare(this.min, controlValueFrom) <= 0\n ? null\n : {\n owlDateTimeMin: {\n min: this.min,\n actual: [controlValueFrom, controlValueTo]\n }\n };\n }\n }\n\n /** The form control validator for the max date. */\n private maxValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n if (this.isInSingleMode) {\n const controlValue = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value)\n );\n return !this.max ||\n !controlValue ||\n this.dateTimeAdapter.compare(this.max, controlValue) >= 0\n ? null\n : { owlDateTimeMax: { max: this.max, actual: controlValue } };\n } else if (this.isInRangeMode && control.value) {\n const controlValueFrom = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[0])\n );\n const controlValueTo = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[1])\n );\n return !this.max ||\n !controlValueFrom ||\n !controlValueTo ||\n this.dateTimeAdapter.compare(this.max, controlValueTo) >= 0\n ? null\n : {\n owlDateTimeMax: {\n max: this.max,\n actual: [controlValueFrom, controlValueTo]\n }\n };\n }\n }\n\n /** The form control validator for the date filter. */\n private filterValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n const controlValue = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value)\n );\n return !this._dateTimeFilter ||\n !controlValue ||\n this._dateTimeFilter(controlValue)\n ? null\n : { owlDateTimeFilter: 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 = (\n control: AbstractControl\n ): ValidationErrors | null => {\n if (this.isInSingleMode || !control.value) {\n return null;\n }\n\n const controlValueFrom = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[0])\n );\n const controlValueTo = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[1])\n );\n\n return !controlValueFrom ||\n !controlValueTo ||\n this.dateTimeAdapter.compare(controlValueFrom, controlValueTo) <= 0\n ? null\n : { owlDateTimeRange: true };\n }\n\n /**\n * The form control validator for the range when required.\n * Check whether the 'before' and 'to' values are present\n * */\n private requiredRangeValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n if (this.isInSingleMode || !control.value || !this.required) {\n return null;\n }\n\n const controlValueFrom = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[0])\n );\n const controlValueTo = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[1])\n );\n\n return !controlValueFrom ||\n !controlValueTo\n ? { owlRequiredDateTimeRange: [controlValueFrom, controlValueTo] }\n : null;\n }\n\n /** The combined form control validator for this input. */\n private validator: ValidatorFn | null = Validators.compose([\n this.parseValidator,\n this.minValidator,\n this.maxValidator,\n this.filterValidator,\n this.rangeValidator,\n this.requiredRangeValidator\n ]);\n\n /** Emits when the value changes (either due to user input or programmatic change). */\n public valueChange = new EventEmitter<T[] | T | null>();\n\n /** Emits when the disabled state has changed */\n public disabledChange = new EventEmitter<boolean>();\n\n get owlDateTimeInputAriaHaspopup(): boolean {\n return true;\n }\n\n get owlDateTimeInputAriaOwns(): string {\n return (this.dtPicker.opened && this.dtPicker.id) || null;\n }\n\n get minIso8601(): string {\n return this.min ? this.dateTimeAdapter.toIso8601(this.min) : null;\n }\n\n get maxIso8601(): string {\n return this.max ? this.dateTimeAdapter.toIso8601(this.max) : null;\n }\n\n get owlDateTimeInputDisabled(): boolean {\n return this.disabled;\n }\n\n constructor() {\n if (!this.dateTimeAdapter) {\n throw Error(\n `OwlDateTimePicker: No provider found for DateTimePicker. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n if (!this.dateTimeFormats) {\n throw Error(\n `OwlDateTimePicker: No provider found for OWL_DATE_TIME_FORMATS. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n // The strict format allows 4-digit years only\n this.strictMin = this.dateTimeAdapter.createDate(1, 0, 1, 0, 0, 0);\n this.strictMax = this.dateTimeAdapter.createDate(9999, 11, 31, 23, 59, 59);\n\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n this.value = this.value;\n });\n }\n\n public ngOnInit(): void {\n if (!this.dtPicker) {\n throw Error(\n `OwlDateTimePicker: the picker input doesn't have any associated owl-date-time component`\n );\n }\n }\n\n public ngAfterContentInit(): void {\n this.dtPickerSub = this.dtPicker.confirmSelectedChange.subscribe(\n (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\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): { [key: string]: any } {\n return this.validator ? this.validator(c) : null;\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 public handleKeydownOnHost(event: KeyboardEvent ): void {\n if (event.altKey && event.keyCode === DOWN_ARROW) {\n this.dtPicker.open();\n event.preventDefault();\n }\n }\n\n public handleBlurOnHost(event: Event ): void {\n this.onModelTouched();\n }\n\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 this.validatorOnChange();\n }\n\n public handleChangeOnHost(event: any ): void {\n\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\n ? this.dateTimeAdapter.format(\n this._value,\n this.dtPicker.formatString\n )\n : ''\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\n ? this.dateTimeAdapter.format(\n from,\n this.dtPicker.formatString\n )\n : '';\n const toFormatted = to\n ? this.dateTimeAdapter.format(\n to,\n this.dtPicker.formatString\n )\n : '';\n\n if (!fromFormatted && !toFormatted) {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n null\n );\n } else {\n if (this._selectMode === 'range') {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n fromFormatted +\n ' ' +\n this.rangeSeparator() +\n ' ' +\n toFormatted\n );\n } else if (this._selectMode === 'rangeFrom') {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n fromFormatted\n );\n } else if (this._selectMode === 'rangeTo') {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n toFormatted\n );\n }\n }\n } else {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n ''\n );\n }\n }\n\n return;\n }\n\n /**\n * Register the relationship between this input and its picker component\n */\n private registerDateTimePicker(picker: OwlDateTimeComponent<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) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n\n /**\n * Whether the input text matches the display format of the picker, checked with strictFormat only.\n * An empty text is valid, it means no value.\n */\n private isValidText(text: string): boolean {\n return (\n !text ||\n !this.strictFormat ||\n this.dateTimeAdapter.isValidFormat(text, this.dtPicker.formatString)\n );\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(\n timeString: string,\n dateTime: T\n ): string | null {\n if (timeString) {\n const v = dateTime || this.dateTimeAdapter.now();\n const dateString = this.dateTimeAdapter.format(\n v,\n this.dateTimeFormats.datePickerInput\n );\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 inputValue = (inputValue || '').trim();\n const validText = this.isValidText(inputValue);\n\n let value = inputValue;\n if (this.dtPicker.pickerType === 'timer') {\n value = this.convertTimeStringToDateTimeString(value, this.value);\n }\n\n let result = this.dateTimeAdapter.parse(\n value,\n this.dateTimeFormats.parseInput\n );\n this.lastValueValid =\n validText && (!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 inputValue = (inputValue || '').trim();\n const validText = this.isValidText(inputValue);\n\n const originalValue =\n this._selectMode === 'rangeFrom'\n ? this._values[0]\n : this._values[1];\n\n if (this.dtPicker.pickerType === 'timer') {\n inputValue = this.convertTimeStringToDateTimeString(\n inputValue,\n originalValue\n );\n }\n\n let result = this.dateTimeAdapter.parse(\n inputValue,\n this.dateTimeFormats.parseInput\n );\n this.lastValueValid =\n validText && (!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' &&\n this.isSameValue(result, this._values[0]) &&\n result) ||\n (this._selectMode === 'rangeTo' &&\n this.isSameValue(result, this._values[1]) &&\n result)\n ) {\n return;\n }\n\n this._values =\n this._selectMode === 'rangeFrom'\n ? [result, this._values[1]]\n : [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 || '').trim().split(this.rangeSeparator());\n let fromString = (selecteds[0] || '').trim();\n let toString = (selecteds[1] || '').trim();\n const validText =\n this.isValidText(fromString) && this.isValidText(toString);\n\n if (this.dtPicker.pickerType === 'timer') {\n fromString = this.convertTimeStringToDateTimeString(\n fromString,\n this.values[0]\n );\n toString = this.convertTimeStringToDateTimeString(\n toString,\n this.values[1]\n );\n }\n\n let from = this.dateTimeAdapter.parse(\n fromString,\n this.dateTimeFormats.parseInput\n );\n let to = this.dateTimeAdapter.parse(\n toString,\n this.dateTimeFormats.parseInput\n );\n this.lastValueValid =\n validText &&\n (!from || this.dateTimeAdapter.isValid(from)) &&\n (!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 (\n !this.isSameValue(from, this._values[0]) ||\n !this.isSameValue(to, this._values[1]) ||\n (from === null && to === null)\n ) {\n this._values = [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","/**\n * numberFixedLen.pipe\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'numberFixedLen', })\nexport class NumberFixedLenPipe 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","/**\n * date-time-inline.component\n */\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, OnInit, inject, output, viewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n OwlDateTime,\n PickerMode,\n PickerType,\n SelectMode\n} from './date-time.class';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\n\nexport const OWL_DATETIME_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OwlDateTimeInlineComponent),\n multi: true\n};\n\n@Component({\n selector: 'owl-date-time-inline',\n templateUrl: './date-time-inline.component.html',\n styleUrls: ['./date-time-inline.component.scss'],\n host: {\n '[class.owl-dt-inline]': 'owlDTInlineClass'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n providers: [OWL_DATETIME_VALUE_ACCESSOR],\n imports: [OwlDateTimeContainerComponent]\n})\nexport class OwlDateTimeInlineComponent<T> extends OwlDateTime<T>\n implements OnInit, ControlValueAccessor {\n protected changeDetector = inject(ChangeDetectorRef);\n\n readonly container = viewChild(OwlDateTimeContainerComponent);\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 get disabled(): boolean {\n return !!this._disabled;\n }\n\n 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 (\n mode !== 'single' &&\n mode !== 'range' &&\n mode !== 'rangeFrom' &&\n mode !== 'rangeTo'\n ) {\n throw Error('OwlDateTime 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;\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 (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom'\n ) {\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(\n this.dateTimeAdapter.deserialize(date)\n );\n }\n\n /** The date to open for range calendar. */\n private _endAt: T | null;\n @Input()\n get endAt(): T | null {\n if (this._endAt) {\n return this._endAt;\n }\n\n if (this.selectMode === 'single') {\n return this.value || null;\n } else if (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom'\n ) {\n return this.values[1] || null;\n } else {\n return null;\n }\n }\n\n set endAt(date: T | null) {\n this._endAt = this.getValidDate(\n this.dateTimeAdapter.deserialize(date)\n );\n }\n\n private _dateTimeFilter: (date: T | null) => boolean;\n @Input('owlDateTimeFilter')\n get dateTimeFilter() {\n return 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;\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.changeDetector.markForCheck();\n }\n\n /** The maximum valid date. */\n private _max: T | 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.changeDetector.markForCheck();\n }\n\n private _value: T | 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 = values.map(v => {\n v = this.dateTimeAdapter.deserialize(v);\n v = 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 readonly yearSelected = output<T>();\n\n /**\n * Emits selected month in year view\n * This doesn't imply a change on the selected date.\n * */\n readonly monthSelected = output<T>();\n\n /**\n * Emits selected date\n * */\n readonly dateSelected = output<T>();\n\n private _selected: T | null;\n get selected() {\n return this._selected;\n }\n\n set selected(value: T | null) {\n this._selected = value;\n this.changeDetector.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.changeDetector.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 (\n this._selectMode === 'range' ||\n this._selectMode === 'rangeFrom' ||\n this._selectMode === 'rangeTo'\n );\n }\n\n get owlDTInlineClass(): boolean {\n return true;\n }\n\n private onModelChange: Function = () => { };\n private onModelTouched: Function = () => { };\n\n constructor() {\n const dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true })!;\n const dateTimeFormats = inject<OwlDateTimeFormats>(OWL_DATE_TIME_FORMATS, { optional: true })!;\n\n super(dateTimeAdapter, dateTimeFormats);\n \n this.dateTimeAdapter = dateTimeAdapter;\n this.dateTimeFormats = dateTimeFormats;\n }\n\n public ngOnInit() {\n this.container().picker = this;\n }\n\n public writeValue(value: any): void {\n if (this.isInSingleMode) {\n this.value = value;\n this.container().pickerMoment = value;\n } else {\n this.values = value;\n this.container().pickerMoment = this._values[\n this.container().activeSelectedIndex\n ];\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 /**\n * Emits the selected date\n * */\n public selectDate(normalizedDate: T): void {\n this.dateSelected.emit(normalizedDate);\n }\n}\n","<owl-date-time-container></owl-date-time-container>","/**\n * dialog.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { OWL_DIALOG_SCROLL_STRATEGY_PROVIDER, OwlDialogService } from './dialog.service';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\n\n/**\n * @deprecated Use `provideOwlDialog()` instead. This module will be removed in v21.0.0.\n * Note: Dialog providers are automatically included in `provideOwlDateTime()`.\n *\n * Migration guide:\n * ```typescript\n * // Before:\n * import { OwlDialogModule } from '@dintecom/ngx-datetime-picker';\n * @NgModule({ imports: [OwlDialogModule] })\n *\n * // After (if using separately):\n * import { provideOwlDialog } from '@dintecom/ngx-datetime-picker';\n * providers: [provideOwlDialog()]\n *\n * // Or just use provideOwlDateTime() which includes it:\n * import { provideOwlDateTime } from '@dintecom/ngx-datetime-picker';\n * providers: [provideOwlDateTime()]\n * ```\n */\n@NgModule({\n imports: [CommonModule, A11yModule, OverlayModule, PortalModule, OwlDialogContainerComponent],\n exports: [],\n providers: [\n OWL_DIALOG_SCROLL_STRATEGY_PROVIDER,\n OwlDialogService,\n ]\n})\nexport class OwlDialogModule {\n}\n","/**\n * hour-input.component\n */\n\nimport {\n Component,\n computed,\n forwardRef,\n inject,\n input,\n model\n} from '@angular/core';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { OwlTimerBoxComponent } from './timer-box.component';\n\n@Component({\n exportAs: 'owlHourInput',\n selector: 'owl-hour-input',\n templateUrl: './hour-input.component.html',\n imports: [OwlTimerBoxComponent],\n host: {\n '[class.owl-hour-input]': 'owlHourInputClass'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OwlHourInputComponent),\n multi: true\n }\n ]\n})\nexport class OwlHourInputComponent implements ControlValueAccessor {\n private readonly pickerIntl = inject(OwlDateTimeIntl);\n\n readonly upBtnAriaLabel = input<string>(undefined);\n readonly downBtnAriaLabel = input<string>(undefined);\n readonly min = input(0);\n readonly max = input(23);\n readonly step = input(1);\n readonly hour12Timer = input<boolean>(undefined);\n\n readonly value = model<number>();\n readonly disabled = model<boolean>();\n\n protected readonly isPM = computed(() => {\n const hours = this.value();\n return hours >= 12 && hours <= 23;\n });\n\n protected readonly hour12ButtonLabel = computed(() =>\n this.isPM()\n ? this.pickerIntl.hour12PMLabel\n : this.pickerIntl.hour12AMLabel\n );\n\n protected readonly boxValue = computed(() => {\n const hours = this.value();\n\n if (!this.hour12Timer()) {\n return hours;\n }\n if (hours === 0) {\n return 12;\n }\n if (hours > 12 && hours < 24) {\n return hours - 12;\n }\n return hours;\n });\n\n get owlHourInputClass(): boolean {\n return true;\n }\n\n public upBtnClicked(): void {\n // Emits `valueChange` via the model; does not touch the forms value.\n this.value.set(this.value() + this.step());\n }\n\n public downBtnClicked(): void {\n this.value.set(this.value() - this.step());\n }\n\n public setValueViaInput(hours: number): void {\n if (this.value() && this.isPM() && hours >= 1 && hours <= 11) {\n hours = hours + 12;\n } else if (this.value() && !this.isPM() && hours === 12) {\n hours = 0;\n }\n\n this.commitValue(hours);\n }\n\n public setValue(hours: number): void {\n if (hours < this.min()) {\n this.commitValue(this.max());\n } else if (hours > this.max()) {\n this.commitValue(this.min());\n } else {\n this.commitValue(hours);\n }\n }\n\n public setMeridian(): void {\n // Toggle AM/PM by shifting the hour by 12; `isPM` recomputes from value.\n const hours = this.value() + (this.isPM() ? -12 : 12);\n\n if (hours >= 0 && hours <= 23) {\n this.setValue(hours);\n }\n }\n\n /**\n * Update the value (which emits `valueChange` through the model) and notify\n * the forms API, mirroring the behaviour of the old value setter.\n */\n private commitValue(value: number): void {\n this.value.set(value);\n this.onChange(value);\n this.onTouch(value);\n }\n\n onChange: any = () => {};\n\n onTouch: any = () => {};\n\n writeValue(value: any) {\n this.value.set(value);\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","<owl-date-time-timer-box\n [upBtnAriaLabel]=\"upBtnAriaLabel()\"\n [downBtnAriaLabel]=\"downBtnAriaLabel()\"\n [upBtnDisabled]=\"disabled()\"\n [downBtnDisabled]=\"disabled()\"\n [boxValue]=\"boxValue()\"\n [value]=\"value()\"\n [min]=\"0\"\n [max]=\"23\"\n [step]=\"step()\"\n [inputLabel]=\"'Hour'\"\n (inputChange)=\"setValueViaInput($event)\"\n (valueChange)=\"setValue($event)\"\n></owl-date-time-timer-box>\n\n@if (hour12Timer()) {\n <div class=\"owl-dt-timer-hour12\">\n <button\n class=\"owl-dt-control-button owl-dt-timer-hour12-box\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"setMeridian()\"\n [disabled]=\"disabled()\"\n >\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n {{ hour12ButtonLabel() }}\n </span>\n </button>\n </div>\n}\n","/**\n * date-time.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { OwlDateTimeTriggerDirective } from './date-time-picker-trigger.directive';\nimport { OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER, OwlDateTimeComponent } from './date-time-picker.component';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTimeInputDirective } from './date-time-picker-input.directive';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OwlMonthViewComponent } from './calendar-month-view.component';\nimport { OwlCalendarBodyComponent } from './calendar-body.component';\nimport { OwlYearViewComponent } from './calendar-year-view.component';\nimport { OwlMultiYearViewComponent } from './calendar-multi-year-view.component';\nimport { OwlTimerBoxComponent } from './timer-box.component';\nimport { OwlTimerComponent } from './timer.component';\nimport { NumberFixedLenPipe } from './numberedFixLen.pipe';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { OwlDateTimeInlineComponent } from './date-time-inline.component';\nimport { OwlDialogModule } from '../dialog/dialog.module';\nimport { optionsProviders } from './options-provider';\nimport { OwlHourInputComponent } from './hour-input.component';\n\n/**\n * @deprecated Use `provideOwlDateTime()` instead. This module will be removed in v21.0.0.\n *\n * Migration guide:\n * ```typescript\n * // Before (NgModule approach):\n * import { OwlDateTimeModule, OwlNativeDateTimeModule } from '@dintecom/ngx-datetime-picker';\n *\n * @NgModule({\n * imports: [OwlDateTimeModule, OwlNativeDateTimeModule]\n * })\n * export class AppModule { }\n *\n * // After (Standalone/Provider approach):\n * import { provideOwlDateTime, provideOwlNativeDateTime } from '@dintecom/ngx-datetime-picker';\n *\n * // For standalone app:\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideOwlDateTime(),\n * provideOwlNativeDateTime()\n * ]\n * });\n *\n * // For existing NgModule app:\n * @NgModule({\n * providers: [\n * provideOwlDateTime(),\n * provideOwlNativeDateTime()\n * ]\n * })\n * export class AppModule { }\n * ```\n */\n@NgModule({\n imports: [CommonModule, OverlayModule, OwlDialogModule, A11yModule, OwlDateTimeTriggerDirective,\n OwlDateTimeInputDirective,\n OwlDateTimeComponent,\n OwlDateTimeContainerComponent,\n OwlMultiYearViewComponent,\n OwlYearViewComponent,\n OwlMonthViewComponent,\n OwlTimerComponent,\n OwlTimerBoxComponent,\n OwlHourInputComponent,\n OwlCalendarComponent,\n OwlCalendarBodyComponent,\n NumberFixedLenPipe,\n OwlDateTimeInlineComponent],\n exports: [\n OwlCalendarComponent,\n OwlTimerComponent,\n OwlTimerBoxComponent,\n OwlHourInputComponent,\n OwlDateTimeTriggerDirective,\n OwlDateTimeInputDirective,\n OwlDateTimeComponent,\n OwlDateTimeInlineComponent,\n OwlMultiYearViewComponent,\n OwlYearViewComponent,\n OwlMonthViewComponent,\n ],\n providers: [\n OwlDateTimeIntl,\n OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER,\n ...optionsProviders,\n ]\n})\nexport class OwlDateTimeModule {\n}\n","/**\n * native-date-time.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { DateTimeAdapter } from './date-time-adapter.class';\nimport { NativeDateTimeAdapter } from './native-date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS } from './date-time-format.class';\nimport { OWL_NATIVE_DATE_TIME_FORMATS } from './native-date-time-format.class';\n\n/**\n * @deprecated Use `provideOwlNativeDateTime()` instead. This module will be removed in v21.0.0.\n * @see provideOwlNativeDateTime\n */\n@NgModule({\n imports: [PlatformModule],\n providers: [\n {provide: DateTimeAdapter, useClass: NativeDateTimeAdapter},\n ],\n})\nexport class NativeDateTimeModule {\n}\n\n/**\n * @deprecated Use `provideOwlNativeDateTime()` instead. This module will be removed in v21.0.0.\n *\n * Migration guide:\n * ```typescript\n * // Before:\n * import { OwlNativeDateTimeModule } from '@dintecom/ngx-datetime-picker';\n * @NgModule({ imports: [OwlNativeDateTimeModule] })\n *\n * // After:\n * import { provideOwlNativeDateTime } from '@dintecom/ngx-datetime-picker';\n * providers: [provideOwlNativeDateTime()]\n * ```\n */\n@NgModule({\n imports: [NativeDateTimeModule],\n providers: [{provide: OWL_DATE_TIME_FORMATS, useValue: OWL_NATIVE_DATE_TIME_FORMATS}],\n})\nexport class OwlNativeDateTimeModule {\n}\n","/**\n * picker\n */\n\n// ============================================================================\n// Standalone Provider Functions (Recommended for new projects)\n// ============================================================================\n\nexport {\n provideOwlDateTime,\n provideOwlDateTimeOptions,\n owlDateTimeProviders\n} from './lib/date-time/provide-date-time';\n\nexport {\n provideOwlNativeDateTime,\n provideOwlNativeDateTimeWithFormats,\n owlNativeDateTimeProviders,\n owlNativeDateTimeProvidersWithFormats\n} from './lib/date-time/adapter/provide-native-date-time';\n\nexport {\n provideOwlUnixTimestampDateTime,\n provideOwlUnixTimestampDateTimeWithFormats\n} from './lib/date-time/adapter/unix-timestamp-adapter/provide-unix-timestamp-date-time';\n\nexport { provideOwlDialog } from './lib/dialog/provide-dialog';\n\n// ============================================================================\n// NgModules (Deprecated - use provider functions instead)\n// ============================================================================\n\n/**\n * @deprecated Use `provideOwlDateTime()` instead. Will be removed in v21.0.0.\n * @example\n * Before:\n * ```typescript\n * import { OwlDateTimeModule, OwlNativeDateTimeModule } from '@dintecom/ngx-datetime-picker';\n *\n * @NgModule({\n * imports: [OwlDateTimeModule, OwlNativeDateTimeModule]\n * })\n * ```\n * After:\n * ```typescript\n * import { provideOwlDateTime, provideOwlNativeDateTime } from '@dintecom/ngx-datetime-picker';\n *\n * bootstrapApplication(AppComponent, {\n * providers: [provideOwlDateTime(), provideOwlNativeDateTime()]\n * });\n * ```\n */\nexport { OwlDateTimeModule } from './lib/date-time/date-time.module';\n\n/**\n * @deprecated Use `provideOwlNativeDateTime()` instead. Will be removed in v21.0.0.\n */\nexport { OwlNativeDateTimeModule } from './lib/date-time/adapter/native-date-time.module';\n\n// ============================================================================\n// Services, Components, Directives, and Types\n// ============================================================================\n\nexport { OwlDateTimeIntl } from './lib/date-time/date-time-picker-intl.service';\n\nexport {\n OWL_DATE_TIME_LOCALE_PROVIDER,\n OWL_DATE_TIME_LOCALE,\n DateTimeAdapter,\n\n} from './lib/date-time/adapter/date-time-adapter.class';\n\nexport { OWL_DATE_TIME_FORMATS } from './lib/date-time/adapter/date-time-format.class';\nexport type { OwlDateTimeFormats } from './lib/date-time/adapter/date-time-format.class';\n\nexport {\n UnixTimestampDateTimeAdapter\n} from './lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class';\n\nexport { OWL_UNIX_TIMESTAMP_DATE_TIME_FORMATS } from './lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class';\n\nexport { OwlDateTimeInlineComponent } from './lib/date-time/date-time-inline.component';\n\nexport { OwlDateTimeComponent } from './lib/date-time/date-time-picker.component';\n\nexport * from './lib/date-time/calendar-body.component';\n\nexport * from './lib/date-time/timer.component';\n\nexport * from './lib/date-time/timer-box.component';\n\nexport * from './lib/date-time/hour-input.component';\n\nexport * from './lib/date-time/date-time-picker-trigger.directive';\n\nexport * from './lib/date-time/date-time-picker-input.directive';\n\nexport * from './lib/date-time/calendar-multi-year-view.component';\n\nexport * from './lib/date-time/calendar-year-view.component';\n\nexport * from './lib/date-time/calendar-month-view.component';\n\nexport * from './lib/date-time/calendar.component';\n\nexport { NativeDateTimeAdapter } from './lib/date-time/adapter/native-date-time-adapter.class';\n\nexport * from './lib/date-time/options-provider';\n\nexport { DateView } from './lib/date-time/date-time.class';\nexport type { PickerType, PickerMode, SelectMode, DateViewType } from './lib/date-time/date-time.class';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["take","filter","observableOf","OWL_DATETIME_VALUE_ACCESSOR"],"mappings":"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"}