@fundamental-ngx/core 0.35.0-rc.1 → 0.35.0-rc.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.
Files changed (112) hide show
  1. package/action-bar/package.json +1 -1
  2. package/action-sheet/package.json +1 -1
  3. package/alert/package.json +1 -1
  4. package/avatar/package.json +1 -1
  5. package/avatar-group/package.json +1 -1
  6. package/bar/package.json +1 -1
  7. package/breadcrumb/package.json +1 -1
  8. package/busy-indicator/package.json +1 -1
  9. package/button/package.json +1 -1
  10. package/calendar/package.json +1 -1
  11. package/card/package.json +1 -1
  12. package/carousel/package.json +1 -1
  13. package/checkbox/package.json +1 -1
  14. package/combobox/package.json +1 -1
  15. package/date-picker/date-picker.component.d.ts +11 -7
  16. package/date-picker/esm2020/date-picker.component.mjs +16 -8
  17. package/date-picker/fesm2015/fundamental-ngx-core-date-picker.mjs +15 -7
  18. package/date-picker/fesm2015/fundamental-ngx-core-date-picker.mjs.map +1 -1
  19. package/date-picker/fesm2020/fundamental-ngx-core-date-picker.mjs +15 -7
  20. package/date-picker/fesm2020/fundamental-ngx-core-date-picker.mjs.map +1 -1
  21. package/date-picker/package.json +1 -1
  22. package/datetime/package.json +1 -1
  23. package/datetime-picker/datetime-picker.component.d.ts +6 -2
  24. package/datetime-picker/esm2020/datetime-picker.component.mjs +11 -3
  25. package/datetime-picker/fesm2015/fundamental-ngx-core-datetime-picker.mjs +10 -2
  26. package/datetime-picker/fesm2015/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  27. package/datetime-picker/fesm2020/fundamental-ngx-core-datetime-picker.mjs +10 -2
  28. package/datetime-picker/fesm2020/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  29. package/datetime-picker/package.json +1 -1
  30. package/dialog/package.json +1 -1
  31. package/dynamic-page/package.json +1 -1
  32. package/dynamic-side-content/package.json +1 -1
  33. package/esm2020/date-picker/date-picker.component.mjs +16 -8
  34. package/esm2020/datetime-picker/datetime-picker.component.mjs +11 -3
  35. package/facets/package.json +1 -1
  36. package/feed-input/package.json +1 -1
  37. package/feed-list-item/package.json +1 -1
  38. package/fesm2015/fundamental-ngx-core-date-picker.mjs +15 -7
  39. package/fesm2015/fundamental-ngx-core-date-picker.mjs.map +1 -1
  40. package/fesm2015/fundamental-ngx-core-datetime-picker.mjs +10 -2
  41. package/fesm2015/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  42. package/fesm2020/fundamental-ngx-core-date-picker.mjs +15 -7
  43. package/fesm2020/fundamental-ngx-core-date-picker.mjs.map +1 -1
  44. package/fesm2020/fundamental-ngx-core-datetime-picker.mjs +10 -2
  45. package/fesm2020/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  46. package/file-uploader/package.json +1 -1
  47. package/fixed-card-layout/package.json +1 -1
  48. package/flexible-column-layout/package.json +1 -1
  49. package/form/package.json +1 -1
  50. package/formatted-text/package.json +1 -1
  51. package/grid-list/package.json +1 -1
  52. package/icon/package.json +1 -1
  53. package/illustrated-message/package.json +1 -1
  54. package/infinite-scroll/package.json +1 -1
  55. package/info-label/package.json +1 -1
  56. package/inline-help/package.json +1 -1
  57. package/input-group/package.json +1 -1
  58. package/layout-grid/package.json +1 -1
  59. package/layout-panel/package.json +1 -1
  60. package/link/package.json +1 -1
  61. package/list/package.json +1 -1
  62. package/menu/package.json +1 -1
  63. package/message-box/package.json +1 -1
  64. package/message-strip/package.json +1 -1
  65. package/message-toast/package.json +1 -1
  66. package/micro-process-flow/package.json +1 -1
  67. package/mobile-mode/package.json +1 -1
  68. package/multi-input/package.json +1 -1
  69. package/nested-list/package.json +1 -1
  70. package/notification/package.json +1 -1
  71. package/object-identifier/package.json +1 -1
  72. package/object-marker/package.json +1 -1
  73. package/object-number/package.json +1 -1
  74. package/object-status/package.json +1 -1
  75. package/package.json +1 -1
  76. package/pagination/package.json +1 -1
  77. package/panel/package.json +1 -1
  78. package/popover/package.json +1 -1
  79. package/product-switch/package.json +1 -1
  80. package/progress-indicator/package.json +1 -1
  81. package/quick-view/package.json +1 -1
  82. package/radio/package.json +1 -1
  83. package/rating-indicator/package.json +1 -1
  84. package/resizable-card-layout/package.json +1 -1
  85. package/scroll-spy/package.json +1 -1
  86. package/scrollbar/package.json +1 -1
  87. package/segmented-button/package.json +1 -1
  88. package/select/package.json +1 -1
  89. package/shared/package.json +1 -1
  90. package/shellbar/package.json +1 -1
  91. package/side-navigation/package.json +1 -1
  92. package/slider/package.json +1 -1
  93. package/split-button/package.json +1 -1
  94. package/splitter/package.json +1 -1
  95. package/status-indicator/package.json +1 -1
  96. package/step-input/package.json +1 -1
  97. package/switch/package.json +1 -1
  98. package/table/package.json +1 -1
  99. package/tabs/package.json +1 -1
  100. package/text/package.json +1 -1
  101. package/tile/package.json +1 -1
  102. package/time/package.json +1 -1
  103. package/time-picker/package.json +1 -1
  104. package/timeline/package.json +1 -1
  105. package/title/package.json +1 -1
  106. package/token/package.json +1 -1
  107. package/toolbar/package.json +1 -1
  108. package/tree/package.json +1 -1
  109. package/upload-collection/package.json +1 -1
  110. package/utils/package.json +1 -1
  111. package/vertical-navigation/package.json +1 -1
  112. package/wizard/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-date-picker.mjs","sources":["../../../../libs/core/src/lib/date-picker/errors.ts","../../../../libs/core/src/lib/date-picker/date-picker.component.ts","../../../../libs/core/src/lib/date-picker/date-picker.component.html","../../../../libs/core/src/lib/date-picker/date-picker.module.ts","../../../../libs/core/src/lib/date-picker/fundamental-ngx-core-date-picker.ts"],"sourcesContent":["export 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 {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nimport { Placement, SpecialDayRule, FormStates } from '@fundamental-ngx/core/shared';\nimport {\n CalendarComponent,\n CalendarType,\n DaysOfWeek,\n FdCalendarView,\n DateRange,\n CalendarYearGrid\n} from '@fundamental-ngx/core/calendar';\nimport { DatetimeAdapter, DateTimeFormats, DATE_TIME_FORMATS } from '@fundamental-ngx/core/datetime';\nimport { PopoverFormMessageService } from '@fundamental-ngx/core/form';\nimport { PopoverService } from '@fundamental-ngx/core/popover';\nimport { ContentDensityService } from '@fundamental-ngx/core/utils';\nimport { Nullable } from '@fundamental-ngx/core/shared';\nimport { InputGroupInputDirective } from '@fundamental-ngx/core/input-group';\n\nimport { createMissingDateImplementationError } from './errors';\nimport { NavigationButtonDisableFunction } from '@fundamental-ngx/core/calendar';\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 styleUrls: ['./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 PopoverFormMessageService,\n PopoverService\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatePickerComponent<D> implements OnInit, OnDestroy, AfterViewInit, ControlValueAccessor, Validator {\n /** The type of calendar, 'single' for single date selection or 'range' for a range of dates. */\n @Input()\n type: CalendarType = 'single';\n\n /** Date picker input placeholder string */\n @Input()\n placeholder = '';\n\n /** Whether this is the compact input date picker */\n @Input()\n compact?: boolean;\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 /** Text displayed in message */\n @Input()\n set message(message: string) {\n this._message = message;\n this._popoverFormMessage.message = message;\n }\n /** @hidden */\n _message: string | null = null;\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 /** @hidden */\n _messageTriggers: string[] = ['focusin', 'focusout'];\n\n /** The currently selected CalendarDay model */\n @Input()\n selectedDate: Nullable<D>;\n\n /** The currently selected FdDates model start and end in range mode. */\n @Input()\n selectedRangeDate: DateRange<D> = { start: null, end: null };\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 /** Aria label for the datepicker input. */\n @Input()\n dateInputLabel = 'Date input';\n\n /** Aria label for the datepicker input. */\n @Input()\n dateRangeInputLabel = 'Date range input';\n\n /** Aria label for the button to show/hide the calendar. */\n @Input()\n displayCalendarToggleLabel = 'Open picker';\n\n /**\n * Value state \"success\" aria message.\n */\n @Input()\n valueStateSuccessMessage = 'Value state Success';\n\n /**\n * Value state \"information\" aria message.\n */\n @Input()\n valueStateInformationMessage = 'Value state Information';\n\n /**\n * Value state \"warning\" aria message.\n */\n @Input()\n valueStateWarningMessage = 'Value state Warning';\n\n /**\n * Value state \"error\" aria message.\n */\n @Input()\n valueStateErrorMessage = 'Value state Error';\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 = '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 /**\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 * 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 this._popoverFormMessage.messageType = state || 'default';\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 /** @hidden */\n private _state: FormStates = 'default';\n\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n @Input()\n buttonFocusable = true;\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__special-day--{{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 /** Whether the date picker is open. Can be used through two-way binding. */\n @Input()\n isOpen = false;\n\n /** Should date picker be inlined. */\n @Input()\n inline = true;\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()\n set processInputOnBlur(v: boolean) {\n this._processInputOnBlur = coerceBooleanProperty(v);\n }\n get processInputOnBlur(): boolean {\n return this._processInputOnBlur;\n }\n\n /** @hidden */\n _processInputOnBlur = false;\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n readonly isOpenChange = new EventEmitter<boolean>();\n\n /** Fired when a new date is selected. */\n @Output()\n readonly selectedDateChange = new EventEmitter<Nullable<D>>();\n\n /** Event thrown every time selected first or last date in range mode is changed */\n @Output()\n readonly selectedRangeDateChange = new EventEmitter<DateRange<D>>();\n\n /** Event thrown every time calendar active view is changed */\n @Output()\n readonly activeViewChange = new EventEmitter<FdCalendarView>();\n\n /** @hidden */\n @ViewChild(CalendarComponent)\n _calendarComponent: CalendarComponent<D>;\n\n /** @hidden */\n @ViewChild('inputGroupComponent', { read: ElementRef })\n _inputGroupElement: ElementRef;\n\n /** @hidden */\n @ViewChild(InputGroupInputDirective, { read: ElementRef })\n _inputElement: ElementRef;\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 readonly _formValueStateMessageId = `fd-date-picker-form-message-${datePickerCounter++}`;\n\n /** @hidden */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /**\n * Function used to disable certain dates in the calendar.\n * @param date date representation\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 * @param date date representation\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 * @param date date representation\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 get _rangeDelimiter(): string {\n return this._dateTimeFormats.rangeDelimiter;\n }\n\n /**\n * Date input aria label based on type\n * @hidden\n */\n get _dateInputArialLabel(): string {\n return this.type === 'range' ? this.dateRangeInputLabel : this.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() private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats,\n private _popoverFormMessage: PopoverFormMessageService,\n @Optional() private _contentDensityService: ContentDensityService\n ) {\n if (!this._dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n if (!this._dateTimeFormats) {\n throw createMissingDateImplementationError('DATE_TIME_FORMATS');\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._dateTimeAdapter.localeChanges.pipe(takeUntil(this._onDestroy$)).subscribe(() => {\n this.formatInputDate(this.selectedDate);\n this._changeDetectionRef.detectChanges();\n });\n if (this.compact === undefined && this._contentDensityService) {\n this._subscriptions.add(\n this._contentDensityService._isCompactDensity.subscribe((isCompact) => {\n this.compact = isCompact;\n this._changeDetectionRef.markForCheck();\n })\n );\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._InitialiseVariablesInMessageService();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * Method that handle calendar active view change and throws event.\n */\n public handleCalendarActiveViewChange(activeView: FdCalendarView): void {\n this.activeViewChange.emit(activeView);\n }\n\n /** @hidden */\n public closeFromCalendar(): void {\n if (this.type === 'single' && this.closeOnDateChoose) {\n this.closeCalendar();\n }\n }\n\n /** Opens the calendar */\n openCalendar(): void {\n if (!this.disabled) {\n this.onTouched();\n this.isOpen = true;\n this.isOpenChange.emit(this.isOpen);\n this._changeMessageVisibility();\n }\n }\n\n /** Toggles the calendar open or closed */\n public toggleCalendar(): void {\n this.onTouched();\n this.isOpen = !this.isOpen;\n this.isOpenChange.emit(this.isOpen);\n this._changeMessageVisibility();\n }\n\n /** Closes the calendar if it is open */\n public closeCalendar(): void {\n if (this.isOpen) {\n this.isOpen = false;\n this.isOpenChange.emit(this.isOpen);\n this._changeMessageVisibility();\n }\n }\n\n /**\n * @hidden\n * Method that is triggered by events from calendar component, when there is selected single date changed\n */\n public handleSingleDateChange(date: D): void {\n if (date) {\n this.selectedDate = date;\n this.selectedDateChange.emit(date);\n this.onChange(date);\n this.formatInputDate(date);\n this._isInvalidDateInput = !this.isModelValid();\n }\n }\n\n /**\n * @hidden\n * Method that is triggered date formatting in the date control\n */\n public formatInputDate(date: Nullable<D>): void {\n if (date) {\n this._inputFieldDate = this._formatDate(date);\n }\n }\n\n /**\n * @hidden\n * Method that is triggered by events from calendar component, when there is selected range date changed\n */\n public handleRangeDateChange(dates: DateRange<D>): void {\n if (\n dates &&\n (!this._dateTimeAdapter.datesEqual(this.selectedRangeDate.start, dates.start) ||\n !this._dateTimeAdapter.datesEqual(this.selectedRangeDate.end, dates.end))\n ) {\n this._inputFieldDate = this._formatDateRange(dates);\n this.selectedRangeDate = { start: dates.start, end: dates.end };\n this.selectedRangeDateChange.emit(this.selectedRangeDate);\n this.onChange(this.selectedRangeDate);\n this._isInvalidDateInput = !this.isModelValid();\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 public 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(): { [key: string]: any } | null {\n return this.isModelValid()\n ? null\n : {\n dateValidation: {\n valid: false\n }\n };\n }\n\n /** @hidden */\n registerOnChange(fn: (selected: any) => { void }): 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: DateRange<D> | 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 = { start: null, end: null };\n this.selectedDate = null;\n this._changeDetectionRef.detectChanges();\n return;\n }\n if (this.type === 'single') {\n /**\n * For single mode, if the date is invalid, model is changed, it refresh currently\n * input field text, but it does not refresh currently displayed day\n */\n selected = selected as D;\n this.selectedDate = selected;\n\n if (this._isSingleModelValid(this.selectedDate)) {\n this._inputFieldDate = this._formatDate(selected);\n this._refreshCurrentlyDisplayedCalendarDate(selected);\n } else {\n this._inputFieldDate = '';\n }\n }\n if (this.type === '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\n if (selected?.start) {\n this.selectedRangeDate = { start: selected.start, end: selected.end };\n\n if (this._isRangeModelValid(this.selectedRangeDate)) {\n this._refreshCurrentlyDisplayedCalendarDate(selected.start);\n this._inputFieldDate = this._formatDateRange(selected);\n } else {\n this._inputFieldDate = '';\n }\n } else {\n this._inputFieldDate = '';\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 to state of _isInvalidDateInput\n */\n dateStringUpdate(dateStr: string): void {\n this._inputFieldDate = dateStr;\n /** Case when there is single mode */\n if (this.type === 'single') {\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._dateTimeAdapter.parse(dateStr, this._dateTimeFormats.parse.dateInput);\n\n /** Check if dates are equal, if so, there is no need to make any changes */\n if (!this._dateTimeAdapter.datesEqual(date, this.selectedDate)) {\n this._isInvalidDateInput = !this._isSingleModelValid(date);\n\n /** Check if date is valid, if it's not, there is no need to refresh calendar */\n if (!this._isInvalidDateInput) {\n this._refreshCurrentlyDisplayedCalendarDate(date);\n }\n\n /**\n * Date in model is changed no matter if the parsed date from string is valid or not.\n */\n this.selectedDate = date;\n this.onChange(this.selectedDate);\n this.selectedDateChange.emit(this.selectedDate);\n }\n\n /** Case when there is range mode */\n } else {\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 const [startDateStr, endDateStr] = dateStr.split(this._rangeDelimiter);\n const startDate = this._dateTimeAdapter.parse(startDateStr, this._dateTimeFormats.parse.dateInput);\n const endDate = this._dateTimeAdapter.parse(endDateStr, this._dateTimeFormats.parse.dateInput);\n\n /**\n * Check if dates are equal, if dates are the same there is no need to make any changes\n * Date in model is changed no matter if the parsed dates from string are valid or not.\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 the end date is before the start date, there is need to replace them */\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\n /** Whole object is changed, even it's invalid */\n this.selectedRangeDate = selectedRangeDate;\n\n this.selectedRangeDateChange.emit(this.selectedRangeDate);\n this.onChange(this.selectedRangeDate);\n\n /** Check if start date is valid, if it's not, there is no need o refresh calendar */\n if (this._isStartDateValid(this.selectedRangeDate.start)) {\n this._refreshCurrentlyDisplayedCalendarDate(this.selectedRangeDate.start);\n }\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.type === 'single') {\n return this._isSingleModelValid(this.selectedDate);\n } else {\n return this._isRangeModelValid(this.selectedRangeDate);\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 }\n // focus calendar cell on opening\n if (isOpen && this._calendarComponent) {\n this._calendarComponent.initialFocus();\n }\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 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 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 if (this._calendarComponent) {\n this._calendarComponent.setCurrentlyDisplayed(date);\n }\n }\n\n /** @hidden */\n private _formatDate(date: Nullable<D>): string {\n return this._dateTimeAdapter.format(date, this._dateTimeFormats.display.dateInput);\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 _InitialiseVariablesInMessageService(): void {\n this._popoverFormMessage.init(this._inputGroupElement);\n this._popoverFormMessage.message = this._message || '';\n this._popoverFormMessage.triggers = this._messageTriggers;\n this._popoverFormMessage.messageType = this._state;\n }\n}\n","<fd-popover\n [(isOpen)]=\"isOpen\"\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 <fd-input-group\n #inputGroupComponent\n [compact]=\"compact\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n [isControl]=\"true\"\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n glyph=\"appointment-2\"\n [isExpanded]=\"isOpen\"\n [glyphAriaLabel]=\"displayCalendarToggleLabel\"\n [iconTitle]=\"displayCalendarToggleLabel\"\n (addOnButtonClicked)=\"toggleCalendar()\"\n >\n <input\n type=\"text\"\n class=\"fd-input\"\n fd-input-group-input\n [compact]=\"compact\"\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-label]=\"_dateInputArialLabel\"\n [attr.aria-required]=\"required\"\n [attr.aria-describedby]=\"_formValueStateMessageId\"\n [ngModel]=\"_inputFieldDate\"\n (keyup.enter)=\"handleInputChange($any($event.target).value, false)\"\n (ngModelChange)=\"handleInputChange($event, true)\"\n (blur)=\"handleInputChange($any($event.target).value, false)\"\n />\n </fd-input-group>\n </fd-popover-control>\n <fd-popover-body [attr.aria-expanded]=\"isOpen\" [attr.aria-hidden]=\"!isOpen\">\n <fd-form-message [embedded]=\"true\" *ngIf=\"_message\" [type]=\"state\">\n {{ _message }}\n </fd-form-message>\n <ng-content></ng-content>\n\n <fd-calendar\n (closeCalendar)=\"closeFromCalendar()\"\n [activeView]=\"activeView\"\n [compact]=\"compact\"\n [markWeekends]=\"markWeekends\"\n [specialDaysRules]=\"specialDaysRules\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [yearGrid]=\"yearGrid\"\n (activeViewChange)=\"handleCalendarActiveViewChange($event)\"\n [calType]=\"type\"\n [rangeHoverEffect]=\"rangeHoverEffect\"\n [disableFunction]=\"disableFunction ? disableFunction : null\"\n [disableRangeStartFunction]=\"disableRangeStartFunction ? disableRangeStartFunction : null\"\n [disableRangeEndFunction]=\"disableRangeEndFunction ? disableRangeEndFunction : null\"\n [selectedDate]=\"selectedDate\"\n [selectedRangeDate]=\"selectedRangeDate\"\n (selectedRangeDateChange)=\"handleRangeDateChange($event)\"\n (selectedDateChange)=\"handleSingleDateChange($event)\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n [previousButtonDisableFunction]=\"previousButtonDisableFunction\"\n [nextButtonDisableFunction]=\"nextButtonDisableFunction\"\n ></fd-calendar>\n </fd-popover-body>\n</fd-popover>\n\n<div style=\"display: none\" aria-hidden=\"true\">\n <div [attr.id]=\"_formValueStateMessageId\" aria-atomic=\"true\" aria-live=\"assertive\">\n <ng-container [ngSwitch]=\"state\">\n <ng-container *ngSwitchCase=\"'success'\">{{ valueStateSuccessMessage }}</ng-container>\n <ng-container *ngSwitchCase=\"'information'\">{{ valueStateInformationMessage }}</ng-container>\n <ng-container *ngSwitchCase=\"'warning'\">{{ valueStateWarningMessage }}</ng-container>\n <ng-container *ngSwitchCase=\"'error'\">{{ valueStateErrorMessage }}</ng-container>\n </ng-container>\n {{ _message }}\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { CalendarModule } from '@fundamental-ngx/core/calendar';\nimport { FormsModule } from '@angular/forms';\n\nimport { DatePickerComponent } from './date-picker.component';\nimport { InputGroupModule } from '@fundamental-ngx/core/input-group';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { FormMessageModule } from '@fundamental-ngx/core/form';\n\n@NgModule({\n declarations: [DatePickerComponent],\n imports: [\n CommonModule,\n IconModule,\n PopoverModule,\n CalendarModule,\n FormsModule,\n InputGroupModule,\n ButtonModule,\n FormMessageModule\n ],\n exports: [DatePickerComponent]\n})\nexport class DatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-date-picker.mjs","sources":["../../../../libs/core/src/lib/date-picker/errors.ts","../../../../libs/core/src/lib/date-picker/date-picker.component.ts","../../../../libs/core/src/lib/date-picker/date-picker.component.html","../../../../libs/core/src/lib/date-picker/date-picker.module.ts","../../../../libs/core/src/lib/date-picker/fundamental-ngx-core-date-picker.ts"],"sourcesContent":["export 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 {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nimport { Placement, SpecialDayRule, FormStates } from '@fundamental-ngx/core/shared';\nimport {\n CalendarComponent,\n CalendarType,\n DaysOfWeek,\n FdCalendarView,\n DateRange,\n CalendarYearGrid\n} from '@fundamental-ngx/core/calendar';\nimport { DatetimeAdapter, DateTimeFormats, DATE_TIME_FORMATS } from '@fundamental-ngx/core/datetime';\nimport { PopoverFormMessageService } from '@fundamental-ngx/core/form';\nimport { PopoverService } from '@fundamental-ngx/core/popover';\nimport { ContentDensityService } from '@fundamental-ngx/core/utils';\nimport { Nullable } from '@fundamental-ngx/core/shared';\nimport { InputGroupInputDirective } from '@fundamental-ngx/core/input-group';\n\nimport { createMissingDateImplementationError } from './errors';\nimport { NavigationButtonDisableFunction } from '@fundamental-ngx/core/calendar';\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 styleUrls: ['./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 PopoverFormMessageService,\n PopoverService\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatePickerComponent<D> implements OnInit, OnDestroy, AfterViewInit, ControlValueAccessor, Validator {\n /** The type of calendar, 'single' for single date selection or 'range' for a range of dates. */\n @Input()\n type: CalendarType = 'single';\n\n /** Date picker input placeholder string */\n @Input()\n placeholder = '';\n\n /** Whether this is the compact input date picker */\n @Input()\n compact?: boolean;\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 /** Text displayed in message */\n @Input()\n set message(message: string) {\n this._message = message;\n this._popoverFormMessage.message = message;\n }\n /** @hidden */\n _message: string | null = null;\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 /** @hidden */\n _messageTriggers: string[] = ['focusin', 'focusout'];\n\n /** The currently selected CalendarDay model */\n @Input()\n selectedDate: Nullable<D>;\n\n /** The currently selected FdDates model start and end in range mode. */\n @Input()\n selectedRangeDate: DateRange<D> = { start: null, end: null };\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 /** Aria-label for the datepicker input. */\n @Input()\n dateInputLabel = 'Date input';\n\n /** Aria-label for the datepicker input. */\n @Input()\n dateRangeInputLabel = 'Date range input';\n\n /** Aria-label for the button to show/hide the calendar. */\n @Input()\n displayCalendarToggleLabel = 'Open picker';\n\n /**\n * Value state \"success\" aria message.\n */\n @Input()\n valueStateSuccessMessage = 'Value state Success';\n\n /**\n * Value state \"information\" aria message.\n */\n @Input()\n valueStateInformationMessage = 'Value state Information';\n\n /**\n * Value state \"warning\" aria message.\n */\n @Input()\n valueStateWarningMessage = 'Value state Warning';\n\n /**\n * Value state \"error\" aria message.\n */\n @Input()\n valueStateErrorMessage = 'Value state Error';\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 = '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 /**\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 * 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 this._popoverFormMessage.messageType = state || 'default';\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 /** @hidden */\n private _state: FormStates = 'default';\n\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n @Input()\n buttonFocusable = true;\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__special-day--{{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 /** Whether the date picker is open. Can be used through two-way binding. */\n @Input()\n isOpen = false;\n\n /** Should date picker be inlined. */\n @Input()\n inline = true;\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()\n set processInputOnBlur(v: boolean) {\n this._processInputOnBlur = coerceBooleanProperty(v);\n }\n get processInputOnBlur(): boolean {\n return this._processInputOnBlur;\n }\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 /** @hidden */\n _processInputOnBlur = false;\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n readonly isOpenChange = new EventEmitter<boolean>();\n\n /** Fired when a new date is selected. */\n @Output()\n readonly selectedDateChange = new EventEmitter<Nullable<D>>();\n\n /** Event thrown every time selected first or last date in range mode is changed */\n @Output()\n readonly selectedRangeDateChange = new EventEmitter<DateRange<D>>();\n\n /** Event thrown every time calendar active view is changed */\n @Output()\n readonly activeViewChange = new EventEmitter<FdCalendarView>();\n\n /** @hidden */\n @ViewChild(CalendarComponent)\n _calendarComponent: CalendarComponent<D>;\n\n /** @hidden */\n @ViewChild('inputGroupComponent', { read: ElementRef })\n _inputGroupElement: ElementRef;\n\n /** @hidden */\n @ViewChild(InputGroupInputDirective, { read: ElementRef })\n _inputElement: ElementRef<HTMLInputElement>;\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 readonly _formValueStateMessageId = `fd-date-picker-form-message-${datePickerCounter++}`;\n\n /** @hidden */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /**\n * Function used to disable certain dates in the calendar.\n * @param date date representation\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 * @param date date representation\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 * @param date date representation\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 get _rangeDelimiter(): string {\n return this._dateTimeFormats.rangeDelimiter;\n }\n\n /**\n * Date input aria label based on type\n * @hidden\n */\n get _dateInputArialLabel(): string {\n return this.type === 'range' ? this.dateRangeInputLabel : this.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() private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats,\n private _popoverFormMessage: PopoverFormMessageService,\n @Optional() private _contentDensityService: ContentDensityService\n ) {\n if (!this._dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n if (!this._dateTimeFormats) {\n throw createMissingDateImplementationError('DATE_TIME_FORMATS');\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._dateTimeAdapter.localeChanges.pipe(takeUntil(this._onDestroy$)).subscribe(() => {\n this.formatInputDate(this.selectedDate);\n this._changeDetectionRef.detectChanges();\n });\n if (this.compact === undefined && this._contentDensityService) {\n this._subscriptions.add(\n this._contentDensityService._isCompactDensity.subscribe((isCompact) => {\n this.compact = isCompact;\n this._changeDetectionRef.markForCheck();\n })\n );\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._InitialiseVariablesInMessageService();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * Method that handle calendar active view change and throws event.\n */\n public handleCalendarActiveViewChange(activeView: FdCalendarView): void {\n this.activeViewChange.emit(activeView);\n }\n\n /** @hidden */\n public closeFromCalendar(): void {\n if (this.type === 'single' && this.closeOnDateChoose) {\n this.closeCalendar();\n }\n }\n\n /** Opens the calendar */\n openCalendar(): void {\n if (!this.disabled) {\n this.onTouched();\n this.isOpen = true;\n this.isOpenChange.emit(this.isOpen);\n this._changeMessageVisibility();\n }\n }\n\n /** Toggles the calendar open or closed */\n public toggleCalendar(): void {\n this.onTouched();\n this.isOpen = !this.isOpen;\n this.isOpenChange.emit(this.isOpen);\n this._changeMessageVisibility();\n }\n\n /** Closes the calendar if it is open */\n public closeCalendar(): void {\n if (this.isOpen) {\n this.isOpen = false;\n this.isOpenChange.emit(this.isOpen);\n this._changeMessageVisibility();\n }\n }\n\n /**\n * @hidden\n * Method that is triggered by events from calendar component, when there is selected single date changed\n */\n public handleSingleDateChange(date: D): void {\n if (date) {\n this.selectedDate = date;\n this.selectedDateChange.emit(date);\n this.onChange(date);\n this.formatInputDate(date);\n this._isInvalidDateInput = !this.isModelValid();\n }\n }\n\n /**\n * @hidden\n * Method that is triggered date formatting in the date control\n */\n public formatInputDate(date: Nullable<D>): void {\n if (date) {\n this._inputFieldDate = this._formatDate(date);\n }\n }\n\n /**\n * @hidden\n * Method that is triggered by events from calendar component, when there is selected range date changed\n */\n public handleRangeDateChange(dates: DateRange<D>): void {\n if (\n dates &&\n (!this._dateTimeAdapter.datesEqual(this.selectedRangeDate.start, dates.start) ||\n !this._dateTimeAdapter.datesEqual(this.selectedRangeDate.end, dates.end))\n ) {\n this._inputFieldDate = this._formatDateRange(dates);\n this.selectedRangeDate = { start: dates.start, end: dates.end };\n this.selectedRangeDateChange.emit(this.selectedRangeDate);\n this.onChange(this.selectedRangeDate);\n this._isInvalidDateInput = !this.isModelValid();\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 public 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(): { [key: string]: any } | null {\n return this.isModelValid()\n ? null\n : {\n dateValidation: {\n valid: false\n }\n };\n }\n\n /** @hidden */\n registerOnChange(fn: (selected: any) => { void }): 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: DateRange<D> | 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 = { start: null, end: null };\n this.selectedDate = null;\n this._changeDetectionRef.detectChanges();\n return;\n }\n if (this.type === '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 = selected as D;\n this.selectedDate = selected;\n\n if (this._isSingleModelValid(this.selectedDate)) {\n this._inputFieldDate = this._formatDate(selected);\n this._refreshCurrentlyDisplayedCalendarDate(selected);\n } else {\n this._inputFieldDate = '';\n }\n }\n if (this.type === '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\n if (selected?.start) {\n this.selectedRangeDate = { start: selected.start, end: selected.end };\n\n if (this._isRangeModelValid(this.selectedRangeDate)) {\n this._refreshCurrentlyDisplayedCalendarDate(selected.start);\n this._inputFieldDate = this._formatDateRange(selected);\n } else {\n this._inputFieldDate = '';\n }\n } else {\n this._inputFieldDate = '';\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 to state of _isInvalidDateInput\n */\n dateStringUpdate(dateStr: string): void {\n this._inputFieldDate = dateStr;\n /** Case when there is single mode */\n if (this.type === 'single') {\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._dateTimeAdapter.parse(dateStr, this._dateTimeFormats.parse.dateInput);\n\n /** Check if dates are equal, if so, there is no need to make any changes */\n if (!this._dateTimeAdapter.datesEqual(date, this.selectedDate)) {\n this._isInvalidDateInput = !this._isSingleModelValid(date);\n\n /** Check if date is valid, if it's not, there is no need to refresh calendar */\n if (!this._isInvalidDateInput) {\n this._refreshCurrentlyDisplayedCalendarDate(date);\n }\n\n /**\n * Date in model is changed no matter if the parsed date from string is valid or not.\n */\n this.selectedDate = date;\n this.onChange(this.selectedDate);\n this.selectedDateChange.emit(this.selectedDate);\n }\n\n /** Case when there is range mode */\n } else {\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 const [startDateStr, endDateStr] = dateStr.split(this._rangeDelimiter);\n const startDate = this._dateTimeAdapter.parse(startDateStr, this._dateTimeFormats.parse.dateInput);\n const endDate = this._dateTimeAdapter.parse(endDateStr, this._dateTimeFormats.parse.dateInput);\n\n /**\n * Check if dates are equal, if dates are the same there is no need to make any changes\n * Date in model is changed no matter if the parsed dates from string are valid or not.\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 the end date is before the start date, there is need to replace them */\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\n /** Whole object is changed, even it's invalid */\n this.selectedRangeDate = selectedRangeDate;\n\n this.selectedRangeDateChange.emit(this.selectedRangeDate);\n this.onChange(this.selectedRangeDate);\n\n /** Check if start date is valid, if it's not, there is no need o refresh calendar */\n if (this._isStartDateValid(this.selectedRangeDate.start)) {\n this._refreshCurrentlyDisplayedCalendarDate(this.selectedRangeDate.start);\n }\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.type === 'single') {\n return this._isSingleModelValid(this.selectedDate);\n } else {\n return this._isRangeModelValid(this.selectedRangeDate);\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 // focus calendar cell on opening\n if (isOpen && this._calendarComponent) {\n this._calendarComponent.initialFocus();\n }\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 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 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 if (this._calendarComponent) {\n this._calendarComponent.setCurrentlyDisplayed(date);\n }\n }\n\n /** @hidden */\n private _formatDate(date: Nullable<D>): string {\n return this._dateTimeAdapter.format(date, this._dateTimeFormats.display.dateInput);\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 _InitialiseVariablesInMessageService(): void {\n this._popoverFormMessage.init(this._inputGroupElement);\n this._popoverFormMessage.message = this._message || '';\n this._popoverFormMessage.triggers = this._messageTriggers;\n this._popoverFormMessage.messageType = this._state;\n }\n}\n","<fd-popover\n [(isOpen)]=\"isOpen\"\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 <fd-input-group\n #inputGroupComponent\n [compact]=\"compact\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n [isControl]=\"true\"\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n glyph=\"appointment-2\"\n [isExpanded]=\"isOpen\"\n [glyphAriaLabel]=\"displayCalendarToggleLabel\"\n [iconTitle]=\"displayCalendarToggleLabel\"\n (addOnButtonClicked)=\"toggleCalendar()\"\n >\n <input\n type=\"text\"\n class=\"fd-input\"\n fd-input-group-input\n [compact]=\"compact\"\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-label]=\"_dateInputArialLabel\"\n [attr.aria-required]=\"required\"\n [attr.aria-describedby]=\"_formValueStateMessageId\"\n [ngModel]=\"_inputFieldDate\"\n (keyup.enter)=\"handleInputChange($any($event.target).value, false)\"\n (ngModelChange)=\"handleInputChange($event, true)\"\n (blur)=\"handleInputChange($any($event.target).value, false)\"\n />\n </fd-input-group>\n </fd-popover-control>\n <fd-popover-body [attr.aria-expanded]=\"isOpen\" [attr.aria-hidden]=\"!isOpen\">\n <fd-form-message [embedded]=\"true\" *ngIf=\"_message\" [type]=\"state\">\n {{ _message }}\n </fd-form-message>\n <ng-content></ng-content>\n\n <fd-calendar\n (closeCalendar)=\"closeFromCalendar()\"\n [activeView]=\"activeView\"\n [compact]=\"compact\"\n [markWeekends]=\"markWeekends\"\n [specialDaysRules]=\"specialDaysRules\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [yearGrid]=\"yearGrid\"\n (activeViewChange)=\"handleCalendarActiveViewChange($event)\"\n [calType]=\"type\"\n [rangeHoverEffect]=\"rangeHoverEffect\"\n [disableFunction]=\"disableFunction ? disableFunction : null\"\n [disableRangeStartFunction]=\"disableRangeStartFunction ? disableRangeStartFunction : null\"\n [disableRangeEndFunction]=\"disableRangeEndFunction ? disableRangeEndFunction : null\"\n [selectedDate]=\"selectedDate\"\n [selectedRangeDate]=\"selectedRangeDate\"\n (selectedRangeDateChange)=\"handleRangeDateChange($event)\"\n (selectedDateChange)=\"handleSingleDateChange($event)\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n [previousButtonDisableFunction]=\"previousButtonDisableFunction\"\n [nextButtonDisableFunction]=\"nextButtonDisableFunction\"\n ></fd-calendar>\n </fd-popover-body>\n</fd-popover>\n\n<div style=\"display: none\" aria-hidden=\"true\">\n <div [attr.id]=\"_formValueStateMessageId\" aria-atomic=\"true\" aria-live=\"assertive\">\n <ng-container [ngSwitch]=\"state\">\n <ng-container *ngSwitchCase=\"'success'\">{{ valueStateSuccessMessage }}</ng-container>\n <ng-container *ngSwitchCase=\"'information'\">{{ valueStateInformationMessage }}</ng-container>\n <ng-container *ngSwitchCase=\"'warning'\">{{ valueStateWarningMessage }}</ng-container>\n <ng-container *ngSwitchCase=\"'error'\">{{ valueStateErrorMessage }}</ng-container>\n </ng-container>\n {{ _message }}\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { CalendarModule } from '@fundamental-ngx/core/calendar';\nimport { FormsModule } from '@angular/forms';\n\nimport { DatePickerComponent } from './date-picker.component';\nimport { InputGroupModule } from '@fundamental-ngx/core/input-group';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { FormMessageModule } from '@fundamental-ngx/core/form';\n\n@NgModule({\n declarations: [DatePickerComponent],\n imports: [\n CommonModule,\n IconModule,\n PopoverModule,\n CalendarModule,\n FormsModule,\n InputGroupModule,\n ButtonModule,\n FormMessageModule\n ],\n exports: [DatePickerComponent]\n})\nexport class DatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -134,6 +134,10 @@ class DatetimePickerComponent {
134
134
  this.showWeekNumbers = true;
135
135
  /** Whether or not to show the datetime picker footer with OK/cancel buttons. */
136
136
  this.showFooter = true;
137
+ /**
138
+ * Whether to prevent page scrolling when focusing date picker input field after calendar has been closed.
139
+ */
140
+ this.preventScrollOnFocus = false;
137
141
  /** @hidden */
138
142
  this._processInputOnBlur = false;
139
143
  /** Event emitted when the state of the isOpen property changes. */
@@ -454,7 +458,9 @@ class DatetimePickerComponent {
454
458
  this._changeMessageVisibility();
455
459
  // focus input control every time popup is closed
456
460
  if (!isOpen && this._inputElement) {
457
- this._inputElement.nativeElement.focus();
461
+ this._inputElement.nativeElement.focus({
462
+ preventScroll: this.preventScrollOnFocus
463
+ });
458
464
  }
459
465
  // focus calendar cell on opening
460
466
  if (isOpen && this._calendarComponent) {
@@ -522,7 +528,7 @@ class DatetimePickerComponent {
522
528
  }
523
529
  }
524
530
  DatetimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: DatetimePickerComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.ContentDensityService, optional: true }, { token: i2.DatetimeAdapter, optional: true }, { token: DATE_TIME_FORMATS, optional: true }, { token: i3.PopoverFormMessageService }], target: i0.ɵɵFactoryTarget.Component });
525
- DatetimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: DatetimePickerComponent, selector: "fd-datetime-picker", inputs: { placeholder: "placeholder", compact: "compact", placement: "placement", appendTo: "appendTo", disabled: "disabled", inputId: "inputId", required: "required", meridian: "meridian", displaySeconds: "displaySeconds", message: "message", messageTriggers: "messageTriggers", displayMinutes: "displayMinutes", displayHours: "displayHours", useValidation: "useValidation", date: "date", isOpen: "isOpen", startingDayOfWeek: "startingDayOfWeek", activeView: "activeView", datetimeInputLabel: "datetimeInputLabel", displayDatetimeToggleLabel: "displayDatetimeToggleLabel", displayTypeDateLabel: "displayTypeDateLabel", displayTypeTimeLabel: "displayTypeTimeLabel", allowNull: "allowNull", keepTwoDigitsTime: "keepTwoDigitsTime", state: "state", buttonFocusable: "buttonFocusable", specialDaysRules: "specialDaysRules", yearGrid: "yearGrid", aggregatedYearGrid: "aggregatedYearGrid", markWeekends: "markWeekends", spinnerButtons: "spinnerButtons", showWeekNumbers: "showWeekNumbers", showFooter: "showFooter", processInputOnBlur: "processInputOnBlur", disableFunction: "disableFunction" }, outputs: { isOpenChange: "isOpenChange", activeViewChange: "activeViewChange", dateChange: "dateChange", calendarChange: "calendarChange", timeChange: "timeChange", onClose: "onClose", touched: "touched" }, host: { listeners: { "blur": "handleOnTouched()" } }, providers: [
531
+ DatetimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: DatetimePickerComponent, selector: "fd-datetime-picker", inputs: { placeholder: "placeholder", compact: "compact", placement: "placement", appendTo: "appendTo", disabled: "disabled", inputId: "inputId", required: "required", meridian: "meridian", displaySeconds: "displaySeconds", message: "message", messageTriggers: "messageTriggers", displayMinutes: "displayMinutes", displayHours: "displayHours", useValidation: "useValidation", date: "date", isOpen: "isOpen", startingDayOfWeek: "startingDayOfWeek", activeView: "activeView", datetimeInputLabel: "datetimeInputLabel", displayDatetimeToggleLabel: "displayDatetimeToggleLabel", displayTypeDateLabel: "displayTypeDateLabel", displayTypeTimeLabel: "displayTypeTimeLabel", allowNull: "allowNull", keepTwoDigitsTime: "keepTwoDigitsTime", state: "state", buttonFocusable: "buttonFocusable", specialDaysRules: "specialDaysRules", yearGrid: "yearGrid", aggregatedYearGrid: "aggregatedYearGrid", markWeekends: "markWeekends", spinnerButtons: "spinnerButtons", showWeekNumbers: "showWeekNumbers", showFooter: "showFooter", processInputOnBlur: "processInputOnBlur", preventScrollOnFocus: "preventScrollOnFocus", disableFunction: "disableFunction" }, outputs: { isOpenChange: "isOpenChange", activeViewChange: "activeViewChange", dateChange: "dateChange", calendarChange: "calendarChange", timeChange: "timeChange", onClose: "onClose", touched: "touched" }, host: { listeners: { "blur": "handleOnTouched()" } }, providers: [
526
532
  {
527
533
  provide: NG_VALUE_ACCESSOR,
528
534
  useExisting: forwardRef(() => DatetimePickerComponent),
@@ -633,6 +639,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
633
639
  type: Input
634
640
  }], processInputOnBlur: [{
635
641
  type: Input
642
+ }], preventScrollOnFocus: [{
643
+ type: Input
636
644
  }], isOpenChange: [{
637
645
  type: Output
638
646
  }], activeViewChange: [{
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-datetime-picker.mjs","sources":["../../../../libs/core/src/lib/datetime-picker/errors.ts","../../../../libs/core/src/lib/datetime-picker/datetime-picker.component.ts","../../../../libs/core/src/lib/datetime-picker/datetime-picker.component.html","../../../../libs/core/src/lib/datetime-picker/datetime-picker.module.ts","../../../../libs/core/src/lib/datetime-picker/fundamental-ngx-core-datetime-picker.ts"],"sourcesContent":["export function createMissingDateImplementationError(provider: string): Error {\n return Error(\n `FdDatetimePicker: 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 {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation,\n Inject,\n OnChanges,\n AfterViewInit\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { Placement, SpecialDayRule, FormStates, Nullable } from '@fundamental-ngx/core/shared';\nimport { DatetimeAdapter, DateTimeFormats, DATE_TIME_FORMATS } from '@fundamental-ngx/core/datetime';\nimport { CalendarComponent, DaysOfWeek, FdCalendarView, CalendarYearGrid } from '@fundamental-ngx/core/calendar';\nimport { PopoverFormMessageService } from '@fundamental-ngx/core/form';\nimport { PopoverService } from '@fundamental-ngx/core/popover';\nimport { ContentDensityService } from '@fundamental-ngx/core/utils';\nimport { InputGroupInputDirective } from '@fundamental-ngx/core/input-group';\n\nimport { createMissingDateImplementationError } from './errors';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/**\n * The datetime picker component is an opinionated composition of the fd-popover,\n * fd-calendar and fd-time components to accomplish the UI pattern for picking a date and time.\n * Supports Angular Forms.\n * ```html\n * <fd-date-time-picker [(ngModel)]=\"dateTime\"></fd-date-time-picker>\n * ```\n */\n@Component({\n selector: 'fd-datetime-picker',\n templateUrl: './datetime-picker.component.html',\n styleUrls: ['./datetime-picker.component.scss'],\n host: {\n '(blur)': 'handleOnTouched()'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatetimePickerComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatetimePickerComponent),\n multi: true\n },\n PopoverFormMessageService,\n PopoverService\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatetimePickerComponent<D>\n implements OnInit, OnDestroy, OnChanges, AfterViewInit, ControlValueAccessor, Validator\n{\n /** Placeholder for the inner input element. */\n @Input()\n placeholder = '';\n\n /** Whether the component should be in compact mode. */\n @Input()\n compact?: boolean;\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 component is disabled. */\n @Input()\n disabled: boolean;\n\n /** Id attribute for input element inside DateTimePicker component */\n @Input()\n inputId: string;\n\n /** If it is mandatory field */\n @Input()\n required = false;\n\n /**\n * Whether the time component should be meridian (am/pm).\n * Default value is based on the current locale format option\n * */\n @Input()\n meridian: boolean;\n\n /**\n * Whether the time component shows seconds.\n * Default value is based on the current locale format option\n * */\n @Input()\n displaySeconds: boolean;\n\n /** Text displayed in message */\n @Input()\n set message(message: string) {\n this._message = message;\n this._popoverFormMessage.message = message;\n }\n /** @hidden */\n _message: string | null = null;\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 /** @hidden */\n _messageTriggers: string[] = ['focusin', 'focusout'];\n\n /**\n * Whether the time component shows minutes.\n * Default value is based on the current locale format option\n * */\n @Input()\n displayMinutes: boolean;\n\n /**\n * Whether the time component shows hours.\n * Default value is based on the current locale format option\n * */\n @Input()\n displayHours: boolean;\n\n /** Whether to perform visual validation on the picker input. */\n @Input()\n useValidation = true;\n\n /** Current selected date. Two-way binding is supported. */\n @Input()\n date: Nullable<D>;\n\n /** Whether the popover is open. Two-way binding is supported. */\n @Input()\n isOpen = false;\n\n /** The disableFunction for the calendar. */\n @Input()\n startingDayOfWeek: DaysOfWeek = 1;\n\n /** Actually shown active view one of 'day' | 'month' | 'year' in calendar component*/\n @Input()\n activeView: FdCalendarView = 'day';\n\n /** Aria label for the datetime picker input. */\n @Input()\n datetimeInputLabel = 'Datetime input';\n\n /** Aria label for the button to show/hide the calendar. */\n @Input()\n displayDatetimeToggleLabel = 'Display calendar toggle';\n\n /** Label for the \"Date\" button in display type switcher in mobile mode */\n @Input()\n displayTypeDateLabel = 'Date';\n\n /** Label for the \"Time\" button in display type switcher in mobile mode */\n @Input()\n displayTypeTimeLabel = 'Time';\n\n /** Whether a null input is considered valid. */\n @Input()\n allowNull = true;\n\n /**\n * @Input when set to true time component will use 2 digits for each number.\n * For example 9 will become 09\n * but 12 will be kept as 12.\n * Only uses by time component and does not change input format\n */\n @Input() keepTwoDigitsTime = false;\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: FormStates) {\n this._state = state;\n this._popoverFormMessage.messageType = state;\n }\n get state(): FormStates {\n if (this._state == null && this.useValidation && this.isInvalidDateInput) {\n return 'error';\n }\n return this._state;\n }\n /** @hidden */\n private _state: FormStates = 'default';\n\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n @Input()\n buttonFocusable = true;\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__special-day--{{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 /** @Input Whether to show spinner buttons */\n @Input()\n spinnerButtons = true;\n\n /**\n * Whether user wants to show week numbers next to days\n */\n @Input()\n showWeekNumbers = true;\n\n /** Whether or not to show the datetime picker footer with OK/cancel buttons. */\n @Input()\n showFooter = true;\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()\n set processInputOnBlur(v: boolean) {\n this._processInputOnBlur = coerceBooleanProperty(v);\n }\n get processInputOnBlur(): boolean {\n return this._processInputOnBlur;\n }\n\n /** @hidden */\n _processInputOnBlur = false;\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n isOpenChange = new EventEmitter<boolean>();\n\n /** Event thrown every time calendar active view is changed */\n @Output()\n public readonly activeViewChange: EventEmitter<FdCalendarView> = new EventEmitter<FdCalendarView>();\n\n /** Event emitted when the date changes. This can be a time or day change. */\n @Output()\n readonly dateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Event emitted when the day changes from the calendar. */\n @Output()\n readonly calendarChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Event emitted when the time changes from the time component. */\n @Output()\n readonly timeChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Event emitted when popover closes. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onClose: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted when datepicker changes it's \"touched\" state. */\n @Output()\n readonly touched: EventEmitter<void> = new EventEmitter<void>();\n\n /** Indicates when datetime input is in invalid state. */\n get isInvalidDateInput(): boolean {\n return this._isInvalidDateInput && this._touched;\n }\n\n /** @hidden Reference to the inner calendar component. */\n @ViewChild(CalendarComponent)\n _calendarComponent: CalendarComponent<D>;\n\n /** @hidden */\n @ViewChild('inputGroupComponent', { read: ElementRef })\n _inputGroupElement: ElementRef;\n\n /** @hidden */\n @ViewChild(InputGroupInputDirective, { read: ElementRef })\n _inputElement: ElementRef;\n\n /**\n * @hidden\n * Date of the input field. Internal use.\n * For programmatic selection, use two-way binding on the date input.\n */\n _inputFieldDate: string | null = null;\n\n /** @hidden */\n _isInvalidDateInput = false;\n\n /** @hidden The temporary Time object for use before 'OK' is pressed. Internal use. */\n _tempTime: Nullable<D>;\n\n /** @hidden The temporary CalendarDay object for use before 'OK' is pressed. Internal use. */\n _tempDate: Nullable<D>;\n\n /** @hidden */\n _meridian: boolean;\n\n /** @hidden */\n _displaySeconds: boolean;\n\n /** @hidden */\n _displayMinutes: boolean;\n\n /** @hidden */\n _displayHours: boolean;\n\n /** @hidden whether to display date or time in mobile mode */\n _displayType: 'date' | 'time' = 'date';\n\n /** @hidden */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _touched = false;\n\n /** @hidden */\n onChange: (value: D | null) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /**\n * Function used to disable certain dates in the calendar.\n * @param fdDate FdDate\n */\n @Input()\n disableFunction: (value: D) => boolean = () => false;\n\n /** @hidden */\n constructor(\n private _elRef: ElementRef,\n private _changeDetRef: ChangeDetectorRef,\n @Optional() private _contentDensityService: ContentDensityService,\n // Use @Optional to avoid angular injection error message and throw our own which is more precise one\n @Optional() private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) 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 // default model value\n this.date = _dateTimeAdapter.now();\n }\n\n /** @hidden */\n ngOnChanges(changes): void {\n if (changes.date) {\n this._setTempDateTime();\n }\n\n if (['displayHours', 'displayMinutes', 'displaySeconds', 'meridian'].some((input) => input in changes)) {\n this._calculateTimeOptions();\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n if (this.date) {\n this._setTempDateTime();\n }\n\n this._calculateTimeOptions();\n\n this._dateTimeAdapter.localeChanges\n .pipe(\n takeUntil(this._onDestroy$),\n filter(() => this._inputFieldDate !== '')\n )\n .subscribe(() => {\n this._setInput(this.date);\n this._calculateTimeOptions();\n this._changeDetRef.detectChanges();\n });\n\n if (this.compact === undefined && this._contentDensityService) {\n this._subscriptions.add(\n this._contentDensityService._isCompactDensity.subscribe((isCompact) => {\n this.compact = isCompact;\n this._changeDetRef.markForCheck();\n })\n );\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._InitialiseVariablesInMessageService();\n // update bindings after rendering\n // is needed to preperly reflect error state\n setTimeout(() => {\n this._changeDetRef.markForCheck();\n });\n }\n\n /**\n * @hidden\n * Function that implements Validator Interface, adds validation support for forms\n */\n validate(): { [key: string]: any } | null {\n return this.isCurrentModelValid() && !this._isInvalidDateInput\n ? null\n : {\n dateValidation: {\n valid: false\n }\n };\n }\n\n /** Toggles the popover. */\n togglePopover(): void {\n this.handleOnTouched();\n if (this.isOpen) {\n this.closePopover();\n } else {\n this.openPopover();\n }\n }\n\n /**\n * Method that handles calendar active view change and throws event.\n */\n handleCalendarActiveViewChange(activeView: FdCalendarView): void {\n this.activeViewChange.emit(activeView);\n }\n\n /** Method that handles blur events on datetime picker input */\n handleOnTouched(event?: FocusEvent): void {\n this._touched = true;\n this.onTouched();\n this.touched.next();\n if (event) {\n this.handleInputChange((<HTMLInputElement>event.target).value, false);\n }\n }\n\n /** Opens the popover. */\n openPopover(): void {\n if (!this.isOpen && !this.disabled) {\n this.handleOnTouched();\n this.isOpen = true;\n this._onOpenStateChanged(this.isOpen);\n }\n }\n\n /** Closes the popover and refresh model */\n closePopover(): void {\n if (this.isOpen) {\n this.onClose.emit();\n this.isOpen = false;\n this._onOpenStateChanged(this.isOpen);\n }\n }\n\n /** @hidden */\n setInvalidDateInputHandler(isInvalid: boolean): void {\n this._isInvalidDateInput = isInvalid;\n }\n\n /** @hidden */\n registerOnChange(fn: (selected: any) => { void }): 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._changeDetRef.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): void {\n this.date = selected;\n this._isInvalidDateInput = !this._isModelValid(this.date);\n if (this.isCurrentModelValid()) {\n this._setTempDateTime();\n this._refreshCurrentlyDisplayedCalendarDate(this.date);\n }\n this._setInput(this.date);\n }\n\n /**\n * @hidden\n * Method that is triggered by events from calendar component, when there is selected date changed.\n * If invalid time model is detected, it takes time model data from TimeComponent.\n */\n handleDateChange(date: D): void {\n this._tempDate = date;\n if (!this.showFooter) {\n this.submit();\n }\n }\n\n /**\n * @hidden\n * Method that is triggered by events from time component, when there is selected time changed\n */\n handleTimeChange(time: D): void {\n this._tempTime = time;\n if (!this.showFooter) {\n this.submit();\n }\n }\n\n /**\n * @hidden\n * Method that is triggered when 'OK' button is pressed.\n */\n submit(): void {\n // marking date & time as not null, errors will be caught below\n const currentDate = this._tempDate!;\n const currentTime = this._tempTime!;\n\n try {\n this.date = this._dateTimeAdapter.setTime(\n currentDate,\n this._dateTimeAdapter.getHours(currentTime),\n this._dateTimeAdapter.getMinutes(currentTime),\n this._dateTimeAdapter.getSeconds(currentTime)\n );\n } catch {\n this.date = null;\n }\n this._isInvalidDateInput = !this.isCurrentModelValid();\n\n this._setInput(this.date);\n\n this.onChange(this.date);\n\n if (this.showFooter) {\n this.closePopover();\n this._changeDetRef.detectChanges();\n }\n }\n\n /**\n * @hidden\n * Function that is called when 'Cancel' button is pressed.\n */\n cancel(): void {\n this._tempDate = this.date;\n this._tempTime = this.date;\n this.closePopover();\n }\n\n /**\n * @hidden\n * Looks like no one uses it. Should be removed?\n */\n focusArrowLeft(): void {\n if (this._elRef.nativeElement.querySelector('#' + this._calendarComponent.id + '-left-arrow')) {\n this._elRef.nativeElement.querySelector('#' + this._calendarComponent.id + '-left-arrow').focus();\n }\n }\n\n /**\n * @hidden\n * Method, which is responsible for transforming string to datetime, depending on type or\n * validation the results are different. It also changes to state of _isInvalidDateInput.\n */\n handleInputChange(inputStr: 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._inputFieldDate = inputStr ?? '';\n if (!inputStr) {\n this._isInvalidDateInput = !this.allowNull;\n this.onChange(null);\n return;\n }\n this.date = this._dateTimeAdapter.parse(inputStr, this._dateTimeFormats.parse.dateTimeInput);\n this._isInvalidDateInput = !this._isModelValid(this.date);\n\n if (!this._isInvalidDateInput) {\n this._setTempDateTime();\n this._refreshCurrentlyDisplayedCalendarDate(this.date);\n }\n this.onChange(this.date);\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 }\n // focus calendar cell on opening\n if (isOpen && this._calendarComponent) {\n this._calendarComponent.initialFocus();\n }\n }\n\n /** Method that provides information if model selected date/dates have properly types and are valid */\n isCurrentModelValid(): boolean {\n return this._isModelValid(this.date);\n }\n\n /** Method that provides information if FdDateTime passed as arg has properly types and is valid */\n private _isModelValid(date: Nullable<D>): boolean {\n return this._dateTimeAdapter.isValid(date);\n }\n\n private _setInput(dateTime: Nullable<D>): void {\n this._inputFieldDate = dateTime && this._isModelValid ? this._formatDateTime(dateTime) : '';\n this._changeDetRef.detectChanges();\n }\n\n /** @hidden */\n private _refreshCurrentlyDisplayedCalendarDate(date: Nullable<D>): void {\n if (this._calendarComponent) {\n this._calendarComponent.setCurrentlyDisplayed(date);\n }\n }\n\n /**\n * @hidden\n * Format date time entity.\n */\n private _formatDateTime(dateTime: D): string {\n const formattedDate: string = this._dateTimeAdapter.format(\n dateTime,\n this._dateTimeFormats.display.dateTimeInput\n );\n return formattedDate || '';\n }\n\n /** @hidden */\n private _InitialiseVariablesInMessageService(): void {\n this._popoverFormMessage.init(this._inputGroupElement);\n this._popoverFormMessage.message = this._message ?? '';\n this._popoverFormMessage.triggers = this._messageTriggers;\n this._popoverFormMessage.messageType = this._state;\n }\n\n /** @hidden */\n private _setTempDateTime(): void {\n this._tempDate = this.date;\n this._tempTime = this.date;\n }\n\n /** @hidden */\n private _calculateTimeOptions(): void {\n const format = this._dateTimeFormats.display.dateTimeInput;\n\n // default meridian option based on format option\n this._meridian =\n this.meridian != null ? this.meridian : this._dateTimeAdapter.isTimeFormatIncludesDayPeriod(format);\n\n // default seconds option based on format option\n this._displaySeconds =\n this.displaySeconds != null\n ? this.displaySeconds\n : this._dateTimeAdapter.isTimeFormatIncludesSeconds(format);\n\n // default minutes option based on format option\n this._displayMinutes =\n this.displayMinutes != null\n ? this.displayMinutes\n : this._dateTimeAdapter.isTimeFormatIncludesMinutes(format);\n\n // default hours option based on format option\n this._displayHours =\n this.displayHours != null ? this.displayHours : this._dateTimeAdapter.isTimeFormatIncludesHours(format);\n }\n}\n","<div class=\"fd-datetime\">\n <fd-popover\n [(isOpen)]=\"isOpen\"\n (isOpenChange)=\"_onOpenStateChanged($event)\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"false\"\n [triggers]=\"[]\"\n [disabled]=\"disabled\"\n [placement]=\"placement\"\n [appendTo]=\"appendTo\"\n >\n <fd-popover-control>\n <fd-input-group\n #inputGroupComponent\n [compact]=\"compact\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n [isControl]=\"true\"\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n glyph=\"date-time\"\n [isExpanded]=\"isOpen\"\n [glyphAriaLabel]=\"displayDatetimeToggleLabel\"\n [iconTitle]=\"displayDatetimeToggleLabel\"\n (addOnButtonClicked)=\"togglePopover()\"\n >\n <input\n type=\"text\"\n class=\"fd-input\"\n fd-input-group-input\n [attr.aria-label]=\"datetimeInputLabel\"\n [attr.id]=\"inputId\"\n [attr.aria-required]=\"required\"\n [placeholder]=\"placeholder\"\n [compact]=\"compact\"\n [disabled]=\"disabled\"\n [ngModel]=\"_inputFieldDate\"\n (keyup.enter)=\"handleInputChange($any($event.target).value, false)\"\n (ngModelChange)=\"handleInputChange($event, true)\"\n (blur)=\"handleOnTouched($event)\"\n />\n </fd-input-group>\n </fd-popover-control>\n <fd-popover-body\n aria-labelledby=\"fd-form-message\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-hidden]=\"!isOpen\"\n [style.display]=\"'block'\"\n >\n <div class=\"fd-popover__wrapper fd-datetime__wrapper\">\n <div class=\"fd-datetime__display-type-switcher\">\n <fd-segmented-button [(ngModel)]=\"_displayType\">\n <button fd-button [label]=\"displayTypeDateLabel\" value=\"date\"></button>\n <button fd-button [label]=\"displayTypeTimeLabel\" value=\"time\"></button>\n </fd-segmented-button>\n </div>\n <fd-form-message id=\"fd-form-message\" [embedded]=\"true\" *ngIf=\"_message\" [type]=\"state\">\n {{ _message }}\n </fd-form-message>\n <ng-content></ng-content>\n <div class=\"fd-datetime__container\">\n <fd-calendar\n [class.fd-datetime__active-display-type]=\"_displayType === 'date'\"\n calType=\"single\"\n [activeView]=\"activeView\"\n [disableFunction]=\"disableFunction || null\"\n [selectedDate]=\"_tempDate\"\n [escapeFocusFunction]=\"null\"\n [compact]=\"compact\"\n [markWeekends]=\"markWeekends\"\n [specialDaysRules]=\"specialDaysRules\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [yearGrid]=\"yearGrid\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n (activeViewChange)=\"handleCalendarActiveViewChange($event)\"\n (selectedDateChange)=\"handleDateChange($event)\"\n (isValidDateChange)=\"setInvalidDateInputHandler($event)\"\n ></fd-calendar>\n <div class=\"fd-datetime__separator\"></div>\n <fd-time\n *ngIf=\"isOpen\"\n [class.fd-datetime__active-display-type]=\"_displayType === 'time'\"\n [disabled]=\"disabled\"\n [elementsAtOnce]=\"5\"\n [keepTwoDigits]=\"keepTwoDigitsTime\"\n [ngModel]=\"_tempTime\"\n [compact]=\"compact\"\n [spinnerButtons]=\"spinnerButtons\"\n [meridian]=\"_meridian\"\n [displaySeconds]=\"_displaySeconds\"\n [displayMinutes]=\"_displayMinutes\"\n [displayHours]=\"_displayHours\"\n (ngModelChange)=\"handleTimeChange($event)\"\n ></fd-time>\n </div>\n <div fd-popover-body-footer *ngIf=\"showFooter\">\n <div fd-bar barDesign=\"footer\" [cozy]=\"!compact\">\n <div fd-bar-right>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"emphasized\"\n label=\"OK\"\n [compact]=\"compact\"\n (click)=\"submit()\"\n ></button>\n </fd-bar-element>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"transparent\"\n [compact]=\"compact\"\n label=\"Cancel\"\n (click)=\"cancel()\"\n ></button>\n </fd-bar-element>\n </div>\n </div>\n </div>\n </div>\n </fd-popover-body>\n </fd-popover>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { CalendarModule } from '@fundamental-ngx/core/calendar';\nimport { FormsModule } from '@angular/forms';\nimport { DatetimePickerComponent } from './datetime-picker.component';\nimport { TimeModule } from '@fundamental-ngx/core/time';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { InputGroupModule } from '@fundamental-ngx/core/input-group';\nimport { BarModule } from '@fundamental-ngx/core/bar';\nimport { FormMessageModule } from '@fundamental-ngx/core/form';\nimport { SegmentedButtonModule } from '@fundamental-ngx/core/segmented-button';\n\n@NgModule({\n declarations: [DatetimePickerComponent],\n imports: [\n CommonModule,\n IconModule,\n PopoverModule,\n CalendarModule,\n FormsModule,\n TimeModule,\n InputGroupModule,\n ButtonModule,\n BarModule,\n SegmentedButtonModule,\n FormMessageModule\n ],\n exports: [DatetimePickerComponent]\n})\nexport class DatetimePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-datetime-picker.mjs","sources":["../../../../libs/core/src/lib/datetime-picker/errors.ts","../../../../libs/core/src/lib/datetime-picker/datetime-picker.component.ts","../../../../libs/core/src/lib/datetime-picker/datetime-picker.component.html","../../../../libs/core/src/lib/datetime-picker/datetime-picker.module.ts","../../../../libs/core/src/lib/datetime-picker/fundamental-ngx-core-datetime-picker.ts"],"sourcesContent":["export function createMissingDateImplementationError(provider: string): Error {\n return Error(\n `FdDatetimePicker: 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 {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation,\n Inject,\n OnChanges,\n AfterViewInit\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { Placement, SpecialDayRule, FormStates, Nullable } from '@fundamental-ngx/core/shared';\nimport { DatetimeAdapter, DateTimeFormats, DATE_TIME_FORMATS } from '@fundamental-ngx/core/datetime';\nimport { CalendarComponent, DaysOfWeek, FdCalendarView, CalendarYearGrid } from '@fundamental-ngx/core/calendar';\nimport { PopoverFormMessageService } from '@fundamental-ngx/core/form';\nimport { PopoverService } from '@fundamental-ngx/core/popover';\nimport { ContentDensityService } from '@fundamental-ngx/core/utils';\nimport { InputGroupInputDirective } from '@fundamental-ngx/core/input-group';\n\nimport { createMissingDateImplementationError } from './errors';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/**\n * The datetime picker component is an opinionated composition of the fd-popover,\n * fd-calendar and fd-time components to accomplish the UI pattern for picking a date and time.\n * Supports Angular Forms.\n * ```html\n * <fd-date-time-picker [(ngModel)]=\"dateTime\"></fd-date-time-picker>\n * ```\n */\n@Component({\n selector: 'fd-datetime-picker',\n templateUrl: './datetime-picker.component.html',\n styleUrls: ['./datetime-picker.component.scss'],\n host: {\n '(blur)': 'handleOnTouched()'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatetimePickerComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatetimePickerComponent),\n multi: true\n },\n PopoverFormMessageService,\n PopoverService\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatetimePickerComponent<D>\n implements OnInit, OnDestroy, OnChanges, AfterViewInit, ControlValueAccessor, Validator\n{\n /** Placeholder for the inner input element. */\n @Input()\n placeholder = '';\n\n /** Whether the component should be in compact mode. */\n @Input()\n compact?: boolean;\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 component is disabled. */\n @Input()\n disabled: boolean;\n\n /** Id attribute for input element inside DateTimePicker component */\n @Input()\n inputId: string;\n\n /** If it is mandatory field */\n @Input()\n required = false;\n\n /**\n * Whether the time component should be meridian (am/pm).\n * Default value is based on the current locale format option\n * */\n @Input()\n meridian: boolean;\n\n /**\n * Whether the time component shows seconds.\n * Default value is based on the current locale format option\n * */\n @Input()\n displaySeconds: boolean;\n\n /** Text displayed in message */\n @Input()\n set message(message: string) {\n this._message = message;\n this._popoverFormMessage.message = message;\n }\n /** @hidden */\n _message: string | null = null;\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 /** @hidden */\n _messageTriggers: string[] = ['focusin', 'focusout'];\n\n /**\n * Whether the time component shows minutes.\n * Default value is based on the current locale format option\n * */\n @Input()\n displayMinutes: boolean;\n\n /**\n * Whether the time component shows hours.\n * Default value is based on the current locale format option\n * */\n @Input()\n displayHours: boolean;\n\n /** Whether to perform visual validation on the picker input. */\n @Input()\n useValidation = true;\n\n /** Current selected date. Two-way binding is supported. */\n @Input()\n date: Nullable<D>;\n\n /** Whether the popover is open. Two-way binding is supported. */\n @Input()\n isOpen = false;\n\n /** The disableFunction for the calendar. */\n @Input()\n startingDayOfWeek: DaysOfWeek = 1;\n\n /** Actually shown active view one of 'day' | 'month' | 'year' in calendar component*/\n @Input()\n activeView: FdCalendarView = 'day';\n\n /** Aria label for the datetime picker input. */\n @Input()\n datetimeInputLabel = 'Datetime input';\n\n /** Aria label for the button to show/hide the calendar. */\n @Input()\n displayDatetimeToggleLabel = 'Display calendar toggle';\n\n /** Label for the \"Date\" button in display type switcher in mobile mode */\n @Input()\n displayTypeDateLabel = 'Date';\n\n /** Label for the \"Time\" button in display type switcher in mobile mode */\n @Input()\n displayTypeTimeLabel = 'Time';\n\n /** Whether a null input is considered valid. */\n @Input()\n allowNull = true;\n\n /**\n * @Input when set to true time component will use 2 digits for each number.\n * For example 9 will become 09\n * but 12 will be kept as 12.\n * Only uses by time component and does not change input format\n */\n @Input() keepTwoDigitsTime = false;\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: FormStates) {\n this._state = state;\n this._popoverFormMessage.messageType = state;\n }\n get state(): FormStates {\n if (this._state == null && this.useValidation && this.isInvalidDateInput) {\n return 'error';\n }\n return this._state;\n }\n /** @hidden */\n private _state: FormStates = 'default';\n\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n @Input()\n buttonFocusable = true;\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__special-day--{{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 /** @Input Whether to show spinner buttons */\n @Input()\n spinnerButtons = true;\n\n /**\n * Whether user wants to show week numbers next to days\n */\n @Input()\n showWeekNumbers = true;\n\n /** Whether or not to show the datetime picker footer with OK/cancel buttons. */\n @Input()\n showFooter = true;\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()\n set processInputOnBlur(v: boolean) {\n this._processInputOnBlur = coerceBooleanProperty(v);\n }\n get processInputOnBlur(): boolean {\n return this._processInputOnBlur;\n }\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 /** @hidden */\n _processInputOnBlur = false;\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n isOpenChange = new EventEmitter<boolean>();\n\n /** Event thrown every time calendar active view is changed */\n @Output()\n public readonly activeViewChange: EventEmitter<FdCalendarView> = new EventEmitter<FdCalendarView>();\n\n /** Event emitted when the date changes. This can be a time or day change. */\n @Output()\n readonly dateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Event emitted when the day changes from the calendar. */\n @Output()\n readonly calendarChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Event emitted when the time changes from the time component. */\n @Output()\n readonly timeChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Event emitted when popover closes. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onClose: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted when datepicker changes it's \"touched\" state. */\n @Output()\n readonly touched: EventEmitter<void> = new EventEmitter<void>();\n\n /** Indicates when datetime input is in invalid state. */\n get isInvalidDateInput(): boolean {\n return this._isInvalidDateInput && this._touched;\n }\n\n /** @hidden Reference to the inner calendar component. */\n @ViewChild(CalendarComponent)\n _calendarComponent: CalendarComponent<D>;\n\n /** @hidden */\n @ViewChild('inputGroupComponent', { read: ElementRef })\n _inputGroupElement: ElementRef;\n\n /** @hidden */\n @ViewChild(InputGroupInputDirective, { read: ElementRef })\n _inputElement: ElementRef<HTMLInputElement>;\n\n /**\n * @hidden\n * Date of the input field. Internal use.\n * For programmatic selection, use two-way binding on the date input.\n */\n _inputFieldDate: string | null = null;\n\n /** @hidden */\n _isInvalidDateInput = false;\n\n /** @hidden The temporary Time object for use before 'OK' is pressed. Internal use. */\n _tempTime: Nullable<D>;\n\n /** @hidden The temporary CalendarDay object for use before 'OK' is pressed. Internal use. */\n _tempDate: Nullable<D>;\n\n /** @hidden */\n _meridian: boolean;\n\n /** @hidden */\n _displaySeconds: boolean;\n\n /** @hidden */\n _displayMinutes: boolean;\n\n /** @hidden */\n _displayHours: boolean;\n\n /** @hidden whether to display date or time in mobile mode */\n _displayType: 'date' | 'time' = 'date';\n\n /** @hidden */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _touched = false;\n\n /** @hidden */\n onChange: (value: D | null) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /**\n * Function used to disable certain dates in the calendar.\n * @param fdDate FdDate\n */\n @Input()\n disableFunction: (value: D) => boolean = () => false;\n\n /** @hidden */\n constructor(\n private _elRef: ElementRef,\n private _changeDetRef: ChangeDetectorRef,\n @Optional() private _contentDensityService: ContentDensityService,\n // Use @Optional to avoid angular injection error message and throw our own which is more precise one\n @Optional() private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) 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 // default model value\n this.date = _dateTimeAdapter.now();\n }\n\n /** @hidden */\n ngOnChanges(changes): void {\n if (changes.date) {\n this._setTempDateTime();\n }\n\n if (['displayHours', 'displayMinutes', 'displaySeconds', 'meridian'].some((input) => input in changes)) {\n this._calculateTimeOptions();\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n if (this.date) {\n this._setTempDateTime();\n }\n\n this._calculateTimeOptions();\n\n this._dateTimeAdapter.localeChanges\n .pipe(\n takeUntil(this._onDestroy$),\n filter(() => this._inputFieldDate !== '')\n )\n .subscribe(() => {\n this._setInput(this.date);\n this._calculateTimeOptions();\n this._changeDetRef.detectChanges();\n });\n\n if (this.compact === undefined && this._contentDensityService) {\n this._subscriptions.add(\n this._contentDensityService._isCompactDensity.subscribe((isCompact) => {\n this.compact = isCompact;\n this._changeDetRef.markForCheck();\n })\n );\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._InitialiseVariablesInMessageService();\n // update bindings after rendering\n // is needed to preperly reflect error state\n setTimeout(() => {\n this._changeDetRef.markForCheck();\n });\n }\n\n /**\n * @hidden\n * Function that implements Validator Interface, adds validation support for forms\n */\n validate(): { [key: string]: any } | null {\n return this.isCurrentModelValid() && !this._isInvalidDateInput\n ? null\n : {\n dateValidation: {\n valid: false\n }\n };\n }\n\n /** Toggles the popover. */\n togglePopover(): void {\n this.handleOnTouched();\n if (this.isOpen) {\n this.closePopover();\n } else {\n this.openPopover();\n }\n }\n\n /**\n * Method that handles calendar active view change and throws event.\n */\n handleCalendarActiveViewChange(activeView: FdCalendarView): void {\n this.activeViewChange.emit(activeView);\n }\n\n /** Method that handles blur events on datetime picker input */\n handleOnTouched(event?: FocusEvent): void {\n this._touched = true;\n this.onTouched();\n this.touched.next();\n if (event) {\n this.handleInputChange((<HTMLInputElement>event.target).value, false);\n }\n }\n\n /** Opens the popover. */\n openPopover(): void {\n if (!this.isOpen && !this.disabled) {\n this.handleOnTouched();\n this.isOpen = true;\n this._onOpenStateChanged(this.isOpen);\n }\n }\n\n /** Closes the popover and refresh model */\n closePopover(): void {\n if (this.isOpen) {\n this.onClose.emit();\n this.isOpen = false;\n this._onOpenStateChanged(this.isOpen);\n }\n }\n\n /** @hidden */\n setInvalidDateInputHandler(isInvalid: boolean): void {\n this._isInvalidDateInput = isInvalid;\n }\n\n /** @hidden */\n registerOnChange(fn: (selected: any) => { void }): 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._changeDetRef.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): void {\n this.date = selected;\n this._isInvalidDateInput = !this._isModelValid(this.date);\n if (this.isCurrentModelValid()) {\n this._setTempDateTime();\n this._refreshCurrentlyDisplayedCalendarDate(this.date);\n }\n this._setInput(this.date);\n }\n\n /**\n * @hidden\n * Method that is triggered by events from calendar component, when there is selected date changed.\n * If invalid time model is detected, it takes time model data from TimeComponent.\n */\n handleDateChange(date: D): void {\n this._tempDate = date;\n if (!this.showFooter) {\n this.submit();\n }\n }\n\n /**\n * @hidden\n * Method that is triggered by events from time component, when there is selected time changed\n */\n handleTimeChange(time: D): void {\n this._tempTime = time;\n if (!this.showFooter) {\n this.submit();\n }\n }\n\n /**\n * @hidden\n * Method that is triggered when 'OK' button is pressed.\n */\n submit(): void {\n // marking date & time as not null, errors will be caught below\n const currentDate = this._tempDate!;\n const currentTime = this._tempTime!;\n\n try {\n this.date = this._dateTimeAdapter.setTime(\n currentDate,\n this._dateTimeAdapter.getHours(currentTime),\n this._dateTimeAdapter.getMinutes(currentTime),\n this._dateTimeAdapter.getSeconds(currentTime)\n );\n } catch {\n this.date = null;\n }\n this._isInvalidDateInput = !this.isCurrentModelValid();\n\n this._setInput(this.date);\n\n this.onChange(this.date);\n\n if (this.showFooter) {\n this.closePopover();\n this._changeDetRef.detectChanges();\n }\n }\n\n /**\n * @hidden\n * Function that is called when 'Cancel' button is pressed.\n */\n cancel(): void {\n this._tempDate = this.date;\n this._tempTime = this.date;\n this.closePopover();\n }\n\n /**\n * @hidden\n * Looks like no one uses it. Should be removed?\n */\n focusArrowLeft(): void {\n if (this._elRef.nativeElement.querySelector('#' + this._calendarComponent.id + '-left-arrow')) {\n this._elRef.nativeElement.querySelector('#' + this._calendarComponent.id + '-left-arrow').focus();\n }\n }\n\n /**\n * @hidden\n * Method, which is responsible for transforming string to datetime, depending on type or\n * validation the results are different. It also changes to state of _isInvalidDateInput.\n */\n handleInputChange(inputStr: 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._inputFieldDate = inputStr ?? '';\n if (!inputStr) {\n this._isInvalidDateInput = !this.allowNull;\n this.onChange(null);\n return;\n }\n this.date = this._dateTimeAdapter.parse(inputStr, this._dateTimeFormats.parse.dateTimeInput);\n this._isInvalidDateInput = !this._isModelValid(this.date);\n\n if (!this._isInvalidDateInput) {\n this._setTempDateTime();\n this._refreshCurrentlyDisplayedCalendarDate(this.date);\n }\n this.onChange(this.date);\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 // focus calendar cell on opening\n if (isOpen && this._calendarComponent) {\n this._calendarComponent.initialFocus();\n }\n }\n\n /** Method that provides information if model selected date/dates have properly types and are valid */\n isCurrentModelValid(): boolean {\n return this._isModelValid(this.date);\n }\n\n /** Method that provides information if FdDateTime passed as arg has properly types and is valid */\n private _isModelValid(date: Nullable<D>): boolean {\n return this._dateTimeAdapter.isValid(date);\n }\n\n private _setInput(dateTime: Nullable<D>): void {\n this._inputFieldDate = dateTime && this._isModelValid ? this._formatDateTime(dateTime) : '';\n this._changeDetRef.detectChanges();\n }\n\n /** @hidden */\n private _refreshCurrentlyDisplayedCalendarDate(date: Nullable<D>): void {\n if (this._calendarComponent) {\n this._calendarComponent.setCurrentlyDisplayed(date);\n }\n }\n\n /**\n * @hidden\n * Format date time entity.\n */\n private _formatDateTime(dateTime: D): string {\n const formattedDate: string = this._dateTimeAdapter.format(\n dateTime,\n this._dateTimeFormats.display.dateTimeInput\n );\n return formattedDate || '';\n }\n\n /** @hidden */\n private _InitialiseVariablesInMessageService(): void {\n this._popoverFormMessage.init(this._inputGroupElement);\n this._popoverFormMessage.message = this._message ?? '';\n this._popoverFormMessage.triggers = this._messageTriggers;\n this._popoverFormMessage.messageType = this._state;\n }\n\n /** @hidden */\n private _setTempDateTime(): void {\n this._tempDate = this.date;\n this._tempTime = this.date;\n }\n\n /** @hidden */\n private _calculateTimeOptions(): void {\n const format = this._dateTimeFormats.display.dateTimeInput;\n\n // default meridian option based on format option\n this._meridian =\n this.meridian != null ? this.meridian : this._dateTimeAdapter.isTimeFormatIncludesDayPeriod(format);\n\n // default seconds option based on format option\n this._displaySeconds =\n this.displaySeconds != null\n ? this.displaySeconds\n : this._dateTimeAdapter.isTimeFormatIncludesSeconds(format);\n\n // default minutes option based on format option\n this._displayMinutes =\n this.displayMinutes != null\n ? this.displayMinutes\n : this._dateTimeAdapter.isTimeFormatIncludesMinutes(format);\n\n // default hours option based on format option\n this._displayHours =\n this.displayHours != null ? this.displayHours : this._dateTimeAdapter.isTimeFormatIncludesHours(format);\n }\n}\n","<div class=\"fd-datetime\">\n <fd-popover\n [(isOpen)]=\"isOpen\"\n (isOpenChange)=\"_onOpenStateChanged($event)\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"false\"\n [triggers]=\"[]\"\n [disabled]=\"disabled\"\n [placement]=\"placement\"\n [appendTo]=\"appendTo\"\n >\n <fd-popover-control>\n <fd-input-group\n #inputGroupComponent\n [compact]=\"compact\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n [isControl]=\"true\"\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n glyph=\"date-time\"\n [isExpanded]=\"isOpen\"\n [glyphAriaLabel]=\"displayDatetimeToggleLabel\"\n [iconTitle]=\"displayDatetimeToggleLabel\"\n (addOnButtonClicked)=\"togglePopover()\"\n >\n <input\n type=\"text\"\n class=\"fd-input\"\n fd-input-group-input\n [attr.aria-label]=\"datetimeInputLabel\"\n [attr.id]=\"inputId\"\n [attr.aria-required]=\"required\"\n [placeholder]=\"placeholder\"\n [compact]=\"compact\"\n [disabled]=\"disabled\"\n [ngModel]=\"_inputFieldDate\"\n (keyup.enter)=\"handleInputChange($any($event.target).value, false)\"\n (ngModelChange)=\"handleInputChange($event, true)\"\n (blur)=\"handleOnTouched($event)\"\n />\n </fd-input-group>\n </fd-popover-control>\n <fd-popover-body\n aria-labelledby=\"fd-form-message\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-hidden]=\"!isOpen\"\n [style.display]=\"'block'\"\n >\n <div class=\"fd-popover__wrapper fd-datetime__wrapper\">\n <div class=\"fd-datetime__display-type-switcher\">\n <fd-segmented-button [(ngModel)]=\"_displayType\">\n <button fd-button [label]=\"displayTypeDateLabel\" value=\"date\"></button>\n <button fd-button [label]=\"displayTypeTimeLabel\" value=\"time\"></button>\n </fd-segmented-button>\n </div>\n <fd-form-message id=\"fd-form-message\" [embedded]=\"true\" *ngIf=\"_message\" [type]=\"state\">\n {{ _message }}\n </fd-form-message>\n <ng-content></ng-content>\n <div class=\"fd-datetime__container\">\n <fd-calendar\n [class.fd-datetime__active-display-type]=\"_displayType === 'date'\"\n calType=\"single\"\n [activeView]=\"activeView\"\n [disableFunction]=\"disableFunction || null\"\n [selectedDate]=\"_tempDate\"\n [escapeFocusFunction]=\"null\"\n [compact]=\"compact\"\n [markWeekends]=\"markWeekends\"\n [specialDaysRules]=\"specialDaysRules\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [yearGrid]=\"yearGrid\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n (activeViewChange)=\"handleCalendarActiveViewChange($event)\"\n (selectedDateChange)=\"handleDateChange($event)\"\n (isValidDateChange)=\"setInvalidDateInputHandler($event)\"\n ></fd-calendar>\n <div class=\"fd-datetime__separator\"></div>\n <fd-time\n *ngIf=\"isOpen\"\n [class.fd-datetime__active-display-type]=\"_displayType === 'time'\"\n [disabled]=\"disabled\"\n [elementsAtOnce]=\"5\"\n [keepTwoDigits]=\"keepTwoDigitsTime\"\n [ngModel]=\"_tempTime\"\n [compact]=\"compact\"\n [spinnerButtons]=\"spinnerButtons\"\n [meridian]=\"_meridian\"\n [displaySeconds]=\"_displaySeconds\"\n [displayMinutes]=\"_displayMinutes\"\n [displayHours]=\"_displayHours\"\n (ngModelChange)=\"handleTimeChange($event)\"\n ></fd-time>\n </div>\n <div fd-popover-body-footer *ngIf=\"showFooter\">\n <div fd-bar barDesign=\"footer\" [cozy]=\"!compact\">\n <div fd-bar-right>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"emphasized\"\n label=\"OK\"\n [compact]=\"compact\"\n (click)=\"submit()\"\n ></button>\n </fd-bar-element>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"transparent\"\n [compact]=\"compact\"\n label=\"Cancel\"\n (click)=\"cancel()\"\n ></button>\n </fd-bar-element>\n </div>\n </div>\n </div>\n </div>\n </fd-popover-body>\n </fd-popover>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { CalendarModule } from '@fundamental-ngx/core/calendar';\nimport { FormsModule } from '@angular/forms';\nimport { DatetimePickerComponent } from './datetime-picker.component';\nimport { TimeModule } from '@fundamental-ngx/core/time';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { InputGroupModule } from '@fundamental-ngx/core/input-group';\nimport { BarModule } from '@fundamental-ngx/core/bar';\nimport { FormMessageModule } from '@fundamental-ngx/core/form';\nimport { SegmentedButtonModule } from '@fundamental-ngx/core/segmented-button';\n\n@NgModule({\n declarations: [DatetimePickerComponent],\n imports: [\n CommonModule,\n IconModule,\n PopoverModule,\n CalendarModule,\n FormsModule,\n TimeModule,\n InputGroupModule,\n ButtonModule,\n BarModule,\n SegmentedButtonModule,\n FormMessageModule\n ],\n exports: [DatetimePickerComponent]\n})\nexport class DatetimePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAAgB,oCAAoC,CAAC,QAAgB;IACjE,OAAO,KAAK,CACR,2CAA2C,QAAQ,yCAAyC;QACxF,mEAAmE;QACnE,wBAAwB,CAC/B,CAAC;AACN;;AC2BA;;;;;;;;MAgCa,uBAAuB;;IAuUhC,YACY,MAAkB,EAClB,aAAgC,EACpB,sBAA6C;;IAE7C,gBAAoC,EACT,gBAAiC,EACxE,mBAA8C;QAN9C,WAAM,GAAN,MAAM,CAAY;QAClB,kBAAa,GAAb,aAAa,CAAmB;QACpB,2BAAsB,GAAtB,sBAAsB,CAAuB;QAE7C,qBAAgB,GAAhB,gBAAgB,CAAoB;QACT,qBAAgB,GAAhB,gBAAgB,CAAiB;QACxE,wBAAmB,GAAnB,mBAAmB,CAA2B;;QAzU1D,gBAAW,GAAG,EAAE,CAAC;;;;;QAWjB,cAAS,GAAc,cAAc,CAAC;;QAgBtC,aAAQ,GAAG,KAAK,CAAC;;QAuBjB,aAAQ,GAAkB,IAAI,CAAC;;QAU/B,qBAAgB,GAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;;QAkBrD,kBAAa,GAAG,IAAI,CAAC;;QAQrB,WAAM,GAAG,KAAK,CAAC;;QAIf,sBAAiB,GAAe,CAAC,CAAC;;QAIlC,eAAU,GAAmB,KAAK,CAAC;;QAInC,uBAAkB,GAAG,gBAAgB,CAAC;;QAItC,+BAA0B,GAAG,yBAAyB,CAAC;;QAIvD,yBAAoB,GAAG,MAAM,CAAC;;QAI9B,yBAAoB,GAAG,MAAM,CAAC;;QAI9B,cAAS,GAAG,IAAI,CAAC;;;;;;;QAQR,sBAAiB,GAAG,KAAK,CAAC;;QAmB3B,WAAM,GAAe,SAAS,CAAC;;;;;QAOvC,oBAAe,GAAG,IAAI,CAAC;;;;;;;;QAUvB,qBAAgB,GAAwB,EAAE,CAAC;;;;;QAO3C,aAAQ,GAAqB;YACzB,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,CAAC;SACV,CAAC;;;;;QAOF,uBAAkB,GAAqB;YACnC,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,CAAC;SACV,CAAC;;;;QAMF,iBAAY,GAAG,IAAI,CAAC;;QAIpB,mBAAc,GAAG,IAAI,CAAC;;;;QAMtB,oBAAe,GAAG,IAAI,CAAC;;QAIvB,eAAU,GAAG,IAAI,CAAC;;;;QAmBlB,yBAAoB,GAAG,KAAK,CAAC;;QAG7B,wBAAmB,GAAG,KAAK,CAAC;;QAI5B,iBAAY,GAAG,IAAI,YAAY,EAAW,CAAC;;QAI3B,qBAAgB,GAAiC,IAAI,YAAY,EAAkB,CAAC;;QAI3F,eAAU,GAAoB,IAAI,YAAY,EAAK,CAAC;;QAIpD,mBAAc,GAAoB,IAAI,YAAY,EAAK,CAAC;;QAIxD,eAAU,GAAoB,IAAI,YAAY,EAAK,CAAC;;QAKpD,YAAO,GAAuB,IAAI,YAAY,EAAQ,CAAC;;QAIvD,YAAO,GAAuB,IAAI,YAAY,EAAQ,CAAC;;;;;;QAwBhE,oBAAe,GAAkB,IAAI,CAAC;;QAGtC,wBAAmB,GAAG,KAAK,CAAC;;QAqB5B,iBAAY,GAAoB,MAAM,CAAC;;QAGtB,gBAAW,GAAkB,IAAI,OAAO,EAAQ,CAAC;;QAG1D,mBAAc,GAAG,IAAI,YAAY,EAAE,CAAC;;QAGpC,aAAQ,GAAG,KAAK,CAAC;;QAGzB,aAAQ,GAA8B,SAAQ,CAAC;;QAG/C,cAAS,GAAG,SAAc,CAAC;;;;;QAO3B,oBAAe,GAA0B,MAAM,KAAK,CAAC;QAYjD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,MAAM,oCAAoC,CAAC,iBAAiB,CAAC,CAAC;SACjE;QACD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,MAAM,oCAAoC,CAAC,mBAAmB,CAAC,CAAC;SACnE;;QAGD,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC;KACtC;;IAxSD,IACI,OAAO,CAAC,OAAe;QACvB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,mBAAmB,CAAC,OAAO,GAAG,OAAO,CAAC;KAC9C;;;IAMD,IACI,eAAe,CAAC,QAAkB;QAClC,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QACjC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAChD;;;;;;IAuED,IACI,KAAK,CAAC,KAAiB;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,mBAAmB,CAAC,WAAW,GAAG,KAAK,CAAC;KAChD;IACD,IAAI,KAAK;QACL,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACtE,OAAO,OAAO,CAAC;SAClB;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;;;;;;IAkED,IACI,kBAAkB,CAAC,CAAU;QAC7B,IAAI,CAAC,mBAAmB,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;KACvD;IACD,IAAI,kBAAkB;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;;IAyCD,IAAI,kBAAkB;QAClB,OAAO,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,QAAQ,CAAC;KACpD;;IAyFD,WAAW,CAAC,OAAO;QACf,IAAI,OAAO,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;QAED,IAAI,CAAC,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,OAAO,CAAC,EAAE;YACpG,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAChC;KACJ;;IAGD,QAAQ;QACJ,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,CAAC,gBAAgB,CAAC,aAAa;aAC9B,IAAI,CACD,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAC3B,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,KAAK,EAAE,CAAC,CAC5C;aACA,SAAS,CAAC;YACP,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;SACtC,CAAC,CAAC;QAEP,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC3D,IAAI,CAAC,cAAc,CAAC,GAAG,CACnB,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,SAAS;gBAC9D,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;gBACzB,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;aACrC,CAAC,CACL,CAAC;SACL;KACJ;;IAGD,WAAW;QACP,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KAC/B;;IAGD,eAAe;QACX,IAAI,CAAC,oCAAoC,EAAE,CAAC;;;QAG5C,UAAU,CAAC;YACP,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;SACrC,CAAC,CAAC;KACN;;;;;IAMD,QAAQ;QACJ,OAAO,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB;cACxD,IAAI;cACJ;gBACI,cAAc,EAAE;oBACZ,KAAK,EAAE,KAAK;iBACf;aACJ,CAAC;KACX;;IAGD,aAAa;QACT,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;aAAM;YACH,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;;;;IAKD,8BAA8B,CAAC,UAA0B;QACrD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC1C;;IAGD,eAAe,CAAC,KAAkB;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,iBAAiB,CAAoB,KAAK,CAAC,MAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACzE;KACJ;;IAGD,WAAW;QACP,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChC,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACzC;KACJ;;IAGD,YAAY;QACR,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACzC;KACJ;;IAGD,0BAA0B,CAAC,SAAkB;QACzC,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;KACxC;;IAGD,gBAAgB,CAAC,EAA+B;QAC5C,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;;IAGD,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;;IAGD,gBAAgB,CAAC,UAAmB;QAChC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;KACtC;;;;;IAMD,UAAU,CAAC,QAAW;QAClB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QACrB,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;YAC5B,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC1D;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7B;;;;;;IAOD,gBAAgB,CAAC,IAAO;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,CAAC,MAAM,EAAE,CAAC;SACjB;KACJ;;;;;IAMD,gBAAgB,CAAC,IAAO;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,CAAC,MAAM,EAAE,CAAC;SACjB;KACJ;;;;;IAMD,MAAM;;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAU,CAAC;QACpC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAU,CAAC;QAEpC,IAAI;YACA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACrC,WAAW,EACX,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC3C,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,EAC7C,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,CAChD,CAAC;SACL;QAAC,WAAM;YACJ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SACpB;QACD,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEvD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzB,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;SACtC;KACJ;;;;;IAMD,MAAM;QACF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;;;;;IAMD,cAAc;QACV,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,GAAG,aAAa,CAAC,EAAE;YAC3F,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;SACrG;KACJ;;;;;;IAOD,iBAAiB,CAAC,QAAgB,EAAE,WAAoB;QACpD,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,kBAAkB,MAAM,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;;;YAGxF,OAAO;SACV;QACD,IAAI,CAAC,eAAe,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,EAAE;YACX,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO;SACV;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC7F,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1D,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC3B,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC1D;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5B;;IAGD,wBAAwB;QACpB,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;SACnC;aAAM;YACH,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;SACnC;KACJ;;IAGD,mBAAmB,CAAC,MAAe;QAC/B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,wBAAwB,EAAE,CAAC;;QAEhC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;YAC/B,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC;gBACnC,aAAa,EAAE,IAAI,CAAC,oBAAoB;aAC3C,CAAC,CAAC;SACN;;QAED,IAAI,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACnC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SAC1C;KACJ;;IAGD,mBAAmB;QACf,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACxC;;IAGO,aAAa,CAAC,IAAiB;QACnC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC9C;IAEO,SAAS,CAAC,QAAqB;QACnC,IAAI,CAAC,eAAe,GAAG,QAAQ,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC5F,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;KACtC;;IAGO,sCAAsC,CAAC,IAAiB;QAC5D,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;SACvD;KACJ;;;;;IAMO,eAAe,CAAC,QAAW;QAC/B,MAAM,aAAa,GAAW,IAAI,CAAC,gBAAgB,CAAC,MAAM,CACtD,QAAQ,EACR,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAC9C,CAAC;QACF,OAAO,aAAa,IAAI,EAAE,CAAC;KAC9B;;IAGO,oCAAoC;;QACxC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACvD,IAAI,CAAC,mBAAmB,CAAC,OAAO,GAAG,MAAA,IAAI,CAAC,QAAQ,mCAAI,EAAE,CAAC;QACvD,IAAI,CAAC,mBAAmB,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC1D,IAAI,CAAC,mBAAmB,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;KACtD;;IAGO,gBAAgB;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;KAC9B;;IAGO,qBAAqB;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC;;QAG3D,IAAI,CAAC,SAAS;YACV,IAAI,CAAC,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;;QAGxG,IAAI,CAAC,eAAe;YAChB,IAAI,CAAC,cAAc,IAAI,IAAI;kBACrB,IAAI,CAAC,cAAc;kBACnB,IAAI,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;;QAGpE,IAAI,CAAC,eAAe;YAChB,IAAI,CAAC,cAAc,IAAI,IAAI;kBACrB,IAAI,CAAC,cAAc;kBACnB,IAAI,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;;QAGpE,IAAI,CAAC,aAAa;YACd,IAAI,CAAC,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;KAC/G;;oHAvrBQ,uBAAuB,iLA6UR,iBAAiB;wGA7UhC,uBAAuB,k6CAjBrB;QACP;YACI,OAAO,EAAE,iBAAiB;YAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;YACtD,KAAK,EAAE,IAAI;SACd;QACD;YACI,OAAO,EAAE,aAAa;YACtB,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;YACtD,KAAK,EAAE,IAAI;SACd;QACD,yBAAyB;QACzB,cAAc;KACjB,8EA0QU,iBAAiB,uIAIc,UAAU,6DAIzC,wBAAwB,2BAAU,UAAU,kDC/U3D,62LA4HA;2FD3Da,uBAAuB;kBAxBnC,SAAS;+BACI,oBAAoB,QAGxB;wBACF,QAAQ,EAAE,mBAAmB;qBAChC,aACU;wBACP;4BACI,OAAO,EAAE,iBAAiB;4BAC1B,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;4BACtD,KAAK,EAAE,IAAI;yBACd;wBACD;4BACI,OAAO,EAAE,aAAa;4BACtB,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;4BACtD,KAAK,EAAE,IAAI;yBACd;wBACD,yBAAyB;wBACzB,cAAc;qBACjB,iBACc,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM;;;8BA4U1C,QAAQ;;8BAER,QAAQ;;8BACR,QAAQ;;8BAAI,MAAM;+BAAC,iBAAiB;;yBAxUzC,WAAW;sBADV,KAAK;gBAKN,OAAO;sBADN,KAAK;gBAQN,SAAS;sBADR,KAAK;gBAKN,QAAQ;sBADP,KAAK;gBAKN,QAAQ;sBADP,KAAK;gBAKN,OAAO;sBADN,KAAK;gBAKN,QAAQ;sBADP,KAAK;gBAQN,QAAQ;sBADP,KAAK;gBAQN,cAAc;sBADb,KAAK;gBAKF,OAAO;sBADV,KAAK;gBAWF,eAAe;sBADlB,KAAK;gBAaN,cAAc;sBADb,KAAK;gBAQN,YAAY;sBADX,KAAK;gBAKN,aAAa;sBADZ,KAAK;gBAKN,IAAI;sBADH,KAAK;gBAKN,MAAM;sBADL,KAAK;gBAKN,iBAAiB;sBADhB,KAAK;gBAKN,UAAU;sBADT,KAAK;gBAKN,kBAAkB;sBADjB,KAAK;gBAKN,0BAA0B;sBADzB,KAAK;gBAKN,oBAAoB;sBADnB,KAAK;gBAKN,oBAAoB;sBADnB,KAAK;gBAKN,SAAS;sBADR,KAAK;gBASG,iBAAiB;sBAAzB,KAAK;gBAQF,KAAK;sBADR,KAAK;gBAmBN,eAAe;sBADd,KAAK;gBAWN,gBAAgB;sBADf,KAAK;gBAQN,QAAQ;sBADP,KAAK;gBAWN,kBAAkB;sBADjB,KAAK;gBAUN,YAAY;sBADX,KAAK;gBAKN,cAAc;sBADb,KAAK;gBAON,eAAe;sBADd,KAAK;gBAKN,UAAU;sBADT,KAAK;gBASF,kBAAkB;sBADrB,KAAK;gBAYN,oBAAoB;sBADnB,KAAK;gBAQN,YAAY;sBADX,MAAM;gBAKS,gBAAgB;sBAD/B,MAAM;gBAKE,UAAU;sBADlB,MAAM;gBAKE,cAAc;sBADtB,MAAM;gBAKE,UAAU;sBADlB,MAAM;gBAME,OAAO;sBAFf,MAAM;gBAME,OAAO;sBADf,MAAM;gBAUP,kBAAkB;sBADjB,SAAS;uBAAC,iBAAiB;gBAK5B,kBAAkB;sBADjB,SAAS;uBAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAKtD,aAAa;sBADZ,SAAS;uBAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAsDzD,eAAe;sBADd,KAAK;;;MErWG,oBAAoB;;iHAApB,oBAAoB;kHAApB,oBAAoB,iBAhBd,uBAAuB,aAElC,YAAY;QACZ,UAAU;QACV,aAAa;QACb,cAAc;QACd,WAAW;QACX,UAAU;QACV,gBAAgB;QAChB,YAAY;QACZ,SAAS;QACT,qBAAqB;QACrB,iBAAiB,aAEX,uBAAuB;kHAExB,oBAAoB,YAfpB;YACL,YAAY;YACZ,UAAU;YACV,aAAa;YACb,cAAc;YACd,WAAW;YACX,UAAU;YACV,gBAAgB;YAChB,YAAY;YACZ,SAAS;YACT,qBAAqB;YACrB,iBAAiB;SACpB;2FAGQ,oBAAoB;kBAjBhC,QAAQ;mBAAC;oBACN,YAAY,EAAE,CAAC,uBAAuB,CAAC;oBACvC,OAAO,EAAE;wBACL,YAAY;wBACZ,UAAU;wBACV,aAAa;wBACb,cAAc;wBACd,WAAW;wBACX,UAAU;wBACV,gBAAgB;wBAChB,YAAY;wBACZ,SAAS;wBACT,qBAAqB;wBACrB,iBAAiB;qBACpB;oBACD,OAAO,EAAE,CAAC,uBAAuB,CAAC;iBACrC;;;AC9BD;;;;;;"}
@@ -67,11 +67,11 @@ class DatePickerComponent {
67
67
  this.rangeHoverEffect = false;
68
68
  /** Whether to validate the date picker input. */
69
69
  this.useValidation = true;
70
- /** Aria label for the datepicker input. */
70
+ /** Aria-label for the datepicker input. */
71
71
  this.dateInputLabel = 'Date input';
72
- /** Aria label for the datepicker input. */
72
+ /** Aria-label for the datepicker input. */
73
73
  this.dateRangeInputLabel = 'Date range input';
74
- /** Aria label for the button to show/hide the calendar. */
74
+ /** Aria-label for the button to show/hide the calendar. */
75
75
  this.displayCalendarToggleLabel = 'Open picker';
76
76
  /**
77
77
  * Value state "success" aria message.
@@ -143,6 +143,10 @@ class DatePickerComponent {
143
143
  this.isOpen = false;
144
144
  /** Should date picker be inlined. */
145
145
  this.inline = true;
146
+ /**
147
+ * Whether to prevent page scrolling when focusing date picker input field after calendar has been closed.
148
+ */
149
+ this.preventScrollOnFocus = false;
146
150
  /** @hidden */
147
151
  this._processInputOnBlur = false;
148
152
  /** Event emitted when the state of the isOpen property changes. */
@@ -202,7 +206,7 @@ class DatePickerComponent {
202
206
  }
203
207
  /**
204
208
  * The state of the form control - applies css classes.
205
- * Also this is applied to message.
209
+ * Also, this is applied to message.
206
210
  * Can be `success`, `error`, `warning`, `information` or blank for default.
207
211
  */
208
212
  set state(state) {
@@ -388,7 +392,7 @@ class DatePickerComponent {
388
392
  }
389
393
  if (this.type === 'single') {
390
394
  /**
391
- * For single mode, if the date is invalid, model is changed, it refresh currently
395
+ * For single mode, if the date is invalid, model is changed, it refreshes currently
392
396
  * input field text, but it does not refresh currently displayed day
393
397
  */
394
398
  selected = selected;
@@ -522,7 +526,9 @@ class DatePickerComponent {
522
526
  this._changeMessageVisibility();
523
527
  // focus input control every time popup is closed
524
528
  if (!isOpen && this._inputElement) {
525
- this._inputElement.nativeElement.focus();
529
+ this._inputElement.nativeElement.focus({
530
+ preventScroll: this.preventScrollOnFocus
531
+ });
526
532
  }
527
533
  // focus calendar cell on opening
528
534
  if (isOpen && this._calendarComponent) {
@@ -575,7 +581,7 @@ class DatePickerComponent {
575
581
  }
576
582
  }
577
583
  DatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: DatePickerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DatetimeAdapter, optional: true }, { token: DATE_TIME_FORMATS, optional: true }, { token: i2.PopoverFormMessageService }, { token: i3.ContentDensityService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
578
- DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: DatePickerComponent, selector: "fd-date-picker", inputs: { type: "type", placeholder: "placeholder", compact: "compact", inputId: "inputId", required: "required", message: "message", messageTriggers: "messageTriggers", selectedDate: "selectedDate", selectedRangeDate: "selectedRangeDate", startingDayOfWeek: "startingDayOfWeek", rangeHoverEffect: "rangeHoverEffect", useValidation: "useValidation", dateInputLabel: "dateInputLabel", dateRangeInputLabel: "dateRangeInputLabel", displayCalendarToggleLabel: "displayCalendarToggleLabel", valueStateSuccessMessage: "valueStateSuccessMessage", valueStateInformationMessage: "valueStateInformationMessage", valueStateWarningMessage: "valueStateWarningMessage", valueStateErrorMessage: "valueStateErrorMessage", allowNull: "allowNull", activeView: "activeView", placement: "placement", appendTo: "appendTo", disabled: "disabled", closeOnDateChoose: "closeOnDateChoose", previousButtonDisableFunction: "previousButtonDisableFunction", nextButtonDisableFunction: "nextButtonDisableFunction", state: "state", buttonFocusable: "buttonFocusable", specialDaysRules: "specialDaysRules", yearGrid: "yearGrid", aggregatedYearGrid: "aggregatedYearGrid", markWeekends: "markWeekends", showWeekNumbers: "showWeekNumbers", isOpen: "isOpen", inline: "inline", processInputOnBlur: "processInputOnBlur", disableFunction: "disableFunction", disableRangeStartFunction: "disableRangeStartFunction", disableRangeEndFunction: "disableRangeEndFunction" }, outputs: { isOpenChange: "isOpenChange", selectedDateChange: "selectedDateChange", selectedRangeDateChange: "selectedRangeDateChange", activeViewChange: "activeViewChange" }, host: { listeners: { "blur": "onTouched()" }, properties: { "class.fd-date-picker": "true", "class.fd-date-picker-custom": "inline" } }, providers: [
584
+ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: DatePickerComponent, selector: "fd-date-picker", inputs: { type: "type", placeholder: "placeholder", compact: "compact", inputId: "inputId", required: "required", message: "message", messageTriggers: "messageTriggers", selectedDate: "selectedDate", selectedRangeDate: "selectedRangeDate", startingDayOfWeek: "startingDayOfWeek", rangeHoverEffect: "rangeHoverEffect", useValidation: "useValidation", dateInputLabel: "dateInputLabel", dateRangeInputLabel: "dateRangeInputLabel", displayCalendarToggleLabel: "displayCalendarToggleLabel", valueStateSuccessMessage: "valueStateSuccessMessage", valueStateInformationMessage: "valueStateInformationMessage", valueStateWarningMessage: "valueStateWarningMessage", valueStateErrorMessage: "valueStateErrorMessage", allowNull: "allowNull", activeView: "activeView", placement: "placement", appendTo: "appendTo", disabled: "disabled", closeOnDateChoose: "closeOnDateChoose", previousButtonDisableFunction: "previousButtonDisableFunction", nextButtonDisableFunction: "nextButtonDisableFunction", state: "state", buttonFocusable: "buttonFocusable", specialDaysRules: "specialDaysRules", yearGrid: "yearGrid", aggregatedYearGrid: "aggregatedYearGrid", markWeekends: "markWeekends", showWeekNumbers: "showWeekNumbers", isOpen: "isOpen", inline: "inline", processInputOnBlur: "processInputOnBlur", preventScrollOnFocus: "preventScrollOnFocus", disableFunction: "disableFunction", disableRangeStartFunction: "disableRangeStartFunction", disableRangeEndFunction: "disableRangeEndFunction" }, outputs: { isOpenChange: "isOpenChange", selectedDateChange: "selectedDateChange", selectedRangeDateChange: "selectedRangeDateChange", activeViewChange: "activeViewChange" }, host: { listeners: { "blur": "onTouched()" }, properties: { "class.fd-date-picker": "true", "class.fd-date-picker-custom": "inline" } }, providers: [
579
585
  {
580
586
  provide: NG_VALUE_ACCESSOR,
581
587
  useExisting: forwardRef(() => DatePickerComponent),
@@ -692,6 +698,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
692
698
  type: Input
693
699
  }], processInputOnBlur: [{
694
700
  type: Input
701
+ }], preventScrollOnFocus: [{
702
+ type: Input
695
703
  }], isOpenChange: [{
696
704
  type: Output
697
705
  }], selectedDateChange: [{