@fundamental-ngx/core 0.49.1 → 0.49.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/avatar-group-legacy/avatar-group-legacy.component.d.ts +6 -6
  2. package/avatar-group-legacy/directives/avatar-group-legacy-overflow-body.directive.d.ts +2 -2
  3. package/avatar-group-legacy/directives/avatar-group-legacy-overflow-button.directive.d.ts +2 -2
  4. package/bar/bar.component.d.ts +6 -6
  5. package/bar/button-bar/button-bar.component.d.ts +4 -4
  6. package/calendar/calendar-header/calendar-header.component.d.ts +2 -2
  7. package/card/card-content.component.d.ts +2 -2
  8. package/card/card-counter.directive.d.ts +2 -2
  9. package/card/card-header.component.d.ts +6 -6
  10. package/card/card-loader.component.d.ts +2 -2
  11. package/card/card-second-subtitle.directive.d.ts +2 -2
  12. package/card/card-subtitle.directive.d.ts +2 -2
  13. package/card/card-title.directive.d.ts +2 -2
  14. package/card/card.component.d.ts +3 -3
  15. package/card/kpi/card-kpi-analytics-content.directive.d.ts +2 -2
  16. package/card/kpi/card-kpi-analytics-label.directive.d.ts +2 -2
  17. package/card/kpi/card-kpi-analytics.directive.d.ts +2 -2
  18. package/card/kpi/card-kpi-header.component.d.ts +2 -2
  19. package/card/kpi/card-kpi-scale-icon.directive.d.ts +2 -2
  20. package/card/kpi/card-kpi-scale-text.directive.d.ts +2 -2
  21. package/card/kpi/card-kpi-value.directive.d.ts +4 -4
  22. package/checkbox/checkbox/checkbox.component.d.ts +3 -5
  23. package/content-density/providers/url-content-density-storage.d.ts +4 -4
  24. package/content-density/services/content-density-observer.service.d.ts +15 -15
  25. package/datetime/datetime-adapter.d.ts +9 -2
  26. package/datetime/fd-date.d.ts +10 -14
  27. package/datetime/fd-datetime-adapter.d.ts +2 -2
  28. package/dialog/base/dialog-base.class.d.ts +2 -2
  29. package/dialog/base/dialog-header-base.class.d.ts +4 -4
  30. package/dialog/base/dialog-ref-base.class.d.ts +6 -4
  31. package/dynamic-side-content/dynamic-side-content.component.d.ts +4 -4
  32. package/esm2022/avatar-group-legacy/avatar-group-legacy.component.mjs +15 -15
  33. package/esm2022/avatar-group-legacy/directives/avatar-group-legacy-overflow-body.directive.mjs +12 -12
  34. package/esm2022/avatar-group-legacy/directives/avatar-group-legacy-overflow-button.directive.mjs +9 -9
  35. package/esm2022/bar/bar.component.mjs +13 -13
  36. package/esm2022/bar/button-bar/button-bar.component.mjs +3 -3
  37. package/esm2022/calendar/calendar-header/calendar-header.component.mjs +1 -1
  38. package/esm2022/card/card-content.component.mjs +5 -5
  39. package/esm2022/card/card-counter.directive.mjs +6 -6
  40. package/esm2022/card/card-header.component.mjs +5 -5
  41. package/esm2022/card/card-loader.component.mjs +5 -5
  42. package/esm2022/card/card-second-subtitle.directive.mjs +5 -5
  43. package/esm2022/card/card-subtitle.directive.mjs +5 -5
  44. package/esm2022/card/card-title.directive.mjs +5 -5
  45. package/esm2022/card/card.component.mjs +5 -5
  46. package/esm2022/card/kpi/card-kpi-analytics-content.directive.mjs +5 -5
  47. package/esm2022/card/kpi/card-kpi-analytics-label.directive.mjs +5 -5
  48. package/esm2022/card/kpi/card-kpi-analytics.directive.mjs +5 -5
  49. package/esm2022/card/kpi/card-kpi-header.component.mjs +5 -5
  50. package/esm2022/card/kpi/card-kpi-scale-icon.directive.mjs +5 -5
  51. package/esm2022/card/kpi/card-kpi-scale-text.directive.mjs +5 -5
  52. package/esm2022/card/kpi/card-kpi-value.directive.mjs +5 -5
  53. package/esm2022/checkbox/checkbox/checkbox.component.mjs +1 -1
  54. package/esm2022/combobox/combobox.component.mjs +2 -2
  55. package/esm2022/content-density/providers/url-content-density-storage.mjs +11 -11
  56. package/esm2022/content-density/services/content-density-observer.service.mjs +7 -16
  57. package/esm2022/datetime/datetime-adapter.mjs +4 -2
  58. package/esm2022/datetime/fd-date.mjs +34 -27
  59. package/esm2022/datetime/fd-datetime-adapter.mjs +1 -1
  60. package/esm2022/dialog/base/dialog-base.class.mjs +1 -1
  61. package/esm2022/dialog/base/dialog-header-base.class.mjs +1 -1
  62. package/esm2022/dialog/base/dialog-ref-base.class.mjs +4 -8
  63. package/esm2022/dynamic-side-content/dynamic-side-content.component.mjs +9 -9
  64. package/esm2022/feed-input/directives/feed-input-avatar.directive.mjs +5 -5
  65. package/esm2022/feed-list-item/components/list/feed-list.component.mjs +15 -15
  66. package/esm2022/file-uploader/directives/file-uploader-select.directive.mjs +1 -1
  67. package/esm2022/file-uploader/file-uploader.component.mjs +5 -5
  68. package/esm2022/fixed-card-layout/fixed-card-layout-item/fixed-card-layout-item.component.mjs +3 -3
  69. package/esm2022/form/form-group/form-group.component.mjs +8 -8
  70. package/esm2022/form/form-message/form-message.component.mjs +9 -9
  71. package/esm2022/grid-list/components/grid-list/grid-list.component.mjs +2 -3
  72. package/esm2022/grid-list/components/grid-list-item/grid-list-item.component.mjs +3 -3
  73. package/esm2022/illustrated-message/illustrated-message.component.mjs +10 -10
  74. package/esm2022/input-group/input-group-directives.mjs +22 -22
  75. package/esm2022/layout-grid/directives/layout-grid-col.directive.mjs +9 -9
  76. package/esm2022/layout-grid/layout-grid.component.mjs +9 -9
  77. package/esm2022/layout-panel/layout-panel-footer/layout-panel-footer.component.mjs +9 -9
  78. package/esm2022/list/list-item/list-item.component.mjs +20 -17
  79. package/esm2022/list/list-message.directive.mjs +9 -9
  80. package/esm2022/menu/directives/segmented-button/segmented-button-header.directive.mjs +1 -2
  81. package/esm2022/menu/directives/toggle-button.directive.mjs +1 -2
  82. package/esm2022/message-box/message-box.component.mjs +17 -17
  83. package/esm2022/message-page/message-page.component.mjs +5 -5
  84. package/esm2022/message-strip/alert/message-strip-alert/message-strip-alert.component.mjs +5 -5
  85. package/esm2022/message-strip/alert/message-strip-alert-container/message-strip-alert-container.component.mjs +1 -1
  86. package/esm2022/message-strip/alert/message-strip-alert.service.mjs +2 -3
  87. package/esm2022/message-strip/message-strip.component.mjs +16 -16
  88. package/esm2022/micro-process-flow/components/micro-process-flow/micro-process-flow.component.mjs +43 -45
  89. package/esm2022/micro-process-flow/components/micro-process-flow-item/micro-process-flow-item.component.mjs +1 -1
  90. package/esm2022/micro-process-flow/micro-process-flow-focusable-item.directive.mjs +13 -13
  91. package/esm2022/multi-combobox/multi-combobox.component.mjs +2 -5
  92. package/esm2022/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +1 -1
  93. package/esm2022/multi-input/multi-input.component.mjs +2 -2
  94. package/esm2022/nested-list/nested-content/nested-list-content.directive.mjs +6 -6
  95. package/esm2022/nested-list/nested-item/nested-item.directive.mjs +3 -3
  96. package/esm2022/nested-list/nested-list/nested-list.directive.mjs +3 -3
  97. package/esm2022/notification/directives/notification-indicator.directive.mjs +9 -9
  98. package/esm2022/notification/notification/notification.component.mjs +9 -9
  99. package/esm2022/notification/notification-group/notification-group.component.mjs +5 -5
  100. package/esm2022/notification/notification-service/notification.service.mjs +5 -2
  101. package/esm2022/notification/notification-utils/notification-ref.mjs +2 -5
  102. package/esm2022/object-number/object-number.component.mjs +9 -9
  103. package/esm2022/object-status/object-status.component.mjs +13 -12
  104. package/esm2022/overflow-layout/directives/overflow-expand.directive.mjs +5 -5
  105. package/esm2022/overflow-layout/directives/overflow-item-ref.directive.mjs +1 -1
  106. package/esm2022/overflow-layout/directives/overflow-layout-focusable-item.directive.mjs +5 -5
  107. package/esm2022/overflow-layout/directives/overflow-layout-item-container.directive.mjs +8 -8
  108. package/esm2022/overflow-layout/interfaces/overflow-focusable-item.interface.mjs +1 -1
  109. package/esm2022/overflow-layout/overflow-layout.component.mjs +18 -18
  110. package/esm2022/radio/radio-button/radio-button.component.mjs +8 -9
  111. package/esm2022/rating-indicator/components/rating-indicator.component.mjs +28 -28
  112. package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.mjs +23 -23
  113. package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +7 -8
  114. package/esm2022/select/select.component.mjs +18 -18
  115. package/esm2022/shared/interfaces/search-component.interface.mjs +1 -1
  116. package/esm2022/shellbar/shellbar.component.mjs +7 -7
  117. package/esm2022/side-navigation/side-navigation.component.mjs +7 -7
  118. package/esm2022/skeleton/components/skeleton.component.mjs +3 -3
  119. package/esm2022/status-indicator/status-indicator.component.mjs +15 -15
  120. package/esm2022/table/directives/table-responsive-wrapper.directive.mjs +3 -3
  121. package/esm2022/tabs/tab-item/tab-item.directive.mjs +9 -9
  122. package/esm2022/tabs/tab-link/tab-link.directive.mjs +8 -8
  123. package/esm2022/tabs/tab-nav/tab-nav.component.mjs +15 -15
  124. package/esm2022/tabs/tab-panel/tab-panel.component.mjs +3 -3
  125. package/esm2022/tabs/tab-utils/tab-directives.mjs +8 -8
  126. package/esm2022/tile/directives/tile.directives.mjs +25 -25
  127. package/esm2022/tile/tile.component.mjs +9 -11
  128. package/esm2022/time/time-column/time-column.component.mjs +23 -23
  129. package/esm2022/timeline/services/position-strategies/base-strategy.mjs +1 -1
  130. package/esm2022/timeline/timeline.component.mjs +5 -5
  131. package/esm2022/title/title.component.mjs +4 -4
  132. package/esm2022/token/tokenizer.component.mjs +71 -71
  133. package/esm2022/toolbar/toolbar.component.mjs +3 -3
  134. package/esm2022/tree/components/tree-item/tree-item.component.mjs +4 -6
  135. package/esm2022/tree/tree.component.mjs +1 -4
  136. package/esm2022/upload-collection/upload-collection-item.directive.mjs +3 -3
  137. package/esm2022/vertical-navigation/vertical-navigation.component.mjs +6 -6
  138. package/esm2022/wizard/wizard-step/wizard-step.component.mjs +3 -3
  139. package/feed-input/directives/feed-input-avatar.directive.d.ts +2 -2
  140. package/feed-list-item/components/list/feed-list.component.d.ts +6 -6
  141. package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs +33 -33
  142. package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs.map +1 -1
  143. package/fesm2022/fundamental-ngx-core-bar.mjs +14 -14
  144. package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
  145. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  146. package/fesm2022/fundamental-ngx-core-card.mjs +61 -61
  147. package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
  148. package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
  149. package/fesm2022/fundamental-ngx-core-combobox.mjs +1 -1
  150. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  151. package/fesm2022/fundamental-ngx-core-content-density.mjs +17 -26
  152. package/fesm2022/fundamental-ngx-core-content-density.mjs.map +1 -1
  153. package/fesm2022/fundamental-ngx-core-datetime.mjs +36 -27
  154. package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
  155. package/fesm2022/fundamental-ngx-core-dialog.mjs +3 -7
  156. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  157. package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +8 -8
  158. package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
  159. package/fesm2022/fundamental-ngx-core-feed-input.mjs +4 -4
  160. package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
  161. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +14 -14
  162. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  163. package/fesm2022/fundamental-ngx-core-file-uploader.mjs +4 -4
  164. package/fesm2022/fundamental-ngx-core-file-uploader.mjs.map +1 -1
  165. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +2 -2
  166. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  167. package/fesm2022/fundamental-ngx-core-form.mjs +15 -15
  168. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  169. package/fesm2022/fundamental-ngx-core-grid-list.mjs +3 -4
  170. package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
  171. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +9 -9
  172. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  173. package/fesm2022/fundamental-ngx-core-input-group.mjs +21 -21
  174. package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
  175. package/fesm2022/fundamental-ngx-core-layout-grid.mjs +16 -16
  176. package/fesm2022/fundamental-ngx-core-layout-grid.mjs.map +1 -1
  177. package/fesm2022/fundamental-ngx-core-layout-panel.mjs +8 -8
  178. package/fesm2022/fundamental-ngx-core-layout-panel.mjs.map +1 -1
  179. package/fesm2022/fundamental-ngx-core-list.mjs +27 -24
  180. package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
  181. package/fesm2022/fundamental-ngx-core-menu.mjs +0 -2
  182. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  183. package/fesm2022/fundamental-ngx-core-message-box.mjs +16 -16
  184. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  185. package/fesm2022/fundamental-ngx-core-message-page.mjs +4 -4
  186. package/fesm2022/fundamental-ngx-core-message-page.mjs.map +1 -1
  187. package/fesm2022/fundamental-ngx-core-message-strip.mjs +20 -21
  188. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  189. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +55 -57
  190. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
  191. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +1 -4
  192. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  193. package/fesm2022/fundamental-ngx-core-multi-input.mjs +1 -1
  194. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  195. package/fesm2022/fundamental-ngx-core-nested-list.mjs +9 -9
  196. package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
  197. package/fesm2022/fundamental-ngx-core-notification.mjs +25 -25
  198. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  199. package/fesm2022/fundamental-ngx-core-object-number.mjs +8 -8
  200. package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
  201. package/fesm2022/fundamental-ngx-core-object-status.mjs +12 -11
  202. package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
  203. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +32 -32
  204. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  205. package/fesm2022/fundamental-ngx-core-radio.mjs +7 -8
  206. package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
  207. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +27 -27
  208. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  209. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +28 -29
  210. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  211. package/fesm2022/fundamental-ngx-core-select.mjs +17 -17
  212. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  213. package/fesm2022/fundamental-ngx-core-shellbar.mjs +6 -6
  214. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  215. package/fesm2022/fundamental-ngx-core-side-navigation.mjs +6 -6
  216. package/fesm2022/fundamental-ngx-core-side-navigation.mjs.map +1 -1
  217. package/fesm2022/fundamental-ngx-core-skeleton.mjs +2 -2
  218. package/fesm2022/fundamental-ngx-core-skeleton.mjs.map +1 -1
  219. package/fesm2022/fundamental-ngx-core-status-indicator.mjs +14 -14
  220. package/fesm2022/fundamental-ngx-core-status-indicator.mjs.map +1 -1
  221. package/fesm2022/fundamental-ngx-core-table.mjs +2 -2
  222. package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
  223. package/fesm2022/fundamental-ngx-core-tabs.mjs +38 -38
  224. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  225. package/fesm2022/fundamental-ngx-core-tile.mjs +32 -34
  226. package/fesm2022/fundamental-ngx-core-tile.mjs.map +1 -1
  227. package/fesm2022/fundamental-ngx-core-time.mjs +23 -23
  228. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  229. package/fesm2022/fundamental-ngx-core-timeline.mjs +4 -4
  230. package/fesm2022/fundamental-ngx-core-timeline.mjs.map +1 -1
  231. package/fesm2022/fundamental-ngx-core-title.mjs +3 -3
  232. package/fesm2022/fundamental-ngx-core-title.mjs.map +1 -1
  233. package/fesm2022/fundamental-ngx-core-token.mjs +70 -70
  234. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  235. package/fesm2022/fundamental-ngx-core-toolbar.mjs +2 -2
  236. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  237. package/fesm2022/fundamental-ngx-core-tree.mjs +3 -8
  238. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  239. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +2 -2
  240. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  241. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +5 -5
  242. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
  243. package/fesm2022/fundamental-ngx-core-wizard.mjs +2 -2
  244. package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
  245. package/file-uploader/directives/file-uploader-select.directive.d.ts +1 -1
  246. package/file-uploader/file-uploader.component.d.ts +4 -4
  247. package/form/form-group/form-group.component.d.ts +4 -4
  248. package/form/form-message/form-message.component.d.ts +2 -2
  249. package/grid-list/components/grid-list/grid-list.component.d.ts +3 -2
  250. package/grid-list/components/grid-list-item/grid-list-item.component.d.ts +8 -8
  251. package/illustrated-message/illustrated-message.component.d.ts +7 -7
  252. package/input-group/input-group-directives.d.ts +12 -12
  253. package/layout-grid/directives/layout-grid-col.directive.d.ts +2 -2
  254. package/layout-grid/layout-grid.component.d.ts +2 -2
  255. package/layout-panel/layout-panel-footer/layout-panel-footer.component.d.ts +2 -2
  256. package/list/list-item/list-item.component.d.ts +13 -13
  257. package/list/list-message.directive.d.ts +4 -4
  258. package/message-box/message-box.component.d.ts +5 -5
  259. package/message-page/message-page.component.d.ts +2 -2
  260. package/message-strip/alert/message-strip-alert/message-strip-alert.component.d.ts +4 -4
  261. package/message-strip/alert/message-strip-alert-container/message-strip-alert-container.component.d.ts +4 -4
  262. package/message-strip/alert/message-strip-alert.service.d.ts +3 -2
  263. package/message-strip/message-strip.component.d.ts +6 -6
  264. package/micro-process-flow/components/micro-process-flow/micro-process-flow.component.d.ts +15 -17
  265. package/micro-process-flow/components/micro-process-flow-item/micro-process-flow-item.component.d.ts +2 -2
  266. package/micro-process-flow/micro-process-flow-focusable-item.directive.d.ts +6 -6
  267. package/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +2 -2
  268. package/nested-list/nested-content/nested-list-content.directive.d.ts +2 -2
  269. package/nested-list/nested-item/nested-item.directive.d.ts +2 -2
  270. package/nested-list/nested-list/nested-list.directive.d.ts +2 -2
  271. package/notification/directives/notification-indicator.directive.d.ts +4 -4
  272. package/notification/notification/notification.component.d.ts +2 -2
  273. package/notification/notification-group/notification-group.component.d.ts +2 -2
  274. package/notification/notification-utils/notification-ref.d.ts +5 -3
  275. package/object-number/object-number.component.d.ts +4 -4
  276. package/object-status/object-status.component.d.ts +5 -4
  277. package/overflow-layout/directives/overflow-expand.directive.d.ts +2 -2
  278. package/overflow-layout/directives/overflow-item-ref.directive.d.ts +2 -2
  279. package/overflow-layout/directives/overflow-layout-focusable-item.directive.d.ts +2 -2
  280. package/overflow-layout/directives/overflow-layout-item-container.directive.d.ts +2 -2
  281. package/overflow-layout/interfaces/overflow-focusable-item.interface.d.ts +1 -1
  282. package/overflow-layout/overflow-layout.component.d.ts +4 -4
  283. package/package.json +3 -3
  284. package/radio/radio-button/radio-button.component.d.ts +7 -7
  285. package/rating-indicator/components/rating-indicator.component.d.ts +12 -12
  286. package/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.d.ts +8 -8
  287. package/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.d.ts +2 -2
  288. package/select/select.component.d.ts +19 -19
  289. package/shared/interfaces/search-component.interface.d.ts +1 -1
  290. package/shellbar/shellbar.component.d.ts +12 -12
  291. package/side-navigation/side-navigation.component.d.ts +2 -2
  292. package/skeleton/components/skeleton.component.d.ts +2 -2
  293. package/status-indicator/status-indicator.component.d.ts +7 -7
  294. package/tabs/tab-item/tab-item.directive.d.ts +2 -2
  295. package/tabs/tab-link/tab-link.directive.d.ts +2 -2
  296. package/tabs/tab-nav/tab-nav.component.d.ts +8 -8
  297. package/tabs/tab-panel/tab-panel.component.d.ts +2 -2
  298. package/tabs/tab-utils/tab-directives.d.ts +5 -5
  299. package/tile/directives/tile.directives.d.ts +12 -12
  300. package/tile/tile.component.d.ts +4 -6
  301. package/time/time-column/time-column.component.d.ts +6 -6
  302. package/timeline/services/position-strategies/base-strategy.d.ts +2 -2
  303. package/timeline/timeline.component.d.ts +2 -2
  304. package/title/title.component.d.ts +2 -2
  305. package/token/tokenizer.component.d.ts +16 -16
  306. package/toolbar/toolbar.component.d.ts +2 -2
  307. package/tree/components/tree-item/tree-item.component.d.ts +10 -9
  308. package/upload-collection/upload-collection-item.directive.d.ts +2 -2
  309. package/vertical-navigation/vertical-navigation.component.d.ts +2 -2
  310. package/wizard/wizard-step/wizard-step.component.d.ts +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-calendar.mjs","sources":["../../../../libs/core/calendar/calendar-directives.ts","../../../../libs/core/calendar/calendar.service.ts","../../../../libs/core/calendar/calendar-header/calendar-header.component.ts","../../../../libs/core/calendar/calendar-header/calendar-header.component.html","../../../../libs/core/calendar/models/common.ts","../../../../libs/core/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.ts","../../../../libs/core/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.html","../../../../libs/core/calendar/models/calendar-day.ts","../../../../libs/core/calendar/models/date-range.ts","../../../../libs/core/calendar/calendar-views/calendar-day-view/calendar-day-view.component.ts","../../../../libs/core/calendar/calendar-views/calendar-day-view/calendar-day-view.component.html","../../../../libs/core/calendar/calendar-views/calendar-month-view/calendar-month-view.component.ts","../../../../libs/core/calendar/calendar-views/calendar-month-view/calendar-month-view.component.html","../../../../libs/core/calendar/calendar-views/calendar-year-view/calendar-year-view.component.ts","../../../../libs/core/calendar/calendar-views/calendar-year-view/calendar-year-view.component.html","../../../../libs/core/calendar/calendar-errors.ts","../../../../libs/core/calendar/i18n/calendar-i18n-labels.ts","../../../../libs/core/calendar/patch-deprecated-i18n-labels.ts","../../../../libs/core/calendar/calendar.component.ts","../../../../libs/core/calendar/calendar.component.html","../../../../libs/core/calendar/calendar.module.ts","../../../../libs/core/calendar/fundamental-ngx-core-calendar.ts"],"sourcesContent":["import { Attribute, Directive } from '@angular/core';\nimport { resolveTranslationSignal } from '@fundamental-ngx/i18n';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-calendar-close-button]',\n host: {\n class: 'fd-calendar__close-button',\n '[attr.aria-label]': '_originalAriaLabel || _closeCalendarLabel()',\n '[attr.title]': '_originalTitle || _closeCalendarLabel()'\n },\n standalone: true\n})\nexport class CalendarCloseButtonDirective {\n /** @hidden */\n protected _closeCalendarLabel = resolveTranslationSignal('coreCalendar.closeCalendarLabel');\n\n /** @hidden */\n constructor(\n @Attribute('aria-label') protected _originalAriaLabel: string,\n @Attribute('title') protected _originalTitle: string\n ) {}\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport { EscapeFocusFunction } from './models/common';\n\n@Injectable()\nexport class CalendarService {\n /** Row amount */\n rowAmount = 3;\n\n /** Column amount */\n colAmount = 4;\n\n /** Event thrown, when the element is selected by space or enter keys */\n onKeySelect: Subject<number> = new Subject<number>();\n\n /** Event thrown, when the focus goes after list of elements */\n onListEndApproach: Subject<number> = new Subject<number>();\n\n /** Event thrown, when the focus goes before list of elements */\n onListStartApproach: Subject<number> = new Subject<number>();\n\n /** Event thrown, when the focus is changed. */\n onFocusIdChange: Subject<number> = new Subject<number>();\n\n /** Left Arrow Id, which will be focused by default on focus escape */\n leftArrowId: string;\n\n /** Function that is called when the focus would escape the element. */\n focusEscapeFunction: EscapeFocusFunction;\n\n /** @hidden */\n constructor(@Optional() private _rtlService: RtlService) {}\n\n /**\n * Standardized method to calculate grid [x][y] to index number\n */\n getId(row: number, col: number): number {\n return row * this.colAmount + col;\n }\n\n /**\n * Method that handles keydown events, dedicated for All Calendar views, which have a list with row x col elements.\n * Triggers the events, when the focus approaches start and end of list. Or when there is basic change of focus.\n * Triggers also event, when the element is selected by enter key, or space bar.\n * @param event KeyboardEvent\n * @param index which is number (0 - (rowAmount * colAmount))\n */\n onKeydownHandler(event: KeyboardEvent, index: number): void {\n const rtl = !!this._rtlService?.rtlSignal();\n\n switch (event.key) {\n case 'Spacebar':\n case 'Enter':\n case ' ': {\n event.preventDefault();\n this.onKeySelect.next(index);\n break;\n }\n case 'Left':\n case 'ArrowLeft': {\n event.preventDefault();\n if (!rtl) {\n this.focusLeftElement(index);\n } else {\n this.focusRightElement(index);\n }\n break;\n }\n case 'Right':\n case 'ArrowRight': {\n event.preventDefault();\n if (!rtl) {\n this.focusRightElement(index);\n } else {\n this.focusLeftElement(index);\n }\n break;\n }\n case 'Up':\n case 'ArrowUp': {\n event.preventDefault();\n if (index <= this.colAmount - 1) {\n this.onListStartApproach.next(this.getId(this.rowAmount - 1, 0) + index);\n } else {\n this.onFocusIdChange.next(index - this.colAmount);\n }\n break;\n }\n case 'Down':\n case 'ArrowDown': {\n event.preventDefault();\n if (index >= this.getId(this.rowAmount - 1, 0)) {\n this.onListEndApproach.next(index - this.getId(this.rowAmount - 1, 0));\n } else {\n this.onFocusIdChange.next(index + this.colAmount);\n }\n break;\n }\n case 'Tab': {\n if (!event.shiftKey) {\n if (typeof this.focusEscapeFunction === 'function') {\n this.focusEscapeFunction(event);\n } else {\n const element = document.getElementById(this.leftArrowId);\n if (element) {\n element.focus();\n }\n }\n event.preventDefault();\n break;\n }\n }\n }\n }\n\n /**\n * @hidden\n * Right Element focus trigger\n */\n focusRightElement(index: number): void {\n if (index === this.getId(this.rowAmount, 0) - 1) {\n this.onListEndApproach.next(0);\n } else {\n this.onFocusIdChange.next(index + 1);\n }\n }\n\n /**\n * @hidden\n * Left Element focus trigger\n */\n focusLeftElement(index: number): void {\n if (index === 0) {\n this.onListStartApproach.next(this.getId(this.rowAmount, 0) - 1);\n } else {\n this.onFocusIdChange.next(index - 1);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\n\nimport { DatetimeAdapter } from '@fundamental-ngx/core/datetime';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { CalendarService } from '../calendar.service';\nimport { CalendarCurrent } from '../models/calendar-current';\nimport { CalendarYearGrid } from '../models/calendar-year-grid';\nimport { FdCalendarView } from '../types';\n\n/**\n * Internal use only.\n * Header of the calendar component.\n */\n@Component({\n selector: 'fd-calendar-header',\n templateUrl: './calendar-header.component.html',\n styleUrl: './calendar-header.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'viewId'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ButtonComponent, FdTranslatePipe]\n})\nexport class CalendarHeaderComponent<D> implements OnInit, OnChanges {\n /** Currently active view. Needed for a11y labels. */\n @Input()\n activeView: FdCalendarView;\n\n /** Currently displayed date on the calendar. */\n @Input()\n currentlyDisplayed: CalendarCurrent;\n\n /** whether previous navigation button should be disabled in the header. */\n @Input()\n previousButtonDisabled: boolean;\n\n /** whether next navigation button should be disabled in the header. */\n @Input()\n nextButtonDisabled: boolean;\n\n /**\n * Object to customize year grid\n */\n @Input()\n set calendarYearGrid(yearGrid: CalendarYearGrid) {\n this._amountOfYearsPerPeriod = yearGrid.cols * yearGrid.rows - 1;\n this._calculateSelectAggregatedYearLabel();\n }\n\n /** Calendar ID */\n @Input()\n id: string;\n\n /** Whether calendar should be rendered in mobile landscape mode. */\n @Input()\n mobileLandscape = false;\n\n /** Event emitted when the active view should change. */\n @Output()\n readonly activeViewChange: EventEmitter<FdCalendarView> = new EventEmitter<FdCalendarView>();\n\n /** Event emitted when the previous button is clicked. */\n @Output()\n readonly previousClicked: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted when the next button is clicked. */\n @Output()\n readonly nextClicked: EventEmitter<void> = new EventEmitter<void>();\n\n /** Aria label for the previous button. Depends on the active view. */\n get previousAriaLabel(): 'coreCalendar.previousMonthLabel' | 'coreCalendar.previousYearLabel' {\n return this.isOnDayView ? 'coreCalendar.previousMonthLabel' : 'coreCalendar.previousYearLabel';\n }\n\n /** Aria label for the next button. Depends on the active view. */\n get nextAriaLabel(): 'coreCalendar.nextMonthLabel' | 'coreCalendar.nextYearLabel' {\n return this.isOnDayView ? 'coreCalendar.nextMonthLabel' : 'coreCalendar.nextYearLabel';\n }\n\n /** Button aria label to open month selection view. */\n get selectMonthAriaLabel(): 'coreCalendar.monthSelectionLabel' | 'coreCalendar.dateSelectionLabel' {\n return this.isOnMonthView ? 'coreCalendar.dateSelectionLabel' : 'coreCalendar.monthSelectionLabel';\n }\n\n /** Button aria label to open aggregated years selection view. */\n get selectAggregatedYearAriaLabel(): 'coreCalendar.yearsRangeSelectionLabel' | 'coreCalendar.dateSelectionLabel' {\n return this.isOnAggregatedYearsView\n ? 'coreCalendar.dateSelectionLabel'\n : 'coreCalendar.yearsRangeSelectionLabel';\n }\n\n /** Button label to open month selection view. */\n selectMonthLabel: string;\n\n /** Button label to open year selection view. */\n selectYearLabel: string;\n\n /** Button label to open aggregated years selection view. */\n selectAggregatedYearLabel: string;\n\n /** Get information is calendar is on aggregated years view */\n get isOnAggregatedYearsView(): boolean {\n return this.activeView === 'aggregatedYear';\n }\n\n /** Get information is calendar is on year view */\n get isOnYearView(): boolean {\n return this.activeView === 'year';\n }\n\n /** Get information is calendar is on month view */\n get isOnMonthView(): boolean {\n return this.activeView === 'month';\n }\n\n /** Get information is calendar is on day view */\n get isOnDayView(): boolean {\n return this.activeView === 'day';\n }\n\n /**\n * Component id\n */\n get viewId(): string {\n return this.id + '-header';\n }\n\n /**\n * @hidden\n * Previous button id\n */\n get _prevButtonId(): string {\n return this.viewId + '-left-arrow';\n }\n\n /**\n * @hidden\n * Next button id\n */\n get _nextButtonId(): string {\n return this.viewId + '-right-arrow';\n }\n\n /**\n * @hidden\n * Month label id\n */\n get _monthButtonLabelId(): string {\n return this.viewId + '-month-label';\n }\n\n /**\n * @hidden\n * Select month aria label id\n */\n get _selectMonthButtonAriaLabelId(): string {\n return this.viewId + '-select-month-aria-label';\n }\n\n /**\n * @hidden\n * Year label id\n */\n get _yearButtonLabelId(): string {\n return this.viewId + '-year-label';\n }\n\n /**\n * @hidden\n * Select year aria label id\n */\n get _selectYearButtonAriaLabelId(): string {\n return this.viewId + '-select-year-aria-label';\n }\n\n /**\n * @hidden\n * Years range label id\n */\n get _yearsRangeButtonLabelId(): string {\n return this.viewId + '-years-range-label';\n }\n\n /**\n * @hidden\n * Select years range aria label id\n */\n get _selectYearsRangeButtonAriaLabelId(): string {\n return this.viewId + '-select-years-range-aria-label';\n }\n\n /** @hidden */\n @ViewChild('prevButton', { read: ElementRef })\n _prevButtonComponent: ElementRef;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** Month names */\n private _monthNames: string[] = [];\n\n /** Get information about amount of years displayed at once on year view */\n private _amountOfYearsPerPeriod = 1;\n\n /** @hidden */\n constructor(\n private _changeDetRef: ChangeDetectorRef,\n private _calendarService: CalendarService,\n private _dateTimeAdapter: DatetimeAdapter<D>\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (\n (changes.currentlyDisplayed && !changes.currentlyDisplayed.firstChange) ||\n (changes.activeView && !changes.activeView.firstChange)\n ) {\n this._calculateLabels();\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._calendarService.leftArrowId = this._prevButtonId;\n\n this._calculateMonthNames();\n\n this._calculateLabels();\n\n this._listenToLocaleChanges();\n }\n\n /**\n * Focus on focusable control within the header\n */\n focus(): void {\n this._prevButtonComponent.nativeElement?.focus();\n }\n\n /** @hidden */\n _processViewChange(type: FdCalendarView, event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n\n this.activeView = type === this.activeView ? 'day' : type;\n\n this.activeViewChange.emit(this.activeView);\n }\n\n /** @hidden */\n private _listenToLocaleChanges(): void {\n this._dateTimeAdapter.localeChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._calculateMonthNames();\n this._calculateLabels();\n this._changeDetRef.markForCheck();\n });\n }\n\n /** @hidden */\n private _calculateLabels(): void {\n this._calculateSelectMonthLabel();\n this._calculateSelectYearLabel();\n this._calculateSelectAggregatedYearLabel();\n }\n\n /** @hidden */\n private _calculateSelectMonthLabel(): void {\n this.selectMonthLabel = this._monthNames[this._getNormalizedDate().month - 1];\n }\n\n /** @hidden */\n private _calculateSelectYearLabel(): void {\n this.selectYearLabel = this._getYearName(this._getNormalizedDate().year);\n }\n\n /** @hidden */\n private _calculateSelectAggregatedYearLabel(): void {\n this.selectAggregatedYearLabel = `${this._getYearName(this._getNormalizedDate().year)}-${this._getYearName(\n this._getNormalizedDate().year + this._amountOfYearsPerPeriod\n )}`;\n }\n\n /** @hidden */\n private _calculateMonthNames(): void {\n this._monthNames = this._dateTimeAdapter.getMonthNames('long');\n }\n\n /** @hidden */\n private _getYearName(year: number): string {\n return this._dateTimeAdapter.getYearName(this._dateTimeAdapter.createDate(year));\n }\n\n /** @hidden */\n private _getNormalizedDate(): CalendarCurrent {\n return {\n year: isNaN(this.currentlyDisplayed.year)\n ? this._dateTimeAdapter.getYear(this._dateTimeAdapter.now())\n : this.currentlyDisplayed.year,\n month: isNaN(this.currentlyDisplayed.month)\n ? this._dateTimeAdapter.getMonth(this._dateTimeAdapter.now())\n : this.currentlyDisplayed.month\n };\n }\n}\n","<header class=\"fd-calendar__navigation\" [class.fd-calendar__navigation--main]=\"mobileLandscape\">\n <div class=\"fd-calendar__action fd-calendar__action--arrow-left\">\n <button\n #prevButton\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-left\"\n [attr.id]=\"_prevButtonId\"\n [disabled]=\"previousButtonDisabled\"\n [attr.title]=\"previousAriaLabel | fdTranslate\"\n [ariaLabel]=\"previousAriaLabel | fdTranslate\"\n type=\"button\"\n (click)=\"previousClicked.emit()\"\n ></button>\n </div>\n @if (isOnDayView || isOnMonthView) {\n <div class=\"fd-calendar__action\">\n <!-- Select month button -->\n <button\n fd-button\n type=\"button\"\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_monthButtonLabelId + ' ' + _selectMonthButtonAriaLabelId\"\n [attr.data-fd-calendar-month]=\"currentlyDisplayed.month\"\n (click)=\"_processViewChange('month', $event)\"\n >\n <span [attr.id]=\"_monthButtonLabelId\">{{ selectMonthLabel }}</span>\n </button>\n </div>\n <div class=\"fd-calendar__action\">\n <!-- Select year button -->\n <button\n fd-button\n type=\"button\"\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_yearButtonLabelId + ' ' + _selectYearButtonAriaLabelId\"\n [attr.data-fd-calendar-year]=\"currentlyDisplayed.year\"\n (click)=\"_processViewChange('year', $event)\"\n >\n <span [attr.id]=\"_yearButtonLabelId\">{{ selectYearLabel }}</span>\n </button>\n </div>\n }\n @if (isOnAggregatedYearsView || isOnYearView) {\n <div class=\"fd-calendar__action\" aria-live=\"polite\">\n <button\n fd-button\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_yearsRangeButtonLabelId + ' ' + _selectYearsRangeButtonAriaLabelId\"\n (click)=\"_processViewChange('aggregatedYear', $event)\"\n type=\"button\"\n >\n <span [attr.id]=\"_yearsRangeButtonLabelId\">{{ selectAggregatedYearLabel }}</span>\n </button>\n </div>\n }\n <div class=\"fd-calendar__action fd-calendar__action--arrow-right\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-right\"\n [attr.id]=\"_nextButtonId\"\n [disabled]=\"nextButtonDisabled\"\n [attr.title]=\"nextAriaLabel | fdTranslate\"\n [ariaLabel]=\"nextAriaLabel | fdTranslate\"\n (click)=\"nextClicked.emit()\"\n type=\"button\"\n ></button>\n </div>\n</header>\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_selectMonthButtonAriaLabelId\">{{ selectMonthAriaLabel | fdTranslate }}</div>\n <div [attr.id]=\"_selectYearButtonAriaLabelId\">{{ 'coreCalendar.yearSelectionLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_selectYearsRangeButtonAriaLabelId\">{{ selectAggregatedYearAriaLabel | fdTranslate }}</div>\n</div>\n","import { Nullable } from '@fundamental-ngx/cdk/utils';\n\n/**\n * Base Calendar Cell\n */\nexport interface BaseCalendarCell {\n /** Representation in string */\n label: string;\n /** cell unique id */\n id?: string;\n /** currently active (today) */\n current?: boolean;\n /** selected cell */\n selected?: boolean;\n /** disabled cell */\n disabled?: boolean;\n /** cell tabindex */\n tabIndex?: number;\n /** aria-label */\n ariaLabel?: string;\n /** aria-labelledby */\n ariaLabelledBy?: string;\n /** list index */\n index?: number;\n}\n\nexport interface FocusableCalendarView {\n setFocusOnCell(): void;\n}\n\n/**\n * Calendar active cell strategy\n */\nexport abstract class AbstractCalendarActiveCellStrategy<T extends BaseCalendarCell = BaseCalendarCell> {\n /**\n * Calculate which table cell should be active\n */\n abstract getActiveCell(cells: T[]): T | null;\n}\n\nexport class DefaultCalendarActiveCellStrategy<\n T extends BaseCalendarCell = BaseCalendarCell\n> extends AbstractCalendarActiveCellStrategy<T> {\n /**\n * Calculate which table cell should be active\n */\n getActiveCell(cells: T[]): T | null {\n const selected = cells.find((cell) => cell.selected);\n if (selected) {\n return selected;\n }\n const current = cells.find((cell) => cell.current);\n if (current) {\n return current;\n }\n return cells[0] || null;\n }\n}\n\nexport type EscapeFocusFunction = Nullable<(event?: KeyboardEvent) => void>;\n\nexport type DisableDateFunction<D> = Nullable<(date: D) => boolean>;\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n inject\n} from '@angular/core';\n\nimport { DATE_TIME_FORMATS, DateTimeFormats, DatetimeAdapter } from '@fundamental-ngx/core/datetime';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { CalendarService } from '../../calendar.service';\nimport { AggregatedYear, CalendarAggregatedYear } from '../../models/aggregated-year';\nimport { CalendarYearGrid } from '../../models/calendar-year-grid';\nimport { DefaultCalendarActiveCellStrategy, EscapeFocusFunction, FocusableCalendarView } from '../../models/common';\n\n@Component({\n selector: 'fd-calendar-aggregated-year-view',\n templateUrl: './calendar-aggregated-year-view.component.html',\n styleUrl: './calendar-aggregated-year-view.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'viewId'\n },\n standalone: true,\n imports: [ButtonComponent, FdTranslatePipe]\n})\nexport class CalendarAggregatedYearViewComponent<D> implements OnInit, OnChanges, FocusableCalendarView {\n /** Parameter used in id of years used for help with focusing on the correct element during keyboard navigation. */\n @Input()\n id: string;\n\n /** Function that is called when the focus would escape the element. */\n @Input()\n focusEscapeFunction: EscapeFocusFunction;\n\n /** Parameter holding the year that is currently selected. */\n @Input()\n yearSelected: number;\n\n /**\n * Object to customize aggregated year grid\n */\n @Input()\n aggregatedYearsViewGrid: CalendarYearGrid;\n\n /**\n * Object to customize year grid\n */\n @Input()\n yearViewGrid: CalendarYearGrid;\n\n /** Event fired when a year is selected. */\n @Output()\n readonly yearsClicked: EventEmitter<AggregatedYear> = new EventEmitter<AggregatedYear>();\n\n /**\n * View ID\n */\n get viewId(): string {\n return this.id + '-years-range-view';\n }\n\n /**\n * @hidden\n * Today cell label ID\n */\n get _todayLabelId(): string {\n return this.viewId + '-today-label';\n }\n\n /**\n * @hidden\n * Selected date label ID\n */\n get _selectedDateLabelId(): string {\n return this.viewId + '-selected-date-label';\n }\n\n /**\n * @hidden\n * This variable is used to define which year from calendarYearList should be focusable by tab key\n */\n _activeYear: AggregatedYear;\n\n /**\n * @hidden\n * Parameter that stores the dozen of years that are currently being displayed.\n */\n _calendarYearListGrid: CalendarAggregatedYear[][];\n\n /**\n * @hidden\n * Current period of years selected\n */\n _yearsSelected: AggregatedYear | null;\n\n /**\n * @hidden\n * Parameter storing the year of the present day.\n */\n _currentYear: number;\n\n /**\n * @hidden\n * Parameter storing first shown year on list\n */\n private _firstYearInList: number;\n\n /**\n * @hidden\n */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _initiated = false;\n\n /** @hidden */\n constructor(\n private _eRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private _calendarService: CalendarService,\n private _dateTimeAdapter: DatetimeAdapter<D>,\n @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {\n // default values\n this._currentYear = _dateTimeAdapter.getYear(_dateTimeAdapter.today());\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._initiated = true;\n\n this._setupKeyboardService();\n\n this._firstYearInList = this.yearSelected - this._yearsInOnePeriod();\n\n this._constructYearsGrid();\n\n this._dateTimeAdapter.localeChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._constructYearsGrid();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (\n this._initiated &&\n ('yearSelected' in changes ||\n 'aggregatedYearsViewGrid' in changes ||\n 'yearViewGrid' in changes ||\n 'id' in changes)\n ) {\n this._constructYearsGrid();\n }\n }\n\n /** Method that sends the year to the parent component when it is clicked. */\n selectYear(selectedYear: CalendarAggregatedYear, event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this._yearsSelected = selectedYear.years;\n this.yearsClicked.emit(this._yearsSelected);\n }\n\n /** Method used to load the previous 12 years to be displayed. */\n loadNextYearsList(): void {\n this._firstYearInList += this._periodsAmount() * this._yearsInOnePeriod();\n this._constructYearsGrid();\n }\n\n /** Method used to load the next 12 years to be displayed. */\n loadPreviousYearsList(): void {\n this._firstYearInList -= this._periodsAmount() * this._yearsInOnePeriod();\n this._constructYearsGrid();\n }\n\n /**\n * Set focus on month cell.\n * It can be a selected cell, current month cell or first cell in the list\n */\n setFocusOnCell(): void {\n const cellToFocus = new DefaultCalendarActiveCellStrategy().getActiveCell(this._getYearsList());\n if (!cellToFocus?.id) {\n return;\n }\n this._focusElementBySelector(`#${cellToFocus.id}`);\n }\n\n /** Method for handling the keyboard navigation. */\n _onKeydownYearHandler(event: KeyboardEvent, index: number): void {\n this._calendarService.onKeydownHandler(event, index);\n }\n\n /**\n * @hidden\n * Method that allows to focus elements inside this component\n */\n _focusElementBySelector(elementSelector: string): void {\n const elementToFocus: HTMLElement = this._eRef.nativeElement.querySelector(elementSelector);\n if (elementToFocus?.focus) {\n elementToFocus.focus();\n }\n }\n\n /**\n * @hidden\n * Method returning index of aggregated year index cell\n */\n _getIndex(rowIndex: number, colIndex: number): number {\n return this._calendarService.getId(rowIndex, colIndex);\n }\n\n /**\n * @hidden\n * Get id of calendar's aggregated year item\n */\n _getId(index: number): string {\n return this.viewId + '-aggregated-years-' + index;\n }\n\n /**\n * @hidden\n * Check if specified year is between start year and end year)\n */\n _isBetween(aggregatedYear: AggregatedYear, yearToCheck: number): boolean {\n return aggregatedYear.endYear >= yearToCheck && aggregatedYear.startYear <= yearToCheck;\n }\n\n /** @hidden */\n private _constructYearsGrid(): void {\n const displayedYearsAmount: number = this.aggregatedYearsViewGrid.cols * this.aggregatedYearsViewGrid.rows;\n const calendarYearList: CalendarAggregatedYear[] = [];\n this._calendarYearListGrid = [];\n\n for (let index = 0; index < displayedYearsAmount; ++index) {\n /**\n * Generates object with certain period of years,\n * which depends on amount of years displayed in year view\n */\n\n const years: AggregatedYear = {\n startYear: this._firstYearInList + this._yearsInOnePeriod() * index,\n endYear: this._firstYearInList + this._yearsInOnePeriod() * (index + 1) - 1\n };\n\n calendarYearList.push({\n years,\n label: this._getYearsName(years),\n ariaLabel: this._getAriaYearsName(years),\n selected: this._isBetween(years, this.yearSelected),\n current: this._isBetween(years, this._currentYear),\n index\n });\n }\n\n /** Creating 2d grid */\n while (calendarYearList.length) {\n this._calendarYearListGrid.push(calendarYearList.splice(0, this.aggregatedYearsViewGrid.cols));\n }\n\n const yearsCellSelected = calendarYearList.find((cell) => this._isBetween(cell.years, this.yearSelected));\n this._yearsSelected = yearsCellSelected ? yearsCellSelected.years : null;\n this._activeYear = this._getActiveYear();\n\n this._calendarYearListGrid.forEach((row, rowIndex) => {\n row.forEach((cell, colIndex) => {\n cell.id = this._getId(this._getIndex(rowIndex, colIndex));\n cell.tabIndex = cell.years === this._activeYear ? 0 : -1;\n });\n });\n\n this._changeDetectorRef.detectChanges();\n }\n\n /**\n * @hidden\n * Returns year name as a string.\n */\n private _getYearsName(years: AggregatedYear): string {\n const startYearFormatted = this._dateTimeAdapter.getYearName(\n this._dateTimeAdapter.createDate(years.startYear, 1, 1)\n );\n const endYearFormatted = this._dateTimeAdapter.getYearName(\n this._dateTimeAdapter.createDate(years.endYear, 1, 1)\n );\n return `${this._getYearString(years.startYear, startYearFormatted)} - ${this._getYearString(\n years.endYear,\n endYearFormatted\n )}`;\n }\n\n /**\n * @hidden\n * Returns aria year name as a string.\n */\n private _getAriaYearsName(years: AggregatedYear): string {\n const startYearFormatted = this._dateTimeAdapter.format(\n this._dateTimeAdapter.createDate(years.startYear, 1, 1),\n this._dateTimeFormats.display.yearA11yLabel\n );\n const endYearFormatted = this._dateTimeAdapter.format(\n this._dateTimeAdapter.createDate(years.endYear, 1, 1),\n this._dateTimeFormats.display.yearA11yLabel\n );\n return `${this._getYearString(years.startYear, startYearFormatted)} - ${this._getYearString(\n years.endYear,\n endYearFormatted\n )}`;\n }\n\n /**\n * @hidden\n * Returns year name taking into account yearMapping.\n */\n private _getYearString(year: number, defaultStr: string): string {\n if (typeof this.aggregatedYearsViewGrid.yearMapping === 'function') {\n return this.aggregatedYearsViewGrid.yearMapping(year);\n }\n return defaultStr;\n }\n\n /**\n * @hidden\n * Amount of years displayed in year view\n */\n private _yearsInOnePeriod(): number {\n if (this.yearViewGrid) {\n return this.yearViewGrid.cols * this.yearViewGrid.rows;\n } else {\n return 12;\n }\n }\n\n /**\n * @hidden\n * Amount of years displayed in aggregated year view\n */\n private _periodsAmount(): number {\n return this.aggregatedYearsViewGrid.cols * this.aggregatedYearsViewGrid.rows;\n }\n\n /**\n * @hidden\n * Method that returns active cell, which means:\n * if there is any selected year, return selected year\n * if there is no selected year, but there is current year, return current year\n * if there is no current year, or selected, return first one\n */\n private _getActiveYear(): AggregatedYear {\n const selectedYearCell = this._getYearsList().find(({ years }) => this._isBetween(years, this.yearSelected));\n if (selectedYearCell) {\n return selectedYearCell.years;\n }\n\n const currentYearCell = this._getYearsList().find(({ years }) => this._isBetween(years, this._currentYear));\n if (currentYearCell) {\n return currentYearCell.years;\n }\n\n return this._calendarYearListGrid[0][0].years;\n }\n\n /**\n * @hidden\n * Returns transformed 1d array from 2d year grid.\n */\n private _getYearsList(): CalendarAggregatedYear[] {\n return (<CalendarAggregatedYear[]>[]).concat(...this._calendarYearListGrid);\n }\n\n /**\n * @hidden\n * Method to put configuration and listeners on calendar keyboard service\n */\n private _setupKeyboardService(): void {\n this._calendarService.rowAmount = this.aggregatedYearsViewGrid.rows;\n this._calendarService.colAmount = this.aggregatedYearsViewGrid.cols;\n\n this._calendarService.focusEscapeFunction = this.focusEscapeFunction;\n\n this._calendarService.onFocusIdChange.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((index) => {\n this._focusOnCellByIndex(index);\n });\n\n this._calendarService.onKeySelect\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((index) => this.selectYear(this._getYearsList()[index]));\n\n this._calendarService.onListStartApproach.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((index) => {\n this.loadPreviousYearsList();\n this._changeDetectorRef.detectChanges();\n this._focusOnCellByIndex(index);\n });\n\n this._calendarService.onListEndApproach.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((index) => {\n this.loadNextYearsList();\n this._changeDetectorRef.detectChanges();\n this._focusOnCellByIndex(index);\n });\n }\n\n /** @hidden */\n private _focusOnCellByIndex(index: number): void {\n this._focusElementBySelector(`#${this._getId(index)}`);\n }\n}\n","<table\n class=\"fd-calendar__content fd-calendar__content--years\"\n role=\"grid\"\n [attr.aria-roledescription]=\"'coreCalendar.calendarYearsRangeViewDescription' | fdTranslate\"\n>\n <tbody class=\"fd-calendar__group\" role=\"rowgroup\">\n @for (colYears of _calendarYearListGrid; track colYears; let rowIndex = $index) {\n <tr class=\"fd-calendar__row\">\n @for (cell of colYears; track cell; let colIndex = $index) {\n <td\n class=\"fd-calendar__my-item\"\n role=\"gridcell\"\n [class.fd-calendar__my-item--current]=\"cell.current\"\n [class.is-active]=\"cell.selected\"\n [attr.id]=\"cell.id\"\n [attr.tabindex]=\"cell.tabIndex\"\n [attr.data-fd-calendar-years]=\"cell.years.startYear + '-' + cell.years.endYear\"\n (keydown)=\"_onKeydownYearHandler($event, cell.index)\"\n (click)=\"selectYear(cell, $event)\"\n >\n <button\n fd-button\n fdType=\"transparent\"\n class=\"fd-calendar__my-item-button\"\n [class.is-active]=\"cell.current\"\n tabindex=\"-1\"\n >\n <span\n class=\"fd-calendar__text\"\n [attr.aria-labelledby]=\"\n cell.id +\n '-aria-label ' +\n (cell.current ? _todayLabelId + ' ' : '') +\n (cell.selected ? _selectedDateLabelId : '')\n \"\n >\n {{ cell.label }}\n </span>\n </button>\n <span hidden aria-hidden=\"true\" [attr.id]=\"cell.id + '-aria-label'\">\n {{ cell.ariaLabel }}\n </span>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_todayLabelId\">{{ 'coreCalendar.todayLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_selectedDateLabelId\">{{ 'coreCalendar.dateSelectedLabel' | fdTranslate }}</div>\n</div>\n","import { AbstractCalendarActiveCellStrategy, BaseCalendarCell } from './common';\nexport interface CalendarDay<D> extends BaseCalendarCell {\n date: D; // date representation\n weekDay: number; // weeks number in the year\n weekend: boolean; // to highlight Saturday and Sunday\n monthStatus?: 'previous' | 'current' | 'next'; // to mark days from sibling months\n specialNumber?: number; // special day marker flag\n blocked?: boolean; // blocked date\n past?: boolean; // date in past\n selectedFirst?: boolean; // to highlight the first selected date in the range\n selectedLast?: boolean; // to highlight the last selected date in the range\n selectedRange?: boolean; // to highlight dates in the range between selectedFirst and selectedLast\n hoverRange?: boolean; // \"true\" for days included in date range selection before the the selection is confirmed\n isTabIndexed?: boolean; // if \"true\" sets day cell tabindex to \"0\"\n}\n\n/**\n * Active Calendar Day cell strategy\n */\nexport class ActiveCalendarDayCellStrategy<D = unknown> extends AbstractCalendarActiveCellStrategy<CalendarDay<D>> {\n /**\n * Calculate which table cell should be active\n */\n getActiveCell(cells: CalendarDay<D>[]): CalendarDay<D> | null {\n const selected = cells.find((cell) => cell.selected);\n if (selected) {\n return selected;\n }\n const current = cells.find((cell) => cell.current);\n if (current) {\n return current;\n }\n const fistDayInMonth = cells.find((cell) => cell.monthStatus === 'current');\n if (fistDayInMonth) {\n return fistDayInMonth;\n }\n return cells[0] || null;\n }\n}\n","/** A class representing a range of dates. */\nexport class DateRange<D> {\n /**\n * Date range.\n * @param start\n * @param end\n */\n constructor(\n /** The start date of the range. */\n readonly start: D | null,\n /** The end date of the range. */\n readonly end: D | null\n ) {}\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n inject\n} from '@angular/core';\n\nimport { DATE_TIME_FORMATS, DateTimeFormats, DatetimeAdapter } from '@fundamental-ngx/core/datetime';\nimport { SpecialDayRule } from '@fundamental-ngx/core/shared';\nimport equal from 'fast-deep-equal';\n\nimport { CalendarCurrent } from '../../models/calendar-current';\nimport { ActiveCalendarDayCellStrategy as CalendarActiveDayCellStrategy, CalendarDay } from '../../models/calendar-day';\nimport { DateRange } from '../../models/date-range';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { CalendarService } from '../../calendar.service';\nimport { DisableDateFunction, EscapeFocusFunction, FocusableCalendarView } from '../../models/common';\nimport { CalendarType, DaysOfWeek } from '../../types';\n\n/** Component representing the day view of the calendar. */\n@Component({\n selector: 'fd-calendar-day-view',\n templateUrl: './calendar-day-view.component.html',\n styleUrl: './calendar-day-view.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'viewId',\n class: 'fd-calendar__dates'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [FdTranslatePipe]\n})\nexport class CalendarDayViewComponent<D> implements OnInit, OnChanges, FocusableCalendarView {\n /**\n * Function used to disable certain dates in the calendar.\n * @param date date type\n */\n @Input()\n disableFunction: DisableDateFunction<D>;\n\n /**\n * Function used to disable certain dates in the calendar for the range start selection.\n * @param date date representation\n */\n @Input()\n disableRangeStartFunction: DisableDateFunction<D>;\n\n /**\n * Function used to disable certain dates in the calendar for the range end selection.\n * @param date date representation\n */\n @Input()\n disableRangeEndFunction: DisableDateFunction<D>;\n\n /** Currently displayed month and year for days */\n @Input()\n set currentlyDisplayed(currentlyDisplayed: CalendarCurrent) {\n if (!equal(currentlyDisplayed, this._currentlyDisplayed)) {\n this._currentlyDisplayed = currentlyDisplayed;\n this._buildDayViewGrid();\n }\n }\n\n get currentlyDisplayed(): CalendarCurrent {\n return this._currentlyDisplayed;\n }\n\n /** The currently selected date model in single mode. */\n @Input()\n set selectedDate(date: Nullable<D>) {\n this._selectedDate = date;\n if (this._dayViewGrid) {\n const dayFromDate = this._calendarDayList.find((day) => this._dateTimeAdapter.datesEqual(day.date, date));\n this._changeSelectedSingleDay(dayFromDate, this._calendarDayList);\n }\n }\n\n get selectedDate(): Nullable<D> {\n return this._selectedDate;\n }\n\n /** The currently selected FdDates model start and end in range mode. */\n @Input()\n set selectedRangeDate(dateRange: DateRange<D>) {\n if (\n dateRange &&\n this.selectedRangeDate &&\n this._dateTimeAdapter.datesEqual(dateRange.start, this.selectedRangeDate.start) &&\n this._dateTimeAdapter.datesEqual(dateRange.end, this.selectedRangeDate.end)\n ) {\n return;\n }\n this._selectedRangeDate = dateRange;\n if (this._dayViewGrid) {\n this._changeSelectedRangeDays(dateRange, this._calendarDayList);\n }\n }\n\n get selectedRangeDate(): DateRange<D> {\n return this._selectedRangeDate;\n }\n\n /** The day of the week the calendar should start on. 1 represents Sunday, 2 is Monday, 3 is Tuesday, and so on. */\n @Input()\n startingDayOfWeek: DaysOfWeek;\n\n /** The type of calendar, 'single' for single date selection or 'range' for a range of dates. */\n @Input()\n calType: CalendarType = 'single';\n\n /** Id of the calendar. If none is provided, one will be generated. */\n @Input()\n id: string;\n\n /**\n * Whether user wants to mark day cells on hover.\n * Works only on range mode, when start date is selected.\n */\n @Input()\n rangeHoverEffect = false;\n\n /**\n * Whether user wants to mark sunday/saturday with `fd-calendar__item--weekend` class\n */\n @Input()\n markWeekends = false;\n\n /**\n * Whether user wants to show week numbers next to days\n */\n @Input()\n showWeekNumbers = true;\n\n /** Function that allows to specify which function would be called, when focus wants to escape */\n @Input()\n focusEscapeFunction: EscapeFocusFunction;\n\n /**\n * Special days mark, it can be used by passing array of object with\n * Special day number, list 1-20 [class:`fd-calendar__item--legend-{{number}}`] is available there:\n * https://sap.github.io/fundamental-styles/components/calendar.html calendar special days section\n * Rule accepts method with date object as a parameter. ex:\n * `rule: (date: D) => this.dateAdapter.getDay(date) === 1`, which will mark all sundays as special day.\n */\n @Input()\n specialDaysRules: SpecialDayRule<D>[] = [];\n\n /** Event emitted always, when model is changed in range mode */\n @Output()\n readonly selectedRangeDateChange: EventEmitter<DateRange<D>> = new EventEmitter<DateRange<D>>();\n\n /** Event emitted always, when next month is selected, by focus */\n @Output()\n readonly nextMonthSelect: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted always, when previous month is selected, by focus */\n @Output()\n readonly previousMonthSelect: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted always, when model is changed in single mode */\n @Output()\n readonly selectedDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * @hidden\n * Actual day grid with previous/current/next month days\n */\n _dayViewGrid: CalendarDay<D>[][];\n\n /**\n * @hidden\n * Array of week numbers displayed for current month/year\n */\n _weeks: string[];\n\n /** @hidden */\n private _selectedRangeDate: DateRange<D>;\n\n /** @hidden */\n private _selectedDate: Nullable<D>;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /**\n * @hidden\n * Days per week\n */\n private readonly _amountOfCols = 7;\n /** @hidden */\n private _isOnRangePick = false;\n /** @hidden */\n private _isInitiated = false;\n\n /** @hidden */\n private _currentlyDisplayed: CalendarCurrent;\n\n /**\n * @hidden\n * Variable that contains short weekday names.\n */\n private _shortWeekDays: string[];\n\n /**\n * @hidden\n * Variable that contains short weekday names.\n */\n private _longWeekDays: string[];\n\n /** @hidden */\n constructor(\n private eRef: ElementRef,\n private changeDetRef: ChangeDetectorRef,\n private calendarService: CalendarService,\n @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats,\n public _dateTimeAdapter: DatetimeAdapter<D>\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._isInitiated = true;\n\n this._setupKeyboardService();\n\n this._refreshShortWeekDays();\n\n this._buildDayViewGrid();\n\n this._dateTimeAdapter.localeChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._refreshShortWeekDays();\n this._buildDayViewGrid();\n this.changeDetRef.markForCheck();\n });\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n /** Changes of those properties are done inside its setters */\n if (!changes['selectedDate'] && !changes['selectedRangeDate'] && !changes['currentlyDisplayed']) {\n this._buildDayViewGrid();\n }\n if (changes['startingDayOfWeek']) {\n this._refreshShortWeekDays();\n }\n }\n /**\n * Function for selecting a date on the calendar. Typically called when a date is clicked, but can also be called programmatically.\n * @param day CalendarDay object to be selected.\n * @param event\n */\n selectDate(day: CalendarDay<D>, event?: MouseEvent): void {\n if (event) {\n /**\n * There are some problems with popup integration. After clicking inside day component, the popover closes.\n */\n event.stopPropagation();\n event.preventDefault();\n }\n\n if (!day.disabled && !day.blocked) {\n if (this.calType === 'single') {\n /** Remove selections from other day and put selection to chosen day */\n this._calendarDayList.forEach((_day) => (_day.selected = false));\n day.selected = true;\n this._selectedDate = day.date;\n this.selectedDateChange.emit(day.date);\n } else {\n if (this._selectCounter === 0 || this._selectCounter === 2) {\n this._selectedRangeDate = { start: day.date, end: null };\n this.selectedRangeDateChange.emit(this.selectedRangeDate);\n } else if (this._selectCounter === 1) {\n // Check if date picked is higher than already chosen, otherwise just reverse them\n if (this._dateTimeAdapter.compareDate(this.selectedRangeDate.start!, day.date) < 0) {\n this._selectedRangeDate = {\n start: this.selectedRangeDate.start,\n end: day.date\n };\n } else {\n this._selectedRangeDate = {\n start: day.date,\n end: this.selectedRangeDate.start\n };\n }\n this.selectedRangeDateChange.emit(this.selectedRangeDate);\n }\n this._changeSelectedRangeDays(this._selectedRangeDate, this._calendarDayList);\n }\n }\n\n if (this.calType === 'range' && this.rangeHoverEffect && this._selectCounter === 1 && event) {\n this._isOnRangePick = !this._isOnRangePick;\n } else {\n this._isOnRangePick = false;\n }\n\n this.changeDetRef.markForCheck();\n }\n\n /**\n * Set focus on default focusable cell\n */\n setFocusOnCell(): void {\n const cellToFocus = new CalendarActiveDayCellStrategy().getActiveCell(this._calendarDayList);\n if (!cellToFocus?.index && cellToFocus?.index !== 0) {\n return;\n }\n this.focusOnCellByIndex(cellToFocus.index);\n }\n\n /** @hidden */\n _refreshHoverRange(day: CalendarDay<D>): void {\n const start = this.selectedRangeDate?.start;\n if (this._isOnRangePick && start) {\n if (this._dateTimeAdapter.compareDate(day.date, start) < 0) {\n this._calendarDayList.forEach((_day) => {\n _day.hoverRange =\n this._dateTimeAdapter.compareDate(_day.date, day.date) > 0 &&\n this._dateTimeAdapter.compareDate(_day.date, start) < 0;\n });\n } else {\n this._calendarDayList.forEach((_day) => {\n _day.hoverRange =\n this._dateTimeAdapter.compareDate(_day.date, day.date) < 0 &&\n this._dateTimeAdapter.compareDate(_day.date, start) > 0;\n });\n }\n }\n }\n\n /**\n * @hidden\n * Amount of selected days\n * 0, when there is no day selected, or start date is invalid,\n * 1, when there is only valid start date, or end date is same as start date,\n * 2, when both dates are valid\n */\n get _selectCounter(): number {\n if (!this.selectedRangeDate || !this._dateTimeAdapter.isValid(this.selectedRangeDate.start)) {\n return 0;\n }\n if (\n this.selectedRangeDate.start &&\n (!this._dateTimeAdapter.isValid(this.selectedRangeDate.end) ||\n this._dateTimeAdapter.datesEqual(this.selectedRangeDate.start, this.selectedRangeDate.end))\n ) {\n return 1;\n }\n if (\n this._dateTimeAdapter.isValid(this.selectedRangeDate.start) &&\n this._dateTimeAdapter.isValid(this.selectedRangeDate.end)\n ) {\n return 2;\n }\n return 0;\n }\n\n /**\n * @hidden\n * Method that returns short weekday name.\n * Can be changed by user by providing other class which implements DatetimeAdapter\n */\n get shortWeekDays(): string[] {\n return this._shortWeekDays;\n }\n\n /**\n * @hidden\n * Method that returns weekday name.\n * Can be changed by user by providing other class which implements DatetimeAdapter\n */\n get longWeekDays(): string[] {\n return this._longWeekDays;\n }\n\n /**\n * @hidden\n * Function that gives array of all displayed CalendarDays\n */\n get _calendarDayList(): CalendarDay<D>[] {\n return this._dayViewGrid.reduce((totalCalendarRows: CalendarDay<D>[], calendarRow: CalendarDay<D>[]) => {\n if (!calendarRow) {\n calendarRow = [];\n }\n return totalCalendarRows.concat(calendarRow);\n }, []);\n }\n\n /**\n * View ID\n */\n get viewId(): string {\n return this.id + '-day-view';\n }\n\n /**\n * @hidden\n * Week column header ID\n */\n get _weekNumbersColumnHeaderId(): string {\n return this.viewId + '-week-column-header';\n }\n\n /**\n * @hidden\n * Today cell label ID\n */\n get _todayLabelId(): string {\n return this.viewId + '-today-label';\n }\n\n /**\n * @hidden\n * Selected date label ID\n */\n get _selectedDateLabelId(): string {\n return this.viewId + '-selected-date-label';\n }\n\n /**\n * @hidden\n * Date range start date label ID\n */\n get _dateRangeStartLabelId(): string {\n return this.viewId + '-range-start-date-label';\n }\n\n /**\n * @hidden\n * Date range end date label ID\n */\n get _dateRangeEndLabelId(): string {\n return this.viewId + '-range-end-date-label';\n }\n\n /**\n * @hidden\n * Date in past label ID\n */\n get _dateInPastLabelId(): string {\n return this.viewId + '-day-in-past-label';\n }\n\n /**\n * @hidden\n * Method that handles day cells keydown events,\n * @param event KeyboardEvent\n * @param cell CalendarDay\n * @param index with specified column and row as a x and y\n */\n _onKeydownDayHandler(event: KeyboardEvent, cell: CalendarDay<D>, index: number): void {\n if (event.key === 'Tab' && !event.shiftKey) {\n if (this.focusEscapeFunction) {\n this.focusEscapeFunction(event);\n }\n } else {\n this.calendarService.onKeydownHandler(event, index);\n }\n }\n\n /**\n * @hidden\n * Method that allow to focus elements inside this component\n */\n _focusElementBySelector(elementSelector: string): void {\n const elementToFocus: HTMLElement = this.eRef.nativeElement.querySelector(elementSelector);\n if (elementToFocus?.focus) {\n elementToFocus.focus();\n }\n }\n\n /**\n * @hidden\n * Standardized method to calculate grid [x][y] to index number of flatten list\n */\n _getIndex(rowIndex: number, colIndex: number): number {\n return this.calendarService.getId(rowIndex, colIndex);\n }\n\n /**\n * @hidden\n * Method that selects previous month\n * Triggered only when the month is changed during changing focus\n * Also triggers event to parent calendar component and rebuilds day view grid\n */\n private _selectPreviousMonth(): void {\n this._currentlyDisplayed = this._getPreviousMonth();\n this._buildDayViewGrid();\n this.previousMonthSelect.emit();\n }\n\n /**\n * @hidden\n * Method that selects next month\n * Triggered only when the month is changed during changing focus\n * Also triggers event to parent calendar component and rebuilds day view grid\n */\n private _selectNextMonth(): void {\n this._currentlyDisplayed = this._getNextMonth();\n this._buildDayViewGrid();\n this.nextMonthSelect.emit();\n }\n\n /**\n * @hidden\n * Method that creates array of CalendarDay models which will be shown on day grid,\n * depending on current month and year.\n */\n private _populateCalendar(): CalendarDay<D>[] {\n let calendar: CalendarDay<D>[] = [];\n\n calendar = this._getPreviousMonthDays(calendar);\n calendar = calendar.concat(this._getCurrentMonthDays());\n calendar = this._getNextMonthDays(calendar);\n\n calendar.forEach((call, index: number) => {\n call.id = this._getCellIdByIndex(index);\n call.index = index;\n });\n\n if (this.calType === 'single' && this._selectedDate) {\n const _day = calendar.find((day) => this._dateTimeAdapter.datesEqual(day.date, this._selectedDate));\n this._changeSelectedSingleDay(_day, calendar);\n }\n\n if (this.calType === 'range' && this._selectedRangeDate) {\n this._changeSelectedRangeDays(this._selectedRangeDate, calendar);\n }\n\n return calendar;\n }\n\n /**\n * @hidden\n * Method that builds 2 dimensions day view grid, also sets up currently displayed month, or year,\n * when there is not any.\n */\n private _buildDayViewGrid(): void {\n if (!this._isInitiated) {\n return;\n }\n\n if (!this.currentlyDisplayed || this._isInvalidDate()) {\n if (this.selectedDate) {\n this._currentlyDisplayed = {\n month: this._dateTimeAdapter.getMonth(this.selectedDate),\n year: this._dateTimeAdapter.getYear(this.selectedDate)\n };\n } else {\n const today = this._dateTimeAdapter.today();\n this._currentlyDisplayed = {\n month: this._dateTimeAdapter.getMonth(today),\n year: this._dateTimeAdapter.getYear(today)\n };\n }\n }\n\n const calendarDays = this._populateCalendar();\n const dayViewGrid: CalendarDay<D>[][] = [];\n\n while (calendarDays.length > 0) {\n dayViewGrid.push(calendarDays.splice(0, this._amountOfCols));\n }\n\n this.calendarService.rowAmount = dayViewGrid.length;\n\n this._dayViewGrid = dayViewGrid;\n this._weeks = this._refreshWeekCount();\n }\n\n /** @hidden */\n private _isInvalidDate(): boolean {\n return isNaN(this.currentlyDisplayed.year) || isNaN(this.currentlyDisplayed.month);\n }\n\n /**\n * @hidden\n * Get id of calendar's day item\n */\n private _getCellIdByIndex(index: number): string {\n return this.viewId + '-day-' + index + '';\n }\n\n /**\n * @hidden\n * Method which provides array of CalendarDay,\n * which contains every single day of currently shown month/year.\n */\n private _getCurrentMonthDays(): CalendarDay<D>[] {\n const month = this.currentlyDisplayed.month;\n const year = this.currentlyDisplayed.year;\n const calendarDays: CalendarDay<D>[] = [];\n const amountOfDaysInCurrentMonth: number = this._dateTimeAdapter.getNumDaysInMonth(\n this._dateTimeAdapter.createDate(year, month, 1)\n );\n const now = this._dateTimeAdapter.now();\n for (let dayNumber = 1; dayNumber <= amountOfDaysInCurrentMonth; dayNumber++) {\n const date: D = this._dateTimeAdapter.createDate(year, month, dayNumber);\n calendarDays.push({\n ...this._getDay(date),\n monthStatus: 'current',\n current: this._dateTimeAdapter.datesEqual(now, date)\n });\n }\n const cell = this._getActiveCell(calendarDays);\n cell && (cell.isTabIndexed = true);\n return calendarDays;\n }\n\n /**\n * @hidden\n * Method that returns active cell, which means:\n * if there is any selected day, return selected day\n * if there is no selected day, but there is today day, return today day\n * if there is no today, or selected, return first one\n */\n private _getActiveCell(calendarDays: CalendarDay<D>[]): CalendarDay<D> | null {\n return new CalendarActiveDayCellStrategy<D>().getActiveCell(calendarDays);\n }\n\n /**\n * @hidden\n * Method which provides array of CalendarDay,\n * which contains last 0-6 days of previous month/year. Theses days\n * fills the gap between starting startingDayOfWeek and first day of current month\n */\n private _getPreviousMonthDays(calendarDays: CalendarDay<D>[]): CalendarDay<D>[] {\n const month = this.currentlyDisplayed.month > 1 ? this.currentlyDisplayed.month - 1 : 12;\n const year =\n this.currentlyDisplayed.month > 1 ? this.currentlyDisplayed.year : this.currentlyDisplayed.year - 1;\n const amountOfDaysInCurrentMonth: number = this._dateTimeAdapter.getNumDaysInMonth(\n this._dateTimeAdapter.createDate(year, month, 1)\n );\n const prevMonthLastDate = this._dateTimeAdapter.createDate(year, month, amountOfDaysInCurrentMonth);\n const prevMonthLastDay = amountOfDaysInCurrentMonth;\n let prevMonthLastWeekDay = this._dateTimeAdapter.getDayOfWeek(prevMonthLastDate) - this.startingDayOfWeek;\n\n /** Checking if there are some days cut by startingDayOfWeek option\n * If yes, there is whole week added, to avoid hiding\n */\n if (prevMonthLastWeekDay < 0) {\n prevMonthLastWeekDay = prevMonthLastWeekDay + 7;\n }\n\n if (prevMonthLastWeekDay < 6) {\n while (prevMonthLastWeekDay >= 0) {\n const prevMonthDay = prevMonthLastDay - prevMonthLastWeekDay;\n const date = this._dateTimeAdapter.createDate(year, month, prevMonthDay);\n calendarDays.push({ ...this._getDay(date), monthStatus: 'previous' });\n prevMonthLastWeekDay--;\n }\n }\n return calendarDays;\n }\n\n /**\n * @hidden\n * Method which provides array of CalendarDay, which contains first days of next month/year. Theses days\n * fills the gap between last day of current day and end of 6-weeks calendar grid.\n */\n private _getNextMonthDays(calendarDays: CalendarDay<D>[]): CalendarDay<D>[] {\n const month = this.currentlyDisplayed.month < 12 ? this.currentlyDisplayed.month + 1 : 1;\n const year =\n this.currentlyDisplayed.month < 12 ? this.currentlyDisplayed.year : this.currentlyDisplayed.year + 1;\n\n // The calendar grid can have 5 (35 days) or 6 (42 days) weeks\n const nextMonthDisplayedDays = (42 - calendarDays.length) % 7;\n\n for (let nextD = 1; nextD <= nextMonthDisplayedDays; nextD++) {\n const date = this._dateTimeAdapter.createDate(year, month, nextD);\n calendarDays.push({ ...this._getDay(date), monthStatus: 'next' });\n }\n return calendarDays;\n }\n\n /** @hidden */\n private _isWeekendDay(dayOfWeek: number): boolean {\n return dayOfWeek === 1 || dayOfWeek === 7;\n }\n\n /**\n * @hidden\n * Method that generates whole day model basing on date, disabling functions, block functions, and actually\n * chosen range / single date.\n */\n private _getDay(date: D): CalendarDay<D> {\n const weekDay = this._dateTimeAdapter.getDayOfWeek(date);\n const dayOfMonth = this._dateTimeAdapter.getDate(date);\n const dateNames = this._dateTimeAdapter.getDateNames();\n const isPast = this._dateTimeAdapter.compareDate(date, this._dateTimeAdapter.today()) < 0;\n const day: CalendarDay<D> = {\n date,\n label: dateNames[dayOfMonth - 1],\n weekDay,\n weekend: this._isWeekendDay(weekDay),\n ariaLabel: this._dateTimeAdapter.format(date, this._dateTimeFormats.display.dateA11yLabel),\n specialNumber: this._getSpecialDay(date) ?? undefined,\n past: isPast\n };\n\n /** Apply disabled state to days marked with passed function */\n if (this.disableFunction) {\n day.disabled = this.disableFunction(date);\n }\n\n return day;\n }\n\n /**\n * @hidden\n * Method that is called to refresh i18n short week days.\n */\n private _refreshShortWeekDays(): void {\n const shortDayOfWeekNames = this._dateTimeAdapter.getDayOfWeekNames('short');\n const dayOfWeekNames = this._dateTimeAdapter.getDayOfWeekNames('long');\n\n this._shortWeekDays = shortDayOfWeekNames\n .slice(this.startingDayOfWeek - 1)\n .concat(shortDayOfWeekNames.slice(0, this.startingDayOfWeek - 1));\n\n this._longWeekDays = dayOfWeekNames\n .slice(this.startingDayOfWeek - 1)\n .concat(dayOfWeekNames.slice(0, this.startingDayOfWeek - 1));\n\n this.changeDetRef.markForCheck();\n }\n\n /**\n * @hidden\n * Gets special day number of specified date model\n */\n private _getSpecialDay(date: D): number | null {\n const specialDay = this.specialDaysRules.find((specialDayRule) => specialDayRule.rule(date));\n if (specialDay) {\n return specialDay.specialDayNumber;\n }\n return null;\n }\n\n /**\n * @hidden\n * Method that returns array of week's count\n */\n private _refreshWeekCount(): string[] {\n const calendarDayList = this._calendarDayList;\n const weekNumbers: string[] = [];\n for (let index = 6; index < calendarDayList.length; index = index + 6) {\n weekNumbers.push(this._dateTimeAdapter.getWeekName(calendarDayList[index].date));\n }\n return weekNumbers;\n }\n\n /**\n * @hidden\n * Get year and month for previous year\n */\n private _getPreviousMonth(): CalendarCurrent {\n if (this._currentlyDisplayed.month > 1) {\n return { year: this._currentlyDisplayed.year, month: this._currentlyDisplayed.month - 1 };\n } else {\n return { year: this._currentlyDisplayed.year - 1, month: 12 };\n }\n }\n\n /**\n * @hidden\n * Get year and month for next year\n */\n private _getNextMonth(): CalendarCurrent {\n if (this._currentlyDisplayed.month < 12) {\n return { year: this._currentlyDisplayed.year, month: this._currentlyDisplayed.month + 1 };\n } else {\n return { year: this._currentlyDisplayed.year + 1, month: 1 };\n }\n }\n\n /**\n * @hidden\n * Method to put configuration and listeners on calendar keyboard service\n */\n private _setupKeyboardService(): void {\n this.calendarService.colAmount = this._amountOfCols;\n\n this.calendarService.focusEscapeFunction = this.focusEscapeFunction;\n\n this.calendarService.onFocusIdChange.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((index) => {\n this.focusOnCellByIndex(index);\n });\n\n this.calendarService.onKeySelect.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((index) => {\n this.selectDate(this._calendarDayList[index]);\n });\n\n this.calendarService.onListStartApproach.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((index) => {\n this._selectPreviousMonth();\n /**\n * Calculate focused cell in new grid\n */\n const originalMonth = this._getNextMonth(); // month that was before moving back\n const originalAmountOfWeeks = this._dateTimeAdapter.getAmountOfWeeks(\n originalMonth.year,\n originalMonth.month,\n this.startingDayOfWeek\n );\n const prevMonthAmountOfWeeks = this._dateTimeAdapter.getAmountOfWeeks(\n this._currentlyDisplayed.year,\n this._currentlyDisplayed.month,\n this.startingDayOfWeek\n );\n // trigger rendering for new grid so focus can be set\n this.changeDetRef.detectChanges();\n this.focusOnCellByIndex(index - 7 * (originalAmountOfWeeks - prevMonthAmountOfWeeks));\n });\n\n this.calendarService.onListEndApproach.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((index) => {\n this._selectNextMonth();\n // trigger rendering for new grid so focus can be set\n this.changeDetRef.detectChanges();\n this.focusOnCellByIndex(index);\n });\n }\n\n /**\n * @hidden\n * Change selection flag on days to false, besides the selected one\n */\n private _changeSelectedSingleDay(day: CalendarDay<D> | undefined, calendar: CalendarDay<D>[]): void {\n calendar.forEach((_day) => (_day.selected = false));\n if (day && !day.blocked && !day.disabled) {\n day.selected = true;\n }\n this.refreshTabIndex(calendar);\n }\n\n /**\n * @hidden\n * Change properties of range days, this method is called, to not rebuild whole grid from scratch,\n * it just changes properties of newly selected/unselected days.\n */\n private _changeSelectedRangeDays(dates: DateRange<D>, calendar: CalendarDay<D>[]): void {\n /** Pull list of calendar days */\n const calendarList = calendar;\n\n /** Reset changing properties */\n calendarList.forEach(\n (_day) =>\n (_day.selectedFirst =\n _day.selectedLast =\n _day.selected =\n _day.isTabIndexed =\n _day.disabled =\n _day.hoverRange =\n _day.selectedRange =\n false)\n );\n\n if (dates) {\n let startDay: CalendarDay<D> | undefined;\n let endDay: CalendarDay<D> | undefined;\n if (dates.start) {\n /** Find start date and mark it as selected */\n startDay = calendarList.find((_day) => this._dateTimeAdapter.datesEqual(_day.date, dates.start));\n if (\n startDay &&\n !startDay.blocked &&\n !startDay.disabled &&\n (typeof this.disableRangeStartFunction !== 'function' ||\n !this.disableRangeStartFunction(startDay.date))\n ) {\n startDay.selected = true;\n startDay.selectedFirst = true;\n }\n }\n if (dates.end) {\n /** Find end date and mark it as selected */\n endDay = calendarList.find((_day) => this._dateTimeAdapter.datesEqual(_day.date, dates.end));\n if (\n endDay &&\n !endDay.blocked &&\n !endDay.disabled &&\n (typeof this.disableRangeEndFunction !== 'function' || !this.disableRangeEndFunction(endDay.date))\n ) {\n endDay.selected = true;\n endDay.selectedLast = true;\n }\n }\n\n /** Verify if start day and end day is valid, otherwise don't put range selection */\n if (dates.start && dates.end) {\n /** Mark all days, which are between start and end date */\n calendarList\n .filter(\n (_day) =>\n (_day.selectedRange = this._dateTimeAdapter.isBetween(_day.date, dates.start!, dates.end!))\n )\n .forEach((_day) => (_day.selectedRange = true));\n }\n }\n\n this.refreshTabIndex(calendarList);\n\n /** Apply disabled state to days marked with passed function */\n if (this.disableFunction) {\n calendarList.forEach((_day) => (_day.disabled = this.disableFunction!(_day.date)));\n }\n\n if ((this._selectCounter === 0 || this._selectCounter === 2) && this.disableRangeStartFunction) {\n calendarList.forEach(\n (_day) => (_day.disabled = _day.disabled || this.disableRangeStartFunction!(_day.date))\n );\n } else if (this._selectCounter === 1 && this.disableRangeEndFunction) {\n calendarList.forEach((_day) => (_day.disabled = _day.disabled || this.disableRangeEndFunction!(_day.date)));\n }\n }\n\n /** @hidden */\n private refreshTabIndex(calendar: CalendarDay<D>[]): void {\n calendar.forEach((_day) => (_day.isTabIndexed = false));\n const cell = this._getActiveCell(calendar.filter((_day) => _day.monthStatus === 'current'));\n cell && (cell.isTabIndexed = true);\n }\n\n /** @hidden */\n private focusOnCellByIndex(index: number): void {\n this._focusElementBySelector(`#${this._getCellIdByIndex(index)}`);\n }\n}\n","<table\n class=\"fd-calendar__content fd-calendar__content--dates\"\n role=\"grid\"\n [attr.aria-roledescription]=\"'coreCalendar.calendarDayViewDescription' | fdTranslate\"\n>\n <thead class=\"fd-calendar__group\" role=\"rowgroup\">\n <tr class=\"fd-calendar__row\" role=\"row\">\n @if (showWeekNumbers) {\n <th\n class=\"fd-calendar__item fd-calendar__item--side-helper\"\n role=\"columnheader\"\n [attr.id]=\"_weekNumbersColumnHeaderId\"\n [attr.aria-label]=\"'coreCalendar.weekColumnLabel' | fdTranslate\"\n ></th>\n }\n @for (day of shortWeekDays; track day; let i = $index) {\n <th\n class=\"fd-calendar__item fd-calendar__item--side-helper\"\n role=\"columnheader\"\n [attr.aria-label]=\"longWeekDays[i]\"\n >\n <div class=\"fd-calendar__text-wrapper\">\n <span class=\"fd-calendar__text\">{{ day }}</span>\n </div>\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"fd-calendar__group\" role=\"rowgroup\">\n @for (row of _dayViewGrid; track row; let rowIndex = $index) {\n <tr class=\"fd-calendar__row\" role=\"row\">\n @if (showWeekNumbers) {\n <th\n class=\"fd-calendar__item fd-calendar__item--side-helper\"\n role=\"rowheader\"\n scope=\"row\"\n [attr.data-fd-calendar-week]=\"_weeks[rowIndex]\"\n [attr.id]=\"viewId + '-week-' + _weeks[rowIndex]\"\n [attr.aria-labelledby]=\"\n _weekNumbersColumnHeaderId + ' ' + (viewId + '-week-' + _weeks[rowIndex])\n \"\n >\n @if (_weeks && _weeks[rowIndex]) {\n <div class=\"fd-calendar__text-wrapper\">\n <span class=\"fd-calendar__text\">\n {{ _weeks[rowIndex] }}\n </span>\n </div>\n }\n </th>\n }\n @for (cell of row; track cell; let cellIndex = $index) {\n <td\n class=\"fd-calendar__item\"\n role=\"gridcell\"\n [class.fd-calendar__item--selected]=\"cell.selectedFirst || cell.selectedLast || cell.selected\"\n [class.fd-calendar__item--range]=\"\n (cell.selectedRange || cell.hoverRange) && !cell.selectedFirst && !cell.selectedLast\n \"\n [class.fd-calendar__item--today]=\"cell.current\"\n [class.fd-calendar__item--weekend]=\"\n cell.weekend && markWeekends && cell.monthStatus === 'current'\n \"\n [class.fd-calendar__item--other]=\"cell.monthStatus !== 'current'\"\n [class.is-disabled]=\"cell.disabled\"\n [class]=\"cell.specialNumber ? 'fd-calendar__item--legend-' + cell.specialNumber : ''\"\n [attr.id]=\"cell.id\"\n [attr.data-fd-calendar-date-day]=\"cell.label\"\n [attr.data-fd-calendar-day]=\"cell.index\"\n [attr.aria-selected]=\"cell.selected\"\n [attr.aria-disabled]=\"cell.disabled\"\n [attr.tabindex]=\"cell.isTabIndexed ? 0 : -1\"\n (click)=\"selectDate(cell, $event)\"\n (mouseenter)=\"_refreshHoverRange(cell)\"\n (keydown)=\"_onKeydownDayHandler($event, cell, _getIndex(rowIndex, cellIndex))\"\n >\n <div class=\"fd-calendar__text-wrapper\">\n <span\n class=\"fd-calendar__text\"\n role=\"button\"\n [attr.aria-labelledby]=\"\n cell.id +\n '-aria-label ' +\n (cell.selectedFirst ? _dateRangeStartLabelId + ' ' : '') +\n (cell.selectedLast ? _dateRangeEndLabelId + ' ' : '') +\n (cell.current ? _todayLabelId + ' ' : '') +\n (cell.selected && calType === 'single' ? _selectedDateLabelId + ' ' : '') +\n (cell.past ? _dateInPastLabelId : '')\n \"\n >{{ cell.label }}</span\n >\n <span hidden aria-hidden=\"true\" [attr.id]=\"cell.id + '-aria-label'\">\n {{ cell.ariaLabel }}\n </span>\n </div>\n </td>\n }\n </tr>\n }\n @if (_dayViewGrid.length <= 5) {\n <tr class=\"fd-calendar__row\">\n <td class=\"fd-calendar__item hidden-day\"></td>\n </tr>\n }\n @if (_dayViewGrid.length === 4) {\n <tr class=\"fd-calendar__row\">\n <td class=\"fd-calendar__item hidden-day\"></td>\n </tr>\n }\n </tbody>\n</table>\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_todayLabelId\">{{ 'coreCalendar.todayLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_selectedDateLabelId\">{{ 'coreCalendar.dateSelectedLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_dateRangeStartLabelId\">{{ 'coreCalendar.rangeStartLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_dateRangeEndLabelId\">{{ 'coreCalendar.rangeEndLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_dateInPastLabelId\">{{ 'coreCalendar.dayInPastLabel' | fdTranslate }}</div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n inject\n} from '@angular/core';\n\nimport { DATE_TIME_FORMATS, DateTimeFormats, DatetimeAdapter } from '@fundamental-ngx/core/datetime';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { CalendarService } from '../../calendar.service';\nimport { CalendarMonth } from '../../models/calendar-month';\nimport { DefaultCalendarActiveCellStrategy, EscapeFocusFunction, FocusableCalendarView } from '../../models/common';\n\n/** Component representing the month view of the calendar. */\n@Component({\n selector: 'fd-calendar-month-view',\n templateUrl: './calendar-month-view.component.html',\n styleUrl: './calendar-month-view.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'viewId'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ButtonComponent, FdTranslatePipe]\n})\nexport class CalendarMonthViewComponent<D> implements OnInit, OnChanges, FocusableCalendarView {\n /** The id of the calendar passed from the parent component */\n @Input()\n id: string;\n\n /** A number (1-12) representing the selected month */\n @Input()\n monthSelected: number;\n\n /** A function that handles escape focus */\n @Input()\n focusEscapeFunction: EscapeFocusFunction;\n\n /** A year the month view is referring to */\n @Input()\n year: number;\n\n /** An event fired when a new month is selected */\n @Output()\n readonly monthClicked: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * @hidden\n * Month grid table\n */\n _calendarMonthListGrid: CalendarMonth[][];\n\n /**\n * @hidden\n * A number offset used to achieve the 1-12 representation of the calendar\n */\n private readonly _monthOffset: number = 1;\n /** @hidden */\n private readonly _amountOfColPerRow: number = 3;\n /** @hidden */\n private readonly _amountOfRows: number = 4;\n\n /**\n * @hidden\n */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _initiated = false;\n\n /** @hidden */\n constructor(\n private _eRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private _calendarService: CalendarService,\n @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats,\n private _dateTimeAdapter: DatetimeAdapter<D>\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._initiated = true;\n this._setupKeyboardService();\n this._constructMonthGrid();\n\n this._dateTimeAdapter.localeChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._constructMonthGrid();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (this._initiated && ('monthSelected' in changes || 'year' in changes || 'id' in changes)) {\n this._constructMonthGrid();\n }\n }\n\n /** Get a number (1-12) representing the current month */\n get currentMonth(): number {\n return this._dateTimeAdapter.getMonth(this._dateTimeAdapter.today());\n }\n\n /** Getter for the private class member _monthOffset */\n get monthOffset(): number {\n return this._monthOffset;\n }\n\n /** View ID */\n get viewId(): string {\n return this.id + '-month-view';\n }\n\n /**\n * @hidden\n * Today cell label ID\n */\n get _todayLabelId(): string {\n return this.viewId + '-today-label';\n }\n\n /**\n * @hidden\n * Selected date label ID\n */\n get _selectedDateLabelId(): string {\n return this.viewId + '-selected-date-label';\n }\n\n /** Method for handling the mouse click event when a month is selected */\n selectMonth(monthCell: CalendarMonth, event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.monthSelected = monthCell.month;\n this.monthClicked.emit(this.monthSelected);\n }\n\n /**\n * Set focus on month cell.\n * It can be a selected cell, current month cell or first cell in the list\n */\n setFocusOnCell(): void {\n const cellToFocus = new DefaultCalendarActiveCellStrategy().getActiveCell(this._getMonthList());\n if (!cellToFocus?.id) {\n return;\n }\n this._focusElementBySelector(`#${cellToFocus.id}`);\n }\n\n /**\n * @hidden\n * Method for handling the keyboard events (a11y)\n */\n _onKeydownMonthHandler(event: KeyboardEvent, index: number): void {\n this._calendarService.onKeydownHandler(event, index);\n }\n\n /**\n * @hidden\n * Method that allows to focus elements inside this component\n */\n _focusElementBySelector(elementSelector: string): void {\n const elementToFocus: HTMLElement = this._eRef.nativeElement.querySelector(elementSelector);\n if (elementToFocus?.focus) {\n elementToFocus.focus();\n }\n }\n\n /**\n * @hidden\n * Method returning id of month cell\n */\n _getIndex(rowIndex: number, colIndex: number): number {\n return this._calendarService.getId(rowIndex, colIndex);\n }\n\n /**\n * @hidden\n * @param index month grid cell index\n */\n _getId(index: number): string {\n return this.viewId + '-month-' + index;\n }\n\n /**\n * @hidden\n * Method that checks if this is current month\n */\n _isCurrent(id: number): boolean {\n return id + this._monthOffset === this.currentMonth;\n }\n\n /**\n * @hidden\n * Method that check if this is selected month\n */\n _isSelected(id: number): boolean {\n return id + this._monthOffset === this.monthSelected;\n }\n\n /**\n * @hidden\n * Method that create month grid with required meta data\n */\n private _constructMonthGrid(): void {\n const monthNames: string[] = this._dateTimeAdapter.getMonthNames('short');\n\n const monthList: CalendarMonth[] = monthNames.map((monthName, index): CalendarMonth => {\n const month = index + this.monthOffset;\n return {\n month,\n label: monthName,\n ariaLabel: this._dateTimeAdapter.format(\n this._dateTimeAdapter.createDate(this.year, month, 1),\n this._dateTimeFormats.display.monthA11yLabel\n ),\n index,\n selected: month === this.monthSelected,\n current: month === this.currentMonth,\n tabIndex: month === this.monthSelected ? 0 : -1\n };\n });\n\n this._calendarMonthListGrid = [];\n /** Creating 2d grid */\n while (monthList.length) {\n this._calendarMonthListGrid.push(monthList.splice(0, this._amountOfColPerRow));\n }\n\n this._calendarMonthListGrid.forEach((row, rowIndex) => {\n row.forEach((monthCell, colIndex) => {\n monthCell.id = this._getId(this._getIndex(rowIndex, colIndex));\n });\n });\n\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * @hidden\n * Method to put configuration and listeners on calendar keyboard service\n */\n private _setupKeyboardService(): void {\n this._calendarService.rowAmount = this._amountOfRows;\n this._calendarService.colAmount = this._amountOfColPerRow;\n this._calendarService.focusEscapeFunction = this.focusEscapeFunction;\n\n this._calendarService.onFocusIdChange\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((index) => this._focusOnCellByIndex(index));\n\n this._calendarService.onKeySelect\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((index) => this.selectMonth(this._getMonthList()[index]));\n }\n\n /**\n * @hidden\n * Returns transformed 1d array from 2d month grid.\n */\n private _getMonthList(): CalendarMonth[] {\n return (<CalendarMonth[]>[]).concat(...this._calendarMonthListGrid);\n }\n\n /** @hidden */\n private _focusOnCellByIndex(index: number): void {\n this._focusElementBySelector(`#${this._getId(index)}`);\n }\n}\n","<table\n class=\"fd-calendar__content fd-calendar__content--months\"\n role=\"grid\"\n [attr.aria-roledescription]=\"'coreCalendar.calendarMonthViewDescription' | fdTranslate\"\n>\n <tbody class=\"fd-calendar__group\" role=\"rowgroup\">\n @for (colMonths of _calendarMonthListGrid; track colMonths; let rowIndex = $index) {\n <tr class=\"fd-calendar__row\" role=\"row\">\n @for (monthCell of colMonths; track monthCell; let colIndex = $index) {\n <td\n class=\"fd-calendar__my-item\"\n role=\"gridcell\"\n [class.fd-calendar__my-item--current]=\"monthCell.current\"\n [class.is-active]=\"monthCell.selected\"\n [attr.tabIndex]=\"monthCell.tabIndex\"\n [attr.id]=\"monthCell.id\"\n [attr.aria-selected]=\"monthCell.selected\"\n [attr.aria-disabled]=\"monthCell.disabled\"\n [attr.data-fd-calendar-month]=\"monthCell.month\"\n (keydown)=\"_onKeydownMonthHandler($event, monthCell.index)\"\n (click)=\"selectMonth(monthCell, $event)\"\n >\n <button\n fd-button\n fdType=\"transparent\"\n class=\"fd-calendar__my-item-button\"\n [class.is-active]=\"monthCell.current\"\n tabindex=\"-1\"\n >\n <span\n class=\"fd-calendar__text\"\n [attr.aria-labelledby]=\"\n monthCell.id +\n '-aria-label ' +\n (monthCell.current ? _todayLabelId + ' ' : '') +\n (monthCell.selected ? _selectedDateLabelId : '')\n \"\n >\n {{ monthCell.label }}\n </span>\n </button>\n <span hidden aria-hidden=\"true\" [attr.id]=\"monthCell.id + '-aria-label'\">\n {{ monthCell.ariaLabel }}\n </span>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_todayLabelId\">{{ 'coreCalendar.todayLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_selectedDateLabelId\">{{ 'coreCalendar.dateSelectedLabel' | fdTranslate }}</div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n inject\n} from '@angular/core';\n\nimport { DATE_TIME_FORMATS, DateTimeFormats, DatetimeAdapter } from '@fundamental-ngx/core/datetime';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { CalendarService } from '../../calendar.service';\nimport { CalendarYear, CalendarYearGrid } from '../../models/calendar-year-grid';\nimport { DefaultCalendarActiveCellStrategy, EscapeFocusFunction, FocusableCalendarView } from '../../models/common';\n\n/** Component representing the YearView of the Calendar Component. */\n@Component({\n selector: 'fd-calendar-year-view',\n templateUrl: './calendar-year-view.component.html',\n styleUrl: './calendar-year-view.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'viewId'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ButtonComponent, FdTranslatePipe]\n})\nexport class CalendarYearViewComponent<D> implements OnInit, OnChanges, FocusableCalendarView {\n /** The id of the calendar passed from the parent component */\n @Input()\n id: string;\n\n /** Function that is called when the focus would escape the element. */\n @Input()\n focusEscapeFunction: EscapeFocusFunction;\n\n /** Parameter holding the year that is currently selected. */\n @Input()\n yearSelected: number;\n\n /**\n * Object to customize year grid\n */\n @Input()\n yearViewGrid: CalendarYearGrid;\n\n /** Event fired when a year is selected. */\n @Output()\n readonly yearClicked: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * @hidden\n * This variable is used to define which year from calendarYearList should be focusable by tab key\n */\n _activeYear: number;\n\n /**\n * @hidden\n * Parameter that stores the dozen of years that are currently being displayed.\n */\n _calendarYearListGrid: CalendarYear[][];\n\n /**\n * @hidden\n * Parameter storing the year of the present day.\n */\n _currentYear: number;\n\n /**\n * @hidden\n * Parameter storing first shown year on list\n */\n _firstYearInList: number;\n\n /** View ID */\n get viewId(): string {\n return this.id + '-year-view';\n }\n\n /**\n * @hidden\n * Today cell label ID\n */\n get _todayLabelId(): string {\n return this.viewId + '-today-label';\n }\n\n /**\n * @hidden\n * Selected date label ID\n */\n get _selectedDateLabelId(): string {\n return this.viewId + '-selected-date-label';\n }\n\n /**\n * @hidden\n */\n private readonly _destroyRef = inject(DestroyRef);\n /** @hidden */\n private _initiated = false;\n\n /** @hidden */\n constructor(\n private _eRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private _calendarService: CalendarService,\n private _dateTimeAdapter: DatetimeAdapter<D>,\n @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {\n // default values\n this._currentYear = _dateTimeAdapter.getYear(_dateTimeAdapter.today());\n this._firstYearInList = this._currentYear;\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._initiated = true;\n\n this._setupKeyboardService();\n this._firstYearInList = this.yearSelected;\n this._constructYearGrid();\n\n this._dateTimeAdapter.localeChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._constructYearGrid();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (this._initiated && ('yearViewGrid' in changes || 'yearSelected' in changes || 'id' in changes)) {\n this._constructYearGrid();\n }\n }\n\n /** Method used to load the previous {{col * row}} years to be displayed. */\n loadNextYearList(): void {\n this._firstYearInList += this._getAmountOfYearsShownAtOnce();\n this._constructYearGrid();\n }\n\n /** Method used to load the next {{col * row}} years to be displayed. */\n loadPreviousYearList(): void {\n this._firstYearInList -= this._getAmountOfYearsShownAtOnce();\n this._constructYearGrid();\n }\n\n /** Method that sends the year to the parent component when it is clicked. */\n selectYear(selectedYear: CalendarYear, event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.yearSelected = selectedYear.year;\n this.yearClicked.emit(this.yearSelected);\n }\n\n /**\n * Set focus on month cell.\n * It can be a selected cell, current month cell or first cell in the list\n */\n setFocusOnCell(): void {\n const cellToFocus = new DefaultCalendarActiveCellStrategy().getActiveCell(this._getYearList());\n if (!cellToFocus?.id) {\n return;\n }\n this._focusElementBySelector(`#${cellToFocus.id}`);\n }\n\n /**\n * @hidden\n * Method for handling the keyboard navigation.\n */\n _onKeydownYearHandler(event: KeyboardEvent, index: number): void {\n this._calendarService.onKeydownHandler(event, index);\n }\n\n /**\n * @hidden\n * Method that allows to focus elements inside this component\n */\n _focusElementBySelector(elementSelector: string): void {\n const elementToFocus: HTMLElement = this._eRef.nativeElement.querySelector(elementSelector);\n if (elementToFocus?.focus) {\n elementToFocus.focus();\n }\n }\n\n /**\n * @hidden\n * Standardized method to calculate grid [x][y] to index number of flatten list\n */\n _getIndex(rowIndex: number, colIndex: number): number {\n return this._calendarService.getId(rowIndex, colIndex);\n }\n\n /**\n * @hidden\n * Get grid cell id be index\n * @param index\n */\n _getId(index: number): string {\n return this.viewId + '-year-' + index;\n }\n\n /**\n * @hidden\n * Method that returns active cell, which means:\n * if there is any selected year, return selected year\n * if there is no selected year, but there is current year, return current year\n * if there is no current year, or selected, return first one\n */\n private _getActiveYear(): number {\n const selectedYearCell = this._getYearList().find(({ year }) => year === this.yearSelected);\n if (selectedYearCell) {\n return selectedYearCell.year;\n }\n\n const currentYearCell = this._getYearList().find(({ year }) => year === this._currentYear);\n if (currentYearCell) {\n return currentYearCell.year;\n }\n\n return this._calendarYearListGrid[0][0].year;\n }\n\n /** @hidden */\n private _constructYearGrid(): void {\n const displayedYearsAmount: number = this.yearViewGrid.cols * this.yearViewGrid.rows;\n const calendarYearList: CalendarYear[] = [];\n this._calendarYearListGrid = [];\n\n for (let x = 0; x < displayedYearsAmount; ++x) {\n const year = this._firstYearInList + x;\n calendarYearList.push({\n year,\n label: this._getYearName(year),\n ariaLabel: this._getAriaYearName(year),\n selected: year === this.yearSelected,\n current: year === this._currentYear,\n index: x\n });\n }\n /** Creating 2d grid */\n while (calendarYearList.length) {\n this._calendarYearListGrid.push(calendarYearList.splice(0, this.yearViewGrid.cols));\n }\n\n this._activeYear = this._getActiveYear();\n\n this._calendarYearListGrid.forEach((row, rowIndex) => {\n row.forEach((cell, colIndex) => {\n cell.id = this._getId(this._getIndex(rowIndex, colIndex));\n cell.tabIndex = cell.year === this._activeYear ? 0 : -1;\n });\n });\n\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * @hidden\n * Returns year name as a string.\n */\n private _getYearName(year: number): string {\n const formatted = this._dateTimeAdapter.getYearName(this._dateTimeAdapter.createDate(year, 1, 1));\n return this._getYearString(year, formatted);\n }\n\n /**\n * @hidden\n * Returns aria year name as a string.\n */\n private _getAriaYearName(year: number): string {\n const formatted = this._dateTimeAdapter.format(\n this._dateTimeAdapter.createDate(year, 1, 1),\n this._dateTimeFormats.display.yearA11yLabel\n );\n return this._getYearString(year, formatted);\n }\n\n /**\n * @hidden\n * Returns year name taking into account yearMapping.\n */\n private _getYearString(year: number, defaultStr: string): string {\n if (typeof this.yearViewGrid.yearMapping === 'function') {\n return this.yearViewGrid.yearMapping(year);\n }\n return defaultStr;\n }\n\n /**\n * @hidden\n * Returns transformed 1d array from 2d year grid.\n */\n private _getYearList(): CalendarYear[] {\n return (<CalendarYear[]>[]).concat(...this._calendarYearListGrid);\n }\n\n /**\n * @hidden\n * Amount of years displayed in year view\n */\n private _getAmountOfYearsShownAtOnce(): number {\n return this.yearViewGrid.rows * this.yearViewGrid.cols;\n }\n\n /**\n * @hidden\n * Method to put configuration and listeners on calendar keyboard service\n */\n private _setupKeyboardService(): void {\n this._calendarService.colAmount = this.yearViewGrid.cols;\n this._calendarService.rowAmount = this.yearViewGrid.rows;\n this._calendarService.focusEscapeFunction = this.focusEscapeFunction;\n\n this._calendarService.onFocusIdChange\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((index) => this._focusOnCellByIndex(index));\n\n this._calendarService.onKeySelect\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((index) => this.selectYear(this._getYearList()[index]));\n\n this._calendarService.onListStartApproach.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((index) => {\n this.loadPreviousYearList();\n this._changeDetectorRef.detectChanges();\n this._focusOnCellByIndex(index);\n });\n\n this._calendarService.onListEndApproach.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((index) => {\n this.loadNextYearList();\n this._changeDetectorRef.detectChanges();\n this._focusOnCellByIndex(index);\n });\n }\n\n /** @hidden */\n private _focusOnCellByIndex(index: number): void {\n this._focusElementBySelector(`#${this._getId(index)}`);\n }\n}\n","<table\n class=\"fd-calendar__content fd-calendar__content--years\"\n role=\"grid\"\n [attr.aria-roledescription]=\"'coreCalendar.calendarYearsViewDescription' | fdTranslate\"\n>\n <tbody class=\"fd-calendar__group\" role=\"rowgroup\">\n @for (colYears of _calendarYearListGrid; track colYears; let rowIndex = $index) {\n <tr class=\"fd-calendar__row\" role=\"row\">\n @for (yearCell of colYears; track yearCell; let colIndex = $index) {\n <td\n class=\"fd-calendar__my-item\"\n role=\"gridcell\"\n [class.fd-calendar__my-item--current]=\"yearCell.current\"\n [class.is-active]=\"yearCell.selected\"\n [attr.id]=\"yearCell.id\"\n [attr.tabindex]=\"yearCell.tabIndex\"\n [attr.aria-selected]=\"yearCell.selected\"\n [attr.aria-disabled]=\"yearCell.disabled\"\n [attr.data-fd-calendar-year]=\"yearCell.year\"\n (keydown)=\"_onKeydownYearHandler($event, yearCell.index)\"\n (click)=\"selectYear(yearCell, $event)\"\n >\n <button\n fd-button\n fdType=\"transparent\"\n class=\"fd-calendar__item-button\"\n [class.is-active]=\"yearCell.current\"\n tabindex=\"-1\"\n >\n <span\n class=\"fd-calendar__text\"\n [attr.aria-labelledby]=\"\n yearCell.id +\n '-aria-label ' +\n (yearCell.current ? _todayLabelId + ' ' : '') +\n (yearCell.selected ? _selectedDateLabelId : '')\n \"\n >\n {{ yearCell.label }}\n </span>\n </button>\n <span hidden aria-hidden=\"true\" [attr.id]=\"yearCell.id + '-aria-label'\">\n {{ yearCell.ariaLabel }}\n </span>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_todayLabelId\">{{ 'coreCalendar.todayLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_selectedDateLabelId\">{{ 'coreCalendar.dateSelectedLabel' | fdTranslate }}</div>\n</div>\n","/** Create an Error to be thrown when attempting to use an invalid date implementation. */\nexport function createMissingDateImplementationError(provider: string): Error {\n return Error(\n `Calendar: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: FdDatetimeModule, or provide a ` +\n `custom implementation.`\n );\n}\n","import { FD_LANGUAGE_ENGLISH } from '@fundamental-ngx/i18n';\nimport { Subject } from 'rxjs';\n\n/**\n * Provides i18n support for labels inside the calendar component.\n * @deprecated use i18n `coreCalendar` key instead\n */\nexport class CalendarI18nLabels {\n /** This is event that should be called, when labels are changed, to let component detect an changes. */\n readonly labelsChange: Subject<void> = new Subject();\n\n /** Year selection aria label. Used on the button to navigate to the years view. */\n yearSelectionLabel = FD_LANGUAGE_ENGLISH.coreCalendar.yearSelectionLabel;\n\n /** Years range selection aria label. Used on the button to navigate to the years range view. */\n yearsRangeSelectionLabel = FD_LANGUAGE_ENGLISH.coreCalendar.yearsRangeSelectionLabel;\n\n /** Month selection aria label. Used on the button to navigate to the months view. */\n monthSelectionLabel = FD_LANGUAGE_ENGLISH.coreCalendar.monthSelectionLabel;\n\n /** Day selection aria label. Used on the button to navigate to the day view. */\n dateSelectionLabel = FD_LANGUAGE_ENGLISH.coreCalendar.dateSelectionLabel;\n\n /** Previous year aria label. Used on the button to switch to a previous year in the years view. */\n previousYearLabel = FD_LANGUAGE_ENGLISH.coreCalendar.previousYearLabel;\n\n /** Next year aria label. Used on the button to switch to a next year in the years view. */\n nextYearLabel = FD_LANGUAGE_ENGLISH.coreCalendar.nextYearLabel;\n\n /** Previous month aria label. Used on the button to switch to a previous month in the months view. */\n previousMonthLabel = FD_LANGUAGE_ENGLISH.coreCalendar.previousMonthLabel;\n\n /** Next month aria label. Used on the button to switch to a next month in the months view. */\n nextMonthLabel = FD_LANGUAGE_ENGLISH.coreCalendar.nextMonthLabel;\n\n /** Week number column label */\n weekColumnLabel = FD_LANGUAGE_ENGLISH.coreCalendar.weekColumnLabel;\n\n /** Selected date label. Used on the selected day/month/year cell. */\n dateSelectedLabel = FD_LANGUAGE_ENGLISH.coreCalendar.dateSelectedLabel;\n\n /** Is used to describe present date */\n todayLabel = FD_LANGUAGE_ENGLISH.coreCalendar.todayLabel;\n\n /** Range start label. Used for date range selection */\n rangeStartLabel = FD_LANGUAGE_ENGLISH.coreCalendar.rangeStartLabel;\n\n /** Range end label. Used for date range selection */\n rangeEndLabel = FD_LANGUAGE_ENGLISH.coreCalendar.rangeEndLabel;\n\n /** Past days aria label. Used when days in the past are accessed */\n dayInPastLabel = FD_LANGUAGE_ENGLISH.coreCalendar.dayInPastLabel;\n\n /** Past days aria label. Used when days in the past are accessed */\n closeCalendarLabel = FD_LANGUAGE_ENGLISH.coreCalendar.closeCalendarLabel;\n\n /** Calendar day view aria role description. */\n calendarDayViewDescription = FD_LANGUAGE_ENGLISH.coreCalendar.calendarDayViewDescription;\n\n /** Calendar month view aria role description. */\n calendarMonthViewDescription = FD_LANGUAGE_ENGLISH.coreCalendar.calendarMonthViewDescription;\n\n /** Calendar years view aria role description. */\n calendarYearsViewDescription = FD_LANGUAGE_ENGLISH.coreCalendar.calendarYearsViewDescription;\n\n /** Calendar years range view aria role description. */\n calendarYearsRangeViewDescription = FD_LANGUAGE_ENGLISH.coreCalendar.calendarYearsRangeViewDescription;\n}\n","import { inject } from '@angular/core';\nimport { FD_LANGUAGE, FdLanguage } from '@fundamental-ngx/i18n';\nimport { Observable, map, startWith, switchMap } from 'rxjs';\nimport { CalendarI18nLabels } from './i18n/calendar-i18n-labels';\n\n/**\n * Use deprecated `CalendarI18nLabels` to patch `FD_LANGUAGE` observable\n */\nexport function patchDeprecatedI18nLabels(): Observable<FdLanguage> {\n const deprecatedSymbol = inject(CalendarI18nLabels, { optional: true });\n if (deprecatedSymbol) {\n return inject(FD_LANGUAGE, { skipSelf: true }).pipe(\n switchMap((existingLang) =>\n deprecatedSymbol.labelsChange.pipe(\n startWith(null),\n map(() => existingLang)\n )\n ),\n map((existingLang) => ({\n ...existingLang,\n coreCalendar: {\n ...existingLang.coreCalendar,\n ...deprecatedSymbol\n }\n }))\n );\n }\n return inject(FD_LANGUAGE, { skipSelf: true });\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { DATE_TIME_FORMATS, DatetimeAdapter, DateTimeFormats } from '@fundamental-ngx/core/datetime';\nimport { SpecialDayRule } from '@fundamental-ngx/core/shared';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport {\n ContentDensityModule,\n ContentDensityObserver,\n contentDensityObserverProviders\n} from '@fundamental-ngx/core/content-density';\nimport { FD_LANGUAGE } from '@fundamental-ngx/i18n';\nimport { createMissingDateImplementationError } from './calendar-errors';\nimport { CalendarHeaderComponent } from './calendar-header/calendar-header.component';\nimport { CalendarAggregatedYearViewComponent } from './calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component';\nimport { CalendarDayViewComponent } from './calendar-views/calendar-day-view/calendar-day-view.component';\nimport { CalendarMonthViewComponent } from './calendar-views/calendar-month-view/calendar-month-view.component';\nimport { CalendarYearViewComponent } from './calendar-views/calendar-year-view/calendar-year-view.component';\nimport { CalendarService } from './calendar.service';\nimport { AggregatedYear } from './models/aggregated-year';\nimport { CalendarCurrent } from './models/calendar-current';\nimport { CalendarYearGrid } from './models/calendar-year-grid';\nimport { DisableDateFunction, EscapeFocusFunction, FocusableCalendarView } from './models/common';\nimport { DateRange } from './models/date-range';\nimport { patchDeprecatedI18nLabels } from './patch-deprecated-i18n-labels';\nimport { CalendarType, DaysOfWeek, FdCalendarView, NavigationButtonDisableFunction } from './types';\n\nlet calendarUniqueId = 0;\n\n/**\n * Months: 1 = January, 12 = december.\n * Days: 1 = Sunday, 7 = Saturday\n *\n * Calendar component used for selecting dates, typically used by the DatePicker and DateTimePicker components.\n * Supports the Angular forms module, enabling form validity, ngModel, etc.\n * ```html\n * <fd-calendar></fd-calendar>\n * ```\n *\n */\n@Component({\n selector: 'fd-calendar',\n templateUrl: './calendar.component.html',\n styleUrl: './calendar.component.scss',\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CalendarComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CalendarComponent),\n multi: true\n },\n CalendarService,\n contentDensityObserverProviders(),\n {\n provide: FD_LANGUAGE,\n useFactory: patchDeprecatedI18nLabels\n }\n ],\n host: {\n '(focusout)': '_focusOut($event)',\n '[attr.id]': 'id',\n class: 'fd-calendar fd-has-display-block'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n ContentDensityModule,\n CalendarHeaderComponent,\n CalendarDayViewComponent,\n CalendarMonthViewComponent,\n CalendarYearViewComponent,\n CalendarAggregatedYearViewComponent\n ]\n})\nexport class CalendarComponent<D> implements OnInit, OnChanges, ControlValueAccessor, Validator, OnDestroy {\n /** The currently selected date model in single mode. */\n @Input()\n selectedDate: Nullable<D>;\n\n /**\n * Whether user wants to mark sunday/saturday with `fd-calendar__item--weekend` class\n */\n @Input()\n markWeekends = true;\n\n /**\n * Whether user wants to show week numbers next to days\n */\n @Input()\n showWeekNumbers = false;\n\n /** Whether calendar is used inside mobile in landscape mode, it also adds close button on right side */\n @Input()\n @HostBinding('class.fd-calendar--mobile-landscape')\n mobileLandscape = false;\n\n /** Whether calendar is used inside mobile in portrait mode */\n @Input()\n @HostBinding('class.fd-calendar--mobile-portrait')\n mobilePortrait = false;\n\n /** The currently selected FdDates model start and end in range mode. */\n @Input()\n selectedRangeDate: DateRange<D>;\n\n /** Actually shown active view one of 'day' | 'month' | 'year' */\n @Input()\n activeView: FdCalendarView = 'day';\n\n /** The day of the week the calendar should start on. 1 represents Sunday, 2 is Monday, 3 is Tuesday, and so on. */\n @Input()\n startingDayOfWeek: DaysOfWeek;\n\n /** The type of calendar, 'single' for single date selection or 'range' for a range of dates. */\n @Input()\n calType: CalendarType = 'single';\n\n /** Id of the calendar. If none is provided, one will be generated. */\n @Input()\n id = 'fd-calendar-' + calendarUniqueId++;\n\n /**\n * Special days mark, it can be used by passing array of object with\n * Special day number, list 1-20 [class:`fd-calendar__item--legend-{{number}}`] is available there:\n * https://sap.github.io/fundamental-styles/components/calendar.html calendar special days section\n * Rule accepts method with D object as a parameter. ex:\n * `rule: (fdDate: D) => fdDate.getDay() === 1`, which will mark all sundays as special day.\n */\n @Input()\n specialDaysRules: SpecialDayRule<D>[] = [];\n\n /**\n * Object to customize year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n yearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 5\n };\n\n /**\n * Object to customize aggregated year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n aggregatedYearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 3\n };\n\n /**\n * Whether user wants to mark day cells on hover.\n * Works only on range mode, when start date is selected on Day View.\n */\n @Input()\n rangeHoverEffect = false;\n\n /** Event thrown every time active view is changed */\n @Output()\n readonly activeViewChange: EventEmitter<FdCalendarView> = new EventEmitter<FdCalendarView>();\n\n /** Event thrown every time selected date in single mode is changed */\n @Output()\n readonly selectedDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Event thrown every time selected first or last date in range mode is changed */\n @Output()\n readonly selectedRangeDateChange: EventEmitter<DateRange<D>> = new EventEmitter<DateRange<D>>();\n\n /** Event thrown every time when value is overwritten from outside and throw back isValid */\n @Output()\n readonly isValidDateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event thrown every time when calendar should be closed */\n @Output()\n readonly closeCalendar: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event thrown, when close button is clicked */\n @Output()\n readonly closeClicked: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden */\n @ViewChild(CalendarDayViewComponent)\n _dayViewComponent: CalendarDayViewComponent<D>;\n\n /** @hidden */\n @ViewChild(CalendarMonthViewComponent)\n _monthViewComponent: CalendarMonthViewComponent<D>;\n\n /** @hidden */\n @ViewChild(CalendarYearViewComponent)\n _yearViewComponent: CalendarYearViewComponent<D>;\n\n /** @hidden */\n @ViewChild(CalendarAggregatedYearViewComponent)\n _aggregatedYearViewComponent: CalendarAggregatedYearViewComponent<D>;\n\n /** @hidden */\n @ViewChild(CalendarHeaderComponent)\n _calendarHeaderComponent: CalendarHeaderComponent<D>;\n\n /**\n * Function used to disable previous button in the calendar header.\n * @param date selected date\n * @param currentlyDisplayedDate currently displayed date\n * @param activeView current view of calendar\n */\n @Input()\n previousButtonDisableFunction: NavigationButtonDisableFunction<D>;\n\n /**\n * Function used to disable next button in the calendar header.\n * @param date selected date\n * @param currentlyDisplayedDate currently displayed date\n * @param activeView current view of calendar\n */\n @Input()\n nextButtonDisableFunction: NavigationButtonDisableFunction<D>;\n\n /**\n * @hidden\n * Currently displayed days depending on month and year\n */\n _currentlyDisplayed: CalendarCurrent;\n\n /** @hidden */\n previousButtonDisabled: boolean;\n\n /** @hidden */\n nextButtonDisabled: boolean;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _adapterStartingDayOfWeek: DaysOfWeek;\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n _contentDensityObserver: ContentDensityObserver,\n // Use @Optional to avoid angular injection error message and throw our own which is more precise one\n @Optional() private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {\n if (!this._dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n if (!this._dateTimeFormats) {\n throw createMissingDateImplementationError('DATE_TIME_FORMATS');\n }\n _contentDensityObserver.subscribe();\n // set default value\n this._adapterStartingDayOfWeek = (this._dateTimeAdapter.getFirstDayOfWeek() + 1) as DaysOfWeek;\n this.selectedDate = this._dateTimeAdapter.today();\n this._changeDetectorRef.markForCheck();\n this._listenToLocaleChanges();\n }\n\n /** That allows to define function that should happen, when focus should normally escape of component */\n @Input()\n escapeFocusFunction: EscapeFocusFunction = (event?: KeyboardEvent): void => {\n event?.preventDefault();\n this._calendarHeaderComponent?.focus();\n };\n\n /**\n * Function used to disable certain dates in the calendar.\n * @param date date\n */\n @Input()\n disableFunction: DisableDateFunction<D> = () => false;\n\n /**\n * Function used to disable certain dates in the calendar for the range start selection.\n * @param date date\n */\n @Input()\n disableRangeStartFunction: DisableDateFunction<D> = () => false;\n\n /**\n * Function used to disable certain dates in the calendar for the range end selection.\n * @param date date\n */\n @Input()\n disableRangeEndFunction: DisableDateFunction<D> = () => false;\n\n /** @hidden */\n onChange: (_: D | DateRange<D>) => void = () => {};\n\n /** @hidden */\n onTouched: () => void = () => {};\n\n /** @hidden */\n ngOnInit(): void {\n this._prepareDisplayedView();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (\n 'nextButtonDisableFunction' in changes ||\n 'previousButtonDisableFunction' in changes ||\n '_currentlyDisplayed' in changes\n ) {\n this._setNavigationButtonsStates();\n }\n }\n\n /** @hidden */\n getWeekStartDay(): DaysOfWeek {\n return this.startingDayOfWeek === undefined ? this._adapterStartingDayOfWeek : this.startingDayOfWeek;\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /**\n * @hidden\n * Function that provides support for ControlValueAccessor that allows to use [(ngModel)] or forms.\n */\n writeValue(selected: DateRange<D> | D): void {\n let valid = true;\n\n if (this.calType === 'single') {\n selected = <D>selected;\n\n valid = this._dateTimeAdapter.isValid(selected);\n\n this.selectedDate = selected;\n }\n\n if (this.calType === 'range' && selected) {\n selected = <DateRange<D>>selected;\n\n if (!this._dateTimeAdapter.isValid(selected.start) || !this._dateTimeAdapter.isValid(selected.end)) {\n valid = false;\n }\n\n this.selectedRangeDate = {\n start: selected.start,\n end: selected.end\n };\n }\n\n if (valid) {\n this._prepareDisplayedView();\n }\n\n this._changeDetectorRef.detectChanges();\n\n this.isValidDateChange.emit(valid);\n }\n\n /**\n * @hidden\n * Function that implements Validator Interface, adds validation support for forms\n */\n validate(): { [key: string]: any } | null {\n return this.isModelValid()\n ? null\n : {\n dateValidation: {\n valid: false\n }\n };\n }\n\n /** @hidden */\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * Method that handle active view change and throws event.\n *\n * Fired by calendar header component.\n */\n handleActiveViewChange(activeView: FdCalendarView): void {\n if (activeView === this.activeView) {\n return;\n }\n\n this.activeView = activeView;\n\n this.activeViewChange.emit(activeView);\n\n if (activeView === 'month') {\n this.onMonthViewSelected();\n }\n if (activeView === 'year') {\n this.onYearViewSelected();\n }\n if (activeView === 'aggregatedYear') {\n this.onYearsRangeViewSelected();\n }\n\n this._setNavigationButtonsStates();\n }\n\n /**\n * @hidden\n * Method that is triggered by events from day view component, when there is selected single date changed\n */\n selectedDateChanged(date: D): void {\n this.selectedDate = date;\n this._setNavigationButtonsStates();\n this.onChange(date);\n this.selectedDateChange.emit(date);\n this.closeCalendar.emit();\n }\n\n /**\n * @hidden\n * Method that is triggered by events from day view component, when there is selected range date changed\n */\n selectedRangeDateChanged(dates: DateRange<D>): void {\n if (dates) {\n this.selectedRangeDate = { start: dates.start, end: dates.end };\n this.selectedRangeDateChange.emit(this.selectedRangeDate);\n this.onChange(this.selectedRangeDate);\n this.closeCalendar.emit();\n }\n }\n\n /** Function that handles next arrow icon click, depending on current view it changes month, year or list of years */\n handleNextArrowClick(): void {\n switch (this.activeView) {\n case 'day':\n this.displayNextMonth();\n break;\n case 'month':\n this.displayNextYear();\n break;\n case 'year':\n this.displayNextYearList();\n break;\n case 'aggregatedYear':\n this.displayNextYearsList();\n break;\n }\n this._setNavigationButtonsStates();\n }\n\n /** Function that handles previous arrow icon click, depending on current view it changes month, year or list of years */\n handlePreviousArrowClick(): void {\n switch (this.activeView) {\n case 'day':\n this.displayPreviousMonth();\n break;\n case 'month':\n this.displayPreviousYear();\n break;\n case 'year':\n this.displayPreviousYearList();\n break;\n case 'aggregatedYear':\n this.displayPreviousYearsList();\n break;\n }\n this._setNavigationButtonsStates();\n }\n\n /** Function that allows to switch actual view to next month */\n displayNextMonth(): void {\n if (this._currentlyDisplayed.month === 12) {\n this._currentlyDisplayed = { year: this._currentlyDisplayed.year + 1, month: 1 };\n } else {\n this._currentlyDisplayed = {\n year: this._currentlyDisplayed.year,\n month: this._currentlyDisplayed.month + 1\n };\n }\n }\n\n /** Function that allows to switch actual view to previous month */\n displayPreviousMonth(): void {\n if (this._currentlyDisplayed.month <= 1) {\n this._currentlyDisplayed = { year: this._currentlyDisplayed.year - 1, month: 12 };\n } else {\n this._currentlyDisplayed = {\n year: this._currentlyDisplayed.year,\n month: this._currentlyDisplayed.month - 1\n };\n }\n }\n\n /** Function that allows to switch actual view to next year */\n displayNextYear(): void {\n this._currentlyDisplayed = { month: this._currentlyDisplayed.month, year: this._currentlyDisplayed.year + 1 };\n }\n\n /** Function that allows to switch actual view to previous year */\n displayPreviousYear(): void {\n this._currentlyDisplayed = { month: this._currentlyDisplayed.month, year: this._currentlyDisplayed.year - 1 };\n }\n\n /** Function that allows to switch actually displayed list of year to next year list*/\n displayNextYearList(): void {\n this._yearViewComponent.loadNextYearList();\n this._currentlyDisplayed = {\n month: this._currentlyDisplayed.month,\n year: this._yearViewComponent._firstYearInList\n };\n }\n\n /** Function that allows to switch actually displayed list of year to previous year list*/\n displayPreviousYearList(): void {\n this._yearViewComponent.loadPreviousYearList();\n this._currentlyDisplayed = {\n month: this._currentlyDisplayed.month,\n year: this._yearViewComponent._firstYearInList\n };\n }\n\n /** Function that allows to switch actually displayed list of year to next year list*/\n displayNextYearsList(): void {\n this._aggregatedYearViewComponent.loadNextYearsList();\n }\n\n /** Function that allows to switch actually displayed list of year to previous year list*/\n displayPreviousYearsList(): void {\n this._aggregatedYearViewComponent.loadPreviousYearsList();\n }\n\n /**\n * Function that allows to change currently displayed month/year configuration,\n * which are connected to days displayed\n */\n setCurrentlyDisplayed(date: Nullable<D>): void {\n if (this._dateTimeAdapter.isValid(date)) {\n this._currentlyDisplayed = {\n month: this._dateTimeAdapter.getMonth(date!),\n year: this._dateTimeAdapter.getYear(date!)\n };\n }\n }\n\n /**\n * Set initial focus on one of the calendar's element\n */\n initialFocus(): void {\n this._getActiveFocusableView()?.setFocusOnCell();\n }\n\n /**\n * @hidden\n * Function that handles changes from month view child component, changes actual view and changes currently displayed month\n */\n handleMonthViewChange(month: number): void {\n this._currentlyDisplayed = { month, year: this._currentlyDisplayed.year };\n this.activeView = 'day';\n this.onDaysViewSelected();\n this.activeViewChange.emit(this.activeView);\n }\n\n /** Select year */\n selectedYear(yearSelected: number): void {\n this.activeView = 'day';\n this._currentlyDisplayed.year = yearSelected;\n this.onDaysViewSelected();\n }\n\n /** Select year range */\n selectedYears(yearsSelected: AggregatedYear): void {\n this.activeView = 'year';\n this._currentlyDisplayed = {\n ...this._currentlyDisplayed,\n year: yearsSelected.startYear\n };\n this.onYearViewSelected();\n }\n\n /** @hidden */\n onDaysViewSelected(): void {\n this._changeDetectorRef.detectChanges();\n this._dayViewComponent?.setFocusOnCell();\n }\n\n /** @hidden */\n onMonthViewSelected(): void {\n this._changeDetectorRef.detectChanges();\n this._monthViewComponent?.setFocusOnCell();\n }\n\n /** @hidden */\n onYearViewSelected(): void {\n this._changeDetectorRef.detectChanges();\n this._yearViewComponent?.setFocusOnCell();\n }\n\n /** @hidden */\n onYearsRangeViewSelected(): void {\n this._changeDetectorRef.detectChanges();\n this._aggregatedYearViewComponent?.setFocusOnCell();\n }\n\n /** Method that provides information if model selected date/dates have properly types and are valid */\n isModelValid(): boolean {\n if (this.calType === 'single') {\n return this._dateTimeAdapter.isValid(this.selectedDate);\n }\n if (this.calType === 'range') {\n return (\n this.selectedRangeDate &&\n this._dateTimeAdapter.isValid(this.selectedRangeDate.start) &&\n this._dateTimeAdapter.isValid(this.selectedRangeDate.end)\n );\n }\n return false;\n }\n\n /** @hidden */\n private _listenToLocaleChanges(): void {\n this._subscriptions.add(\n this._dateTimeAdapter.localeChanges.subscribe(() => {\n this._adapterStartingDayOfWeek = (this._dateTimeAdapter.getFirstDayOfWeek() + 1) as DaysOfWeek;\n this._changeDetectorRef.markForCheck();\n })\n );\n }\n\n /**\n * @hidden\n * Method that sets up the currently displayed variables, like shown month and year.\n * Day grid is based on currently displayed month and year\n */\n private _prepareDisplayedView(): void {\n if (this.calType === 'single' && this._dateTimeAdapter.isValid(this.selectedDate)) {\n this._currentlyDisplayed = {\n year: this._dateTimeAdapter.getYear(this.selectedDate),\n month: this._dateTimeAdapter.getMonth(this.selectedDate)\n };\n } else if (this.selectedRangeDate && this.selectedRangeDate.start) {\n this._currentlyDisplayed = {\n year: this._dateTimeAdapter.getYear(this.selectedRangeDate.start),\n month: this._dateTimeAdapter.getMonth(this.selectedRangeDate.start)\n };\n } else if (this.selectedRangeDate && this.selectedRangeDate.end) {\n this._currentlyDisplayed = {\n year: this._dateTimeAdapter.getYear(this.selectedRangeDate.end),\n month: this._dateTimeAdapter.getMonth(this.selectedRangeDate.end)\n };\n } else {\n const today = this._dateTimeAdapter.today();\n this._currentlyDisplayed = {\n year: this._dateTimeAdapter.getYear(today),\n month: this._dateTimeAdapter.getMonth(today)\n };\n }\n }\n\n /** @hidden */\n private _getActiveFocusableView(): FocusableCalendarView | null {\n switch (this.activeView) {\n case 'day':\n return this._dayViewComponent;\n case 'month':\n return this._monthViewComponent;\n case 'year':\n return this._yearViewComponent;\n case 'aggregatedYear':\n return this._aggregatedYearViewComponent;\n default:\n return null;\n }\n }\n\n /** @hidden */\n private _setNavigationButtonsStates(): void {\n this.previousButtonDisabled =\n typeof this.previousButtonDisableFunction === 'function' &&\n this.previousButtonDisableFunction(this.selectedDate, this._currentlyDisplayed, this.activeView);\n this.nextButtonDisabled =\n typeof this.nextButtonDisableFunction === 'function' &&\n this.nextButtonDisableFunction(this.selectedDate, this._currentlyDisplayed, this.activeView);\n this._changeDetectorRef.markForCheck();\n }\n\n /** @hidden */\n private _focusOut(event: FocusEvent): void {\n if (!this._elementRef.nativeElement.contains(event.relatedTarget)) {\n this.onTouched();\n }\n }\n}\n","<fd-calendar-header\n [currentlyDisplayed]=\"_currentlyDisplayed\"\n [activeView]=\"activeView\"\n [id]=\"id\"\n [calendarYearGrid]=\"yearGrid\"\n (closeClicked)=\"closeClicked.emit()\"\n (nextClicked)=\"handleNextArrowClick()\"\n (previousClicked)=\"handlePreviousArrowClick()\"\n [previousButtonDisabled]=\"previousButtonDisabled\"\n [nextButtonDisabled]=\"nextButtonDisabled\"\n (activeViewChange)=\"handleActiveViewChange($event)\"\n></fd-calendar-header>\n@if (_currentlyDisplayed) {\n @if (activeView === 'day') {\n <fd-calendar-day-view\n [selectedDate]=\"selectedDate\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [markWeekends]=\"markWeekends\"\n (selectedDateChange)=\"selectedDateChanged($event)\"\n [selectedRangeDate]=\"selectedRangeDate\"\n (selectedRangeDateChange)=\"selectedRangeDateChanged($event)\"\n [currentlyDisplayed]=\"_currentlyDisplayed\"\n [startingDayOfWeek]=\"getWeekStartDay()\"\n [disableFunction]=\"disableFunction\"\n [disableRangeEndFunction]=\"disableRangeEndFunction\"\n [disableRangeStartFunction]=\"disableRangeStartFunction\"\n [calType]=\"calType\"\n [id]=\"id\"\n [rangeHoverEffect]=\"rangeHoverEffect\"\n [specialDaysRules]=\"specialDaysRules\"\n [focusEscapeFunction]=\"escapeFocusFunction\"\n (nextMonthSelect)=\"displayNextMonth()\"\n (previousMonthSelect)=\"displayPreviousMonth()\"\n ></fd-calendar-day-view>\n } @else if (activeView === 'month') {\n <fd-calendar-month-view\n [monthSelected]=\"_currentlyDisplayed.month\"\n [year]=\"_currentlyDisplayed.year\"\n [id]=\"id\"\n [focusEscapeFunction]=\"escapeFocusFunction\"\n (monthClicked)=\"handleMonthViewChange($event)\"\n ></fd-calendar-month-view>\n } @else if (activeView === 'year') {\n <fd-calendar-year-view\n [yearSelected]=\"_currentlyDisplayed.year\"\n [yearViewGrid]=\"yearGrid\"\n [id]=\"id\"\n [focusEscapeFunction]=\"escapeFocusFunction\"\n (yearClicked)=\"selectedYear($event)\"\n >\n </fd-calendar-year-view>\n } @else if (activeView === 'aggregatedYear') {\n <fd-calendar-aggregated-year-view\n (yearsClicked)=\"selectedYears($event)\"\n [yearSelected]=\"_currentlyDisplayed.year\"\n [yearViewGrid]=\"yearGrid\"\n [aggregatedYearsViewGrid]=\"aggregatedYearGrid\"\n [id]=\"id\"\n [focusEscapeFunction]=\"escapeFocusFunction\"\n >\n </fd-calendar-aggregated-year-view>\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { CalendarCloseButtonDirective } from './calendar-directives';\nimport { CalendarHeaderComponent } from './calendar-header/calendar-header.component';\nimport { CalendarAggregatedYearViewComponent } from './calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component';\nimport { CalendarDayViewComponent } from './calendar-views/calendar-day-view/calendar-day-view.component';\nimport { CalendarMonthViewComponent } from './calendar-views/calendar-month-view/calendar-month-view.component';\nimport { CalendarYearViewComponent } from './calendar-views/calendar-year-view/calendar-year-view.component';\nimport { CalendarComponent } from './calendar.component';\n\n@NgModule({\n imports: [\n CalendarComponent,\n CalendarHeaderComponent,\n CalendarDayViewComponent,\n CalendarMonthViewComponent,\n CalendarYearViewComponent,\n CalendarAggregatedYearViewComponent,\n CalendarCloseButtonDirective\n ],\n exports: [\n CalendarComponent,\n CalendarDayViewComponent,\n CalendarHeaderComponent,\n CalendarYearViewComponent,\n CalendarMonthViewComponent,\n CalendarAggregatedYearViewComponent,\n CalendarCloseButtonDirective,\n ContentDensityModule\n ]\n})\nexport class CalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.CalendarService","CalendarActiveDayCellStrategy"],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-calendar.mjs","sources":["../../../../libs/core/calendar/calendar-directives.ts","../../../../libs/core/calendar/calendar.service.ts","../../../../libs/core/calendar/calendar-header/calendar-header.component.ts","../../../../libs/core/calendar/calendar-header/calendar-header.component.html","../../../../libs/core/calendar/models/common.ts","../../../../libs/core/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.ts","../../../../libs/core/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.html","../../../../libs/core/calendar/models/calendar-day.ts","../../../../libs/core/calendar/models/date-range.ts","../../../../libs/core/calendar/calendar-views/calendar-day-view/calendar-day-view.component.ts","../../../../libs/core/calendar/calendar-views/calendar-day-view/calendar-day-view.component.html","../../../../libs/core/calendar/calendar-views/calendar-month-view/calendar-month-view.component.ts","../../../../libs/core/calendar/calendar-views/calendar-month-view/calendar-month-view.component.html","../../../../libs/core/calendar/calendar-views/calendar-year-view/calendar-year-view.component.ts","../../../../libs/core/calendar/calendar-views/calendar-year-view/calendar-year-view.component.html","../../../../libs/core/calendar/calendar-errors.ts","../../../../libs/core/calendar/i18n/calendar-i18n-labels.ts","../../../../libs/core/calendar/patch-deprecated-i18n-labels.ts","../../../../libs/core/calendar/calendar.component.ts","../../../../libs/core/calendar/calendar.component.html","../../../../libs/core/calendar/calendar.module.ts","../../../../libs/core/calendar/fundamental-ngx-core-calendar.ts"],"sourcesContent":["import { Attribute, Directive } from '@angular/core';\nimport { resolveTranslationSignal } from '@fundamental-ngx/i18n';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-calendar-close-button]',\n host: {\n class: 'fd-calendar__close-button',\n '[attr.aria-label]': '_originalAriaLabel || _closeCalendarLabel()',\n '[attr.title]': '_originalTitle || _closeCalendarLabel()'\n },\n standalone: true\n})\nexport class CalendarCloseButtonDirective {\n /** @hidden */\n protected _closeCalendarLabel = resolveTranslationSignal('coreCalendar.closeCalendarLabel');\n\n /** @hidden */\n constructor(\n @Attribute('aria-label') protected _originalAriaLabel: string,\n @Attribute('title') protected _originalTitle: string\n ) {}\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport { EscapeFocusFunction } from './models/common';\n\n@Injectable()\nexport class CalendarService {\n /** Row amount */\n rowAmount = 3;\n\n /** Column amount */\n colAmount = 4;\n\n /** Event thrown, when the element is selected by space or enter keys */\n onKeySelect: Subject<number> = new Subject<number>();\n\n /** Event thrown, when the focus goes after list of elements */\n onListEndApproach: Subject<number> = new Subject<number>();\n\n /** Event thrown, when the focus goes before list of elements */\n onListStartApproach: Subject<number> = new Subject<number>();\n\n /** Event thrown, when the focus is changed. */\n onFocusIdChange: Subject<number> = new Subject<number>();\n\n /** Left Arrow Id, which will be focused by default on focus escape */\n leftArrowId: string;\n\n /** Function that is called when the focus would escape the element. */\n focusEscapeFunction: EscapeFocusFunction;\n\n /** @hidden */\n constructor(@Optional() private _rtlService: RtlService) {}\n\n /**\n * Standardized method to calculate grid [x][y] to index number\n */\n getId(row: number, col: number): number {\n return row * this.colAmount + col;\n }\n\n /**\n * Method that handles keydown events, dedicated for All Calendar views, which have a list with row x col elements.\n * Triggers the events, when the focus approaches start and end of list. Or when there is basic change of focus.\n * Triggers also event, when the element is selected by enter key, or space bar.\n * @param event KeyboardEvent\n * @param index which is number (0 - (rowAmount * colAmount))\n */\n onKeydownHandler(event: KeyboardEvent, index: number): void {\n const rtl = !!this._rtlService?.rtlSignal();\n\n switch (event.key) {\n case 'Spacebar':\n case 'Enter':\n case ' ': {\n event.preventDefault();\n this.onKeySelect.next(index);\n break;\n }\n case 'Left':\n case 'ArrowLeft': {\n event.preventDefault();\n if (!rtl) {\n this.focusLeftElement(index);\n } else {\n this.focusRightElement(index);\n }\n break;\n }\n case 'Right':\n case 'ArrowRight': {\n event.preventDefault();\n if (!rtl) {\n this.focusRightElement(index);\n } else {\n this.focusLeftElement(index);\n }\n break;\n }\n case 'Up':\n case 'ArrowUp': {\n event.preventDefault();\n if (index <= this.colAmount - 1) {\n this.onListStartApproach.next(this.getId(this.rowAmount - 1, 0) + index);\n } else {\n this.onFocusIdChange.next(index - this.colAmount);\n }\n break;\n }\n case 'Down':\n case 'ArrowDown': {\n event.preventDefault();\n if (index >= this.getId(this.rowAmount - 1, 0)) {\n this.onListEndApproach.next(index - this.getId(this.rowAmount - 1, 0));\n } else {\n this.onFocusIdChange.next(index + this.colAmount);\n }\n break;\n }\n case 'Tab': {\n if (!event.shiftKey) {\n if (typeof this.focusEscapeFunction === 'function') {\n this.focusEscapeFunction(event);\n } else {\n const element = document.getElementById(this.leftArrowId);\n if (element) {\n element.focus();\n }\n }\n event.preventDefault();\n break;\n }\n }\n }\n }\n\n /**\n * @hidden\n * Right Element focus trigger\n */\n focusRightElement(index: number): void {\n if (index === this.getId(this.rowAmount, 0) - 1) {\n this.onListEndApproach.next(0);\n } else {\n this.onFocusIdChange.next(index + 1);\n }\n }\n\n /**\n * @hidden\n * Left Element focus trigger\n */\n focusLeftElement(index: number): void {\n if (index === 0) {\n this.onListStartApproach.next(this.getId(this.rowAmount, 0) - 1);\n } else {\n this.onFocusIdChange.next(index - 1);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\n\nimport { DatetimeAdapter } from '@fundamental-ngx/core/datetime';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { CalendarService } from '../calendar.service';\nimport { CalendarCurrent } from '../models/calendar-current';\nimport { CalendarYearGrid } from '../models/calendar-year-grid';\nimport { FdCalendarView } from '../types';\n\n/**\n * Internal use only.\n * Header of the calendar component.\n */\n@Component({\n selector: 'fd-calendar-header',\n templateUrl: './calendar-header.component.html',\n styleUrl: './calendar-header.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'viewId'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ButtonComponent, FdTranslatePipe]\n})\nexport class CalendarHeaderComponent<D> implements OnInit, OnChanges {\n /** Currently active view. Needed for a11y labels. */\n @Input()\n activeView: FdCalendarView;\n\n /** Currently displayed date on the calendar. */\n @Input()\n currentlyDisplayed: CalendarCurrent;\n\n /** whether previous navigation button should be disabled in the header. */\n @Input()\n previousButtonDisabled: boolean;\n\n /** whether next navigation button should be disabled in the header. */\n @Input()\n nextButtonDisabled: boolean;\n\n /**\n * Object to customize year grid\n */\n @Input()\n set calendarYearGrid(yearGrid: CalendarYearGrid) {\n this._amountOfYearsPerPeriod = yearGrid.cols * yearGrid.rows - 1;\n this._calculateSelectAggregatedYearLabel();\n }\n\n /** Calendar ID */\n @Input()\n id: string;\n\n /** Whether calendar should be rendered in mobile landscape mode. */\n @Input()\n mobileLandscape = false;\n\n /** Event emitted when the active view should change. */\n @Output()\n readonly activeViewChange: EventEmitter<FdCalendarView> = new EventEmitter<FdCalendarView>();\n\n /** Event emitted when the previous button is clicked. */\n @Output()\n readonly previousClicked: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted when the next button is clicked. */\n @Output()\n readonly nextClicked: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden */\n @ViewChild('prevButton', { read: ElementRef })\n _prevButtonComponent: ElementRef;\n\n /** Aria label for the previous button. Depends on the active view. */\n get previousAriaLabel(): 'coreCalendar.previousMonthLabel' | 'coreCalendar.previousYearLabel' {\n return this.isOnDayView ? 'coreCalendar.previousMonthLabel' : 'coreCalendar.previousYearLabel';\n }\n\n /** Aria label for the next button. Depends on the active view. */\n get nextAriaLabel(): 'coreCalendar.nextMonthLabel' | 'coreCalendar.nextYearLabel' {\n return this.isOnDayView ? 'coreCalendar.nextMonthLabel' : 'coreCalendar.nextYearLabel';\n }\n\n /** Button aria label to open month selection view. */\n get selectMonthAriaLabel(): 'coreCalendar.monthSelectionLabel' | 'coreCalendar.dateSelectionLabel' {\n return this.isOnMonthView ? 'coreCalendar.dateSelectionLabel' : 'coreCalendar.monthSelectionLabel';\n }\n\n /** Button aria label to open aggregated years selection view. */\n get selectAggregatedYearAriaLabel(): 'coreCalendar.yearsRangeSelectionLabel' | 'coreCalendar.dateSelectionLabel' {\n return this.isOnAggregatedYearsView\n ? 'coreCalendar.dateSelectionLabel'\n : 'coreCalendar.yearsRangeSelectionLabel';\n }\n\n /** Button label to open month selection view. */\n selectMonthLabel: string;\n\n /** Button label to open year selection view. */\n selectYearLabel: string;\n\n /** Button label to open aggregated years selection view. */\n selectAggregatedYearLabel: string;\n\n /** Get information is calendar is on aggregated years view */\n get isOnAggregatedYearsView(): boolean {\n return this.activeView === 'aggregatedYear';\n }\n\n /** Get information is calendar is on year view */\n get isOnYearView(): boolean {\n return this.activeView === 'year';\n }\n\n /** Get information is calendar is on month view */\n get isOnMonthView(): boolean {\n return this.activeView === 'month';\n }\n\n /** Get information is calendar is on day view */\n get isOnDayView(): boolean {\n return this.activeView === 'day';\n }\n\n /**\n * Component id\n */\n get viewId(): string {\n return this.id + '-header';\n }\n\n /**\n * @hidden\n * Previous button id\n */\n get _prevButtonId(): string {\n return this.viewId + '-left-arrow';\n }\n\n /**\n * @hidden\n * Next button id\n */\n get _nextButtonId(): string {\n return this.viewId + '-right-arrow';\n }\n\n /**\n * @hidden\n * Month label id\n */\n get _monthButtonLabelId(): string {\n return this.viewId + '-month-label';\n }\n\n /**\n * @hidden\n * Select month aria label id\n */\n get _selectMonthButtonAriaLabelId(): string {\n return this.viewId + '-select-month-aria-label';\n }\n\n /**\n * @hidden\n * Year label id\n */\n get _yearButtonLabelId(): string {\n return this.viewId + '-year-label';\n }\n\n /**\n * @hidden\n * Select year aria label id\n */\n get _selectYearButtonAriaLabelId(): string {\n return this.viewId + '-select-year-aria-label';\n }\n\n /**\n * @hidden\n * Years range label id\n */\n get _yearsRangeButtonLabelId(): string {\n return this.viewId + '-years-range-label';\n }\n\n /**\n * @hidden\n * Select years range aria label id\n */\n get _selectYearsRangeButtonAriaLabelId(): string {\n return this.viewId + '-select-years-range-aria-label';\n }\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** Month names */\n private _monthNames: string[] = [];\n\n /** Get information about amount of years displayed at once on year view */\n private _amountOfYearsPerPeriod = 1;\n\n /** @hidden */\n constructor(\n private _changeDetRef: ChangeDetectorRef,\n private _calendarService: CalendarService,\n private _dateTimeAdapter: DatetimeAdapter<D>\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (\n (changes.currentlyDisplayed && !changes.currentlyDisplayed.firstChange) ||\n (changes.activeView && !changes.activeView.firstChange)\n ) {\n this._calculateLabels();\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._calendarService.leftArrowId = this._prevButtonId;\n\n this._calculateMonthNames();\n\n this._calculateLabels();\n\n this._listenToLocaleChanges();\n }\n\n /**\n * Focus on focusable control within the header\n */\n focus(): void {\n this._prevButtonComponent.nativeElement?.focus();\n }\n\n /** @hidden */\n _processViewChange(type: FdCalendarView, event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n\n this.activeView = type === this.activeView ? 'day' : type;\n\n this.activeViewChange.emit(this.activeView);\n }\n\n /** @hidden */\n private _listenToLocaleChanges(): void {\n this._dateTimeAdapter.localeChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._calculateMonthNames();\n this._calculateLabels();\n this._changeDetRef.markForCheck();\n });\n }\n\n /** @hidden */\n private _calculateLabels(): void {\n this._calculateSelectMonthLabel();\n this._calculateSelectYearLabel();\n this._calculateSelectAggregatedYearLabel();\n }\n\n /** @hidden */\n private _calculateSelectMonthLabel(): void {\n this.selectMonthLabel = this._monthNames[this._getNormalizedDate().month - 1];\n }\n\n /** @hidden */\n private _calculateSelectYearLabel(): void {\n this.selectYearLabel = this._getYearName(this._getNormalizedDate().year);\n }\n\n /** @hidden */\n private _calculateSelectAggregatedYearLabel(): void {\n this.selectAggregatedYearLabel = `${this._getYearName(this._getNormalizedDate().year)}-${this._getYearName(\n this._getNormalizedDate().year + this._amountOfYearsPerPeriod\n )}`;\n }\n\n /** @hidden */\n private _calculateMonthNames(): void {\n this._monthNames = this._dateTimeAdapter.getMonthNames('long');\n }\n\n /** @hidden */\n private _getYearName(year: number): string {\n return this._dateTimeAdapter.getYearName(this._dateTimeAdapter.createDate(year));\n }\n\n /** @hidden */\n private _getNormalizedDate(): CalendarCurrent {\n return {\n year: isNaN(this.currentlyDisplayed.year)\n ? this._dateTimeAdapter.getYear(this._dateTimeAdapter.now())\n : this.currentlyDisplayed.year,\n month: isNaN(this.currentlyDisplayed.month)\n ? this._dateTimeAdapter.getMonth(this._dateTimeAdapter.now())\n : this.currentlyDisplayed.month\n };\n }\n}\n","<header class=\"fd-calendar__navigation\" [class.fd-calendar__navigation--main]=\"mobileLandscape\">\n <div class=\"fd-calendar__action fd-calendar__action--arrow-left\">\n <button\n #prevButton\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-left\"\n [attr.id]=\"_prevButtonId\"\n [disabled]=\"previousButtonDisabled\"\n [attr.title]=\"previousAriaLabel | fdTranslate\"\n [ariaLabel]=\"previousAriaLabel | fdTranslate\"\n type=\"button\"\n (click)=\"previousClicked.emit()\"\n ></button>\n </div>\n @if (isOnDayView || isOnMonthView) {\n <div class=\"fd-calendar__action\">\n <!-- Select month button -->\n <button\n fd-button\n type=\"button\"\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_monthButtonLabelId + ' ' + _selectMonthButtonAriaLabelId\"\n [attr.data-fd-calendar-month]=\"currentlyDisplayed.month\"\n (click)=\"_processViewChange('month', $event)\"\n >\n <span [attr.id]=\"_monthButtonLabelId\">{{ selectMonthLabel }}</span>\n </button>\n </div>\n <div class=\"fd-calendar__action\">\n <!-- Select year button -->\n <button\n fd-button\n type=\"button\"\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_yearButtonLabelId + ' ' + _selectYearButtonAriaLabelId\"\n [attr.data-fd-calendar-year]=\"currentlyDisplayed.year\"\n (click)=\"_processViewChange('year', $event)\"\n >\n <span [attr.id]=\"_yearButtonLabelId\">{{ selectYearLabel }}</span>\n </button>\n </div>\n }\n @if (isOnAggregatedYearsView || isOnYearView) {\n <div class=\"fd-calendar__action\" aria-live=\"polite\">\n <button\n fd-button\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_yearsRangeButtonLabelId + ' ' + _selectYearsRangeButtonAriaLabelId\"\n (click)=\"_processViewChange('aggregatedYear', $event)\"\n type=\"button\"\n >\n <span [attr.id]=\"_yearsRangeButtonLabelId\">{{ selectAggregatedYearLabel }}</span>\n </button>\n </div>\n }\n <div class=\"fd-calendar__action fd-calendar__action--arrow-right\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-right\"\n [attr.id]=\"_nextButtonId\"\n [disabled]=\"nextButtonDisabled\"\n [attr.title]=\"nextAriaLabel | fdTranslate\"\n [ariaLabel]=\"nextAriaLabel | fdTranslate\"\n (click)=\"nextClicked.emit()\"\n type=\"button\"\n ></button>\n </div>\n</header>\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_selectMonthButtonAriaLabelId\">{{ selectMonthAriaLabel | fdTranslate }}</div>\n <div [attr.id]=\"_selectYearButtonAriaLabelId\">{{ 'coreCalendar.yearSelectionLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_selectYearsRangeButtonAriaLabelId\">{{ selectAggregatedYearAriaLabel | fdTranslate }}</div>\n</div>\n","import { Nullable } from '@fundamental-ngx/cdk/utils';\n\n/**\n * Base Calendar Cell\n */\nexport interface BaseCalendarCell {\n /** Representation in string */\n label: string;\n /** cell unique id */\n id?: string;\n /** currently active (today) */\n current?: boolean;\n /** selected cell */\n selected?: boolean;\n /** disabled cell */\n disabled?: boolean;\n /** cell tabindex */\n tabIndex?: number;\n /** aria-label */\n ariaLabel?: string;\n /** aria-labelledby */\n ariaLabelledBy?: string;\n /** list index */\n index?: number;\n}\n\nexport interface FocusableCalendarView {\n setFocusOnCell(): void;\n}\n\n/**\n * Calendar active cell strategy\n */\nexport abstract class AbstractCalendarActiveCellStrategy<T extends BaseCalendarCell = BaseCalendarCell> {\n /**\n * Calculate which table cell should be active\n */\n abstract getActiveCell(cells: T[]): T | null;\n}\n\nexport class DefaultCalendarActiveCellStrategy<\n T extends BaseCalendarCell = BaseCalendarCell\n> extends AbstractCalendarActiveCellStrategy<T> {\n /**\n * Calculate which table cell should be active\n */\n getActiveCell(cells: T[]): T | null {\n const selected = cells.find((cell) => cell.selected);\n if (selected) {\n return selected;\n }\n const current = cells.find((cell) => cell.current);\n if (current) {\n return current;\n }\n return cells[0] || null;\n }\n}\n\nexport type EscapeFocusFunction = Nullable<(event?: KeyboardEvent) => void>;\n\nexport type DisableDateFunction<D> = Nullable<(date: D) => boolean>;\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n inject\n} from '@angular/core';\n\nimport { DATE_TIME_FORMATS, DateTimeFormats, DatetimeAdapter } from '@fundamental-ngx/core/datetime';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { CalendarService } from '../../calendar.service';\nimport { AggregatedYear, CalendarAggregatedYear } from '../../models/aggregated-year';\nimport { CalendarYearGrid } from '../../models/calendar-year-grid';\nimport { DefaultCalendarActiveCellStrategy, EscapeFocusFunction, FocusableCalendarView } from '../../models/common';\n\n@Component({\n selector: 'fd-calendar-aggregated-year-view',\n templateUrl: './calendar-aggregated-year-view.component.html',\n styleUrl: './calendar-aggregated-year-view.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'viewId'\n },\n standalone: true,\n imports: [ButtonComponent, FdTranslatePipe]\n})\nexport class CalendarAggregatedYearViewComponent<D> implements OnInit, OnChanges, FocusableCalendarView {\n /** Parameter used in id of years used for help with focusing on the correct element during keyboard navigation. */\n @Input()\n id: string;\n\n /** Function that is called when the focus would escape the element. */\n @Input()\n focusEscapeFunction: EscapeFocusFunction;\n\n /** Parameter holding the year that is currently selected. */\n @Input()\n yearSelected: number;\n\n /**\n * Object to customize aggregated year grid\n */\n @Input()\n aggregatedYearsViewGrid: CalendarYearGrid;\n\n /**\n * Object to customize year grid\n */\n @Input()\n yearViewGrid: CalendarYearGrid;\n\n /** Event fired when a year is selected. */\n @Output()\n readonly yearsClicked: EventEmitter<AggregatedYear> = new EventEmitter<AggregatedYear>();\n\n /**\n * View ID\n */\n get viewId(): string {\n return this.id + '-years-range-view';\n }\n\n /**\n * @hidden\n * Today cell label ID\n */\n get _todayLabelId(): string {\n return this.viewId + '-today-label';\n }\n\n /**\n * @hidden\n * Selected date label ID\n */\n get _selectedDateLabelId(): string {\n return this.viewId + '-selected-date-label';\n }\n\n /**\n * @hidden\n * This variable is used to define which year from calendarYearList should be focusable by tab key\n */\n _activeYear: AggregatedYear;\n\n /**\n * @hidden\n * Parameter that stores the dozen of years that are currently being displayed.\n */\n _calendarYearListGrid: CalendarAggregatedYear[][];\n\n /**\n * @hidden\n * Current period of years selected\n */\n _yearsSelected: AggregatedYear | null;\n\n /**\n * @hidden\n * Parameter storing the year of the present day.\n */\n _currentYear: number;\n\n /**\n * @hidden\n * Parameter storing first shown year on list\n */\n private _firstYearInList: number;\n\n /**\n * @hidden\n */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _initiated = false;\n\n /** @hidden */\n constructor(\n private _eRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private _calendarService: CalendarService,\n private _dateTimeAdapter: DatetimeAdapter<D>,\n @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {\n // default values\n this._currentYear = _dateTimeAdapter.getYear(_dateTimeAdapter.today());\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._initiated = true;\n\n this._setupKeyboardService();\n\n this._firstYearInList = this.yearSelected - this._yearsInOnePeriod();\n\n this._constructYearsGrid();\n\n this._dateTimeAdapter.localeChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._constructYearsGrid();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (\n this._initiated &&\n ('yearSelected' in changes ||\n 'aggregatedYearsViewGrid' in changes ||\n 'yearViewGrid' in changes ||\n 'id' in changes)\n ) {\n this._constructYearsGrid();\n }\n }\n\n /** Method that sends the year to the parent component when it is clicked. */\n selectYear(selectedYear: CalendarAggregatedYear, event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this._yearsSelected = selectedYear.years;\n this.yearsClicked.emit(this._yearsSelected);\n }\n\n /** Method used to load the previous 12 years to be displayed. */\n loadNextYearsList(): void {\n this._firstYearInList += this._periodsAmount() * this._yearsInOnePeriod();\n this._constructYearsGrid();\n }\n\n /** Method used to load the next 12 years to be displayed. */\n loadPreviousYearsList(): void {\n this._firstYearInList -= this._periodsAmount() * this._yearsInOnePeriod();\n this._constructYearsGrid();\n }\n\n /**\n * Set focus on month cell.\n * It can be a selected cell, current month cell or first cell in the list\n */\n setFocusOnCell(): void {\n const cellToFocus = new DefaultCalendarActiveCellStrategy().getActiveCell(this._getYearsList());\n if (!cellToFocus?.id) {\n return;\n }\n this._focusElementBySelector(`#${cellToFocus.id}`);\n }\n\n /** Method for handling the keyboard navigation. */\n _onKeydownYearHandler(event: KeyboardEvent, index: number): void {\n this._calendarService.onKeydownHandler(event, index);\n }\n\n /**\n * @hidden\n * Method that allows to focus elements inside this component\n */\n _focusElementBySelector(elementSelector: string): void {\n const elementToFocus: HTMLElement = this._eRef.nativeElement.querySelector(elementSelector);\n if (elementToFocus?.focus) {\n elementToFocus.focus();\n }\n }\n\n /**\n * @hidden\n * Method returning index of aggregated year index cell\n */\n _getIndex(rowIndex: number, colIndex: number): number {\n return this._calendarService.getId(rowIndex, colIndex);\n }\n\n /**\n * @hidden\n * Get id of calendar's aggregated year item\n */\n _getId(index: number): string {\n return this.viewId + '-aggregated-years-' + index;\n }\n\n /**\n * @hidden\n * Check if specified year is between start year and end year)\n */\n _isBetween(aggregatedYear: AggregatedYear, yearToCheck: number): boolean {\n return aggregatedYear.endYear >= yearToCheck && aggregatedYear.startYear <= yearToCheck;\n }\n\n /** @hidden */\n private _constructYearsGrid(): void {\n const displayedYearsAmount: number = this.aggregatedYearsViewGrid.cols * this.aggregatedYearsViewGrid.rows;\n const calendarYearList: CalendarAggregatedYear[] = [];\n this._calendarYearListGrid = [];\n\n for (let index = 0; index < displayedYearsAmount; ++index) {\n /**\n * Generates object with certain period of years,\n * which depends on amount of years displayed in year view\n */\n\n const years: AggregatedYear = {\n startYear: this._firstYearInList + this._yearsInOnePeriod() * index,\n endYear: this._firstYearInList + this._yearsInOnePeriod() * (index + 1) - 1\n };\n\n calendarYearList.push({\n years,\n label: this._getYearsName(years),\n ariaLabel: this._getAriaYearsName(years),\n selected: this._isBetween(years, this.yearSelected),\n current: this._isBetween(years, this._currentYear),\n index\n });\n }\n\n /** Creating 2d grid */\n while (calendarYearList.length) {\n this._calendarYearListGrid.push(calendarYearList.splice(0, this.aggregatedYearsViewGrid.cols));\n }\n\n const yearsCellSelected = calendarYearList.find((cell) => this._isBetween(cell.years, this.yearSelected));\n this._yearsSelected = yearsCellSelected ? yearsCellSelected.years : null;\n this._activeYear = this._getActiveYear();\n\n this._calendarYearListGrid.forEach((row, rowIndex) => {\n row.forEach((cell, colIndex) => {\n cell.id = this._getId(this._getIndex(rowIndex, colIndex));\n cell.tabIndex = cell.years === this._activeYear ? 0 : -1;\n });\n });\n\n this._changeDetectorRef.detectChanges();\n }\n\n /**\n * @hidden\n * Returns year name as a string.\n */\n private _getYearsName(years: AggregatedYear): string {\n const startYearFormatted = this._dateTimeAdapter.getYearName(\n this._dateTimeAdapter.createDate(years.startYear, 1, 1)\n );\n const endYearFormatted = this._dateTimeAdapter.getYearName(\n this._dateTimeAdapter.createDate(years.endYear, 1, 1)\n );\n return `${this._getYearString(years.startYear, startYearFormatted)} - ${this._getYearString(\n years.endYear,\n endYearFormatted\n )}`;\n }\n\n /**\n * @hidden\n * Returns aria year name as a string.\n */\n private _getAriaYearsName(years: AggregatedYear): string {\n const startYearFormatted = this._dateTimeAdapter.format(\n this._dateTimeAdapter.createDate(years.startYear, 1, 1),\n this._dateTimeFormats.display.yearA11yLabel\n );\n const endYearFormatted = this._dateTimeAdapter.format(\n this._dateTimeAdapter.createDate(years.endYear, 1, 1),\n this._dateTimeFormats.display.yearA11yLabel\n );\n return `${this._getYearString(years.startYear, startYearFormatted)} - ${this._getYearString(\n years.endYear,\n endYearFormatted\n )}`;\n }\n\n /**\n * @hidden\n * Returns year name taking into account yearMapping.\n */\n private _getYearString(year: number, defaultStr: string): string {\n if (typeof this.aggregatedYearsViewGrid.yearMapping === 'function') {\n return this.aggregatedYearsViewGrid.yearMapping(year);\n }\n return defaultStr;\n }\n\n /**\n * @hidden\n * Amount of years displayed in year view\n */\n private _yearsInOnePeriod(): number {\n if (this.yearViewGrid) {\n return this.yearViewGrid.cols * this.yearViewGrid.rows;\n } else {\n return 12;\n }\n }\n\n /**\n * @hidden\n * Amount of years displayed in aggregated year view\n */\n private _periodsAmount(): number {\n return this.aggregatedYearsViewGrid.cols * this.aggregatedYearsViewGrid.rows;\n }\n\n /**\n * @hidden\n * Method that returns active cell, which means:\n * if there is any selected year, return selected year\n * if there is no selected year, but there is current year, return current year\n * if there is no current year, or selected, return first one\n */\n private _getActiveYear(): AggregatedYear {\n const selectedYearCell = this._getYearsList().find(({ years }) => this._isBetween(years, this.yearSelected));\n if (selectedYearCell) {\n return selectedYearCell.years;\n }\n\n const currentYearCell = this._getYearsList().find(({ years }) => this._isBetween(years, this._currentYear));\n if (currentYearCell) {\n return currentYearCell.years;\n }\n\n return this._calendarYearListGrid[0][0].years;\n }\n\n /**\n * @hidden\n * Returns transformed 1d array from 2d year grid.\n */\n private _getYearsList(): CalendarAggregatedYear[] {\n return (<CalendarAggregatedYear[]>[]).concat(...this._calendarYearListGrid);\n }\n\n /**\n * @hidden\n * Method to put configuration and listeners on calendar keyboard service\n */\n private _setupKeyboardService(): void {\n this._calendarService.rowAmount = this.aggregatedYearsViewGrid.rows;\n this._calendarService.colAmount = this.aggregatedYearsViewGrid.cols;\n\n this._calendarService.focusEscapeFunction = this.focusEscapeFunction;\n\n this._calendarService.onFocusIdChange.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((index) => {\n this._focusOnCellByIndex(index);\n });\n\n this._calendarService.onKeySelect\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((index) => this.selectYear(this._getYearsList()[index]));\n\n this._calendarService.onListStartApproach.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((index) => {\n this.loadPreviousYearsList();\n this._changeDetectorRef.detectChanges();\n this._focusOnCellByIndex(index);\n });\n\n this._calendarService.onListEndApproach.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((index) => {\n this.loadNextYearsList();\n this._changeDetectorRef.detectChanges();\n this._focusOnCellByIndex(index);\n });\n }\n\n /** @hidden */\n private _focusOnCellByIndex(index: number): void {\n this._focusElementBySelector(`#${this._getId(index)}`);\n }\n}\n","<table\n class=\"fd-calendar__content fd-calendar__content--years\"\n role=\"grid\"\n [attr.aria-roledescription]=\"'coreCalendar.calendarYearsRangeViewDescription' | fdTranslate\"\n>\n <tbody class=\"fd-calendar__group\" role=\"rowgroup\">\n @for (colYears of _calendarYearListGrid; track colYears; let rowIndex = $index) {\n <tr class=\"fd-calendar__row\">\n @for (cell of colYears; track cell; let colIndex = $index) {\n <td\n class=\"fd-calendar__my-item\"\n role=\"gridcell\"\n [class.fd-calendar__my-item--current]=\"cell.current\"\n [class.is-active]=\"cell.selected\"\n [attr.id]=\"cell.id\"\n [attr.tabindex]=\"cell.tabIndex\"\n [attr.data-fd-calendar-years]=\"cell.years.startYear + '-' + cell.years.endYear\"\n (keydown)=\"_onKeydownYearHandler($event, cell.index)\"\n (click)=\"selectYear(cell, $event)\"\n >\n <button\n fd-button\n fdType=\"transparent\"\n class=\"fd-calendar__my-item-button\"\n [class.is-active]=\"cell.current\"\n tabindex=\"-1\"\n >\n <span\n class=\"fd-calendar__text\"\n [attr.aria-labelledby]=\"\n cell.id +\n '-aria-label ' +\n (cell.current ? _todayLabelId + ' ' : '') +\n (cell.selected ? _selectedDateLabelId : '')\n \"\n >\n {{ cell.label }}\n </span>\n </button>\n <span hidden aria-hidden=\"true\" [attr.id]=\"cell.id + '-aria-label'\">\n {{ cell.ariaLabel }}\n </span>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_todayLabelId\">{{ 'coreCalendar.todayLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_selectedDateLabelId\">{{ 'coreCalendar.dateSelectedLabel' | fdTranslate }}</div>\n</div>\n","import { AbstractCalendarActiveCellStrategy, BaseCalendarCell } from './common';\nexport interface CalendarDay<D> extends BaseCalendarCell {\n date: D; // date representation\n weekDay: number; // weeks number in the year\n weekend: boolean; // to highlight Saturday and Sunday\n monthStatus?: 'previous' | 'current' | 'next'; // to mark days from sibling months\n specialNumber?: number; // special day marker flag\n blocked?: boolean; // blocked date\n past?: boolean; // date in past\n selectedFirst?: boolean; // to highlight the first selected date in the range\n selectedLast?: boolean; // to highlight the last selected date in the range\n selectedRange?: boolean; // to highlight dates in the range between selectedFirst and selectedLast\n hoverRange?: boolean; // \"true\" for days included in date range selection before the the selection is confirmed\n isTabIndexed?: boolean; // if \"true\" sets day cell tabindex to \"0\"\n}\n\n/**\n * Active Calendar Day cell strategy\n */\nexport class ActiveCalendarDayCellStrategy<D = unknown> extends AbstractCalendarActiveCellStrategy<CalendarDay<D>> {\n /**\n * Calculate which table cell should be active\n */\n getActiveCell(cells: CalendarDay<D>[]): CalendarDay<D> | null {\n const selected = cells.find((cell) => cell.selected);\n if (selected) {\n return selected;\n }\n const current = cells.find((cell) => cell.current);\n if (current) {\n return current;\n }\n const fistDayInMonth = cells.find((cell) => cell.monthStatus === 'current');\n if (fistDayInMonth) {\n return fistDayInMonth;\n }\n return cells[0] || null;\n }\n}\n","/** A class representing a range of dates. */\nexport class DateRange<D> {\n /**\n * Date range.\n * @param start\n * @param end\n */\n constructor(\n /** The start date of the range. */\n readonly start: D | null,\n /** The end date of the range. */\n readonly end: D | null\n ) {}\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n inject\n} from '@angular/core';\n\nimport { DATE_TIME_FORMATS, DateTimeFormats, DatetimeAdapter } from '@fundamental-ngx/core/datetime';\nimport { SpecialDayRule } from '@fundamental-ngx/core/shared';\nimport equal from 'fast-deep-equal';\n\nimport { CalendarCurrent } from '../../models/calendar-current';\nimport { ActiveCalendarDayCellStrategy as CalendarActiveDayCellStrategy, CalendarDay } from '../../models/calendar-day';\nimport { DateRange } from '../../models/date-range';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { CalendarService } from '../../calendar.service';\nimport { DisableDateFunction, EscapeFocusFunction, FocusableCalendarView } from '../../models/common';\nimport { CalendarType, DaysOfWeek } from '../../types';\n\n/** Component representing the day view of the calendar. */\n@Component({\n selector: 'fd-calendar-day-view',\n templateUrl: './calendar-day-view.component.html',\n styleUrl: './calendar-day-view.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'viewId',\n class: 'fd-calendar__dates'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [FdTranslatePipe]\n})\nexport class CalendarDayViewComponent<D> implements OnInit, OnChanges, FocusableCalendarView {\n /**\n * Function used to disable certain dates in the calendar.\n * @param date date type\n */\n @Input()\n disableFunction: DisableDateFunction<D>;\n\n /**\n * Function used to disable certain dates in the calendar for the range start selection.\n * @param date date representation\n */\n @Input()\n disableRangeStartFunction: DisableDateFunction<D>;\n\n /**\n * Function used to disable certain dates in the calendar for the range end selection.\n * @param date date representation\n */\n @Input()\n disableRangeEndFunction: DisableDateFunction<D>;\n\n /** Currently displayed month and year for days */\n @Input()\n set currentlyDisplayed(currentlyDisplayed: CalendarCurrent) {\n if (!equal(currentlyDisplayed, this._currentlyDisplayed)) {\n this._currentlyDisplayed = currentlyDisplayed;\n this._buildDayViewGrid();\n }\n }\n\n get currentlyDisplayed(): CalendarCurrent {\n return this._currentlyDisplayed;\n }\n\n /** The currently selected date model in single mode. */\n @Input()\n set selectedDate(date: Nullable<D>) {\n this._selectedDate = date;\n if (this._dayViewGrid) {\n const dayFromDate = this._calendarDayList.find((day) => this._dateTimeAdapter.datesEqual(day.date, date));\n this._changeSelectedSingleDay(dayFromDate, this._calendarDayList);\n }\n }\n\n get selectedDate(): Nullable<D> {\n return this._selectedDate;\n }\n\n /** The currently selected FdDates model start and end in range mode. */\n @Input()\n set selectedRangeDate(dateRange: DateRange<D>) {\n if (\n dateRange &&\n this.selectedRangeDate &&\n this._dateTimeAdapter.datesEqual(dateRange.start, this.selectedRangeDate.start) &&\n this._dateTimeAdapter.datesEqual(dateRange.end, this.selectedRangeDate.end)\n ) {\n return;\n }\n this._selectedRangeDate = dateRange;\n if (this._dayViewGrid) {\n this._changeSelectedRangeDays(dateRange, this._calendarDayList);\n }\n }\n\n get selectedRangeDate(): DateRange<D> {\n return this._selectedRangeDate;\n }\n\n /** The day of the week the calendar should start on. 1 represents Sunday, 2 is Monday, 3 is Tuesday, and so on. */\n @Input()\n startingDayOfWeek: DaysOfWeek;\n\n /** The type of calendar, 'single' for single date selection or 'range' for a range of dates. */\n @Input()\n calType: CalendarType = 'single';\n\n /** Id of the calendar. If none is provided, one will be generated. */\n @Input()\n id: string;\n\n /**\n * Whether user wants to mark day cells on hover.\n * Works only on range mode, when start date is selected.\n */\n @Input()\n rangeHoverEffect = false;\n\n /**\n * Whether user wants to mark sunday/saturday with `fd-calendar__item--weekend` class\n */\n @Input()\n markWeekends = false;\n\n /**\n * Whether user wants to show week numbers next to days\n */\n @Input()\n showWeekNumbers = true;\n\n /** Function that allows to specify which function would be called, when focus wants to escape */\n @Input()\n focusEscapeFunction: EscapeFocusFunction;\n\n /**\n * Special days mark, it can be used by passing array of object with\n * Special day number, list 1-20 [class:`fd-calendar__item--legend-{{number}}`] is available there:\n * https://sap.github.io/fundamental-styles/components/calendar.html calendar special days section\n * Rule accepts method with date object as a parameter. ex:\n * `rule: (date: D) => this.dateAdapter.getDay(date) === 1`, which will mark all sundays as special day.\n */\n @Input()\n specialDaysRules: SpecialDayRule<D>[] = [];\n\n /** Event emitted always, when model is changed in range mode */\n @Output()\n readonly selectedRangeDateChange: EventEmitter<DateRange<D>> = new EventEmitter<DateRange<D>>();\n\n /** Event emitted always, when next month is selected, by focus */\n @Output()\n readonly nextMonthSelect: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted always, when previous month is selected, by focus */\n @Output()\n readonly previousMonthSelect: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted always, when model is changed in single mode */\n @Output()\n readonly selectedDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * @hidden\n * Actual day grid with previous/current/next month days\n */\n _dayViewGrid: CalendarDay<D>[][];\n\n /**\n * @hidden\n * Array of week numbers displayed for current month/year\n */\n _weeks: string[];\n\n /** @hidden */\n private _selectedRangeDate: DateRange<D>;\n\n /** @hidden */\n private _selectedDate: Nullable<D>;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /**\n * @hidden\n * Days per week\n */\n private readonly _amountOfCols = 7;\n /** @hidden */\n private _isOnRangePick = false;\n /** @hidden */\n private _isInitiated = false;\n\n /** @hidden */\n private _currentlyDisplayed: CalendarCurrent;\n\n /**\n * @hidden\n * Variable that contains short weekday names.\n */\n private _shortWeekDays: string[];\n\n /**\n * @hidden\n * Variable that contains short weekday names.\n */\n private _longWeekDays: string[];\n\n /** @hidden */\n constructor(\n private eRef: ElementRef,\n private changeDetRef: ChangeDetectorRef,\n private calendarService: CalendarService,\n @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats,\n public _dateTimeAdapter: DatetimeAdapter<D>\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._isInitiated = true;\n\n this._setupKeyboardService();\n\n this._refreshShortWeekDays();\n\n this._buildDayViewGrid();\n\n this._dateTimeAdapter.localeChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._refreshShortWeekDays();\n this._buildDayViewGrid();\n this.changeDetRef.markForCheck();\n });\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n /** Changes of those properties are done inside its setters */\n if (!changes['selectedDate'] && !changes['selectedRangeDate'] && !changes['currentlyDisplayed']) {\n this._buildDayViewGrid();\n }\n if (changes['startingDayOfWeek']) {\n this._refreshShortWeekDays();\n }\n }\n /**\n * Function for selecting a date on the calendar. Typically called when a date is clicked, but can also be called programmatically.\n * @param day CalendarDay object to be selected.\n * @param event\n */\n selectDate(day: CalendarDay<D>, event?: MouseEvent): void {\n if (event) {\n /**\n * There are some problems with popup integration. After clicking inside day component, the popover closes.\n */\n event.stopPropagation();\n event.preventDefault();\n }\n\n if (!day.disabled && !day.blocked) {\n if (this.calType === 'single') {\n /** Remove selections from other day and put selection to chosen day */\n this._calendarDayList.forEach((_day) => (_day.selected = false));\n day.selected = true;\n this._selectedDate = day.date;\n this.selectedDateChange.emit(day.date);\n } else {\n if (this._selectCounter === 0 || this._selectCounter === 2) {\n this._selectedRangeDate = { start: day.date, end: null };\n this.selectedRangeDateChange.emit(this.selectedRangeDate);\n } else if (this._selectCounter === 1) {\n // Check if date picked is higher than already chosen, otherwise just reverse them\n if (this._dateTimeAdapter.compareDate(this.selectedRangeDate.start!, day.date) < 0) {\n this._selectedRangeDate = {\n start: this.selectedRangeDate.start,\n end: day.date\n };\n } else {\n this._selectedRangeDate = {\n start: day.date,\n end: this.selectedRangeDate.start\n };\n }\n this.selectedRangeDateChange.emit(this.selectedRangeDate);\n }\n this._changeSelectedRangeDays(this._selectedRangeDate, this._calendarDayList);\n }\n }\n\n if (this.calType === 'range' && this.rangeHoverEffect && this._selectCounter === 1 && event) {\n this._isOnRangePick = !this._isOnRangePick;\n } else {\n this._isOnRangePick = false;\n }\n\n this.changeDetRef.markForCheck();\n }\n\n /**\n * Set focus on default focusable cell\n */\n setFocusOnCell(): void {\n const cellToFocus = new CalendarActiveDayCellStrategy().getActiveCell(this._calendarDayList);\n if (!cellToFocus?.index && cellToFocus?.index !== 0) {\n return;\n }\n this.focusOnCellByIndex(cellToFocus.index);\n }\n\n /** @hidden */\n _refreshHoverRange(day: CalendarDay<D>): void {\n const start = this.selectedRangeDate?.start;\n if (this._isOnRangePick && start) {\n if (this._dateTimeAdapter.compareDate(day.date, start) < 0) {\n this._calendarDayList.forEach((_day) => {\n _day.hoverRange =\n this._dateTimeAdapter.compareDate(_day.date, day.date) > 0 &&\n this._dateTimeAdapter.compareDate(_day.date, start) < 0;\n });\n } else {\n this._calendarDayList.forEach((_day) => {\n _day.hoverRange =\n this._dateTimeAdapter.compareDate(_day.date, day.date) < 0 &&\n this._dateTimeAdapter.compareDate(_day.date, start) > 0;\n });\n }\n }\n }\n\n /**\n * @hidden\n * Amount of selected days\n * 0, when there is no day selected, or start date is invalid,\n * 1, when there is only valid start date, or end date is same as start date,\n * 2, when both dates are valid\n */\n get _selectCounter(): number {\n if (!this.selectedRangeDate || !this._dateTimeAdapter.isValid(this.selectedRangeDate.start)) {\n return 0;\n }\n if (\n this.selectedRangeDate.start &&\n (!this._dateTimeAdapter.isValid(this.selectedRangeDate.end) ||\n this._dateTimeAdapter.datesEqual(this.selectedRangeDate.start, this.selectedRangeDate.end))\n ) {\n return 1;\n }\n if (\n this._dateTimeAdapter.isValid(this.selectedRangeDate.start) &&\n this._dateTimeAdapter.isValid(this.selectedRangeDate.end)\n ) {\n return 2;\n }\n return 0;\n }\n\n /**\n * @hidden\n * Method that returns short weekday name.\n * Can be changed by user by providing other class which implements DatetimeAdapter\n */\n get shortWeekDays(): string[] {\n return this._shortWeekDays;\n }\n\n /**\n * @hidden\n * Method that returns weekday name.\n * Can be changed by user by providing other class which implements DatetimeAdapter\n */\n get longWeekDays(): string[] {\n return this._longWeekDays;\n }\n\n /**\n * @hidden\n * Function that gives array of all displayed CalendarDays\n */\n get _calendarDayList(): CalendarDay<D>[] {\n return this._dayViewGrid.reduce((totalCalendarRows: CalendarDay<D>[], calendarRow: CalendarDay<D>[]) => {\n if (!calendarRow) {\n calendarRow = [];\n }\n return totalCalendarRows.concat(calendarRow);\n }, []);\n }\n\n /**\n * View ID\n */\n get viewId(): string {\n return this.id + '-day-view';\n }\n\n /**\n * @hidden\n * Week column header ID\n */\n get _weekNumbersColumnHeaderId(): string {\n return this.viewId + '-week-column-header';\n }\n\n /**\n * @hidden\n * Today cell label ID\n */\n get _todayLabelId(): string {\n return this.viewId + '-today-label';\n }\n\n /**\n * @hidden\n * Selected date label ID\n */\n get _selectedDateLabelId(): string {\n return this.viewId + '-selected-date-label';\n }\n\n /**\n * @hidden\n * Date range start date label ID\n */\n get _dateRangeStartLabelId(): string {\n return this.viewId + '-range-start-date-label';\n }\n\n /**\n * @hidden\n * Date range end date label ID\n */\n get _dateRangeEndLabelId(): string {\n return this.viewId + '-range-end-date-label';\n }\n\n /**\n * @hidden\n * Date in past label ID\n */\n get _dateInPastLabelId(): string {\n return this.viewId + '-day-in-past-label';\n }\n\n /**\n * @hidden\n * Method that handles day cells keydown events,\n * @param event KeyboardEvent\n * @param cell CalendarDay\n * @param index with specified column and row as a x and y\n */\n _onKeydownDayHandler(event: KeyboardEvent, cell: CalendarDay<D>, index: number): void {\n if (event.key === 'Tab' && !event.shiftKey) {\n if (this.focusEscapeFunction) {\n this.focusEscapeFunction(event);\n }\n } else {\n this.calendarService.onKeydownHandler(event, index);\n }\n }\n\n /**\n * @hidden\n * Method that allow to focus elements inside this component\n */\n _focusElementBySelector(elementSelector: string): void {\n const elementToFocus: HTMLElement = this.eRef.nativeElement.querySelector(elementSelector);\n if (elementToFocus?.focus) {\n elementToFocus.focus();\n }\n }\n\n /**\n * @hidden\n * Standardized method to calculate grid [x][y] to index number of flatten list\n */\n _getIndex(rowIndex: number, colIndex: number): number {\n return this.calendarService.getId(rowIndex, colIndex);\n }\n\n /**\n * @hidden\n * Method that selects previous month\n * Triggered only when the month is changed during changing focus\n * Also triggers event to parent calendar component and rebuilds day view grid\n */\n private _selectPreviousMonth(): void {\n this._currentlyDisplayed = this._getPreviousMonth();\n this._buildDayViewGrid();\n this.previousMonthSelect.emit();\n }\n\n /**\n * @hidden\n * Method that selects next month\n * Triggered only when the month is changed during changing focus\n * Also triggers event to parent calendar component and rebuilds day view grid\n */\n private _selectNextMonth(): void {\n this._currentlyDisplayed = this._getNextMonth();\n this._buildDayViewGrid();\n this.nextMonthSelect.emit();\n }\n\n /**\n * @hidden\n * Method that creates array of CalendarDay models which will be shown on day grid,\n * depending on current month and year.\n */\n private _populateCalendar(): CalendarDay<D>[] {\n let calendar: CalendarDay<D>[] = [];\n\n calendar = this._getPreviousMonthDays(calendar);\n calendar = calendar.concat(this._getCurrentMonthDays());\n calendar = this._getNextMonthDays(calendar);\n\n calendar.forEach((call, index: number) => {\n call.id = this._getCellIdByIndex(index);\n call.index = index;\n });\n\n if (this.calType === 'single' && this._selectedDate) {\n const _day = calendar.find((day) => this._dateTimeAdapter.datesEqual(day.date, this._selectedDate));\n this._changeSelectedSingleDay(_day, calendar);\n }\n\n if (this.calType === 'range' && this._selectedRangeDate) {\n this._changeSelectedRangeDays(this._selectedRangeDate, calendar);\n }\n\n return calendar;\n }\n\n /**\n * @hidden\n * Method that builds 2 dimensions day view grid, also sets up currently displayed month, or year,\n * when there is not any.\n */\n private _buildDayViewGrid(): void {\n if (!this._isInitiated) {\n return;\n }\n\n if (!this.currentlyDisplayed || this._isInvalidDate()) {\n if (this.selectedDate) {\n this._currentlyDisplayed = {\n month: this._dateTimeAdapter.getMonth(this.selectedDate),\n year: this._dateTimeAdapter.getYear(this.selectedDate)\n };\n } else {\n const today = this._dateTimeAdapter.today();\n this._currentlyDisplayed = {\n month: this._dateTimeAdapter.getMonth(today),\n year: this._dateTimeAdapter.getYear(today)\n };\n }\n }\n\n const calendarDays = this._populateCalendar();\n const dayViewGrid: CalendarDay<D>[][] = [];\n\n while (calendarDays.length > 0) {\n dayViewGrid.push(calendarDays.splice(0, this._amountOfCols));\n }\n\n this.calendarService.rowAmount = dayViewGrid.length;\n\n this._dayViewGrid = dayViewGrid;\n this._weeks = this._refreshWeekCount();\n }\n\n /** @hidden */\n private _isInvalidDate(): boolean {\n return isNaN(this.currentlyDisplayed.year) || isNaN(this.currentlyDisplayed.month);\n }\n\n /**\n * @hidden\n * Get id of calendar's day item\n */\n private _getCellIdByIndex(index: number): string {\n return this.viewId + '-day-' + index + '';\n }\n\n /**\n * @hidden\n * Method which provides array of CalendarDay,\n * which contains every single day of currently shown month/year.\n */\n private _getCurrentMonthDays(): CalendarDay<D>[] {\n const month = this.currentlyDisplayed.month;\n const year = this.currentlyDisplayed.year;\n const calendarDays: CalendarDay<D>[] = [];\n const amountOfDaysInCurrentMonth: number = this._dateTimeAdapter.getNumDaysInMonth(\n this._dateTimeAdapter.createDate(year, month, 1)\n );\n const now = this._dateTimeAdapter.now();\n for (let dayNumber = 1; dayNumber <= amountOfDaysInCurrentMonth; dayNumber++) {\n const date: D = this._dateTimeAdapter.createDate(year, month, dayNumber);\n calendarDays.push({\n ...this._getDay(date),\n monthStatus: 'current',\n current: this._dateTimeAdapter.datesEqual(now, date)\n });\n }\n const cell = this._getActiveCell(calendarDays);\n cell && (cell.isTabIndexed = true);\n return calendarDays;\n }\n\n /**\n * @hidden\n * Method that returns active cell, which means:\n * if there is any selected day, return selected day\n * if there is no selected day, but there is today day, return today day\n * if there is no today, or selected, return first one\n */\n private _getActiveCell(calendarDays: CalendarDay<D>[]): CalendarDay<D> | null {\n return new CalendarActiveDayCellStrategy<D>().getActiveCell(calendarDays);\n }\n\n /**\n * @hidden\n * Method which provides array of CalendarDay,\n * which contains last 0-6 days of previous month/year. Theses days\n * fills the gap between starting startingDayOfWeek and first day of current month\n */\n private _getPreviousMonthDays(calendarDays: CalendarDay<D>[]): CalendarDay<D>[] {\n const month = this.currentlyDisplayed.month > 1 ? this.currentlyDisplayed.month - 1 : 12;\n const year =\n this.currentlyDisplayed.month > 1 ? this.currentlyDisplayed.year : this.currentlyDisplayed.year - 1;\n const amountOfDaysInCurrentMonth: number = this._dateTimeAdapter.getNumDaysInMonth(\n this._dateTimeAdapter.createDate(year, month, 1)\n );\n const prevMonthLastDate = this._dateTimeAdapter.createDate(year, month, amountOfDaysInCurrentMonth);\n const prevMonthLastDay = amountOfDaysInCurrentMonth;\n let prevMonthLastWeekDay = this._dateTimeAdapter.getDayOfWeek(prevMonthLastDate) - this.startingDayOfWeek;\n\n /** Checking if there are some days cut by startingDayOfWeek option\n * If yes, there is whole week added, to avoid hiding\n */\n if (prevMonthLastWeekDay < 0) {\n prevMonthLastWeekDay = prevMonthLastWeekDay + 7;\n }\n\n if (prevMonthLastWeekDay < 6) {\n while (prevMonthLastWeekDay >= 0) {\n const prevMonthDay = prevMonthLastDay - prevMonthLastWeekDay;\n const date = this._dateTimeAdapter.createDate(year, month, prevMonthDay);\n calendarDays.push({ ...this._getDay(date), monthStatus: 'previous' });\n prevMonthLastWeekDay--;\n }\n }\n return calendarDays;\n }\n\n /**\n * @hidden\n * Method which provides array of CalendarDay, which contains first days of next month/year. Theses days\n * fills the gap between last day of current day and end of 6-weeks calendar grid.\n */\n private _getNextMonthDays(calendarDays: CalendarDay<D>[]): CalendarDay<D>[] {\n const month = this.currentlyDisplayed.month < 12 ? this.currentlyDisplayed.month + 1 : 1;\n const year =\n this.currentlyDisplayed.month < 12 ? this.currentlyDisplayed.year : this.currentlyDisplayed.year + 1;\n\n // The calendar grid can have 5 (35 days) or 6 (42 days) weeks\n const nextMonthDisplayedDays = (42 - calendarDays.length) % 7;\n\n for (let nextD = 1; nextD <= nextMonthDisplayedDays; nextD++) {\n const date = this._dateTimeAdapter.createDate(year, month, nextD);\n calendarDays.push({ ...this._getDay(date), monthStatus: 'next' });\n }\n return calendarDays;\n }\n\n /** @hidden */\n private _isWeekendDay(dayOfWeek: number): boolean {\n return dayOfWeek === 1 || dayOfWeek === 7;\n }\n\n /**\n * @hidden\n * Method that generates whole day model basing on date, disabling functions, block functions, and actually\n * chosen range / single date.\n */\n private _getDay(date: D): CalendarDay<D> {\n const weekDay = this._dateTimeAdapter.getDayOfWeek(date);\n const dayOfMonth = this._dateTimeAdapter.getDate(date);\n const dateNames = this._dateTimeAdapter.getDateNames();\n const isPast = this._dateTimeAdapter.compareDate(date, this._dateTimeAdapter.today()) < 0;\n const day: CalendarDay<D> = {\n date,\n label: dateNames[dayOfMonth - 1],\n weekDay,\n weekend: this._isWeekendDay(weekDay),\n ariaLabel: this._dateTimeAdapter.format(date, this._dateTimeFormats.display.dateA11yLabel),\n specialNumber: this._getSpecialDay(date) ?? undefined,\n past: isPast\n };\n\n /** Apply disabled state to days marked with passed function */\n if (this.disableFunction) {\n day.disabled = this.disableFunction(date);\n }\n\n return day;\n }\n\n /**\n * @hidden\n * Method that is called to refresh i18n short week days.\n */\n private _refreshShortWeekDays(): void {\n const shortDayOfWeekNames = this._dateTimeAdapter.getDayOfWeekNames('short');\n const dayOfWeekNames = this._dateTimeAdapter.getDayOfWeekNames('long');\n\n this._shortWeekDays = shortDayOfWeekNames\n .slice(this.startingDayOfWeek - 1)\n .concat(shortDayOfWeekNames.slice(0, this.startingDayOfWeek - 1));\n\n this._longWeekDays = dayOfWeekNames\n .slice(this.startingDayOfWeek - 1)\n .concat(dayOfWeekNames.slice(0, this.startingDayOfWeek - 1));\n\n this.changeDetRef.markForCheck();\n }\n\n /**\n * @hidden\n * Gets special day number of specified date model\n */\n private _getSpecialDay(date: D): number | null {\n const specialDay = this.specialDaysRules.find((specialDayRule) => specialDayRule.rule(date));\n if (specialDay) {\n return specialDay.specialDayNumber;\n }\n return null;\n }\n\n /**\n * @hidden\n * Method that returns array of week's count\n */\n private _refreshWeekCount(): string[] {\n const calendarDayList = this._calendarDayList;\n const weekNumbers: string[] = [];\n for (let index = 6; index < calendarDayList.length; index = index + 6) {\n weekNumbers.push(this._dateTimeAdapter.getWeekName(calendarDayList[index].date));\n }\n return weekNumbers;\n }\n\n /**\n * @hidden\n * Get year and month for previous year\n */\n private _getPreviousMonth(): CalendarCurrent {\n if (this._currentlyDisplayed.month > 1) {\n return { year: this._currentlyDisplayed.year, month: this._currentlyDisplayed.month - 1 };\n } else {\n return { year: this._currentlyDisplayed.year - 1, month: 12 };\n }\n }\n\n /**\n * @hidden\n * Get year and month for next year\n */\n private _getNextMonth(): CalendarCurrent {\n if (this._currentlyDisplayed.month < 12) {\n return { year: this._currentlyDisplayed.year, month: this._currentlyDisplayed.month + 1 };\n } else {\n return { year: this._currentlyDisplayed.year + 1, month: 1 };\n }\n }\n\n /**\n * @hidden\n * Method to put configuration and listeners on calendar keyboard service\n */\n private _setupKeyboardService(): void {\n this.calendarService.colAmount = this._amountOfCols;\n\n this.calendarService.focusEscapeFunction = this.focusEscapeFunction;\n\n this.calendarService.onFocusIdChange.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((index) => {\n this.focusOnCellByIndex(index);\n });\n\n this.calendarService.onKeySelect.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((index) => {\n this.selectDate(this._calendarDayList[index]);\n });\n\n this.calendarService.onListStartApproach.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((index) => {\n this._selectPreviousMonth();\n /**\n * Calculate focused cell in new grid\n */\n const originalMonth = this._getNextMonth(); // month that was before moving back\n const originalAmountOfWeeks = this._dateTimeAdapter.getAmountOfWeeks(\n originalMonth.year,\n originalMonth.month,\n this.startingDayOfWeek\n );\n const prevMonthAmountOfWeeks = this._dateTimeAdapter.getAmountOfWeeks(\n this._currentlyDisplayed.year,\n this._currentlyDisplayed.month,\n this.startingDayOfWeek\n );\n // trigger rendering for new grid so focus can be set\n this.changeDetRef.detectChanges();\n this.focusOnCellByIndex(index - 7 * (originalAmountOfWeeks - prevMonthAmountOfWeeks));\n });\n\n this.calendarService.onListEndApproach.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((index) => {\n this._selectNextMonth();\n // trigger rendering for new grid so focus can be set\n this.changeDetRef.detectChanges();\n this.focusOnCellByIndex(index);\n });\n }\n\n /**\n * @hidden\n * Change selection flag on days to false, besides the selected one\n */\n private _changeSelectedSingleDay(day: CalendarDay<D> | undefined, calendar: CalendarDay<D>[]): void {\n calendar.forEach((_day) => (_day.selected = false));\n if (day && !day.blocked && !day.disabled) {\n day.selected = true;\n }\n this.refreshTabIndex(calendar);\n }\n\n /**\n * @hidden\n * Change properties of range days, this method is called, to not rebuild whole grid from scratch,\n * it just changes properties of newly selected/unselected days.\n */\n private _changeSelectedRangeDays(dates: DateRange<D>, calendar: CalendarDay<D>[]): void {\n /** Pull list of calendar days */\n const calendarList = calendar;\n\n /** Reset changing properties */\n calendarList.forEach(\n (_day) =>\n (_day.selectedFirst =\n _day.selectedLast =\n _day.selected =\n _day.isTabIndexed =\n _day.disabled =\n _day.hoverRange =\n _day.selectedRange =\n false)\n );\n\n if (dates) {\n let startDay: CalendarDay<D> | undefined;\n let endDay: CalendarDay<D> | undefined;\n if (dates.start) {\n /** Find start date and mark it as selected */\n startDay = calendarList.find((_day) => this._dateTimeAdapter.datesEqual(_day.date, dates.start));\n if (\n startDay &&\n !startDay.blocked &&\n !startDay.disabled &&\n (typeof this.disableRangeStartFunction !== 'function' ||\n !this.disableRangeStartFunction(startDay.date))\n ) {\n startDay.selected = true;\n startDay.selectedFirst = true;\n }\n }\n if (dates.end) {\n /** Find end date and mark it as selected */\n endDay = calendarList.find((_day) => this._dateTimeAdapter.datesEqual(_day.date, dates.end));\n if (\n endDay &&\n !endDay.blocked &&\n !endDay.disabled &&\n (typeof this.disableRangeEndFunction !== 'function' || !this.disableRangeEndFunction(endDay.date))\n ) {\n endDay.selected = true;\n endDay.selectedLast = true;\n }\n }\n\n /** Verify if start day and end day is valid, otherwise don't put range selection */\n if (dates.start && dates.end) {\n /** Mark all days, which are between start and end date */\n calendarList\n .filter(\n (_day) =>\n (_day.selectedRange = this._dateTimeAdapter.isBetween(_day.date, dates.start!, dates.end!))\n )\n .forEach((_day) => (_day.selectedRange = true));\n }\n }\n\n this.refreshTabIndex(calendarList);\n\n /** Apply disabled state to days marked with passed function */\n if (this.disableFunction) {\n calendarList.forEach((_day) => (_day.disabled = this.disableFunction!(_day.date)));\n }\n\n if ((this._selectCounter === 0 || this._selectCounter === 2) && this.disableRangeStartFunction) {\n calendarList.forEach(\n (_day) => (_day.disabled = _day.disabled || this.disableRangeStartFunction!(_day.date))\n );\n } else if (this._selectCounter === 1 && this.disableRangeEndFunction) {\n calendarList.forEach((_day) => (_day.disabled = _day.disabled || this.disableRangeEndFunction!(_day.date)));\n }\n }\n\n /** @hidden */\n private refreshTabIndex(calendar: CalendarDay<D>[]): void {\n calendar.forEach((_day) => (_day.isTabIndexed = false));\n const cell = this._getActiveCell(calendar.filter((_day) => _day.monthStatus === 'current'));\n cell && (cell.isTabIndexed = true);\n }\n\n /** @hidden */\n private focusOnCellByIndex(index: number): void {\n this._focusElementBySelector(`#${this._getCellIdByIndex(index)}`);\n }\n}\n","<table\n class=\"fd-calendar__content fd-calendar__content--dates\"\n role=\"grid\"\n [attr.aria-roledescription]=\"'coreCalendar.calendarDayViewDescription' | fdTranslate\"\n>\n <thead class=\"fd-calendar__group\" role=\"rowgroup\">\n <tr class=\"fd-calendar__row\" role=\"row\">\n @if (showWeekNumbers) {\n <th\n class=\"fd-calendar__item fd-calendar__item--side-helper\"\n role=\"columnheader\"\n [attr.id]=\"_weekNumbersColumnHeaderId\"\n [attr.aria-label]=\"'coreCalendar.weekColumnLabel' | fdTranslate\"\n ></th>\n }\n @for (day of shortWeekDays; track day; let i = $index) {\n <th\n class=\"fd-calendar__item fd-calendar__item--side-helper\"\n role=\"columnheader\"\n [attr.aria-label]=\"longWeekDays[i]\"\n >\n <div class=\"fd-calendar__text-wrapper\">\n <span class=\"fd-calendar__text\">{{ day }}</span>\n </div>\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"fd-calendar__group\" role=\"rowgroup\">\n @for (row of _dayViewGrid; track row; let rowIndex = $index) {\n <tr class=\"fd-calendar__row\" role=\"row\">\n @if (showWeekNumbers) {\n <th\n class=\"fd-calendar__item fd-calendar__item--side-helper\"\n role=\"rowheader\"\n scope=\"row\"\n [attr.data-fd-calendar-week]=\"_weeks[rowIndex]\"\n [attr.id]=\"viewId + '-week-' + _weeks[rowIndex]\"\n [attr.aria-labelledby]=\"\n _weekNumbersColumnHeaderId + ' ' + (viewId + '-week-' + _weeks[rowIndex])\n \"\n >\n @if (_weeks && _weeks[rowIndex]) {\n <div class=\"fd-calendar__text-wrapper\">\n <span class=\"fd-calendar__text\">\n {{ _weeks[rowIndex] }}\n </span>\n </div>\n }\n </th>\n }\n @for (cell of row; track cell; let cellIndex = $index) {\n <td\n class=\"fd-calendar__item\"\n role=\"gridcell\"\n [class.fd-calendar__item--selected]=\"cell.selectedFirst || cell.selectedLast || cell.selected\"\n [class.fd-calendar__item--range]=\"\n (cell.selectedRange || cell.hoverRange) && !cell.selectedFirst && !cell.selectedLast\n \"\n [class.fd-calendar__item--today]=\"cell.current\"\n [class.fd-calendar__item--weekend]=\"\n cell.weekend && markWeekends && cell.monthStatus === 'current'\n \"\n [class.fd-calendar__item--other]=\"cell.monthStatus !== 'current'\"\n [class.is-disabled]=\"cell.disabled\"\n [class]=\"cell.specialNumber ? 'fd-calendar__item--legend-' + cell.specialNumber : ''\"\n [attr.id]=\"cell.id\"\n [attr.data-fd-calendar-date-day]=\"cell.label\"\n [attr.data-fd-calendar-day]=\"cell.index\"\n [attr.aria-selected]=\"cell.selected\"\n [attr.aria-disabled]=\"cell.disabled\"\n [attr.tabindex]=\"cell.isTabIndexed ? 0 : -1\"\n (click)=\"selectDate(cell, $event)\"\n (mouseenter)=\"_refreshHoverRange(cell)\"\n (keydown)=\"_onKeydownDayHandler($event, cell, _getIndex(rowIndex, cellIndex))\"\n >\n <div class=\"fd-calendar__text-wrapper\">\n <span\n class=\"fd-calendar__text\"\n role=\"button\"\n [attr.aria-labelledby]=\"\n cell.id +\n '-aria-label ' +\n (cell.selectedFirst ? _dateRangeStartLabelId + ' ' : '') +\n (cell.selectedLast ? _dateRangeEndLabelId + ' ' : '') +\n (cell.current ? _todayLabelId + ' ' : '') +\n (cell.selected && calType === 'single' ? _selectedDateLabelId + ' ' : '') +\n (cell.past ? _dateInPastLabelId : '')\n \"\n >{{ cell.label }}</span\n >\n <span hidden aria-hidden=\"true\" [attr.id]=\"cell.id + '-aria-label'\">\n {{ cell.ariaLabel }}\n </span>\n </div>\n </td>\n }\n </tr>\n }\n @if (_dayViewGrid.length <= 5) {\n <tr class=\"fd-calendar__row\">\n <td class=\"fd-calendar__item hidden-day\"></td>\n </tr>\n }\n @if (_dayViewGrid.length === 4) {\n <tr class=\"fd-calendar__row\">\n <td class=\"fd-calendar__item hidden-day\"></td>\n </tr>\n }\n </tbody>\n</table>\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_todayLabelId\">{{ 'coreCalendar.todayLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_selectedDateLabelId\">{{ 'coreCalendar.dateSelectedLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_dateRangeStartLabelId\">{{ 'coreCalendar.rangeStartLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_dateRangeEndLabelId\">{{ 'coreCalendar.rangeEndLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_dateInPastLabelId\">{{ 'coreCalendar.dayInPastLabel' | fdTranslate }}</div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n inject\n} from '@angular/core';\n\nimport { DATE_TIME_FORMATS, DateTimeFormats, DatetimeAdapter } from '@fundamental-ngx/core/datetime';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { CalendarService } from '../../calendar.service';\nimport { CalendarMonth } from '../../models/calendar-month';\nimport { DefaultCalendarActiveCellStrategy, EscapeFocusFunction, FocusableCalendarView } from '../../models/common';\n\n/** Component representing the month view of the calendar. */\n@Component({\n selector: 'fd-calendar-month-view',\n templateUrl: './calendar-month-view.component.html',\n styleUrl: './calendar-month-view.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'viewId'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ButtonComponent, FdTranslatePipe]\n})\nexport class CalendarMonthViewComponent<D> implements OnInit, OnChanges, FocusableCalendarView {\n /** The id of the calendar passed from the parent component */\n @Input()\n id: string;\n\n /** A number (1-12) representing the selected month */\n @Input()\n monthSelected: number;\n\n /** A function that handles escape focus */\n @Input()\n focusEscapeFunction: EscapeFocusFunction;\n\n /** A year the month view is referring to */\n @Input()\n year: number;\n\n /** An event fired when a new month is selected */\n @Output()\n readonly monthClicked: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * @hidden\n * Month grid table\n */\n _calendarMonthListGrid: CalendarMonth[][];\n\n /**\n * @hidden\n * A number offset used to achieve the 1-12 representation of the calendar\n */\n private readonly _monthOffset: number = 1;\n /** @hidden */\n private readonly _amountOfColPerRow: number = 3;\n /** @hidden */\n private readonly _amountOfRows: number = 4;\n\n /**\n * @hidden\n */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _initiated = false;\n\n /** @hidden */\n constructor(\n private _eRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private _calendarService: CalendarService,\n @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats,\n private _dateTimeAdapter: DatetimeAdapter<D>\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._initiated = true;\n this._setupKeyboardService();\n this._constructMonthGrid();\n\n this._dateTimeAdapter.localeChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._constructMonthGrid();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (this._initiated && ('monthSelected' in changes || 'year' in changes || 'id' in changes)) {\n this._constructMonthGrid();\n }\n }\n\n /** Get a number (1-12) representing the current month */\n get currentMonth(): number {\n return this._dateTimeAdapter.getMonth(this._dateTimeAdapter.today());\n }\n\n /** Getter for the private class member _monthOffset */\n get monthOffset(): number {\n return this._monthOffset;\n }\n\n /** View ID */\n get viewId(): string {\n return this.id + '-month-view';\n }\n\n /**\n * @hidden\n * Today cell label ID\n */\n get _todayLabelId(): string {\n return this.viewId + '-today-label';\n }\n\n /**\n * @hidden\n * Selected date label ID\n */\n get _selectedDateLabelId(): string {\n return this.viewId + '-selected-date-label';\n }\n\n /** Method for handling the mouse click event when a month is selected */\n selectMonth(monthCell: CalendarMonth, event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.monthSelected = monthCell.month;\n this.monthClicked.emit(this.monthSelected);\n }\n\n /**\n * Set focus on month cell.\n * It can be a selected cell, current month cell or first cell in the list\n */\n setFocusOnCell(): void {\n const cellToFocus = new DefaultCalendarActiveCellStrategy().getActiveCell(this._getMonthList());\n if (!cellToFocus?.id) {\n return;\n }\n this._focusElementBySelector(`#${cellToFocus.id}`);\n }\n\n /**\n * @hidden\n * Method for handling the keyboard events (a11y)\n */\n _onKeydownMonthHandler(event: KeyboardEvent, index: number): void {\n this._calendarService.onKeydownHandler(event, index);\n }\n\n /**\n * @hidden\n * Method that allows to focus elements inside this component\n */\n _focusElementBySelector(elementSelector: string): void {\n const elementToFocus: HTMLElement = this._eRef.nativeElement.querySelector(elementSelector);\n if (elementToFocus?.focus) {\n elementToFocus.focus();\n }\n }\n\n /**\n * @hidden\n * Method returning id of month cell\n */\n _getIndex(rowIndex: number, colIndex: number): number {\n return this._calendarService.getId(rowIndex, colIndex);\n }\n\n /**\n * @hidden\n * @param index month grid cell index\n */\n _getId(index: number): string {\n return this.viewId + '-month-' + index;\n }\n\n /**\n * @hidden\n * Method that checks if this is current month\n */\n _isCurrent(id: number): boolean {\n return id + this._monthOffset === this.currentMonth;\n }\n\n /**\n * @hidden\n * Method that check if this is selected month\n */\n _isSelected(id: number): boolean {\n return id + this._monthOffset === this.monthSelected;\n }\n\n /**\n * @hidden\n * Method that create month grid with required meta data\n */\n private _constructMonthGrid(): void {\n const monthNames: string[] = this._dateTimeAdapter.getMonthNames('short');\n\n const monthList: CalendarMonth[] = monthNames.map((monthName, index): CalendarMonth => {\n const month = index + this.monthOffset;\n return {\n month,\n label: monthName,\n ariaLabel: this._dateTimeAdapter.format(\n this._dateTimeAdapter.createDate(this.year, month, 1),\n this._dateTimeFormats.display.monthA11yLabel\n ),\n index,\n selected: month === this.monthSelected,\n current: month === this.currentMonth,\n tabIndex: month === this.monthSelected ? 0 : -1\n };\n });\n\n this._calendarMonthListGrid = [];\n /** Creating 2d grid */\n while (monthList.length) {\n this._calendarMonthListGrid.push(monthList.splice(0, this._amountOfColPerRow));\n }\n\n this._calendarMonthListGrid.forEach((row, rowIndex) => {\n row.forEach((monthCell, colIndex) => {\n monthCell.id = this._getId(this._getIndex(rowIndex, colIndex));\n });\n });\n\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * @hidden\n * Method to put configuration and listeners on calendar keyboard service\n */\n private _setupKeyboardService(): void {\n this._calendarService.rowAmount = this._amountOfRows;\n this._calendarService.colAmount = this._amountOfColPerRow;\n this._calendarService.focusEscapeFunction = this.focusEscapeFunction;\n\n this._calendarService.onFocusIdChange\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((index) => this._focusOnCellByIndex(index));\n\n this._calendarService.onKeySelect\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((index) => this.selectMonth(this._getMonthList()[index]));\n }\n\n /**\n * @hidden\n * Returns transformed 1d array from 2d month grid.\n */\n private _getMonthList(): CalendarMonth[] {\n return (<CalendarMonth[]>[]).concat(...this._calendarMonthListGrid);\n }\n\n /** @hidden */\n private _focusOnCellByIndex(index: number): void {\n this._focusElementBySelector(`#${this._getId(index)}`);\n }\n}\n","<table\n class=\"fd-calendar__content fd-calendar__content--months\"\n role=\"grid\"\n [attr.aria-roledescription]=\"'coreCalendar.calendarMonthViewDescription' | fdTranslate\"\n>\n <tbody class=\"fd-calendar__group\" role=\"rowgroup\">\n @for (colMonths of _calendarMonthListGrid; track colMonths; let rowIndex = $index) {\n <tr class=\"fd-calendar__row\" role=\"row\">\n @for (monthCell of colMonths; track monthCell; let colIndex = $index) {\n <td\n class=\"fd-calendar__my-item\"\n role=\"gridcell\"\n [class.fd-calendar__my-item--current]=\"monthCell.current\"\n [class.is-active]=\"monthCell.selected\"\n [attr.tabIndex]=\"monthCell.tabIndex\"\n [attr.id]=\"monthCell.id\"\n [attr.aria-selected]=\"monthCell.selected\"\n [attr.aria-disabled]=\"monthCell.disabled\"\n [attr.data-fd-calendar-month]=\"monthCell.month\"\n (keydown)=\"_onKeydownMonthHandler($event, monthCell.index)\"\n (click)=\"selectMonth(monthCell, $event)\"\n >\n <button\n fd-button\n fdType=\"transparent\"\n class=\"fd-calendar__my-item-button\"\n [class.is-active]=\"monthCell.current\"\n tabindex=\"-1\"\n >\n <span\n class=\"fd-calendar__text\"\n [attr.aria-labelledby]=\"\n monthCell.id +\n '-aria-label ' +\n (monthCell.current ? _todayLabelId + ' ' : '') +\n (monthCell.selected ? _selectedDateLabelId : '')\n \"\n >\n {{ monthCell.label }}\n </span>\n </button>\n <span hidden aria-hidden=\"true\" [attr.id]=\"monthCell.id + '-aria-label'\">\n {{ monthCell.ariaLabel }}\n </span>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_todayLabelId\">{{ 'coreCalendar.todayLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_selectedDateLabelId\">{{ 'coreCalendar.dateSelectedLabel' | fdTranslate }}</div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n inject\n} from '@angular/core';\n\nimport { DATE_TIME_FORMATS, DateTimeFormats, DatetimeAdapter } from '@fundamental-ngx/core/datetime';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { CalendarService } from '../../calendar.service';\nimport { CalendarYear, CalendarYearGrid } from '../../models/calendar-year-grid';\nimport { DefaultCalendarActiveCellStrategy, EscapeFocusFunction, FocusableCalendarView } from '../../models/common';\n\n/** Component representing the YearView of the Calendar Component. */\n@Component({\n selector: 'fd-calendar-year-view',\n templateUrl: './calendar-year-view.component.html',\n styleUrl: './calendar-year-view.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'viewId'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ButtonComponent, FdTranslatePipe]\n})\nexport class CalendarYearViewComponent<D> implements OnInit, OnChanges, FocusableCalendarView {\n /** The id of the calendar passed from the parent component */\n @Input()\n id: string;\n\n /** Function that is called when the focus would escape the element. */\n @Input()\n focusEscapeFunction: EscapeFocusFunction;\n\n /** Parameter holding the year that is currently selected. */\n @Input()\n yearSelected: number;\n\n /**\n * Object to customize year grid\n */\n @Input()\n yearViewGrid: CalendarYearGrid;\n\n /** Event fired when a year is selected. */\n @Output()\n readonly yearClicked: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * @hidden\n * This variable is used to define which year from calendarYearList should be focusable by tab key\n */\n _activeYear: number;\n\n /**\n * @hidden\n * Parameter that stores the dozen of years that are currently being displayed.\n */\n _calendarYearListGrid: CalendarYear[][];\n\n /**\n * @hidden\n * Parameter storing the year of the present day.\n */\n _currentYear: number;\n\n /**\n * @hidden\n * Parameter storing first shown year on list\n */\n _firstYearInList: number;\n\n /** View ID */\n get viewId(): string {\n return this.id + '-year-view';\n }\n\n /**\n * @hidden\n * Today cell label ID\n */\n get _todayLabelId(): string {\n return this.viewId + '-today-label';\n }\n\n /**\n * @hidden\n * Selected date label ID\n */\n get _selectedDateLabelId(): string {\n return this.viewId + '-selected-date-label';\n }\n\n /**\n * @hidden\n */\n private readonly _destroyRef = inject(DestroyRef);\n /** @hidden */\n private _initiated = false;\n\n /** @hidden */\n constructor(\n private _eRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private _calendarService: CalendarService,\n private _dateTimeAdapter: DatetimeAdapter<D>,\n @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {\n // default values\n this._currentYear = _dateTimeAdapter.getYear(_dateTimeAdapter.today());\n this._firstYearInList = this._currentYear;\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._initiated = true;\n\n this._setupKeyboardService();\n this._firstYearInList = this.yearSelected;\n this._constructYearGrid();\n\n this._dateTimeAdapter.localeChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._constructYearGrid();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (this._initiated && ('yearViewGrid' in changes || 'yearSelected' in changes || 'id' in changes)) {\n this._constructYearGrid();\n }\n }\n\n /** Method used to load the previous {{col * row}} years to be displayed. */\n loadNextYearList(): void {\n this._firstYearInList += this._getAmountOfYearsShownAtOnce();\n this._constructYearGrid();\n }\n\n /** Method used to load the next {{col * row}} years to be displayed. */\n loadPreviousYearList(): void {\n this._firstYearInList -= this._getAmountOfYearsShownAtOnce();\n this._constructYearGrid();\n }\n\n /** Method that sends the year to the parent component when it is clicked. */\n selectYear(selectedYear: CalendarYear, event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.yearSelected = selectedYear.year;\n this.yearClicked.emit(this.yearSelected);\n }\n\n /**\n * Set focus on month cell.\n * It can be a selected cell, current month cell or first cell in the list\n */\n setFocusOnCell(): void {\n const cellToFocus = new DefaultCalendarActiveCellStrategy().getActiveCell(this._getYearList());\n if (!cellToFocus?.id) {\n return;\n }\n this._focusElementBySelector(`#${cellToFocus.id}`);\n }\n\n /**\n * @hidden\n * Method for handling the keyboard navigation.\n */\n _onKeydownYearHandler(event: KeyboardEvent, index: number): void {\n this._calendarService.onKeydownHandler(event, index);\n }\n\n /**\n * @hidden\n * Method that allows to focus elements inside this component\n */\n _focusElementBySelector(elementSelector: string): void {\n const elementToFocus: HTMLElement = this._eRef.nativeElement.querySelector(elementSelector);\n if (elementToFocus?.focus) {\n elementToFocus.focus();\n }\n }\n\n /**\n * @hidden\n * Standardized method to calculate grid [x][y] to index number of flatten list\n */\n _getIndex(rowIndex: number, colIndex: number): number {\n return this._calendarService.getId(rowIndex, colIndex);\n }\n\n /**\n * @hidden\n * Get grid cell id be index\n * @param index\n */\n _getId(index: number): string {\n return this.viewId + '-year-' + index;\n }\n\n /**\n * @hidden\n * Method that returns active cell, which means:\n * if there is any selected year, return selected year\n * if there is no selected year, but there is current year, return current year\n * if there is no current year, or selected, return first one\n */\n private _getActiveYear(): number {\n const selectedYearCell = this._getYearList().find(({ year }) => year === this.yearSelected);\n if (selectedYearCell) {\n return selectedYearCell.year;\n }\n\n const currentYearCell = this._getYearList().find(({ year }) => year === this._currentYear);\n if (currentYearCell) {\n return currentYearCell.year;\n }\n\n return this._calendarYearListGrid[0][0].year;\n }\n\n /** @hidden */\n private _constructYearGrid(): void {\n const displayedYearsAmount: number = this.yearViewGrid.cols * this.yearViewGrid.rows;\n const calendarYearList: CalendarYear[] = [];\n this._calendarYearListGrid = [];\n\n for (let x = 0; x < displayedYearsAmount; ++x) {\n const year = this._firstYearInList + x;\n calendarYearList.push({\n year,\n label: this._getYearName(year),\n ariaLabel: this._getAriaYearName(year),\n selected: year === this.yearSelected,\n current: year === this._currentYear,\n index: x\n });\n }\n /** Creating 2d grid */\n while (calendarYearList.length) {\n this._calendarYearListGrid.push(calendarYearList.splice(0, this.yearViewGrid.cols));\n }\n\n this._activeYear = this._getActiveYear();\n\n this._calendarYearListGrid.forEach((row, rowIndex) => {\n row.forEach((cell, colIndex) => {\n cell.id = this._getId(this._getIndex(rowIndex, colIndex));\n cell.tabIndex = cell.year === this._activeYear ? 0 : -1;\n });\n });\n\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * @hidden\n * Returns year name as a string.\n */\n private _getYearName(year: number): string {\n const formatted = this._dateTimeAdapter.getYearName(this._dateTimeAdapter.createDate(year, 1, 1));\n return this._getYearString(year, formatted);\n }\n\n /**\n * @hidden\n * Returns aria year name as a string.\n */\n private _getAriaYearName(year: number): string {\n const formatted = this._dateTimeAdapter.format(\n this._dateTimeAdapter.createDate(year, 1, 1),\n this._dateTimeFormats.display.yearA11yLabel\n );\n return this._getYearString(year, formatted);\n }\n\n /**\n * @hidden\n * Returns year name taking into account yearMapping.\n */\n private _getYearString(year: number, defaultStr: string): string {\n if (typeof this.yearViewGrid.yearMapping === 'function') {\n return this.yearViewGrid.yearMapping(year);\n }\n return defaultStr;\n }\n\n /**\n * @hidden\n * Returns transformed 1d array from 2d year grid.\n */\n private _getYearList(): CalendarYear[] {\n return (<CalendarYear[]>[]).concat(...this._calendarYearListGrid);\n }\n\n /**\n * @hidden\n * Amount of years displayed in year view\n */\n private _getAmountOfYearsShownAtOnce(): number {\n return this.yearViewGrid.rows * this.yearViewGrid.cols;\n }\n\n /**\n * @hidden\n * Method to put configuration and listeners on calendar keyboard service\n */\n private _setupKeyboardService(): void {\n this._calendarService.colAmount = this.yearViewGrid.cols;\n this._calendarService.rowAmount = this.yearViewGrid.rows;\n this._calendarService.focusEscapeFunction = this.focusEscapeFunction;\n\n this._calendarService.onFocusIdChange\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((index) => this._focusOnCellByIndex(index));\n\n this._calendarService.onKeySelect\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((index) => this.selectYear(this._getYearList()[index]));\n\n this._calendarService.onListStartApproach.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((index) => {\n this.loadPreviousYearList();\n this._changeDetectorRef.detectChanges();\n this._focusOnCellByIndex(index);\n });\n\n this._calendarService.onListEndApproach.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((index) => {\n this.loadNextYearList();\n this._changeDetectorRef.detectChanges();\n this._focusOnCellByIndex(index);\n });\n }\n\n /** @hidden */\n private _focusOnCellByIndex(index: number): void {\n this._focusElementBySelector(`#${this._getId(index)}`);\n }\n}\n","<table\n class=\"fd-calendar__content fd-calendar__content--years\"\n role=\"grid\"\n [attr.aria-roledescription]=\"'coreCalendar.calendarYearsViewDescription' | fdTranslate\"\n>\n <tbody class=\"fd-calendar__group\" role=\"rowgroup\">\n @for (colYears of _calendarYearListGrid; track colYears; let rowIndex = $index) {\n <tr class=\"fd-calendar__row\" role=\"row\">\n @for (yearCell of colYears; track yearCell; let colIndex = $index) {\n <td\n class=\"fd-calendar__my-item\"\n role=\"gridcell\"\n [class.fd-calendar__my-item--current]=\"yearCell.current\"\n [class.is-active]=\"yearCell.selected\"\n [attr.id]=\"yearCell.id\"\n [attr.tabindex]=\"yearCell.tabIndex\"\n [attr.aria-selected]=\"yearCell.selected\"\n [attr.aria-disabled]=\"yearCell.disabled\"\n [attr.data-fd-calendar-year]=\"yearCell.year\"\n (keydown)=\"_onKeydownYearHandler($event, yearCell.index)\"\n (click)=\"selectYear(yearCell, $event)\"\n >\n <button\n fd-button\n fdType=\"transparent\"\n class=\"fd-calendar__item-button\"\n [class.is-active]=\"yearCell.current\"\n tabindex=\"-1\"\n >\n <span\n class=\"fd-calendar__text\"\n [attr.aria-labelledby]=\"\n yearCell.id +\n '-aria-label ' +\n (yearCell.current ? _todayLabelId + ' ' : '') +\n (yearCell.selected ? _selectedDateLabelId : '')\n \"\n >\n {{ yearCell.label }}\n </span>\n </button>\n <span hidden aria-hidden=\"true\" [attr.id]=\"yearCell.id + '-aria-label'\">\n {{ yearCell.ariaLabel }}\n </span>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_todayLabelId\">{{ 'coreCalendar.todayLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_selectedDateLabelId\">{{ 'coreCalendar.dateSelectedLabel' | fdTranslate }}</div>\n</div>\n","/** Create an Error to be thrown when attempting to use an invalid date implementation. */\nexport function createMissingDateImplementationError(provider: string): Error {\n return Error(\n `Calendar: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: FdDatetimeModule, or provide a ` +\n `custom implementation.`\n );\n}\n","import { FD_LANGUAGE_ENGLISH } from '@fundamental-ngx/i18n';\nimport { Subject } from 'rxjs';\n\n/**\n * Provides i18n support for labels inside the calendar component.\n * @deprecated use i18n `coreCalendar` key instead\n */\nexport class CalendarI18nLabels {\n /** This is event that should be called, when labels are changed, to let component detect an changes. */\n readonly labelsChange: Subject<void> = new Subject();\n\n /** Year selection aria label. Used on the button to navigate to the years view. */\n yearSelectionLabel = FD_LANGUAGE_ENGLISH.coreCalendar.yearSelectionLabel;\n\n /** Years range selection aria label. Used on the button to navigate to the years range view. */\n yearsRangeSelectionLabel = FD_LANGUAGE_ENGLISH.coreCalendar.yearsRangeSelectionLabel;\n\n /** Month selection aria label. Used on the button to navigate to the months view. */\n monthSelectionLabel = FD_LANGUAGE_ENGLISH.coreCalendar.monthSelectionLabel;\n\n /** Day selection aria label. Used on the button to navigate to the day view. */\n dateSelectionLabel = FD_LANGUAGE_ENGLISH.coreCalendar.dateSelectionLabel;\n\n /** Previous year aria label. Used on the button to switch to a previous year in the years view. */\n previousYearLabel = FD_LANGUAGE_ENGLISH.coreCalendar.previousYearLabel;\n\n /** Next year aria label. Used on the button to switch to a next year in the years view. */\n nextYearLabel = FD_LANGUAGE_ENGLISH.coreCalendar.nextYearLabel;\n\n /** Previous month aria label. Used on the button to switch to a previous month in the months view. */\n previousMonthLabel = FD_LANGUAGE_ENGLISH.coreCalendar.previousMonthLabel;\n\n /** Next month aria label. Used on the button to switch to a next month in the months view. */\n nextMonthLabel = FD_LANGUAGE_ENGLISH.coreCalendar.nextMonthLabel;\n\n /** Week number column label */\n weekColumnLabel = FD_LANGUAGE_ENGLISH.coreCalendar.weekColumnLabel;\n\n /** Selected date label. Used on the selected day/month/year cell. */\n dateSelectedLabel = FD_LANGUAGE_ENGLISH.coreCalendar.dateSelectedLabel;\n\n /** Is used to describe present date */\n todayLabel = FD_LANGUAGE_ENGLISH.coreCalendar.todayLabel;\n\n /** Range start label. Used for date range selection */\n rangeStartLabel = FD_LANGUAGE_ENGLISH.coreCalendar.rangeStartLabel;\n\n /** Range end label. Used for date range selection */\n rangeEndLabel = FD_LANGUAGE_ENGLISH.coreCalendar.rangeEndLabel;\n\n /** Past days aria label. Used when days in the past are accessed */\n dayInPastLabel = FD_LANGUAGE_ENGLISH.coreCalendar.dayInPastLabel;\n\n /** Past days aria label. Used when days in the past are accessed */\n closeCalendarLabel = FD_LANGUAGE_ENGLISH.coreCalendar.closeCalendarLabel;\n\n /** Calendar day view aria role description. */\n calendarDayViewDescription = FD_LANGUAGE_ENGLISH.coreCalendar.calendarDayViewDescription;\n\n /** Calendar month view aria role description. */\n calendarMonthViewDescription = FD_LANGUAGE_ENGLISH.coreCalendar.calendarMonthViewDescription;\n\n /** Calendar years view aria role description. */\n calendarYearsViewDescription = FD_LANGUAGE_ENGLISH.coreCalendar.calendarYearsViewDescription;\n\n /** Calendar years range view aria role description. */\n calendarYearsRangeViewDescription = FD_LANGUAGE_ENGLISH.coreCalendar.calendarYearsRangeViewDescription;\n}\n","import { inject } from '@angular/core';\nimport { FD_LANGUAGE, FdLanguage } from '@fundamental-ngx/i18n';\nimport { Observable, map, startWith, switchMap } from 'rxjs';\nimport { CalendarI18nLabels } from './i18n/calendar-i18n-labels';\n\n/**\n * Use deprecated `CalendarI18nLabels` to patch `FD_LANGUAGE` observable\n */\nexport function patchDeprecatedI18nLabels(): Observable<FdLanguage> {\n const deprecatedSymbol = inject(CalendarI18nLabels, { optional: true });\n if (deprecatedSymbol) {\n return inject(FD_LANGUAGE, { skipSelf: true }).pipe(\n switchMap((existingLang) =>\n deprecatedSymbol.labelsChange.pipe(\n startWith(null),\n map(() => existingLang)\n )\n ),\n map((existingLang) => ({\n ...existingLang,\n coreCalendar: {\n ...existingLang.coreCalendar,\n ...deprecatedSymbol\n }\n }))\n );\n }\n return inject(FD_LANGUAGE, { skipSelf: true });\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { DATE_TIME_FORMATS, DatetimeAdapter, DateTimeFormats } from '@fundamental-ngx/core/datetime';\nimport { SpecialDayRule } from '@fundamental-ngx/core/shared';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport {\n ContentDensityModule,\n ContentDensityObserver,\n contentDensityObserverProviders\n} from '@fundamental-ngx/core/content-density';\nimport { FD_LANGUAGE } from '@fundamental-ngx/i18n';\nimport { createMissingDateImplementationError } from './calendar-errors';\nimport { CalendarHeaderComponent } from './calendar-header/calendar-header.component';\nimport { CalendarAggregatedYearViewComponent } from './calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component';\nimport { CalendarDayViewComponent } from './calendar-views/calendar-day-view/calendar-day-view.component';\nimport { CalendarMonthViewComponent } from './calendar-views/calendar-month-view/calendar-month-view.component';\nimport { CalendarYearViewComponent } from './calendar-views/calendar-year-view/calendar-year-view.component';\nimport { CalendarService } from './calendar.service';\nimport { AggregatedYear } from './models/aggregated-year';\nimport { CalendarCurrent } from './models/calendar-current';\nimport { CalendarYearGrid } from './models/calendar-year-grid';\nimport { DisableDateFunction, EscapeFocusFunction, FocusableCalendarView } from './models/common';\nimport { DateRange } from './models/date-range';\nimport { patchDeprecatedI18nLabels } from './patch-deprecated-i18n-labels';\nimport { CalendarType, DaysOfWeek, FdCalendarView, NavigationButtonDisableFunction } from './types';\n\nlet calendarUniqueId = 0;\n\n/**\n * Months: 1 = January, 12 = december.\n * Days: 1 = Sunday, 7 = Saturday\n *\n * Calendar component used for selecting dates, typically used by the DatePicker and DateTimePicker components.\n * Supports the Angular forms module, enabling form validity, ngModel, etc.\n * ```html\n * <fd-calendar></fd-calendar>\n * ```\n *\n */\n@Component({\n selector: 'fd-calendar',\n templateUrl: './calendar.component.html',\n styleUrl: './calendar.component.scss',\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CalendarComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CalendarComponent),\n multi: true\n },\n CalendarService,\n contentDensityObserverProviders(),\n {\n provide: FD_LANGUAGE,\n useFactory: patchDeprecatedI18nLabels\n }\n ],\n host: {\n '(focusout)': '_focusOut($event)',\n '[attr.id]': 'id',\n class: 'fd-calendar fd-has-display-block'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n ContentDensityModule,\n CalendarHeaderComponent,\n CalendarDayViewComponent,\n CalendarMonthViewComponent,\n CalendarYearViewComponent,\n CalendarAggregatedYearViewComponent\n ]\n})\nexport class CalendarComponent<D> implements OnInit, OnChanges, ControlValueAccessor, Validator, OnDestroy {\n /** The currently selected date model in single mode. */\n @Input()\n selectedDate: Nullable<D>;\n\n /**\n * Whether user wants to mark sunday/saturday with `fd-calendar__item--weekend` class\n */\n @Input()\n markWeekends = true;\n\n /**\n * Whether user wants to show week numbers next to days\n */\n @Input()\n showWeekNumbers = false;\n\n /** Whether calendar is used inside mobile in landscape mode, it also adds close button on right side */\n @Input()\n @HostBinding('class.fd-calendar--mobile-landscape')\n mobileLandscape = false;\n\n /** Whether calendar is used inside mobile in portrait mode */\n @Input()\n @HostBinding('class.fd-calendar--mobile-portrait')\n mobilePortrait = false;\n\n /** The currently selected FdDates model start and end in range mode. */\n @Input()\n selectedRangeDate: DateRange<D>;\n\n /** Actually shown active view one of 'day' | 'month' | 'year' */\n @Input()\n activeView: FdCalendarView = 'day';\n\n /** The day of the week the calendar should start on. 1 represents Sunday, 2 is Monday, 3 is Tuesday, and so on. */\n @Input()\n startingDayOfWeek: DaysOfWeek;\n\n /** The type of calendar, 'single' for single date selection or 'range' for a range of dates. */\n @Input()\n calType: CalendarType = 'single';\n\n /** Id of the calendar. If none is provided, one will be generated. */\n @Input()\n id = 'fd-calendar-' + calendarUniqueId++;\n\n /**\n * Special days mark, it can be used by passing array of object with\n * Special day number, list 1-20 [class:`fd-calendar__item--legend-{{number}}`] is available there:\n * https://sap.github.io/fundamental-styles/components/calendar.html calendar special days section\n * Rule accepts method with D object as a parameter. ex:\n * `rule: (fdDate: D) => fdDate.getDay() === 1`, which will mark all sundays as special day.\n */\n @Input()\n specialDaysRules: SpecialDayRule<D>[] = [];\n\n /**\n * Object to customize year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n yearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 5\n };\n\n /**\n * Object to customize aggregated year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n aggregatedYearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 3\n };\n\n /**\n * Whether user wants to mark day cells on hover.\n * Works only on range mode, when start date is selected on Day View.\n */\n @Input()\n rangeHoverEffect = false;\n\n /** Event thrown every time active view is changed */\n @Output()\n readonly activeViewChange: EventEmitter<FdCalendarView> = new EventEmitter<FdCalendarView>();\n\n /** Event thrown every time selected date in single mode is changed */\n @Output()\n readonly selectedDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Event thrown every time selected first or last date in range mode is changed */\n @Output()\n readonly selectedRangeDateChange: EventEmitter<DateRange<D>> = new EventEmitter<DateRange<D>>();\n\n /** Event thrown every time when value is overwritten from outside and throw back isValid */\n @Output()\n readonly isValidDateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event thrown every time when calendar should be closed */\n @Output()\n readonly closeCalendar: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event thrown, when close button is clicked */\n @Output()\n readonly closeClicked: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden */\n @ViewChild(CalendarDayViewComponent)\n _dayViewComponent: CalendarDayViewComponent<D>;\n\n /** @hidden */\n @ViewChild(CalendarMonthViewComponent)\n _monthViewComponent: CalendarMonthViewComponent<D>;\n\n /** @hidden */\n @ViewChild(CalendarYearViewComponent)\n _yearViewComponent: CalendarYearViewComponent<D>;\n\n /** @hidden */\n @ViewChild(CalendarAggregatedYearViewComponent)\n _aggregatedYearViewComponent: CalendarAggregatedYearViewComponent<D>;\n\n /** @hidden */\n @ViewChild(CalendarHeaderComponent)\n _calendarHeaderComponent: CalendarHeaderComponent<D>;\n\n /**\n * Function used to disable previous button in the calendar header.\n * @param date selected date\n * @param currentlyDisplayedDate currently displayed date\n * @param activeView current view of calendar\n */\n @Input()\n previousButtonDisableFunction: NavigationButtonDisableFunction<D>;\n\n /**\n * Function used to disable next button in the calendar header.\n * @param date selected date\n * @param currentlyDisplayedDate currently displayed date\n * @param activeView current view of calendar\n */\n @Input()\n nextButtonDisableFunction: NavigationButtonDisableFunction<D>;\n\n /**\n * @hidden\n * Currently displayed days depending on month and year\n */\n _currentlyDisplayed: CalendarCurrent;\n\n /** @hidden */\n previousButtonDisabled: boolean;\n\n /** @hidden */\n nextButtonDisabled: boolean;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _adapterStartingDayOfWeek: DaysOfWeek;\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n _contentDensityObserver: ContentDensityObserver,\n // Use @Optional to avoid angular injection error message and throw our own which is more precise one\n @Optional() private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {\n if (!this._dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n if (!this._dateTimeFormats) {\n throw createMissingDateImplementationError('DATE_TIME_FORMATS');\n }\n _contentDensityObserver.subscribe();\n // set default value\n this._adapterStartingDayOfWeek = (this._dateTimeAdapter.getFirstDayOfWeek() + 1) as DaysOfWeek;\n this.selectedDate = this._dateTimeAdapter.today();\n this._changeDetectorRef.markForCheck();\n this._listenToLocaleChanges();\n }\n\n /** That allows to define function that should happen, when focus should normally escape of component */\n @Input()\n escapeFocusFunction: EscapeFocusFunction = (event?: KeyboardEvent): void => {\n event?.preventDefault();\n this._calendarHeaderComponent?.focus();\n };\n\n /**\n * Function used to disable certain dates in the calendar.\n * @param date date\n */\n @Input()\n disableFunction: DisableDateFunction<D> = () => false;\n\n /**\n * Function used to disable certain dates in the calendar for the range start selection.\n * @param date date\n */\n @Input()\n disableRangeStartFunction: DisableDateFunction<D> = () => false;\n\n /**\n * Function used to disable certain dates in the calendar for the range end selection.\n * @param date date\n */\n @Input()\n disableRangeEndFunction: DisableDateFunction<D> = () => false;\n\n /** @hidden */\n onChange: (_: D | DateRange<D>) => void = () => {};\n\n /** @hidden */\n onTouched: () => void = () => {};\n\n /** @hidden */\n ngOnInit(): void {\n this._prepareDisplayedView();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (\n 'nextButtonDisableFunction' in changes ||\n 'previousButtonDisableFunction' in changes ||\n '_currentlyDisplayed' in changes\n ) {\n this._setNavigationButtonsStates();\n }\n }\n\n /** @hidden */\n getWeekStartDay(): DaysOfWeek {\n return this.startingDayOfWeek === undefined ? this._adapterStartingDayOfWeek : this.startingDayOfWeek;\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /**\n * @hidden\n * Function that provides support for ControlValueAccessor that allows to use [(ngModel)] or forms.\n */\n writeValue(selected: DateRange<D> | D): void {\n let valid = true;\n\n if (this.calType === 'single') {\n selected = <D>selected;\n\n valid = this._dateTimeAdapter.isValid(selected);\n\n this.selectedDate = selected;\n }\n\n if (this.calType === 'range' && selected) {\n selected = <DateRange<D>>selected;\n\n if (!this._dateTimeAdapter.isValid(selected.start) || !this._dateTimeAdapter.isValid(selected.end)) {\n valid = false;\n }\n\n this.selectedRangeDate = {\n start: selected.start,\n end: selected.end\n };\n }\n\n if (valid) {\n this._prepareDisplayedView();\n }\n\n this._changeDetectorRef.detectChanges();\n\n this.isValidDateChange.emit(valid);\n }\n\n /**\n * @hidden\n * Function that implements Validator Interface, adds validation support for forms\n */\n validate(): { [key: string]: any } | null {\n return this.isModelValid()\n ? null\n : {\n dateValidation: {\n valid: false\n }\n };\n }\n\n /** @hidden */\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * Method that handle active view change and throws event.\n *\n * Fired by calendar header component.\n */\n handleActiveViewChange(activeView: FdCalendarView): void {\n if (activeView === this.activeView) {\n return;\n }\n\n this.activeView = activeView;\n\n this.activeViewChange.emit(activeView);\n\n if (activeView === 'month') {\n this.onMonthViewSelected();\n }\n if (activeView === 'year') {\n this.onYearViewSelected();\n }\n if (activeView === 'aggregatedYear') {\n this.onYearsRangeViewSelected();\n }\n\n this._setNavigationButtonsStates();\n }\n\n /**\n * @hidden\n * Method that is triggered by events from day view component, when there is selected single date changed\n */\n selectedDateChanged(date: D): void {\n this.selectedDate = date;\n this._setNavigationButtonsStates();\n this.onChange(date);\n this.selectedDateChange.emit(date);\n this.closeCalendar.emit();\n }\n\n /**\n * @hidden\n * Method that is triggered by events from day view component, when there is selected range date changed\n */\n selectedRangeDateChanged(dates: DateRange<D>): void {\n if (dates) {\n this.selectedRangeDate = { start: dates.start, end: dates.end };\n this.selectedRangeDateChange.emit(this.selectedRangeDate);\n this.onChange(this.selectedRangeDate);\n this.closeCalendar.emit();\n }\n }\n\n /** Function that handles next arrow icon click, depending on current view it changes month, year or list of years */\n handleNextArrowClick(): void {\n switch (this.activeView) {\n case 'day':\n this.displayNextMonth();\n break;\n case 'month':\n this.displayNextYear();\n break;\n case 'year':\n this.displayNextYearList();\n break;\n case 'aggregatedYear':\n this.displayNextYearsList();\n break;\n }\n this._setNavigationButtonsStates();\n }\n\n /** Function that handles previous arrow icon click, depending on current view it changes month, year or list of years */\n handlePreviousArrowClick(): void {\n switch (this.activeView) {\n case 'day':\n this.displayPreviousMonth();\n break;\n case 'month':\n this.displayPreviousYear();\n break;\n case 'year':\n this.displayPreviousYearList();\n break;\n case 'aggregatedYear':\n this.displayPreviousYearsList();\n break;\n }\n this._setNavigationButtonsStates();\n }\n\n /** Function that allows to switch actual view to next month */\n displayNextMonth(): void {\n if (this._currentlyDisplayed.month === 12) {\n this._currentlyDisplayed = { year: this._currentlyDisplayed.year + 1, month: 1 };\n } else {\n this._currentlyDisplayed = {\n year: this._currentlyDisplayed.year,\n month: this._currentlyDisplayed.month + 1\n };\n }\n }\n\n /** Function that allows to switch actual view to previous month */\n displayPreviousMonth(): void {\n if (this._currentlyDisplayed.month <= 1) {\n this._currentlyDisplayed = { year: this._currentlyDisplayed.year - 1, month: 12 };\n } else {\n this._currentlyDisplayed = {\n year: this._currentlyDisplayed.year,\n month: this._currentlyDisplayed.month - 1\n };\n }\n }\n\n /** Function that allows to switch actual view to next year */\n displayNextYear(): void {\n this._currentlyDisplayed = { month: this._currentlyDisplayed.month, year: this._currentlyDisplayed.year + 1 };\n }\n\n /** Function that allows to switch actual view to previous year */\n displayPreviousYear(): void {\n this._currentlyDisplayed = { month: this._currentlyDisplayed.month, year: this._currentlyDisplayed.year - 1 };\n }\n\n /** Function that allows to switch actually displayed list of year to next year list*/\n displayNextYearList(): void {\n this._yearViewComponent.loadNextYearList();\n this._currentlyDisplayed = {\n month: this._currentlyDisplayed.month,\n year: this._yearViewComponent._firstYearInList\n };\n }\n\n /** Function that allows to switch actually displayed list of year to previous year list*/\n displayPreviousYearList(): void {\n this._yearViewComponent.loadPreviousYearList();\n this._currentlyDisplayed = {\n month: this._currentlyDisplayed.month,\n year: this._yearViewComponent._firstYearInList\n };\n }\n\n /** Function that allows to switch actually displayed list of year to next year list*/\n displayNextYearsList(): void {\n this._aggregatedYearViewComponent.loadNextYearsList();\n }\n\n /** Function that allows to switch actually displayed list of year to previous year list*/\n displayPreviousYearsList(): void {\n this._aggregatedYearViewComponent.loadPreviousYearsList();\n }\n\n /**\n * Function that allows to change currently displayed month/year configuration,\n * which are connected to days displayed\n */\n setCurrentlyDisplayed(date: Nullable<D>): void {\n if (this._dateTimeAdapter.isValid(date)) {\n this._currentlyDisplayed = {\n month: this._dateTimeAdapter.getMonth(date!),\n year: this._dateTimeAdapter.getYear(date!)\n };\n }\n }\n\n /**\n * Set initial focus on one of the calendar's element\n */\n initialFocus(): void {\n this._getActiveFocusableView()?.setFocusOnCell();\n }\n\n /**\n * @hidden\n * Function that handles changes from month view child component, changes actual view and changes currently displayed month\n */\n handleMonthViewChange(month: number): void {\n this._currentlyDisplayed = { month, year: this._currentlyDisplayed.year };\n this.activeView = 'day';\n this.onDaysViewSelected();\n this.activeViewChange.emit(this.activeView);\n }\n\n /** Select year */\n selectedYear(yearSelected: number): void {\n this.activeView = 'day';\n this._currentlyDisplayed.year = yearSelected;\n this.onDaysViewSelected();\n }\n\n /** Select year range */\n selectedYears(yearsSelected: AggregatedYear): void {\n this.activeView = 'year';\n this._currentlyDisplayed = {\n ...this._currentlyDisplayed,\n year: yearsSelected.startYear\n };\n this.onYearViewSelected();\n }\n\n /** @hidden */\n onDaysViewSelected(): void {\n this._changeDetectorRef.detectChanges();\n this._dayViewComponent?.setFocusOnCell();\n }\n\n /** @hidden */\n onMonthViewSelected(): void {\n this._changeDetectorRef.detectChanges();\n this._monthViewComponent?.setFocusOnCell();\n }\n\n /** @hidden */\n onYearViewSelected(): void {\n this._changeDetectorRef.detectChanges();\n this._yearViewComponent?.setFocusOnCell();\n }\n\n /** @hidden */\n onYearsRangeViewSelected(): void {\n this._changeDetectorRef.detectChanges();\n this._aggregatedYearViewComponent?.setFocusOnCell();\n }\n\n /** Method that provides information if model selected date/dates have properly types and are valid */\n isModelValid(): boolean {\n if (this.calType === 'single') {\n return this._dateTimeAdapter.isValid(this.selectedDate);\n }\n if (this.calType === 'range') {\n return (\n this.selectedRangeDate &&\n this._dateTimeAdapter.isValid(this.selectedRangeDate.start) &&\n this._dateTimeAdapter.isValid(this.selectedRangeDate.end)\n );\n }\n return false;\n }\n\n /** @hidden */\n private _listenToLocaleChanges(): void {\n this._subscriptions.add(\n this._dateTimeAdapter.localeChanges.subscribe(() => {\n this._adapterStartingDayOfWeek = (this._dateTimeAdapter.getFirstDayOfWeek() + 1) as DaysOfWeek;\n this._changeDetectorRef.markForCheck();\n })\n );\n }\n\n /**\n * @hidden\n * Method that sets up the currently displayed variables, like shown month and year.\n * Day grid is based on currently displayed month and year\n */\n private _prepareDisplayedView(): void {\n if (this.calType === 'single' && this._dateTimeAdapter.isValid(this.selectedDate)) {\n this._currentlyDisplayed = {\n year: this._dateTimeAdapter.getYear(this.selectedDate),\n month: this._dateTimeAdapter.getMonth(this.selectedDate)\n };\n } else if (this.selectedRangeDate && this.selectedRangeDate.start) {\n this._currentlyDisplayed = {\n year: this._dateTimeAdapter.getYear(this.selectedRangeDate.start),\n month: this._dateTimeAdapter.getMonth(this.selectedRangeDate.start)\n };\n } else if (this.selectedRangeDate && this.selectedRangeDate.end) {\n this._currentlyDisplayed = {\n year: this._dateTimeAdapter.getYear(this.selectedRangeDate.end),\n month: this._dateTimeAdapter.getMonth(this.selectedRangeDate.end)\n };\n } else {\n const today = this._dateTimeAdapter.today();\n this._currentlyDisplayed = {\n year: this._dateTimeAdapter.getYear(today),\n month: this._dateTimeAdapter.getMonth(today)\n };\n }\n }\n\n /** @hidden */\n private _getActiveFocusableView(): FocusableCalendarView | null {\n switch (this.activeView) {\n case 'day':\n return this._dayViewComponent;\n case 'month':\n return this._monthViewComponent;\n case 'year':\n return this._yearViewComponent;\n case 'aggregatedYear':\n return this._aggregatedYearViewComponent;\n default:\n return null;\n }\n }\n\n /** @hidden */\n private _setNavigationButtonsStates(): void {\n this.previousButtonDisabled =\n typeof this.previousButtonDisableFunction === 'function' &&\n this.previousButtonDisableFunction(this.selectedDate, this._currentlyDisplayed, this.activeView);\n this.nextButtonDisabled =\n typeof this.nextButtonDisableFunction === 'function' &&\n this.nextButtonDisableFunction(this.selectedDate, this._currentlyDisplayed, this.activeView);\n this._changeDetectorRef.markForCheck();\n }\n\n /** @hidden */\n private _focusOut(event: FocusEvent): void {\n if (!this._elementRef.nativeElement.contains(event.relatedTarget)) {\n this.onTouched();\n }\n }\n}\n","<fd-calendar-header\n [currentlyDisplayed]=\"_currentlyDisplayed\"\n [activeView]=\"activeView\"\n [id]=\"id\"\n [calendarYearGrid]=\"yearGrid\"\n (closeClicked)=\"closeClicked.emit()\"\n (nextClicked)=\"handleNextArrowClick()\"\n (previousClicked)=\"handlePreviousArrowClick()\"\n [previousButtonDisabled]=\"previousButtonDisabled\"\n [nextButtonDisabled]=\"nextButtonDisabled\"\n (activeViewChange)=\"handleActiveViewChange($event)\"\n></fd-calendar-header>\n@if (_currentlyDisplayed) {\n @if (activeView === 'day') {\n <fd-calendar-day-view\n [selectedDate]=\"selectedDate\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [markWeekends]=\"markWeekends\"\n (selectedDateChange)=\"selectedDateChanged($event)\"\n [selectedRangeDate]=\"selectedRangeDate\"\n (selectedRangeDateChange)=\"selectedRangeDateChanged($event)\"\n [currentlyDisplayed]=\"_currentlyDisplayed\"\n [startingDayOfWeek]=\"getWeekStartDay()\"\n [disableFunction]=\"disableFunction\"\n [disableRangeEndFunction]=\"disableRangeEndFunction\"\n [disableRangeStartFunction]=\"disableRangeStartFunction\"\n [calType]=\"calType\"\n [id]=\"id\"\n [rangeHoverEffect]=\"rangeHoverEffect\"\n [specialDaysRules]=\"specialDaysRules\"\n [focusEscapeFunction]=\"escapeFocusFunction\"\n (nextMonthSelect)=\"displayNextMonth()\"\n (previousMonthSelect)=\"displayPreviousMonth()\"\n ></fd-calendar-day-view>\n } @else if (activeView === 'month') {\n <fd-calendar-month-view\n [monthSelected]=\"_currentlyDisplayed.month\"\n [year]=\"_currentlyDisplayed.year\"\n [id]=\"id\"\n [focusEscapeFunction]=\"escapeFocusFunction\"\n (monthClicked)=\"handleMonthViewChange($event)\"\n ></fd-calendar-month-view>\n } @else if (activeView === 'year') {\n <fd-calendar-year-view\n [yearSelected]=\"_currentlyDisplayed.year\"\n [yearViewGrid]=\"yearGrid\"\n [id]=\"id\"\n [focusEscapeFunction]=\"escapeFocusFunction\"\n (yearClicked)=\"selectedYear($event)\"\n >\n </fd-calendar-year-view>\n } @else if (activeView === 'aggregatedYear') {\n <fd-calendar-aggregated-year-view\n (yearsClicked)=\"selectedYears($event)\"\n [yearSelected]=\"_currentlyDisplayed.year\"\n [yearViewGrid]=\"yearGrid\"\n [aggregatedYearsViewGrid]=\"aggregatedYearGrid\"\n [id]=\"id\"\n [focusEscapeFunction]=\"escapeFocusFunction\"\n >\n </fd-calendar-aggregated-year-view>\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { CalendarCloseButtonDirective } from './calendar-directives';\nimport { CalendarHeaderComponent } from './calendar-header/calendar-header.component';\nimport { CalendarAggregatedYearViewComponent } from './calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component';\nimport { CalendarDayViewComponent } from './calendar-views/calendar-day-view/calendar-day-view.component';\nimport { CalendarMonthViewComponent } from './calendar-views/calendar-month-view/calendar-month-view.component';\nimport { CalendarYearViewComponent } from './calendar-views/calendar-year-view/calendar-year-view.component';\nimport { CalendarComponent } from './calendar.component';\n\n@NgModule({\n imports: [\n CalendarComponent,\n CalendarHeaderComponent,\n CalendarDayViewComponent,\n CalendarMonthViewComponent,\n CalendarYearViewComponent,\n CalendarAggregatedYearViewComponent,\n CalendarCloseButtonDirective\n ],\n exports: [\n CalendarComponent,\n CalendarDayViewComponent,\n CalendarHeaderComponent,\n CalendarYearViewComponent,\n CalendarMonthViewComponent,\n CalendarAggregatedYearViewComponent,\n CalendarCloseButtonDirective,\n ContentDensityModule\n ]\n})\nexport class CalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.CalendarService","CalendarActiveDayCellStrategy"],"mappings":"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"}