cmat 0.0.78 → 0.0.79

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 (201) hide show
  1. package/fesm2022/cmat-components-adapter.mjs +9 -46
  2. package/fesm2022/cmat-components-adapter.mjs.map +1 -1
  3. package/fesm2022/cmat-components-breadcrumb.mjs +104 -205
  4. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  5. package/fesm2022/cmat-components-card.mjs +4 -8
  6. package/fesm2022/cmat-components-card.mjs.map +1 -1
  7. package/fesm2022/cmat-components-carousel.mjs +12 -12
  8. package/fesm2022/cmat-components-cascade.mjs +14 -20
  9. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  10. package/fesm2022/cmat-components-chip-input.mjs +21 -21
  11. package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
  12. package/fesm2022/cmat-components-code-editor.mjs +4 -22
  13. package/fesm2022/cmat-components-code-editor.mjs.map +1 -1
  14. package/fesm2022/cmat-components-custom-formly.mjs +153 -220
  15. package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
  16. package/fesm2022/cmat-components-date-range.mjs +5 -177
  17. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  18. package/fesm2022/cmat-components-date-time-display.mjs +3 -15
  19. package/fesm2022/cmat-components-date-time-display.mjs.map +1 -1
  20. package/fesm2022/cmat-components-drawer.mjs +6 -96
  21. package/fesm2022/cmat-components-drawer.mjs.map +1 -1
  22. package/fesm2022/cmat-components-empty-state.mjs +4 -25
  23. package/fesm2022/cmat-components-empty-state.mjs.map +1 -1
  24. package/fesm2022/cmat-components-file-preview.mjs +3 -21
  25. package/fesm2022/cmat-components-file-preview.mjs.map +1 -1
  26. package/fesm2022/cmat-components-filter-toolbar.mjs +7 -50
  27. package/fesm2022/cmat-components-filter-toolbar.mjs.map +1 -1
  28. package/fesm2022/cmat-components-form-actions.mjs +3 -9
  29. package/fesm2022/cmat-components-form-actions.mjs.map +1 -1
  30. package/fesm2022/cmat-components-fullscreen.mjs +4 -4
  31. package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
  32. package/fesm2022/cmat-components-highlight.mjs +6 -31
  33. package/fesm2022/cmat-components-highlight.mjs.map +1 -1
  34. package/fesm2022/cmat-components-image-viewer.mjs +3 -12
  35. package/fesm2022/cmat-components-image-viewer.mjs.map +1 -1
  36. package/fesm2022/cmat-components-inline-loading.mjs +3 -12
  37. package/fesm2022/cmat-components-inline-loading.mjs.map +1 -1
  38. package/fesm2022/cmat-components-json-editor.mjs +10 -13
  39. package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
  40. package/fesm2022/cmat-components-knob-input.mjs +18 -12
  41. package/fesm2022/cmat-components-knob-input.mjs.map +1 -1
  42. package/fesm2022/cmat-components-masonry.mjs +3 -9
  43. package/fesm2022/cmat-components-masonry.mjs.map +1 -1
  44. package/fesm2022/cmat-components-material-color-picker.mjs +3 -23
  45. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  46. package/fesm2022/cmat-components-material-datetimepicker.mjs +49 -397
  47. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  48. package/fesm2022/cmat-components-navigation.mjs +183 -725
  49. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  50. package/fesm2022/cmat-components-opt-input.mjs +7 -10
  51. package/fesm2022/cmat-components-opt-input.mjs.map +1 -1
  52. package/fesm2022/cmat-components-org-chart.mjs +11 -11
  53. package/fesm2022/cmat-components-org-chart.mjs.map +1 -1
  54. package/fesm2022/cmat-components-page-header.mjs +8 -19
  55. package/fesm2022/cmat-components-page-header.mjs.map +1 -1
  56. package/fesm2022/cmat-components-pagination.mjs +96 -93
  57. package/fesm2022/cmat-components-pagination.mjs.map +1 -1
  58. package/fesm2022/cmat-components-password-strength.mjs +10 -11
  59. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  60. package/fesm2022/cmat-components-popover.mjs +15 -149
  61. package/fesm2022/cmat-components-popover.mjs.map +1 -1
  62. package/fesm2022/cmat-components-progress-bar.mjs +9 -16
  63. package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
  64. package/fesm2022/cmat-components-qrcode.mjs +5 -11
  65. package/fesm2022/cmat-components-qrcode.mjs.map +1 -1
  66. package/fesm2022/cmat-components-rating.mjs +3 -3
  67. package/fesm2022/cmat-components-rich-text-editor.mjs +4 -25
  68. package/fesm2022/cmat-components-rich-text-editor.mjs.map +1 -1
  69. package/fesm2022/cmat-components-select-search.mjs +46 -72
  70. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  71. package/fesm2022/cmat-components-select-table.mjs +193 -150
  72. package/fesm2022/cmat-components-select-table.mjs.map +1 -1
  73. package/fesm2022/cmat-components-select-tree.mjs +124 -78
  74. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  75. package/fesm2022/cmat-components-skeleton.mjs +4 -22
  76. package/fesm2022/cmat-components-skeleton.mjs.map +1 -1
  77. package/fesm2022/cmat-components-speed-dial.mjs +9 -11
  78. package/fesm2022/cmat-components-speed-dial.mjs.map +1 -1
  79. package/fesm2022/cmat-components-status-tag.mjs +3 -18
  80. package/fesm2022/cmat-components-status-tag.mjs.map +1 -1
  81. package/fesm2022/cmat-components-table-toolbar.mjs +3 -15
  82. package/fesm2022/cmat-components-table-toolbar.mjs.map +1 -1
  83. package/fesm2022/cmat-components-timeline.mjs +18 -21
  84. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  85. package/fesm2022/cmat-components-toast.mjs +16 -14
  86. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  87. package/fesm2022/cmat-components-transfer-picker.mjs +103 -80
  88. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  89. package/fesm2022/cmat-components-treetable.mjs +6 -6
  90. package/fesm2022/cmat-components-upload.mjs +21 -36
  91. package/fesm2022/cmat-components-upload.mjs.map +1 -1
  92. package/fesm2022/cmat-components-x6-angular-shape.mjs +0 -1
  93. package/fesm2022/cmat-components-x6-angular-shape.mjs.map +1 -1
  94. package/fesm2022/cmat-directives-animate-on-scroll.mjs +6 -27
  95. package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
  96. package/fesm2022/cmat-directives-arrow-cursor.mjs +7 -9
  97. package/fesm2022/cmat-directives-arrow-cursor.mjs.map +1 -1
  98. package/fesm2022/cmat-directives-autofocus.mjs +3 -3
  99. package/fesm2022/cmat-directives-data-exporter.mjs +24 -33
  100. package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -1
  101. package/fesm2022/cmat-directives-debounce.mjs +14 -17
  102. package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
  103. package/fesm2022/cmat-directives-digit-only.mjs +6 -23
  104. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
  105. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  106. package/fesm2022/cmat-directives-seamless-auto-scroll.mjs +4 -11
  107. package/fesm2022/cmat-directives-seamless-auto-scroll.mjs.map +1 -1
  108. package/fesm2022/cmat-lib-mock-api.mjs +6 -43
  109. package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
  110. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  111. package/fesm2022/cmat-pipes-date-format.mjs +3 -3
  112. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -5
  113. package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
  114. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  115. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  116. package/fesm2022/cmat-pipes-secure.mjs +8 -12
  117. package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
  118. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  119. package/fesm2022/cmat-services-alert.mjs +3 -3
  120. package/fesm2022/cmat-services-config.mjs +50 -26
  121. package/fesm2022/cmat-services-config.mjs.map +1 -1
  122. package/fesm2022/cmat-services-confirmation.mjs +9 -11
  123. package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
  124. package/fesm2022/cmat-services-data.mjs +56 -101
  125. package/fesm2022/cmat-services-data.mjs.map +1 -1
  126. package/fesm2022/cmat-services-export-as.mjs +4 -32
  127. package/fesm2022/cmat-services-export-as.mjs.map +1 -1
  128. package/fesm2022/cmat-services-loading.mjs +49 -40
  129. package/fesm2022/cmat-services-loading.mjs.map +1 -1
  130. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  131. package/fesm2022/cmat-services-media-watcher.mjs +19 -25
  132. package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
  133. package/fesm2022/cmat-services-platform.mjs +3 -10
  134. package/fesm2022/cmat-services-platform.mjs.map +1 -1
  135. package/fesm2022/cmat-services-splash-screen.mjs +8 -13
  136. package/fesm2022/cmat-services-splash-screen.mjs.map +1 -1
  137. package/fesm2022/cmat-services-title.mjs +8 -12
  138. package/fesm2022/cmat-services-title.mjs.map +1 -1
  139. package/fesm2022/cmat-services-translation.mjs +3 -3
  140. package/fesm2022/cmat-services-utils.mjs +5 -27
  141. package/fesm2022/cmat-services-utils.mjs.map +1 -1
  142. package/fesm2022/cmat-validators.mjs +0 -8
  143. package/fesm2022/cmat-validators.mjs.map +1 -1
  144. package/fesm2022/cmat.mjs +3159 -3441
  145. package/fesm2022/cmat.mjs.map +1 -1
  146. package/package.json +1 -1
  147. package/tailwind/plugins/helpers.js +1 -10
  148. package/tailwind/plugins/scrollbar/index.js +0 -1
  149. package/tailwind/plugins/scrollbar/typedefs.js +1 -7
  150. package/tailwind/plugins/scrollbar/utilities.js +9 -58
  151. package/tailwind/plugins/scrollbar/variants.js +2 -17
  152. package/tailwind/plugins/theming.js +1 -57
  153. package/tailwind/utils/generate-contrasts.js +1 -12
  154. package/tailwind/utils/generate-palette.js +1 -32
  155. package/types/cmat-components-adapter.d.ts +0 -25
  156. package/types/cmat-components-breadcrumb.d.ts +25 -175
  157. package/types/cmat-components-carousel.d.ts +0 -18
  158. package/types/cmat-components-cascade.d.ts +1 -1
  159. package/types/cmat-components-chip-input.d.ts +4 -3
  160. package/types/cmat-components-code-editor.d.ts +0 -18
  161. package/types/cmat-components-custom-formly.d.ts +22 -28
  162. package/types/cmat-components-date-range.d.ts +0 -71
  163. package/types/cmat-components-date-time-display.d.ts +0 -15
  164. package/types/cmat-components-drawer.d.ts +0 -42
  165. package/types/cmat-components-empty-state.d.ts +0 -21
  166. package/types/cmat-components-file-preview.d.ts +0 -18
  167. package/types/cmat-components-filter-toolbar.d.ts +3 -43
  168. package/types/cmat-components-form-actions.d.ts +0 -6
  169. package/types/cmat-components-image-viewer.d.ts +0 -12
  170. package/types/cmat-components-inline-loading.d.ts +0 -9
  171. package/types/cmat-components-knob-input.d.ts +1 -1
  172. package/types/cmat-components-material-datetimepicker.d.ts +0 -263
  173. package/types/cmat-components-navigation.d.ts +24 -164
  174. package/types/cmat-components-opt-input.d.ts +1 -1
  175. package/types/cmat-components-page-header.d.ts +2 -16
  176. package/types/cmat-components-pagination.d.ts +22 -24
  177. package/types/cmat-components-popover.d.ts +1 -109
  178. package/types/cmat-components-progress-bar.d.ts +3 -4
  179. package/types/cmat-components-rich-text-editor.d.ts +0 -21
  180. package/types/cmat-components-select-search.d.ts +3 -19
  181. package/types/cmat-components-select-table.d.ts +17 -4
  182. package/types/cmat-components-select-tree.d.ts +20 -19
  183. package/types/cmat-components-skeleton.d.ts +0 -18
  184. package/types/cmat-components-status-tag.d.ts +0 -15
  185. package/types/cmat-components-table-toolbar.d.ts +0 -12
  186. package/types/cmat-components-timeline.d.ts +3 -4
  187. package/types/cmat-components-toast.d.ts +1 -0
  188. package/types/cmat-components-transfer-picker.d.ts +23 -27
  189. package/types/cmat-components-upload.d.ts +7 -10
  190. package/types/cmat-components-x6-angular-shape.d.ts +0 -1
  191. package/types/cmat-directives-arrow-cursor.d.ts +1 -1
  192. package/types/cmat-directives-debounce.d.ts +3 -4
  193. package/types/cmat-pipes-secure.d.ts +3 -4
  194. package/types/cmat-services-config.d.ts +35 -13
  195. package/types/cmat-services-data.d.ts +13 -12
  196. package/types/cmat-services-export-as.d.ts +0 -22
  197. package/types/cmat-services-loading.d.ts +15 -10
  198. package/types/cmat-services-media-watcher.d.ts +10 -13
  199. package/types/cmat-services-splash-screen.d.ts +2 -4
  200. package/types/cmat-services-title.d.ts +3 -5
  201. package/types/cmat.d.ts +655 -1308
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-components-material-datetimepicker.mjs","sources":["../../../projects/cmat/components/material-datetimepicker/datetimepicker-filtertype.ts","../../../projects/cmat/components/material-datetimepicker/clock.ts","../../../projects/cmat/components/material-datetimepicker/clock.html","../../../projects/cmat/components/material-datetimepicker/datetimepicker-errors.ts","../../../projects/cmat/components/material-datetimepicker/datetimepicker-intl.ts","../../../projects/cmat/components/material-datetimepicker/calendar-body.ts","../../../projects/cmat/components/material-datetimepicker/calendar-body.html","../../../projects/cmat/components/material-datetimepicker/month-view.ts","../../../projects/cmat/components/material-datetimepicker/month-view.html","../../../projects/cmat/components/material-datetimepicker/multi-year-view.ts","../../../projects/cmat/components/material-datetimepicker/multi-year-view.html","../../../projects/cmat/components/material-datetimepicker/time.ts","../../../projects/cmat/components/material-datetimepicker/time.html","../../../projects/cmat/components/material-datetimepicker/year-view.ts","../../../projects/cmat/components/material-datetimepicker/year-view.html","../../../projects/cmat/components/material-datetimepicker/calendar.ts","../../../projects/cmat/components/material-datetimepicker/calendar.html","../../../projects/cmat/components/material-datetimepicker/datetimepicker.ts","../../../projects/cmat/components/material-datetimepicker/datetimepicker-content.html","../../../projects/cmat/components/material-datetimepicker/datetimepicker-input.ts","../../../projects/cmat/components/material-datetimepicker/datetimepicker-toggle.ts","../../../projects/cmat/components/material-datetimepicker/datetimepicker-toggle.html","../../../projects/cmat/components/material-datetimepicker/cmat-components-material-datetimepicker.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nexport enum CmatDatetimepickerFilterType {\r\n DATE, HOUR, MINUTE\r\n}\r\n","import { NgStyle } from '@angular/common';\r\nimport { AfterContentInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, ViewEncapsulation, inject } from '@angular/core';\r\nimport { DatetimeAdapter } from 'cmat/components/adapter';\r\nimport { CmatDatetimepickerFilterType } from './datetimepicker-filtertype';\r\nimport { CmatClockView } from './datetimepicker-types';\r\n\r\nexport const CLOCK_RADIUS = 50;\r\nexport const CLOCK_INNER_RADIUS = 27.5;\r\nexport const CLOCK_OUTER_RADIUS = 41.25;\r\nexport const CLOCK_TICK_RADIUS = 7.0833;\r\n\r\n/**\r\n * A clock that is used as part of the datepicker.\r\n */\r\n@Component({\r\n selector: 'cmat-datetimepicker-clock',\r\n templateUrl: 'clock.html',\r\n styleUrls: ['clock.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatDatetimepickerClock',\r\n imports: [NgStyle]\r\n})\r\nexport class CmatDatetimepickerClockComponent<D> implements AfterContentInit {\r\n @Output() userSelection = new EventEmitter<void>();\r\n /** A function used to filter which dates are selectable. */\r\n @Input() dateFilter: (date: D, type: CmatDatetimepickerFilterType) => boolean;\r\n @Input() interval: number = 1;\r\n @Input() twelvehour: boolean = false;\r\n /** Emits when the currently selected date changes. */\r\n @Output() selectedChange = new EventEmitter<D>();\r\n @Output() activeDateChange = new EventEmitter<D>();\r\n @HostBinding('role') role = 'clock';\r\n @HostBinding('class') class = 'cmat-datetimepicker-clock';\r\n\r\n /** Hours and Minutes representing the clock view. */\r\n hours: any[] = [];\r\n minutes: any[] = [];\r\n /** Whether the clock is in hour view. */\r\n hourView: boolean = true;\r\n selectedHour: number;\r\n selectedMinute: number;\r\n\r\n private _element = inject(ElementRef);\r\n private _adapter = inject<DatetimeAdapter<D>>(DatetimeAdapter);\r\n\r\n private _timeChanged = false;\r\n private _mouseMoveListener: any;\r\n private _mouseUpListener: any;\r\n private _activeDate: D;\r\n private _selected: D | null;\r\n private _minDate: D | null;\r\n private _maxDate: D | null;\r\n\r\n\r\n constructor() {\r\n this._mouseMoveListener = (event: any): void => {\r\n this.handleMousemove(event);\r\n };\r\n this._mouseUpListener = (): void => {\r\n this.handleMouseup();\r\n };\r\n }\r\n\r\n /**\r\n * The date to display in this clock view.\r\n */\r\n @Input()\r\n get activeDate(): D {\r\n return this._activeDate;\r\n }\r\n\r\n set activeDate(value: D) {\r\n const oldActiveDate = this._activeDate;\r\n this._activeDate = this._adapter.clampDate(value, this.minDate, this.maxDate);\r\n if (!this._adapter.sameMinute(oldActiveDate, this._activeDate)) {\r\n this._init();\r\n }\r\n }\r\n\r\n /** The currently selected date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get selected(): D | null {\r\n return this._selected;\r\n }\r\n\r\n set selected(value: D | null) {\r\n this._selected = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));\r\n if (this._selected) {\r\n this.activeDate = this._selected;\r\n }\r\n }\r\n\r\n /** The minimum selectable date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get minDate(): D | null {\r\n return this._minDate;\r\n }\r\n\r\n set minDate(value: D | null) {\r\n this._minDate = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));\r\n }\r\n\r\n /** The maximum selectable date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get maxDate(): D | null {\r\n return this._maxDate;\r\n }\r\n\r\n set maxDate(value: D | null) {\r\n this._maxDate = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));\r\n }\r\n\r\n /** Whether the clock should be started in hour or minute view. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n set startView(value: CmatClockView) {\r\n this.hourView = value !== 'minute';\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get hand(): any {\r\n let hour = this._adapter.getHour(this.activeDate);\r\n if (this.twelvehour) {\r\n if (hour === 0) {\r\n hour = 24;\r\n }\r\n this.selectedHour = hour > 12 ? (hour - 12) : hour;\r\n } else {\r\n this.selectedHour = hour;\r\n }\r\n this.selectedMinute = this._adapter.getMinute(this.activeDate);\r\n let deg;\r\n let radius = CLOCK_OUTER_RADIUS;\r\n if (this.hourView) {\r\n const outer = this.selectedHour > 0 && this.selectedHour < 13;\r\n radius = outer ? CLOCK_OUTER_RADIUS : CLOCK_INNER_RADIUS;\r\n if (this.twelvehour) {\r\n radius = CLOCK_OUTER_RADIUS;\r\n }\r\n deg = Math.round(this.selectedHour * (360 / (24 / 2)));\r\n } else {\r\n deg = Math.round(this.selectedMinute * (360 / 60));\r\n }\r\n return {\r\n 'transform': `rotate(${deg}deg)`,\r\n 'height': `${radius}%`,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'margin-top': `${50 - radius}%`\r\n };\r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n /** Handles mousedown events on the clock body. */\r\n handleMousedown(event: MouseEvent): void {\r\n this._timeChanged = false;\r\n this._setTime(event);\r\n\r\n document.addEventListener('mousemove', this._mouseMoveListener);\r\n document.addEventListener('touchmove', this._mouseMoveListener);\r\n document.addEventListener('mouseup', this._mouseUpListener);\r\n document.addEventListener('touchend', this._mouseUpListener);\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.activeDate = this._activeDate || this._adapter.today();\r\n this._init();\r\n }\r\n\r\n handleMousemove(event: any): void {\r\n event.preventDefault();\r\n this._setTime(event);\r\n }\r\n\r\n handleMouseup(): void {\r\n document.removeEventListener('mousemove', this._mouseMoveListener);\r\n document.removeEventListener('touchmove', this._mouseMoveListener);\r\n document.removeEventListener('mouseup', this._mouseUpListener);\r\n document.removeEventListener('touchend', this._mouseUpListener);\r\n if (this._timeChanged) {\r\n this.selectedChange.emit(this.activeDate);\r\n if (!this.hourView) {\r\n this.userSelection.emit();\r\n }\r\n }\r\n }\r\n\r\n /** Initializes this clock view. */\r\n private _init(): void {\r\n this.hours.length = 0;\r\n this.minutes.length = 0;\r\n\r\n const hourNames = this._adapter.getHourNames();\r\n const minuteNames = this._adapter.getMinuteNames();\r\n\r\n if (this.twelvehour) {\r\n for (let i = 1; i < (hourNames.length / 2) + 1; i++) {\r\n const radian = i / 6 * Math.PI;\r\n const radius = CLOCK_OUTER_RADIUS;\r\n const date = this._adapter.createDatetime(\r\n this._adapter.getYear(this.activeDate),\r\n this._adapter.getMonth(this.activeDate),\r\n this._adapter.getDate(this.activeDate), i + 1, 0);\r\n const enabled =\r\n (!this.minDate || (this._adapter.compareDatetime(date, this.minDate) as number) >= 0) &&\r\n (!this.maxDate || (this._adapter.compareDatetime(date, this.maxDate) as number) <= 0);\r\n this.hours.push({\r\n value: i,\r\n displayValue: i === 0 ? '00' : hourNames[i],\r\n enabled: enabled,\r\n top: CLOCK_RADIUS - Math.cos(radian) * radius - CLOCK_TICK_RADIUS,\r\n left: CLOCK_RADIUS + Math.sin(radian) * radius - CLOCK_TICK_RADIUS\r\n });\r\n }\r\n } else {\r\n for (let i = 0; i < hourNames.length; i++) {\r\n const radian = i / 6 * Math.PI;\r\n const outer = i > 0 && i < 13;\r\n const radius = outer ? CLOCK_OUTER_RADIUS : CLOCK_INNER_RADIUS;\r\n const date = this._adapter.createDatetime(\r\n this._adapter.getYear(this.activeDate),\r\n this._adapter.getMonth(this.activeDate),\r\n this._adapter.getDate(this.activeDate), i, 0);\r\n const enabled =\r\n (!this.minDate || (this._adapter.compareDatetime(date, this.minDate, false) as number) >= 0) &&\r\n (!this.maxDate || (this._adapter.compareDatetime(date, this.maxDate, false) as number) <= 0) &&\r\n (!this.dateFilter || this.dateFilter(date, CmatDatetimepickerFilterType.HOUR));\r\n this.hours.push({\r\n value: i,\r\n displayValue: i === 0 ? '00' : hourNames[i],\r\n enabled: enabled,\r\n top: CLOCK_RADIUS - Math.cos(radian) * radius - CLOCK_TICK_RADIUS,\r\n left: CLOCK_RADIUS + Math.sin(radian) * radius - CLOCK_TICK_RADIUS,\r\n fontSize: i > 0 && i < 13 ? '' : '80%'\r\n });\r\n }\r\n }\r\n\r\n for (let i = 0; i < minuteNames.length; i += 5) {\r\n const radian = i / 30 * Math.PI;\r\n const date = this._adapter.createDatetime(\r\n this._adapter.getYear(this.activeDate),\r\n this._adapter.getMonth(this.activeDate),\r\n this._adapter.getDate(this.activeDate), this._adapter.getHour(this.activeDate), i);\r\n const enabled =\r\n (!this.minDate || (this._adapter.compareDatetime(date, this.minDate) as number) >= 0) &&\r\n (!this.maxDate || (this._adapter.compareDatetime(date, this.maxDate) as number) <= 0) &&\r\n (!this.dateFilter || this.dateFilter(date, CmatDatetimepickerFilterType.MINUTE));\r\n this.minutes.push({\r\n value: i,\r\n displayValue: i === 0 ? '00' : minuteNames[i],\r\n enabled: enabled,\r\n top: CLOCK_RADIUS - Math.cos(radian) * CLOCK_OUTER_RADIUS - CLOCK_TICK_RADIUS,\r\n left: CLOCK_RADIUS + Math.sin(radian) * CLOCK_OUTER_RADIUS - CLOCK_TICK_RADIUS\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Set Time\r\n *\r\n * @param event\r\n */\r\n private _setTime(event: any): void {\r\n const trigger = this._element.nativeElement;\r\n const triggerRect = trigger.getBoundingClientRect();\r\n const width = trigger.offsetWidth;\r\n const height = trigger.offsetHeight;\r\n const pageX = event.pageX !== undefined ? event.pageX : event.touches[0].pageX;\r\n const pageY = event.pageY !== undefined ? event.pageY : event.touches[0].pageY;\r\n const x = (width / 2) - (pageX - triggerRect.left - window.scrollX);\r\n const y = (height / 2) - (pageY - triggerRect.top - window.scrollY); let radian = Math.atan2(-x, y);\r\n const unit = Math.PI / (this.hourView ? 6 : (this.interval ? (30 / this.interval) : 30));\r\n const z = Math.sqrt(x * x + y * y);\r\n const outer = this.hourView && z > ((width * (CLOCK_OUTER_RADIUS / 100)) +\r\n (width * (CLOCK_INNER_RADIUS / 100))) / 2;\r\n\r\n if (radian < 0) {\r\n radian = Math.PI * 2 + radian;\r\n }\r\n let value = Math.round(radian / unit);\r\n\r\n let date: D;\r\n if (this.hourView) {\r\n if (this.twelvehour) {\r\n value = value === 0 ? 12 : value;\r\n } else {\r\n if (value === 12) {\r\n value = 0;\r\n }\r\n value = outer ? (value === 0 ? 12 : value) : value === 0 ? 0 : value + 12;\r\n }\r\n date = this._adapter.createDatetime(\r\n this._adapter.getYear(this.activeDate),\r\n this._adapter.getMonth(this.activeDate),\r\n this._adapter.getDate(this.activeDate), value, this._adapter.getMinute(this.activeDate));\r\n } else {\r\n if (this.interval) {\r\n value *= this.interval;\r\n }\r\n if (value === 60) {\r\n value = 0;\r\n }\r\n date = this._adapter.createDatetime(\r\n this._adapter.getYear(this.activeDate),\r\n this._adapter.getMonth(this.activeDate),\r\n this._adapter.getDate(this.activeDate), this._adapter.getHour(this.activeDate), value);\r\n }\r\n\r\n this._timeChanged = true;\r\n this.activeDate = date;\r\n this.activeDateChange.emit(this.activeDate);\r\n }\r\n\r\n}\r\n\r\n","<div class=\"cmat-datetimepicker-clock-wrapper\">\r\n <div class=\"cmat-datetimepicker-clock-center\"></div>\r\n <div class=\"cmat-datetimepicker-clock-hand\" [ngStyle]=\"hand\"></div>\r\n <div class=\"cmat-datetimepicker-clock-hours\" [class.active]=\"hourView\">\r\n @for (item of hours; track $index) {\r\n <div class=\"cmat-datetimepicker-clock-cell\"\r\n [class.cmat-datetimepicker-clock-cell-disabled]=\"!item.enabled\"\r\n [class.cmat-datetimepicker-clock-cell-selected]=\"selectedHour === item.value\"\r\n [ngStyle]=\"{'fontSize':item.fontSize,'left':item.left+'%',top:item.top+'%'}\">\r\n {{ item.displayValue }}</div>\r\n }\r\n </div>\r\n <div class=\"cmat-datetimepicker-clock-minutes\" [class.active]=\"!hourView\">\r\n @for (item of minutes; track $index) {\r\n <div class=\"cmat-datetimepicker-clock-cell\"\r\n [class.cmat-datetimepicker-clock-cell-disabled]=\"!item.enabled\"\r\n [class.cmat-datetimepicker-clock-cell-selected]=\"selectedMinute === item.value\" [ngStyle]=\"{'left':item.left+'%','top':item.top+'%'}\">{{ item.displayValue\r\n }}</div>\r\n }\r\n </div>\r\n</div>","\r\nexport function createMissingDateImplError(provider: string): Error {\r\n return Error(\r\n `CmatDatetimepickerComponent: No provider found for ${provider}. You must import one of the following ` +\r\n 'modules at your application root: CMatNativeDatetimeModule or provide a ' +\r\n 'custom implementation.');\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class CmatDatetimepickerIntl {\r\n /**\r\n * Stream to emit from when labels are changed. Use this to notify components when the labels have\r\n * changed after initialization.\r\n */\r\n readonly changes = new Subject<void>();\r\n\r\n /** A label for the calendar popup (used by screen readers). */\r\n calendarLabel = '日历';\r\n\r\n /** A label for the button used to open the calendar popup (used by screen readers). */\r\n openCalendarLabel = '打开日历';\r\n\r\n /** Label for the button used to close the calendar popup. */\r\n closeCalendarLabel = '关闭日历';\r\n\r\n /** A label for the previous month button (used by screen readers). */\r\n prevMonthLabel = '上个月';\r\n\r\n /** A label for the next month button (used by screen readers). */\r\n nextMonthLabel = '下个月';\r\n\r\n /** A label for the previous year button (used by screen readers). */\r\n prevYearLabel = '去年';\r\n\r\n /** A label for the next year button (used by screen readers). */\r\n nextYearLabel = '明年';\r\n\r\n /** A label for the previous multi-year button (used by screen readers). */\r\n prevMultiYearLabel = '过去24年';\r\n\r\n /** A label for the next multi-year button (used by screen readers). */\r\n nextMultiYearLabel = '未来24年';\r\n\r\n /** A label for the 'switch to month view' button (used by screen readers). */\r\n switchToMonthViewLabel = '选择日期';\r\n\r\n /** A label for the 'switch to year view' button (used by screen readers). */\r\n switchToYearViewLabel = '选择月份';\r\n\r\n /** A label for the 'switch to multi-year view' button (used by screen readers). */\r\n switchToMultiYearViewLabel = '选择年月';\r\n\r\n /** A label for the first date of a range of dates (used by screen readers). */\r\n startDateLabel = '开始日期';\r\n\r\n /** A label for the last date of a range of dates (used by screen readers). */\r\n endDateLabel = '结束日期';\r\n\r\n /** A label for the 'switch to clock hour view' button (used by screen readers). */\r\n switchToClockHourViewLabel = '选择小时';\r\n\r\n /** A label for the 'switch to clock minute view' button (used by screen readers). */\r\n switchToClockMinuteViewLabel = '选择分钟';\r\n\r\n /** Label used for ok button within the manual time input. */\r\n okLabel = '确认';\r\n\r\n /** Label used for cancel button within the manual time input. */\r\n cancelLabel = '取消';\r\n /** Formats a range of years (used for visuals). */\r\n formatYearRange(start: string, end: string): string {\r\n return `${start} \\u2013 ${end}`;\r\n }\r\n\r\n /** Formats a label for a range of years (used by screen readers). */\r\n formatYearRangeLabel(start: string, end: string): string {\r\n return `${start} to ${end}`;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';\r\n\r\n\r\n/**\r\n * An internal class that represents the data corresponding to a single calendar cell.\r\n */\r\nexport class CmatDatetimepickerCalendarCellComponent {\r\n constructor(public value: number,\r\n public displayValue: string,\r\n public ariaLabel: string,\r\n public enabled: boolean) {\r\n }\r\n}\r\n\r\n/**\r\n * An internal component used to display calendar data in a table.\r\n */\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: '[cmat-datetimepicker-calendar-body]',\r\n templateUrl: 'calendar-body.html',\r\n styleUrls: ['calendar-body.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatDatetimepickerCalendarBody',\r\n imports: []\r\n})\r\nexport class CmatDatetimepickerCalendarBodyComponent {\r\n /** The label for the table. (e.g. \"Jan 2017\"). */\r\n @Input() label: string;\r\n\r\n /** The cells to display in the table. */\r\n @Input() rows: CmatDatetimepickerCalendarCellComponent[][];\r\n\r\n /** The value in the table that corresponds to today. */\r\n @Input() todayValue: number | null;\r\n\r\n /** The value in the table that is currently selected. */\r\n @Input() selectedValue: number | null;\r\n\r\n /** The minimum number of free cells needed to fit the label in the first row. */\r\n @Input() labelMinRequiredCells: number;\r\n\r\n /** The number of columns in the table. */\r\n @Input() numCols = 7;\r\n\r\n /** Whether to allow selection of disabled cells. */\r\n @Input() allowDisabledSelection = false;\r\n\r\n /** The cell number of the active cell in the table. */\r\n @Input() activeCell = 0;\r\n\r\n /** Emits when a new value is selected. */\r\n @Output() selectedValueChange = new EventEmitter<number>();\r\n\r\n @HostBinding('class') class = 'cmat-datetimepicker-calendar-body';\r\n\r\n /** The number of blank cells to put at the beginning for the first row. */\r\n get _firstRowOffset(): number {\r\n return this.rows?.length && this.rows[0].length ?\r\n this.numCols - this.rows[0].length : 0;\r\n }\r\n\r\n cellClicked(cell: CmatDatetimepickerCalendarCellComponent): void {\r\n if (!this.allowDisabledSelection && !cell.enabled) {\r\n return;\r\n }\r\n this.selectedValueChange.emit(cell.value);\r\n }\r\n\r\n isActiveCell(rowIndex: number, colIndex: number): boolean {\r\n let cellNumber = rowIndex * this.numCols + colIndex;\r\n\r\n // Account for the fact that the first row may not have as many cells.\r\n if (rowIndex) {\r\n cellNumber -= this._firstRowOffset;\r\n }\r\n\r\n return cellNumber === this.activeCell;\r\n }\r\n}\r\n","<!--\r\nIf rst row, create a separate label row. We mark this row as\r\naria-hidden because we don't want it to be read out as one of the weeks in the month.\r\n-->\r\n@if (_firstRowOffset < labelMinRequiredCells) {\r\n <tr aria-hidden=\"true\">\r\n <td class=\"cmat-datetimepicker-calendar-body-label\" [attr.colspan]=\"numCols\">{{ label }}</td>\r\n </tr>\r\n}\r\n\r\n<!-- Create the first row separately so we can include a special spacer cell. -->\r\n@for (row of rows; track $index; let rowIndex = $index) {\r\n <tr role=\"row\">\r\n <!--\r\n We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\r\n -->\r\n @if (rowIndex === 0 && _firstRowOffset) {\r\n <td aria-hidden=\"true\" class=\"cmat-datetimepicker-calendar-body-label\"\r\n [attr.colspan]=\"_firstRowOffset\">\r\n {{ _firstRowOffset >= labelMinRequiredCells ? label : '' }}\r\n </td>\r\n }\r\n @for (item of row; track $index; let colIndex = $index) {\r\n <td role=\"presentation\" class=\"cmat-datetimepicker-calendar-body-cell\"\r\n [attr.aria-disabled]=\"!item.enabled || null\"\r\n [attr.aria-label]=\"item.ariaLabel\"\r\n [class.cmat-datetimepicker-calendar-body-active]=\"isActiveCell(rowIndex, colIndex)\"\r\n [class.cmat-datetimepicker-calendar-body-disabled]=\"!item.enabled\" (click)=\"cellClicked(item)\">\r\n <div class=\"cmat-datetimepicker-calendar-body-cell-content\"\r\n [attr.aria-selected]=\"selectedValue === item.value\"\r\n [class.cmat-datetimepicker-calendar-body-selected]=\"selectedValue === item.value\"\r\n [class.cmat-datetimepicker-calendar-body-today]=\"todayValue === item.value\">\r\n {{ item.displayValue }}\r\n </div>\r\n </td>\r\n }\r\n </tr>\r\n}","import { NgClass } from '@angular/common';\r\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewEncapsulation, inject } from '@angular/core';\r\nimport { CMAT_DATETIME_FORMATS, CmatDatetimeFormats, DatetimeAdapter } from 'cmat/components/adapter';\r\nimport { CmatDatetimepickerCalendarCellComponent, CmatDatetimepickerCalendarBodyComponent } from './calendar-body';\r\nimport { createMissingDateImplError } from './datetimepicker-errors';\r\nimport { CmatDatetimepickerType } from './datetimepicker-types';\r\n\r\n\r\n\r\nconst DAYS_PER_WEEK = 7;\r\n\r\n/**\r\n * An internal component used to display a single month in the datepicker.\r\n */\r\n@Component({\r\n selector: 'cmat-datetimepicker-month-view',\r\n templateUrl: 'month-view.html',\r\n styleUrls:['datetimepicker-base.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatDatetimepickerMonthView',\r\n imports: [CmatDatetimepickerCalendarBodyComponent,NgClass]\r\n})\r\nexport class CmatDatetimepickerMonthViewComponent<D> implements AfterContentInit, OnDestroy {\r\n @Input() type: CmatDatetimepickerType = 'date';\r\n\r\n @Output() userSelection = new EventEmitter<void>();\r\n /** A function used to filter which dates are selectable. */\r\n @Input() dateFilter: (date: D) => boolean;\r\n /** Emits when a new date is selected. */\r\n @Output() selectedChange = new EventEmitter<D>();\r\n\r\n /** Grid of calendar cells representing the dates of the month. */\r\n weeks: CmatDatetimepickerCalendarCellComponent[][];\r\n /** The number of blank cells in the first row before the 1st of the month. */\r\n firstWeekOffset: number;\r\n /**\r\n * The date of the month that the currently selected Date falls on.\r\n * Null if the currently selected Date is in another month.\r\n */\r\n selectedDate: number | null;\r\n /** The date of the month that today falls on. Null if today is in another month. */\r\n todayDate: number | null;\r\n /** The names of the weekdays. */\r\n weekdays: { long: string; narrow: string }[];\r\n calendarState: string;\r\n\r\n adapter = inject<DatetimeAdapter<D>>(DatetimeAdapter, { optional: true })!;\r\n private _dateFormats = inject<CmatDatetimeFormats>(CMAT_DATETIME_FORMATS, { optional: true })!;\r\n private _activeDate: D;\r\n private _selected: D;\r\n private _elementRef = inject(ElementRef);\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _calendarAnimationListener = this.calendarStateDone.bind(this);\r\n constructor() {\r\n if (!this.adapter) {\r\n throw createMissingDateImplError('CDatetimeAdapter');\r\n }\r\n\r\n if (!this._dateFormats) {\r\n throw createMissingDateImplError('CMAT_DATETIME_FORMATS');\r\n }\r\n\r\n const firstDayOfWeek = this.adapter.getFirstDayOfWeek();\r\n const narrowWeekdays = this.adapter.getDayOfWeekNames('narrow');\r\n const longWeekdays = this.adapter.getDayOfWeekNames('long');\r\n\r\n // Rotate the labels for days of the week based on the configured first day of the week.\r\n const weekdays = longWeekdays.map((long, i) => ({ long, narrow: narrowWeekdays[i] }));\r\n this.weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\r\n\r\n this._activeDate = this.adapter.today();\r\n\r\n this._elementRef.nativeElement.addEventListener('animationend', this._calendarAnimationListener);\r\n }\r\n\r\n\r\n /**\r\n * The date to display in this month view (everything other than the month and year is ignored).\r\n */\r\n @Input()\r\n get activeDate(): D {\r\n return this._activeDate;\r\n }\r\n\r\n set activeDate(value: D) {\r\n const oldActiveDate = this._activeDate;\r\n this._activeDate = value || this.adapter.today();\r\n if (oldActiveDate && this._activeDate &&\r\n !this.adapter.sameMonthAndYear(oldActiveDate, this._activeDate)) {\r\n this._init();\r\n if (this.adapter.isInNextMonth(oldActiveDate, this._activeDate)) {\r\n this._changeCalendarState('right');\r\n } else {\r\n this._changeCalendarState('left');\r\n }\r\n }\r\n }\r\n\r\n\r\n /** The currently selected date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get selected(): D {\r\n return this._selected;\r\n }\r\n\r\n set selected(value: D) {\r\n this._selected = value;\r\n this.selectedDate = this._getDateInCurrentMonth(this.selected);\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._init();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._elementRef.nativeElement.removeEventListener('animationend', this._calendarAnimationListener);\r\n }\r\n\r\n /** Handles when a new date is selected. */\r\n dateSelected(date: number): void {\r\n this.selectedChange.emit(this.adapter.createDatetime(\r\n this.adapter.getYear(this.activeDate), this.adapter.getMonth(this.activeDate),\r\n date, this.adapter.getHour(this.activeDate),\r\n this.adapter.getMinute(this.activeDate)));\r\n if (this.type === 'date') {\r\n this.userSelection.emit();\r\n }\r\n }\r\n\r\n calendarStateDone(event: AnimationEvent): void {\r\n if (event.animationName === 'slideCalendarLeft' || event.animationName === 'slideCalendarRight') {\r\n this.calendarState = '';\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n /** Initializes this month view. */\r\n private _init(): void {\r\n this.selectedDate = this._getDateInCurrentMonth(this.selected);\r\n this.todayDate = this._getDateInCurrentMonth(this.adapter.today());\r\n\r\n const firstOfMonth = this.adapter.createDatetime(this.adapter.getYear(this.activeDate),\r\n this.adapter.getMonth(this.activeDate), 1,\r\n this.adapter.getHour(this.activeDate),\r\n this.adapter.getMinute(this.activeDate));\r\n this.firstWeekOffset =\r\n (DAYS_PER_WEEK + this.adapter.getDayOfWeek(firstOfMonth) -\r\n this.adapter.getFirstDayOfWeek()) % DAYS_PER_WEEK;\r\n\r\n this._createWeekCells();\r\n }\r\n\r\n /** Creates MdCalendarCells for the dates in this month. */\r\n private _createWeekCells(): void {\r\n const daysInMonth = this.adapter.getNumDaysInMonth(this.activeDate);\r\n const dateNames = this.adapter.getDateNames();\r\n this.weeks = [[]];\r\n for (let i = 0, cell = this.firstWeekOffset; i < daysInMonth; i++, cell++) {\r\n if (cell === DAYS_PER_WEEK) {\r\n this.weeks.push([]);\r\n cell = 0;\r\n }\r\n const date = this.adapter.createDatetime(\r\n this.adapter.getYear(this.activeDate),\r\n this.adapter.getMonth(this.activeDate), i + 1,\r\n this.adapter.getHour(this.activeDate),\r\n this.adapter.getMinute(this.activeDate));\r\n const enabled = !this.dateFilter ||\r\n this.dateFilter(date);\r\n const ariaLabel = this.adapter.format(date, this._dateFormats.display.dateA11yLabel);\r\n this.weeks[this.weeks.length - 1]\r\n .push(new CmatDatetimepickerCalendarCellComponent(i + 1, dateNames[i], ariaLabel, enabled));\r\n }\r\n }\r\n\r\n /**\r\n * Gets the date in this month that the given Date falls on.\r\n * Returns null if the given Date is in another month.\r\n */\r\n private _getDateInCurrentMonth(date: D): number | null {\r\n return this.adapter.sameMonthAndYear(date, this.activeDate) ?\r\n this.adapter.getDate(date) : null;\r\n }\r\n\r\n private _changeCalendarState(direction: string): void {\r\n this.calendarState = direction;\r\n }\r\n}\r\n","<table class=\"cmat-datetimepicker-calendar-table\">\r\n <thead class=\"cmat-datetimepicker-calendar-table-header\">\r\n <tr>\r\n @for (day of weekdays; track $index) {\r\n <th [attr.aria-label]=\"day.long\">{{day.narrow}}</th>\r\n }\r\n </tr>\r\n <tr>\r\n <th colspan=\"7\" class=\"cmat-calendar-table-header-divider\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"cmat-calendar-slide-animation\" cmat-datetimepicker-calendar-body role=\"grid\"\r\n [ngClass]=\"{\r\n 'left': calendarState==='left',\r\n 'right': calendarState==='right'\r\n }\" [activeCell]=\"adapter.getDate(activeDate) - 1\" [rows]=\"weeks\"\r\n [selectedValue]=\"selectedDate\" [todayValue]=\"todayDate\" (selectedValueChange)=\"dateSelected($event)\">\r\n </tbody>\r\n</table>","\r\nimport { NgClass } from '@angular/common';\r\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewEncapsulation, inject } from '@angular/core';\r\nimport { CMAT_DATETIME_FORMATS, CmatDatetimeFormats, DatetimeAdapter } from 'cmat/components/adapter';\r\nimport { CmatDatetimepickerCalendarCellComponent, CmatDatetimepickerCalendarBodyComponent } from './calendar-body';\r\nimport { createMissingDateImplError } from './datetimepicker-errors';\r\nimport { CmatDatetimepickerType } from './datetimepicker-types';\r\n\r\n\r\nexport const yearsPerPage = 24;\r\n\r\nexport const yearsPerRow = 4;\r\n\r\n/**\r\n * An internal component used to display multiple years in the datepicker.\r\n */\r\n@Component({\r\n selector: 'cmat-datetimepicker-multi-year-view',\r\n templateUrl: 'multi-year-view.html',\r\n styleUrls: ['datetimepicker-base.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatDatetimepickerMultiYearView',\r\n imports: [CmatDatetimepickerCalendarBodyComponent, NgClass]\r\n})\r\nexport class CmatDatetimepickerMultiYearViewComponent<D> implements AfterContentInit, OnDestroy {\r\n @Output() userSelection = new EventEmitter<void>();\r\n\r\n @Input() type: CmatDatetimepickerType = 'date';\r\n /** A function used to filter which dates are selectable. */\r\n @Input() dateFilter: (date: D) => boolean;\r\n /** Emits when a new month is selected. */\r\n @Output() selectedChange = new EventEmitter<D>();\r\n /** Grid of calendar cells representing the years in the range. */\r\n years: CmatDatetimepickerCalendarCellComponent[][];\r\n /** The label for this year range (e.g. \"2000-2020\"). */\r\n yearLabel: string;\r\n /** The year in this range that today falls on. Null if today is in a different range. */\r\n todayYear: number;\r\n /**\r\n * The year in this range that the selected Date falls on.\r\n * Null if the selected Date is in a different range.\r\n */\r\n selectedYear: number | null;\r\n calendarState: string;\r\n\r\n adapter = inject<DatetimeAdapter<D>>(DatetimeAdapter, { optional: true })!;\r\n private _dateFormats = inject<CmatDatetimeFormats>(CMAT_DATETIME_FORMATS, { optional: true })!;\r\n private _activeDate: D;\r\n private _selected: D;\r\n private _minDate: D | null;\r\n private _maxDate: D | null;\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _elementRef = inject(ElementRef);\r\n private _calendarAnimationListener = this.calendarStateDone.bind(this);\r\n\r\n constructor() {\r\n if (!this.adapter) {\r\n throw createMissingDateImplError('CDatetimeAdapter');\r\n }\r\n\r\n if (!this._dateFormats) {\r\n throw createMissingDateImplError('CMAT_DATETIME_FORMATS');\r\n }\r\n\r\n this._activeDate = this.adapter.today();\r\n\r\n this._elementRef.nativeElement.addEventListener('animationend', this._calendarAnimationListener);\r\n }\r\n\r\n /** The date to display in this multi year view*/\r\n @Input()\r\n get activeDate(): D {\r\n return this._activeDate;\r\n }\r\n\r\n set activeDate(value: D) {\r\n const oldActiveDate = this._activeDate;\r\n this._activeDate = value || this.adapter.today();\r\n if (oldActiveDate && this._activeDate &&\r\n !isSameMultiYearView(this.adapter, oldActiveDate, this._activeDate, this.minDate, this.maxDate)) {\r\n this._init();\r\n\r\n if (this.adapter.isInNextMonth(oldActiveDate, this._activeDate)) {\r\n this._changeCalendarState('right');\r\n } else {\r\n this._changeCalendarState('left');\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n /** The currently selected date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get selected(): D {\r\n return this._selected;\r\n }\r\n\r\n set selected(value: D) {\r\n this._selected = value;\r\n this.selectedYear = this._selected && this.adapter.getYear(this._selected);\r\n }\r\n\r\n\r\n\r\n /** The minimum selectable date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get minDate(): D | null {\r\n return this._minDate;\r\n }\r\n\r\n set minDate(value: D | null) {\r\n this._minDate = this._getValidDateOrNull(this.adapter.deserialize(value));\r\n }\r\n\r\n\r\n\r\n /** The maximum selectable date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get maxDate(): D | null {\r\n return this._maxDate;\r\n }\r\n\r\n set maxDate(value: D | null) {\r\n this._maxDate = this._getValidDateOrNull(this.adapter.deserialize(value));\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._init();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._elementRef.nativeElement.removeEventListener('animationend', this._calendarAnimationListener);\r\n }\r\n\r\n /** Handles when a new year is selected. */\r\n yearSelected(year: number): void {\r\n const month = this.adapter.getMonth(this.activeDate);\r\n const normalizedDate = this.adapter.createDatetime(year, month, 1, 0, 0);\r\n\r\n this.selectedChange.emit(this.adapter.createDatetime(\r\n year,\r\n month,\r\n Math.min(this.adapter.getDate(this.activeDate),\r\n this.adapter.getNumDaysInMonth(normalizedDate)),\r\n this.adapter.getHour(this.activeDate),\r\n this.adapter.getMinute(this.activeDate)));\r\n\r\n if (this.type === 'year') {\r\n this.userSelection.emit();\r\n }\r\n }\r\n\r\n getActiveCell(): number {\r\n return getActiveOffset(this.adapter, this.activeDate, this.minDate, this.maxDate);\r\n }\r\n\r\n calendarStateDone(event: AnimationEvent): void {\r\n if (event.animationName === 'slideCalendarLeft' || event.animationName === 'slideCalendarRight') {\r\n this.calendarState = '';\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n /** Initializes this year view. */\r\n private _init(): void {\r\n\r\n this.todayYear = this.adapter.getYear(this.adapter.today());\r\n this.yearLabel = this.adapter.getYearName(this.activeDate);\r\n\r\n\r\n const activeYear = this.adapter.getYear(this.activeDate);\r\n\r\n const minYearOfPage = activeYear - getActiveOffset(\r\n this.adapter, this.activeDate, this.minDate, this.maxDate);\r\n\r\n this.years = [];\r\n for (let i = 0, row: number[] = []; i < yearsPerPage; i++) {\r\n row.push(minYearOfPage + i);\r\n if (row.length === yearsPerRow) {\r\n this.years.push(row.map(year => this._createCellForYear(year)));\r\n row = [];\r\n }\r\n }\r\n }\r\n\r\n /** Creates an MatDatetimepickerCalendarCell for the given year. */\r\n private _createCellForYear(year: number): CmatDatetimepickerCalendarCellComponent {\r\n const yearName = this.adapter.getYearName(this.adapter.createDate(year, 0, 1));\r\n return new CmatDatetimepickerCalendarCellComponent(year, yearName, yearName, this._shouldEnableYear(year));\r\n }\r\n\r\n /** Whether the given year is enabled. */\r\n private _shouldEnableYear(year: number): boolean {\r\n // disable if the year is greater than maxDate lower than minDate\r\n if (year === undefined || year === null ||\r\n (this.maxDate && year > this.adapter.getYear(this.maxDate)) ||\r\n (this.minDate && year < this.adapter.getYear(this.minDate))) {\r\n return false;\r\n }\r\n\r\n // enable if it reaches here and there's no filter defined\r\n if (!this.dateFilter) {\r\n return true;\r\n }\r\n\r\n const firstOfYear = this.adapter.createDate(year, 0, 1);\r\n\r\n // If any date in the year is enabled count the year as enabled.\r\n for (let date = firstOfYear; this.adapter.getYear(date) === year;\r\n date = this.adapter.addCalendarDays(date, 1)) {\r\n if (this.dateFilter(date)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n private _getValidDateOrNull(obj: any): D | null {\r\n return (this.adapter.isDateInstance(obj) && this.adapter.isValid(obj)) ? obj : null;\r\n }\r\n\r\n private _changeCalendarState(direction: string): void {\r\n this.calendarState = direction;\r\n }\r\n}\r\n\r\nexport function isSameMultiYearView<D>(\r\n dateAdapter: DatetimeAdapter<D>, date1: D, date2: D, minDate: D | null, maxDate: D | null): boolean {\r\n const year1 = dateAdapter.getYear(date1);\r\n const year2 = dateAdapter.getYear(date2);\r\n const startingYear = getStartingYear(dateAdapter, minDate, maxDate);\r\n return Math.floor((year1 - startingYear) / yearsPerPage) ===\r\n Math.floor((year2 - startingYear) / yearsPerPage);\r\n}\r\n\r\n/**\r\n * When the multi-year view is first opened, the active year will be in view.\r\n * So we compute how many years are between the active year and the *slot* where our\r\n * \"startingYear\" will render when paged into view.\r\n */\r\nexport function getActiveOffset<D>(\r\n dateAdapter: DatetimeAdapter<D>, activeDate: D, minDate: D | null, maxDate: D | null): number {\r\n const activeYear = dateAdapter.getYear(activeDate);\r\n return euclideanModulo((activeYear - getStartingYear(dateAdapter, minDate, maxDate)),\r\n yearsPerPage);\r\n}\r\n\r\n/**\r\n * We pick a \"starting\" year such that either the maximum year would be at the end\r\n * or the minimum year would be at the beginning of a page.\r\n */\r\nfunction getStartingYear<D>(\r\n dateAdapter: DatetimeAdapter<D>, minDate: D | null, maxDate: D | null): number {\r\n let startingYear = 0;\r\n if (maxDate) {\r\n const maxYear = dateAdapter.getYear(maxDate);\r\n startingYear = maxYear - yearsPerPage + 1;\r\n } else if (minDate) {\r\n startingYear = dateAdapter.getYear(minDate);\r\n }\r\n return startingYear;\r\n}\r\n\r\n/** Gets remainder that is non-negative, even if first number is negative */\r\nfunction euclideanModulo(a: number, b: number): number {\r\n return (a % b + b) % b;\r\n}\r\n","<table class=\"cmat-datetimepicker-calendar-table\">\r\n <thead class=\"cmat-datetimepicker-calendar-table-header\"></thead>\r\n <tbody class=\"cmat-calendar-slide-animation\" cmat-datetimepicker-calendar-body role=\"grid\"\r\n [ngClass]=\"{\r\n 'left': calendarState==='left',\r\n 'right': calendarState==='right'\r\n }\" [activeCell]=\"getActiveCell()\" [numCols]=\"4\" [rows]=\"years\"\r\n [selectedValue]=\"selectedYear\" [todayValue]=\"todayYear\" [allowDisabledSelection]=\"true\"\r\n (selectedValueChange)=\"yearSelected($event)\"></tbody>\r\n</table>","import {\r\n coerceBooleanProperty,\r\n coerceNumberProperty,\r\n NumberInput,\r\n} from '@angular/cdk/coercion';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnChanges, OnDestroy, Output, SimpleChanges, ViewChild, ViewEncapsulation, inject } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { DatetimeAdapter } from 'cmat/components/adapter';\r\nimport { SubscriptionLike } from 'rxjs';\r\nimport { CmatDatetimepickerClockComponent } from './clock';\r\nimport { CmatDatetimepickerFilterType } from './datetimepicker-filtertype';\r\nimport { CmatDatetimepickerIntl } from './datetimepicker-intl';\r\nimport { CmatAMPM, CmatClockView } from './datetimepicker-types';\r\n\r\n\r\n\r\nfunction pad(num: NumberInput, size: number): string {\r\n num = String(num);\r\n while (num.length < size) { num = '0' + num; }\r\n return num;\r\n}\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: 'input.cmat-datetimepicker-time-input',\r\n exportAs: 'cmatDatetimepickerTimeInput'\r\n})\r\nexport class CmatDatetimepickerTimeInputDirective implements OnDestroy {\r\n @Input() timeInterval: number = 1;\r\n @Input() timeMin: number = 0;\r\n @Input() timeMax: number = Infinity;\r\n\r\n @Output() timeValueChanged = new EventEmitter<NumberInput>();\r\n\r\n private _element = inject(ElementRef);\r\n private _cdr = inject(ChangeDetectorRef);\r\n\r\n private _value: NumberInput;\r\n\r\n private _keyDownListener = this.keyDownHandler.bind(this);\r\n private _keyPressListener = this.keyPressHandler.bind(this);\r\n private _inputEventListener = this.inputChangedHandler.bind(this);\r\n\r\n\r\n\r\n constructor() {\r\n this.inputElement.addEventListener('keydown', this._keyDownListener, {\r\n passive: true,\r\n });\r\n\r\n // Do not passive since we want to be able to preventDefault()\r\n this.inputElement.addEventListener('keypress', this._keyPressListener);\r\n this.inputElement.addEventListener('input', this._inputEventListener, {\r\n passive: true,\r\n });\r\n }\r\n\r\n get hasFocus(): boolean {\r\n return this._element.nativeElement && this._element?.nativeElement === document?.activeElement;\r\n }\r\n\r\n get inputElement(): HTMLInputElement {\r\n return this._element.nativeElement as HTMLInputElement;\r\n }\r\n\r\n // We look here at the placeholder value, because we write '' into the value on focus\r\n // placeholder should always be up to date with \"currentValue\"\r\n get valid(): boolean {\r\n // At the start _value is undefined therefore this would result in not valid and\r\n // make a ugly warning border afterwards we can safely check\r\n if (this._value) {\r\n const currentValue = String(this.inputElement.value);\r\n\r\n // It can be that currentValue is empty due to we removing the value on focus,\r\n // if that is the case we should check previous value which should be in the placeholder\r\n if (currentValue.length) {\r\n return pad(this._value, 2) === this.inputElement.value;\r\n } else {\r\n return pad(this._value, 2) === this.inputElement.placeholder;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n get invalid(): boolean {\r\n return !this.valid;\r\n }\r\n\r\n @Input()\r\n set timeValue(value: NumberInput) {\r\n this._value = coerceNumberProperty(value);\r\n if (!this.hasFocus) {\r\n this.writeValue(this._value);\r\n }\r\n this.writePlaceholder(this._value);\r\n }\r\n\r\n @HostListener('blur', ['$event'])\r\n blur(): void {\r\n this.writeValue(this._value);\r\n this.writePlaceholder(this._value);\r\n this.timeValueChanged.emit(this._value);\r\n }\r\n @HostListener('focus', ['$event'])\r\n focus(): void {\r\n this.writeValue('');\r\n }\r\n\r\n /**\r\n * Write value to inputElement\r\n *\r\n * @param value NumberInput\r\n */\r\n writeValue(value: NumberInput): void {\r\n if (value !== '') {\r\n this.inputElement.value = pad(value, 2);\r\n } else {\r\n this.inputElement.value = '';\r\n }\r\n this._cdr.markForCheck();\r\n }\r\n\r\n /**\r\n * Writes value to placeholder\r\n *\r\n * @param value NumberInput\r\n */\r\n writePlaceholder(value: NumberInput): void {\r\n this.inputElement.placeholder = pad(value, 2);\r\n this._cdr.markForCheck();\r\n }\r\n\r\n keyDownHandler(event: KeyboardEvent): void {\r\n if (String(this.inputElement.value).length > 0) {\r\n let value: number | null = null;\r\n if (event.code === 'ArrowUp') {\r\n value = coerceNumberProperty(this._value);\r\n value += this.timeInterval;\r\n event.stopPropagation();\r\n } else if (event.code === 'ArrowDown') {\r\n value = coerceNumberProperty(this._value);\r\n value -= this.timeInterval;\r\n event.stopPropagation();\r\n }\r\n\r\n // if value has changed\r\n if (typeof value === 'number') {\r\n this.writeValue(value);\r\n this.writePlaceholder(value);\r\n this.clampInputValue();\r\n this.timeValueChanged.emit(this._value);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Prevent non number inputs in the inputElement with the exception of Enter/BackSpace\r\n *\r\n * @param event KeyboardEvent\r\n */\r\n keyPressHandler(event: KeyboardEvent): void {\r\n const key = event?.key ?? null;\r\n if (isNaN(Number(key)) && key !== 'Enter') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n inputChangedHandler(): void {\r\n this.clampInputValue();\r\n this.timeValueChanged.emit(this._value);\r\n }\r\n\r\n clampInputValue(): void {\r\n if (this.inputElement?.value === '') {\r\n return;\r\n }\r\n\r\n const value = coerceNumberProperty(this.inputElement?.value ?? null);\r\n if (value) {\r\n const clampedValue = Math.min(Math.max(value, this.timeMin), this.timeMax);\r\n if (clampedValue !== value) {\r\n this.writeValue(clampedValue);\r\n this.writePlaceholder(clampedValue);\r\n }\r\n this._value = clampedValue;\r\n }\r\n }\r\n\r\n /**\r\n * Remove event listeners on destruction\r\n */\r\n ngOnDestroy(): void {\r\n this.inputElement.removeEventListener('keydown', this._keyDownListener);\r\n this.inputElement.removeEventListener('keypress', this._keyPressListener);\r\n this.inputElement.removeEventListener('input', this._inputEventListener);\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'cmat-datetimepicker-time',\r\n templateUrl: './time.html',\r\n styleUrls: ['time.scss'],\r\n exportAs: 'cmatDatetimepickerTime',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [CmatDatetimepickerTimeInputDirective, MatButtonModule, CmatDatetimepickerClockComponent]\r\n})\r\nexport class CmatDatetimepickerTimeComponent<D> implements OnChanges, AfterViewInit, OnDestroy {\r\n /** Emits when the currently selected date changes. */\r\n @Output() readonly selectedChange = new EventEmitter<D>();\r\n\r\n /** Emits when any date changes. */\r\n @Output() readonly activeDateChange = new EventEmitter<D>();\r\n\r\n /** Emits when any date is selected. */\r\n @Output() readonly userSelection = new EventEmitter<void>();\r\n\r\n /** Emits when AM/PM button are clicked. */\r\n @Output() readonly ampmChange = new EventEmitter<CmatAMPM>();\r\n\r\n /** Emits when AM/PM button are clicked. */\r\n @Output() readonly clockViewChange = new EventEmitter<CmatClockView>();\r\n\r\n /** A function used to filter which dates are selectable. */\r\n @Input() dateFilter!: (date: D, type: CmatDatetimepickerFilterType) => boolean;\r\n\r\n /** Step over minutes. */\r\n @Input() interval: number = 1;\r\n /** Whether the time is now in AM or PM. */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n @Input() AMPM: CmatAMPM = 'AM';\r\n\r\n @HostBinding('class') class = 'cmat-datetimepicker-time';\r\n\r\n @ViewChild('hourInput', { read: ElementRef<HTMLInputElement> })\r\n protected hourInputElement: ElementRef<HTMLInputElement> | void;\r\n\r\n @ViewChild('hourInput', { read: CmatDatetimepickerTimeInputDirective })\r\n protected hourInputDirective: CmatDatetimepickerTimeInputDirective | void;\r\n\r\n @ViewChild('minuteInput', { read: ElementRef<HTMLInputElement> })\r\n protected minuteInputElement: ElementRef<HTMLInputElement> | void;\r\n\r\n @ViewChild('minuteInput', { read: CmatDatetimepickerTimeInputDirective })\r\n protected minuteInputDirective: CmatDatetimepickerTimeInputDirective | void;\r\n\r\n datetimepickerIntlChangesSubscription: SubscriptionLike;\r\n\r\n protected datetimepickerIntl = inject(CmatDatetimepickerIntl);\r\n private _adapter = inject<DatetimeAdapter<D>>(DatetimeAdapter);\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n private _twelvehour = false;\r\n private _activeDate!: D;\r\n private _selected!: D | null;\r\n private _minDate!: D | null;\r\n private _maxDate!: D | null;\r\n /** Whether the clock is in hour view. */\r\n private _clockView: CmatClockView = 'hour';\r\n\r\n\r\n\r\n constructor() {\r\n this.datetimepickerIntlChangesSubscription = this.datetimepickerIntl.changes.subscribe(() => {\r\n this._changeDetectorRef.detectChanges();\r\n });\r\n }\r\n\r\n get isHourView(): boolean {\r\n return this._clockView === 'hour';\r\n }\r\n\r\n get isMinuteView(): boolean {\r\n return this._clockView === 'hour';\r\n }\r\n\r\n get hour(): string {\r\n if (!this.activeDate) {\r\n if (this.twelvehour) {\r\n return '12';\r\n } else {\r\n return '00';\r\n }\r\n }\r\n\r\n const hour = Number(this._adapter.getHour(this.activeDate));\r\n if (!this.twelvehour) {\r\n return this.prefixWithZero(hour);\r\n }\r\n\r\n if (hour === 0) {\r\n return '12';\r\n } else {\r\n return this.prefixWithZero(hour > 12 ? hour - 12 : hour);\r\n }\r\n }\r\n\r\n get minute(): string {\r\n if (this.activeDate) {\r\n return this.prefixWithZero(this._adapter.getMinute(this.activeDate));\r\n }\r\n\r\n return '00';\r\n }\r\n\r\n /** Whether the clock uses 12 hour format. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get twelvehour(): boolean {\r\n return this._twelvehour;\r\n }\r\n set twelvehour(value: boolean) {\r\n this._twelvehour = coerceBooleanProperty(value);\r\n }\r\n\r\n /**\r\n * The date to display in this clock view.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get activeDate(): D {\r\n return this._activeDate;\r\n }\r\n set activeDate(value: D) {\r\n this._activeDate = this._adapter.clampDate(value, this.minDate, this.maxDate);\r\n }\r\n\r\n\r\n /** The currently selected date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get selected(): D | null {\r\n return this._selected;\r\n }\r\n set selected(value: D | null) {\r\n this._selected = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));\r\n if (this._selected) {\r\n this.activeDate = this._selected;\r\n }\r\n }\r\n\r\n\r\n /** The minimum selectable date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get minDate(): D | null {\r\n return this._minDate;\r\n }\r\n\r\n set minDate(value: D | null) {\r\n this._minDate = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));\r\n }\r\n\r\n\r\n /** The maximum selectable date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get maxDate(): D | null {\r\n return this._maxDate;\r\n }\r\n set maxDate(value: D | null) {\r\n this._maxDate = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));\r\n }\r\n\r\n\r\n /** Whether the clock should be started in hour or minute view. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get clockView(): CmatClockView {\r\n return this._clockView;\r\n }\r\n set clockView(value: CmatClockView) {\r\n this._clockView = value;\r\n }\r\n\r\n prefixWithZero(value: number): string {\r\n if (value < 10) {\r\n return '0' + String(value);\r\n }\r\n\r\n return String(value);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // when clockView changes by input we should focus the correct input\r\n if (changes['clockView']) {\r\n if (changes['clockView'].currentValue !== changes['clockView'].previousValue) {\r\n this.focusInputElement();\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.focusInputElement();\r\n }\r\n\r\n focusInputElement(): void {\r\n if (this.clockView === 'hour') {\r\n if (this.hourInputElement) {\r\n (this.hourInputElement.nativeElement).focus();\r\n }\r\n } else {\r\n if (this.minuteInputElement) {\r\n (this.minuteInputElement.nativeElement).focus();\r\n }\r\n }\r\n }\r\n\r\n handleHourInputChange(value: NumberInput): void {\r\n const hour = coerceNumberProperty(value);\r\n if (hour || hour === 0) {\r\n const newValue = this._adapter.createDatetime(\r\n this._adapter.getYear(this.activeDate),\r\n this._adapter.getMonth(this.activeDate),\r\n this._adapter.getDate(this.activeDate),\r\n this.updateHourForAmPm(hour),\r\n this._adapter.getMinute(this.activeDate)\r\n );\r\n\r\n this._activeDate = this._adapter.clampDate(newValue, this.minDate, this.maxDate);\r\n this.activeDateChange.emit(this.activeDate);\r\n\r\n // If previously we did set [cmatValue]=\"13\" and the input changed to 6, and the clamping will make it \"13\" again\r\n // then the hourInputDirective will not have been updated since \"13\" === \"13\" same reference so no change detected\r\n // by directly setting it within this handler, we handle this usecase\r\n if (this.hourInputDirective) {\r\n this.hourInputDirective.timeValue = this.hour;\r\n }\r\n }\r\n }\r\n\r\n updateHourForAmPm(value: number): number {\r\n if (!this.twelvehour) {\r\n return value;\r\n }\r\n\r\n // value should be between 1-12\r\n if (this.AMPM === 'AM') {\r\n if (value === 0 || value === 12) {\r\n return 0;\r\n }\r\n return value;\r\n }\r\n // PM\r\n else {\r\n if (value === 0 || value === 12) {\r\n return 12;\r\n }\r\n\r\n // other cases, we should add 12 to the value aka 3:00 PM = 3 + 12 = 15:00\r\n return value + 12;\r\n }\r\n }\r\n\r\n handleMinuteInputChange(value: NumberInput): void {\r\n const minute = coerceNumberProperty(value);\r\n if (minute || minute === 0) {\r\n const newValue = this._adapter.createDatetime(\r\n this._adapter.getYear(this.activeDate),\r\n this._adapter.getMonth(this.activeDate),\r\n this._adapter.getDate(this.activeDate),\r\n this._adapter.getHour(this._activeDate),\r\n minute\r\n );\r\n this._activeDate = this._adapter.clampDate(newValue, this.minDate, this.maxDate);\r\n this.activeDateChange.emit(this.activeDate);\r\n\r\n // If previously we did set [cmatValue]=\"40\" and the input changed to 30, and the clamping will make it \"40\" again\r\n // then the minuteInputDirective will not have been updated since \"40\" === \"40\" same reference so no change detected\r\n // by directly setting it within this handler, we handle this usecase\r\n if (this.minuteInputDirective) {\r\n this.minuteInputDirective.timeValue = this.minute;\r\n }\r\n }\r\n }\r\n\r\n handleFocus(clockView: CmatClockView): void {\r\n this.clockView = clockView;\r\n this.clockViewChange.emit(clockView);\r\n }\r\n\r\n timeSelected(date: D): void {\r\n if (this.clockView === 'hour') {\r\n this.clockView = 'minute';\r\n }\r\n this._activeDate = this.selected = date;\r\n }\r\n\r\n onActiveDateChange(date: D): void {\r\n this._activeDate = date;\r\n this.activeDateChange.emit(date);\r\n }\r\n\r\n handleOk(): void {\r\n if (this._selected) {\r\n this.selectedChange.emit(this._selected);\r\n }\r\n this.userSelection.emit();\r\n }\r\n\r\n handleCancel(): void {\r\n this.userSelection.emit();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.datetimepickerIntlChangesSubscription) {\r\n this.datetimepickerIntlChangesSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","<div class=\"cmat-datetimepicker-time-input-wrapper\">\r\n <div class=\"cmat-datetimepicker-time-input-inner\">\r\n <input #hourInput=\"cmatDatetimepickerTimeInput\" class=\"cmat-datetimepicker-time-input\"\r\n type=\"text\" inputmode=\"numeric\"\r\n maxlength=\"2\" [class.cmat-datetimepicker-time-input-active]=\"clockView === 'hour'\" [class.cmat-datetimepicker-time-input-warning]=\"!hourInput.valid\" [timeMin]=\"twelvehour ? 1 : 0\" [timeMax]=\"twelvehour ? 12 : 23\"\r\n [timeValue]=\"hour\" (timeValueChanged)=\"handleHourInputChange($event)\" (focus)=\"handleFocus('hour')\" />\r\n\r\n <div class=\"cmat-datetimepicker-time-seperator\">:</div>\r\n\r\n <input #minuteInput=\"cmatDatetimepickerTimeInput\" class=\"cmat-datetimepicker-time-input\"\r\n type=\"text\" inputmode=\"numeric\"\r\n maxlength=\"2\" [class.cmat-datetimepicker-time-input-active]=\"clockView === 'minute'\" [class.cmat-datetimepicker-time-input-warning]=\"!minuteInput.valid\" [timeMin]=\"0\" [timeMax]=\"59\" [timeValue]=\"minute\"\r\n [timeInterval]=\"interval\" (timeValueChanged)=\"handleMinuteInputChange($event)\" (focus)=\"handleFocus('minute')\" />\r\n\r\n @if (twelvehour) {\r\n <div class=\"cmat-datetimepicker-time-ampm\">\r\n <button matButton type=\"button\" class=\"cmat-datetimepicker-time-am\"\r\n aria-label=\"AM\" [class.cmat-datetimepicker-time-ampm-active]=\"AMPM === 'AM'\"\r\n (keydown)=\"$event.stopPropagation()\" (click)=\"ampmChange.emit('AM')\">AM</button>\r\n <button matButton type=\"button\" class=\"cmat-datetimepicker-time-pm\"\r\n aria-label=\"PM\" [class.cmat-datetimepicker-time-ampm-active]=\"AMPM === 'PM'\"\r\n (keydown)=\"$event.stopPropagation()\" (click)=\"ampmChange.emit('PM')\">PM</button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <cmat-datetimepicker-clock [dateFilter]=\"dateFilter\" [interval]=\"interval\"\r\n [maxDate]=\"maxDate\" [minDate]=\"minDate\" [selected]=\"selected\" [startView]=\"clockView\" [twelvehour]=\"twelvehour\"\r\n (selectedChange)=\"timeSelected($event)\" (activeDateChange)=\"onActiveDateChange($event)\">\r\n </cmat-datetimepicker-clock>\r\n\r\n <div class=\"cmat-datetimepicker-time-button-wrapper flex flex-row gap-4\">\r\n <button class=\"cmat=datetimepicker-time-cancel-button\" matButton=\"outlined\" type=\"button\" (click)=\"handleCancel()\">\r\n {{ datetimepickerIntl.cancelLabel }}\r\n </button>\r\n <button class=\"cmat-datetimepicker-time-ok-button\" matButton=\"filled\" type=\"button\" color=\"primary\" [disabled]=\"minuteInputDirective?.invalid || hourInputDirective?.invalid\"\r\n (click)=\"handleOk()\">\r\n {{ datetimepickerIntl.okLabel }}\r\n </button>\r\n </div>","import { NgClass } from '@angular/common';\r\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewEncapsulation, inject } from '@angular/core';\r\nimport { CMAT_DATETIME_FORMATS, CmatDatetimeFormats, DatetimeAdapter } from 'cmat/components/adapter';\r\nimport { CmatDatetimepickerCalendarCellComponent, CmatDatetimepickerCalendarBodyComponent } from './calendar-body';\r\nimport { createMissingDateImplError } from './datetimepicker-errors';\r\nimport { CmatDatetimepickerType } from './datetimepicker-types';\r\n\r\n\r\n/**\r\n * An internal component used to display a single year in the datepicker.\r\n */\r\n@Component({\r\n selector: 'cmat-datetimepicker-year-view',\r\n templateUrl: 'year-view.html',\r\n styleUrls: ['datetimepicker-base.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatDatetimepickerYearView',\r\n imports: [CmatDatetimepickerCalendarBodyComponent, NgClass]\r\n})\r\nexport class CmatDatetimepickerYearViewComponent<D> implements AfterContentInit, OnDestroy {\r\n @Output() userSelection = new EventEmitter<void>();\r\n\r\n @Input() type: CmatDatetimepickerType = 'date';\r\n /** A function used to filter which dates are selectable. */\r\n @Input() dateFilter: (date: D) => boolean;\r\n /** Emits when a new month is selected. */\r\n @Output() selectedChange = new EventEmitter<D>();\r\n\r\n /** Grid of calendar cells representing the months of the year. */\r\n months: CmatDatetimepickerCalendarCellComponent[][];\r\n /** The label for this year (e.g. \"2017\"). */\r\n yearLabel: string;\r\n /** The month in this year that today falls on. Null if today is in a different year. */\r\n todayMonth: number | null;\r\n /**\r\n * The month in this year that the selected Date falls on.\r\n * Null if the selected Date is in a different year.\r\n */\r\n selectedMonth: number | null;\r\n calendarState: string;\r\n\r\n adapter = inject<DatetimeAdapter<D>>(DatetimeAdapter, { optional: true })!;\r\n private _dateFormats = inject<CmatDatetimeFormats>(CMAT_DATETIME_FORMATS, { optional: true })!;\r\n\r\n private _activeDate: D;\r\n private _selected: D;\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _elementRef = inject(ElementRef);\r\n private _calendarAnimationListener = this.calendarStateDone.bind(this);\r\n constructor() {\r\n if (!this.adapter) {\r\n throw createMissingDateImplError('CDatetimeAdapter');\r\n }\r\n\r\n if (!this._dateFormats) {\r\n throw createMissingDateImplError('CMAT_DATETIME_FORMATS');\r\n }\r\n\r\n this._activeDate = this.adapter.today();\r\n\r\n this._elementRef.nativeElement.addEventListener('animationend', this._calendarAnimationListener);\r\n }\r\n\r\n\r\n /** The date to display in this year view (everything other than the year is ignored). */\r\n @Input()\r\n get activeDate(): D {\r\n return this._activeDate;\r\n }\r\n\r\n set activeDate(value: D) {\r\n const oldActiveDate = this._activeDate;\r\n this._activeDate = value || this.adapter.today();\r\n if (oldActiveDate && this._activeDate &&\r\n !this.adapter.sameYear(oldActiveDate, this._activeDate)) {\r\n this._init();\r\n\r\n if (this.adapter.isInNextMonth(oldActiveDate, this._activeDate)) {\r\n this._changeCalendarState('right');\r\n } else {\r\n this._changeCalendarState('left');\r\n }\r\n }\r\n }\r\n\r\n /** The currently selected date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get selected(): D {\r\n return this._selected;\r\n }\r\n\r\n set selected(value: D) {\r\n this._selected = value;\r\n this.selectedMonth = this._getMonthInCurrentYear(this.selected);\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._init();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._elementRef.nativeElement.removeEventListener('animationend', this._calendarAnimationListener);\r\n }\r\n\r\n /** Handles when a new month is selected. */\r\n monthSelected(month: number): void {\r\n const normalizedDate = this.adapter.createDatetime(this.adapter.getYear(this.activeDate), month, 1, 0, 0);\r\n\r\n this.selectedChange.emit(this.adapter.createDatetime(\r\n this.adapter.getYear(this.activeDate), month,\r\n Math.min(this.adapter.getDate(this.activeDate), this.adapter.getNumDaysInMonth(normalizedDate)),\r\n this.adapter.getHour(this.activeDate),\r\n this.adapter.getMinute(this.activeDate)));\r\n if (this.type === 'month') {\r\n this.userSelection.emit();\r\n }\r\n }\r\n\r\n calendarStateDone(event: AnimationEvent): void {\r\n if (event.animationName === 'slideCalendarLeft' || event.animationName === 'slideCalendarRight') {\r\n this.calendarState = '';\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n\r\n /** Initializes this month view. */\r\n private _init(): void {\r\n this.selectedMonth = this._getMonthInCurrentYear(this.selected);\r\n this.todayMonth = this._getMonthInCurrentYear(this.adapter.today());\r\n this.yearLabel = this.adapter.getYearName(this.activeDate);\r\n\r\n const monthNames = this.adapter.getMonthNames('short');\r\n // First row of months only contains 5 elements so we can fit the year label on the same row.\r\n this.months = [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9, 10, 11]].map(row => row.map(\r\n month => this._createCellForMonth(month, monthNames[month])));\r\n }\r\n\r\n /**\r\n * Gets the month in this year that the given Date falls on.\r\n * Returns null if the given Date is in another year.\r\n */\r\n private _getMonthInCurrentYear(date: D): number | null {\r\n return this.adapter.sameYear(date, this.activeDate) ?\r\n this.adapter.getMonth(date) : null;\r\n }\r\n\r\n /** Creates an MdCalendarCell for the given month. */\r\n private _createCellForMonth(month: number, monthName: string): CmatDatetimepickerCalendarCellComponent {\r\n const ariaLabel = this.adapter.format(\r\n this.adapter.createDatetime(this.adapter.getYear(this.activeDate), month, 1,\r\n this.adapter.getHour(this.activeDate),\r\n this.adapter.getMinute(this.activeDate)),\r\n this._dateFormats.display.monthYearA11yLabel);\r\n return new CmatDatetimepickerCalendarCellComponent(\r\n month, monthName.toLocaleUpperCase(), ariaLabel, this._isMonthEnabled(month));\r\n }\r\n\r\n /** Whether the given month is enabled. */\r\n private _isMonthEnabled(month: number): boolean {\r\n if (!this.dateFilter) {\r\n return true;\r\n }\r\n\r\n const firstOfMonth = this.adapter.createDatetime(\r\n this.adapter.getYear(this.activeDate), month, 1,\r\n this.adapter.getHour(this.activeDate),\r\n this.adapter.getMinute(this.activeDate));\r\n\r\n // If any date in the month is enabled count the month as enabled.\r\n for (let date = firstOfMonth; this.adapter.getMonth(date) === month;\r\n date = this.adapter.addCalendarDays(date, 1)) {\r\n if (this.dateFilter(date)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n private _changeCalendarState(direction: string): void {\r\n this.calendarState = direction;\r\n }\r\n\r\n}\r\n","<table class=\"cmat-datetimepicker-calendar-table\">\r\n <thead class=\"cmat-datetimepicker-calendar-table-header\"></thead>\r\n <tbody class=\"cmat-calendar-slide-animation\" cmat-datetimepicker-calendar-body role=\"grid\"\r\n [ngClass]=\"{\r\n 'left': calendarState==='left',\r\n 'right': calendarState==='right'\r\n }\" [activeCell]=\"adapter.getMonth(activeDate)\" [labelMinRequiredCells]=\"2\"\r\n [label]=\"yearLabel\" [rows]=\"months\" [selectedValue]=\"selectedMonth\" [todayValue]=\"todayMonth\"\r\n [allowDisabledSelection]=\"true\" (selectedValueChange)=\"monthSelected($event)\"></tbody>\r\n</table>","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { NgClass } from '@angular/common';\r\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnDestroy, Output, ViewEncapsulation, inject } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { CMAT_DATETIME_FORMATS, CmatDatetimeFormats, DatetimeAdapter } from 'cmat/components/adapter';\r\nimport { Subscription } from 'rxjs';\r\nimport { CmatDatetimepickerClockComponent } from './clock';\r\nimport { createMissingDateImplError } from './datetimepicker-errors';\r\nimport { CmatDatetimepickerFilterType } from './datetimepicker-filtertype';\r\nimport { CmatDatetimepickerIntl } from './datetimepicker-intl';\r\nimport { CmatAMPM, CmatCalendarView, CmatClockView, CmatDatetimepickerType } from './datetimepicker-types';\r\nimport { CmatDatetimepickerMonthViewComponent } from './month-view';\r\nimport { getActiveOffset, isSameMultiYearView, yearsPerPage, yearsPerRow, CmatDatetimepickerMultiYearViewComponent } from './multi-year-view';\r\nimport { CmatDatetimepickerTimeComponent } from './time';\r\nimport { CmatDatetimepickerYearViewComponent } from './year-view';\r\n\r\n/**\r\n * A calendar that is used as part of the datepicker.\r\n */\r\n@Component({\r\n selector: 'cmat-datetimepicker-calendar',\r\n templateUrl: 'calendar.html',\r\n styleUrls: ['calendar.scss', 'datetimepicker-base.scss'],\r\n host: {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n '[class.cmat-datetimepicker-calendar-with-time-input]': 'timeInput',\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatDatetimepickerCalendar',\r\n imports: [MatButtonModule, CmatDatetimepickerMonthViewComponent, CmatDatetimepickerYearViewComponent,\r\n CmatDatetimepickerMultiYearViewComponent, CmatDatetimepickerTimeComponent, CmatDatetimepickerClockComponent, NgClass]\r\n})\r\nexport class CmatDatetimepickerCalendarComponent<D> implements AfterContentInit, OnDestroy {\r\n @Output() userSelection = new EventEmitter<void>();\r\n /** Active multi year view when click on year. */\r\n @Input() multiYearSelector: boolean = false;\r\n /** Whether the calendar should be started in month or year view. */\r\n @Input() startView: CmatCalendarView = 'month';\r\n @Input() twelvehour: boolean = false;\r\n @Input() timeInterval: number = 1;\r\n /** A function used to filter which dates are selectable. */\r\n @Input() dateFilter: (date: D, type: CmatDatetimepickerFilterType) => boolean;\r\n\r\n /** Prevent user to select same date time */\r\n @Input() preventSameDateTimeSelection = false;\r\n /** Emits when the currently selected date changes. */\r\n @Output() selectedChange: EventEmitter<D> = new EventEmitter<D>();\r\n /** Emits when the view has been changed. **/\r\n @Output() viewChanged: EventEmitter<CmatCalendarView> = new EventEmitter<CmatCalendarView>();\r\n @HostBinding('class') class = 'cmat-datetimepicker-calendar';\r\n @HostBinding('attr.aria-label') label = 'ariaLabel';\r\n @HostBinding('role') role = 'dialog';\r\n @HostBinding('tabindex') tabindex = 0;\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n AMPM: CmatAMPM;\r\n clockView: CmatClockView = 'hour';\r\n calendarState: string;\r\n\r\n /** Whether the calendar is in month view. */\r\n private _elementRef = inject(ElementRef);\r\n private _intl = inject(CmatDatetimepickerIntl);\r\n private _adapter = inject<DatetimeAdapter<D>>(DatetimeAdapter, { optional: true })!;\r\n private _dateFormats = inject<CmatDatetimeFormats>(CMAT_DATETIME_FORMATS, { optional: true })!;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _currentView: CmatCalendarView;\r\n private _intlChanges: Subscription;\r\n private _clampedActiveDate: D;\r\n private _type: CmatDatetimepickerType = 'date';\r\n private _startAt: D | null;\r\n private _selected: D | null;\r\n private _minDate: D | null;\r\n private _maxDate: D | null;\r\n private _timeInput = false;\r\n private _calendarAnimationListener = this.calendarStateDone.bind(this);\r\n constructor() {\r\n const _intl = this._intl;\r\n const changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n if (!this._adapter) {\r\n throw createMissingDateImplError('CDatetimeAdapter');\r\n }\r\n\r\n if (!this._dateFormats) {\r\n throw createMissingDateImplError('CMAT_DATETIME_FORMATS');\r\n }\r\n\r\n this._intlChanges = _intl.changes\r\n .subscribe(() => changeDetectorRef.markForCheck());\r\n\r\n this._elementRef.nativeElement.addEventListener('animationend', this._calendarAnimationListener);\r\n }\r\n\r\n @Input()\r\n get type(): CmatDatetimepickerType {\r\n return this._type;\r\n }\r\n\r\n set type(value: CmatDatetimepickerType) {\r\n this._type = value || 'date';\r\n if (this.type === 'year') {\r\n this.multiYearSelector = true;\r\n }\r\n }\r\n\r\n /** A date representing the period (month or year) to start the calendar in. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get startAt(): D | null {\r\n return this._startAt;\r\n }\r\n\r\n set startAt(value: D | null) {\r\n this._startAt = this._adapter.getValidDateOrNull(value);\r\n }\r\n\r\n /**\r\n * Whether the calendar is in time mode. In time mode the calendar clock gets time input elements rather then just clock\r\n *\r\n * When touchUi is enabled this will be disabled\r\n */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get timeInput(): boolean {\r\n return this._timeInput;\r\n }\r\n set timeInput(value: boolean) {\r\n this._timeInput = coerceBooleanProperty(value);\r\n }\r\n\r\n /** The currently selected date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get selected(): D | null {\r\n return this._selected;\r\n }\r\n\r\n set selected(value: D | null) {\r\n this._selected = this._adapter.getValidDateOrNull(value);\r\n }\r\n\r\n /** The minimum selectable date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get minDate(): D | null {\r\n return this._minDate;\r\n }\r\n\r\n set minDate(value: D | null) {\r\n this._minDate = this._adapter.getValidDateOrNull(value);\r\n }\r\n\r\n /** The maximum selectable date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get maxDate(): D | null {\r\n return this._maxDate;\r\n }\r\n\r\n set maxDate(value: D | null) {\r\n this._maxDate = this._adapter.getValidDateOrNull(value);\r\n }\r\n\r\n /**\r\n * The current active date. This determines which time period is shown and which date is\r\n * highlighted when using keyboard navigation.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get activeDate(): D {\r\n return this._clampedActiveDate;\r\n }\r\n\r\n set activeDate(value: D) {\r\n const oldActiveDate = this._clampedActiveDate;\r\n this._clampedActiveDate = this._adapter.clampDate(value, this.minDate, this.maxDate);\r\n if (oldActiveDate && this._clampedActiveDate &&\r\n !this._adapter.sameMonthAndYear(oldActiveDate, this._clampedActiveDate)) {\r\n if (this._adapter.isInNextMonth(oldActiveDate, this._clampedActiveDate)) {\r\n this._changeCalendarState('right');\r\n } else {\r\n this._changeCalendarState('left');\r\n }\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get currentView(): CmatCalendarView {\r\n return this._currentView;\r\n }\r\n\r\n set currentView(view: CmatCalendarView) {\r\n this._currentView = view;\r\n this.viewChanged.emit(view);\r\n }\r\n\r\n /** The label for the current calendar view. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get yearButtonText(): string {\r\n return this._adapter.getYearName(this.activeDate);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get yearPeriodText(): string {\r\n\r\n if (this.currentView === 'multi-year') {\r\n // The offset from the active year to the \"slot\" for the starting year is the\r\n // *actual* first rendered year in the multi-year view, and the last year is\r\n // just yearsPerPage - 1 away.\r\n const activeYear = this._adapter.getYear(this.activeDate);\r\n const minYearOfPage = activeYear - getActiveOffset(\r\n this._adapter, this.activeDate, this.minDate, this.maxDate);\r\n const maxYearOfPage = minYearOfPage + yearsPerPage - 1;\r\n const minYearName =\r\n this._adapter.getYearName(this._adapter.createDate(minYearOfPage, 0, 1));\r\n const maxYearName =\r\n this._adapter.getYearName(this._adapter.createDate(maxYearOfPage, 0, 1));\r\n return this._intl.formatYearRange(minYearName, maxYearName);\r\n }\r\n\r\n return this.currentView === 'month' ? this._adapter.getMonthNames('long')[this._adapter.getMonth(this.activeDate)] :\r\n this._adapter.getYearName(this.activeDate);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get yearButtonLabel(): string {\r\n return this.multiYearSelector\r\n ? this._intl.switchToMultiYearViewLabel\r\n : this._intl.switchToYearViewLabel;\r\n }\r\n\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get dateButtonText(): string {\r\n switch (this.type) {\r\n case 'month':\r\n return this._adapter.getMonthNames('long')[this._adapter.getMonth(this.activeDate)];\r\n default:\r\n return this._adapter.format(this.activeDate, this._dateFormats.display.popupHeaderDateLabel);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get dateButtonLabel(): string {\r\n return this._intl.switchToMonthViewLabel;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get hoursButtonText(): string {\r\n let hour = this._adapter.getHour(this.activeDate);\r\n if (this.twelvehour) {\r\n if (hour === 0) {\r\n hour = 24;\r\n }\r\n hour = hour > 12 ? (hour - 12) : hour;\r\n }\r\n return this._2digit(hour);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get hourButtonLabel(): string {\r\n return this._intl.switchToClockHourViewLabel;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get minutesButtonText(): string {\r\n return this._2digit(this._adapter.getMinute(this.activeDate));\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get minuteButtonLabel(): string {\r\n return this._intl.switchToClockMinuteViewLabel;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get prevButtonLabel(): string {\r\n switch (this._currentView) {\r\n case 'month':\r\n return this._intl.prevMonthLabel;\r\n case 'year':\r\n return this._intl.prevYearLabel;\r\n case 'multi-year':\r\n return this._intl.prevMultiYearLabel;\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get nextButtonLabel(): string {\r\n switch (this._currentView) {\r\n case 'month':\r\n return this._intl.nextMonthLabel;\r\n case 'year':\r\n return this._intl.nextYearLabel;\r\n case 'multi-year':\r\n return this._intl.nextMultiYearLabel;\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n handleCalendarBodyKeydown(event: KeyboardEvent): void {\r\n if (this.currentView === 'month') {\r\n this._handleCalendarBodyKeydownInMonthView(event);\r\n } else if (this.currentView === 'year') {\r\n this._handleCalendarBodyKeydownInYearView(event);\r\n } else if (this.currentView === 'multi-year') {\r\n this._handleCalendarBodyKeydownInMultiYearView(event);\r\n } else {\r\n this._handleCalendarBodyKeydownInClockView(event);\r\n }\r\n }\r\n\r\n /** Date filter for the month and year views. */\r\n dateFilterForViews = (date: D): boolean => !!date &&\r\n (!this.dateFilter || this.dateFilter(date, CmatDatetimepickerFilterType.DATE)) &&\r\n (!this.minDate || this._adapter.compareDate(date, this.minDate) >= 0) &&\r\n (!this.maxDate || this._adapter.compareDate(date, this.maxDate) <= 0);\r\n\r\n userSelected(): void {\r\n this.userSelection.emit();\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.activeDate = this.startAt ?? this._adapter.today();\r\n this.selectAMPM(this.activeDate);\r\n this.focusActiveCell();\r\n if (this.type === 'year') {\r\n this.currentView = 'multi-year';\r\n } else if (this.type === 'month') {\r\n this.currentView = 'year';\r\n } else if (this.type === 'time') {\r\n this.currentView = 'clock';\r\n } else {\r\n this.currentView = this.startView || 'month';\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._elementRef.nativeElement.removeEventListener('animationend', this._calendarAnimationListener);\r\n\r\n this._intlChanges.unsubscribe();\r\n }\r\n\r\n /** Handles date selection in the month view. */\r\n dateSelected(date: D): void {\r\n if (this.type === 'date') {\r\n if (!this._adapter.sameDate(date, this.selected) || !this.preventSameDateTimeSelection) {\r\n this.selectedChange.emit(date);\r\n }\r\n } else {\r\n this.activeDate = date;\r\n this.currentView = 'clock';\r\n }\r\n }\r\n\r\n /** Handles month selection in the year view. */\r\n monthSelected(month: D): void {\r\n if (this.type === 'month') {\r\n if (!this._adapter.sameMonthAndYear(month, this.selected) || !this.preventSameDateTimeSelection) {\r\n this.selectedChange.emit(this._adapter.getFirstDateOfMonth(month));\r\n }\r\n } else {\r\n this.activeDate = month;\r\n this.currentView = 'month';\r\n this.clockView = 'hour';\r\n }\r\n }\r\n\r\n /** Handles year selection in the multi year view. */\r\n yearSelected(year: D): void {\r\n if (this.type === 'year') {\r\n if ((this.selected && !this._adapter.sameYear(year, this.selected)) || !this.preventSameDateTimeSelection) {\r\n const normalizedDate = this._adapter.createDatetime(this._adapter.getYear(year), 0, 1, 0, 0);\r\n this.selectedChange.emit(normalizedDate);\r\n }\r\n } else {\r\n this.activeDate = year;\r\n this.currentView = 'year';\r\n }\r\n }\r\n\r\n timeSelected(date: D): void {\r\n this.activeDate = this.updateDate(date);\r\n if (!this._adapter.sameDatetime(date, this.selected) || !this.preventSameDateTimeSelection) {\r\n this.selectedChange.emit(date);\r\n }\r\n }\r\n\r\n dialTimeSelected(date: D): void {\r\n if (this.clockView !== 'minute') {\r\n this.activeDate = this.updateDate(date);\r\n this.clockView = 'minute';\r\n } else {\r\n if (!this._adapter.sameDatetime(date, this.selected) || !this.preventSameDateTimeSelection) {\r\n this.selectedChange.emit(date);\r\n }\r\n }\r\n }\r\n\r\n onActiveDateChange(date: D): void {\r\n this.activeDate = date;\r\n }\r\n\r\n updateDate(date: D): D {\r\n if (this.twelvehour) {\r\n const HOUR = this._adapter.getHour(date);\r\n if (HOUR === 12) {\r\n if (this.AMPM === 'AM') {\r\n return this._adapter.addCalendarHours(date, -12);\r\n }\r\n } else if (this.AMPM === 'PM') {\r\n return this._adapter.addCalendarHours(date, 12);\r\n }\r\n }\r\n return date;\r\n }\r\n\r\n selectAMPM(date: D): void {\r\n if (this._adapter.getHour(date) > 11) {\r\n this.AMPM = 'PM';\r\n } else {\r\n this.AMPM = 'AM';\r\n }\r\n }\r\n\r\n ampmClicked(source: CmatAMPM): void {\r\n this._currentView = 'clock';\r\n\r\n if (source === this.AMPM) {\r\n return;\r\n }\r\n this.AMPM = source;\r\n\r\n // if AMPM changed from PM to AM substract 12 hours\r\n const currentHour = this._adapter.getHour(this.activeDate);\r\n let newHourValue: number;\r\n if (this.AMPM === 'AM') {\r\n newHourValue = currentHour >= 12 ? this._adapter.getHour(this.activeDate) - 12 : 12;\r\n }\r\n // otherwise add 12 hours\r\n else {\r\n newHourValue = (currentHour + 12) % 24;\r\n }\r\n\r\n this.activeDate = this._adapter.createDatetime(\r\n this._adapter.getYear(this.activeDate),\r\n this._adapter.getMonth(this.activeDate),\r\n this._adapter.getDate(this.activeDate),\r\n newHourValue,\r\n this._adapter.getMinute(this.activeDate)\r\n );\r\n }\r\n\r\n yearClicked(): void {\r\n if (this.type === 'year' || this.multiYearSelector) {\r\n this.currentView = 'multi-year';\r\n return;\r\n }\r\n this.currentView = 'year';\r\n }\r\n\r\n dateClicked(): void {\r\n if (this.type !== 'month') {\r\n this.currentView = 'month';\r\n }\r\n }\r\n\r\n hoursClicked(): void {\r\n this.currentView = 'clock';\r\n this.clockView = 'hour';\r\n }\r\n\r\n minutesClicked(): void {\r\n this.currentView = 'clock';\r\n this.clockView = 'minute';\r\n }\r\n\r\n /** Handles user clicks on the previous button. */\r\n previousClicked(): void {\r\n this.activeDate = this.currentView === 'month' ?\r\n this._adapter.addCalendarMonths(this.activeDate, -1) :\r\n this._adapter.addCalendarYears(\r\n this.activeDate, this.currentView === 'year' ? -1 : -yearsPerPage\r\n );\r\n }\r\n\r\n /** Handles user clicks on the next button. */\r\n nextClicked(): void {\r\n this.activeDate = this.currentView === 'month' ?\r\n this._adapter.addCalendarMonths(this.activeDate, 1) :\r\n this._adapter.addCalendarYears(\r\n this.activeDate, this.currentView === 'year' ? 1 : yearsPerPage\r\n );\r\n }\r\n\r\n /** Whether the previous period button is enabled. */\r\n previousEnabled(): boolean {\r\n if (!this.minDate) {\r\n return true;\r\n }\r\n return !this.minDate || !this._isSameView(this.activeDate, this.minDate);\r\n }\r\n\r\n /** Whether the next period button is enabled. */\r\n nextEnabled(): boolean {\r\n return !this.maxDate || !this._isSameView(this.activeDate, this.maxDate);\r\n }\r\n\r\n\r\n focusActiveCell(): void {\r\n this._elementRef.nativeElement.focus();\r\n }\r\n\r\n calendarStateDone(event: AnimationEvent): void {\r\n if (event.animationName === 'slideCalendarLeft' || event.animationName === 'slideCalendarRight') {\r\n this.calendarState = '';\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n\r\n /** Whether the two dates represent the same view in the current view mode (month or year). */\r\n private _isSameView(date1: D, date2: D): boolean {\r\n if (this.currentView === 'month') {\r\n return this._adapter.getYear(date1) === this._adapter.getYear(date2) &&\r\n this._adapter.getMonth(date1) === this._adapter.getMonth(date2);\r\n }\r\n if (this.currentView === 'year') {\r\n return this._adapter.getYear(date1) === this._adapter.getYear(date2);\r\n }\r\n // Otherwise we are in 'multi-year' view.\r\n return isSameMultiYearView(\r\n this._adapter, date1, date2, this.minDate, this.maxDate);\r\n }\r\n\r\n /** Handles keydown events on the calendar body when calendar is in month view. */\r\n private _handleCalendarBodyKeydownInMonthView(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'ArrowLeft':\r\n this.activeDate = this._adapter.addCalendarDays(this.activeDate, -1);\r\n break;\r\n case 'ArrowRight':\r\n this.activeDate = this._adapter.addCalendarDays(this.activeDate, 1);\r\n break;\r\n case 'ArrowUp':\r\n this.activeDate = this._adapter.addCalendarDays(this.activeDate, -7);\r\n break;\r\n case 'ArrowDown':\r\n this.activeDate = this._adapter.addCalendarDays(this.activeDate, 7);\r\n break;\r\n case 'Home':\r\n this.activeDate = this._adapter.addCalendarDays(this.activeDate,\r\n 1 - this._adapter.getDate(this.activeDate));\r\n break;\r\n case 'End':\r\n this.activeDate = this._adapter.addCalendarDays(this.activeDate,\r\n (this._adapter.getNumDaysInMonth(this.activeDate) -\r\n this._adapter.getDate(this.activeDate)));\r\n break;\r\n case 'PageUp':\r\n this.activeDate = event.altKey ?\r\n this._adapter.addCalendarYears(this.activeDate, -1) :\r\n this._adapter.addCalendarMonths(this.activeDate, -1);\r\n break;\r\n case 'PageDown':\r\n this.activeDate = event.altKey ?\r\n this._adapter.addCalendarYears(this.activeDate, 1) :\r\n this._adapter.addCalendarMonths(this.activeDate, 1);\r\n break;\r\n case 'Enter':\r\n if (this.dateFilterForViews(this.activeDate)) {\r\n this.dateSelected(this.activeDate);\r\n // Prevent unexpected default actions such as form submission.\r\n event.preventDefault();\r\n }\r\n return;\r\n default:\r\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\r\n return;\r\n }\r\n\r\n // Prevent unexpected default actions such as form submission.\r\n event.preventDefault();\r\n }\r\n\r\n /** Handles keydown events on the calendar body when calendar is in year view. */\r\n private _handleCalendarBodyKeydownInYearView(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'ArrowLeft':\r\n this.activeDate = this._adapter.addCalendarMonths(this.activeDate, -1);\r\n break;\r\n case 'ArrowRight':\r\n this.activeDate = this._adapter.addCalendarMonths(this.activeDate, 1);\r\n break;\r\n case 'ArrowUp':\r\n this.activeDate = this._prevMonthInSameCol(this.activeDate);\r\n break;\r\n case 'ArrowDown':\r\n this.activeDate = this._nextMonthInSameCol(this.activeDate);\r\n break;\r\n case 'Home':\r\n this.activeDate = this._adapter.addCalendarMonths(this.activeDate,\r\n -this._adapter.getMonth(this.activeDate));\r\n break;\r\n case 'End':\r\n this.activeDate = this._adapter.addCalendarMonths(this.activeDate,\r\n 11 - this._adapter.getMonth(this.activeDate));\r\n break;\r\n case 'PageUp':\r\n this.activeDate =\r\n this._adapter.addCalendarYears(this.activeDate, event.altKey ? -10 : -1);\r\n break;\r\n case 'PageDown':\r\n this.activeDate =\r\n this._adapter.addCalendarYears(this.activeDate, event.altKey ? 10 : 1);\r\n break;\r\n case 'Enter':\r\n this.monthSelected(this.activeDate);\r\n break;\r\n default:\r\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\r\n return;\r\n }\r\n\r\n // Prevent unexpected default actions such as form submission.\r\n event.preventDefault();\r\n }\r\n\r\n /** Handles keydown events on the calendar body when calendar is in multi-year view. */\r\n private _handleCalendarBodyKeydownInMultiYearView(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'ArrowLeft':\r\n this.activeDate = this._adapter.addCalendarYears(this.activeDate, -1);\r\n break;\r\n case 'ArrowRight':\r\n this.activeDate = this._adapter.addCalendarYears(this.activeDate, 1);\r\n break;\r\n case 'ArrowUp':\r\n this.activeDate = this._adapter.addCalendarYears(this.activeDate, -yearsPerRow);\r\n break;\r\n case 'ArrowDown':\r\n this.activeDate = this._adapter.addCalendarYears(this.activeDate, yearsPerRow);\r\n break;\r\n case 'Home':\r\n this.activeDate = this._adapter.addCalendarYears(this.activeDate,\r\n -getActiveOffset(this._adapter, this.activeDate, this.minDate, this.maxDate));\r\n break;\r\n case 'End':\r\n this.activeDate = this._adapter.addCalendarYears(this.activeDate,\r\n yearsPerPage - getActiveOffset(\r\n this._adapter, this.activeDate, this.minDate, this.maxDate) - 1);\r\n break;\r\n case 'PageUp':\r\n this.activeDate =\r\n this._adapter.addCalendarYears(\r\n this.activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);\r\n break;\r\n case 'PageDown':\r\n this.activeDate =\r\n this._adapter.addCalendarYears(\r\n this.activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);\r\n break;\r\n case 'Enter':\r\n this.yearSelected(this.activeDate);\r\n break;\r\n default:\r\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\r\n return;\r\n }\r\n }\r\n\r\n /** Handles keydown events on the calendar body when calendar is in month view. */\r\n private _handleCalendarBodyKeydownInClockView(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'ArrowUp':\r\n this.activeDate = this.clockView === 'hour' ?\r\n this._adapter.addCalendarHours(this.activeDate, 1) :\r\n this._adapter.addCalendarMinutes(this.activeDate, this.timeInterval);\r\n // if the hours changed the am/pm we should update the AM/PM\r\n this.selectAMPM(this.activeDate);\r\n break;\r\n case 'ArrowDown':\r\n this.activeDate = this.clockView === 'hour' ?\r\n this._adapter.addCalendarHours(this.activeDate, -1) :\r\n this._adapter.addCalendarMinutes(this.activeDate, -this.timeInterval);\r\n // if the hours changed the am/pm we should update the AM/PM\r\n this.selectAMPM(this.activeDate);\r\n break;\r\n case 'Enter':\r\n if (!this.timeInput) {\r\n this.dialTimeSelected(this.activeDate);\r\n }\r\n return;\r\n default:\r\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\r\n return;\r\n }\r\n\r\n // Prevent unexpected default actions such as form submission.\r\n event.preventDefault();\r\n }\r\n\r\n /**\r\n * Determine the date for the month that comes before the given month in the same column in the\r\n * calendar table.\r\n */\r\n private _prevMonthInSameCol(date: D): D {\r\n // Determine how many months to jump forward given that there are 2 empty slots at the beginning\r\n // of each year.\r\n const increment = this._adapter.getMonth(date) <= 4 ? -5 :\r\n (this._adapter.getMonth(date) >= 7 ? -7 : -12);\r\n return this._adapter.addCalendarMonths(date, increment);\r\n }\r\n\r\n /**\r\n * Determine the date for the month that comes after the given month in the same column in the\r\n * calendar table.\r\n */\r\n private _nextMonthInSameCol(date: D): D {\r\n // Determine how many months to jump forward given that there are 2 empty slots at the beginning\r\n // of each year.\r\n const increment = this._adapter.getMonth(date) <= 4 ? 7 :\r\n (this._adapter.getMonth(date) >= 7 ? 5 : 12);\r\n return this._adapter.addCalendarMonths(date, increment);\r\n }\r\n\r\n private _changeCalendarState(direction: string): void {\r\n this.calendarState = direction;\r\n }\r\n\r\n private _2digit(n: number): string {\r\n return ('00' + n).slice(-2);\r\n }\r\n}\r\n","<div class=\"cmat-datetimepicker-calendar-header\">\r\n @if (type !== 'time') {\r\n <div role=\"presentation\" class=\"cmat-datetimepicker-calendar-header-year header-button\"\r\n [class.active]=\"currentView === 'year' || currentView === 'multi-year'\" [attr.aria-label]=\"yearButtonLabel\"\r\n (click)=\"yearClicked()\">\r\n <span class=\"font-medium\">{{ yearButtonText }}</span>\r\n @if (multiYearSelector || type === 'year') {\r\n <svg class=\"cmat-datetimepicker-calendar-header-year-dropdown\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\">\r\n <path d=\"M7,10L12,15L17,10H7Z\"></path>\r\n </svg>\r\n }\r\n </div>\r\n }\r\n @if (type !== 'year') {\r\n <div class=\"cmat-datetimepicker-calendar-header-date-time\">\r\n @if (type !== 'time') {\r\n <div role=\"presentation\" class=\"cmat-datetimepicker-calendar-header-date header-button\"\r\n [class.active]=\"currentView === 'month'\" [class.not-clickable]=\"type === 'month'\"\r\n [attr.aria-label]=\"dateButtonLabel\" (click)=\"dateClicked()\">{{ dateButtonText }}</div>\r\n }\r\n @if (type.endsWith('time')) {\r\n <span class=\"cmat-datetimepicker-calendar-header-time\" [class.active]=\"currentView === 'clock'\">\r\n <span class=\"cmat-datetimepicker-calendar-header-hour-minute-container flex place-items-center\">\r\n <div role=\"presentation\" class=\"cmat-datetimepicker-calendar-header-hours header-button\"\r\n [class.active]=\"clockView === 'hour'\" [attr.aria-label]=\"hourButtonLabel\" (click)=\"hoursClicked()\">\r\n {{ hoursButtonText }}</div>\r\n <span class=\"cmat-datetimepicker-calendar-header-hour-minute-separator\">&#58;</span>\r\n <div role=\"presentation\" class=\"cmat-datetimepicker-calendar-header-minutes header-button\"\r\n [class.active]=\"clockView === 'minute'\" [attr.aria-label]=\"minuteButtonLabel\" (click)=\"minutesClicked()\">{{\r\n minutesButtonText }}</div>\r\n </span>\r\n @if (twelvehour) {\r\n <span class=\"cmat-datetimepicker-calendar-header-ampm-container flex place-items-center\">\r\n <div role=\"presentation\" class=\"cmat-datetimepicker-calendar-header-ampm header-button\" aria-label=\"AM\"\r\n [class.active]=\"AMPM === 'AM'\" (click)=\"ampmClicked('AM')\">AM</div>\r\n <div role=\"presentation\" class=\"cmat-datetimepicker-calendar-header-ampm header-button\" aria-label=\"PM\"\r\n [class.active]=\"AMPM === 'PM'\" (click)=\"ampmClicked('PM')\">PM</div>\r\n </span>\r\n }\r\n </span>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<div class=\"cmat-datetimepicker-calendar-content\" [ngClass]=\"{'flex flex-col justify-center': currentView==='clock'}\">\r\n @if (currentView === 'month' || currentView === 'year' || currentView === 'multi-year') {\r\n <div class=\"cmat-datetimepickermonth-content\">\r\n <div class=\"cmat-datetimepicker-calendar-controls\">\r\n <button matIconButton type=\"button\" class=\"cmat-datetimepicker-calendar-previous-button\"\r\n [class.disabled]=\"!previousEnabled()\" [attr.aria-disabled]=\"!previousEnabled()\"\r\n [attr.aria-label]=\"prevButtonLabel\" (click)=\"previousClicked()\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"></path>\r\n </svg>\r\n </button>\r\n <div class=\"cmat-datetimepicker-calendar-period-button text-default font-medium cmat-calendar-slide-animation\"\r\n [ngClass]=\"{\r\n 'left': calendarState==='left',\r\n 'right': calendarState==='right'\r\n }\">\r\n <strong>{{ yearPeriodText }}</strong>\r\n </div>\r\n <button type=\"button\" matIconButton class=\"cmat-datetimepicker-calendar-next-button\"\r\n [class.disabled]=\"!nextEnabled()\" [attr.aria-disabled]=\"!nextEnabled()\" [attr.aria-label]=\"nextButtonLabel\"\r\n (click)=\"nextClicked()\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"></path>\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n }\r\n\r\n @switch (currentView) {\r\n @case ('month') {\r\n <cmat-datetimepicker-month-view [activeDate]=\"activeDate\" [dateFilter]=\"dateFilterForViews\" [selected]=\"selected!\"\r\n [type]=\"type\" (userSelection)=\"userSelected()\" (selectedChange)=\"dateSelected($event)\">\r\n </cmat-datetimepicker-month-view>\r\n }\r\n @case ('year') {\r\n <cmat-datetimepicker-year-view [activeDate]=\"activeDate\" [dateFilter]=\"dateFilterForViews\" [selected]=\"selected!\"\r\n [type]=\"type\" (userSelection)=\"userSelected()\" (selectedChange)=\"monthSelected($event)\">\r\n </cmat-datetimepicker-year-view>\r\n }\r\n @case ('multi-year') {\r\n <cmat-datetimepicker-multi-year-view [activeDate]=\"activeDate\" [dateFilter]=\"dateFilterForViews\" [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\" [selected]=\"selected!\" [type]=\"type\" (userSelection)=\"userSelected()\"\r\n (selectedChange)=\"yearSelected($event)\">\r\n </cmat-datetimepicker-multi-year-view>\r\n }\r\n @default {\r\n @if (timeInput) {\r\n <cmat-datetimepicker-time [AMPM]=\"AMPM\" [clockView]=\"clockView\" [twelvehour]=\"twelvehour\" [dateFilter]=\"dateFilter\"\r\n [interval]=\"timeInterval\" [maxDate]=\"maxDate\" [minDate]=\"minDate\" [selected]=\"activeDate\"\r\n (userSelection)=\"userSelected()\" (activeDateChange)=\"onActiveDateChange($event)\"\r\n (selectedChange)=\"timeSelected($event)\" (ampmChange)=\"ampmClicked($event)\" (clockViewChange)=\"clockView = $event\">\r\n </cmat-datetimepicker-time>\r\n } @else {\r\n <cmat-datetimepicker-clock [dateFilter]=\"dateFilter\" [interval]=\"timeInterval\" [maxDate]=\"maxDate\" [minDate]=\"minDate\"\r\n [selected]=\"activeDate\" [startView]=\"clockView\" [twelvehour]=\"twelvehour\" (userSelection)=\"userSelected()\"\r\n (activeDateChange)=\"onActiveDateChange($event)\" (selectedChange)=\"dialTimeSelected($event)\">\r\n </cmat-datetimepicker-clock>\r\n }\r\n }\r\n }\r\n</div>","import { A11yModule } from '@angular/cdk/a11y';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { coerceBooleanProperty, coerceStringArray } from '@angular/cdk/coercion';\r\nimport { hasModifierKey } from '@angular/cdk/keycodes';\r\nimport { FlexibleConnectedPositionStrategy, GlobalPositionStrategy, Overlay, OverlayConfig, OverlayRef, ScrollStrategy } from '@angular/cdk/overlay';\r\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { NgClass } from '@angular/common';\r\nimport { AfterContentInit, afterNextRender, ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentRef, ElementRef, EventEmitter, InjectionToken, Injector, Input, OnDestroy, OnInit, Output, ViewChild, ViewContainerRef, ViewEncapsulation, DOCUMENT, inject } from '@angular/core';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { DatetimeAdapter } from 'cmat/components/adapter';\r\nimport { Subject, Subscription, merge } from 'rxjs';\r\nimport { filter, take } from 'rxjs/operators';\r\nimport { CmatDatetimepickerCalendarComponent } from './calendar';\r\nimport { createMissingDateImplError } from './datetimepicker-errors';\r\nimport { CmatDatetimepickerFilterType } from './datetimepicker-filtertype';\r\nimport { CmatDatetimepickerInputDirective } from './datetimepicker-input';\r\nimport { CmatCalendarView, CmatDatetimepickerMode, CmatDatetimepickerType, DatetimepickerDropdownPositionX, DatetimepickerDropdownPositionY } from './datetimepicker-types';\r\n\r\n/** Used to generate a unique ID for each datepicker instance. */\r\nlet datetimepickerUid = 0;\r\n\r\n/** Injection token that determines the scroll handling while the calendar is open. */\r\nexport const CMAT_DATETIMEPICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\r\n 'cmat-datetimepicker-scroll-strategy'\r\n);\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function CMAT_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\r\n return () => overlay.scrollStrategies.reposition();\r\n}\r\n\r\nexport const CMAT_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\r\n provide: CMAT_DATETIMEPICKER_SCROLL_STRATEGY,\r\n deps: [Overlay],\r\n useFactory: CMAT_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY\r\n};\r\n\r\n@Component({\r\n selector: 'cmat-datetimepicker-content',\r\n templateUrl: 'datetimepicker-content.html',\r\n host: {\r\n 'class': 'cmat-datetimepicker-content cmat-datetimepicker-transform-panel',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n '[class]': 'color ? \"mat-\" + color : \"\"',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n '[class.enter-dropdown]': 'animationState === \"enter-dropdown\"',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n '[class.enter-dialog]': 'animationState === \"enter-dialog\"',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n '[class.leave]': 'animationState === \"leave\"',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n '[class.cmat-datetimepicker-content-touch]': 'datetimepicker?.touchUi',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n '[attr.mode]': 'datetimepicker.mode'\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatDatetimepickerContent',\r\n imports: [A11yModule, CmatDatetimepickerCalendarComponent, NgClass]\r\n})\r\nexport class CmatDatetimepickerContentComponent<D> implements OnInit, AfterContentInit, OnDestroy {\r\n @ViewChild(CmatDatetimepickerCalendarComponent, { static: true }) _calendar!: CmatDatetimepickerCalendarComponent<D>;\r\n @Input() color: ThemePalette;\r\n\r\n datetimepicker!: CmatDatetimepickerComponent<D>;\r\n\r\n /** Whether the datetimepicker is above or below the input. */\r\n isAbove!: boolean;\r\n\r\n /** Current state of the animation. */\r\n animationState!: 'enter-dropdown' | 'enter-dialog' | 'leave';\r\n\r\n /** Emits when an animation has finished. */\r\n readonly animationDone = new Subject<void>();\r\n\r\n /** Id of the label for the `role=\"dialog\"` element. */\r\n dialogLabelId: string | null = null;\r\n\r\n protected _elementRef = inject(ElementRef);\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _animationEndListener: ((event: AnimationEvent) => void) | null = null;\r\n\r\n ngOnInit(): void {\r\n this.animationState = this.datetimepicker.touchUi ? 'enter-dialog' : 'enter-dropdown';\r\n\r\n this._animationEndListener = (event: AnimationEvent): void => {\r\n if (event.animationName === 'panel-dropdown-enter' || event.animationName === 'panel-dialog-enter' || event.animationName === 'panel-leave') {\r\n this.animationDone.next();\r\n }\r\n };\r\n\r\n this._elementRef.nativeElement.addEventListener('animationend', this._animationEndListener);\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._calendar.focusActiveCell();\r\n }\r\n\r\n startExitAnimation(): void {\r\n this.animationState = 'leave';\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.animationDone.complete();\r\n\r\n this._elementRef.nativeElement.removeEventListener('animationend', this._animationEndListener);\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'cmat-datetimepicker',\r\n exportAs: 'cmatDatetimepicker',\r\n template: '',\r\n styleUrls: ['datetimepicker.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false\r\n})\r\nexport class CmatDatetimepickerComponent<D> implements OnDestroy {\r\n /** The view that the calendar should start in. */\r\n @Input() startView: CmatCalendarView = 'month';\r\n @Input() mode: CmatDatetimepickerMode = 'auto';\r\n @Input() timeInterval: number = 1;\r\n /** Prevent user to select same date time */\r\n @Input() preventSameDateTimeSelection = false;\r\n\r\n /** Preferred position of the datetimepicker in the X axis. */\r\n @Input()\r\n xPosition: DatetimepickerDropdownPositionX = 'start';\r\n\r\n /** Preferred position of the datetimepicker in the Y axis. */\r\n @Input()\r\n yPosition: DatetimepickerDropdownPositionY = 'below';\r\n\r\n @Output() selectedChanged = new EventEmitter<D>();\r\n /** Emits when the datepicker has been opened. */\r\n @Output() openedStream: EventEmitter<void> = new EventEmitter<void>();\r\n /** Emits when the datepicker has been closed. */\r\n @Output() closedStream: EventEmitter<void> = new EventEmitter<void>();\r\n /** Emits when the view has been changed. **/\r\n @Output() viewChanged: EventEmitter<CmatCalendarView> = new EventEmitter<CmatCalendarView>();\r\n /** Whether the calendar is open. */\r\n\r\n /** The id for the datepicker calendar. */\r\n id = `cmat-datetimepicker-${datetimepickerUid++}`;\r\n /** The input element this datepicker is associated with. */\r\n datetimepickerInput: CmatDatetimepickerInputDirective<D>;\r\n /** Emits when the datepicker is disabled. */\r\n disabledChange = new Subject<boolean>();\r\n\r\n private _overlay = inject(Overlay);\r\n private _injector = inject(Injector);\r\n private _viewContainerRef = inject(ViewContainerRef);\r\n private _scrollStrategy = inject(CMAT_DATETIMEPICKER_SCROLL_STRATEGY);\r\n private _dateAdapter = inject<DatetimeAdapter<D>>(DatetimeAdapter, { optional: true })!;\r\n private _dir = inject(Directionality, { optional: true })!;\r\n private _document = inject(DOCUMENT, { optional: true })!;\r\n\r\n\r\n private _validSelected: D | null = null;\r\n\r\n /** A reference to the overlay into which we've rendered the calendar. */\r\n private _overlayRef!: OverlayRef | null;\r\n\r\n /** Reference to the component instance rendered in the overlay. */\r\n private _componentRef!: ComponentRef<CmatDatetimepickerContentComponent<D>> | null;\r\n\r\n /** The element that was focused before the datetimepicker was opened. */\r\n private _focusedElementBeforeOpen: HTMLElement | null = null;\r\n\r\n /** Unique class that will be added to the backdrop so that the test harnesses can look it up. */\r\n private _backdropHarnessClass = `${this.id}-backdrop`;\r\n\r\n private _inputStateChanges = Subscription.EMPTY;\r\n\r\n private _multiYearSelector = false;\r\n private _twelvehour = false;\r\n private _panelClass!: string[];\r\n private _opened = false;\r\n private _color: ThemePalette;\r\n private _startAt: D | null;\r\n private _type: CmatDatetimepickerType = 'datetime';\r\n private _touchUi = false;\r\n private _disabled: boolean;\r\n private _timeInput = true;\r\n private _restoreFocus = true;\r\n\r\n\r\n\r\n constructor() {\r\n if (!this._dateAdapter) {\r\n throw createMissingDateImplError('DatetimeAdapter');\r\n }\r\n }\r\n\r\n /** Whether to show multi-year view. */\r\n @Input()\r\n get multiYearSelector(): boolean {\r\n return this._multiYearSelector;\r\n }\r\n set multiYearSelector(value: boolean) {\r\n this._multiYearSelector = coerceBooleanProperty(value);\r\n }\r\n\r\n /** Whether the clock uses 12 hour format. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get twelvehour(): boolean {\r\n return this._twelvehour;\r\n }\r\n set twelvehour(value: boolean) {\r\n this._twelvehour = coerceBooleanProperty(value);\r\n }\r\n\r\n /**\r\n * Classes to be passed to the date picker panel.\r\n * Supports string and string array values, similar to `ngClass`.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get panelClass(): string | string[] {\r\n return this._panelClass;\r\n }\r\n set panelClass(value: string | string[]) {\r\n this._panelClass = coerceStringArray(value);\r\n }\r\n\r\n /** Whether the calendar is open. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get opened(): boolean {\r\n return this._opened;\r\n }\r\n set opened(value: boolean) {\r\n coerceBooleanProperty(value) ? this.open() : this.close();\r\n }\r\n\r\n /** Color palette to use on the datetimepicker's calendar. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get color(): ThemePalette {\r\n return (\r\n this._color ??\r\n (this.datetimepickerInput ? this.datetimepickerInput.getThemePalette() : undefined)\r\n );\r\n }\r\n set color(value: ThemePalette) {\r\n this._color = value;\r\n }\r\n\r\n /** The date to open the calendar to initially. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get startAt(): D | null {\r\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\r\n // selected value is.\r\n return this._startAt ?? (this.datetimepickerInput ? this.datetimepickerInput.value : null);\r\n }\r\n\r\n set startAt(date: D | null) {\r\n this._startAt = this._dateAdapter.getValidDateOrNull(date);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get type(): CmatDatetimepickerType {\r\n return this._type;\r\n }\r\n\r\n set type(value: CmatDatetimepickerType) {\r\n this._type = value || 'datetime';\r\n }\r\n\r\n /**\r\n * Whether the calendar is in time mode. In time mode the calendar clock gets time input\r\n * elements rather then just clock. When `touchUi` is enabled this will be disabled.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get timeInput(): boolean {\r\n return this._timeInput && !this.touchUi;\r\n }\r\n set timeInput(value: boolean) {\r\n this._timeInput = coerceBooleanProperty(value);\r\n }\r\n\r\n /**\r\n * Whether the calendar UI is in touch mode. In touch mode the calendar opens in a dialog rather\r\n * than a popup and elements have more padding to allow for bigger touch targets.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get touchUi(): boolean {\r\n return this._touchUi;\r\n }\r\n\r\n set touchUi(value: boolean) {\r\n this._touchUi = coerceBooleanProperty(value);\r\n }\r\n\r\n /** Whether the datepicker pop-up should be disabled. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled === undefined && this.datetimepickerInput ?\r\n this.datetimepickerInput.disabled : !!this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n const newValue = coerceBooleanProperty(value);\r\n\r\n if (newValue !== this._disabled) {\r\n this._disabled = newValue;\r\n this.disabledChange.next(newValue);\r\n }\r\n }\r\n\r\n /**\r\n * Whether to restore focus to the previously-focused element when the panel is closed.\r\n * Note that automatic focus restoration is an accessibility feature and it is recommended that\r\n * you provide your own equivalent, if you decide to turn it off.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get restoreFocus(): boolean {\r\n return this._restoreFocus;\r\n }\r\n set restoreFocus(value: boolean) {\r\n this._restoreFocus = coerceBooleanProperty(value);\r\n }\r\n\r\n /** The currently selected date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get selected(): D | null {\r\n return this._validSelected;\r\n }\r\n\r\n set selected(value: D | null) {\r\n this._validSelected = value;\r\n }\r\n\r\n /** The minimum selectable date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get minDate(): D | null {\r\n return this.datetimepickerInput?.min;\r\n }\r\n\r\n /** The maximum selectable date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get maxDate(): D | null {\r\n return this.datetimepickerInput?.max;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get dateFilter(): (date: D | null, type: CmatDatetimepickerFilterType) => boolean {\r\n return this.datetimepickerInput?.dateFilter;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._destroyOverlay();\r\n this.close();\r\n this._inputStateChanges.unsubscribe();\r\n this.disabledChange.complete();\r\n }\r\n\r\n /**\r\n * Register an input with this datepicker.\r\n *\r\n * @param input The datepicker input to register with this datepicker.\r\n */\r\n registerInput(input: CmatDatetimepickerInputDirective<D>): void {\r\n if (this.datetimepickerInput) {\r\n throw Error('A MatDatepicker can only be associated with a single input.');\r\n }\r\n this.datetimepickerInput = input;\r\n this._inputStateChanges =\r\n this.datetimepickerInput.valueChange.subscribe((value: D | null) => this.selected = value);\r\n }\r\n\r\n\r\n /** Open the calendar. */\r\n open(): void {\r\n if (this.opened || this.disabled) {\r\n return;\r\n }\r\n if (!this.datetimepickerInput) {\r\n throw Error('Attempted to open an MatDatepicker with no associated input.');\r\n }\r\n\r\n this._focusedElementBeforeOpen = _getFocusedElementPierceShadowDom();\r\n this._openOverlay();\r\n this._opened = true;\r\n this.openedStream.emit();\r\n }\r\n\r\n /** Close the calendar. */\r\n close(): void {\r\n if (!this._opened) {\r\n return;\r\n }\r\n\r\n const canRestoreFocus =\r\n this._restoreFocus &&\r\n this._focusedElementBeforeOpen &&\r\n typeof this._focusedElementBeforeOpen.focus === 'function';\r\n\r\n const completeClose = (): void => {\r\n // The `_opened` could've been reset already if\r\n // we got two events in quick succession.\r\n if (this._opened) {\r\n this._opened = false;\r\n this.closedStream.emit();\r\n }\r\n };\r\n\r\n if (this._componentRef) {\r\n const { instance, location } = this._componentRef;\r\n instance.startExitAnimation();\r\n instance.animationDone.pipe(take(1)).subscribe(() => {\r\n const activeElement = this._document.activeElement;\r\n\r\n // Since we restore focus after the exit animation, we have to check that\r\n // the user didn't move focus themselves inside the `close` handler.\r\n if (\r\n canRestoreFocus &&\r\n (!activeElement ||\r\n activeElement === this._document.activeElement ||\r\n location.nativeElement.contains(activeElement))\r\n ) {\r\n this._focusedElementBeforeOpen?.focus();\r\n }\r\n\r\n this._focusedElementBeforeOpen = null;\r\n this._destroyOverlay();\r\n });\r\n }\r\n\r\n if (canRestoreFocus) {\r\n // Because IE moves focus asynchronously, we can't count on it being restored before we've\r\n // marked the datepicker as closed. If the event fires out of sequence and the element that\r\n // we're refocusing opens the datepicker on focus, the user could be stuck with not being\r\n // able to close the calendar at all. We work around it by making the logic, that marks\r\n // the datepicker as closed, async as well.\r\n setTimeout(completeClose);\r\n } else {\r\n completeClose();\r\n }\r\n }\r\n /** Selects the given date */\r\n select(date: D): void {\r\n const oldValue = this.selected;\r\n this.selected = date;\r\n if (!this._dateAdapter.sameDatetime(oldValue, this.selected)) {\r\n this.selectedChanged.emit(date);\r\n }\r\n }\r\n\r\n viewChange(type: CmatCalendarView): void {\r\n this.viewChanged.emit(type);\r\n }\r\n\r\n /**\r\n * relevant values from the datetimepicker to the\r\n * datetimepicker content inside the overlay.\r\n */\r\n private _forwardContentValues(instance: CmatDatetimepickerContentComponent<D>): void {\r\n instance.datetimepicker = this;\r\n instance.color = this.color;\r\n instance.dialogLabelId = this.datetimepickerInput.getOverlayLabelId();\r\n }\r\n\r\n /** Opens the overlay with the calendar. */\r\n private _openOverlay(): void {\r\n this._destroyOverlay();\r\n\r\n const isDialog = this.touchUi;\r\n const labelId = this.datetimepickerInput.getOverlayLabelId();\r\n\r\n const portal = new ComponentPortal<CmatDatetimepickerContentComponent<D>>(\r\n CmatDatetimepickerContentComponent,\r\n this._viewContainerRef\r\n );\r\n const overlayRef = (this._overlayRef = this._overlay.create(\r\n new OverlayConfig({\r\n positionStrategy: isDialog ? this._getDialogStrategy() : this._getDropdownStrategy(),\r\n hasBackdrop: true,\r\n backdropClass: [\r\n isDialog ? 'cdk-overlay-dark-backdrop' : 'mat-overlay-transparent-backdrop',\r\n this._backdropHarnessClass,\r\n ],\r\n direction: this._dir,\r\n scrollStrategy: isDialog ? this._overlay.scrollStrategies.block() : this._scrollStrategy(),\r\n panelClass: `cmat-datetimepicker-${isDialog ? 'dialog' : 'popup'}`,\r\n })\r\n ));\r\n\r\n const overlayElement = overlayRef.overlayElement;\r\n overlayElement.setAttribute('role', 'dialog');\r\n\r\n if (labelId) {\r\n overlayElement.setAttribute('aria-labelledby', labelId);\r\n }\r\n\r\n if (isDialog) {\r\n overlayElement.setAttribute('aria-modal', 'true');\r\n }\r\n\r\n this._getCloseStream(overlayRef).subscribe((event: { preventDefault: VoidFunction }) => {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.close();\r\n });\r\n\r\n this._componentRef = overlayRef.attach(portal);\r\n this._forwardContentValues(this._componentRef.instance);\r\n\r\n // Update the position once the calendar has rendered. Only relevant in dropdown mode.\r\n if (!isDialog) {\r\n afterNextRender(\r\n () => {\r\n overlayRef.updatePosition();\r\n },\r\n { injector: this._injector }\r\n );\r\n\r\n }\r\n }\r\n\r\n /** Destroys the current overlay. */\r\n private _destroyOverlay(): void {\r\n if (this._overlayRef) {\r\n this._overlayRef.dispose();\r\n this._overlayRef = this._componentRef = null;\r\n }\r\n }\r\n\r\n /** Gets a position strategy that will open the calendar as a dropdown. */\r\n private _getDialogStrategy(): GlobalPositionStrategy {\r\n return this._overlay.position().global().centerHorizontally().centerVertically();\r\n }\r\n\r\n /** Gets a position strategy that will open the calendar as a dropdown. */\r\n private _getDropdownStrategy(): FlexibleConnectedPositionStrategy {\r\n const strategy = this._overlay\r\n .position()\r\n .flexibleConnectedTo(this.datetimepickerInput.getConnectedOverlayOrigin())\r\n .withTransformOriginOn('.cmat-datetimepicker-content')\r\n .withFlexibleDimensions(false)\r\n .withViewportMargin(8)\r\n .withLockedPosition();\r\n\r\n return this._setConnectedPositions(strategy);\r\n }\r\n\r\n /**\r\n * Sets the positions of the datetimepicker in dropdown mode based on the current configuration.\r\n */\r\n private _setConnectedPositions(strategy: FlexibleConnectedPositionStrategy): FlexibleConnectedPositionStrategy {\r\n const primaryX = this.xPosition === 'end' ? 'end' : 'start';\r\n const secondaryX = primaryX === 'start' ? 'end' : 'start';\r\n const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';\r\n const secondaryY = primaryY === 'top' ? 'bottom' : 'top';\r\n\r\n return strategy.withPositions([\r\n {\r\n originX: primaryX,\r\n originY: secondaryY,\r\n overlayX: primaryX,\r\n overlayY: primaryY,\r\n },\r\n {\r\n originX: primaryX,\r\n originY: primaryY,\r\n overlayX: primaryX,\r\n overlayY: secondaryY,\r\n },\r\n {\r\n originX: secondaryX,\r\n originY: secondaryY,\r\n overlayX: secondaryX,\r\n overlayY: primaryY,\r\n },\r\n {\r\n originX: secondaryX,\r\n originY: primaryY,\r\n overlayX: secondaryX,\r\n overlayY: secondaryY,\r\n },\r\n ]);\r\n }\r\n\r\n /** Gets an observable that will emit when the overlay is supposed to be closed. */\r\n private _getCloseStream(overlayRef: OverlayRef): any {\r\n return merge(\r\n overlayRef.backdropClick(),\r\n overlayRef.detachments(),\r\n overlayRef.keydownEvents().pipe(\r\n filter(event =>\r\n // Closing on alt + up is only valid when there's an input associated with the datetimepicker.\r\n (\r\n (event.code === 'Escape' && !hasModifierKey(event)) ||\r\n (this.datetimepickerInput &&\r\n hasModifierKey(event, 'altKey') &&\r\n event.code === 'ArrowUp')\r\n )\r\n )\r\n )\r\n );\r\n }\r\n}\r\n","<div cdkTrapFocus role=\"dialog\" class=\"cmat-datetimepicker-content-container\" [attr.aria-modal]=\"true\"\r\n [attr.aria-labelledby]=\"dialogLabelId ?? undefined\" [attr.mode]=\"datetimepicker.mode\">\r\n <cmat-datetimepicker-calendar [id]=\"datetimepicker.id\"\r\n [ngClass]=\"datetimepicker.panelClass\" [attr.mode]=\"datetimepicker.mode\" [type]=\"datetimepicker.type\"\r\n [startAt]=\"datetimepicker.startAt\" [startView]=\"datetimepicker.startView\" [maxDate]=\"datetimepicker.maxDate\"\r\n [minDate]=\"datetimepicker.minDate\" [dateFilter]=\"datetimepicker.dateFilter\"\r\n [multiYearSelector]=\"datetimepicker.multiYearSelector\"\r\n [preventSameDateTimeSelection]=\"datetimepicker.preventSameDateTimeSelection\"\r\n [timeInterval]=\"datetimepicker.timeInterval\" [twelvehour]=\"datetimepicker.twelvehour\"\r\n [selected]=\"datetimepicker.selected\" [timeInput]=\"datetimepicker.timeInput\"\r\n (selectedChange)=\"datetimepicker.select($event)\" (viewChanged)=\"datetimepicker.viewChange($event)\"\r\n (userSelection)=\"datetimepicker.close()\">\r\n </cmat-datetimepicker-calendar>\r\n</div>","/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { AfterContentInit, Directive, ElementRef, EventEmitter, forwardRef, Input, OnDestroy, Output, inject } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n Validators\r\n} from '@angular/forms';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { MatFormField } from '@angular/material/form-field';\r\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\r\nimport { DatetimeAdapter, CMAT_DATETIME_FORMATS, CmatDatetimeFormats } from 'cmat/components/adapter';\r\nimport { Subscription } from 'rxjs';\r\nimport { CmatDatetimepickerComponent } from './datetimepicker';\r\nimport { createMissingDateImplError } from './datetimepicker-errors';\r\nimport { CmatDatetimepickerFilterType } from './datetimepicker-filtertype';\r\n\r\nexport const CMAT_DATETIMEPICKER_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CmatDatetimepickerInputDirective),\r\n multi: true\r\n};\r\n\r\nexport const CMAT_DATETIMEPICKER_VALIDATORS: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => CmatDatetimepickerInputDirective),\r\n multi: true\r\n};\r\n\r\n/**\r\n * An event used for datepicker input and change events. We don't always have access to a native\r\n * input or change event because the event may have been triggered by the user clicking on the\r\n * calendar popup. For consistency, we always use MatDatepickerInputEvent instead.\r\n */\r\nexport class CmatDatetimepickerInputEvent<D> {\r\n /** The new value for the target datepicker input. */\r\n value: D | null;\r\n\r\n constructor(public target: CmatDatetimepickerInputDirective<D>, public targetElement: HTMLElement) {\r\n this.value = this.target.value;\r\n }\r\n}\r\n\r\n/** Directive used to connect an input to a MatDatepicker. */\r\n@Directive({\r\n selector: 'input[cmatDatetimepicker]',\r\n providers: [\r\n CMAT_DATETIMEPICKER_VALUE_ACCESSOR,\r\n CMAT_DATETIMEPICKER_VALIDATORS,\r\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: CmatDatetimepickerInputDirective },\r\n ],\r\n \r\n host: {\r\n '[attr.aria-haspopup]': 'true',\r\n '[attr.aria-owns]': '(datetimepicker?.opened && datetimepicker.id) || null',\r\n '[attr.min]': 'min ? datetimepicker.toIso8601(min) : null',\r\n '[attr.max]': 'max ? datetimepicker.toIso8601(max) : null',\r\n '[disabled]': 'disabled',\r\n '(input)': 'onInput($event.target.value)',\r\n '(change)': 'onChange()',\r\n '(blur)': 'onBlur()',\r\n '(keydown)': 'onKeydown($event)'\r\n },\r\n exportAs: 'cmatDatepickerInput'\r\n})\r\nexport class CmatDatetimepickerInputDirective<D> implements AfterContentInit, ControlValueAccessor, OnDestroy,\r\n Validator { \r\n /** Emits when a `change` event is fired on this `<input>`. */\r\n @Output() dateChange = new EventEmitter<CmatDatetimepickerInputEvent<D>>();\r\n /** Emits when an `input` event is fired on this `<input>`. */\r\n @Output() dateInput = new EventEmitter<CmatDatetimepickerInputEvent<D>>();\r\n\r\n datetimepicker: CmatDatetimepickerComponent<D>;\r\n dateFilter: (date: D | null, type: CmatDatetimepickerFilterType) => boolean;\r\n\r\n /** Emits when the value changes (either due to user input or programmatic change). */\r\n valueChange = new EventEmitter<D | null>();\r\n /** Emits when the disabled state has changed */\r\n disabledChange = new EventEmitter<boolean>();\r\n\r\n private _elementRef = inject(ElementRef);\r\n private _dateAdapter = inject<DatetimeAdapter<D>>(DatetimeAdapter, { optional: true })!;\r\n private _dateFormats = inject<CmatDatetimeFormats>(CMAT_DATETIME_FORMATS, { optional: true })!;\r\n private _formField = inject(MatFormField, { optional: true })!;\r\n\r\n private _datepickerSubscription = Subscription.EMPTY;\r\n private _localeSubscription = Subscription.EMPTY;\r\n /** Whether the last value set on the input was valid. */\r\n private _lastValueValid = false;\r\n private _value: D | null;\r\n private _min: D | null;\r\n private _max: D | null;\r\n private _disabled: boolean;\r\n\r\n \r\n\r\n constructor() {\r\n const _dateAdapter = this._dateAdapter;\r\n\r\n if (!this._dateAdapter) {\r\n throw createMissingDateImplError('CDatetimeAdapter');\r\n }\r\n if (!this._dateFormats) {\r\n throw createMissingDateImplError('CMAT_DATETIME_FORMATS');\r\n }\r\n\r\n // Update the displayed date when the locale changes.\r\n this._localeSubscription = _dateAdapter.localeChanges.subscribe();\r\n }\r\n\r\n /** The datepicker that this input is associated with. */\r\n @Input()\r\n set cmatDatetimepicker(value: CmatDatetimepickerComponent<D>) {\r\n this._registerDatetimepicker(value);\r\n }\r\n\r\n @Input() set cmatDatepickerFilter(filter: (date: D | null, type: CmatDatetimepickerFilterType) => boolean) {\r\n this.dateFilter = filter;\r\n this._validatorOnChange();\r\n }\r\n\r\n\r\n\r\n /** The value of the input. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get value(): D | null {\r\n return this._value;\r\n }\r\n\r\n set value(value: D | null) {\r\n value = this._dateAdapter.deserialize(value);\r\n this._lastValueValid = !value || this._dateAdapter.isValid(value);\r\n value = this._dateAdapter.getValidDateOrNull(value);\r\n const oldDate = this.value;\r\n this._value = value;\r\n this._formatValue(value);\r\n\r\n // use timeout to ensure the datetimepicker is instantiated and we get the correct format\r\n setTimeout(() => {\r\n if (!this._dateAdapter.sameDatetime(oldDate, value)) {\r\n this.valueChange.emit(value);\r\n }\r\n });\r\n }\r\n\r\n /** The minimum valid date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get min(): D | null {\r\n return this._min;\r\n }\r\n\r\n set min(value: D | null) {\r\n this._min = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n this._validatorOnChange();\r\n }\r\n\r\n /** The maximum valid date. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get max(): D | null {\r\n return this._max;\r\n }\r\n\r\n set max(value: D | null) {\r\n this._max = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n this._validatorOnChange();\r\n }\r\n\r\n /** Whether the datepicker-input is disabled. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get disabled(): boolean {\r\n return !!this._disabled;\r\n }\r\n\r\n set disabled(value: any) {\r\n const newValue = coerceBooleanProperty(value);\r\n\r\n if (this._disabled !== newValue) {\r\n this._disabled = newValue;\r\n this.disabledChange.emit(newValue);\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n if (this.datetimepicker) {\r\n this._datepickerSubscription = this.datetimepicker.selectedChanged.subscribe((selected: D) => {\r\n this.value = selected;\r\n this._cvaOnChange(selected);\r\n this._onTouched();\r\n this.dateInput.emit(new CmatDatetimepickerInputEvent(this, this._elementRef.nativeElement));\r\n this.dateChange.emit(new CmatDatetimepickerInputEvent(this, this._elementRef.nativeElement));\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._datepickerSubscription.unsubscribe();\r\n this._localeSubscription.unsubscribe();\r\n this.valueChange.complete();\r\n this.disabledChange.complete();\r\n }\r\n\r\n registerOnValidatorChange(fn:VoidFunction): void {\r\n this._validatorOnChange = fn;\r\n }\r\n\r\n validate(c: AbstractControl): ValidationErrors | null {\r\n return this._validator ? this._validator(c) : null;\r\n }\r\n\r\n /**\r\n * Gets the element that the datepicker popup should be connected to.\r\n *\r\n * @return The element to connect the popup to.\r\n */\r\n getConnectedOverlayOrigin(): ElementRef {\r\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\r\n }\r\n\r\n /** Gets the ID of an element that should be used a description for the calendar overlay. */\r\n getOverlayLabelId(): string | null {\r\n if (this._formField) {\r\n return this._formField.getLabelId();\r\n }\r\n\r\n return this._elementRef.nativeElement.getAttribute('aria-labelledby');\r\n }\r\n\r\n // Implemented as part of ControlValueAccessor\r\n writeValue(value: D): void {\r\n this.value = value;\r\n }\r\n\r\n // Implemented as part of ControlValueAccessor\r\n registerOnChange(fn: (value: any) => void): void {\r\n this._cvaOnChange = fn;\r\n }\r\n\r\n // Implemented as part of ControlValueAccessor\r\n registerOnTouched(fn: VoidFunction): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n // Implemented as part of ControlValueAccessor\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n\r\n onKeydown(event: KeyboardEvent): void {\r\n if (event.altKey && event.code === 'ArrowDown') {\r\n this.datetimepicker.open();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n onInput(value: string): void {\r\n let date = this._dateAdapter.parse(value, this._getParseFormat());\r\n this._lastValueValid = !date || this._dateAdapter.isValid(date);\r\n date = this._dateAdapter.getValidDateOrNull(date);\r\n this._value = date;\r\n this._cvaOnChange(date);\r\n this.valueChange.emit(date);\r\n this.dateInput.emit(new CmatDatetimepickerInputEvent(this, this._elementRef.nativeElement));\r\n }\r\n\r\n onChange(): void {\r\n this.dateChange.emit(new CmatDatetimepickerInputEvent(this, this._elementRef.nativeElement));\r\n }\r\n\r\n /** Handles blur events on the input. */\r\n onBlur(): void {\r\n // Reformat the input only if we have a valid value.\r\n if (this.value) {\r\n this._formatValue(this.value);\r\n }\r\n\r\n this._onTouched();\r\n }\r\n\r\n /** Returns the palette used by the input's form field, if any. */\r\n getThemePalette(): ThemePalette {\r\n return this._formField ? this._formField.color : undefined;\r\n }\r\n\r\n private _registerDatetimepicker(value: CmatDatetimepickerComponent<D>): void {\r\n if (value) {\r\n this.datetimepicker = value;\r\n this.datetimepicker.registerInput(this);\r\n }\r\n }\r\n\r\n private _getDisplayFormat(): any {\r\n switch (this.datetimepicker.type) {\r\n case 'date':\r\n return this._dateFormats.display.dateInput;\r\n case 'datetime':\r\n return this._dateFormats.display.datetimeInput;\r\n case 'time':\r\n return this._dateFormats.display.timeInput;\r\n case 'month':\r\n return this._dateFormats.display.monthInput;\r\n case 'year':\r\n return this._dateFormats.display.yearInput;\r\n }\r\n }\r\n\r\n private _getParseFormat(): any {\r\n let parseFormat: any;\r\n\r\n switch (this.datetimepicker.type) {\r\n case 'date':\r\n parseFormat = this._dateFormats.parse.dateInput;\r\n break;\r\n case 'datetime':\r\n parseFormat = this._dateFormats.parse.datetimeInput;\r\n break;\r\n case 'time':\r\n parseFormat = this._dateFormats.parse.timeInput;\r\n break;\r\n case 'month':\r\n parseFormat = this._dateFormats.parse.monthInput;\r\n break;\r\n case 'year':\r\n parseFormat = this._dateFormats.parse.yearInput;\r\n break;\r\n }\r\n parseFormat ??= this._dateFormats.parse.dateInput;\r\n\r\n return parseFormat;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _onTouched = (): void => { };\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _cvaOnChange: (value: any) => void = () => {};\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _validatorOnChange = (): void => { };\r\n\r\n /** The form control validator for whether the input parses. */\r\n private _parseValidator: ValidatorFn = (): ValidationErrors | null => this._lastValueValid ?\r\n null : { 'matDatepickerParse': { 'text': this._elementRef.nativeElement.value } };\r\n\r\n /** The form control validator for the min date. */\r\n private _minValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\r\n return (!this.min || !controlValue ||\r\n (this._dateAdapter.compareDatetime(this.min, controlValue) as number) <= 0) ?\r\n null : { 'matDatepickerMin': { 'min': this.min, 'actual': controlValue } };\r\n };\r\n\r\n /** The form control validator for the max date. */\r\n private _maxValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\r\n return (!this.max || !controlValue ||\r\n (this._dateAdapter.compareDatetime(this.max, controlValue) as number) >= 0) ?\r\n null : { 'matDatepickerMax': { 'max': this.max, 'actual': controlValue } };\r\n };\r\n\r\n /** The form control validator for the date filter. */\r\n private _filterValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\r\n return !this.dateFilter || !controlValue || this.dateFilter(controlValue, CmatDatetimepickerFilterType.DATE) ?\r\n null : { 'matDatepickerFilter': true };\r\n };\r\n\r\n /** The combined form control validator for this input. */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n private _validator: ValidatorFn | null =\r\n Validators.compose(\r\n [this._parseValidator, this._minValidator, this._maxValidator, this._filterValidator]);\r\n\r\n /** Formats a value and sets it on the input element. */\r\n private _formatValue(value: D | null): void {\r\n this._elementRef.nativeElement.value =\r\n value ? this._dateAdapter.format(value, this._getDisplayFormat()) : '';\r\n }\r\n}\r\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, Directive, HostBinding, Input, OnChanges, OnDestroy, SimpleChanges, ViewChild, ViewEncapsulation, inject } from '@angular/core';\r\nimport { MatButton, MatButtonModule } from '@angular/material/button';\r\nimport { merge, of as observableOf, Subscription } from 'rxjs';\r\nimport { CmatDatetimepickerComponent } from './datetimepicker';\r\nimport { CmatDatetimepickerIntl } from './datetimepicker-intl';\r\n\r\n\r\n/** Can be used to override the icon of a `cmatDatetimepickerToggle`. */\r\n@Directive({\r\n selector: '[cmatDatetimepickerToggleIcon]'\r\n})\r\nexport class CmatDatetimepickerToggleIconDirective { }\r\n\r\n@Component({\r\n selector: 'cmat-datetimepicker-toggle',\r\n templateUrl: 'datetimepicker-toggle.html',\r\n exportAs: 'cmatDatetimepickerToggle',\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatButtonModule]\r\n})\r\nexport class CmatDatetimepickerToggleComponent<D> implements AfterContentInit, OnChanges, OnDestroy {\r\n /** Datepicker instance that the button will toggle. */\r\n // eslint-disable-next-line @angular-eslint/no-input-rename\r\n @Input('for') datetimepicker: CmatDatetimepickerComponent<D>;\r\n /** Tabindex for the toggle. */\r\n @Input() tabIndex!: number;\r\n\r\n /** Screen-reader label for the button. */\r\n @Input('aria-label') ariaLabel?: string;\r\n\r\n /** Whether ripples on the toggle should be disabled. */\r\n @Input() disableRipple!: boolean;\r\n\r\n /** Custom icon set by the consumer. */\r\n @ContentChild(CmatDatetimepickerToggleIconDirective) customIcon!: CmatDatetimepickerToggleIconDirective;\r\n\r\n /** Underlying button element. */\r\n @ViewChild('button') button!: MatButton;\r\n\r\n\r\n @HostBinding('class') class = 'cmat-datetimepicker-toggle';\r\n\r\n protected intl = inject(CmatDatetimepickerIntl);\r\n\r\n private _stateChanges = Subscription.EMPTY;\r\n private _disabled: boolean;\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n\r\n /** Whether the toggle button is disabled. */\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled === undefined ? this.datetimepicker.disabled : !!this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['datepicker']) {\r\n this._watchStateChanges();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._stateChanges.unsubscribe();\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._watchStateChanges();\r\n }\r\n\r\n open(event: Event): void {\r\n if (this.datetimepicker && !this.disabled) {\r\n this.datetimepicker.open();\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n private _watchStateChanges(): void {\r\n const datepickerDisabled = this.datetimepicker ? this.datetimepicker.disabledChange : observableOf();\r\n const inputDisabled = this.datetimepicker?.datetimepickerInput ?\r\n this.datetimepicker.datetimepickerInput.disabledChange : observableOf();\r\n\r\n this._stateChanges.unsubscribe();\r\n this._stateChanges = merge([this.intl.changes, datepickerDisabled, inputDisabled])\r\n .subscribe(() => this._changeDetectorRef.markForCheck());\r\n }\r\n}\r\n","<button type=\"button\" matIconButton \r\n [attr.aria-haspopup]=\"datetimepicker ? 'dialog' : null\" [attr.aria-label]=\"ariaLabel || intl.openCalendarLabel\"\r\n [attr.tabindex]=\"disabled ? -1 : tabIndex\" [disabled]=\"disabled\" [disableRipple]=\"disableRipple\" (click)=\"open($event)\">\r\n @if (!customIcon) {\r\n @switch (datetimepicker.type) {\r\n @case ('time') {\r\n <svg class=\"mat-icon cmat-datetimepicker-toggle-default-icon\" viewBox=\"0 0 24 24\" width=\"24px\"\r\n height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path\r\n d=\"M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z\">\r\n </path>\r\n </svg>\r\n }\r\n @case ('datetime') {\r\n <svg class=\"mat-icon cmat-datetimepicker-toggle-default-icon\" viewBox=\"0 0 24 24\" width=\"24px\"\r\n height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path\r\n d=\"M15,13H16.5V15.82L18.94,17.23L18.19,18.53L15,16.69V13M19,8H5V19H9.67C9.24,18.09 9,17.07 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M5,21C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C14.09,23 12.36,22.24 11.1,21H5M16,11.15A4.85,4.85 0 0,0 11.15,16C11.15,18.68 13.32,20.85 16,20.85A4.85,4.85 0 0,0 20.85,16C20.85,13.32 18.68,11.15 16,11.15Z\">\r\n </path>\r\n </svg>\r\n }\r\n @default {\r\n <svg class=\"mat-icon cmat-datetimepicker-toggle-default-icon\" viewBox=\"0 0 24 24\" width=\"24px\"\r\n height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n <path\r\n d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\" />\r\n </svg>\r\n }\r\n }\r\n }\r\n\r\n <ng-content select=\"[cmatDatetimepickerToggleIcon]\"></ng-content>\r\n </button>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","observableOf"],"mappings":"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"}
1
+ {"version":3,"file":"cmat-components-material-datetimepicker.mjs","sources":["../../../projects/cmat/components/material-datetimepicker/datetimepicker-filtertype.ts","../../../projects/cmat/components/material-datetimepicker/clock.ts","../../../projects/cmat/components/material-datetimepicker/clock.html","../../../projects/cmat/components/material-datetimepicker/datetimepicker-errors.ts","../../../projects/cmat/components/material-datetimepicker/datetimepicker-intl.ts","../../../projects/cmat/components/material-datetimepicker/calendar-body.ts","../../../projects/cmat/components/material-datetimepicker/calendar-body.html","../../../projects/cmat/components/material-datetimepicker/month-view.ts","../../../projects/cmat/components/material-datetimepicker/month-view.html","../../../projects/cmat/components/material-datetimepicker/multi-year-view.ts","../../../projects/cmat/components/material-datetimepicker/multi-year-view.html","../../../projects/cmat/components/material-datetimepicker/time.ts","../../../projects/cmat/components/material-datetimepicker/time.html","../../../projects/cmat/components/material-datetimepicker/year-view.ts","../../../projects/cmat/components/material-datetimepicker/year-view.html","../../../projects/cmat/components/material-datetimepicker/calendar.ts","../../../projects/cmat/components/material-datetimepicker/calendar.html","../../../projects/cmat/components/material-datetimepicker/datetimepicker.ts","../../../projects/cmat/components/material-datetimepicker/datetimepicker-content.html","../../../projects/cmat/components/material-datetimepicker/datetimepicker-input.ts","../../../projects/cmat/components/material-datetimepicker/datetimepicker-toggle.ts","../../../projects/cmat/components/material-datetimepicker/datetimepicker-toggle.html","../../../projects/cmat/components/material-datetimepicker/cmat-components-material-datetimepicker.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nexport enum CmatDatetimepickerFilterType {\r\n DATE, HOUR, MINUTE\r\n}\r\n","import { NgStyle } from '@angular/common';\r\nimport { AfterContentInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, ViewEncapsulation, inject } from '@angular/core';\r\nimport { DatetimeAdapter } from 'cmat/components/adapter';\r\nimport { CmatDatetimepickerFilterType } from './datetimepicker-filtertype';\r\nimport { CmatClockView } from './datetimepicker-types';\r\n\r\nexport const CLOCK_RADIUS = 50;\r\nexport const CLOCK_INNER_RADIUS = 27.5;\r\nexport const CLOCK_OUTER_RADIUS = 41.25;\r\nexport const CLOCK_TICK_RADIUS = 7.0833;\r\n\r\n\r\n@Component({\r\n selector: 'cmat-datetimepicker-clock',\r\n templateUrl: 'clock.html',\r\n styleUrls: ['clock.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatDatetimepickerClock',\r\n imports: [NgStyle]\r\n})\r\nexport class CmatDatetimepickerClockComponent<D> implements AfterContentInit {\r\n @Output() userSelection = new EventEmitter<void>();\r\n \r\n @Input() dateFilter: (date: D, type: CmatDatetimepickerFilterType) => boolean;\r\n @Input() interval: number = 1;\r\n @Input() twelvehour: boolean = false;\r\n \r\n @Output() selectedChange = new EventEmitter<D>();\r\n @Output() activeDateChange = new EventEmitter<D>();\r\n @HostBinding('role') role = 'clock';\r\n @HostBinding('class') class = 'cmat-datetimepicker-clock';\r\n\r\n \r\n hours: any[] = [];\r\n minutes: any[] = [];\r\n \r\n hourView: boolean = true;\r\n selectedHour: number;\r\n selectedMinute: number;\r\n\r\n private _element = inject(ElementRef);\r\n private _adapter = inject<DatetimeAdapter<D>>(DatetimeAdapter);\r\n\r\n private _timeChanged = false;\r\n private _mouseMoveListener: any;\r\n private _mouseUpListener: any;\r\n private _activeDate: D;\r\n private _selected: D | null;\r\n private _minDate: D | null;\r\n private _maxDate: D | null;\r\n\r\n\r\n constructor() {\r\n this._mouseMoveListener = (event: any): void => {\r\n this.handleMousemove(event);\r\n };\r\n this._mouseUpListener = (): void => {\r\n this.handleMouseup();\r\n };\r\n }\r\n\r\n \r\n @Input()\r\n get activeDate(): D {\r\n return this._activeDate;\r\n }\r\n\r\n set activeDate(value: D) {\r\n const oldActiveDate = this._activeDate;\r\n this._activeDate = this._adapter.clampDate(value, this.minDate, this.maxDate);\r\n if (!this._adapter.sameMinute(oldActiveDate, this._activeDate)) {\r\n this._init();\r\n }\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get selected(): D | null {\r\n return this._selected;\r\n }\r\n\r\n set selected(value: D | null) {\r\n this._selected = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));\r\n if (this._selected) {\r\n this.activeDate = this._selected;\r\n }\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get minDate(): D | null {\r\n return this._minDate;\r\n }\r\n\r\n set minDate(value: D | null) {\r\n this._minDate = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get maxDate(): D | null {\r\n return this._maxDate;\r\n }\r\n\r\n set maxDate(value: D | null) {\r\n this._maxDate = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n set startView(value: CmatClockView) {\r\n this.hourView = value !== 'minute';\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get hand(): any {\r\n let hour = this._adapter.getHour(this.activeDate);\r\n if (this.twelvehour) {\r\n if (hour === 0) {\r\n hour = 24;\r\n }\r\n this.selectedHour = hour > 12 ? (hour - 12) : hour;\r\n } else {\r\n this.selectedHour = hour;\r\n }\r\n this.selectedMinute = this._adapter.getMinute(this.activeDate);\r\n let deg;\r\n let radius = CLOCK_OUTER_RADIUS;\r\n if (this.hourView) {\r\n const outer = this.selectedHour > 0 && this.selectedHour < 13;\r\n radius = outer ? CLOCK_OUTER_RADIUS : CLOCK_INNER_RADIUS;\r\n if (this.twelvehour) {\r\n radius = CLOCK_OUTER_RADIUS;\r\n }\r\n deg = Math.round(this.selectedHour * (360 / (24 / 2)));\r\n } else {\r\n deg = Math.round(this.selectedMinute * (360 / 60));\r\n }\r\n return {\r\n 'transform': `rotate(${deg}deg)`,\r\n 'height': `${radius}%`,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'margin-top': `${50 - radius}%`\r\n };\r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n \r\n handleMousedown(event: MouseEvent): void {\r\n this._timeChanged = false;\r\n this._setTime(event);\r\n\r\n document.addEventListener('mousemove', this._mouseMoveListener);\r\n document.addEventListener('touchmove', this._mouseMoveListener);\r\n document.addEventListener('mouseup', this._mouseUpListener);\r\n document.addEventListener('touchend', this._mouseUpListener);\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.activeDate = this._activeDate || this._adapter.today();\r\n this._init();\r\n }\r\n\r\n handleMousemove(event: any): void {\r\n event.preventDefault();\r\n this._setTime(event);\r\n }\r\n\r\n handleMouseup(): void {\r\n document.removeEventListener('mousemove', this._mouseMoveListener);\r\n document.removeEventListener('touchmove', this._mouseMoveListener);\r\n document.removeEventListener('mouseup', this._mouseUpListener);\r\n document.removeEventListener('touchend', this._mouseUpListener);\r\n if (this._timeChanged) {\r\n this.selectedChange.emit(this.activeDate);\r\n if (!this.hourView) {\r\n this.userSelection.emit();\r\n }\r\n }\r\n }\r\n\r\n \r\n private _init(): void {\r\n this.hours.length = 0;\r\n this.minutes.length = 0;\r\n\r\n const hourNames = this._adapter.getHourNames();\r\n const minuteNames = this._adapter.getMinuteNames();\r\n\r\n if (this.twelvehour) {\r\n for (let i = 1; i < (hourNames.length / 2) + 1; i++) {\r\n const radian = i / 6 * Math.PI;\r\n const radius = CLOCK_OUTER_RADIUS;\r\n const date = this._adapter.createDatetime(\r\n this._adapter.getYear(this.activeDate),\r\n this._adapter.getMonth(this.activeDate),\r\n this._adapter.getDate(this.activeDate), i + 1, 0);\r\n const enabled =\r\n (!this.minDate || (this._adapter.compareDatetime(date, this.minDate) as number) >= 0) &&\r\n (!this.maxDate || (this._adapter.compareDatetime(date, this.maxDate) as number) <= 0);\r\n this.hours.push({\r\n value: i,\r\n displayValue: i === 0 ? '00' : hourNames[i],\r\n enabled: enabled,\r\n top: CLOCK_RADIUS - Math.cos(radian) * radius - CLOCK_TICK_RADIUS,\r\n left: CLOCK_RADIUS + Math.sin(radian) * radius - CLOCK_TICK_RADIUS\r\n });\r\n }\r\n } else {\r\n for (let i = 0; i < hourNames.length; i++) {\r\n const radian = i / 6 * Math.PI;\r\n const outer = i > 0 && i < 13;\r\n const radius = outer ? CLOCK_OUTER_RADIUS : CLOCK_INNER_RADIUS;\r\n const date = this._adapter.createDatetime(\r\n this._adapter.getYear(this.activeDate),\r\n this._adapter.getMonth(this.activeDate),\r\n this._adapter.getDate(this.activeDate), i, 0);\r\n const enabled =\r\n (!this.minDate || (this._adapter.compareDatetime(date, this.minDate, false) as number) >= 0) &&\r\n (!this.maxDate || (this._adapter.compareDatetime(date, this.maxDate, false) as number) <= 0) &&\r\n (!this.dateFilter || this.dateFilter(date, CmatDatetimepickerFilterType.HOUR));\r\n this.hours.push({\r\n value: i,\r\n displayValue: i === 0 ? '00' : hourNames[i],\r\n enabled: enabled,\r\n top: CLOCK_RADIUS - Math.cos(radian) * radius - CLOCK_TICK_RADIUS,\r\n left: CLOCK_RADIUS + Math.sin(radian) * radius - CLOCK_TICK_RADIUS,\r\n fontSize: i > 0 && i < 13 ? '' : '80%'\r\n });\r\n }\r\n }\r\n\r\n for (let i = 0; i < minuteNames.length; i += 5) {\r\n const radian = i / 30 * Math.PI;\r\n const date = this._adapter.createDatetime(\r\n this._adapter.getYear(this.activeDate),\r\n this._adapter.getMonth(this.activeDate),\r\n this._adapter.getDate(this.activeDate), this._adapter.getHour(this.activeDate), i);\r\n const enabled =\r\n (!this.minDate || (this._adapter.compareDatetime(date, this.minDate) as number) >= 0) &&\r\n (!this.maxDate || (this._adapter.compareDatetime(date, this.maxDate) as number) <= 0) &&\r\n (!this.dateFilter || this.dateFilter(date, CmatDatetimepickerFilterType.MINUTE));\r\n this.minutes.push({\r\n value: i,\r\n displayValue: i === 0 ? '00' : minuteNames[i],\r\n enabled: enabled,\r\n top: CLOCK_RADIUS - Math.cos(radian) * CLOCK_OUTER_RADIUS - CLOCK_TICK_RADIUS,\r\n left: CLOCK_RADIUS + Math.sin(radian) * CLOCK_OUTER_RADIUS - CLOCK_TICK_RADIUS\r\n });\r\n }\r\n }\r\n\r\n \r\n private _setTime(event: any): void {\r\n const trigger = this._element.nativeElement;\r\n const triggerRect = trigger.getBoundingClientRect();\r\n const width = trigger.offsetWidth;\r\n const height = trigger.offsetHeight;\r\n const pageX = event.pageX !== undefined ? event.pageX : event.touches[0].pageX;\r\n const pageY = event.pageY !== undefined ? event.pageY : event.touches[0].pageY;\r\n const x = (width / 2) - (pageX - triggerRect.left - window.scrollX);\r\n const y = (height / 2) - (pageY - triggerRect.top - window.scrollY); let radian = Math.atan2(-x, y);\r\n const unit = Math.PI / (this.hourView ? 6 : (this.interval ? (30 / this.interval) : 30));\r\n const z = Math.sqrt(x * x + y * y);\r\n const outer = this.hourView && z > ((width * (CLOCK_OUTER_RADIUS / 100)) +\r\n (width * (CLOCK_INNER_RADIUS / 100))) / 2;\r\n\r\n if (radian < 0) {\r\n radian = Math.PI * 2 + radian;\r\n }\r\n let value = Math.round(radian / unit);\r\n\r\n let date: D;\r\n if (this.hourView) {\r\n if (this.twelvehour) {\r\n value = value === 0 ? 12 : value;\r\n } else {\r\n if (value === 12) {\r\n value = 0;\r\n }\r\n value = outer ? (value === 0 ? 12 : value) : value === 0 ? 0 : value + 12;\r\n }\r\n date = this._adapter.createDatetime(\r\n this._adapter.getYear(this.activeDate),\r\n this._adapter.getMonth(this.activeDate),\r\n this._adapter.getDate(this.activeDate), value, this._adapter.getMinute(this.activeDate));\r\n } else {\r\n if (this.interval) {\r\n value *= this.interval;\r\n }\r\n if (value === 60) {\r\n value = 0;\r\n }\r\n date = this._adapter.createDatetime(\r\n this._adapter.getYear(this.activeDate),\r\n this._adapter.getMonth(this.activeDate),\r\n this._adapter.getDate(this.activeDate), this._adapter.getHour(this.activeDate), value);\r\n }\r\n\r\n this._timeChanged = true;\r\n this.activeDate = date;\r\n this.activeDateChange.emit(this.activeDate);\r\n }\r\n\r\n}\r\n\r\n","<div class=\"cmat-datetimepicker-clock-wrapper\">\r\n <div class=\"cmat-datetimepicker-clock-center\"></div>\r\n <div class=\"cmat-datetimepicker-clock-hand\" [ngStyle]=\"hand\"></div>\r\n <div class=\"cmat-datetimepicker-clock-hours\" [class.active]=\"hourView\">\r\n @for (item of hours; track $index) {\r\n <div class=\"cmat-datetimepicker-clock-cell\"\r\n [class.cmat-datetimepicker-clock-cell-disabled]=\"!item.enabled\"\r\n [class.cmat-datetimepicker-clock-cell-selected]=\"selectedHour === item.value\"\r\n [ngStyle]=\"{'fontSize':item.fontSize,'left':item.left+'%',top:item.top+'%'}\">\r\n {{ item.displayValue }}</div>\r\n }\r\n </div>\r\n <div class=\"cmat-datetimepicker-clock-minutes\" [class.active]=\"!hourView\">\r\n @for (item of minutes; track $index) {\r\n <div class=\"cmat-datetimepicker-clock-cell\"\r\n [class.cmat-datetimepicker-clock-cell-disabled]=\"!item.enabled\"\r\n [class.cmat-datetimepicker-clock-cell-selected]=\"selectedMinute === item.value\" [ngStyle]=\"{'left':item.left+'%','top':item.top+'%'}\">{{ item.displayValue\r\n }}</div>\r\n }\r\n </div>\r\n</div>","\r\nexport function createMissingDateImplError(provider: string): Error {\r\n return Error(\r\n `CmatDatetimepickerComponent: No provider found for ${provider}. You must import one of the following ` +\r\n 'modules at your application root: CMatNativeDatetimeModule or provide a ' +\r\n 'custom implementation.');\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class CmatDatetimepickerIntl {\r\n \r\n readonly changes = new Subject<void>();\r\n\r\n \r\n calendarLabel = '日历';\r\n\r\n \r\n openCalendarLabel = '打开日历';\r\n\r\n \r\n closeCalendarLabel = '关闭日历';\r\n\r\n \r\n prevMonthLabel = '上个月';\r\n\r\n \r\n nextMonthLabel = '下个月';\r\n\r\n \r\n prevYearLabel = '上一年';\r\n\r\n \r\n nextYearLabel = '下一年';\r\n\r\n \r\n prevMultiYearLabel = '过去24年';\r\n\r\n \r\n nextMultiYearLabel = '未来24年';\r\n\r\n \r\n switchToMonthViewLabel = '选择月份';\r\n\r\n \r\n switchToYearViewLabel = '选择年份';\r\n\r\n \r\n switchToMultiYearViewLabel = '选择年份范围';\r\n\r\n \r\n startDateLabel = '开始日期';\r\n\r\n \r\n endDateLabel = '结束日期';\r\n\r\n \r\n switchToClockHourViewLabel = '选择小时';\r\n\r\n \r\n switchToClockMinuteViewLabel = '选择分钟';\r\n\r\n \r\n okLabel = '确认';\r\n\r\n \r\n cancelLabel = '取消';\r\n \r\n formatYearRange(start: string, end: string): string {\r\n return `${start} \\u2013 ${end}`;\r\n }\r\n\r\n \r\n formatYearRangeLabel(start: string, end: string): string {\r\n return `${start} to ${end}`;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';\r\n\r\n\r\n\r\nexport class CmatDatetimepickerCalendarCellComponent {\r\n constructor(public value: number,\r\n public displayValue: string,\r\n public ariaLabel: string,\r\n public enabled: boolean) {\r\n }\r\n}\r\n\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: '[cmat-datetimepicker-calendar-body]',\r\n templateUrl: 'calendar-body.html',\r\n styleUrls: ['calendar-body.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatDatetimepickerCalendarBody',\r\n imports: []\r\n})\r\nexport class CmatDatetimepickerCalendarBodyComponent {\r\n \r\n @Input() label: string;\r\n\r\n \r\n @Input() rows: CmatDatetimepickerCalendarCellComponent[][];\r\n\r\n \r\n @Input() todayValue: number | null;\r\n\r\n \r\n @Input() selectedValue: number | null;\r\n\r\n \r\n @Input() labelMinRequiredCells: number;\r\n\r\n \r\n @Input() numCols = 7;\r\n\r\n \r\n @Input() allowDisabledSelection = false;\r\n\r\n \r\n @Input() activeCell = 0;\r\n\r\n \r\n @Output() selectedValueChange = new EventEmitter<number>();\r\n\r\n @HostBinding('class') class = 'cmat-datetimepicker-calendar-body';\r\n\r\n \r\n get _firstRowOffset(): number {\r\n return this.rows?.length && this.rows[0].length ?\r\n this.numCols - this.rows[0].length : 0;\r\n }\r\n\r\n cellClicked(cell: CmatDatetimepickerCalendarCellComponent): void {\r\n if (!this.allowDisabledSelection && !cell.enabled) {\r\n return;\r\n }\r\n this.selectedValueChange.emit(cell.value);\r\n }\r\n\r\n isActiveCell(rowIndex: number, colIndex: number): boolean {\r\n let cellNumber = rowIndex * this.numCols + colIndex;\r\n if (rowIndex) {\r\n cellNumber -= this._firstRowOffset;\r\n }\r\n\r\n return cellNumber === this.activeCell;\r\n }\r\n}\r\n","\r\n@if (_firstRowOffset < labelMinRequiredCells) {\r\n <tr aria-hidden=\"true\">\r\n <td class=\"cmat-datetimepicker-calendar-body-label\" [attr.colspan]=\"numCols\">{{ label }}</td>\r\n </tr>\r\n}\r\n\r\n\r\n@for (row of rows; track $index; let rowIndex = $index) {\r\n <tr role=\"row\">\r\n \r\n @if (rowIndex === 0 && _firstRowOffset) {\r\n <td aria-hidden=\"true\" class=\"cmat-datetimepicker-calendar-body-label\"\r\n [attr.colspan]=\"_firstRowOffset\">\r\n {{ _firstRowOffset >= labelMinRequiredCells ? label : '' }}\r\n </td>\r\n }\r\n @for (item of row; track $index; let colIndex = $index) {\r\n <td role=\"presentation\" class=\"cmat-datetimepicker-calendar-body-cell\"\r\n [attr.aria-disabled]=\"!item.enabled || null\"\r\n [attr.aria-label]=\"item.ariaLabel\"\r\n [class.cmat-datetimepicker-calendar-body-active]=\"isActiveCell(rowIndex, colIndex)\"\r\n [class.cmat-datetimepicker-calendar-body-disabled]=\"!item.enabled\" (click)=\"cellClicked(item)\">\r\n <div class=\"cmat-datetimepicker-calendar-body-cell-content\"\r\n [attr.aria-selected]=\"selectedValue === item.value\"\r\n [class.cmat-datetimepicker-calendar-body-selected]=\"selectedValue === item.value\"\r\n [class.cmat-datetimepicker-calendar-body-today]=\"todayValue === item.value\">\r\n {{ item.displayValue }}\r\n </div>\r\n </td>\r\n }\r\n </tr>\r\n}","import { NgClass } from '@angular/common';\r\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewEncapsulation, inject } from '@angular/core';\r\nimport { CMAT_DATETIME_FORMATS, CmatDatetimeFormats, DatetimeAdapter } from 'cmat/components/adapter';\r\nimport { CmatDatetimepickerCalendarCellComponent, CmatDatetimepickerCalendarBodyComponent } from './calendar-body';\r\nimport { createMissingDateImplError } from './datetimepicker-errors';\r\nimport { CmatDatetimepickerType } from './datetimepicker-types';\r\n\r\n\r\n\r\nconst DAYS_PER_WEEK = 7;\r\n\r\n\r\n@Component({\r\n selector: 'cmat-datetimepicker-month-view',\r\n templateUrl: 'month-view.html',\r\n styleUrls:['datetimepicker-base.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatDatetimepickerMonthView',\r\n imports: [CmatDatetimepickerCalendarBodyComponent,NgClass]\r\n})\r\nexport class CmatDatetimepickerMonthViewComponent<D> implements AfterContentInit, OnDestroy {\r\n @Input() type: CmatDatetimepickerType = 'date';\r\n\r\n @Output() userSelection = new EventEmitter<void>();\r\n \r\n @Input() dateFilter: (date: D) => boolean;\r\n \r\n @Output() selectedChange = new EventEmitter<D>();\r\n\r\n \r\n weeks: CmatDatetimepickerCalendarCellComponent[][];\r\n \r\n firstWeekOffset: number;\r\n \r\n selectedDate: number | null;\r\n \r\n todayDate: number | null;\r\n \r\n weekdays: { long: string; narrow: string }[];\r\n calendarState: string;\r\n\r\n adapter = inject<DatetimeAdapter<D>>(DatetimeAdapter, { optional: true })!;\r\n private _dateFormats = inject<CmatDatetimeFormats>(CMAT_DATETIME_FORMATS, { optional: true })!;\r\n private _activeDate: D;\r\n private _selected: D;\r\n private _elementRef = inject(ElementRef);\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _calendarAnimationListener = this.calendarStateDone.bind(this);\r\n constructor() {\r\n if (!this.adapter) {\r\n throw createMissingDateImplError('CDatetimeAdapter');\r\n }\r\n\r\n if (!this._dateFormats) {\r\n throw createMissingDateImplError('CMAT_DATETIME_FORMATS');\r\n }\r\n\r\n const firstDayOfWeek = this.adapter.getFirstDayOfWeek();\r\n const narrowWeekdays = this.adapter.getDayOfWeekNames('narrow');\r\n const longWeekdays = this.adapter.getDayOfWeekNames('long');\r\n const weekdays = longWeekdays.map((long, i) => ({ long, narrow: narrowWeekdays[i] }));\r\n this.weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\r\n\r\n this._activeDate = this.adapter.today();\r\n\r\n this._elementRef.nativeElement.addEventListener('animationend', this._calendarAnimationListener);\r\n }\r\n\r\n\r\n \r\n @Input()\r\n get activeDate(): D {\r\n return this._activeDate;\r\n }\r\n\r\n set activeDate(value: D) {\r\n const oldActiveDate = this._activeDate;\r\n this._activeDate = value || this.adapter.today();\r\n if (oldActiveDate && this._activeDate &&\r\n !this.adapter.sameMonthAndYear(oldActiveDate, this._activeDate)) {\r\n this._init();\r\n if (this.adapter.isInNextMonth(oldActiveDate, this._activeDate)) {\r\n this._changeCalendarState('right');\r\n } else {\r\n this._changeCalendarState('left');\r\n }\r\n }\r\n }\r\n\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get selected(): D {\r\n return this._selected;\r\n }\r\n\r\n set selected(value: D) {\r\n this._selected = value;\r\n this.selectedDate = this._getDateInCurrentMonth(this.selected);\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._init();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._elementRef.nativeElement.removeEventListener('animationend', this._calendarAnimationListener);\r\n }\r\n\r\n \r\n dateSelected(date: number): void {\r\n this.selectedChange.emit(this.adapter.createDatetime(\r\n this.adapter.getYear(this.activeDate), this.adapter.getMonth(this.activeDate),\r\n date, this.adapter.getHour(this.activeDate),\r\n this.adapter.getMinute(this.activeDate)));\r\n if (this.type === 'date') {\r\n this.userSelection.emit();\r\n }\r\n }\r\n\r\n calendarStateDone(event: AnimationEvent): void {\r\n if (event.animationName === 'slideCalendarLeft' || event.animationName === 'slideCalendarRight') {\r\n this.calendarState = '';\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n \r\n private _init(): void {\r\n this.selectedDate = this._getDateInCurrentMonth(this.selected);\r\n this.todayDate = this._getDateInCurrentMonth(this.adapter.today());\r\n\r\n const firstOfMonth = this.adapter.createDatetime(this.adapter.getYear(this.activeDate),\r\n this.adapter.getMonth(this.activeDate), 1,\r\n this.adapter.getHour(this.activeDate),\r\n this.adapter.getMinute(this.activeDate));\r\n this.firstWeekOffset =\r\n (DAYS_PER_WEEK + this.adapter.getDayOfWeek(firstOfMonth) -\r\n this.adapter.getFirstDayOfWeek()) % DAYS_PER_WEEK;\r\n\r\n this._createWeekCells();\r\n }\r\n\r\n \r\n private _createWeekCells(): void {\r\n const daysInMonth = this.adapter.getNumDaysInMonth(this.activeDate);\r\n const dateNames = this.adapter.getDateNames();\r\n this.weeks = [[]];\r\n for (let i = 0, cell = this.firstWeekOffset; i < daysInMonth; i++, cell++) {\r\n if (cell === DAYS_PER_WEEK) {\r\n this.weeks.push([]);\r\n cell = 0;\r\n }\r\n const date = this.adapter.createDatetime(\r\n this.adapter.getYear(this.activeDate),\r\n this.adapter.getMonth(this.activeDate), i + 1,\r\n this.adapter.getHour(this.activeDate),\r\n this.adapter.getMinute(this.activeDate));\r\n const enabled = !this.dateFilter ||\r\n this.dateFilter(date);\r\n const ariaLabel = this.adapter.format(date, this._dateFormats.display.dateA11yLabel);\r\n this.weeks[this.weeks.length - 1]\r\n .push(new CmatDatetimepickerCalendarCellComponent(i + 1, dateNames[i], ariaLabel, enabled));\r\n }\r\n }\r\n\r\n \r\n private _getDateInCurrentMonth(date: D): number | null {\r\n return this.adapter.sameMonthAndYear(date, this.activeDate) ?\r\n this.adapter.getDate(date) : null;\r\n }\r\n\r\n private _changeCalendarState(direction: string): void {\r\n this.calendarState = direction;\r\n }\r\n}\r\n","<table class=\"cmat-datetimepicker-calendar-table\">\r\n <thead class=\"cmat-datetimepicker-calendar-table-header\">\r\n <tr>\r\n @for (day of weekdays; track $index) {\r\n <th [attr.aria-label]=\"day.long\">{{day.narrow}}</th>\r\n }\r\n </tr>\r\n <tr>\r\n <th colspan=\"7\" class=\"cmat-calendar-table-header-divider\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"cmat-calendar-slide-animation\" cmat-datetimepicker-calendar-body role=\"grid\"\r\n [ngClass]=\"{\r\n 'left': calendarState==='left',\r\n 'right': calendarState==='right'\r\n }\" [activeCell]=\"adapter.getDate(activeDate) - 1\" [rows]=\"weeks\"\r\n [selectedValue]=\"selectedDate\" [todayValue]=\"todayDate\" (selectedValueChange)=\"dateSelected($event)\">\r\n </tbody>\r\n</table>","\r\nimport { NgClass } from '@angular/common';\r\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewEncapsulation, inject } from '@angular/core';\r\nimport { CMAT_DATETIME_FORMATS, CmatDatetimeFormats, DatetimeAdapter } from 'cmat/components/adapter';\r\nimport { CmatDatetimepickerCalendarCellComponent, CmatDatetimepickerCalendarBodyComponent } from './calendar-body';\r\nimport { createMissingDateImplError } from './datetimepicker-errors';\r\nimport { CmatDatetimepickerType } from './datetimepicker-types';\r\n\r\n\r\nexport const yearsPerPage = 24;\r\n\r\nexport const yearsPerRow = 4;\r\n\r\n\r\n@Component({\r\n selector: 'cmat-datetimepicker-multi-year-view',\r\n templateUrl: 'multi-year-view.html',\r\n styleUrls: ['datetimepicker-base.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatDatetimepickerMultiYearView',\r\n imports: [CmatDatetimepickerCalendarBodyComponent, NgClass]\r\n})\r\nexport class CmatDatetimepickerMultiYearViewComponent<D> implements AfterContentInit, OnDestroy {\r\n @Output() userSelection = new EventEmitter<void>();\r\n\r\n @Input() type: CmatDatetimepickerType = 'date';\r\n \r\n @Input() dateFilter: (date: D) => boolean;\r\n \r\n @Output() selectedChange = new EventEmitter<D>();\r\n \r\n years: CmatDatetimepickerCalendarCellComponent[][];\r\n \r\n yearLabel: string;\r\n \r\n todayYear: number;\r\n \r\n selectedYear: number | null;\r\n calendarState: string;\r\n\r\n adapter = inject<DatetimeAdapter<D>>(DatetimeAdapter, { optional: true })!;\r\n private _dateFormats = inject<CmatDatetimeFormats>(CMAT_DATETIME_FORMATS, { optional: true })!;\r\n private _activeDate: D;\r\n private _selected: D;\r\n private _minDate: D | null;\r\n private _maxDate: D | null;\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _elementRef = inject(ElementRef);\r\n private _calendarAnimationListener = this.calendarStateDone.bind(this);\r\n\r\n constructor() {\r\n if (!this.adapter) {\r\n throw createMissingDateImplError('CDatetimeAdapter');\r\n }\r\n\r\n if (!this._dateFormats) {\r\n throw createMissingDateImplError('CMAT_DATETIME_FORMATS');\r\n }\r\n\r\n this._activeDate = this.adapter.today();\r\n\r\n this._elementRef.nativeElement.addEventListener('animationend', this._calendarAnimationListener);\r\n }\r\n\r\n \r\n @Input()\r\n get activeDate(): D {\r\n return this._activeDate;\r\n }\r\n\r\n set activeDate(value: D) {\r\n const oldActiveDate = this._activeDate;\r\n this._activeDate = value || this.adapter.today();\r\n if (oldActiveDate && this._activeDate &&\r\n !isSameMultiYearView(this.adapter, oldActiveDate, this._activeDate, this.minDate, this.maxDate)) {\r\n this._init();\r\n\r\n if (this.adapter.isInNextMonth(oldActiveDate, this._activeDate)) {\r\n this._changeCalendarState('right');\r\n } else {\r\n this._changeCalendarState('left');\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get selected(): D {\r\n return this._selected;\r\n }\r\n\r\n set selected(value: D) {\r\n this._selected = value;\r\n this.selectedYear = this._selected && this.adapter.getYear(this._selected);\r\n }\r\n\r\n\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get minDate(): D | null {\r\n return this._minDate;\r\n }\r\n\r\n set minDate(value: D | null) {\r\n this._minDate = this._getValidDateOrNull(this.adapter.deserialize(value));\r\n }\r\n\r\n\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get maxDate(): D | null {\r\n return this._maxDate;\r\n }\r\n\r\n set maxDate(value: D | null) {\r\n this._maxDate = this._getValidDateOrNull(this.adapter.deserialize(value));\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._init();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._elementRef.nativeElement.removeEventListener('animationend', this._calendarAnimationListener);\r\n }\r\n\r\n \r\n yearSelected(year: number): void {\r\n const month = this.adapter.getMonth(this.activeDate);\r\n const normalizedDate = this.adapter.createDatetime(year, month, 1, 0, 0);\r\n\r\n this.selectedChange.emit(this.adapter.createDatetime(\r\n year,\r\n month,\r\n Math.min(this.adapter.getDate(this.activeDate),\r\n this.adapter.getNumDaysInMonth(normalizedDate)),\r\n this.adapter.getHour(this.activeDate),\r\n this.adapter.getMinute(this.activeDate)));\r\n\r\n if (this.type === 'year') {\r\n this.userSelection.emit();\r\n }\r\n }\r\n\r\n getActiveCell(): number {\r\n return getActiveOffset(this.adapter, this.activeDate, this.minDate, this.maxDate);\r\n }\r\n\r\n calendarStateDone(event: AnimationEvent): void {\r\n if (event.animationName === 'slideCalendarLeft' || event.animationName === 'slideCalendarRight') {\r\n this.calendarState = '';\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n \r\n private _init(): void {\r\n\r\n this.todayYear = this.adapter.getYear(this.adapter.today());\r\n this.yearLabel = this.adapter.getYearName(this.activeDate);\r\n\r\n\r\n const activeYear = this.adapter.getYear(this.activeDate);\r\n\r\n const minYearOfPage = activeYear - getActiveOffset(\r\n this.adapter, this.activeDate, this.minDate, this.maxDate);\r\n\r\n this.years = [];\r\n for (let i = 0, row: number[] = []; i < yearsPerPage; i++) {\r\n row.push(minYearOfPage + i);\r\n if (row.length === yearsPerRow) {\r\n this.years.push(row.map(year => this._createCellForYear(year)));\r\n row = [];\r\n }\r\n }\r\n }\r\n\r\n \r\n private _createCellForYear(year: number): CmatDatetimepickerCalendarCellComponent {\r\n const yearName = this.adapter.getYearName(this.adapter.createDate(year, 0, 1));\r\n return new CmatDatetimepickerCalendarCellComponent(year, yearName, yearName, this._shouldEnableYear(year));\r\n }\r\n\r\n \r\n private _shouldEnableYear(year: number): boolean {\r\n if (year === undefined || year === null ||\r\n (this.maxDate && year > this.adapter.getYear(this.maxDate)) ||\r\n (this.minDate && year < this.adapter.getYear(this.minDate))) {\r\n return false;\r\n }\r\n if (!this.dateFilter) {\r\n return true;\r\n }\r\n\r\n const firstOfYear = this.adapter.createDate(year, 0, 1);\r\n for (let date = firstOfYear; this.adapter.getYear(date) === year;\r\n date = this.adapter.addCalendarDays(date, 1)) {\r\n if (this.dateFilter(date)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n \r\n private _getValidDateOrNull(obj: any): D | null {\r\n return (this.adapter.isDateInstance(obj) && this.adapter.isValid(obj)) ? obj : null;\r\n }\r\n\r\n private _changeCalendarState(direction: string): void {\r\n this.calendarState = direction;\r\n }\r\n}\r\n\r\nexport function isSameMultiYearView<D>(\r\n dateAdapter: DatetimeAdapter<D>, date1: D, date2: D, minDate: D | null, maxDate: D | null): boolean {\r\n const year1 = dateAdapter.getYear(date1);\r\n const year2 = dateAdapter.getYear(date2);\r\n const startingYear = getStartingYear(dateAdapter, minDate, maxDate);\r\n return Math.floor((year1 - startingYear) / yearsPerPage) ===\r\n Math.floor((year2 - startingYear) / yearsPerPage);\r\n}\r\n\r\n\r\nexport function getActiveOffset<D>(\r\n dateAdapter: DatetimeAdapter<D>, activeDate: D, minDate: D | null, maxDate: D | null): number {\r\n const activeYear = dateAdapter.getYear(activeDate);\r\n return euclideanModulo((activeYear - getStartingYear(dateAdapter, minDate, maxDate)),\r\n yearsPerPage);\r\n}\r\n\r\n\r\nfunction getStartingYear<D>(\r\n dateAdapter: DatetimeAdapter<D>, minDate: D | null, maxDate: D | null): number {\r\n let startingYear = 0;\r\n if (maxDate) {\r\n const maxYear = dateAdapter.getYear(maxDate);\r\n startingYear = maxYear - yearsPerPage + 1;\r\n } else if (minDate) {\r\n startingYear = dateAdapter.getYear(minDate);\r\n }\r\n return startingYear;\r\n}\r\n\r\n\r\nfunction euclideanModulo(a: number, b: number): number {\r\n return (a % b + b) % b;\r\n}\r\n","<table class=\"cmat-datetimepicker-calendar-table\">\r\n <thead class=\"cmat-datetimepicker-calendar-table-header\"></thead>\r\n <tbody class=\"cmat-calendar-slide-animation\" cmat-datetimepicker-calendar-body role=\"grid\"\r\n [ngClass]=\"{\r\n 'left': calendarState==='left',\r\n 'right': calendarState==='right'\r\n }\" [activeCell]=\"getActiveCell()\" [numCols]=\"4\" [rows]=\"years\"\r\n [selectedValue]=\"selectedYear\" [todayValue]=\"todayYear\" [allowDisabledSelection]=\"true\"\r\n (selectedValueChange)=\"yearSelected($event)\"></tbody>\r\n</table>","import {\r\n coerceBooleanProperty,\r\n coerceNumberProperty,\r\n NumberInput,\r\n} from '@angular/cdk/coercion';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnChanges, OnDestroy, Output, SimpleChanges, ViewChild, ViewEncapsulation, inject } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { DatetimeAdapter } from 'cmat/components/adapter';\r\nimport { SubscriptionLike } from 'rxjs';\r\nimport { CmatDatetimepickerClockComponent } from './clock';\r\nimport { CmatDatetimepickerFilterType } from './datetimepicker-filtertype';\r\nimport { CmatDatetimepickerIntl } from './datetimepicker-intl';\r\nimport { CmatAMPM, CmatClockView } from './datetimepicker-types';\r\n\r\n\r\n\r\nfunction pad(num: NumberInput, size: number): string {\r\n num = String(num);\r\n while (num.length < size) { num = '0' + num; }\r\n return num;\r\n}\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: 'input.cmat-datetimepicker-time-input',\r\n exportAs: 'cmatDatetimepickerTimeInput'\r\n})\r\nexport class CmatDatetimepickerTimeInputDirective implements OnDestroy {\r\n @Input() timeInterval: number = 1;\r\n @Input() timeMin: number = 0;\r\n @Input() timeMax: number = Infinity;\r\n\r\n @Output() timeValueChanged = new EventEmitter<NumberInput>();\r\n\r\n private _element = inject(ElementRef);\r\n private _cdr = inject(ChangeDetectorRef);\r\n\r\n private _value: NumberInput;\r\n\r\n private _keyDownListener = this.keyDownHandler.bind(this);\r\n private _keyPressListener = this.keyPressHandler.bind(this);\r\n private _inputEventListener = this.inputChangedHandler.bind(this);\r\n\r\n\r\n\r\n constructor() {\r\n this.inputElement.addEventListener('keydown', this._keyDownListener, {\r\n passive: true,\r\n });\r\n this.inputElement.addEventListener('keypress', this._keyPressListener);\r\n this.inputElement.addEventListener('input', this._inputEventListener, {\r\n passive: true,\r\n });\r\n }\r\n\r\n get hasFocus(): boolean {\r\n return this._element.nativeElement && this._element?.nativeElement === document?.activeElement;\r\n }\r\n\r\n get inputElement(): HTMLInputElement {\r\n return this._element.nativeElement as HTMLInputElement;\r\n }\r\n get valid(): boolean {\r\n if (this._value) {\r\n const currentValue = String(this.inputElement.value);\r\n if (currentValue.length) {\r\n return pad(this._value, 2) === this.inputElement.value;\r\n } else {\r\n return pad(this._value, 2) === this.inputElement.placeholder;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n get invalid(): boolean {\r\n return !this.valid;\r\n }\r\n\r\n @Input()\r\n set timeValue(value: NumberInput) {\r\n this._value = coerceNumberProperty(value);\r\n if (!this.hasFocus) {\r\n this.writeValue(this._value);\r\n }\r\n this.writePlaceholder(this._value);\r\n }\r\n\r\n @HostListener('blur', ['$event'])\r\n blur(): void {\r\n this.writeValue(this._value);\r\n this.writePlaceholder(this._value);\r\n this.timeValueChanged.emit(this._value);\r\n }\r\n @HostListener('focus', ['$event'])\r\n focus(): void {\r\n this.writeValue('');\r\n }\r\n\r\n \r\n writeValue(value: NumberInput): void {\r\n if (value !== '') {\r\n this.inputElement.value = pad(value, 2);\r\n } else {\r\n this.inputElement.value = '';\r\n }\r\n this._cdr.markForCheck();\r\n }\r\n\r\n \r\n writePlaceholder(value: NumberInput): void {\r\n this.inputElement.placeholder = pad(value, 2);\r\n this._cdr.markForCheck();\r\n }\r\n\r\n keyDownHandler(event: KeyboardEvent): void {\r\n if (String(this.inputElement.value).length > 0) {\r\n let value: number | null = null;\r\n if (event.code === 'ArrowUp') {\r\n value = coerceNumberProperty(this._value);\r\n value += this.timeInterval;\r\n event.stopPropagation();\r\n } else if (event.code === 'ArrowDown') {\r\n value = coerceNumberProperty(this._value);\r\n value -= this.timeInterval;\r\n event.stopPropagation();\r\n }\r\n if (typeof value === 'number') {\r\n this.writeValue(value);\r\n this.writePlaceholder(value);\r\n this.clampInputValue();\r\n this.timeValueChanged.emit(this._value);\r\n }\r\n }\r\n }\r\n\r\n \r\n keyPressHandler(event: KeyboardEvent): void {\r\n const key = event?.key ?? null;\r\n if (isNaN(Number(key)) && key !== 'Enter') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n inputChangedHandler(): void {\r\n this.clampInputValue();\r\n this.timeValueChanged.emit(this._value);\r\n }\r\n\r\n clampInputValue(): void {\r\n if (this.inputElement?.value === '') {\r\n return;\r\n }\r\n\r\n const value = coerceNumberProperty(this.inputElement?.value ?? null);\r\n if (value) {\r\n const clampedValue = Math.min(Math.max(value, this.timeMin), this.timeMax);\r\n if (clampedValue !== value) {\r\n this.writeValue(clampedValue);\r\n this.writePlaceholder(clampedValue);\r\n }\r\n this._value = clampedValue;\r\n }\r\n }\r\n\r\n \r\n ngOnDestroy(): void {\r\n this.inputElement.removeEventListener('keydown', this._keyDownListener);\r\n this.inputElement.removeEventListener('keypress', this._keyPressListener);\r\n this.inputElement.removeEventListener('input', this._inputEventListener);\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'cmat-datetimepicker-time',\r\n templateUrl: './time.html',\r\n styleUrls: ['time.scss'],\r\n exportAs: 'cmatDatetimepickerTime',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [CmatDatetimepickerTimeInputDirective, MatButtonModule, CmatDatetimepickerClockComponent]\r\n})\r\nexport class CmatDatetimepickerTimeComponent<D> implements OnChanges, AfterViewInit, OnDestroy {\r\n \r\n @Output() readonly selectedChange = new EventEmitter<D>();\r\n\r\n \r\n @Output() readonly activeDateChange = new EventEmitter<D>();\r\n\r\n \r\n @Output() readonly userSelection = new EventEmitter<void>();\r\n\r\n \r\n @Output() readonly ampmChange = new EventEmitter<CmatAMPM>();\r\n\r\n \r\n @Output() readonly clockViewChange = new EventEmitter<CmatClockView>();\r\n\r\n \r\n @Input() dateFilter!: (date: D, type: CmatDatetimepickerFilterType) => boolean;\r\n\r\n \r\n @Input() interval: number = 1;\r\n \r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n @Input() AMPM: CmatAMPM = 'AM';\r\n\r\n @HostBinding('class') class = 'cmat-datetimepicker-time';\r\n\r\n @ViewChild('hourInput', { read: ElementRef<HTMLInputElement> })\r\n protected hourInputElement: ElementRef<HTMLInputElement> | void;\r\n\r\n @ViewChild('hourInput', { read: CmatDatetimepickerTimeInputDirective })\r\n protected hourInputDirective: CmatDatetimepickerTimeInputDirective | void;\r\n\r\n @ViewChild('minuteInput', { read: ElementRef<HTMLInputElement> })\r\n protected minuteInputElement: ElementRef<HTMLInputElement> | void;\r\n\r\n @ViewChild('minuteInput', { read: CmatDatetimepickerTimeInputDirective })\r\n protected minuteInputDirective: CmatDatetimepickerTimeInputDirective | void;\r\n\r\n datetimepickerIntlChangesSubscription: SubscriptionLike;\r\n\r\n protected datetimepickerIntl = inject(CmatDatetimepickerIntl);\r\n private _adapter = inject<DatetimeAdapter<D>>(DatetimeAdapter);\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n private _twelvehour = false;\r\n private _activeDate!: D;\r\n private _selected!: D | null;\r\n private _minDate!: D | null;\r\n private _maxDate!: D | null;\r\n \r\n private _clockView: CmatClockView = 'hour';\r\n\r\n\r\n\r\n constructor() {\r\n this.datetimepickerIntlChangesSubscription = this.datetimepickerIntl.changes.subscribe(() => {\r\n this._changeDetectorRef.detectChanges();\r\n });\r\n }\r\n\r\n get isHourView(): boolean {\r\n return this._clockView === 'hour';\r\n }\r\n\r\n get isMinuteView(): boolean {\r\n return this._clockView === 'hour';\r\n }\r\n\r\n get hour(): string {\r\n if (!this.activeDate) {\r\n if (this.twelvehour) {\r\n return '12';\r\n } else {\r\n return '00';\r\n }\r\n }\r\n\r\n const hour = Number(this._adapter.getHour(this.activeDate));\r\n if (!this.twelvehour) {\r\n return this.prefixWithZero(hour);\r\n }\r\n\r\n if (hour === 0) {\r\n return '12';\r\n } else {\r\n return this.prefixWithZero(hour > 12 ? hour - 12 : hour);\r\n }\r\n }\r\n\r\n get minute(): string {\r\n if (this.activeDate) {\r\n return this.prefixWithZero(this._adapter.getMinute(this.activeDate));\r\n }\r\n\r\n return '00';\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get twelvehour(): boolean {\r\n return this._twelvehour;\r\n }\r\n set twelvehour(value: boolean) {\r\n this._twelvehour = coerceBooleanProperty(value);\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get activeDate(): D {\r\n return this._activeDate;\r\n }\r\n set activeDate(value: D) {\r\n this._activeDate = this._adapter.clampDate(value, this.minDate, this.maxDate);\r\n }\r\n\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get selected(): D | null {\r\n return this._selected;\r\n }\r\n set selected(value: D | null) {\r\n this._selected = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));\r\n if (this._selected) {\r\n this.activeDate = this._selected;\r\n }\r\n }\r\n\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get minDate(): D | null {\r\n return this._minDate;\r\n }\r\n\r\n set minDate(value: D | null) {\r\n this._minDate = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));\r\n }\r\n\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get maxDate(): D | null {\r\n return this._maxDate;\r\n }\r\n set maxDate(value: D | null) {\r\n this._maxDate = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));\r\n }\r\n\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get clockView(): CmatClockView {\r\n return this._clockView;\r\n }\r\n set clockView(value: CmatClockView) {\r\n this._clockView = value;\r\n }\r\n\r\n prefixWithZero(value: number): string {\r\n if (value < 10) {\r\n return '0' + String(value);\r\n }\r\n\r\n return String(value);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['clockView']) {\r\n if (changes['clockView'].currentValue !== changes['clockView'].previousValue) {\r\n this.focusInputElement();\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.focusInputElement();\r\n }\r\n\r\n focusInputElement(): void {\r\n if (this.clockView === 'hour') {\r\n if (this.hourInputElement) {\r\n (this.hourInputElement.nativeElement).focus();\r\n }\r\n } else {\r\n if (this.minuteInputElement) {\r\n (this.minuteInputElement.nativeElement).focus();\r\n }\r\n }\r\n }\r\n\r\n handleHourInputChange(value: NumberInput): void {\r\n const hour = coerceNumberProperty(value);\r\n if (hour || hour === 0) {\r\n const newValue = this._adapter.createDatetime(\r\n this._adapter.getYear(this.activeDate),\r\n this._adapter.getMonth(this.activeDate),\r\n this._adapter.getDate(this.activeDate),\r\n this.updateHourForAmPm(hour),\r\n this._adapter.getMinute(this.activeDate)\r\n );\r\n\r\n this._activeDate = this._adapter.clampDate(newValue, this.minDate, this.maxDate);\r\n this.activeDateChange.emit(this.activeDate);\r\n if (this.hourInputDirective) {\r\n this.hourInputDirective.timeValue = this.hour;\r\n }\r\n }\r\n }\r\n\r\n updateHourForAmPm(value: number): number {\r\n if (!this.twelvehour) {\r\n return value;\r\n }\r\n if (this.AMPM === 'AM') {\r\n if (value === 0 || value === 12) {\r\n return 0;\r\n }\r\n return value;\r\n }\r\n else {\r\n if (value === 0 || value === 12) {\r\n return 12;\r\n }\r\n return value + 12;\r\n }\r\n }\r\n\r\n handleMinuteInputChange(value: NumberInput): void {\r\n const minute = coerceNumberProperty(value);\r\n if (minute || minute === 0) {\r\n const newValue = this._adapter.createDatetime(\r\n this._adapter.getYear(this.activeDate),\r\n this._adapter.getMonth(this.activeDate),\r\n this._adapter.getDate(this.activeDate),\r\n this._adapter.getHour(this._activeDate),\r\n minute\r\n );\r\n this._activeDate = this._adapter.clampDate(newValue, this.minDate, this.maxDate);\r\n this.activeDateChange.emit(this.activeDate);\r\n if (this.minuteInputDirective) {\r\n this.minuteInputDirective.timeValue = this.minute;\r\n }\r\n }\r\n }\r\n\r\n handleFocus(clockView: CmatClockView): void {\r\n this.clockView = clockView;\r\n this.clockViewChange.emit(clockView);\r\n }\r\n\r\n timeSelected(date: D): void {\r\n if (this.clockView === 'hour') {\r\n this.clockView = 'minute';\r\n }\r\n this._activeDate = this.selected = date;\r\n }\r\n\r\n onActiveDateChange(date: D): void {\r\n this._activeDate = date;\r\n this.activeDateChange.emit(date);\r\n }\r\n\r\n handleOk(): void {\r\n if (this._selected) {\r\n this.selectedChange.emit(this._selected);\r\n }\r\n this.userSelection.emit();\r\n }\r\n\r\n handleCancel(): void {\r\n this.userSelection.emit();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.datetimepickerIntlChangesSubscription) {\r\n this.datetimepickerIntlChangesSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","<div class=\"cmat-datetimepicker-time-input-wrapper\">\r\n <div class=\"cmat-datetimepicker-time-input-inner\">\r\n <input #hourInput=\"cmatDatetimepickerTimeInput\" class=\"cmat-datetimepicker-time-input\"\r\n type=\"text\" inputmode=\"numeric\"\r\n maxlength=\"2\" [class.cmat-datetimepicker-time-input-active]=\"clockView === 'hour'\" [class.cmat-datetimepicker-time-input-warning]=\"!hourInput.valid\" [timeMin]=\"twelvehour ? 1 : 0\" [timeMax]=\"twelvehour ? 12 : 23\"\r\n [timeValue]=\"hour\" (timeValueChanged)=\"handleHourInputChange($event)\" (focus)=\"handleFocus('hour')\" />\r\n\r\n <div class=\"cmat-datetimepicker-time-seperator\">:</div>\r\n\r\n <input #minuteInput=\"cmatDatetimepickerTimeInput\" class=\"cmat-datetimepicker-time-input\"\r\n type=\"text\" inputmode=\"numeric\"\r\n maxlength=\"2\" [class.cmat-datetimepicker-time-input-active]=\"clockView === 'minute'\" [class.cmat-datetimepicker-time-input-warning]=\"!minuteInput.valid\" [timeMin]=\"0\" [timeMax]=\"59\" [timeValue]=\"minute\"\r\n [timeInterval]=\"interval\" (timeValueChanged)=\"handleMinuteInputChange($event)\" (focus)=\"handleFocus('minute')\" />\r\n\r\n @if (twelvehour) {\r\n <div class=\"cmat-datetimepicker-time-ampm\">\r\n <button matButton type=\"button\" class=\"cmat-datetimepicker-time-am\"\r\n aria-label=\"AM\" [class.cmat-datetimepicker-time-ampm-active]=\"AMPM === 'AM'\"\r\n (keydown)=\"$event.stopPropagation()\" (click)=\"ampmChange.emit('AM')\">AM</button>\r\n <button matButton type=\"button\" class=\"cmat-datetimepicker-time-pm\"\r\n aria-label=\"PM\" [class.cmat-datetimepicker-time-ampm-active]=\"AMPM === 'PM'\"\r\n (keydown)=\"$event.stopPropagation()\" (click)=\"ampmChange.emit('PM')\">PM</button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <cmat-datetimepicker-clock [dateFilter]=\"dateFilter\" [interval]=\"interval\"\r\n [maxDate]=\"maxDate\" [minDate]=\"minDate\" [selected]=\"selected\" [startView]=\"clockView\" [twelvehour]=\"twelvehour\"\r\n (selectedChange)=\"timeSelected($event)\" (activeDateChange)=\"onActiveDateChange($event)\">\r\n </cmat-datetimepicker-clock>\r\n\r\n <div class=\"cmat-datetimepicker-time-button-wrapper flex flex-row gap-4\">\r\n <button class=\"cmat=datetimepicker-time-cancel-button\" matButton=\"outlined\" type=\"button\" (click)=\"handleCancel()\">\r\n {{ datetimepickerIntl.cancelLabel }}\r\n </button>\r\n <button class=\"cmat-datetimepicker-time-ok-button\" matButton=\"filled\" type=\"button\" color=\"primary\" [disabled]=\"minuteInputDirective?.invalid || hourInputDirective?.invalid\"\r\n (click)=\"handleOk()\">\r\n {{ datetimepickerIntl.okLabel }}\r\n </button>\r\n </div>","import { NgClass } from '@angular/common';\r\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewEncapsulation, inject } from '@angular/core';\r\nimport { CMAT_DATETIME_FORMATS, CmatDatetimeFormats, DatetimeAdapter } from 'cmat/components/adapter';\r\nimport { CmatDatetimepickerCalendarCellComponent, CmatDatetimepickerCalendarBodyComponent } from './calendar-body';\r\nimport { createMissingDateImplError } from './datetimepicker-errors';\r\nimport { CmatDatetimepickerType } from './datetimepicker-types';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'cmat-datetimepicker-year-view',\r\n templateUrl: 'year-view.html',\r\n styleUrls: ['datetimepicker-base.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatDatetimepickerYearView',\r\n imports: [CmatDatetimepickerCalendarBodyComponent, NgClass]\r\n})\r\nexport class CmatDatetimepickerYearViewComponent<D> implements AfterContentInit, OnDestroy {\r\n @Output() userSelection = new EventEmitter<void>();\r\n\r\n @Input() type: CmatDatetimepickerType = 'date';\r\n \r\n @Input() dateFilter: (date: D) => boolean;\r\n \r\n @Output() selectedChange = new EventEmitter<D>();\r\n\r\n \r\n months: CmatDatetimepickerCalendarCellComponent[][];\r\n \r\n yearLabel: string;\r\n \r\n todayMonth: number | null;\r\n \r\n selectedMonth: number | null;\r\n calendarState: string;\r\n\r\n adapter = inject<DatetimeAdapter<D>>(DatetimeAdapter, { optional: true })!;\r\n private _dateFormats = inject<CmatDatetimeFormats>(CMAT_DATETIME_FORMATS, { optional: true })!;\r\n\r\n private _activeDate: D;\r\n private _selected: D;\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _elementRef = inject(ElementRef);\r\n private _calendarAnimationListener = this.calendarStateDone.bind(this);\r\n constructor() {\r\n if (!this.adapter) {\r\n throw createMissingDateImplError('CDatetimeAdapter');\r\n }\r\n\r\n if (!this._dateFormats) {\r\n throw createMissingDateImplError('CMAT_DATETIME_FORMATS');\r\n }\r\n\r\n this._activeDate = this.adapter.today();\r\n\r\n this._elementRef.nativeElement.addEventListener('animationend', this._calendarAnimationListener);\r\n }\r\n\r\n\r\n \r\n @Input()\r\n get activeDate(): D {\r\n return this._activeDate;\r\n }\r\n\r\n set activeDate(value: D) {\r\n const oldActiveDate = this._activeDate;\r\n this._activeDate = value || this.adapter.today();\r\n if (oldActiveDate && this._activeDate &&\r\n !this.adapter.sameYear(oldActiveDate, this._activeDate)) {\r\n this._init();\r\n\r\n if (this.adapter.isInNextMonth(oldActiveDate, this._activeDate)) {\r\n this._changeCalendarState('right');\r\n } else {\r\n this._changeCalendarState('left');\r\n }\r\n }\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get selected(): D {\r\n return this._selected;\r\n }\r\n\r\n set selected(value: D) {\r\n this._selected = value;\r\n this.selectedMonth = this._getMonthInCurrentYear(this.selected);\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._init();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._elementRef.nativeElement.removeEventListener('animationend', this._calendarAnimationListener);\r\n }\r\n\r\n \r\n monthSelected(month: number): void {\r\n const normalizedDate = this.adapter.createDatetime(this.adapter.getYear(this.activeDate), month, 1, 0, 0);\r\n\r\n this.selectedChange.emit(this.adapter.createDatetime(\r\n this.adapter.getYear(this.activeDate), month,\r\n Math.min(this.adapter.getDate(this.activeDate), this.adapter.getNumDaysInMonth(normalizedDate)),\r\n this.adapter.getHour(this.activeDate),\r\n this.adapter.getMinute(this.activeDate)));\r\n if (this.type === 'month') {\r\n this.userSelection.emit();\r\n }\r\n }\r\n\r\n calendarStateDone(event: AnimationEvent): void {\r\n if (event.animationName === 'slideCalendarLeft' || event.animationName === 'slideCalendarRight') {\r\n this.calendarState = '';\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n\r\n \r\n private _init(): void {\r\n this.selectedMonth = this._getMonthInCurrentYear(this.selected);\r\n this.todayMonth = this._getMonthInCurrentYear(this.adapter.today());\r\n this.yearLabel = this.adapter.getYearName(this.activeDate);\r\n\r\n const monthNames = this.adapter.getMonthNames('short');\r\n this.months = [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9, 10, 11]].map(row => row.map(\r\n month => this._createCellForMonth(month, monthNames[month])));\r\n }\r\n\r\n \r\n private _getMonthInCurrentYear(date: D): number | null {\r\n return this.adapter.sameYear(date, this.activeDate) ?\r\n this.adapter.getMonth(date) : null;\r\n }\r\n\r\n \r\n private _createCellForMonth(month: number, monthName: string): CmatDatetimepickerCalendarCellComponent {\r\n const ariaLabel = this.adapter.format(\r\n this.adapter.createDatetime(this.adapter.getYear(this.activeDate), month, 1,\r\n this.adapter.getHour(this.activeDate),\r\n this.adapter.getMinute(this.activeDate)),\r\n this._dateFormats.display.monthYearA11yLabel);\r\n return new CmatDatetimepickerCalendarCellComponent(\r\n month, monthName.toLocaleUpperCase(), ariaLabel, this._isMonthEnabled(month));\r\n }\r\n\r\n \r\n private _isMonthEnabled(month: number): boolean {\r\n if (!this.dateFilter) {\r\n return true;\r\n }\r\n\r\n const firstOfMonth = this.adapter.createDatetime(\r\n this.adapter.getYear(this.activeDate), month, 1,\r\n this.adapter.getHour(this.activeDate),\r\n this.adapter.getMinute(this.activeDate));\r\n for (let date = firstOfMonth; this.adapter.getMonth(date) === month;\r\n date = this.adapter.addCalendarDays(date, 1)) {\r\n if (this.dateFilter(date)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n private _changeCalendarState(direction: string): void {\r\n this.calendarState = direction;\r\n }\r\n\r\n}\r\n","<table class=\"cmat-datetimepicker-calendar-table\">\r\n <thead class=\"cmat-datetimepicker-calendar-table-header\"></thead>\r\n <tbody class=\"cmat-calendar-slide-animation\" cmat-datetimepicker-calendar-body role=\"grid\"\r\n [ngClass]=\"{\r\n 'left': calendarState==='left',\r\n 'right': calendarState==='right'\r\n }\" [activeCell]=\"adapter.getMonth(activeDate)\" [labelMinRequiredCells]=\"2\"\r\n [label]=\"yearLabel\" [rows]=\"months\" [selectedValue]=\"selectedMonth\" [todayValue]=\"todayMonth\"\r\n [allowDisabledSelection]=\"true\" (selectedValueChange)=\"monthSelected($event)\"></tbody>\r\n</table>","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { NgClass } from '@angular/common';\r\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnDestroy, Output, ViewEncapsulation, inject } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { CMAT_DATETIME_FORMATS, CmatDatetimeFormats, DatetimeAdapter } from 'cmat/components/adapter';\r\nimport { Subscription } from 'rxjs';\r\nimport { CmatDatetimepickerClockComponent } from './clock';\r\nimport { createMissingDateImplError } from './datetimepicker-errors';\r\nimport { CmatDatetimepickerFilterType } from './datetimepicker-filtertype';\r\nimport { CmatDatetimepickerIntl } from './datetimepicker-intl';\r\nimport { CmatAMPM, CmatCalendarView, CmatClockView, CmatDatetimepickerType } from './datetimepicker-types';\r\nimport { CmatDatetimepickerMonthViewComponent } from './month-view';\r\nimport { getActiveOffset, isSameMultiYearView, yearsPerPage, yearsPerRow, CmatDatetimepickerMultiYearViewComponent } from './multi-year-view';\r\nimport { CmatDatetimepickerTimeComponent } from './time';\r\nimport { CmatDatetimepickerYearViewComponent } from './year-view';\r\n\r\n\r\n@Component({\r\n selector: 'cmat-datetimepicker-calendar',\r\n templateUrl: 'calendar.html',\r\n styleUrls: ['calendar.scss', 'datetimepicker-base.scss'],\r\n host: {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n '[class.cmat-datetimepicker-calendar-with-time-input]': 'timeInput',\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatDatetimepickerCalendar',\r\n imports: [MatButtonModule, CmatDatetimepickerMonthViewComponent, CmatDatetimepickerYearViewComponent,\r\n CmatDatetimepickerMultiYearViewComponent, CmatDatetimepickerTimeComponent, CmatDatetimepickerClockComponent, NgClass]\r\n})\r\nexport class CmatDatetimepickerCalendarComponent<D> implements AfterContentInit, OnDestroy {\r\n @Output() userSelection = new EventEmitter<void>();\r\n \r\n @Input() multiYearSelector: boolean = false;\r\n \r\n @Input() startView: CmatCalendarView = 'month';\r\n @Input() twelvehour: boolean = false;\r\n @Input() timeInterval: number = 1;\r\n \r\n @Input() dateFilter: (date: D, type: CmatDatetimepickerFilterType) => boolean;\r\n\r\n \r\n @Input() preventSameDateTimeSelection = false;\r\n \r\n @Output() selectedChange: EventEmitter<D> = new EventEmitter<D>();\r\n \r\n @Output() viewChanged: EventEmitter<CmatCalendarView> = new EventEmitter<CmatCalendarView>();\r\n @HostBinding('class') class = 'cmat-datetimepicker-calendar';\r\n @HostBinding('attr.aria-label') label = 'ariaLabel';\r\n @HostBinding('role') role = 'dialog';\r\n @HostBinding('tabindex') tabindex = 0;\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n AMPM: CmatAMPM;\r\n clockView: CmatClockView = 'hour';\r\n calendarState: string;\r\n\r\n \r\n private _elementRef = inject(ElementRef);\r\n private _intl = inject(CmatDatetimepickerIntl);\r\n private _adapter = inject<DatetimeAdapter<D>>(DatetimeAdapter, { optional: true })!;\r\n private _dateFormats = inject<CmatDatetimeFormats>(CMAT_DATETIME_FORMATS, { optional: true })!;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _currentView: CmatCalendarView;\r\n private _intlChanges: Subscription;\r\n private _clampedActiveDate: D;\r\n private _type: CmatDatetimepickerType = 'date';\r\n private _startAt: D | null;\r\n private _selected: D | null;\r\n private _minDate: D | null;\r\n private _maxDate: D | null;\r\n private _timeInput = false;\r\n private _calendarAnimationListener = this.calendarStateDone.bind(this);\r\n constructor() {\r\n const _intl = this._intl;\r\n const changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n if (!this._adapter) {\r\n throw createMissingDateImplError('CDatetimeAdapter');\r\n }\r\n\r\n if (!this._dateFormats) {\r\n throw createMissingDateImplError('CMAT_DATETIME_FORMATS');\r\n }\r\n\r\n this._intlChanges = _intl.changes\r\n .subscribe(() => changeDetectorRef.markForCheck());\r\n\r\n this._elementRef.nativeElement.addEventListener('animationend', this._calendarAnimationListener);\r\n }\r\n\r\n @Input()\r\n get type(): CmatDatetimepickerType {\r\n return this._type;\r\n }\r\n\r\n set type(value: CmatDatetimepickerType) {\r\n this._type = value || 'date';\r\n if (this.type === 'year') {\r\n this.multiYearSelector = true;\r\n }\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get startAt(): D | null {\r\n return this._startAt;\r\n }\r\n\r\n set startAt(value: D | null) {\r\n this._startAt = this._adapter.getValidDateOrNull(value);\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get timeInput(): boolean {\r\n return this._timeInput;\r\n }\r\n set timeInput(value: boolean) {\r\n this._timeInput = coerceBooleanProperty(value);\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get selected(): D | null {\r\n return this._selected;\r\n }\r\n\r\n set selected(value: D | null) {\r\n this._selected = this._adapter.getValidDateOrNull(value);\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get minDate(): D | null {\r\n return this._minDate;\r\n }\r\n\r\n set minDate(value: D | null) {\r\n this._minDate = this._adapter.getValidDateOrNull(value);\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get maxDate(): D | null {\r\n return this._maxDate;\r\n }\r\n\r\n set maxDate(value: D | null) {\r\n this._maxDate = this._adapter.getValidDateOrNull(value);\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get activeDate(): D {\r\n return this._clampedActiveDate;\r\n }\r\n\r\n set activeDate(value: D) {\r\n const oldActiveDate = this._clampedActiveDate;\r\n this._clampedActiveDate = this._adapter.clampDate(value, this.minDate, this.maxDate);\r\n if (oldActiveDate && this._clampedActiveDate &&\r\n !this._adapter.sameMonthAndYear(oldActiveDate, this._clampedActiveDate)) {\r\n if (this._adapter.isInNextMonth(oldActiveDate, this._clampedActiveDate)) {\r\n this._changeCalendarState('right');\r\n } else {\r\n this._changeCalendarState('left');\r\n }\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get currentView(): CmatCalendarView {\r\n return this._currentView;\r\n }\r\n\r\n set currentView(view: CmatCalendarView) {\r\n this._currentView = view;\r\n this.viewChanged.emit(view);\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get yearButtonText(): string {\r\n return this._adapter.getYearName(this.activeDate);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get yearPeriodText(): string {\r\n\r\n if (this.currentView === 'multi-year') {\r\n const activeYear = this._adapter.getYear(this.activeDate);\r\n const minYearOfPage = activeYear - getActiveOffset(\r\n this._adapter, this.activeDate, this.minDate, this.maxDate);\r\n const maxYearOfPage = minYearOfPage + yearsPerPage - 1;\r\n const minYearName =\r\n this._adapter.getYearName(this._adapter.createDate(minYearOfPage, 0, 1));\r\n const maxYearName =\r\n this._adapter.getYearName(this._adapter.createDate(maxYearOfPage, 0, 1));\r\n return this._intl.formatYearRange(minYearName, maxYearName);\r\n }\r\n\r\n return this.currentView === 'month' ? this._adapter.getMonthNames('long')[this._adapter.getMonth(this.activeDate)] :\r\n this._adapter.getYearName(this.activeDate);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get yearButtonLabel(): string {\r\n return this.multiYearSelector\r\n ? this._intl.switchToMultiYearViewLabel\r\n : this._intl.switchToYearViewLabel;\r\n }\r\n\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get dateButtonText(): string {\r\n switch (this.type) {\r\n case 'month':\r\n return this._adapter.getMonthNames('long')[this._adapter.getMonth(this.activeDate)];\r\n default:\r\n return this._adapter.format(this.activeDate, this._dateFormats.display.popupHeaderDateLabel);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get dateButtonLabel(): string {\r\n return this._intl.switchToMonthViewLabel;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get hoursButtonText(): string {\r\n let hour = this._adapter.getHour(this.activeDate);\r\n if (this.twelvehour) {\r\n if (hour === 0) {\r\n hour = 24;\r\n }\r\n hour = hour > 12 ? (hour - 12) : hour;\r\n }\r\n return this._2digit(hour);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get hourButtonLabel(): string {\r\n return this._intl.switchToClockHourViewLabel;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get minutesButtonText(): string {\r\n return this._2digit(this._adapter.getMinute(this.activeDate));\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get minuteButtonLabel(): string {\r\n return this._intl.switchToClockMinuteViewLabel;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get prevButtonLabel(): string {\r\n switch (this._currentView) {\r\n case 'month':\r\n return this._intl.prevMonthLabel;\r\n case 'year':\r\n return this._intl.prevYearLabel;\r\n case 'multi-year':\r\n return this._intl.prevMultiYearLabel;\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get nextButtonLabel(): string {\r\n switch (this._currentView) {\r\n case 'month':\r\n return this._intl.nextMonthLabel;\r\n case 'year':\r\n return this._intl.nextYearLabel;\r\n case 'multi-year':\r\n return this._intl.nextMultiYearLabel;\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n handleCalendarBodyKeydown(event: KeyboardEvent): void {\r\n if (this.currentView === 'month') {\r\n this._handleCalendarBodyKeydownInMonthView(event);\r\n } else if (this.currentView === 'year') {\r\n this._handleCalendarBodyKeydownInYearView(event);\r\n } else if (this.currentView === 'multi-year') {\r\n this._handleCalendarBodyKeydownInMultiYearView(event);\r\n } else {\r\n this._handleCalendarBodyKeydownInClockView(event);\r\n }\r\n }\r\n\r\n \r\n dateFilterForViews = (date: D): boolean => !!date &&\r\n (!this.dateFilter || this.dateFilter(date, CmatDatetimepickerFilterType.DATE)) &&\r\n (!this.minDate || this._adapter.compareDate(date, this.minDate) >= 0) &&\r\n (!this.maxDate || this._adapter.compareDate(date, this.maxDate) <= 0);\r\n\r\n userSelected(): void {\r\n this.userSelection.emit();\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.activeDate = this.startAt ?? this._adapter.today();\r\n this.selectAMPM(this.activeDate);\r\n this.focusActiveCell();\r\n if (this.type === 'year') {\r\n this.currentView = 'multi-year';\r\n } else if (this.type === 'month') {\r\n this.currentView = 'year';\r\n } else if (this.type === 'time') {\r\n this.currentView = 'clock';\r\n } else {\r\n this.currentView = this.startView || 'month';\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._elementRef.nativeElement.removeEventListener('animationend', this._calendarAnimationListener);\r\n\r\n this._intlChanges.unsubscribe();\r\n }\r\n\r\n \r\n dateSelected(date: D): void {\r\n if (this.type === 'date') {\r\n if (!this._adapter.sameDate(date, this.selected) || !this.preventSameDateTimeSelection) {\r\n this.selectedChange.emit(date);\r\n }\r\n } else {\r\n this.activeDate = date;\r\n this.currentView = 'clock';\r\n }\r\n }\r\n\r\n \r\n monthSelected(month: D): void {\r\n if (this.type === 'month') {\r\n if (!this._adapter.sameMonthAndYear(month, this.selected) || !this.preventSameDateTimeSelection) {\r\n this.selectedChange.emit(this._adapter.getFirstDateOfMonth(month));\r\n }\r\n } else {\r\n this.activeDate = month;\r\n this.currentView = 'month';\r\n this.clockView = 'hour';\r\n }\r\n }\r\n\r\n \r\n yearSelected(year: D): void {\r\n if (this.type === 'year') {\r\n if ((this.selected && !this._adapter.sameYear(year, this.selected)) || !this.preventSameDateTimeSelection) {\r\n const normalizedDate = this._adapter.createDatetime(this._adapter.getYear(year), 0, 1, 0, 0);\r\n this.selectedChange.emit(normalizedDate);\r\n }\r\n } else {\r\n this.activeDate = year;\r\n this.currentView = 'year';\r\n }\r\n }\r\n\r\n timeSelected(date: D): void {\r\n this.activeDate = this.updateDate(date);\r\n if (!this._adapter.sameDatetime(date, this.selected) || !this.preventSameDateTimeSelection) {\r\n this.selectedChange.emit(date);\r\n }\r\n }\r\n\r\n dialTimeSelected(date: D): void {\r\n if (this.clockView !== 'minute') {\r\n this.activeDate = this.updateDate(date);\r\n this.clockView = 'minute';\r\n } else {\r\n if (!this._adapter.sameDatetime(date, this.selected) || !this.preventSameDateTimeSelection) {\r\n this.selectedChange.emit(date);\r\n }\r\n }\r\n }\r\n\r\n onActiveDateChange(date: D): void {\r\n this.activeDate = date;\r\n }\r\n\r\n updateDate(date: D): D {\r\n if (this.twelvehour) {\r\n const HOUR = this._adapter.getHour(date);\r\n if (HOUR === 12) {\r\n if (this.AMPM === 'AM') {\r\n return this._adapter.addCalendarHours(date, -12);\r\n }\r\n } else if (this.AMPM === 'PM') {\r\n return this._adapter.addCalendarHours(date, 12);\r\n }\r\n }\r\n return date;\r\n }\r\n\r\n selectAMPM(date: D): void {\r\n if (this._adapter.getHour(date) > 11) {\r\n this.AMPM = 'PM';\r\n } else {\r\n this.AMPM = 'AM';\r\n }\r\n }\r\n\r\n ampmClicked(source: CmatAMPM): void {\r\n this._currentView = 'clock';\r\n\r\n if (source === this.AMPM) {\r\n return;\r\n }\r\n this.AMPM = source;\r\n const currentHour = this._adapter.getHour(this.activeDate);\r\n let newHourValue: number;\r\n if (this.AMPM === 'AM') {\r\n newHourValue = currentHour >= 12 ? this._adapter.getHour(this.activeDate) - 12 : 12;\r\n }\r\n else {\r\n newHourValue = (currentHour + 12) % 24;\r\n }\r\n\r\n this.activeDate = this._adapter.createDatetime(\r\n this._adapter.getYear(this.activeDate),\r\n this._adapter.getMonth(this.activeDate),\r\n this._adapter.getDate(this.activeDate),\r\n newHourValue,\r\n this._adapter.getMinute(this.activeDate)\r\n );\r\n }\r\n\r\n yearClicked(): void {\r\n if (this.type === 'year' || this.multiYearSelector) {\r\n this.currentView = 'multi-year';\r\n return;\r\n }\r\n this.currentView = 'year';\r\n }\r\n\r\n dateClicked(): void {\r\n if (this.type !== 'month') {\r\n this.currentView = 'month';\r\n }\r\n }\r\n\r\n hoursClicked(): void {\r\n this.currentView = 'clock';\r\n this.clockView = 'hour';\r\n }\r\n\r\n minutesClicked(): void {\r\n this.currentView = 'clock';\r\n this.clockView = 'minute';\r\n }\r\n\r\n \r\n previousClicked(): void {\r\n this.activeDate = this.currentView === 'month' ?\r\n this._adapter.addCalendarMonths(this.activeDate, -1) :\r\n this._adapter.addCalendarYears(\r\n this.activeDate, this.currentView === 'year' ? -1 : -yearsPerPage\r\n );\r\n }\r\n\r\n \r\n nextClicked(): void {\r\n this.activeDate = this.currentView === 'month' ?\r\n this._adapter.addCalendarMonths(this.activeDate, 1) :\r\n this._adapter.addCalendarYears(\r\n this.activeDate, this.currentView === 'year' ? 1 : yearsPerPage\r\n );\r\n }\r\n\r\n \r\n previousEnabled(): boolean {\r\n if (!this.minDate) {\r\n return true;\r\n }\r\n return !this.minDate || !this._isSameView(this.activeDate, this.minDate);\r\n }\r\n\r\n \r\n nextEnabled(): boolean {\r\n return !this.maxDate || !this._isSameView(this.activeDate, this.maxDate);\r\n }\r\n\r\n\r\n focusActiveCell(): void {\r\n this._elementRef.nativeElement.focus();\r\n }\r\n\r\n calendarStateDone(event: AnimationEvent): void {\r\n if (event.animationName === 'slideCalendarLeft' || event.animationName === 'slideCalendarRight') {\r\n this.calendarState = '';\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n\r\n \r\n private _isSameView(date1: D, date2: D): boolean {\r\n if (this.currentView === 'month') {\r\n return this._adapter.getYear(date1) === this._adapter.getYear(date2) &&\r\n this._adapter.getMonth(date1) === this._adapter.getMonth(date2);\r\n }\r\n if (this.currentView === 'year') {\r\n return this._adapter.getYear(date1) === this._adapter.getYear(date2);\r\n }\r\n return isSameMultiYearView(\r\n this._adapter, date1, date2, this.minDate, this.maxDate);\r\n }\r\n\r\n \r\n private _handleCalendarBodyKeydownInMonthView(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'ArrowLeft':\r\n this.activeDate = this._adapter.addCalendarDays(this.activeDate, -1);\r\n break;\r\n case 'ArrowRight':\r\n this.activeDate = this._adapter.addCalendarDays(this.activeDate, 1);\r\n break;\r\n case 'ArrowUp':\r\n this.activeDate = this._adapter.addCalendarDays(this.activeDate, -7);\r\n break;\r\n case 'ArrowDown':\r\n this.activeDate = this._adapter.addCalendarDays(this.activeDate, 7);\r\n break;\r\n case 'Home':\r\n this.activeDate = this._adapter.addCalendarDays(this.activeDate,\r\n 1 - this._adapter.getDate(this.activeDate));\r\n break;\r\n case 'End':\r\n this.activeDate = this._adapter.addCalendarDays(this.activeDate,\r\n (this._adapter.getNumDaysInMonth(this.activeDate) -\r\n this._adapter.getDate(this.activeDate)));\r\n break;\r\n case 'PageUp':\r\n this.activeDate = event.altKey ?\r\n this._adapter.addCalendarYears(this.activeDate, -1) :\r\n this._adapter.addCalendarMonths(this.activeDate, -1);\r\n break;\r\n case 'PageDown':\r\n this.activeDate = event.altKey ?\r\n this._adapter.addCalendarYears(this.activeDate, 1) :\r\n this._adapter.addCalendarMonths(this.activeDate, 1);\r\n break;\r\n case 'Enter':\r\n if (this.dateFilterForViews(this.activeDate)) {\r\n this.dateSelected(this.activeDate);\r\n event.preventDefault();\r\n }\r\n return;\r\n default:\r\n return;\r\n }\r\n event.preventDefault();\r\n }\r\n\r\n \r\n private _handleCalendarBodyKeydownInYearView(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'ArrowLeft':\r\n this.activeDate = this._adapter.addCalendarMonths(this.activeDate, -1);\r\n break;\r\n case 'ArrowRight':\r\n this.activeDate = this._adapter.addCalendarMonths(this.activeDate, 1);\r\n break;\r\n case 'ArrowUp':\r\n this.activeDate = this._prevMonthInSameCol(this.activeDate);\r\n break;\r\n case 'ArrowDown':\r\n this.activeDate = this._nextMonthInSameCol(this.activeDate);\r\n break;\r\n case 'Home':\r\n this.activeDate = this._adapter.addCalendarMonths(this.activeDate,\r\n -this._adapter.getMonth(this.activeDate));\r\n break;\r\n case 'End':\r\n this.activeDate = this._adapter.addCalendarMonths(this.activeDate,\r\n 11 - this._adapter.getMonth(this.activeDate));\r\n break;\r\n case 'PageUp':\r\n this.activeDate =\r\n this._adapter.addCalendarYears(this.activeDate, event.altKey ? -10 : -1);\r\n break;\r\n case 'PageDown':\r\n this.activeDate =\r\n this._adapter.addCalendarYears(this.activeDate, event.altKey ? 10 : 1);\r\n break;\r\n case 'Enter':\r\n this.monthSelected(this.activeDate);\r\n break;\r\n default:\r\n return;\r\n }\r\n event.preventDefault();\r\n }\r\n\r\n \r\n private _handleCalendarBodyKeydownInMultiYearView(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'ArrowLeft':\r\n this.activeDate = this._adapter.addCalendarYears(this.activeDate, -1);\r\n break;\r\n case 'ArrowRight':\r\n this.activeDate = this._adapter.addCalendarYears(this.activeDate, 1);\r\n break;\r\n case 'ArrowUp':\r\n this.activeDate = this._adapter.addCalendarYears(this.activeDate, -yearsPerRow);\r\n break;\r\n case 'ArrowDown':\r\n this.activeDate = this._adapter.addCalendarYears(this.activeDate, yearsPerRow);\r\n break;\r\n case 'Home':\r\n this.activeDate = this._adapter.addCalendarYears(this.activeDate,\r\n -getActiveOffset(this._adapter, this.activeDate, this.minDate, this.maxDate));\r\n break;\r\n case 'End':\r\n this.activeDate = this._adapter.addCalendarYears(this.activeDate,\r\n yearsPerPage - getActiveOffset(\r\n this._adapter, this.activeDate, this.minDate, this.maxDate) - 1);\r\n break;\r\n case 'PageUp':\r\n this.activeDate =\r\n this._adapter.addCalendarYears(\r\n this.activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);\r\n break;\r\n case 'PageDown':\r\n this.activeDate =\r\n this._adapter.addCalendarYears(\r\n this.activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);\r\n break;\r\n case 'Enter':\r\n this.yearSelected(this.activeDate);\r\n break;\r\n default:\r\n return;\r\n }\r\n }\r\n\r\n \r\n private _handleCalendarBodyKeydownInClockView(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'ArrowUp':\r\n this.activeDate = this.clockView === 'hour' ?\r\n this._adapter.addCalendarHours(this.activeDate, 1) :\r\n this._adapter.addCalendarMinutes(this.activeDate, this.timeInterval);\r\n this.selectAMPM(this.activeDate);\r\n break;\r\n case 'ArrowDown':\r\n this.activeDate = this.clockView === 'hour' ?\r\n this._adapter.addCalendarHours(this.activeDate, -1) :\r\n this._adapter.addCalendarMinutes(this.activeDate, -this.timeInterval);\r\n this.selectAMPM(this.activeDate);\r\n break;\r\n case 'Enter':\r\n if (!this.timeInput) {\r\n this.dialTimeSelected(this.activeDate);\r\n }\r\n return;\r\n default:\r\n return;\r\n }\r\n event.preventDefault();\r\n }\r\n\r\n \r\n private _prevMonthInSameCol(date: D): D {\r\n const increment = this._adapter.getMonth(date) <= 4 ? -5 :\r\n (this._adapter.getMonth(date) >= 7 ? -7 : -12);\r\n return this._adapter.addCalendarMonths(date, increment);\r\n }\r\n\r\n \r\n private _nextMonthInSameCol(date: D): D {\r\n const increment = this._adapter.getMonth(date) <= 4 ? 7 :\r\n (this._adapter.getMonth(date) >= 7 ? 5 : 12);\r\n return this._adapter.addCalendarMonths(date, increment);\r\n }\r\n\r\n private _changeCalendarState(direction: string): void {\r\n this.calendarState = direction;\r\n }\r\n\r\n private _2digit(n: number): string {\r\n return ('00' + n).slice(-2);\r\n }\r\n}\r\n","<div class=\"cmat-datetimepicker-calendar-header\">\r\n @if (type !== 'time') {\r\n <div role=\"presentation\" class=\"cmat-datetimepicker-calendar-header-year header-button\"\r\n [class.active]=\"currentView === 'year' || currentView === 'multi-year'\" [attr.aria-label]=\"yearButtonLabel\"\r\n (click)=\"yearClicked()\">\r\n <span class=\"font-medium\">{{ yearButtonText }}</span>\r\n @if (multiYearSelector || type === 'year') {\r\n <svg class=\"cmat-datetimepicker-calendar-header-year-dropdown\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\">\r\n <path d=\"M7,10L12,15L17,10H7Z\"></path>\r\n </svg>\r\n }\r\n </div>\r\n }\r\n @if (type !== 'year') {\r\n <div class=\"cmat-datetimepicker-calendar-header-date-time\">\r\n @if (type !== 'time') {\r\n <div role=\"presentation\" class=\"cmat-datetimepicker-calendar-header-date header-button\"\r\n [class.active]=\"currentView === 'month'\" [class.not-clickable]=\"type === 'month'\"\r\n [attr.aria-label]=\"dateButtonLabel\" (click)=\"dateClicked()\">{{ dateButtonText }}</div>\r\n }\r\n @if (type.endsWith('time')) {\r\n <span class=\"cmat-datetimepicker-calendar-header-time\" [class.active]=\"currentView === 'clock'\">\r\n <span class=\"cmat-datetimepicker-calendar-header-hour-minute-container flex place-items-center\">\r\n <div role=\"presentation\" class=\"cmat-datetimepicker-calendar-header-hours header-button\"\r\n [class.active]=\"clockView === 'hour'\" [attr.aria-label]=\"hourButtonLabel\" (click)=\"hoursClicked()\">\r\n {{ hoursButtonText }}</div>\r\n <span class=\"cmat-datetimepicker-calendar-header-hour-minute-separator\">&#58;</span>\r\n <div role=\"presentation\" class=\"cmat-datetimepicker-calendar-header-minutes header-button\"\r\n [class.active]=\"clockView === 'minute'\" [attr.aria-label]=\"minuteButtonLabel\" (click)=\"minutesClicked()\">{{\r\n minutesButtonText }}</div>\r\n </span>\r\n @if (twelvehour) {\r\n <span class=\"cmat-datetimepicker-calendar-header-ampm-container flex place-items-center\">\r\n <div role=\"presentation\" class=\"cmat-datetimepicker-calendar-header-ampm header-button\" aria-label=\"AM\"\r\n [class.active]=\"AMPM === 'AM'\" (click)=\"ampmClicked('AM')\">AM</div>\r\n <div role=\"presentation\" class=\"cmat-datetimepicker-calendar-header-ampm header-button\" aria-label=\"PM\"\r\n [class.active]=\"AMPM === 'PM'\" (click)=\"ampmClicked('PM')\">PM</div>\r\n </span>\r\n }\r\n </span>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<div class=\"cmat-datetimepicker-calendar-content\" [ngClass]=\"{'flex flex-col justify-center': currentView==='clock'}\">\r\n @if (currentView === 'month' || currentView === 'year' || currentView === 'multi-year') {\r\n <div class=\"cmat-datetimepickermonth-content\">\r\n <div class=\"cmat-datetimepicker-calendar-controls\">\r\n <button matIconButton type=\"button\" class=\"cmat-datetimepicker-calendar-previous-button\"\r\n [class.disabled]=\"!previousEnabled()\" [attr.aria-disabled]=\"!previousEnabled()\"\r\n [attr.aria-label]=\"prevButtonLabel\" (click)=\"previousClicked()\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"></path>\r\n </svg>\r\n </button>\r\n <div class=\"cmat-datetimepicker-calendar-period-button text-default font-medium cmat-calendar-slide-animation\"\r\n [ngClass]=\"{\r\n 'left': calendarState==='left',\r\n 'right': calendarState==='right'\r\n }\">\r\n <strong>{{ yearPeriodText }}</strong>\r\n </div>\r\n <button type=\"button\" matIconButton class=\"cmat-datetimepicker-calendar-next-button\"\r\n [class.disabled]=\"!nextEnabled()\" [attr.aria-disabled]=\"!nextEnabled()\" [attr.aria-label]=\"nextButtonLabel\"\r\n (click)=\"nextClicked()\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"></path>\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n }\r\n\r\n @switch (currentView) {\r\n @case ('month') {\r\n <cmat-datetimepicker-month-view [activeDate]=\"activeDate\" [dateFilter]=\"dateFilterForViews\" [selected]=\"selected!\"\r\n [type]=\"type\" (userSelection)=\"userSelected()\" (selectedChange)=\"dateSelected($event)\">\r\n </cmat-datetimepicker-month-view>\r\n }\r\n @case ('year') {\r\n <cmat-datetimepicker-year-view [activeDate]=\"activeDate\" [dateFilter]=\"dateFilterForViews\" [selected]=\"selected!\"\r\n [type]=\"type\" (userSelection)=\"userSelected()\" (selectedChange)=\"monthSelected($event)\">\r\n </cmat-datetimepicker-year-view>\r\n }\r\n @case ('multi-year') {\r\n <cmat-datetimepicker-multi-year-view [activeDate]=\"activeDate\" [dateFilter]=\"dateFilterForViews\" [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\" [selected]=\"selected!\" [type]=\"type\" (userSelection)=\"userSelected()\"\r\n (selectedChange)=\"yearSelected($event)\">\r\n </cmat-datetimepicker-multi-year-view>\r\n }\r\n @default {\r\n @if (timeInput) {\r\n <cmat-datetimepicker-time [AMPM]=\"AMPM\" [clockView]=\"clockView\" [twelvehour]=\"twelvehour\" [dateFilter]=\"dateFilter\"\r\n [interval]=\"timeInterval\" [maxDate]=\"maxDate\" [minDate]=\"minDate\" [selected]=\"activeDate\"\r\n (userSelection)=\"userSelected()\" (activeDateChange)=\"onActiveDateChange($event)\"\r\n (selectedChange)=\"timeSelected($event)\" (ampmChange)=\"ampmClicked($event)\" (clockViewChange)=\"clockView = $event\">\r\n </cmat-datetimepicker-time>\r\n } @else {\r\n <cmat-datetimepicker-clock [dateFilter]=\"dateFilter\" [interval]=\"timeInterval\" [maxDate]=\"maxDate\" [minDate]=\"minDate\"\r\n [selected]=\"activeDate\" [startView]=\"clockView\" [twelvehour]=\"twelvehour\" (userSelection)=\"userSelected()\"\r\n (activeDateChange)=\"onActiveDateChange($event)\" (selectedChange)=\"dialTimeSelected($event)\">\r\n </cmat-datetimepicker-clock>\r\n }\r\n }\r\n }\r\n</div>","import { A11yModule } from '@angular/cdk/a11y';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { coerceBooleanProperty, coerceStringArray } from '@angular/cdk/coercion';\r\nimport { hasModifierKey } from '@angular/cdk/keycodes';\r\nimport { FlexibleConnectedPositionStrategy, GlobalPositionStrategy, Overlay, OverlayConfig, OverlayRef, ScrollStrategy } from '@angular/cdk/overlay';\r\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { NgClass } from '@angular/common';\r\nimport { AfterContentInit, afterNextRender, ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentRef, ElementRef, EventEmitter, InjectionToken, Injector, Input, OnDestroy, OnInit, Output, ViewChild, ViewContainerRef, ViewEncapsulation, DOCUMENT, inject } from '@angular/core';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { DatetimeAdapter } from 'cmat/components/adapter';\r\nimport { Subject, Subscription, merge } from 'rxjs';\r\nimport { filter, take } from 'rxjs/operators';\r\nimport { CmatDatetimepickerCalendarComponent } from './calendar';\r\nimport { createMissingDateImplError } from './datetimepicker-errors';\r\nimport { CmatDatetimepickerFilterType } from './datetimepicker-filtertype';\r\nimport { CmatDatetimepickerInputDirective } from './datetimepicker-input';\r\nimport { CmatCalendarView, CmatDatetimepickerMode, CmatDatetimepickerType, DatetimepickerDropdownPositionX, DatetimepickerDropdownPositionY } from './datetimepicker-types';\r\n\r\n\r\nlet datetimepickerUid = 0;\r\n\r\n\r\nexport const CMAT_DATETIMEPICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\r\n 'cmat-datetimepicker-scroll-strategy'\r\n);\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function CMAT_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\r\n return () => overlay.scrollStrategies.reposition();\r\n}\r\n\r\nexport const CMAT_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\r\n provide: CMAT_DATETIMEPICKER_SCROLL_STRATEGY,\r\n deps: [Overlay],\r\n useFactory: CMAT_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY\r\n};\r\n\r\n@Component({\r\n selector: 'cmat-datetimepicker-content',\r\n templateUrl: 'datetimepicker-content.html',\r\n host: {\r\n 'class': 'cmat-datetimepicker-content cmat-datetimepicker-transform-panel',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n '[class]': 'color ? \"mat-\" + color : \"\"',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n '[class.enter-dropdown]': 'animationState === \"enter-dropdown\"',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n '[class.enter-dialog]': 'animationState === \"enter-dialog\"',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n '[class.leave]': 'animationState === \"leave\"',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n '[class.cmat-datetimepicker-content-touch]': 'datetimepicker?.touchUi',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n '[attr.mode]': 'datetimepicker.mode'\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatDatetimepickerContent',\r\n imports: [A11yModule, CmatDatetimepickerCalendarComponent, NgClass]\r\n})\r\nexport class CmatDatetimepickerContentComponent<D> implements OnInit, AfterContentInit, OnDestroy {\r\n @ViewChild(CmatDatetimepickerCalendarComponent, { static: true }) _calendar!: CmatDatetimepickerCalendarComponent<D>;\r\n @Input() color: ThemePalette;\r\n\r\n datetimepicker!: CmatDatetimepickerComponent<D>;\r\n\r\n \r\n isAbove!: boolean;\r\n\r\n \r\n animationState!: 'enter-dropdown' | 'enter-dialog' | 'leave';\r\n\r\n \r\n readonly animationDone = new Subject<void>();\r\n\r\n \r\n dialogLabelId: string | null = null;\r\n\r\n protected _elementRef = inject(ElementRef);\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _animationEndListener: ((event: AnimationEvent) => void) | null = null;\r\n\r\n ngOnInit(): void {\r\n this.animationState = this.datetimepicker.touchUi ? 'enter-dialog' : 'enter-dropdown';\r\n\r\n this._animationEndListener = (event: AnimationEvent): void => {\r\n if (event.animationName === 'panel-dropdown-enter' || event.animationName === 'panel-dialog-enter' || event.animationName === 'panel-leave') {\r\n this.animationDone.next();\r\n }\r\n };\r\n\r\n this._elementRef.nativeElement.addEventListener('animationend', this._animationEndListener);\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._calendar.focusActiveCell();\r\n }\r\n\r\n startExitAnimation(): void {\r\n this.animationState = 'leave';\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.animationDone.complete();\r\n\r\n this._elementRef.nativeElement.removeEventListener('animationend', this._animationEndListener);\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'cmat-datetimepicker',\r\n exportAs: 'cmatDatetimepicker',\r\n template: '',\r\n styleUrls: ['datetimepicker.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false\r\n})\r\nexport class CmatDatetimepickerComponent<D> implements OnDestroy {\r\n \r\n @Input() startView: CmatCalendarView = 'month';\r\n @Input() mode: CmatDatetimepickerMode = 'auto';\r\n @Input() timeInterval: number = 1;\r\n \r\n @Input() preventSameDateTimeSelection = false;\r\n\r\n \r\n @Input()\r\n xPosition: DatetimepickerDropdownPositionX = 'start';\r\n\r\n \r\n @Input()\r\n yPosition: DatetimepickerDropdownPositionY = 'below';\r\n\r\n @Output() selectedChanged = new EventEmitter<D>();\r\n \r\n @Output() openedStream: EventEmitter<void> = new EventEmitter<void>();\r\n \r\n @Output() closedStream: EventEmitter<void> = new EventEmitter<void>();\r\n \r\n @Output() viewChanged: EventEmitter<CmatCalendarView> = new EventEmitter<CmatCalendarView>();\r\n \r\n\r\n \r\n id = `cmat-datetimepicker-${datetimepickerUid++}`;\r\n \r\n datetimepickerInput: CmatDatetimepickerInputDirective<D>;\r\n \r\n disabledChange = new Subject<boolean>();\r\n\r\n private _overlay = inject(Overlay);\r\n private _injector = inject(Injector);\r\n private _viewContainerRef = inject(ViewContainerRef);\r\n private _scrollStrategy = inject(CMAT_DATETIMEPICKER_SCROLL_STRATEGY);\r\n private _dateAdapter = inject<DatetimeAdapter<D>>(DatetimeAdapter, { optional: true })!;\r\n private _dir = inject(Directionality, { optional: true })!;\r\n private _document = inject(DOCUMENT, { optional: true })!;\r\n\r\n\r\n private _validSelected: D | null = null;\r\n\r\n \r\n private _overlayRef!: OverlayRef | null;\r\n\r\n \r\n private _componentRef!: ComponentRef<CmatDatetimepickerContentComponent<D>> | null;\r\n\r\n \r\n private _focusedElementBeforeOpen: HTMLElement | null = null;\r\n\r\n \r\n private _backdropHarnessClass = `${this.id}-backdrop`;\r\n\r\n private _inputStateChanges = Subscription.EMPTY;\r\n\r\n private _multiYearSelector = false;\r\n private _twelvehour = false;\r\n private _panelClass!: string[];\r\n private _opened = false;\r\n private _color: ThemePalette;\r\n private _startAt: D | null;\r\n private _type: CmatDatetimepickerType = 'datetime';\r\n private _touchUi = false;\r\n private _disabled: boolean;\r\n private _timeInput = true;\r\n private _restoreFocus = true;\r\n\r\n\r\n\r\n constructor() {\r\n if (!this._dateAdapter) {\r\n throw createMissingDateImplError('DatetimeAdapter');\r\n }\r\n }\r\n\r\n \r\n @Input()\r\n get multiYearSelector(): boolean {\r\n return this._multiYearSelector;\r\n }\r\n set multiYearSelector(value: boolean) {\r\n this._multiYearSelector = coerceBooleanProperty(value);\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get twelvehour(): boolean {\r\n return this._twelvehour;\r\n }\r\n set twelvehour(value: boolean) {\r\n this._twelvehour = coerceBooleanProperty(value);\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get panelClass(): string | string[] {\r\n return this._panelClass;\r\n }\r\n set panelClass(value: string | string[]) {\r\n this._panelClass = coerceStringArray(value);\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get opened(): boolean {\r\n return this._opened;\r\n }\r\n set opened(value: boolean) {\r\n coerceBooleanProperty(value) ? this.open() : this.close();\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get color(): ThemePalette {\r\n return (\r\n this._color ??\r\n (this.datetimepickerInput ? this.datetimepickerInput.getThemePalette() : undefined)\r\n );\r\n }\r\n set color(value: ThemePalette) {\r\n this._color = value;\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get startAt(): D | null {\r\n return this._startAt ?? (this.datetimepickerInput ? this.datetimepickerInput.value : null);\r\n }\r\n\r\n set startAt(date: D | null) {\r\n this._startAt = this._dateAdapter.getValidDateOrNull(date);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get type(): CmatDatetimepickerType {\r\n return this._type;\r\n }\r\n\r\n set type(value: CmatDatetimepickerType) {\r\n this._type = value || 'datetime';\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get timeInput(): boolean {\r\n return this._timeInput && !this.touchUi;\r\n }\r\n set timeInput(value: boolean) {\r\n this._timeInput = coerceBooleanProperty(value);\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get touchUi(): boolean {\r\n return this._touchUi;\r\n }\r\n\r\n set touchUi(value: boolean) {\r\n this._touchUi = coerceBooleanProperty(value);\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled === undefined && this.datetimepickerInput ?\r\n this.datetimepickerInput.disabled : !!this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n const newValue = coerceBooleanProperty(value);\r\n\r\n if (newValue !== this._disabled) {\r\n this._disabled = newValue;\r\n this.disabledChange.next(newValue);\r\n }\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get restoreFocus(): boolean {\r\n return this._restoreFocus;\r\n }\r\n set restoreFocus(value: boolean) {\r\n this._restoreFocus = coerceBooleanProperty(value);\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get selected(): D | null {\r\n return this._validSelected;\r\n }\r\n\r\n set selected(value: D | null) {\r\n this._validSelected = value;\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get minDate(): D | null {\r\n return this.datetimepickerInput?.min;\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get maxDate(): D | null {\r\n return this.datetimepickerInput?.max;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get dateFilter(): (date: D | null, type: CmatDatetimepickerFilterType) => boolean {\r\n return this.datetimepickerInput?.dateFilter;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._destroyOverlay();\r\n this.close();\r\n this._inputStateChanges.unsubscribe();\r\n this.disabledChange.complete();\r\n }\r\n\r\n \r\n registerInput(input: CmatDatetimepickerInputDirective<D>): void {\r\n if (this.datetimepickerInput) {\r\n throw Error('A MatDatepicker can only be associated with a single input.');\r\n }\r\n this.datetimepickerInput = input;\r\n this._inputStateChanges =\r\n this.datetimepickerInput.valueChange.subscribe((value: D | null) => this.selected = value);\r\n }\r\n\r\n\r\n \r\n open(): void {\r\n if (this.opened || this.disabled) {\r\n return;\r\n }\r\n if (!this.datetimepickerInput) {\r\n throw Error('Attempted to open an MatDatepicker with no associated input.');\r\n }\r\n\r\n this._focusedElementBeforeOpen = _getFocusedElementPierceShadowDom();\r\n this._openOverlay();\r\n this._opened = true;\r\n this.openedStream.emit();\r\n }\r\n\r\n \r\n close(): void {\r\n if (!this._opened) {\r\n return;\r\n }\r\n\r\n const canRestoreFocus =\r\n this._restoreFocus &&\r\n this._focusedElementBeforeOpen &&\r\n typeof this._focusedElementBeforeOpen.focus === 'function';\r\n\r\n const completeClose = (): void => {\r\n if (this._opened) {\r\n this._opened = false;\r\n this.closedStream.emit();\r\n }\r\n };\r\n\r\n if (this._componentRef) {\r\n const { instance, location } = this._componentRef;\r\n instance.startExitAnimation();\r\n instance.animationDone.pipe(take(1)).subscribe(() => {\r\n const activeElement = this._document.activeElement;\r\n if (\r\n canRestoreFocus &&\r\n (!activeElement ||\r\n activeElement === this._document.activeElement ||\r\n location.nativeElement.contains(activeElement))\r\n ) {\r\n this._focusedElementBeforeOpen?.focus();\r\n }\r\n\r\n this._focusedElementBeforeOpen = null;\r\n this._destroyOverlay();\r\n });\r\n }\r\n\r\n if (canRestoreFocus) {\r\n setTimeout(completeClose);\r\n } else {\r\n completeClose();\r\n }\r\n }\r\n \r\n select(date: D): void {\r\n const oldValue = this.selected;\r\n this.selected = date;\r\n if (!this._dateAdapter.sameDatetime(oldValue, this.selected)) {\r\n this.selectedChanged.emit(date);\r\n }\r\n }\r\n\r\n viewChange(type: CmatCalendarView): void {\r\n this.viewChanged.emit(type);\r\n }\r\n\r\n \r\n private _forwardContentValues(instance: CmatDatetimepickerContentComponent<D>): void {\r\n instance.datetimepicker = this;\r\n instance.color = this.color;\r\n instance.dialogLabelId = this.datetimepickerInput.getOverlayLabelId();\r\n }\r\n\r\n \r\n private _openOverlay(): void {\r\n this._destroyOverlay();\r\n\r\n const isDialog = this.touchUi;\r\n const labelId = this.datetimepickerInput.getOverlayLabelId();\r\n\r\n const portal = new ComponentPortal<CmatDatetimepickerContentComponent<D>>(\r\n CmatDatetimepickerContentComponent,\r\n this._viewContainerRef\r\n );\r\n const overlayRef = (this._overlayRef = this._overlay.create(\r\n new OverlayConfig({\r\n positionStrategy: isDialog ? this._getDialogStrategy() : this._getDropdownStrategy(),\r\n hasBackdrop: true,\r\n backdropClass: [\r\n isDialog ? 'cdk-overlay-dark-backdrop' : 'mat-overlay-transparent-backdrop',\r\n this._backdropHarnessClass,\r\n ],\r\n direction: this._dir,\r\n scrollStrategy: isDialog ? this._overlay.scrollStrategies.block() : this._scrollStrategy(),\r\n panelClass: `cmat-datetimepicker-${isDialog ? 'dialog' : 'popup'}`,\r\n })\r\n ));\r\n\r\n const overlayElement = overlayRef.overlayElement;\r\n overlayElement.setAttribute('role', 'dialog');\r\n\r\n if (labelId) {\r\n overlayElement.setAttribute('aria-labelledby', labelId);\r\n }\r\n\r\n if (isDialog) {\r\n overlayElement.setAttribute('aria-modal', 'true');\r\n }\r\n\r\n this._getCloseStream(overlayRef).subscribe((event: { preventDefault: VoidFunction }) => {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.close();\r\n });\r\n\r\n this._componentRef = overlayRef.attach(portal);\r\n this._forwardContentValues(this._componentRef.instance);\r\n if (!isDialog) {\r\n afterNextRender(\r\n () => {\r\n overlayRef.updatePosition();\r\n },\r\n { injector: this._injector }\r\n );\r\n\r\n }\r\n }\r\n\r\n \r\n private _destroyOverlay(): void {\r\n if (this._overlayRef) {\r\n this._overlayRef.dispose();\r\n this._overlayRef = this._componentRef = null;\r\n }\r\n }\r\n\r\n \r\n private _getDialogStrategy(): GlobalPositionStrategy {\r\n return this._overlay.position().global().centerHorizontally().centerVertically();\r\n }\r\n\r\n \r\n private _getDropdownStrategy(): FlexibleConnectedPositionStrategy {\r\n const strategy = this._overlay\r\n .position()\r\n .flexibleConnectedTo(this.datetimepickerInput.getConnectedOverlayOrigin())\r\n .withTransformOriginOn('.cmat-datetimepicker-content')\r\n .withFlexibleDimensions(false)\r\n .withViewportMargin(8)\r\n .withLockedPosition();\r\n\r\n return this._setConnectedPositions(strategy);\r\n }\r\n\r\n \r\n private _setConnectedPositions(strategy: FlexibleConnectedPositionStrategy): FlexibleConnectedPositionStrategy {\r\n const primaryX = this.xPosition === 'end' ? 'end' : 'start';\r\n const secondaryX = primaryX === 'start' ? 'end' : 'start';\r\n const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';\r\n const secondaryY = primaryY === 'top' ? 'bottom' : 'top';\r\n\r\n return strategy.withPositions([\r\n {\r\n originX: primaryX,\r\n originY: secondaryY,\r\n overlayX: primaryX,\r\n overlayY: primaryY,\r\n },\r\n {\r\n originX: primaryX,\r\n originY: primaryY,\r\n overlayX: primaryX,\r\n overlayY: secondaryY,\r\n },\r\n {\r\n originX: secondaryX,\r\n originY: secondaryY,\r\n overlayX: secondaryX,\r\n overlayY: primaryY,\r\n },\r\n {\r\n originX: secondaryX,\r\n originY: primaryY,\r\n overlayX: secondaryX,\r\n overlayY: secondaryY,\r\n },\r\n ]);\r\n }\r\n\r\n \r\n private _getCloseStream(overlayRef: OverlayRef): any {\r\n return merge(\r\n overlayRef.backdropClick(),\r\n overlayRef.detachments(),\r\n overlayRef.keydownEvents().pipe(\r\n filter(event =>\r\n (\r\n (event.code === 'Escape' && !hasModifierKey(event)) ||\r\n (this.datetimepickerInput &&\r\n hasModifierKey(event, 'altKey') &&\r\n event.code === 'ArrowUp')\r\n )\r\n )\r\n )\r\n );\r\n }\r\n}\r\n","<div cdkTrapFocus role=\"dialog\" class=\"cmat-datetimepicker-content-container\" [attr.aria-modal]=\"true\"\r\n [attr.aria-labelledby]=\"dialogLabelId ?? undefined\" [attr.mode]=\"datetimepicker.mode\">\r\n <cmat-datetimepicker-calendar [id]=\"datetimepicker.id\"\r\n [ngClass]=\"datetimepicker.panelClass\" [attr.mode]=\"datetimepicker.mode\" [type]=\"datetimepicker.type\"\r\n [startAt]=\"datetimepicker.startAt\" [startView]=\"datetimepicker.startView\" [maxDate]=\"datetimepicker.maxDate\"\r\n [minDate]=\"datetimepicker.minDate\" [dateFilter]=\"datetimepicker.dateFilter\"\r\n [multiYearSelector]=\"datetimepicker.multiYearSelector\"\r\n [preventSameDateTimeSelection]=\"datetimepicker.preventSameDateTimeSelection\"\r\n [timeInterval]=\"datetimepicker.timeInterval\" [twelvehour]=\"datetimepicker.twelvehour\"\r\n [selected]=\"datetimepicker.selected\" [timeInput]=\"datetimepicker.timeInput\"\r\n (selectedChange)=\"datetimepicker.select($event)\" (viewChanged)=\"datetimepicker.viewChange($event)\"\r\n (userSelection)=\"datetimepicker.close()\">\r\n </cmat-datetimepicker-calendar>\r\n</div>","/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { AfterContentInit, Directive, ElementRef, EventEmitter, forwardRef, Input, OnDestroy, Output, inject } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n Validators\r\n} from '@angular/forms';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { MatFormField } from '@angular/material/form-field';\r\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\r\nimport { DatetimeAdapter, CMAT_DATETIME_FORMATS, CmatDatetimeFormats } from 'cmat/components/adapter';\r\nimport { Subscription } from 'rxjs';\r\nimport { CmatDatetimepickerComponent } from './datetimepicker';\r\nimport { createMissingDateImplError } from './datetimepicker-errors';\r\nimport { CmatDatetimepickerFilterType } from './datetimepicker-filtertype';\r\n\r\nexport const CMAT_DATETIMEPICKER_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CmatDatetimepickerInputDirective),\r\n multi: true\r\n};\r\n\r\nexport const CMAT_DATETIMEPICKER_VALIDATORS: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => CmatDatetimepickerInputDirective),\r\n multi: true\r\n};\r\n\r\n\r\nexport class CmatDatetimepickerInputEvent<D> {\r\n \r\n value: D | null;\r\n\r\n constructor(public target: CmatDatetimepickerInputDirective<D>, public targetElement: HTMLElement) {\r\n this.value = this.target.value;\r\n }\r\n}\r\n\r\n\r\n@Directive({\r\n selector: 'input[cmatDatetimepicker]',\r\n providers: [\r\n CMAT_DATETIMEPICKER_VALUE_ACCESSOR,\r\n CMAT_DATETIMEPICKER_VALIDATORS,\r\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: CmatDatetimepickerInputDirective },\r\n ],\r\n \r\n host: {\r\n '[attr.aria-haspopup]': 'true',\r\n '[attr.aria-owns]': '(datetimepicker?.opened && datetimepicker.id) || null',\r\n '[attr.min]': 'min ? datetimepicker.toIso8601(min) : null',\r\n '[attr.max]': 'max ? datetimepicker.toIso8601(max) : null',\r\n '[disabled]': 'disabled',\r\n '(input)': 'onInput($event.target.value)',\r\n '(change)': 'onChange()',\r\n '(blur)': 'onBlur()',\r\n '(keydown)': 'onKeydown($event)'\r\n },\r\n exportAs: 'cmatDatepickerInput'\r\n})\r\nexport class CmatDatetimepickerInputDirective<D> implements AfterContentInit, ControlValueAccessor, OnDestroy,\r\n Validator { \r\n \r\n @Output() dateChange = new EventEmitter<CmatDatetimepickerInputEvent<D>>();\r\n \r\n @Output() dateInput = new EventEmitter<CmatDatetimepickerInputEvent<D>>();\r\n\r\n datetimepicker: CmatDatetimepickerComponent<D>;\r\n dateFilter: (date: D | null, type: CmatDatetimepickerFilterType) => boolean;\r\n\r\n \r\n valueChange = new EventEmitter<D | null>();\r\n \r\n disabledChange = new EventEmitter<boolean>();\r\n\r\n private _elementRef = inject(ElementRef);\r\n private _dateAdapter = inject<DatetimeAdapter<D>>(DatetimeAdapter, { optional: true })!;\r\n private _dateFormats = inject<CmatDatetimeFormats>(CMAT_DATETIME_FORMATS, { optional: true })!;\r\n private _formField = inject(MatFormField, { optional: true })!;\r\n\r\n private _datepickerSubscription = Subscription.EMPTY;\r\n private _localeSubscription = Subscription.EMPTY;\r\n \r\n private _lastValueValid = false;\r\n private _value: D | null;\r\n private _min: D | null;\r\n private _max: D | null;\r\n private _disabled: boolean;\r\n\r\n \r\n\r\n constructor() {\r\n const _dateAdapter = this._dateAdapter;\r\n\r\n if (!this._dateAdapter) {\r\n throw createMissingDateImplError('CDatetimeAdapter');\r\n }\r\n if (!this._dateFormats) {\r\n throw createMissingDateImplError('CMAT_DATETIME_FORMATS');\r\n }\r\n this._localeSubscription = _dateAdapter.localeChanges.subscribe();\r\n }\r\n\r\n \r\n @Input()\r\n set cmatDatetimepicker(value: CmatDatetimepickerComponent<D>) {\r\n this._registerDatetimepicker(value);\r\n }\r\n\r\n @Input() set cmatDatepickerFilter(filter: (date: D | null, type: CmatDatetimepickerFilterType) => boolean) {\r\n this.dateFilter = filter;\r\n this._validatorOnChange();\r\n }\r\n\r\n\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get value(): D | null {\r\n return this._value;\r\n }\r\n\r\n set value(value: D | null) {\r\n value = this._dateAdapter.deserialize(value);\r\n this._lastValueValid = !value || this._dateAdapter.isValid(value);\r\n value = this._dateAdapter.getValidDateOrNull(value);\r\n const oldDate = this.value;\r\n this._value = value;\r\n this._formatValue(value);\r\n setTimeout(() => {\r\n if (!this._dateAdapter.sameDatetime(oldDate, value)) {\r\n this.valueChange.emit(value);\r\n }\r\n });\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get min(): D | null {\r\n return this._min;\r\n }\r\n\r\n set min(value: D | null) {\r\n this._min = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n this._validatorOnChange();\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get max(): D | null {\r\n return this._max;\r\n }\r\n\r\n set max(value: D | null) {\r\n this._max = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n this._validatorOnChange();\r\n }\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get disabled(): boolean {\r\n return !!this._disabled;\r\n }\r\n\r\n set disabled(value: any) {\r\n const newValue = coerceBooleanProperty(value);\r\n\r\n if (this._disabled !== newValue) {\r\n this._disabled = newValue;\r\n this.disabledChange.emit(newValue);\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n if (this.datetimepicker) {\r\n this._datepickerSubscription = this.datetimepicker.selectedChanged.subscribe((selected: D) => {\r\n this.value = selected;\r\n this._cvaOnChange(selected);\r\n this._onTouched();\r\n this.dateInput.emit(new CmatDatetimepickerInputEvent(this, this._elementRef.nativeElement));\r\n this.dateChange.emit(new CmatDatetimepickerInputEvent(this, this._elementRef.nativeElement));\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._datepickerSubscription.unsubscribe();\r\n this._localeSubscription.unsubscribe();\r\n this.valueChange.complete();\r\n this.disabledChange.complete();\r\n }\r\n\r\n registerOnValidatorChange(fn:VoidFunction): void {\r\n this._validatorOnChange = fn;\r\n }\r\n\r\n validate(c: AbstractControl): ValidationErrors | null {\r\n return this._validator ? this._validator(c) : null;\r\n }\r\n\r\n \r\n getConnectedOverlayOrigin(): ElementRef {\r\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\r\n }\r\n\r\n \r\n getOverlayLabelId(): string | null {\r\n if (this._formField) {\r\n return this._formField.getLabelId();\r\n }\r\n\r\n return this._elementRef.nativeElement.getAttribute('aria-labelledby');\r\n }\r\n writeValue(value: D): void {\r\n this.value = value;\r\n }\r\n registerOnChange(fn: (value: any) => void): void {\r\n this._cvaOnChange = fn;\r\n }\r\n registerOnTouched(fn: VoidFunction): void {\r\n this._onTouched = fn;\r\n }\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n\r\n onKeydown(event: KeyboardEvent): void {\r\n if (event.altKey && event.code === 'ArrowDown') {\r\n this.datetimepicker.open();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n onInput(value: string): void {\r\n let date = this._dateAdapter.parse(value, this._getParseFormat());\r\n this._lastValueValid = !date || this._dateAdapter.isValid(date);\r\n date = this._dateAdapter.getValidDateOrNull(date);\r\n this._value = date;\r\n this._cvaOnChange(date);\r\n this.valueChange.emit(date);\r\n this.dateInput.emit(new CmatDatetimepickerInputEvent(this, this._elementRef.nativeElement));\r\n }\r\n\r\n onChange(): void {\r\n this.dateChange.emit(new CmatDatetimepickerInputEvent(this, this._elementRef.nativeElement));\r\n }\r\n\r\n \r\n onBlur(): void {\r\n if (this.value) {\r\n this._formatValue(this.value);\r\n }\r\n\r\n this._onTouched();\r\n }\r\n\r\n \r\n getThemePalette(): ThemePalette {\r\n return this._formField ? this._formField.color : undefined;\r\n }\r\n\r\n private _registerDatetimepicker(value: CmatDatetimepickerComponent<D>): void {\r\n if (value) {\r\n this.datetimepicker = value;\r\n this.datetimepicker.registerInput(this);\r\n }\r\n }\r\n\r\n private _getDisplayFormat(): any {\r\n switch (this.datetimepicker.type) {\r\n case 'date':\r\n return this._dateFormats.display.dateInput;\r\n case 'datetime':\r\n return this._dateFormats.display.datetimeInput;\r\n case 'time':\r\n return this._dateFormats.display.timeInput;\r\n case 'month':\r\n return this._dateFormats.display.monthInput;\r\n case 'year':\r\n return this._dateFormats.display.yearInput;\r\n }\r\n }\r\n\r\n private _getParseFormat(): any {\r\n let parseFormat: any;\r\n\r\n switch (this.datetimepicker.type) {\r\n case 'date':\r\n parseFormat = this._dateFormats.parse.dateInput;\r\n break;\r\n case 'datetime':\r\n parseFormat = this._dateFormats.parse.datetimeInput;\r\n break;\r\n case 'time':\r\n parseFormat = this._dateFormats.parse.timeInput;\r\n break;\r\n case 'month':\r\n parseFormat = this._dateFormats.parse.monthInput;\r\n break;\r\n case 'year':\r\n parseFormat = this._dateFormats.parse.yearInput;\r\n break;\r\n }\r\n parseFormat ??= this._dateFormats.parse.dateInput;\r\n\r\n return parseFormat;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _onTouched = (): void => { };\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _cvaOnChange: (value: any) => void = () => {};\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _validatorOnChange = (): void => { };\r\n\r\n \r\n private _parseValidator: ValidatorFn = (): ValidationErrors | null => this._lastValueValid ?\r\n null : { 'matDatepickerParse': { 'text': this._elementRef.nativeElement.value } };\r\n\r\n \r\n private _minValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\r\n return (!this.min || !controlValue ||\r\n (this._dateAdapter.compareDatetime(this.min, controlValue) as number) <= 0) ?\r\n null : { 'matDatepickerMin': { 'min': this.min, 'actual': controlValue } };\r\n };\r\n\r\n \r\n private _maxValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\r\n return (!this.max || !controlValue ||\r\n (this._dateAdapter.compareDatetime(this.max, controlValue) as number) >= 0) ?\r\n null : { 'matDatepickerMax': { 'max': this.max, 'actual': controlValue } };\r\n };\r\n\r\n \r\n private _filterValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\r\n return !this.dateFilter || !controlValue || this.dateFilter(controlValue, CmatDatetimepickerFilterType.DATE) ?\r\n null : { 'matDatepickerFilter': true };\r\n };\r\n\r\n \r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n private _validator: ValidatorFn | null =\r\n Validators.compose(\r\n [this._parseValidator, this._minValidator, this._maxValidator, this._filterValidator]);\r\n\r\n \r\n private _formatValue(value: D | null): void {\r\n this._elementRef.nativeElement.value =\r\n value ? this._dateAdapter.format(value, this._getDisplayFormat()) : '';\r\n }\r\n}\r\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, Directive, HostBinding, Input, OnChanges, OnDestroy, SimpleChanges, ViewChild, ViewEncapsulation, inject } from '@angular/core';\r\nimport { MatButton, MatButtonModule } from '@angular/material/button';\r\nimport { merge, of as observableOf, Subscription } from 'rxjs';\r\nimport { CmatDatetimepickerComponent } from './datetimepicker';\r\nimport { CmatDatetimepickerIntl } from './datetimepicker-intl';\r\n\r\n\r\n\r\n@Directive({\r\n selector: '[cmatDatetimepickerToggleIcon]'\r\n})\r\nexport class CmatDatetimepickerToggleIconDirective { }\r\n\r\n@Component({\r\n selector: 'cmat-datetimepicker-toggle',\r\n templateUrl: 'datetimepicker-toggle.html',\r\n exportAs: 'cmatDatetimepickerToggle',\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatButtonModule]\r\n})\r\nexport class CmatDatetimepickerToggleComponent<D> implements AfterContentInit, OnChanges, OnDestroy {\r\n \r\n // eslint-disable-next-line @angular-eslint/no-input-rename\r\n @Input('for') datetimepicker: CmatDatetimepickerComponent<D>;\r\n \r\n @Input() tabIndex!: number;\r\n\r\n \r\n @Input('aria-label') ariaLabel?: string;\r\n\r\n \r\n @Input() disableRipple!: boolean;\r\n\r\n \r\n @ContentChild(CmatDatetimepickerToggleIconDirective) customIcon!: CmatDatetimepickerToggleIconDirective;\r\n\r\n \r\n @ViewChild('button') button!: MatButton;\r\n\r\n\r\n @HostBinding('class') class = 'cmat-datetimepicker-toggle';\r\n\r\n protected intl = inject(CmatDatetimepickerIntl);\r\n\r\n private _stateChanges = Subscription.EMPTY;\r\n private _disabled: boolean;\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n\r\n \r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled === undefined ? this.datetimepicker.disabled : !!this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['datepicker']) {\r\n this._watchStateChanges();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._stateChanges.unsubscribe();\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._watchStateChanges();\r\n }\r\n\r\n open(event: Event): void {\r\n if (this.datetimepicker && !this.disabled) {\r\n this.datetimepicker.open();\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n private _watchStateChanges(): void {\r\n const datepickerDisabled = this.datetimepicker ? this.datetimepicker.disabledChange : observableOf();\r\n const inputDisabled = this.datetimepicker?.datetimepickerInput ?\r\n this.datetimepicker.datetimepickerInput.disabledChange : observableOf();\r\n\r\n this._stateChanges.unsubscribe();\r\n this._stateChanges = merge([this.intl.changes, datepickerDisabled, inputDisabled])\r\n .subscribe(() => this._changeDetectorRef.markForCheck());\r\n }\r\n}\r\n","<button type=\"button\" matIconButton \r\n [attr.aria-haspopup]=\"datetimepicker ? 'dialog' : null\" [attr.aria-label]=\"ariaLabel || intl.openCalendarLabel\"\r\n [attr.tabindex]=\"disabled ? -1 : tabIndex\" [disabled]=\"disabled\" [disableRipple]=\"disableRipple\" (click)=\"open($event)\">\r\n @if (!customIcon) {\r\n @switch (datetimepicker.type) {\r\n @case ('time') {\r\n <svg class=\"mat-icon cmat-datetimepicker-toggle-default-icon\" viewBox=\"0 0 24 24\" width=\"24px\"\r\n height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path\r\n d=\"M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z\">\r\n </path>\r\n </svg>\r\n }\r\n @case ('datetime') {\r\n <svg class=\"mat-icon cmat-datetimepicker-toggle-default-icon\" viewBox=\"0 0 24 24\" width=\"24px\"\r\n height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path\r\n d=\"M15,13H16.5V15.82L18.94,17.23L18.19,18.53L15,16.69V13M19,8H5V19H9.67C9.24,18.09 9,17.07 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M5,21C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C14.09,23 12.36,22.24 11.1,21H5M16,11.15A4.85,4.85 0 0,0 11.15,16C11.15,18.68 13.32,20.85 16,20.85A4.85,4.85 0 0,0 20.85,16C20.85,13.32 18.68,11.15 16,11.15Z\">\r\n </path>\r\n </svg>\r\n }\r\n @default {\r\n <svg class=\"mat-icon cmat-datetimepicker-toggle-default-icon\" viewBox=\"0 0 24 24\" width=\"24px\"\r\n height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n <path\r\n d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\" />\r\n </svg>\r\n }\r\n }\r\n }\r\n\r\n <ng-content select=\"[cmatDatetimepickerToggleIcon]\"></ng-content>\r\n </button>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","observableOf"],"mappings":"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"}