@fundamental-ngx/core 0.61.2-rc.8 → 0.61.2
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.
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs +2 -3
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs +4 -6
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +13 -11
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +7 -5
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-calendar.mjs +31 -35
- package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-carousel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs +3 -5
- package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-date-picker.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime.mjs +13 -7
- package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +13 -13
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-grid-list.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-inline-help.mjs +65 -59
- package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-menu.mjs +1 -3
- package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-strip.mjs +49 -44
- package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +17 -23
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-nested-list.mjs +21 -22
- package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-notification.mjs +16 -13
- package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-pagination.mjs +14 -11
- package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-popover.mjs +6 -0
- package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-product-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +7 -4
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs +11 -10
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-select.mjs +6 -7
- package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +6 -6
- package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-slider.mjs +6 -6
- package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tabs.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-text.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time-picker.mjs +29 -4
- package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-token.mjs +15 -12
- package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-toolbar.mjs +3 -5
- package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tree.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-user-menu.mjs +3 -5
- package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
- package/package.json +3 -3
- package/types/fundamental-ngx-core-breadcrumb.d.ts +5 -5
- package/types/fundamental-ngx-core-busy-indicator.d.ts +3 -3
- package/types/fundamental-ngx-core-combobox.d.ts +2 -4
- package/types/fundamental-ngx-core-datetime.d.ts +5 -1
- package/types/fundamental-ngx-core-dynamic-page.d.ts +2 -1
- package/types/fundamental-ngx-core-inline-help.d.ts +45 -24
- package/types/fundamental-ngx-core-menu.d.ts +0 -2
- package/types/fundamental-ngx-core-message-strip.d.ts +12 -3
- package/types/fundamental-ngx-core-multi-combobox.d.ts +1 -1
- package/types/fundamental-ngx-core-nested-list.d.ts +10 -10
- package/types/fundamental-ngx-core-notification.d.ts +7 -5
- package/types/fundamental-ngx-core-pagination.d.ts +4 -3
- package/types/fundamental-ngx-core-rating-indicator.d.ts +2 -3
- package/types/fundamental-ngx-core-segmented-button.d.ts +5 -3
- package/types/fundamental-ngx-core-slider.d.ts +1 -1
- package/types/fundamental-ngx-core-time-picker.d.ts +17 -1
- package/types/fundamental-ngx-core-token.d.ts +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-date-picker.mjs","sources":["../../../../libs/core/date-picker/tokens.ts","../../../../libs/core/date-picker/date-picker-mobile/date-picker-mobile.component.ts","../../../../libs/core/date-picker/date-picker-mobile/date-picker-mobile.component.html","../../../../libs/core/date-picker/errors.ts","../../../../libs/core/date-picker/date-picker.component.ts","../../../../libs/core/date-picker/date-picker.component.html","../../../../libs/core/date-picker/date-picker.module.ts","../../../../libs/core/date-picker/fundamental-ngx-core-date-picker.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { DatePicker } from './date-picker.model';\n\nexport const FD_DATE_PICKER_COMPONENT = new InjectionToken<DatePicker<any>>('FdDatePickerComponent');\nexport const FD_DATE_PICKER_MOBILE_CONFIG = new InjectionToken<MobileModeConfig>('FdDatePickerMobileConfig');\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { InitialFocusDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { DateRange } from '@fundamental-ngx/core/calendar';\nimport {\n DialogBodyComponent,\n DialogCloseButtonComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { MobileModeBase, MobileModeControl } from '@fundamental-ngx/core/mobile-mode';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { DatePicker } from '../date-picker.model';\nimport { FD_DATE_PICKER_COMPONENT, FD_DATE_PICKER_MOBILE_CONFIG } from '../tokens';\n\n@Component({\n selector: 'fd-date-picker-mobile',\n templateUrl: './date-picker-mobile.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n TitleComponent,\n NgTemplateOutlet,\n DialogFooterComponent,\n DialogComponent,\n DialogBodyComponent,\n DialogCloseButtonComponent,\n DialogHeaderComponent,\n ButtonBarComponent,\n InitialFocusDirective\n ]\n})\nexport class DatePickerMobileComponent<D> extends MobileModeBase<DatePicker<D>> {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** @hidden */\n private _selectedBackup: D | Array<D> | DateRange<D> | Array<DateRange<D>>;\n\n /** @hidden */\n constructor(\n @Inject(FD_DATE_PICKER_MOBILE_CONFIG)\n public datePickerConfig: { calendarTemplate: TemplateRef<any>; controlTemplate: TemplateRef<any> },\n @Inject(FD_DATE_PICKER_COMPONENT) datePickerComponent: DatePicker<D>\n ) {\n super(datePickerComponent, MobileModeControl.DATE_PICKER);\n\n this._component.isOpenChange.subscribe((isOpen) => {\n this._toggleDialog(isOpen);\n });\n }\n\n /** @hidden */\n _getShowCalendarLegend(): boolean {\n const show = this._component.showCalendarLegend;\n if (typeof show === 'boolean') {\n return show;\n }\n\n return (show as any)?.() || false;\n }\n\n /** @hidden */\n _getLegendCol(): boolean {\n const col = this._component.legendCol;\n if (typeof col === 'boolean') {\n return col;\n }\n\n return (col as any)?.() || false;\n }\n\n /** @hidden */\n handleApprove(): void {\n this.dialogRef.close();\n this._component.dialogApprove();\n }\n\n /** @hidden */\n handleDismiss(): void {\n this.dialogRef.dismiss();\n this._component.dialogDismiss(this._selectedBackup);\n }\n\n /** @hidden */\n private _toggleDialog(open: boolean): void {\n if (open) {\n this._selectedBackup = this._component.getSelectedDate();\n if (!this._dialogService.hasOpenDialogs()) {\n this._open();\n }\n }\n }\n\n /** @hidden */\n private _open(): void {\n this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n mobile: true,\n backdropClickCloseable: false,\n disablePaddings: true,\n ...this.dialogConfig,\n container: this._elementRef.nativeElement\n });\n\n this._selectedBackup = this._component.getSelectedDate();\n\n const refSub = this.dialogRef.afterClosed.pipe(takeUntilDestroyed(this._destroyRef)).subscribe({\n error: (type) => {\n if (type === 'escape') {\n this._component.dialogDismiss(this._selectedBackup);\n refSub.unsubscribe();\n }\n }\n });\n }\n}\n","<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n @if (mobileConfig.title) {\n <h1 fd-title>{{ mobileConfig.title }}</h1>\n }\n @if (mobileConfig.hasCloseButton) {\n <button title=\"Close\" fd-dialog-close-button [mobile]=\"true\" (click)=\"handleDismiss()\"></button>\n }\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-template [ngTemplateOutlet]=\"datePickerConfig.calendarTemplate || null\"></ng-template>\n </fd-dialog-body>\n <fd-dialog-footer>\n @if (mobileConfig.approveButtonText) {\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText!\" (click)=\"handleApprove()\">\n </fd-button-bar>\n }\n @if (mobileConfig.cancelButtonText) {\n <fd-button-bar fdkInitialFocus [label]=\"mobileConfig.cancelButtonText!\" (click)=\"handleDismiss()\">\n </fd-button-bar>\n }\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n","/** Creates an error to be thrown when attempting to use an invalid date implementation. */\nexport function createMissingDateImplementationError(provider: string): Error {\n return Error(\n `FdDatePicker: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: FdDatetimeModule, or provide a ` +\n `custom implementation.`\n );\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n DestroyRef,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n inject,\n Injector,\n input,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { DynamicComponentService, FocusTrapService, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { BarComponent, BarElementDirective, BarRightDirective } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n CalendarComponent,\n CalendarLegendFocusingService,\n CalendarType,\n CalendarTypeEnum,\n CalendarYearGrid,\n DateRange,\n DaysOfWeek,\n FdCalendarView,\n FdCalendarViewEnum,\n NavigationButtonDisableFunction\n} from '@fundamental-ngx/core/calendar';\nimport { DATE_TIME_FORMATS, DatetimeAdapter, DateTimeFormats } from '@fundamental-ngx/core/datetime';\nimport {\n FormItemControl,\n FormMessageComponent,\n PopoverFormMessageService,\n registerFormItemControl\n} from '@fundamental-ngx/core/form';\nimport { InputGroupComponent, InputGroupInputDirective } from '@fundamental-ngx/core/input-group';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverModule, PopoverService } from '@fundamental-ngx/core/popover';\nimport { Placement, SpecialDayRule } from '@fundamental-ngx/core/shared';\nimport { FdLanguageKeyIdentifier, FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { DatePickerMobileComponent } from './date-picker-mobile/date-picker-mobile.component';\nimport { DatePicker } from './date-picker.model';\nimport { createMissingDateImplementationError } from './errors';\nimport { FD_DATE_PICKER_COMPONENT, FD_DATE_PICKER_MOBILE_CONFIG } from './tokens';\n\nlet datePickerCounter = 0;\n\n/**\n * The datetime picker component is an opinionated composition of the fd-popover and\n * fd-calendar components to accomplish the UI pattern for picking a date.\n *\n * Supports Angular Forms.\n * ```html\n * <fd-date-picker [(ngModel)]=\"date\"></fd-date-picker>\n * ```\n *\n */\n@Component({\n selector: 'fd-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrl: './date-picker.component.scss',\n host: {\n '(blur)': 'onTouched()',\n '[class.fd-date-picker]': 'true',\n '[class.fd-date-picker-custom]': 'inline'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n },\n {\n provide: FD_DATE_PICKER_COMPONENT,\n useExisting: DatePickerComponent\n },\n registerFormItemControl(DatePickerComponent),\n PopoverFormMessageService,\n PopoverService,\n DynamicComponentService,\n CalendarLegendFocusingService\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n PopoverModule,\n FormMessageComponent,\n InputGroupComponent,\n InputGroupInputDirective,\n FormsModule,\n CalendarComponent,\n BarComponent,\n BarRightDirective,\n BarElementDirective,\n ButtonComponent,\n FdTranslatePipe\n ]\n})\nexport class DatePickerComponent<D>\n implements\n DatePicker<D>,\n OnInit,\n OnDestroy,\n OnChanges,\n AfterViewInit,\n ControlValueAccessor,\n Validator,\n FormItemControl\n{\n /** The type of calendar, 'single' for single date selection or 'range' for a range of dates. */\n @Input()\n type: CalendarType = CalendarTypeEnum.Single;\n\n /** Date picker input placeholder string */\n @Input()\n placeholder = '';\n\n /** ID attribute for input element inside DatePicker component */\n @Input()\n inputId: string;\n\n /** If it is mandatory field */\n @Input()\n required = false;\n\n /** Define a custom datetime format. Can be a string for DayjsDatetimeAdapter or object for FdDatetimeAdapter */\n @Input()\n customDateTimeFormat: unknown;\n\n /** Text displayed in message */\n @Input()\n set message(message: string) {\n this._message = message;\n }\n\n /** The trigger events that will open/close the message box.\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp). */\n @Input()\n set messageTriggers(triggers: string[]) {\n this._messageTriggers = triggers;\n this._popoverFormMessage.triggers = triggers;\n }\n\n /** The currently selected date model in single mode. */\n @Input()\n selectedDate: Nullable<D>;\n\n /** The currently selected date model in multiple mode. */\n @Input()\n selectedMultipleDates: Array<D> = [];\n\n /** The currently selected date model with start and end in range mode. */\n @Input()\n selectedRangeDate: DateRange<D> = { start: null, end: null };\n\n /** The currently selected date model with multiple ranges. */\n @Input()\n selectedMultipleDateRanges: Array<DateRange<D>> = [];\n\n /** The day of the week the calendar should start on. 1 represents Sunday, 2 is Monday, 3 is Tuesday, and so on. */\n @Input()\n startingDayOfWeek: DaysOfWeek;\n\n /**\n * Whether user wants to mark day cells on hover.\n * Works only on range mode, when start date is selected on Day View.\n */\n @Input()\n rangeHoverEffect = false;\n\n /** Whether to validate the date picker input. */\n @Input()\n useValidation = true;\n\n /** Whether a null input is considered valid. */\n @Input()\n allowNull = true;\n\n /** Actually shown active view one of 'day' | 'month' | 'year' in calendar component*/\n @Input()\n activeView: FdCalendarView = FdCalendarViewEnum.Day;\n\n /**\n * The placement of the popover. It can be one of: top, top-start, top-end, bottom,\n * bottom-start, bottom-end, right, right-start, right-end, left, left-start, left-end.\n */\n @Input()\n placement: Placement = 'bottom-start';\n\n /** The element to which the popover should be appended. */\n @Input()\n appendTo: ElementRef;\n\n /** Whether the date picker is disabled. */\n @Input()\n disabled: boolean;\n\n /** Defines if date picker should be closed after date choose */\n @Input()\n closeOnDateChoose = true;\n\n /** Enables Today-Selection-Button if true */\n @Input()\n showTodayButton = false;\n\n /** Label for Today-Selection-Button */\n @Input()\n todayButtonLabel = 'Today';\n\n /**\n * Function used to disable previous button in the calendar header.\n */\n @Input()\n previousButtonDisableFunction: NavigationButtonDisableFunction<D>;\n\n /**\n * Function used to disable next button in the calendar header.\n */\n @Input()\n nextButtonDisableFunction: NavigationButtonDisableFunction<D>;\n\n /**\n * @deprecated Popover is toggled with f4 key\n */\n @Input()\n buttonFocusable = false;\n\n /**\n * Special days mark, it can be used by passing array of object with\n * Special day number, list 1-20 [class:`fd-calendar__item--legend-{{number}}`] is available there:\n * https://sap.github.io/fundamental-styles/components/calendar.html calendar special days section\n * Rule accepts method with FdDate object as a parameter. ex:\n * `rule: (fdDate: FdDate) => fdDate.getDay() === 1`, which will mark all sundays as special day.\n */\n @Input()\n specialDaysRules: SpecialDayRule<D>[] = [];\n\n /**\n * Object to customize year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n yearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 5\n };\n\n /**\n * Object to customize aggregated year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n aggregatedYearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 3\n };\n\n /**\n * Whether user wants to mark sunday/saturday with `fd-calendar__item--weekend` class\n */\n @Input()\n markWeekends = true;\n\n /**\n * Whether user wants to show week numbers next to days\n */\n @Input()\n showWeekNumbers = true;\n\n /**\n * Whether the user wants to select multiple days or multiple range dates.\n * If `displayWeekNumbers` is true, the user can click on the week number to mark the related row.\n * The user can click on week days to mark the related column.\n * Note: Clickable selection for week row or column does not work for range selections.\n */\n @Input()\n allowMultipleSelection = false;\n\n /** Should date picker be inlined. */\n @Input()\n inline = true;\n\n /** aria-labelledby for element describing date-picker. */\n @Input()\n ariaLabelledBy: Nullable<string>;\n\n /**\n * Whether to recalculate value from the input as user types or on blur.\n * By default, updates the value as user types.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n processInputOnBlur = false;\n\n /**\n * Whether to prevent page scrolling when focusing date picker input field after calendar has been closed.\n */\n @Input()\n preventScrollOnFocus = false;\n\n /** Whether date picker should rendered in mobile mode. */\n @Input()\n mobile = false;\n\n /** Mobile mode configuration. */\n @Input()\n mobileConfig: MobileModeConfig;\n\n /** Whether calendar is used inside mobile in landscape mode, it also adds close button on right side */\n @Input()\n mobileLandscape = false;\n\n /** Whether calendar is used inside mobile in portrait mode */\n @Input()\n mobilePortrait = false;\n\n /** Whether to select and display the date range in MM/YYYY or YYYY format\n * For month and year format value is 'month'\n * For year format value is 'year'\n */\n @Input()\n dateRangeFormat = '';\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n readonly isOpenChange = new EventEmitter<boolean>();\n\n /** Event thrown every time selected date in single mode is changed */\n @Output()\n readonly selectedDateChange: EventEmitter<Nullable<D>> = new EventEmitter<Nullable<D>>();\n\n /** Event thrown every time the selected dates in multiple mode are changed. */\n @Output()\n readonly selectedMultipleDatesChange: EventEmitter<Array<D>> = new EventEmitter<Array<D>>();\n\n /** Event thrown every time selected first or last date in range mode is changed */\n @Output()\n readonly selectedRangeDateChange: EventEmitter<DateRange<D>> = new EventEmitter<DateRange<D>>();\n\n /** Event thrown every time the first or last date in multiple range mode is changed. */\n @Output()\n readonly selectedMultipleDateRangesChange: EventEmitter<Array<DateRange<D>>> = new EventEmitter<\n Array<DateRange<D>>\n >();\n\n /** Event thrown every time calendar active view is changed */\n @Output()\n readonly activeViewChange = new EventEmitter<FdCalendarView>();\n\n /** @hidden */\n @ViewChild('inputGroupComponent', {\n read: ElementRef\n })\n _inputGroupElement: ElementRef;\n\n /** @hidden */\n @ViewChild(InputGroupInputDirective, {\n read: ElementRef\n })\n _inputElement: ElementRef<HTMLInputElement>;\n\n /** @hidden */\n @ViewChild('controlTemplate')\n private readonly _controlTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('calendarTemplate')\n private readonly _calendarTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('popoverMessageTemplate')\n private readonly _messagePopoverTemplate: TemplateRef<any>;\n\n /** @hideen */\n @ViewChildren(CalendarComponent)\n private readonly _calendars: QueryList<CalendarComponent<D>>;\n\n /** Whether to display the calendar legend below the calendar. Default is false. */\n showCalendarLegend = input(false, { transform: booleanAttribute });\n\n /** Whether the legend should display in column layout instead of row layout. Default is false. */\n legendCol = input(false, { transform: booleanAttribute });\n\n /**\n * The state of the form control - applies css classes.\n * Also, this is applied to message.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n @Input()\n set state(state: Nullable<FormStates>) {\n this._state = state || 'default';\n }\n\n /** @hidden */\n get state(): FormStates {\n if (this._state == null && this.useValidation && this._isInvalidDateInput) {\n return 'error';\n }\n return this._state;\n }\n\n /** Whether the date picker is open. Can be used through two-way binding. */\n @Input()\n set isOpen(value: boolean) {\n if (value === this._isOpen) {\n return;\n }\n this._isOpen = value;\n this._showPopoverContents = value;\n this._changeDetectionRef.detectChanges();\n }\n\n get isOpen(): boolean {\n return this._isOpen;\n }\n\n /** @hidden */\n _calendarComponent: CalendarComponent<D>;\n\n /** @hidden */\n _message: string | null = null;\n\n /** @hidden */\n _messageTriggers: string[] = ['focusin', 'focusout'];\n\n /** @hidden The value of the input */\n _inputFieldDate: string | null = null;\n\n /** @hidden Whether the date input is invalid */\n _isInvalidDateInput = false;\n\n /** @hidden */\n _showPopoverContents = false;\n\n /** @hidden */\n readonly _formValueStateMessageId = `fd-date-picker-form-message-${datePickerCounter++}`;\n\n /** @hidden */\n private _isOpen = false;\n\n /** @hidden */\n private _calendarPendingDate: Nullable<D>;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _state: FormStates = 'default';\n\n /** @hidden */\n private readonly _injector = inject(Injector);\n\n /** @hidden */\n private readonly _dynamicComponentService = inject(DynamicComponentService);\n\n /** @hidden */\n private readonly _focusTrapService = inject(FocusTrapService, {\n optional: true\n });\n\n /** @hidden */\n private _mobileComponentRef: Nullable<ComponentRef<DatePickerMobileComponent<D>>>;\n\n /** @hidden */\n get _rangeDelimiter(): string {\n return this._dateTimeFormats.rangeDelimiter;\n }\n\n /**\n * Date input aria label key based on type\n * @hidden\n */\n get _dateInputArialLabelKey(): FdLanguageKeyIdentifier {\n // return either input value or a key for \"fdTranslate\" pipe\n return this.type === CalendarTypeEnum.Range\n ? 'coreDatePicker.dateRangeInputLabel'\n : 'coreDatePicker.dateInputLabel';\n }\n\n /** @hidden */\n constructor(\n private _changeDetectionRef: ChangeDetectorRef,\n // Use @Optional to avoid angular injection error message and throw our own which is more precise one\n @Optional()\n private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional()\n @Inject(DATE_TIME_FORMATS)\n private _dateTimeFormats: DateTimeFormats,\n private _popoverFormMessage: PopoverFormMessageService\n ) {\n if (!this._dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n if (!this._dateTimeFormats) {\n throw createMissingDateImplementationError('DATE_TIME_FORMATS');\n }\n }\n\n /**\n * Function used to disable certain dates in the calendar.\n */\n @Input()\n disableFunction: (value: D) => boolean = () => false;\n\n /**\n * Function used to disable certain dates in the calendar for the range start selection.\n */\n @Input()\n disableRangeStartFunction: (value: D) => boolean = () => false;\n\n /**\n * Function used to disable certain dates in the calendar for the range end selection.\n */\n @Input()\n disableRangeEndFunction: (value: D) => boolean = () => false;\n\n /** @hidden */\n onChange: (value: any) => void = () => {};\n\n /** @hidden */\n onTouched: any = () => {};\n\n /** @hidden */\n dialogApprove(): void {}\n\n /** @hidden */\n dialogDismiss(prevValue: D | Array<D> | DateRange<D> | Array<DateRange<D>>): void {\n if (this.allowMultipleSelection) {\n if (this._isMultipleDateRanges(prevValue)) {\n this.handleMultipleDateRangesChange(prevValue);\n } else {\n const value = prevValue as Array<D>;\n this.handleMultipleDatesChange(value);\n }\n } else {\n if (this._isDateRange(prevValue)) {\n this.handleRangeDateChange(prevValue);\n } else {\n const value = prevValue as D;\n this.handleSingleDateChange(value);\n }\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n // initial view should be month or year if dateRangeFormat is provided\n if (this.dateRangeFormat === 'month') {\n this.activeView = FdCalendarViewEnum.Month;\n } else if (this.dateRangeFormat === 'year') {\n this.activeView = FdCalendarViewEnum.Year;\n }\n\n this._dateTimeAdapter.localeChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this.formatInputDate(this.selectedDate);\n this._changeDetectionRef.detectChanges();\n });\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if ('isOpen' in changes) {\n this._showPopoverContents = this.isOpen;\n this._changeDetectionRef.detectChanges();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._InitialiseVariablesInMessageService();\n\n this._calendars.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n const calendar = this._calendars.first;\n this._calendarComponent = calendar;\n setTimeout(() => {\n if (this._calendarComponent) {\n this._focusTrapService?.pauseCurrentFocusTrap();\n } else {\n this._focusTrapService?.unpauseCurrentFocusTrap();\n }\n\n calendar?.setCurrentlyDisplayed(this._calendarPendingDate);\n calendar?.initialFocus();\n });\n });\n\n if (this.mobile) {\n this._setUpMobileMode();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._mobileComponentRef?.destroy();\n }\n\n /**\n * Method that handle calendar active view change and throws event.\n */\n handleCalendarActiveViewChange(activeView: FdCalendarView): void {\n this.activeViewChange.emit(activeView);\n }\n\n /** @hidden */\n closeFromCalendar(): void {\n if (this.type === CalendarTypeEnum.Single && this.closeOnDateChoose && !this.allowMultipleSelection) {\n this.onTouched();\n this.closeCalendar();\n }\n }\n\n /** Opens the calendar */\n openCalendar(): void {\n if (this.disabled) {\n return;\n }\n this._setOpenState(true);\n this._changeMessageVisibility();\n }\n\n /** Toggles the calendar open or closed */\n toggleCalendar(): void {\n if (this.disabled) {\n return;\n }\n this._setOpenState(!this.isOpen);\n if (!this.isOpen) {\n this.onTouched();\n }\n this._changeMessageVisibility();\n }\n\n /** Closes the calendar if it is open */\n closeCalendar(): void {\n if (!this.isOpen) {\n return;\n }\n this._setOpenState(false);\n this._changeMessageVisibility();\n }\n\n /**\n * @hidden\n * Method that is triggered by events from calendar component, when there is selected single date changed\n */\n handleSingleDateChange(date: D): void {\n if (!date) {\n return;\n }\n this.selectedDate = date;\n this.selectedDateChange.emit(date);\n this.onChange(date);\n this._refreshCurrentlyDisplayedCalendarDate(date);\n this.formatInputDate(date);\n this._isInvalidDateInput = !this.isModelValid();\n if (this.closeOnDateChoose && this.type === CalendarTypeEnum.Single) {\n this.closeCalendar();\n }\n }\n\n /**\n * @hidden\n * Method that is triggered by events from the calendar component when the selected multiple dates change.\n */\n handleMultipleDatesChange(dates: Array<D>): void {\n if (!dates || dates.length === 0) {\n this.selectedMultipleDates = [];\n this.selectedMultipleDatesChange.emit([]);\n this.onChange([]);\n this._refreshCurrentlyDisplayedCalendarDate(null);\n this._inputFieldDate = null;\n return;\n }\n this.selectedMultipleDates = dates;\n this.selectedMultipleDatesChange.emit(dates);\n this.onChange(dates);\n /** Assuming the first date in the array is used for refresh */\n if (this.showTodayButton) {\n this._refreshCurrentlyDisplayedCalendarDate(dates[0]);\n }\n this._inputFieldDate = this.formatDateArray(dates);\n this._isInvalidDateInput = !this.isModelValid();\n }\n\n /**\n * @hidden\n * Method that is triggered by events from calendar component, when there is selected range date changed\n */\n handleRangeDateChange(dates: DateRange<D>): void {\n const startChanged = !this._dateTimeAdapter.datesEqual(dates.start, this.selectedRangeDate.start);\n const endChanged = !this._dateTimeAdapter.datesEqual(dates.end, this.selectedRangeDate.end);\n if (dates && (startChanged || endChanged)) {\n const shouldClose = this.closeOnDateChoose && dates.end !== null;\n if (dates.end !== null) {\n this._inputFieldDate = this._formatDateRange(dates);\n this.selectedRangeDate = {\n start: dates.start,\n end: dates.end\n };\n this.selectedRangeDateChange.emit(this.selectedRangeDate);\n this.onChange(this.selectedRangeDate);\n this._refreshCurrentlyDisplayedCalendarDate(dates.start);\n this._isInvalidDateInput = !this.isModelValid();\n }\n if (shouldClose) {\n this.closeCalendar();\n }\n }\n }\n\n /**\n * @hidden\n * Method that is triggered by events from the calendar component when the selected multiple range dates change.\n */\n handleMultipleDateRangesChange(dates: Array<DateRange<D>>): void {\n let hasChanged = false;\n\n // Check for changes in the date ranges\n if (dates.length !== this.selectedMultipleDateRanges.length) {\n hasChanged = true;\n } else {\n for (let i = 0; i < dates.length; i++) {\n if (\n !this._dateTimeAdapter.datesEqual(dates[i].start, this.selectedMultipleDateRanges[i].start) ||\n !this._dateTimeAdapter.datesEqual(dates[i].end, this.selectedMultipleDateRanges[i].end)\n ) {\n hasChanged = true;\n break;\n }\n }\n }\n\n // If any date range has changed, update the internal state and emit changes\n if (hasChanged) {\n this.selectedMultipleDateRanges = dates;\n\n // Update the formatted input field\n this._inputFieldDate = this._formatMultipleDateRanges(dates);\n\n // Emit the change event\n this.selectedMultipleDateRangesChange.emit(this.selectedMultipleDateRanges);\n\n // Perform any additional actions such as updating the model or refreshing the calendar\n this.onChange(this.selectedMultipleDateRanges);\n // if you want to refresh the calendar view, you can use the following line\n // this._refreshCurrentlyDisplayedCalendarDate(dates[0].start);\n this._calendarPendingDate = dates[0].start;\n this._isInvalidDateInput = !this.isModelValid();\n }\n }\n\n /**\n * @hidden\n * Method that is triggered date formatting in the date control\n */\n formatInputDate(date: Nullable<D>): void {\n if (!date) {\n return;\n }\n this._inputFieldDate = this._formatDate(date);\n }\n\n /**\n * @hidden\n * Method that is triggered when Today-Selection-Button clicked, it changes selected date or date range to today's date\n */\n onTodayButtonClick(): void {\n const todayDate = this._dateTimeAdapter.today();\n if (this.allowMultipleSelection) {\n if (this.type === CalendarTypeEnum.Single) {\n this.handleMultipleDatesChange([todayDate]);\n this.closeFromCalendar();\n } else if (this.type === CalendarTypeEnum.Range) {\n this.handleMultipleDateRangesChange([\n {\n start: todayDate,\n end: todayDate\n }\n ]);\n }\n } else {\n if (this.type === CalendarTypeEnum.Single) {\n this.handleSingleDateChange(todayDate);\n this.closeFromCalendar();\n } else if (this.type === CalendarTypeEnum.Range) {\n this.handleRangeDateChange({\n start: todayDate,\n end: todayDate\n });\n }\n }\n }\n\n /**\n * @hidden\n * Method that is triggered when the text input is confirmed to ba changed, by clicking enter, or blur\n */\n handleInputChange(strDate: string, isTypeEvent: boolean): void {\n if ((isTypeEvent && this.processInputOnBlur) || (!isTypeEvent && !this.processInputOnBlur)) {\n // if processInputOnBlur === true, ignore type event\n // if processInputOnBlur === false, ignore blur/enter event\n return;\n }\n this.dateStringUpdate(strDate);\n }\n\n /**\n * @hidden\n * Function that implements Validator Interface, adds validation support for forms\n */\n validate(): {\n [key: string]: any;\n } | null {\n return this.isModelValid()\n ? null\n : {\n dateValidation: {\n valid: false\n }\n };\n }\n\n /** @hidden */\n registerOnChange(\n fn: (selected: any) => {\n void;\n }\n ): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /** @hidden */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectionRef.detectChanges();\n }\n\n /**\n * @hidden\n * Function that provides support for ControlValueAccessor that allows to use [(ngModel)] or forms\n */\n writeValue(selected: D | Array<D> | DateRange<D> | Array<DateRange<D>> | null): void {\n /** If written value is not defined, null, empty string */\n if (!selected) {\n this._inputFieldDate = '';\n this._refreshCurrentlyDisplayedCalendarDate(this._dateTimeAdapter.today());\n this.selectedRangeDate = {\n start: null,\n end: null\n };\n this.selectedDate = null;\n this.selectedMultipleDates = [];\n this.selectedMultipleDateRanges = [];\n this._changeDetectionRef.detectChanges();\n return;\n }\n if (this.allowMultipleSelection && Array.isArray(selected)) {\n if (this.type === CalendarTypeEnum.Single) {\n /**\n * For single mode, if the date is invalid, model is changed, it refreshes currently\n * input field text, but it does not refresh currently displayed day\n */\n // selected = this._parseDate(selected)\n selected = <Array<D>>selected;\n\n this.selectedMultipleDates = selected;\n this._inputFieldDate = this.formatDateArray(selected);\n this._refreshCurrentlyDisplayedCalendarDate(selected[0]);\n }\n if (this.type === CalendarTypeEnum.Range) {\n /**\n * For range mode, if the date is invalid, model is changed, but it does not refresh currently\n * displayed day view, or input field text\n */\n selected = selected as Array<DateRange<D>>;\n if (selected && selected.length > 0) {\n const filteredRanges = selected.filter((range) => range.start !== null && range.end !== null);\n if (filteredRanges.length > 0) {\n this.selectedMultipleDateRanges = filteredRanges.map((range) => ({\n start: this._parseDate(range.start),\n end: this._parseDate(range.end)\n }));\n this._refreshCurrentlyDisplayedCalendarDate(filteredRanges[0].start);\n this._inputFieldDate = this._formatMultipleDateRanges(filteredRanges);\n } else {\n this._inputFieldDate = '';\n }\n } else {\n this._inputFieldDate = '';\n }\n }\n } else {\n if (this.type === CalendarTypeEnum.Single) {\n /**\n * For single mode, if the date is invalid, model is changed, it refreshes currently\n * input field text, but it does not refresh currently displayed day\n */\n selected = this._parseDate(selected) as D;\n this.selectedDate = selected;\n this._inputFieldDate = this._formatDate(selected);\n this._refreshCurrentlyDisplayedCalendarDate(selected);\n }\n if (this.type === CalendarTypeEnum.Range) {\n /**\n * For range mode, if the date is invalid, model is changed, but it does not refresh currently\n * displayed day view, or input field text\n */\n selected = selected as DateRange<D>;\n if (selected?.start) {\n this.selectedRangeDate = {\n start: this._parseDate(selected.start),\n end: this._parseDate(selected.end)\n };\n this._refreshCurrentlyDisplayedCalendarDate(selected.start);\n this._inputFieldDate = this._formatDateRange(selected);\n } else {\n this._inputFieldDate = '';\n }\n }\n }\n\n this._isInvalidDateInput = !this.isModelValid();\n this._changeDetectionRef.detectChanges();\n }\n\n /**\n * @hidden\n * Method, which is responsible for transforming string to date, depending on type or\n * validation the results are different. It also changes the state of _isInvalidDateInput\n */\n dateStringUpdate(dateStr: string): void {\n this._inputFieldDate = dateStr;\n if (this.allowMultipleSelection) {\n if (this.type === CalendarTypeEnum.Single) {\n this.updateMultipleDates(dateStr);\n } else {\n this._updateMultipleDateRanges(dateStr);\n }\n } else {\n if (this.type === CalendarTypeEnum.Single) {\n this._updateSingleDate(dateStr);\n } else {\n this._updateRangeDate(dateStr);\n }\n }\n }\n\n /** Method that provides information if model selected date/dates have properly types and are valid */\n isModelValid(): boolean {\n if (this.allowMultipleSelection) {\n if (this.type === CalendarTypeEnum.Single) {\n return this._isMultipleModelValid(this.selectedMultipleDates);\n } else {\n return this._isMultipleRangesModelValid(this.selectedMultipleDateRanges);\n }\n } else {\n if (this.type === CalendarTypeEnum.Single) {\n return this._isSingleModelValid(this.selectedDate);\n } else {\n return this._isRangeModelValid(this.selectedRangeDate);\n }\n }\n }\n\n /** Returns current selected date. */\n getSelectedDate(): D | Array<D> | DateRange<D> | Array<DateRange<D>> {\n return (\n this.selectedDate || this.selectedMultipleDates || this.selectedRangeDate || this.selectedMultipleDateRanges\n );\n }\n\n /** @hidden */\n _changeMessageVisibility(): void {\n if (this.isOpen) {\n this._popoverFormMessage.hide();\n } else {\n this._popoverFormMessage.show();\n }\n }\n\n /** @hidden */\n _onOpenStateChanged(isOpen: boolean): void {\n this.isOpenChange.emit(isOpen);\n this._changeMessageVisibility();\n // focus input control every time popup is closed\n if (!isOpen && this._inputElement) {\n this._inputElement.nativeElement.focus({\n preventScroll: this.preventScrollOnFocus\n });\n }\n }\n\n /**\n * Renders the calendar right before the popover is opened.\n * Used for correct calculations of overlay position and size.\n */\n _beforePopoverOpen(): void {\n this._showPopoverContents = true;\n this._changeDetectionRef.detectChanges();\n }\n\n /** @hidden */\n _onBlur(event: FocusEvent): void {\n this.onTouched();\n this.handleInputChange((event.target as any).value, false);\n }\n\n /** Method that returns info if single model given is valid */\n private _isSingleModelValid(date: Nullable<D>): boolean {\n return (this._isDateValid(date) && !this.disableFunction(date)) || (!date && this.allowNull);\n }\n\n /** Method that returns info if multiple date model given is valid */\n private _isMultipleModelValid(dates: Array<Nullable<D>>): boolean {\n return dates?.every((date) => this._isSingleModelValid(date));\n }\n\n /** Method that returns info if range date model given is valid */\n private _isRangeModelValid(fdRangeDate: DateRange<D>): boolean {\n return (\n (fdRangeDate && this._isStartDateValid(fdRangeDate.start) && this._isEndDateValid(fdRangeDate.end)) ||\n (!fdRangeDate.start && !fdRangeDate.end && this.allowNull)\n );\n }\n\n /** Method that returns info if multiple range date model given is valid */\n private _isMultipleRangesModelValid(ranges: Array<DateRange<D>>): boolean {\n if (!ranges || ranges.length === 0) {\n return this.allowNull;\n }\n return ranges.every((range) => range.start && range.end && this._isRangeModelValid(range));\n }\n\n /** Method that returns info if end date model given is valid */\n private _isEndDateValid(endDate: Nullable<D>): boolean {\n return this._isDateValid(endDate) && !this.disableRangeEndFunction(endDate);\n }\n\n /** Method that returns info if start date model given is valid */\n private _isStartDateValid(startDate: Nullable<D>): boolean {\n return this._isDateValid(startDate) && !this.disableRangeStartFunction(startDate);\n }\n\n /** Method that returns info if given date model is valid */\n private _isDateValid(date: Nullable<D>): date is D {\n return this._dateTimeAdapter.isValid(date);\n }\n\n /** @hidden */\n private _refreshCurrentlyDisplayedCalendarDate(date: Nullable<D>): void {\n this._calendarPendingDate = date;\n this._calendarComponent?.setCurrentlyDisplayed(date);\n }\n\n /** @hidden */\n private _formatDate(date: Nullable<D>): string {\n if (this.customDateTimeFormat) {\n return this._dateTimeAdapter.format(date, this.customDateTimeFormat);\n }\n return this._dateTimeAdapter.format(date, this._dateTimeFormats.display.dateInput);\n }\n\n /** @hidden */\n private formatDateArray(dates: Array<D>): string {\n return dates.map((date) => this._formatDate(date)).join(', ');\n }\n\n /** @hidden */\n private _parseDate(date: unknown): D | null {\n return this._dateTimeAdapter.parse(date, this._dateTimeFormats.parse.dateInput);\n }\n\n /**\n * Helper method to parse a date string into an array of dates.\n * @param dateStr The date string to parse.\n * @returns An array of dates.\n */\n private parseDateString(dateStr: string): D[] {\n return dateStr\n .split(',')\n .map((date) => this._parseDate(date.trim()))\n .filter((date) => date !== null) as D[];\n }\n\n /** @hidden */\n private _formatDateRange(dateRange: DateRange<D>): string {\n const startDate = this._formatDate(dateRange.start);\n const endDate = this._formatDate(dateRange.end);\n return startDate + this._rangeDelimiter + endDate;\n }\n\n /** @hidden */\n private _formatMultipleDateRanges(dateRanges: Array<DateRange<D>>): string {\n return dateRanges.map((dateRange) => this._formatDateRange(dateRange)).join(', ');\n }\n\n /** @hidden */\n private _InitialiseVariablesInMessageService(): void {\n this._popoverFormMessage.init(this._inputGroupElement);\n this._popoverFormMessage.triggers = this._messageTriggers;\n this._popoverFormMessage.message = this._messagePopoverTemplate;\n }\n\n /** @hidden */\n private _setOpenState(isOpen: boolean): void {\n this._showPopoverContents = isOpen;\n this._changeDetectionRef.detectChanges();\n this.isOpen = isOpen;\n this.isOpenChange.emit(this.isOpen);\n this._changeDetectionRef.detectChanges();\n }\n\n /** @hidden */\n private _setUpMobileMode(): void {\n const injector = Injector.create({\n providers: [\n { provide: FD_DATE_PICKER_COMPONENT, useValue: this },\n {\n provide: FD_DATE_PICKER_MOBILE_CONFIG,\n useValue: { calendarTemplate: this._calendarTemplate, controlTemplate: this._controlTemplate }\n }\n ],\n parent: this._injector\n });\n\n this._mobileComponentRef = this._dynamicComponentService.createDynamicComponent(\n {},\n DatePickerMobileComponent<D>,\n {\n container: 'body'\n },\n {\n injector\n }\n );\n }\n\n /** @hidden */\n private _isDateRange(value: any): value is DateRange<D> {\n return !!value && value.start && value.end;\n }\n\n /** @hidden */\n private _isMultipleDateRanges(value: any): value is Array<DateRange<D>> {\n return Array.isArray(value) && value.every((item) => this._isDateRange(item));\n }\n\n /**\n * @hidden\n * Updates the selected single date from a date string.\n * @param dateStr The date string to parse and update the selected date.\n */\n private _updateSingleDate(dateStr: string): void {\n if (!dateStr) {\n this._isInvalidDateInput = !this.allowNull;\n this.selectedDate = null;\n this._refreshCurrentlyDisplayedCalendarDate(this.selectedDate);\n this.onChange(this.selectedDate);\n this.selectedDateChange.emit(this.selectedDate);\n return;\n }\n const date = this._parseDate(dateStr);\n\n if (!this._dateTimeAdapter.datesEqual(date, this.selectedDate)) {\n this._isInvalidDateInput = !this._isSingleModelValid(date);\n\n if (!this._isInvalidDateInput) {\n this._refreshCurrentlyDisplayedCalendarDate(date);\n }\n\n this.selectedDate = date;\n this.onChange(this.selectedDate);\n this.selectedDateChange.emit(this.selectedDate);\n }\n }\n\n /**\n * @hidden\n * Updates the selected range date from a date string.\n * @param dateStr The date string to parse and update the selected range date.\n */\n private _updateRangeDate(dateStr: string): void {\n if (!dateStr) {\n this._isInvalidDateInput = !this.allowNull;\n this.selectedRangeDate = { start: null, end: null };\n this._refreshCurrentlyDisplayedCalendarDate(this.selectedRangeDate.start);\n this.onChange(this.selectedRangeDate);\n this.selectedRangeDateChange.emit(this.selectedRangeDate);\n return;\n }\n\n const [startDateStr, endDateStr] = dateStr.split(this._rangeDelimiter);\n const startDate = this._parseDate(startDateStr);\n const endDate = this._parseDate(endDateStr);\n\n if (\n !this._dateTimeAdapter.datesEqual(startDate, this.selectedRangeDate.start) ||\n !this._dateTimeAdapter.datesEqual(endDate, this.selectedRangeDate.end)\n ) {\n let selectedRangeDate: DateRange<D> | null = null;\n\n if (\n this._dateTimeAdapter.isValid(startDate) &&\n this._dateTimeAdapter.isValid(endDate) &&\n this._dateTimeAdapter.compareDate(startDate, endDate) > 0\n ) {\n selectedRangeDate = { start: endDate, end: startDate };\n } else {\n selectedRangeDate = { start: startDate, end: endDate };\n }\n\n this._isInvalidDateInput = !this._isRangeModelValid(selectedRangeDate);\n this.selectedRangeDate = selectedRangeDate;\n this.selectedRangeDateChange.emit(this.selectedRangeDate);\n this.onChange(this.selectedRangeDate);\n\n if (this._isStartDateValid(this.selectedRangeDate.start)) {\n this._refreshCurrentlyDisplayedCalendarDate(this.selectedRangeDate.start);\n }\n }\n }\n\n /**\n * @hidden\n * Updates the selected multiple dates from a date string.\n * @param dateStr The date string to parse and update the selected multiple dates.\n */\n private updateMultipleDates(dateStr: string): void {\n if (!dateStr) {\n this._isInvalidDateInput = !this.allowNull;\n this.selectedMultipleDates = [];\n this._refreshCurrentlyDisplayedCalendarDate(null);\n this.onChange(this.selectedMultipleDates);\n this.selectedMultipleDatesChange.emit(this.selectedMultipleDates);\n return;\n }\n\n const parsedDates = this.parseDateString(dateStr);\n\n // Check if the new parsed dates are different from the previously selected dates\n const datesChanged = !this._areDatesEqual(parsedDates, this.selectedMultipleDates);\n\n if (datesChanged) {\n this._isInvalidDateInput = !this._isMultipleModelValid(parsedDates);\n\n if (!this._isInvalidDateInput) {\n this._refreshCurrentlyDisplayedCalendarDate(parsedDates[0]);\n }\n\n this.selectedMultipleDates = parsedDates;\n this.onChange(this.selectedMultipleDates);\n this.selectedMultipleDatesChange.emit(this.selectedMultipleDates);\n }\n }\n\n /** Helper method to compare two arrays of dates */\n private _areDatesEqual(dates1: D[], dates2: D[]): boolean {\n if (dates1.length !== dates2.length) {\n return false;\n }\n return dates1.every((date, index) => this._dateTimeAdapter.datesEqual(date, dates2[index]));\n }\n\n /**\n * @hidden\n * Updates the selected multiple date ranges from a date string.\n * @param dateStr The date string to parse and update the selected multiple date ranges.\n */\n private _updateMultipleDateRanges(dateStr: string): void {\n if (!dateStr) {\n this._isInvalidDateInput = !this.allowNull;\n this.selectedMultipleDateRanges = [{ start: null, end: null }];\n this._refreshCurrentlyDisplayedCalendarDate(null);\n this.onChange(this.selectedMultipleDateRanges);\n this.selectedMultipleDateRangesChange.emit(this.selectedMultipleDateRanges);\n return;\n }\n\n const rangeStrings = dateStr.split(',').map((range) => range.trim());\n const parsedRanges = rangeStrings.map((rangeStr) => {\n const [startStr, endStr] = rangeStr.split(this._rangeDelimiter).map((date) => date.trim());\n return {\n start: this._parseDate(startStr),\n end: this._parseDate(endStr)\n };\n });\n\n // Check if the new parsed ranges are different from the previously selected ranges\n const rangesChanged = !this._areDateRangesEqual(parsedRanges, this.selectedMultipleDateRanges);\n\n this._isInvalidDateInput = !this._isMultipleRangesModelValid(parsedRanges);\n\n if (!this._isInvalidDateInput && rangesChanged) {\n if (this._isStartDateValid(this.selectedMultipleDateRanges[0].start)) {\n this._refreshCurrentlyDisplayedCalendarDate(this.selectedMultipleDateRanges[0].start);\n }\n this.selectedMultipleDateRanges = parsedRanges;\n this.onChange(this.selectedMultipleDateRanges);\n this.selectedMultipleDateRangesChange.emit(this.selectedMultipleDateRanges);\n }\n }\n\n /** Helper method to compare two arrays of date ranges */\n private _areDateRangesEqual(ranges1: DateRange<D>[], ranges2: DateRange<D>[]): boolean {\n if (ranges1.length !== ranges2.length) {\n return false;\n }\n return ranges1.every(\n (range, index) =>\n this._dateTimeAdapter.datesEqual(range.start, ranges2[index].start) &&\n this._dateTimeAdapter.datesEqual(range.end, ranges2[index].end)\n );\n }\n}\n","<ng-template [ngTemplateOutlet]=\"mobile ? controlTemplate : desktopTemplate\"></ng-template>\n<ng-template #popoverMessageTemplate>\n @if (_message) {\n <fd-form-message [embedded]=\"true\" [type]=\"state\">\n {{ _message }}\n </fd-form-message>\n }\n</ng-template>\n<ng-template #desktopTemplate>\n <fd-popover\n [(isOpen)]=\"isOpen\"\n (beforeOpen)=\"_beforePopoverOpen()\"\n (isOpenChange)=\"_onOpenStateChanged($event)\"\n [triggers]=\"[]\"\n [placement]=\"placement\"\n [disabled]=\"disabled\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"false\"\n [appendTo]=\"appendTo\"\n >\n <fd-popover-control>\n <ng-template [ngTemplateOutlet]=\"controlTemplate\"></ng-template>\n </fd-popover-control>\n <fd-popover-body [attr.aria-expanded]=\"isOpen\" [attr.aria-hidden]=\"!isOpen\">\n @if (_showPopoverContents) {\n <ng-template [ngTemplateOutlet]=\"popoverMessageTemplate\"></ng-template>\n <ng-content></ng-content>\n <ng-template [ngTemplateOutlet]=\"calendarTemplate\"></ng-template>\n }\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n<ng-template #controlTemplate>\n <fd-input-group\n #inputGroupComponent\n [state]=\"state\"\n [disabled]=\"disabled\"\n [isControl]=\"true\"\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n glyph=\"appointment-2\"\n [isExpanded]=\"isOpen\"\n [glyphAriaLabel]=\"('coreDatePicker.displayCalendarToggleLabel' | fdTranslate)()\"\n [iconTitle]=\"('coreDatePicker.displayCalendarToggleLabel' | fdTranslate)()\"\n (addOnButtonClicked)=\"toggleCalendar()\"\n >\n <input\n type=\"text\"\n class=\"fd-input\"\n fd-input-group-input\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [attr.id]=\"inputId\"\n aria-haspopup=\"grid\"\n aria-autocomplete=\"none\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"(_dateInputArialLabelKey | fdTranslate)()\"\n [attr.aria-required]=\"required\"\n [attr.aria-describedby]=\"_formValueStateMessageId\"\n [ngModel]=\"_inputFieldDate\"\n (keyup.enter)=\"handleInputChange($any($event.target).value, false)\"\n (keydown.f4)=\"toggleCalendar()\"\n (ngModelChange)=\"handleInputChange($event, true)\"\n (click)=\"mobile && openCalendar()\"\n (blur)=\"_onBlur($event)\"\n />\n </fd-input-group>\n</ng-template>\n<ng-template #calendarTemplate>\n <fd-calendar\n [activeView]=\"activeView\"\n [markWeekends]=\"markWeekends\"\n [specialDaysRules]=\"specialDaysRules\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [allowMultipleSelection]=\"allowMultipleSelection\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [yearGrid]=\"yearGrid\"\n [calType]=\"type\"\n [rangeHoverEffect]=\"rangeHoverEffect\"\n [disableFunction]=\"disableFunction\"\n [disableRangeStartFunction]=\"disableRangeStartFunction\"\n [disableRangeEndFunction]=\"disableRangeEndFunction\"\n [selectedDate]=\"selectedDate\"\n [selectedMultipleDates]=\"selectedMultipleDates\"\n [selectedRangeDate]=\"selectedRangeDate\"\n [selectedMultipleDateRanges]=\"selectedMultipleDateRanges\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n [previousButtonDisableFunction]=\"previousButtonDisableFunction\"\n [nextButtonDisableFunction]=\"nextButtonDisableFunction\"\n [showCalendarLegend]=\"showCalendarLegend()\"\n [legendCol]=\"legendCol()\"\n [mobileLandscape]=\"mobile && mobileLandscape\"\n [mobilePortrait]=\"mobile && mobilePortrait\"\n [dateRangeFormat]=\"dateRangeFormat\"\n (selectedDateChange)=\"handleSingleDateChange($event)\"\n (selectedMultipleDatesChange)=\"handleMultipleDatesChange($event)\"\n (selectedRangeDateChange)=\"handleRangeDateChange($event)\"\n (selectedMultipleDateRangesChange)=\"handleMultipleDateRangesChange($event)\"\n (activeViewChange)=\"handleCalendarActiveViewChange($event)\"\n (closeCalendar)=\"closeFromCalendar()\"\n ></fd-calendar>\n @if (showTodayButton) {\n <div fd-bar barDesign=\"footer\" class=\"fd-date-picker__bar\">\n <div fd-bar-right>\n <fd-bar-element>\n <button\n fd-button\n [label]=\"('coreCalendar.todayLabel' | fdTranslate)()\"\n (click)=\"onTodayButtonClick()\"\n ></button>\n </fd-bar-element>\n </div>\n </div>\n }\n</ng-template>\n<div [style.display]=\"'none'\" aria-hidden=\"true\">\n <div [attr.id]=\"_formValueStateMessageId\" aria-atomic=\"true\" aria-live=\"assertive\">\n @switch (state) {\n @case ('success') {\n {{ ('coreDatePicker.valueStateSuccessMessage' | fdTranslate)() }}\n }\n @case ('information') {\n {{ ('coreDatePicker.valueStateInformationMessage' | fdTranslate)() }}\n }\n @case ('warning') {\n {{ ('coreDatePicker.valueStateWarningMessage' | fdTranslate)() }}\n }\n @case ('error') {\n {{ ('coreDatePicker.valueStateErrorMessage' | fdTranslate)() }}\n }\n }\n {{ _message }}\n </div>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { DatePickerMobileComponent } from './date-picker-mobile/date-picker-mobile.component';\nimport { DatePickerComponent } from './date-picker.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [DatePickerComponent, DatePickerMobileComponent],\n exports: [DatePickerComponent, DatePickerMobileComponent]\n})\nexport class DatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-date-picker.mjs","sources":["../../../../libs/core/date-picker/tokens.ts","../../../../libs/core/date-picker/date-picker-mobile/date-picker-mobile.component.ts","../../../../libs/core/date-picker/date-picker-mobile/date-picker-mobile.component.html","../../../../libs/core/date-picker/errors.ts","../../../../libs/core/date-picker/date-picker.component.ts","../../../../libs/core/date-picker/date-picker.component.html","../../../../libs/core/date-picker/date-picker.module.ts","../../../../libs/core/date-picker/fundamental-ngx-core-date-picker.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { DatePicker } from './date-picker.model';\n\nexport const FD_DATE_PICKER_COMPONENT = new InjectionToken<DatePicker<any>>('FdDatePickerComponent');\nexport const FD_DATE_PICKER_MOBILE_CONFIG = new InjectionToken<MobileModeConfig>('FdDatePickerMobileConfig');\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { InitialFocusDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { DateRange } from '@fundamental-ngx/core/calendar';\nimport {\n DialogBodyComponent,\n DialogCloseButtonComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { MobileModeBase, MobileModeControl } from '@fundamental-ngx/core/mobile-mode';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { DatePicker } from '../date-picker.model';\nimport { FD_DATE_PICKER_COMPONENT, FD_DATE_PICKER_MOBILE_CONFIG } from '../tokens';\n\n@Component({\n selector: 'fd-date-picker-mobile',\n templateUrl: './date-picker-mobile.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n TitleComponent,\n NgTemplateOutlet,\n DialogFooterComponent,\n DialogComponent,\n DialogBodyComponent,\n DialogCloseButtonComponent,\n DialogHeaderComponent,\n ButtonBarComponent,\n InitialFocusDirective\n ]\n})\nexport class DatePickerMobileComponent<D> extends MobileModeBase<DatePicker<D>> {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** @hidden */\n private _selectedBackup: D | Array<D> | DateRange<D> | Array<DateRange<D>>;\n\n /** @hidden */\n constructor(\n @Inject(FD_DATE_PICKER_MOBILE_CONFIG)\n public datePickerConfig: { calendarTemplate: TemplateRef<any>; controlTemplate: TemplateRef<any> },\n @Inject(FD_DATE_PICKER_COMPONENT) datePickerComponent: DatePicker<D>\n ) {\n super(datePickerComponent, MobileModeControl.DATE_PICKER);\n\n this._component.isOpenChange.subscribe((isOpen) => {\n this._toggleDialog(isOpen);\n });\n }\n\n /** @hidden */\n _getShowCalendarLegend(): boolean {\n const show = this._component.showCalendarLegend;\n if (typeof show === 'boolean') {\n return show;\n }\n\n return (show as any)?.() || false;\n }\n\n /** @hidden */\n _getLegendCol(): boolean {\n const col = this._component.legendCol;\n if (typeof col === 'boolean') {\n return col;\n }\n\n return (col as any)?.() || false;\n }\n\n /** @hidden */\n handleApprove(): void {\n this.dialogRef.close();\n this._component.dialogApprove();\n }\n\n /** @hidden */\n handleDismiss(): void {\n this.dialogRef.dismiss();\n this._component.dialogDismiss(this._selectedBackup);\n }\n\n /** @hidden */\n private _toggleDialog(open: boolean): void {\n if (open) {\n this._selectedBackup = this._component.getSelectedDate();\n if (!this._dialogService.hasOpenDialogs()) {\n this._open();\n }\n }\n }\n\n /** @hidden */\n private _open(): void {\n this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n mobile: true,\n backdropClickCloseable: false,\n disablePaddings: true,\n ...this.dialogConfig,\n container: this._elementRef.nativeElement\n });\n\n this._selectedBackup = this._component.getSelectedDate();\n\n const refSub = this.dialogRef.afterClosed.pipe(takeUntilDestroyed(this._destroyRef)).subscribe({\n error: (type) => {\n if (type === 'escape') {\n this._component.dialogDismiss(this._selectedBackup);\n refSub.unsubscribe();\n }\n }\n });\n }\n}\n","<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n @if (mobileConfig.title) {\n <h1 fd-title>{{ mobileConfig.title }}</h1>\n }\n @if (mobileConfig.hasCloseButton) {\n <button title=\"Close\" fd-dialog-close-button [mobile]=\"true\" (click)=\"handleDismiss()\"></button>\n }\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-template [ngTemplateOutlet]=\"datePickerConfig.calendarTemplate || null\"></ng-template>\n </fd-dialog-body>\n <fd-dialog-footer>\n @if (mobileConfig.approveButtonText) {\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText!\" (click)=\"handleApprove()\">\n </fd-button-bar>\n }\n @if (mobileConfig.cancelButtonText) {\n <fd-button-bar fdkInitialFocus [label]=\"mobileConfig.cancelButtonText!\" (click)=\"handleDismiss()\">\n </fd-button-bar>\n }\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n","/** Creates an error to be thrown when attempting to use an invalid date implementation. */\nexport function createMissingDateImplementationError(provider: string): Error {\n return Error(\n `FdDatePicker: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: FdDatetimeModule, or provide a ` +\n `custom implementation.`\n );\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n DestroyRef,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n inject,\n Injector,\n input,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { DynamicComponentService, FocusTrapService, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { BarComponent, BarElementDirective, BarRightDirective } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n CalendarComponent,\n CalendarLegendFocusingService,\n CalendarType,\n CalendarTypeEnum,\n CalendarYearGrid,\n DateRange,\n DaysOfWeek,\n FdCalendarView,\n FdCalendarViewEnum,\n NavigationButtonDisableFunction\n} from '@fundamental-ngx/core/calendar';\nimport { DATE_TIME_FORMATS, DatetimeAdapter, DateTimeFormats } from '@fundamental-ngx/core/datetime';\nimport {\n FormItemControl,\n FormMessageComponent,\n PopoverFormMessageService,\n registerFormItemControl\n} from '@fundamental-ngx/core/form';\nimport { InputGroupComponent, InputGroupInputDirective } from '@fundamental-ngx/core/input-group';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverModule, PopoverService } from '@fundamental-ngx/core/popover';\nimport { Placement, SpecialDayRule } from '@fundamental-ngx/core/shared';\nimport { FdLanguageKeyIdentifier, FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { DatePickerMobileComponent } from './date-picker-mobile/date-picker-mobile.component';\nimport { DatePicker } from './date-picker.model';\nimport { createMissingDateImplementationError } from './errors';\nimport { FD_DATE_PICKER_COMPONENT, FD_DATE_PICKER_MOBILE_CONFIG } from './tokens';\n\nlet datePickerCounter = 0;\n\n/**\n * The datetime picker component is an opinionated composition of the fd-popover and\n * fd-calendar components to accomplish the UI pattern for picking a date.\n *\n * Supports Angular Forms.\n * ```html\n * <fd-date-picker [(ngModel)]=\"date\"></fd-date-picker>\n * ```\n *\n */\n@Component({\n selector: 'fd-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrl: './date-picker.component.scss',\n host: {\n '(blur)': 'onTouched()',\n '[class.fd-date-picker]': 'true',\n '[class.fd-date-picker-custom]': 'inline'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n },\n {\n provide: FD_DATE_PICKER_COMPONENT,\n useExisting: DatePickerComponent\n },\n registerFormItemControl(DatePickerComponent),\n PopoverFormMessageService,\n PopoverService,\n DynamicComponentService,\n CalendarLegendFocusingService\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n PopoverModule,\n FormMessageComponent,\n InputGroupComponent,\n InputGroupInputDirective,\n FormsModule,\n CalendarComponent,\n BarComponent,\n BarRightDirective,\n BarElementDirective,\n ButtonComponent,\n FdTranslatePipe\n ]\n})\nexport class DatePickerComponent<D>\n implements\n DatePicker<D>,\n OnInit,\n OnDestroy,\n OnChanges,\n AfterViewInit,\n ControlValueAccessor,\n Validator,\n FormItemControl\n{\n /** The type of calendar, 'single' for single date selection or 'range' for a range of dates. */\n @Input()\n type: CalendarType = CalendarTypeEnum.Single;\n\n /** Date picker input placeholder string */\n @Input()\n placeholder = '';\n\n /** ID attribute for input element inside DatePicker component */\n @Input()\n inputId: string;\n\n /** If it is mandatory field */\n @Input()\n required = false;\n\n /** Define a custom datetime format. Can be a string for DayjsDatetimeAdapter or object for FdDatetimeAdapter */\n @Input()\n customDateTimeFormat: unknown;\n\n /** Text displayed in message */\n @Input()\n set message(message: string) {\n this._message = message;\n }\n\n /** The trigger events that will open/close the message box.\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp). */\n @Input()\n set messageTriggers(triggers: string[]) {\n this._messageTriggers = triggers;\n this._popoverFormMessage.triggers = triggers;\n }\n\n /** The currently selected date model in single mode. */\n @Input()\n selectedDate: Nullable<D>;\n\n /** The currently selected date model in multiple mode. */\n @Input()\n selectedMultipleDates: Array<D> = [];\n\n /** The currently selected date model with start and end in range mode. */\n @Input()\n selectedRangeDate: DateRange<D> = { start: null, end: null };\n\n /** The currently selected date model with multiple ranges. */\n @Input()\n selectedMultipleDateRanges: Array<DateRange<D>> = [];\n\n /** The day of the week the calendar should start on. 1 represents Sunday, 2 is Monday, 3 is Tuesday, and so on. */\n @Input()\n startingDayOfWeek: DaysOfWeek;\n\n /**\n * Whether user wants to mark day cells on hover.\n * Works only on range mode, when start date is selected on Day View.\n */\n @Input()\n rangeHoverEffect = false;\n\n /** Whether to validate the date picker input. */\n @Input()\n useValidation = true;\n\n /** Whether a null input is considered valid. */\n @Input()\n allowNull = true;\n\n /** Actually shown active view one of 'day' | 'month' | 'year' in calendar component*/\n @Input()\n activeView: FdCalendarView = FdCalendarViewEnum.Day;\n\n /**\n * The placement of the popover. It can be one of: top, top-start, top-end, bottom,\n * bottom-start, bottom-end, right, right-start, right-end, left, left-start, left-end.\n */\n @Input()\n placement: Placement = 'bottom-start';\n\n /** The element to which the popover should be appended. */\n @Input()\n appendTo: ElementRef;\n\n /** Whether the date picker is disabled. */\n @Input()\n disabled: boolean;\n\n /** Defines if date picker should be closed after date choose */\n @Input()\n closeOnDateChoose = true;\n\n /** Enables Today-Selection-Button if true */\n @Input()\n showTodayButton = false;\n\n /** Label for Today-Selection-Button */\n @Input()\n todayButtonLabel = 'Today';\n\n /**\n * Function used to disable previous button in the calendar header.\n */\n @Input()\n previousButtonDisableFunction: NavigationButtonDisableFunction<D>;\n\n /**\n * Function used to disable next button in the calendar header.\n */\n @Input()\n nextButtonDisableFunction: NavigationButtonDisableFunction<D>;\n\n /**\n * @deprecated Popover is toggled with f4 key\n */\n @Input()\n buttonFocusable = false;\n\n /**\n * Special days mark, it can be used by passing array of object with\n * Special day number, list 1-20 [class:`fd-calendar__item--legend-{{number}}`] is available there:\n * https://sap.github.io/fundamental-styles/components/calendar.html calendar special days section\n * Rule accepts method with FdDate object as a parameter. ex:\n * `rule: (fdDate: FdDate) => fdDate.getDay() === 1`, which will mark all sundays as special day.\n */\n @Input()\n specialDaysRules: SpecialDayRule<D>[] = [];\n\n /**\n * Object to customize year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n yearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 5\n };\n\n /**\n * Object to customize aggregated year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n aggregatedYearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 3\n };\n\n /**\n * Whether user wants to mark sunday/saturday with `fd-calendar__item--weekend` class\n */\n @Input()\n markWeekends = true;\n\n /**\n * Whether user wants to show week numbers next to days\n */\n @Input()\n showWeekNumbers = true;\n\n /**\n * Whether the user wants to select multiple days or multiple range dates.\n * If `displayWeekNumbers` is true, the user can click on the week number to mark the related row.\n * The user can click on week days to mark the related column.\n * Note: Clickable selection for week row or column does not work for range selections.\n */\n @Input()\n allowMultipleSelection = false;\n\n /** Should date picker be inlined. */\n @Input()\n inline = true;\n\n /** aria-labelledby for element describing date-picker. */\n @Input()\n ariaLabelledBy: Nullable<string>;\n\n /**\n * Whether to recalculate value from the input as user types or on blur.\n * By default, updates the value as user types.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n processInputOnBlur = false;\n\n /**\n * Whether to prevent page scrolling when focusing date picker input field after calendar has been closed.\n */\n @Input()\n preventScrollOnFocus = false;\n\n /** Whether date picker should rendered in mobile mode. */\n @Input()\n mobile = false;\n\n /** Mobile mode configuration. */\n @Input()\n mobileConfig: MobileModeConfig;\n\n /** Whether calendar is used inside mobile in landscape mode, it also adds close button on right side */\n @Input()\n mobileLandscape = false;\n\n /** Whether calendar is used inside mobile in portrait mode */\n @Input()\n mobilePortrait = false;\n\n /** Whether to select and display the date range in MM/YYYY or YYYY format\n * For month and year format value is 'month'\n * For year format value is 'year'\n */\n @Input()\n dateRangeFormat = '';\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n readonly isOpenChange = new EventEmitter<boolean>();\n\n /** Event thrown every time selected date in single mode is changed */\n @Output()\n readonly selectedDateChange: EventEmitter<Nullable<D>> = new EventEmitter<Nullable<D>>();\n\n /** Event thrown every time the selected dates in multiple mode are changed. */\n @Output()\n readonly selectedMultipleDatesChange: EventEmitter<Array<D>> = new EventEmitter<Array<D>>();\n\n /** Event thrown every time selected first or last date in range mode is changed */\n @Output()\n readonly selectedRangeDateChange: EventEmitter<DateRange<D>> = new EventEmitter<DateRange<D>>();\n\n /** Event thrown every time the first or last date in multiple range mode is changed. */\n @Output()\n readonly selectedMultipleDateRangesChange: EventEmitter<Array<DateRange<D>>> = new EventEmitter<\n Array<DateRange<D>>\n >();\n\n /** Event thrown every time calendar active view is changed */\n @Output()\n readonly activeViewChange = new EventEmitter<FdCalendarView>();\n\n /** @hidden */\n @ViewChild('inputGroupComponent', {\n read: ElementRef\n })\n _inputGroupElement: ElementRef;\n\n /** @hidden */\n @ViewChild(InputGroupInputDirective, {\n read: ElementRef\n })\n _inputElement: ElementRef<HTMLInputElement>;\n\n /** @hidden */\n @ViewChild('controlTemplate')\n private readonly _controlTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('calendarTemplate')\n private readonly _calendarTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('popoverMessageTemplate')\n private readonly _messagePopoverTemplate: TemplateRef<any>;\n\n /** @hideen */\n @ViewChildren(CalendarComponent)\n private readonly _calendars: QueryList<CalendarComponent<D>>;\n\n /** Whether to display the calendar legend below the calendar. Default is false. */\n showCalendarLegend = input(false, { transform: booleanAttribute });\n\n /** Whether the legend should display in column layout instead of row layout. Default is false. */\n legendCol = input(false, { transform: booleanAttribute });\n\n /**\n * The state of the form control - applies css classes.\n * Also, this is applied to message.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n @Input()\n set state(state: Nullable<FormStates>) {\n this._state = state || 'default';\n }\n\n /** @hidden */\n get state(): FormStates {\n if (this._state == null && this.useValidation && this._isInvalidDateInput) {\n return 'error';\n }\n return this._state;\n }\n\n /** Whether the date picker is open. Can be used through two-way binding. */\n @Input()\n set isOpen(value: boolean) {\n if (value === this._isOpen) {\n return;\n }\n this._isOpen = value;\n this._showPopoverContents = value;\n this._changeDetectionRef.detectChanges();\n }\n\n get isOpen(): boolean {\n return this._isOpen;\n }\n\n /** @hidden */\n _calendarComponent: CalendarComponent<D>;\n\n /** @hidden */\n _message: string | null = null;\n\n /** @hidden */\n _messageTriggers: string[] = ['focusin', 'focusout'];\n\n /** @hidden The value of the input */\n _inputFieldDate: string | null = null;\n\n /** @hidden Whether the date input is invalid */\n _isInvalidDateInput = false;\n\n /** @hidden */\n _showPopoverContents = false;\n\n /** @hidden */\n readonly _formValueStateMessageId = `fd-date-picker-form-message-${datePickerCounter++}`;\n\n /** @hidden */\n private _isOpen = false;\n\n /** @hidden */\n private _calendarPendingDate: Nullable<D>;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _state: FormStates = 'default';\n\n /** @hidden */\n private readonly _injector = inject(Injector);\n\n /** @hidden */\n private readonly _dynamicComponentService = inject(DynamicComponentService);\n\n /** @hidden */\n private readonly _focusTrapService = inject(FocusTrapService, {\n optional: true\n });\n\n /** @hidden */\n private _mobileComponentRef: Nullable<ComponentRef<DatePickerMobileComponent<D>>>;\n\n /** @hidden */\n get _rangeDelimiter(): string {\n return this._dateTimeFormats.rangeDelimiter;\n }\n\n /**\n * Date input aria label key based on type\n * @hidden\n */\n get _dateInputArialLabelKey(): FdLanguageKeyIdentifier {\n // return either input value or a key for \"fdTranslate\" pipe\n return this.type === CalendarTypeEnum.Range\n ? 'coreDatePicker.dateRangeInputLabel'\n : 'coreDatePicker.dateInputLabel';\n }\n\n /** @hidden */\n constructor(\n private _changeDetectionRef: ChangeDetectorRef,\n // Use @Optional to avoid angular injection error message and throw our own which is more precise one\n @Optional()\n private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional()\n @Inject(DATE_TIME_FORMATS)\n private _dateTimeFormats: DateTimeFormats,\n private _popoverFormMessage: PopoverFormMessageService\n ) {\n if (!this._dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n if (!this._dateTimeFormats) {\n throw createMissingDateImplementationError('DATE_TIME_FORMATS');\n }\n }\n\n /**\n * Function used to disable certain dates in the calendar.\n */\n @Input()\n disableFunction: (value: D) => boolean = () => false;\n\n /**\n * Function used to disable certain dates in the calendar for the range start selection.\n */\n @Input()\n disableRangeStartFunction: (value: D) => boolean = () => false;\n\n /**\n * Function used to disable certain dates in the calendar for the range end selection.\n */\n @Input()\n disableRangeEndFunction: (value: D) => boolean = () => false;\n\n /** @hidden */\n onChange: (value: any) => void = () => {};\n\n /** @hidden */\n onTouched: any = () => {};\n\n /** @hidden */\n dialogApprove(): void {}\n\n /** @hidden */\n dialogDismiss(prevValue: D | Array<D> | DateRange<D> | Array<DateRange<D>>): void {\n if (this.allowMultipleSelection) {\n if (this._isMultipleDateRanges(prevValue)) {\n this.handleMultipleDateRangesChange(prevValue);\n } else {\n const value = prevValue as Array<D>;\n this.handleMultipleDatesChange(value);\n }\n } else {\n if (this._isDateRange(prevValue)) {\n this.handleRangeDateChange(prevValue);\n } else {\n const value = prevValue as D;\n this.handleSingleDateChange(value);\n }\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n // initial view should be month or year if dateRangeFormat is provided\n if (this.dateRangeFormat === 'month') {\n this.activeView = FdCalendarViewEnum.Month;\n } else if (this.dateRangeFormat === 'year') {\n this.activeView = FdCalendarViewEnum.Year;\n }\n\n this._dateTimeAdapter.localeChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this.formatInputDate(this.selectedDate);\n this._changeDetectionRef.detectChanges();\n });\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if ('isOpen' in changes) {\n this._showPopoverContents = this.isOpen;\n this._changeDetectionRef.detectChanges();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._InitialiseVariablesInMessageService();\n\n this._calendars.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n const calendar = this._calendars.first;\n this._calendarComponent = calendar;\n setTimeout(() => {\n if (this._calendarComponent) {\n this._focusTrapService?.pauseCurrentFocusTrap();\n } else {\n this._focusTrapService?.unpauseCurrentFocusTrap();\n }\n\n calendar?.setCurrentlyDisplayed(this._calendarPendingDate);\n calendar?.initialFocus();\n });\n });\n\n if (this.mobile) {\n this._setUpMobileMode();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._mobileComponentRef?.destroy();\n }\n\n /**\n * Method that handle calendar active view change and throws event.\n */\n handleCalendarActiveViewChange(activeView: FdCalendarView): void {\n this.activeViewChange.emit(activeView);\n }\n\n /** @hidden */\n closeFromCalendar(): void {\n if (this.type === CalendarTypeEnum.Single && this.closeOnDateChoose && !this.allowMultipleSelection) {\n this.onTouched();\n this.closeCalendar();\n }\n }\n\n /** Opens the calendar */\n openCalendar(): void {\n if (this.disabled) {\n return;\n }\n this._setOpenState(true);\n this._changeMessageVisibility();\n }\n\n /** Toggles the calendar open or closed */\n toggleCalendar(): void {\n if (this.disabled) {\n return;\n }\n this._setOpenState(!this.isOpen);\n if (!this.isOpen) {\n this.onTouched();\n }\n this._changeMessageVisibility();\n }\n\n /** Closes the calendar if it is open */\n closeCalendar(): void {\n if (!this.isOpen) {\n return;\n }\n this._setOpenState(false);\n this._changeMessageVisibility();\n }\n\n /**\n * @hidden\n * Method that is triggered by events from calendar component, when there is selected single date changed\n */\n handleSingleDateChange(date: D): void {\n if (!date) {\n return;\n }\n this.selectedDate = date;\n this.selectedDateChange.emit(date);\n this.onChange(date);\n this._refreshCurrentlyDisplayedCalendarDate(date);\n this.formatInputDate(date);\n this._isInvalidDateInput = !this.isModelValid();\n if (this.closeOnDateChoose && this.type === CalendarTypeEnum.Single) {\n this.closeCalendar();\n }\n }\n\n /**\n * @hidden\n * Method that is triggered by events from the calendar component when the selected multiple dates change.\n */\n handleMultipleDatesChange(dates: Array<D>): void {\n if (!dates || dates.length === 0) {\n this.selectedMultipleDates = [];\n this.selectedMultipleDatesChange.emit([]);\n this.onChange([]);\n this._refreshCurrentlyDisplayedCalendarDate(null);\n this._inputFieldDate = null;\n return;\n }\n this.selectedMultipleDates = dates;\n this.selectedMultipleDatesChange.emit(dates);\n this.onChange(dates);\n /** Assuming the first date in the array is used for refresh */\n if (this.showTodayButton) {\n this._refreshCurrentlyDisplayedCalendarDate(dates[0]);\n }\n this._inputFieldDate = this.formatDateArray(dates);\n this._isInvalidDateInput = !this.isModelValid();\n }\n\n /**\n * @hidden\n * Method that is triggered by events from calendar component, when there is selected range date changed\n */\n handleRangeDateChange(dates: DateRange<D>): void {\n const startChanged = !this._dateTimeAdapter.datesEqual(dates.start, this.selectedRangeDate.start);\n const endChanged = !this._dateTimeAdapter.datesEqual(dates.end, this.selectedRangeDate.end);\n if (dates && (startChanged || endChanged)) {\n const shouldClose = this.closeOnDateChoose && dates.end !== null;\n if (dates.end !== null) {\n this._inputFieldDate = this._formatDateRange(dates);\n this.selectedRangeDate = {\n start: dates.start,\n end: dates.end\n };\n this.selectedRangeDateChange.emit(this.selectedRangeDate);\n this.onChange(this.selectedRangeDate);\n this._refreshCurrentlyDisplayedCalendarDate(dates.start);\n this._isInvalidDateInput = !this.isModelValid();\n }\n if (shouldClose) {\n this.closeCalendar();\n }\n }\n }\n\n /**\n * @hidden\n * Method that is triggered by events from the calendar component when the selected multiple range dates change.\n */\n handleMultipleDateRangesChange(dates: Array<DateRange<D>>): void {\n let hasChanged = false;\n\n // Check for changes in the date ranges\n if (dates.length !== this.selectedMultipleDateRanges.length) {\n hasChanged = true;\n } else {\n for (let i = 0; i < dates.length; i++) {\n if (\n !this._dateTimeAdapter.datesEqual(dates[i].start, this.selectedMultipleDateRanges[i].start) ||\n !this._dateTimeAdapter.datesEqual(dates[i].end, this.selectedMultipleDateRanges[i].end)\n ) {\n hasChanged = true;\n break;\n }\n }\n }\n\n // If any date range has changed, update the internal state and emit changes\n if (hasChanged) {\n this.selectedMultipleDateRanges = dates;\n\n // Update the formatted input field\n this._inputFieldDate = this._formatMultipleDateRanges(dates);\n\n // Emit the change event\n this.selectedMultipleDateRangesChange.emit(this.selectedMultipleDateRanges);\n\n // Perform any additional actions such as updating the model or refreshing the calendar\n this.onChange(this.selectedMultipleDateRanges);\n // if you want to refresh the calendar view, you can use the following line\n // this._refreshCurrentlyDisplayedCalendarDate(dates[0].start);\n this._calendarPendingDate = dates[0].start;\n this._isInvalidDateInput = !this.isModelValid();\n }\n }\n\n /**\n * @hidden\n * Method that is triggered date formatting in the date control\n */\n formatInputDate(date: Nullable<D>): void {\n if (!date) {\n return;\n }\n this._inputFieldDate = this._formatDate(date);\n }\n\n /**\n * @hidden\n * Method that is triggered when Today-Selection-Button clicked, it changes selected date or date range to today's date\n */\n onTodayButtonClick(): void {\n const todayDate = this._dateTimeAdapter.today();\n if (this.allowMultipleSelection) {\n if (this.type === CalendarTypeEnum.Single) {\n this.handleMultipleDatesChange([todayDate]);\n this.closeFromCalendar();\n } else if (this.type === CalendarTypeEnum.Range) {\n this.handleMultipleDateRangesChange([\n {\n start: todayDate,\n end: todayDate\n }\n ]);\n }\n } else {\n if (this.type === CalendarTypeEnum.Single) {\n this.handleSingleDateChange(todayDate);\n this.closeFromCalendar();\n } else if (this.type === CalendarTypeEnum.Range) {\n this.handleRangeDateChange({\n start: todayDate,\n end: todayDate\n });\n }\n }\n }\n\n /**\n * @hidden\n * Method that is triggered when the text input is confirmed to ba changed, by clicking enter, or blur\n */\n handleInputChange(strDate: string, isTypeEvent: boolean): void {\n if ((isTypeEvent && this.processInputOnBlur) || (!isTypeEvent && !this.processInputOnBlur)) {\n // if processInputOnBlur === true, ignore type event\n // if processInputOnBlur === false, ignore blur/enter event\n return;\n }\n this.dateStringUpdate(strDate);\n }\n\n /**\n * @hidden\n * Function that implements Validator Interface, adds validation support for forms\n */\n validate(): {\n [key: string]: any;\n } | null {\n return this.isModelValid()\n ? null\n : {\n dateValidation: {\n valid: false\n }\n };\n }\n\n /** @hidden */\n registerOnChange(\n fn: (selected: any) => {\n void;\n }\n ): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /** @hidden */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectionRef.detectChanges();\n }\n\n /**\n * @hidden\n * Function that provides support for ControlValueAccessor that allows to use [(ngModel)] or forms\n */\n writeValue(selected: D | Array<D> | DateRange<D> | Array<DateRange<D>> | null): void {\n /** If written value is not defined, null, empty string */\n if (!selected) {\n this._inputFieldDate = '';\n this._refreshCurrentlyDisplayedCalendarDate(this._dateTimeAdapter.today());\n this.selectedRangeDate = {\n start: null,\n end: null\n };\n this.selectedDate = null;\n this.selectedMultipleDates = [];\n this.selectedMultipleDateRanges = [];\n this._changeDetectionRef.detectChanges();\n return;\n }\n if (this.allowMultipleSelection && Array.isArray(selected)) {\n if (this.type === CalendarTypeEnum.Single) {\n /**\n * For single mode, if the date is invalid, model is changed, it refreshes currently\n * input field text, but it does not refresh currently displayed day\n */\n // selected = this._parseDate(selected)\n selected = <Array<D>>selected;\n\n this.selectedMultipleDates = selected;\n this._inputFieldDate = this.formatDateArray(selected);\n this._refreshCurrentlyDisplayedCalendarDate(selected[0]);\n }\n if (this.type === CalendarTypeEnum.Range) {\n /**\n * For range mode, if the date is invalid, model is changed, but it does not refresh currently\n * displayed day view, or input field text\n */\n selected = selected as Array<DateRange<D>>;\n if (selected && selected.length > 0) {\n const filteredRanges = selected.filter((range) => range.start !== null && range.end !== null);\n if (filteredRanges.length > 0) {\n this.selectedMultipleDateRanges = filteredRanges.map((range) => ({\n start: this._parseDate(range.start),\n end: this._parseDate(range.end)\n }));\n this._refreshCurrentlyDisplayedCalendarDate(filteredRanges[0].start);\n this._inputFieldDate = this._formatMultipleDateRanges(filteredRanges);\n } else {\n this._inputFieldDate = '';\n }\n } else {\n this._inputFieldDate = '';\n }\n }\n } else {\n if (this.type === CalendarTypeEnum.Single) {\n /**\n * For single mode, if the date is invalid, model is changed, it refreshes currently\n * input field text, but it does not refresh currently displayed day\n */\n selected = this._parseDate(selected) as D;\n this.selectedDate = selected;\n this._inputFieldDate = this._formatDate(selected);\n this._refreshCurrentlyDisplayedCalendarDate(selected);\n }\n if (this.type === CalendarTypeEnum.Range) {\n /**\n * For range mode, if the date is invalid, model is changed, but it does not refresh currently\n * displayed day view, or input field text\n */\n selected = selected as DateRange<D>;\n if (selected?.start) {\n this.selectedRangeDate = {\n start: this._parseDate(selected.start),\n end: this._parseDate(selected.end)\n };\n this._refreshCurrentlyDisplayedCalendarDate(selected.start);\n this._inputFieldDate = this._formatDateRange(selected);\n } else {\n this._inputFieldDate = '';\n }\n }\n }\n\n this._isInvalidDateInput = !this.isModelValid();\n this._changeDetectionRef.detectChanges();\n }\n\n /**\n * @hidden\n * Method, which is responsible for transforming string to date, depending on type or\n * validation the results are different. It also changes the state of _isInvalidDateInput\n */\n dateStringUpdate(dateStr: string): void {\n this._inputFieldDate = dateStr;\n if (this.allowMultipleSelection) {\n if (this.type === CalendarTypeEnum.Single) {\n this.updateMultipleDates(dateStr);\n } else {\n this._updateMultipleDateRanges(dateStr);\n }\n } else {\n if (this.type === CalendarTypeEnum.Single) {\n this._updateSingleDate(dateStr);\n } else {\n this._updateRangeDate(dateStr);\n }\n }\n }\n\n /** Method that provides information if model selected date/dates have properly types and are valid */\n isModelValid(): boolean {\n if (this.allowMultipleSelection) {\n if (this.type === CalendarTypeEnum.Single) {\n return this._isMultipleModelValid(this.selectedMultipleDates);\n } else {\n return this._isMultipleRangesModelValid(this.selectedMultipleDateRanges);\n }\n } else {\n if (this.type === CalendarTypeEnum.Single) {\n return this._isSingleModelValid(this.selectedDate);\n } else {\n return this._isRangeModelValid(this.selectedRangeDate);\n }\n }\n }\n\n /** Returns current selected date. */\n getSelectedDate(): D | Array<D> | DateRange<D> | Array<DateRange<D>> {\n return (\n this.selectedDate || this.selectedMultipleDates || this.selectedRangeDate || this.selectedMultipleDateRanges\n );\n }\n\n /** @hidden */\n _changeMessageVisibility(): void {\n if (this.isOpen) {\n this._popoverFormMessage.hide();\n } else {\n this._popoverFormMessage.show();\n }\n }\n\n /** @hidden */\n _onOpenStateChanged(isOpen: boolean): void {\n this.isOpenChange.emit(isOpen);\n this._changeMessageVisibility();\n // focus input control every time popup is closed\n if (!isOpen && this._inputElement) {\n this._inputElement.nativeElement.focus({\n preventScroll: this.preventScrollOnFocus\n });\n }\n }\n\n /**\n * Renders the calendar right before the popover is opened.\n * Used for correct calculations of overlay position and size.\n */\n _beforePopoverOpen(): void {\n this._showPopoverContents = true;\n this._changeDetectionRef.detectChanges();\n }\n\n /** @hidden */\n _onBlur(event: FocusEvent): void {\n this.onTouched();\n this.handleInputChange((event.target as any).value, false);\n }\n\n /** Method that returns info if single model given is valid */\n private _isSingleModelValid(date: Nullable<D>): boolean {\n return (this._isDateValid(date) && !this.disableFunction(date)) || (!date && this.allowNull);\n }\n\n /** Method that returns info if multiple date model given is valid */\n private _isMultipleModelValid(dates: Array<Nullable<D>>): boolean {\n return dates?.every((date) => this._isSingleModelValid(date));\n }\n\n /** Method that returns info if range date model given is valid */\n private _isRangeModelValid(fdRangeDate: DateRange<D>): boolean {\n return (\n (fdRangeDate && this._isStartDateValid(fdRangeDate.start) && this._isEndDateValid(fdRangeDate.end)) ||\n (!fdRangeDate.start && !fdRangeDate.end && this.allowNull)\n );\n }\n\n /** Method that returns info if multiple range date model given is valid */\n private _isMultipleRangesModelValid(ranges: Array<DateRange<D>>): boolean {\n if (!ranges || ranges.length === 0) {\n return this.allowNull;\n }\n return ranges.every((range) => range.start && range.end && this._isRangeModelValid(range));\n }\n\n /** Method that returns info if end date model given is valid */\n private _isEndDateValid(endDate: Nullable<D>): boolean {\n return this._isDateValid(endDate) && !this.disableRangeEndFunction(endDate);\n }\n\n /** Method that returns info if start date model given is valid */\n private _isStartDateValid(startDate: Nullable<D>): boolean {\n return this._isDateValid(startDate) && !this.disableRangeStartFunction(startDate);\n }\n\n /** Method that returns info if given date model is valid */\n private _isDateValid(date: Nullable<D>): date is D {\n return this._dateTimeAdapter.isValid(date);\n }\n\n /** @hidden */\n private _refreshCurrentlyDisplayedCalendarDate(date: Nullable<D>): void {\n this._calendarPendingDate = date;\n this._calendarComponent?.setCurrentlyDisplayed(date);\n }\n\n /** @hidden */\n private _formatDate(date: Nullable<D>): string {\n if (this.customDateTimeFormat) {\n return this._dateTimeAdapter.format(date, this.customDateTimeFormat);\n }\n return this._dateTimeAdapter.format(date, this._dateTimeFormats.display.dateInput);\n }\n\n /** @hidden */\n private formatDateArray(dates: Array<D>): string {\n return dates.map((date) => this._formatDate(date)).join(', ');\n }\n\n /** @hidden */\n private _parseDate(date: unknown): D | null {\n return this._dateTimeAdapter.parse(date, this._dateTimeFormats.parse.dateInput);\n }\n\n /**\n * Helper method to parse a date string into an array of dates.\n * @param dateStr The date string to parse.\n * @returns An array of dates.\n */\n private parseDateString(dateStr: string): D[] {\n return dateStr\n .split(',')\n .map((date) => this._parseDate(date.trim()))\n .filter((date) => date !== null) as D[];\n }\n\n /** @hidden */\n private _formatDateRange(dateRange: DateRange<D>): string {\n const startDate = this._formatDate(dateRange.start);\n const endDate = this._formatDate(dateRange.end);\n return startDate + this._rangeDelimiter + endDate;\n }\n\n /** @hidden */\n private _formatMultipleDateRanges(dateRanges: Array<DateRange<D>>): string {\n return dateRanges.map((dateRange) => this._formatDateRange(dateRange)).join(', ');\n }\n\n /** @hidden */\n private _InitialiseVariablesInMessageService(): void {\n this._popoverFormMessage.init(this._inputGroupElement);\n this._popoverFormMessage.triggers = this._messageTriggers;\n this._popoverFormMessage.message = this._messagePopoverTemplate;\n }\n\n /** @hidden */\n private _setOpenState(isOpen: boolean): void {\n this._showPopoverContents = isOpen;\n this._changeDetectionRef.detectChanges();\n this.isOpen = isOpen;\n this.isOpenChange.emit(this.isOpen);\n this._changeDetectionRef.detectChanges();\n }\n\n /** @hidden */\n private _setUpMobileMode(): void {\n const injector = Injector.create({\n providers: [\n { provide: FD_DATE_PICKER_COMPONENT, useValue: this },\n {\n provide: FD_DATE_PICKER_MOBILE_CONFIG,\n useValue: { calendarTemplate: this._calendarTemplate, controlTemplate: this._controlTemplate }\n }\n ],\n parent: this._injector\n });\n\n this._mobileComponentRef = this._dynamicComponentService.createDynamicComponent(\n {},\n DatePickerMobileComponent<D>,\n {\n container: 'body'\n },\n {\n injector\n }\n );\n }\n\n /** @hidden */\n private _isDateRange(value: any): value is DateRange<D> {\n return !!value && value.start && value.end;\n }\n\n /** @hidden */\n private _isMultipleDateRanges(value: any): value is Array<DateRange<D>> {\n return Array.isArray(value) && value.every((item) => this._isDateRange(item));\n }\n\n /**\n * @hidden\n * Updates the selected single date from a date string.\n * @param dateStr The date string to parse and update the selected date.\n */\n private _updateSingleDate(dateStr: string): void {\n if (!dateStr) {\n this._isInvalidDateInput = !this.allowNull;\n this.selectedDate = null;\n this._refreshCurrentlyDisplayedCalendarDate(this.selectedDate);\n this.onChange(this.selectedDate);\n this.selectedDateChange.emit(this.selectedDate);\n return;\n }\n const date = this._parseDate(dateStr);\n\n if (!this._dateTimeAdapter.datesEqual(date, this.selectedDate)) {\n this._isInvalidDateInput = !this._isSingleModelValid(date);\n\n if (!this._isInvalidDateInput) {\n this._refreshCurrentlyDisplayedCalendarDate(date);\n }\n\n this.selectedDate = date;\n this.onChange(this.selectedDate);\n this.selectedDateChange.emit(this.selectedDate);\n }\n }\n\n /**\n * @hidden\n * Updates the selected range date from a date string.\n * @param dateStr The date string to parse and update the selected range date.\n */\n private _updateRangeDate(dateStr: string): void {\n if (!dateStr) {\n this._isInvalidDateInput = !this.allowNull;\n this.selectedRangeDate = { start: null, end: null };\n this._refreshCurrentlyDisplayedCalendarDate(this.selectedRangeDate.start);\n this.onChange(this.selectedRangeDate);\n this.selectedRangeDateChange.emit(this.selectedRangeDate);\n return;\n }\n\n const [startDateStr, endDateStr] = dateStr.split(this._rangeDelimiter);\n const startDate = this._parseDate(startDateStr);\n const endDate = this._parseDate(endDateStr);\n\n if (\n !this._dateTimeAdapter.datesEqual(startDate, this.selectedRangeDate.start) ||\n !this._dateTimeAdapter.datesEqual(endDate, this.selectedRangeDate.end)\n ) {\n let selectedRangeDate: DateRange<D> | null = null;\n\n if (\n this._dateTimeAdapter.isValid(startDate) &&\n this._dateTimeAdapter.isValid(endDate) &&\n this._dateTimeAdapter.compareDate(startDate, endDate) > 0\n ) {\n selectedRangeDate = { start: endDate, end: startDate };\n } else {\n selectedRangeDate = { start: startDate, end: endDate };\n }\n\n this._isInvalidDateInput = !this._isRangeModelValid(selectedRangeDate);\n this.selectedRangeDate = selectedRangeDate;\n this.selectedRangeDateChange.emit(this.selectedRangeDate);\n this.onChange(this.selectedRangeDate);\n\n if (this._isStartDateValid(this.selectedRangeDate.start)) {\n this._refreshCurrentlyDisplayedCalendarDate(this.selectedRangeDate.start);\n }\n }\n }\n\n /**\n * @hidden\n * Updates the selected multiple dates from a date string.\n * @param dateStr The date string to parse and update the selected multiple dates.\n */\n private updateMultipleDates(dateStr: string): void {\n if (!dateStr) {\n this._isInvalidDateInput = !this.allowNull;\n this.selectedMultipleDates = [];\n this._refreshCurrentlyDisplayedCalendarDate(null);\n this.onChange(this.selectedMultipleDates);\n this.selectedMultipleDatesChange.emit(this.selectedMultipleDates);\n return;\n }\n\n const parsedDates = this.parseDateString(dateStr);\n\n // Check if the new parsed dates are different from the previously selected dates\n const datesChanged = !this._areDatesEqual(parsedDates, this.selectedMultipleDates);\n\n if (datesChanged) {\n this._isInvalidDateInput = !this._isMultipleModelValid(parsedDates);\n\n if (!this._isInvalidDateInput) {\n this._refreshCurrentlyDisplayedCalendarDate(parsedDates[0]);\n }\n\n this.selectedMultipleDates = parsedDates;\n this.onChange(this.selectedMultipleDates);\n this.selectedMultipleDatesChange.emit(this.selectedMultipleDates);\n }\n }\n\n /** Helper method to compare two arrays of dates */\n private _areDatesEqual(dates1: D[], dates2: D[]): boolean {\n if (dates1.length !== dates2.length) {\n return false;\n }\n return dates1.every((date, index) => this._dateTimeAdapter.datesEqual(date, dates2[index]));\n }\n\n /**\n * @hidden\n * Updates the selected multiple date ranges from a date string.\n * @param dateStr The date string to parse and update the selected multiple date ranges.\n */\n private _updateMultipleDateRanges(dateStr: string): void {\n if (!dateStr) {\n this._isInvalidDateInput = !this.allowNull;\n this.selectedMultipleDateRanges = [{ start: null, end: null }];\n this._refreshCurrentlyDisplayedCalendarDate(null);\n this.onChange(this.selectedMultipleDateRanges);\n this.selectedMultipleDateRangesChange.emit(this.selectedMultipleDateRanges);\n return;\n }\n\n const rangeStrings = dateStr.split(',').map((range) => range.trim());\n const parsedRanges = rangeStrings.map((rangeStr) => {\n const [startStr, endStr] = rangeStr.split(this._rangeDelimiter).map((date) => date.trim());\n return {\n start: this._parseDate(startStr),\n end: this._parseDate(endStr)\n };\n });\n\n // Check if the new parsed ranges are different from the previously selected ranges\n const rangesChanged = !this._areDateRangesEqual(parsedRanges, this.selectedMultipleDateRanges);\n\n this._isInvalidDateInput = !this._isMultipleRangesModelValid(parsedRanges);\n\n if (!this._isInvalidDateInput && rangesChanged) {\n if (this._isStartDateValid(this.selectedMultipleDateRanges[0].start)) {\n this._refreshCurrentlyDisplayedCalendarDate(this.selectedMultipleDateRanges[0].start);\n }\n this.selectedMultipleDateRanges = parsedRanges;\n this.onChange(this.selectedMultipleDateRanges);\n this.selectedMultipleDateRangesChange.emit(this.selectedMultipleDateRanges);\n }\n }\n\n /** Helper method to compare two arrays of date ranges */\n private _areDateRangesEqual(ranges1: DateRange<D>[], ranges2: DateRange<D>[]): boolean {\n if (ranges1.length !== ranges2.length) {\n return false;\n }\n return ranges1.every(\n (range, index) =>\n this._dateTimeAdapter.datesEqual(range.start, ranges2[index].start) &&\n this._dateTimeAdapter.datesEqual(range.end, ranges2[index].end)\n );\n }\n}\n","<ng-template [ngTemplateOutlet]=\"mobile ? controlTemplate : desktopTemplate\"></ng-template>\n<ng-template #popoverMessageTemplate>\n @if (_message) {\n <fd-form-message [embedded]=\"true\" [type]=\"state\">\n {{ _message }}\n </fd-form-message>\n }\n</ng-template>\n<ng-template #desktopTemplate>\n <fd-popover\n [(isOpen)]=\"isOpen\"\n (beforeOpen)=\"_beforePopoverOpen()\"\n (isOpenChange)=\"_onOpenStateChanged($event)\"\n [triggers]=\"[]\"\n [placement]=\"placement\"\n [disabled]=\"disabled\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"false\"\n [appendTo]=\"appendTo\"\n >\n <fd-popover-control>\n <ng-template [ngTemplateOutlet]=\"controlTemplate\"></ng-template>\n </fd-popover-control>\n <fd-popover-body [attr.aria-expanded]=\"isOpen\" [attr.aria-hidden]=\"!isOpen\">\n @if (_showPopoverContents) {\n <ng-template [ngTemplateOutlet]=\"popoverMessageTemplate\"></ng-template>\n <ng-content></ng-content>\n <ng-template [ngTemplateOutlet]=\"calendarTemplate\"></ng-template>\n }\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n<ng-template #controlTemplate>\n <fd-input-group\n #inputGroupComponent\n [state]=\"state\"\n [disabled]=\"disabled\"\n [isControl]=\"true\"\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n glyph=\"appointment-2\"\n [isExpanded]=\"isOpen\"\n [glyphAriaLabel]=\"'coreDatePicker.displayCalendarToggleLabel' | fdTranslate\"\n [iconTitle]=\"'coreDatePicker.displayCalendarToggleLabel' | fdTranslate\"\n (addOnButtonClicked)=\"toggleCalendar()\"\n >\n <input\n type=\"text\"\n class=\"fd-input\"\n fd-input-group-input\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [attr.id]=\"inputId\"\n aria-haspopup=\"grid\"\n aria-autocomplete=\"none\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"_dateInputArialLabelKey | fdTranslate\"\n [attr.aria-required]=\"required\"\n [attr.aria-describedby]=\"_formValueStateMessageId\"\n [ngModel]=\"_inputFieldDate\"\n (keyup.enter)=\"handleInputChange($any($event.target).value, false)\"\n (keydown.f4)=\"toggleCalendar()\"\n (ngModelChange)=\"handleInputChange($event, true)\"\n (click)=\"mobile && openCalendar()\"\n (blur)=\"_onBlur($event)\"\n />\n </fd-input-group>\n</ng-template>\n<ng-template #calendarTemplate>\n <fd-calendar\n [activeView]=\"activeView\"\n [markWeekends]=\"markWeekends\"\n [specialDaysRules]=\"specialDaysRules\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [allowMultipleSelection]=\"allowMultipleSelection\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [yearGrid]=\"yearGrid\"\n [calType]=\"type\"\n [rangeHoverEffect]=\"rangeHoverEffect\"\n [disableFunction]=\"disableFunction\"\n [disableRangeStartFunction]=\"disableRangeStartFunction\"\n [disableRangeEndFunction]=\"disableRangeEndFunction\"\n [selectedDate]=\"selectedDate\"\n [selectedMultipleDates]=\"selectedMultipleDates\"\n [selectedRangeDate]=\"selectedRangeDate\"\n [selectedMultipleDateRanges]=\"selectedMultipleDateRanges\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n [previousButtonDisableFunction]=\"previousButtonDisableFunction\"\n [nextButtonDisableFunction]=\"nextButtonDisableFunction\"\n [showCalendarLegend]=\"showCalendarLegend()\"\n [legendCol]=\"legendCol()\"\n [mobileLandscape]=\"mobile && mobileLandscape\"\n [mobilePortrait]=\"mobile && mobilePortrait\"\n [dateRangeFormat]=\"dateRangeFormat\"\n (selectedDateChange)=\"handleSingleDateChange($event)\"\n (selectedMultipleDatesChange)=\"handleMultipleDatesChange($event)\"\n (selectedRangeDateChange)=\"handleRangeDateChange($event)\"\n (selectedMultipleDateRangesChange)=\"handleMultipleDateRangesChange($event)\"\n (activeViewChange)=\"handleCalendarActiveViewChange($event)\"\n (closeCalendar)=\"closeFromCalendar()\"\n ></fd-calendar>\n @if (showTodayButton) {\n <div fd-bar barDesign=\"footer\" class=\"fd-date-picker__bar\">\n <div fd-bar-right>\n <fd-bar-element>\n <button\n fd-button\n [label]=\"'coreCalendar.todayLabel' | fdTranslate\"\n (click)=\"onTodayButtonClick()\"\n ></button>\n </fd-bar-element>\n </div>\n </div>\n }\n</ng-template>\n<div [style.display]=\"'none'\" aria-hidden=\"true\">\n <div [attr.id]=\"_formValueStateMessageId\" aria-atomic=\"true\" aria-live=\"assertive\">\n @switch (state) {\n @case ('success') {\n {{ 'coreDatePicker.valueStateSuccessMessage' | fdTranslate }}\n }\n @case ('information') {\n {{ 'coreDatePicker.valueStateInformationMessage' | fdTranslate }}\n }\n @case ('warning') {\n {{ 'coreDatePicker.valueStateWarningMessage' | fdTranslate }}\n }\n @case ('error') {\n {{ 'coreDatePicker.valueStateErrorMessage' | fdTranslate }}\n }\n }\n {{ _message }}\n </div>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { DatePickerMobileComponent } from './date-picker-mobile/date-picker-mobile.component';\nimport { DatePickerComponent } from './date-picker.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [DatePickerComponent, DatePickerMobileComponent],\n exports: [DatePickerComponent, DatePickerMobileComponent]\n})\nexport class DatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|