@clr/angular 17.13.0 → 18.0.0-beta.10

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 (1195) hide show
  1. package/README.md +1 -5
  2. package/fesm2022/clr-angular-accordion.mjs +355 -0
  3. package/fesm2022/clr-angular-accordion.mjs.map +1 -0
  4. package/fesm2022/clr-angular-button.mjs +713 -0
  5. package/fesm2022/clr-angular-button.mjs.map +1 -0
  6. package/fesm2022/clr-angular-collapsible-panel.mjs +201 -0
  7. package/fesm2022/clr-angular-collapsible-panel.mjs.map +1 -0
  8. package/fesm2022/clr-angular-data-datagrid.mjs +7593 -0
  9. package/fesm2022/clr-angular-data-datagrid.mjs.map +1 -0
  10. package/fesm2022/clr-angular-data-stack-view.mjs +442 -0
  11. package/fesm2022/clr-angular-data-stack-view.mjs.map +1 -0
  12. package/fesm2022/clr-angular-data-tree-view.mjs +1106 -0
  13. package/fesm2022/clr-angular-data-tree-view.mjs.map +1 -0
  14. package/fesm2022/clr-angular-data.mjs +40 -0
  15. package/fesm2022/clr-angular-data.mjs.map +1 -0
  16. package/fesm2022/clr-angular-emphasis-alert.mjs +624 -0
  17. package/fesm2022/clr-angular-emphasis-alert.mjs.map +1 -0
  18. package/fesm2022/clr-angular-emphasis-badge.mjs +69 -0
  19. package/fesm2022/clr-angular-emphasis-badge.mjs.map +1 -0
  20. package/fesm2022/clr-angular-emphasis-common.mjs +25 -0
  21. package/fesm2022/clr-angular-emphasis-common.mjs.map +1 -0
  22. package/fesm2022/clr-angular-emphasis-label.mjs +105 -0
  23. package/fesm2022/clr-angular-emphasis-label.mjs.map +1 -0
  24. package/fesm2022/clr-angular-emphasis.mjs +41 -0
  25. package/fesm2022/clr-angular-emphasis.mjs.map +1 -0
  26. package/fesm2022/clr-angular-forms-checkbox.mjs +270 -0
  27. package/fesm2022/clr-angular-forms-checkbox.mjs.map +1 -0
  28. package/fesm2022/clr-angular-forms-combobox.mjs +1775 -0
  29. package/fesm2022/clr-angular-forms-combobox.mjs.map +1 -0
  30. package/fesm2022/clr-angular-forms-common.mjs +1240 -0
  31. package/fesm2022/clr-angular-forms-common.mjs.map +1 -0
  32. package/fesm2022/clr-angular-forms-datalist.mjs +263 -0
  33. package/fesm2022/clr-angular-forms-datalist.mjs.map +1 -0
  34. package/fesm2022/clr-angular-forms-datepicker.mjs +3222 -0
  35. package/fesm2022/clr-angular-forms-datepicker.mjs.map +1 -0
  36. package/fesm2022/clr-angular-forms-file-input.mjs +826 -0
  37. package/fesm2022/clr-angular-forms-file-input.mjs.map +1 -0
  38. package/fesm2022/clr-angular-forms-input.mjs +153 -0
  39. package/fesm2022/clr-angular-forms-input.mjs.map +1 -0
  40. package/fesm2022/clr-angular-forms-number-input.mjs +237 -0
  41. package/fesm2022/clr-angular-forms-number-input.mjs.map +1 -0
  42. package/fesm2022/clr-angular-forms-password.mjs +233 -0
  43. package/fesm2022/clr-angular-forms-password.mjs.map +1 -0
  44. package/fesm2022/clr-angular-forms-radio.mjs +231 -0
  45. package/fesm2022/clr-angular-forms-radio.mjs.map +1 -0
  46. package/fesm2022/clr-angular-forms-range.mjs +186 -0
  47. package/fesm2022/clr-angular-forms-range.mjs.map +1 -0
  48. package/fesm2022/clr-angular-forms-select.mjs +153 -0
  49. package/fesm2022/clr-angular-forms-select.mjs.map +1 -0
  50. package/fesm2022/clr-angular-forms-textarea.mjs +136 -0
  51. package/fesm2022/clr-angular-forms-textarea.mjs.map +1 -0
  52. package/fesm2022/clr-angular-forms.mjs +100 -0
  53. package/fesm2022/clr-angular-forms.mjs.map +1 -0
  54. package/fesm2022/clr-angular-icon.mjs +7397 -0
  55. package/fesm2022/clr-angular-icon.mjs.map +1 -0
  56. package/fesm2022/clr-angular-layout-breadcrumbs.mjs +120 -0
  57. package/fesm2022/clr-angular-layout-breadcrumbs.mjs.map +1 -0
  58. package/fesm2022/clr-angular-layout-main-container.mjs +100 -0
  59. package/fesm2022/clr-angular-layout-main-container.mjs.map +1 -0
  60. package/fesm2022/clr-angular-layout-nav.mjs +582 -0
  61. package/fesm2022/clr-angular-layout-nav.mjs.map +1 -0
  62. package/fesm2022/clr-angular-layout-tabs.mjs +807 -0
  63. package/fesm2022/clr-angular-layout-tabs.mjs.map +1 -0
  64. package/fesm2022/clr-angular-layout-vertical-nav.mjs +507 -0
  65. package/fesm2022/clr-angular-layout-vertical-nav.mjs.map +1 -0
  66. package/fesm2022/clr-angular-layout.mjs +44 -0
  67. package/fesm2022/clr-angular-layout.mjs.map +1 -0
  68. package/fesm2022/clr-angular-modal.mjs +617 -0
  69. package/fesm2022/clr-angular-modal.mjs.map +1 -0
  70. package/fesm2022/clr-angular-popover-common.mjs +1093 -0
  71. package/fesm2022/clr-angular-popover-common.mjs.map +1 -0
  72. package/fesm2022/clr-angular-popover-dropdown.mjs +492 -0
  73. package/fesm2022/clr-angular-popover-dropdown.mjs.map +1 -0
  74. package/fesm2022/clr-angular-popover-signpost.mjs +493 -0
  75. package/fesm2022/clr-angular-popover-signpost.mjs.map +1 -0
  76. package/fesm2022/clr-angular-popover-tooltip.mjs +293 -0
  77. package/fesm2022/clr-angular-popover-tooltip.mjs.map +1 -0
  78. package/fesm2022/clr-angular-popover.mjs +41 -0
  79. package/fesm2022/clr-angular-popover.mjs.map +1 -0
  80. package/fesm2022/clr-angular-progress-progress-bars.mjs +217 -0
  81. package/fesm2022/clr-angular-progress-progress-bars.mjs.map +1 -0
  82. package/fesm2022/clr-angular-progress-spinner.mjs +132 -0
  83. package/fesm2022/clr-angular-progress-spinner.mjs.map +1 -0
  84. package/fesm2022/clr-angular-stepper.mjs +688 -0
  85. package/fesm2022/clr-angular-stepper.mjs.map +1 -0
  86. package/fesm2022/clr-angular-timeline.mjs +316 -0
  87. package/fesm2022/clr-angular-timeline.mjs.map +1 -0
  88. package/fesm2022/clr-angular-utils-conditional.mjs +351 -0
  89. package/fesm2022/clr-angular-utils-conditional.mjs.map +1 -0
  90. package/fesm2022/clr-angular-utils-loading.mjs +107 -0
  91. package/fesm2022/clr-angular-utils-loading.mjs.map +1 -0
  92. package/fesm2022/clr-angular-utils.mjs +2079 -0
  93. package/fesm2022/clr-angular-utils.mjs.map +1 -0
  94. package/fesm2022/clr-angular-wizard.mjs +3074 -0
  95. package/fesm2022/clr-angular-wizard.mjs.map +1 -0
  96. package/fesm2022/clr-angular.mjs +125 -0
  97. package/fesm2022/clr-angular.mjs.map +1 -0
  98. package/package.json +202 -18
  99. package/popover/common/README.md +112 -0
  100. package/schematics/collection.json +14 -0
  101. package/schematics/ng-update/index.d.ts +2 -0
  102. package/schematics/ng-update/index.js +69 -0
  103. package/schematics/ng-update/index.js.map +1 -0
  104. package/schematics/ng-update/migrations/css-migration.d.ts +6 -0
  105. package/schematics/ng-update/migrations/css-migration.js +177 -0
  106. package/schematics/ng-update/migrations/css-migration.js.map +1 -0
  107. package/schematics/ng-update/migrations/import-migration.d.ts +4 -0
  108. package/schematics/ng-update/migrations/import-migration.js +187 -0
  109. package/schematics/ng-update/migrations/import-migration.js.map +1 -0
  110. package/schematics/ng-update/migrations/template-migration.d.ts +6 -0
  111. package/schematics/ng-update/migrations/template-migration.js +261 -0
  112. package/schematics/ng-update/migrations/template-migration.js.map +1 -0
  113. package/schematics/ng-update/replacements/css-replacements.d.ts +17 -0
  114. package/schematics/ng-update/replacements/css-replacements.js +74 -0
  115. package/schematics/ng-update/replacements/css-replacements.js.map +1 -0
  116. package/schematics/ng-update/replacements/import-replacements.d.ts +13 -0
  117. package/schematics/ng-update/replacements/import-replacements.js +108 -0
  118. package/schematics/ng-update/replacements/import-replacements.js.map +1 -0
  119. package/schematics/ng-update/replacements/symbol-replacements.d.ts +12 -0
  120. package/schematics/ng-update/replacements/symbol-replacements.js +67 -0
  121. package/schematics/ng-update/replacements/symbol-replacements.js.map +1 -0
  122. package/schematics/ng-update/replacements/template-replacements.d.ts +19 -0
  123. package/schematics/ng-update/replacements/template-replacements.js +57 -0
  124. package/schematics/ng-update/replacements/template-replacements.js.map +1 -0
  125. package/schematics/ng-update/tests/test-helpers.d.ts +6 -0
  126. package/schematics/ng-update/tests/test-helpers.js +34 -0
  127. package/schematics/ng-update/tests/test-helpers.js.map +1 -0
  128. package/schematics/ng-update/utils/file-visitor.d.ts +8 -0
  129. package/schematics/ng-update/utils/file-visitor.js +44 -0
  130. package/schematics/ng-update/utils/file-visitor.js.map +1 -0
  131. package/schematics/ng-update/utils/regexp-utils.d.ts +16 -0
  132. package/schematics/ng-update/utils/regexp-utils.js +34 -0
  133. package/schematics/ng-update/utils/regexp-utils.js.map +1 -0
  134. package/schematics/vitest.config.d.ts +2 -0
  135. package/schematics/vitest.config.js +17 -0
  136. package/schematics/vitest.config.js.map +1 -0
  137. package/types/clr-angular-accordion.d.ts +100 -0
  138. package/types/clr-angular-button.d.ts +169 -0
  139. package/types/clr-angular-collapsible-panel.d.ts +73 -0
  140. package/types/clr-angular-data-datagrid.d.ts +1840 -0
  141. package/types/clr-angular-data-stack-view.d.ts +87 -0
  142. package/types/clr-angular-data-tree-view.d.ts +229 -0
  143. package/types/clr-angular-data.d.ts +15 -0
  144. package/types/clr-angular-emphasis-alert.d.ts +175 -0
  145. package/types/clr-angular-emphasis-badge.d.ts +25 -0
  146. package/types/clr-angular-emphasis-common.d.ts +6 -0
  147. package/types/clr-angular-emphasis-label.d.ts +29 -0
  148. package/types/clr-angular-emphasis.d.ts +15 -0
  149. package/types/clr-angular-forms-checkbox.d.ts +69 -0
  150. package/types/clr-angular-forms-combobox.d.ts +353 -0
  151. package/types/clr-angular-forms-common.d.ts +336 -0
  152. package/types/clr-angular-forms-datalist.d.ts +59 -0
  153. package/types/clr-angular-forms-datepicker.d.ts +958 -0
  154. package/types/clr-angular-forms-file-input.d.ts +193 -0
  155. package/types/clr-angular-forms-input.d.ts +29 -0
  156. package/types/clr-angular-forms-number-input.d.ts +43 -0
  157. package/types/clr-angular-forms-password.d.ts +52 -0
  158. package/types/clr-angular-forms-radio.d.ts +50 -0
  159. package/types/clr-angular-forms-range.d.ts +37 -0
  160. package/types/clr-angular-forms-select.d.ts +36 -0
  161. package/types/clr-angular-forms-textarea.d.ts +29 -0
  162. package/types/clr-angular-forms.d.ts +36 -0
  163. package/types/clr-angular-icon.d.ts +1498 -0
  164. package/types/clr-angular-layout-breadcrumbs.d.ts +45 -0
  165. package/types/clr-angular-layout-main-container.d.ts +28 -0
  166. package/types/clr-angular-layout-nav.d.ts +142 -0
  167. package/types/clr-angular-layout-tabs.d.ts +158 -0
  168. package/types/clr-angular-layout-vertical-nav.d.ts +128 -0
  169. package/types/clr-angular-layout.d.ts +19 -0
  170. package/types/clr-angular-modal.d.ts +160 -0
  171. package/types/clr-angular-popover-common.d.ts +255 -0
  172. package/types/clr-angular-popover-dropdown.d.ts +123 -0
  173. package/types/clr-angular-popover-signpost.d.ts +157 -0
  174. package/types/clr-angular-popover-tooltip.d.ts +83 -0
  175. package/types/clr-angular-popover.d.ts +16 -0
  176. package/types/clr-angular-progress-progress-bars.d.ts +57 -0
  177. package/types/clr-angular-progress-spinner.d.ts +44 -0
  178. package/types/clr-angular-stepper.d.ts +179 -0
  179. package/types/clr-angular-timeline.d.ts +86 -0
  180. package/types/clr-angular-utils-conditional.d.ts +132 -0
  181. package/types/clr-angular-utils-loading.d.ts +38 -0
  182. package/types/clr-angular-utils.d.ts +913 -0
  183. package/types/clr-angular-wizard.d.ts +1508 -0
  184. package/types/clr-angular.d.ts +41 -0
  185. package/accordion/accordion-content.d.ts +0 -5
  186. package/accordion/accordion-description.d.ts +0 -5
  187. package/accordion/accordion-panel.d.ts +0 -45
  188. package/accordion/accordion-title.d.ts +0 -5
  189. package/accordion/accordion.d.ts +0 -20
  190. package/accordion/accordion.module.d.ts +0 -16
  191. package/accordion/chocolate/accordion-oompa-loompa.d.ts +0 -12
  192. package/accordion/chocolate/accordion-willy-wonka.d.ts +0 -6
  193. package/accordion/enums/accordion-status.enum.d.ts +0 -5
  194. package/accordion/enums/accordion-strategy.enum.d.ts +0 -4
  195. package/accordion/index.d.ts +0 -10
  196. package/accordion/models/accordion.model.d.ts +0 -27
  197. package/accordion/providers/accordion.service.d.ts +0 -17
  198. package/accordion/stepper/chocolate/stepper-oompa-loompa.d.ts +0 -12
  199. package/accordion/stepper/chocolate/stepper-willy-wonka.d.ts +0 -6
  200. package/accordion/stepper/index.d.ts +0 -4
  201. package/accordion/stepper/models/stepper.model.d.ts +0 -29
  202. package/accordion/stepper/providers/stepper.service.d.ts +0 -23
  203. package/accordion/stepper/step-button.d.ts +0 -21
  204. package/accordion/stepper/stepper-panel.d.ts +0 -28
  205. package/accordion/stepper/stepper.d.ts +0 -26
  206. package/accordion/stepper/stepper.module.d.ts +0 -14
  207. package/accordion/utils/animation.d.ts +0 -2
  208. package/button/button-group/button-group.d.ts +0 -60
  209. package/button/button-group/button-group.module.d.ts +0 -13
  210. package/button/button-group/button.d.ts +0 -40
  211. package/button/button-group/index.d.ts +0 -3
  212. package/button/button-loading/index.d.ts +0 -2
  213. package/button/button-loading/loading-button.d.ts +0 -17
  214. package/button/button-loading/loading-button.module.d.ts +0 -10
  215. package/button/button.module.d.ts +0 -9
  216. package/button/index.d.ts +0 -3
  217. package/button/providers/button-group-focus-handler.service.d.ts +0 -32
  218. package/button/providers/button-group-focus.enum.d.ts +0 -4
  219. package/button/providers/button-in-group.service.d.ts +0 -10
  220. package/clr-angular.module.d.ts +0 -25
  221. package/data/data.module.d.ts +0 -9
  222. package/data/datagrid/built-in/comparators/datagrid-property-comparator.d.ts +0 -7
  223. package/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.d.ts +0 -37
  224. package/data/datagrid/built-in/filters/datagrid-numeric-filter.d.ts +0 -58
  225. package/data/datagrid/built-in/filters/datagrid-property-numeric-filter.d.ts +0 -8
  226. package/data/datagrid/built-in/filters/datagrid-property-string-filter.d.ts +0 -8
  227. package/data/datagrid/built-in/filters/datagrid-string-filter-impl.d.ts +0 -39
  228. package/data/datagrid/built-in/filters/datagrid-string-filter.d.ts +0 -60
  229. package/data/datagrid/built-in/nested-property.d.ts +0 -10
  230. package/data/datagrid/chocolate/actionable-oompa-loompa.d.ts +0 -12
  231. package/data/datagrid/chocolate/datagrid-willy-wonka.d.ts +0 -6
  232. package/data/datagrid/chocolate/expandable-oompa-loompa.d.ts +0 -12
  233. package/data/datagrid/datagrid-action-bar.d.ts +0 -5
  234. package/data/datagrid/datagrid-action-overflow.d.ts +0 -28
  235. package/data/datagrid/datagrid-cell.d.ts +0 -21
  236. package/data/datagrid/datagrid-column-separator.d.ts +0 -36
  237. package/data/datagrid/datagrid-column-toggle-button.d.ts +0 -16
  238. package/data/datagrid/datagrid-column-toggle-trackby.d.ts +0 -6
  239. package/data/datagrid/datagrid-column-toggle.d.ts +0 -30
  240. package/data/datagrid/datagrid-column.d.ts +0 -92
  241. package/data/datagrid/datagrid-detail-body.d.ts +0 -5
  242. package/data/datagrid/datagrid-detail-header.d.ts +0 -14
  243. package/data/datagrid/datagrid-detail-registerer.d.ts +0 -9
  244. package/data/datagrid/datagrid-detail.d.ts +0 -17
  245. package/data/datagrid/datagrid-filter.d.ts +0 -40
  246. package/data/datagrid/datagrid-footer.d.ts +0 -17
  247. package/data/datagrid/datagrid-hideable-column.d.ts +0 -41
  248. package/data/datagrid/datagrid-if-detail.d.ts +0 -28
  249. package/data/datagrid/datagrid-if-expanded.service.d.ts +0 -18
  250. package/data/datagrid/datagrid-items.d.ts +0 -28
  251. package/data/datagrid/datagrid-page-size.d.ts +0 -13
  252. package/data/datagrid/datagrid-pagination.d.ts +0 -73
  253. package/data/datagrid/datagrid-placeholder.d.ts +0 -12
  254. package/data/datagrid/datagrid-row-detail.d.ts +0 -34
  255. package/data/datagrid/datagrid-row.d.ts +0 -109
  256. package/data/datagrid/datagrid-selection-cell.directive.d.ts +0 -9
  257. package/data/datagrid/datagrid-single-selection.directive.d.ts +0 -21
  258. package/data/datagrid/datagrid-virtual-scroll.directive.d.ts +0 -80
  259. package/data/datagrid/datagrid.d.ts +0 -149
  260. package/data/datagrid/datagrid.module.d.ts +0 -60
  261. package/data/datagrid/enums/column-changes.enum.d.ts +0 -6
  262. package/data/datagrid/enums/display-mode.enum.d.ts +0 -4
  263. package/data/datagrid/enums/render-step.enum.d.ts +0 -7
  264. package/data/datagrid/enums/selection-type.d.ts +0 -5
  265. package/data/datagrid/enums/sort-order.enum.d.ts +0 -12
  266. package/data/datagrid/index.d.ts +0 -50
  267. package/data/datagrid/interfaces/column-state.interface.d.ts +0 -14
  268. package/data/datagrid/interfaces/comparator.interface.d.ts +0 -3
  269. package/data/datagrid/interfaces/filter.interface.d.ts +0 -8
  270. package/data/datagrid/interfaces/key-nav-grid-strategy.interface.d.ts +0 -11
  271. package/data/datagrid/interfaces/numeric-filter.interface.d.ts +0 -3
  272. package/data/datagrid/interfaces/state.interface.d.ts +0 -14
  273. package/data/datagrid/interfaces/string-filter.interface.d.ts +0 -3
  274. package/data/datagrid/interfaces/virtual-scroll-data-range.interface.d.ts +0 -5
  275. package/data/datagrid/providers/column-resizer.service.d.ts +0 -22
  276. package/data/datagrid/providers/column-state.provider.d.ts +0 -9
  277. package/data/datagrid/providers/columns.service.d.ts +0 -18
  278. package/data/datagrid/providers/custom-filter.d.ts +0 -2
  279. package/data/datagrid/providers/detail.service.d.ts +0 -28
  280. package/data/datagrid/providers/display-mode.service.d.ts +0 -14
  281. package/data/datagrid/providers/filters.d.ts +0 -44
  282. package/data/datagrid/providers/global-expandable-rows.d.ts +0 -16
  283. package/data/datagrid/providers/items.d.ts +0 -84
  284. package/data/datagrid/providers/page.d.ts +0 -62
  285. package/data/datagrid/providers/row-action-service.d.ts +0 -12
  286. package/data/datagrid/providers/selection.d.ts +0 -105
  287. package/data/datagrid/providers/sort.d.ts +0 -44
  288. package/data/datagrid/providers/state-debouncer.provider.d.ts +0 -14
  289. package/data/datagrid/providers/state.provider.d.ts +0 -24
  290. package/data/datagrid/providers/table-size.service.d.ts +0 -17
  291. package/data/datagrid/render/cell-renderer.d.ts +0 -18
  292. package/data/datagrid/render/constants.d.ts +0 -4
  293. package/data/datagrid/render/header-renderer.d.ts +0 -34
  294. package/data/datagrid/render/main-renderer.d.ts +0 -71
  295. package/data/datagrid/render/noop-dom-adapter.d.ts +0 -13
  296. package/data/datagrid/render/render-organizer.d.ts +0 -12
  297. package/data/datagrid/render/row-detail-renderer.d.ts +0 -11
  298. package/data/datagrid/render/row-renderer.d.ts +0 -17
  299. package/data/datagrid/utils/datagrid-filter-registrar.d.ts +0 -18
  300. package/data/datagrid/utils/key-navigation-grid.controller.d.ts +0 -32
  301. package/data/datagrid/utils/key-navigation-strategies/default.d.ts +0 -15
  302. package/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.d.ts +0 -12
  303. package/data/datagrid/utils/key-navigation-strategies/expanded-row.d.ts +0 -12
  304. package/data/datagrid/utils/key-navigation-utils.d.ts +0 -24
  305. package/data/datagrid/wrapped-cell.d.ts +0 -10
  306. package/data/datagrid/wrapped-column.d.ts +0 -10
  307. package/data/datagrid/wrapped-row.d.ts +0 -10
  308. package/data/index.d.ts +0 -4
  309. package/data/stack-view/index.d.ts +0 -6
  310. package/data/stack-view/stack-block.d.ts +0 -37
  311. package/data/stack-view/stack-content-input.d.ts +0 -6
  312. package/data/stack-view/stack-header.d.ts +0 -8
  313. package/data/stack-view/stack-view-custom-tags.d.ts +0 -15
  314. package/data/stack-view/stack-view.d.ts +0 -5
  315. package/data/stack-view/stack-view.module.d.ts +0 -18
  316. package/data/tree-view/index.d.ts +0 -6
  317. package/data/tree-view/models/async-array.d.ts +0 -3
  318. package/data/tree-view/models/declarative-tree-node.model.d.ts +0 -9
  319. package/data/tree-view/models/recursive-tree-node.model.d.ts +0 -18
  320. package/data/tree-view/models/selected-state.enum.d.ts +0 -5
  321. package/data/tree-view/models/tree-node.model.d.ts +0 -23
  322. package/data/tree-view/recursive-children.d.ts +0 -22
  323. package/data/tree-view/recursive-for-of.d.ts +0 -22
  324. package/data/tree-view/tree-features.service.d.ts +0 -22
  325. package/data/tree-view/tree-focus-manager.service.d.ts +0 -32
  326. package/data/tree-view/tree-node-link.d.ts +0 -10
  327. package/data/tree-view/tree-node.d.ts +0 -59
  328. package/data/tree-view/tree-view.module.d.ts +0 -17
  329. package/data/tree-view/tree.d.ts +0 -22
  330. package/emphasis/alert/alert-item.d.ts +0 -8
  331. package/emphasis/alert/alert-text.d.ts +0 -9
  332. package/emphasis/alert/alert.d.ts +0 -40
  333. package/emphasis/alert/alert.module.d.ts +0 -18
  334. package/emphasis/alert/alerts-pager.d.ts +0 -31
  335. package/emphasis/alert/alerts.d.ts +0 -32
  336. package/emphasis/alert/index.d.ts +0 -6
  337. package/emphasis/alert/providers/icon-and-types.service.d.ts +0 -18
  338. package/emphasis/alert/providers/multi-alert.service.d.ts +0 -28
  339. package/emphasis/alert/utils/alert-info-object.d.ts +0 -5
  340. package/emphasis/alert/utils/alert-types.d.ts +0 -1
  341. package/emphasis/emphasis.module.d.ts +0 -7
  342. package/emphasis/index.d.ts +0 -2
  343. package/esm2020/accordion/accordion-content.mjs +0 -21
  344. package/esm2020/accordion/accordion-description.mjs +0 -22
  345. package/esm2020/accordion/accordion-panel.mjs +0 -141
  346. package/esm2020/accordion/accordion-title.mjs +0 -22
  347. package/esm2020/accordion/accordion.mjs +0 -62
  348. package/esm2020/accordion/accordion.module.mjs +0 -56
  349. package/esm2020/accordion/chocolate/accordion-oompa-loompa.mjs +0 -34
  350. package/esm2020/accordion/chocolate/accordion-willy-wonka.mjs +0 -20
  351. package/esm2020/accordion/enums/accordion-status.enum.mjs +0 -13
  352. package/esm2020/accordion/enums/accordion-strategy.enum.mjs +0 -12
  353. package/esm2020/accordion/index.mjs +0 -17
  354. package/esm2020/accordion/models/accordion.model.mjs +0 -61
  355. package/esm2020/accordion/providers/accordion.service.mjs +0 -48
  356. package/esm2020/accordion/stepper/chocolate/stepper-oompa-loompa.mjs +0 -34
  357. package/esm2020/accordion/stepper/chocolate/stepper-willy-wonka.mjs +0 -20
  358. package/esm2020/accordion/stepper/index.mjs +0 -11
  359. package/esm2020/accordion/stepper/models/stepper.model.mjs +0 -146
  360. package/esm2020/accordion/stepper/providers/stepper.service.mjs +0 -75
  361. package/esm2020/accordion/stepper/step-button.mjs +0 -62
  362. package/esm2020/accordion/stepper/stepper-panel.mjs +0 -96
  363. package/esm2020/accordion/stepper/stepper.mjs +0 -105
  364. package/esm2020/accordion/stepper/stepper.module.mjs +0 -31
  365. package/esm2020/accordion/utils/animation.mjs +0 -31
  366. package/esm2020/button/button-group/button-group.mjs +0 -164
  367. package/esm2020/button/button-group/button-group.module.mjs +0 -28
  368. package/esm2020/button/button-group/button.mjs +0 -175
  369. package/esm2020/button/button-group/index.mjs +0 -10
  370. package/esm2020/button/button-loading/index.mjs +0 -9
  371. package/esm2020/button/button-loading/loading-button.mjs +0 -164
  372. package/esm2020/button/button-loading/loading-button.module.mjs +0 -25
  373. package/esm2020/button/button.module.mjs +0 -26
  374. package/esm2020/button/index.mjs +0 -10
  375. package/esm2020/button/providers/button-group-focus-handler.service.mjs +0 -97
  376. package/esm2020/button/providers/button-group-focus.enum.mjs +0 -12
  377. package/esm2020/button/providers/button-in-group.service.mjs +0 -26
  378. package/esm2020/clr-angular.mjs +0 -5
  379. package/esm2020/clr-angular.module.mjs +0 -93
  380. package/esm2020/data/data.module.mjs +0 -23
  381. package/esm2020/data/datagrid/built-in/comparators/datagrid-property-comparator.mjs +0 -46
  382. package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.mjs +0 -93
  383. package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +0 -259
  384. package/esm2020/data/datagrid/built-in/filters/datagrid-property-numeric-filter.mjs +0 -28
  385. package/esm2020/data/datagrid/built-in/filters/datagrid-property-string-filter.mjs +0 -27
  386. package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter-impl.mjs +0 -82
  387. package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +0 -185
  388. package/esm2020/data/datagrid/built-in/nested-property.mjs +0 -38
  389. package/esm2020/data/datagrid/chocolate/actionable-oompa-loompa.mjs +0 -34
  390. package/esm2020/data/datagrid/chocolate/datagrid-willy-wonka.mjs +0 -20
  391. package/esm2020/data/datagrid/chocolate/expandable-oompa-loompa.mjs +0 -34
  392. package/esm2020/data/datagrid/datagrid-action-bar.mjs +0 -21
  393. package/esm2020/data/datagrid/datagrid-action-overflow.mjs +0 -166
  394. package/esm2020/data/datagrid/datagrid-cell.mjs +0 -40
  395. package/esm2020/data/datagrid/datagrid-column-separator.mjs +0 -171
  396. package/esm2020/data/datagrid/datagrid-column-toggle-button.mjs +0 -65
  397. package/esm2020/data/datagrid/datagrid-column-toggle-trackby.mjs +0 -8
  398. package/esm2020/data/datagrid/datagrid-column-toggle.mjs +0 -204
  399. package/esm2020/data/datagrid/datagrid-column.mjs +0 -420
  400. package/esm2020/data/datagrid/datagrid-detail-body.mjs +0 -31
  401. package/esm2020/data/datagrid/datagrid-detail-header.mjs +0 -67
  402. package/esm2020/data/datagrid/datagrid-detail-registerer.mjs +0 -37
  403. package/esm2020/data/datagrid/datagrid-detail.mjs +0 -98
  404. package/esm2020/data/datagrid/datagrid-filter.mjs +0 -186
  405. package/esm2020/data/datagrid/datagrid-footer.mjs +0 -78
  406. package/esm2020/data/datagrid/datagrid-hideable-column.mjs +0 -106
  407. package/esm2020/data/datagrid/datagrid-if-detail.mjs +0 -96
  408. package/esm2020/data/datagrid/datagrid-if-expanded.service.mjs +0 -55
  409. package/esm2020/data/datagrid/datagrid-items.mjs +0 -72
  410. package/esm2020/data/datagrid/datagrid-page-size.mjs +0 -63
  411. package/esm2020/data/datagrid/datagrid-pagination.mjs +0 -388
  412. package/esm2020/data/datagrid/datagrid-placeholder.mjs +0 -42
  413. package/esm2020/data/datagrid/datagrid-row-detail.mjs +0 -116
  414. package/esm2020/data/datagrid/datagrid-row.mjs +0 -372
  415. package/esm2020/data/datagrid/datagrid-selection-cell.directive.mjs +0 -37
  416. package/esm2020/data/datagrid/datagrid-single-selection.directive.mjs +0 -74
  417. package/esm2020/data/datagrid/datagrid-virtual-scroll.directive.mjs +0 -340
  418. package/esm2020/data/datagrid/datagrid.mjs +0 -556
  419. package/esm2020/data/datagrid/datagrid.module.mjs +0 -238
  420. package/esm2020/data/datagrid/enums/column-changes.enum.mjs +0 -16
  421. package/esm2020/data/datagrid/enums/display-mode.enum.mjs +0 -12
  422. package/esm2020/data/datagrid/enums/render-step.enum.mjs +0 -15
  423. package/esm2020/data/datagrid/enums/selection-type.mjs +0 -13
  424. package/esm2020/data/datagrid/enums/sort-order.enum.mjs +0 -20
  425. package/esm2020/data/datagrid/index.mjs +0 -56
  426. package/esm2020/data/datagrid/interfaces/column-state.interface.mjs +0 -8
  427. package/esm2020/data/datagrid/interfaces/comparator.interface.mjs +0 -8
  428. package/esm2020/data/datagrid/interfaces/filter.interface.mjs +0 -8
  429. package/esm2020/data/datagrid/interfaces/key-nav-grid-strategy.interface.mjs +0 -8
  430. package/esm2020/data/datagrid/interfaces/numeric-filter.interface.mjs +0 -8
  431. package/esm2020/data/datagrid/interfaces/state.interface.mjs +0 -8
  432. package/esm2020/data/datagrid/interfaces/string-filter.interface.mjs +0 -8
  433. package/esm2020/data/datagrid/interfaces/virtual-scroll-data-range.interface.mjs +0 -8
  434. package/esm2020/data/datagrid/providers/column-resizer.service.mjs +0 -58
  435. package/esm2020/data/datagrid/providers/column-state.provider.mjs +0 -19
  436. package/esm2020/data/datagrid/providers/columns.service.mjs +0 -63
  437. package/esm2020/data/datagrid/providers/custom-filter.mjs +0 -9
  438. package/esm2020/data/datagrid/providers/detail.service.mjs +0 -76
  439. package/esm2020/data/datagrid/providers/display-mode.service.mjs +0 -36
  440. package/esm2020/data/datagrid/providers/filters.mjs +0 -112
  441. package/esm2020/data/datagrid/providers/global-expandable-rows.mjs +0 -34
  442. package/esm2020/data/datagrid/providers/items.mjs +0 -177
  443. package/esm2020/data/datagrid/providers/page.mjs +0 -156
  444. package/esm2020/data/datagrid/providers/row-action-service.mjs +0 -31
  445. package/esm2020/data/datagrid/providers/selection.mjs +0 -365
  446. package/esm2020/data/datagrid/providers/sort.mjs +0 -86
  447. package/esm2020/data/datagrid/providers/state-debouncer.provider.mjs +0 -43
  448. package/esm2020/data/datagrid/providers/state.provider.mjs +0 -75
  449. package/esm2020/data/datagrid/providers/table-size.service.mjs +0 -45
  450. package/esm2020/data/datagrid/render/cell-renderer.mjs +0 -59
  451. package/esm2020/data/datagrid/render/constants.mjs +0 -13
  452. package/esm2020/data/datagrid/render/header-renderer.mjs +0 -117
  453. package/esm2020/data/datagrid/render/main-renderer.mjs +0 -285
  454. package/esm2020/data/datagrid/render/noop-dom-adapter.mjs +0 -48
  455. package/esm2020/data/datagrid/render/render-organizer.mjs +0 -39
  456. package/esm2020/data/datagrid/render/row-detail-renderer.mjs +0 -31
  457. package/esm2020/data/datagrid/render/row-renderer.mjs +0 -62
  458. package/esm2020/data/datagrid/utils/datagrid-filter-registrar.mjs +0 -43
  459. package/esm2020/data/datagrid/utils/key-navigation-grid.controller.mjs +0 -155
  460. package/esm2020/data/datagrid/utils/key-navigation-strategies/default.mjs +0 -132
  461. package/esm2020/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.mjs +0 -129
  462. package/esm2020/data/datagrid/utils/key-navigation-strategies/expanded-row.mjs +0 -165
  463. package/esm2020/data/datagrid/utils/key-navigation-utils.mjs +0 -121
  464. package/esm2020/data/datagrid/wrapped-cell.mjs +0 -37
  465. package/esm2020/data/datagrid/wrapped-column.mjs +0 -38
  466. package/esm2020/data/datagrid/wrapped-row.mjs +0 -38
  467. package/esm2020/data/index.mjs +0 -11
  468. package/esm2020/data/stack-view/index.mjs +0 -13
  469. package/esm2020/data/stack-view/stack-block.mjs +0 -236
  470. package/esm2020/data/stack-view/stack-content-input.mjs +0 -27
  471. package/esm2020/data/stack-view/stack-header.mjs +0 -37
  472. package/esm2020/data/stack-view/stack-view-custom-tags.mjs +0 -57
  473. package/esm2020/data/stack-view/stack-view.mjs +0 -23
  474. package/esm2020/data/stack-view/stack-view.module.mjs +0 -53
  475. package/esm2020/data/tree-view/index.mjs +0 -13
  476. package/esm2020/data/tree-view/models/async-array.mjs +0 -11
  477. package/esm2020/data/tree-view/models/declarative-tree-node.model.mjs +0 -37
  478. package/esm2020/data/tree-view/models/recursive-tree-node.model.mjs +0 -77
  479. package/esm2020/data/tree-view/models/selected-state.enum.mjs +0 -17
  480. package/esm2020/data/tree-view/models/tree-node.model.mjs +0 -116
  481. package/esm2020/data/tree-view/recursive-children.mjs +0 -88
  482. package/esm2020/data/tree-view/recursive-for-of.mjs +0 -57
  483. package/esm2020/data/tree-view/tree-features.service.mjs +0 -38
  484. package/esm2020/data/tree-view/tree-focus-manager.service.mjs +0 -190
  485. package/esm2020/data/tree-view/tree-node-link.mjs +0 -30
  486. package/esm2020/data/tree-view/tree-node.mjs +0 -348
  487. package/esm2020/data/tree-view/tree-view.module.mjs +0 -35
  488. package/esm2020/data/tree-view/tree.mjs +0 -102
  489. package/esm2020/emphasis/alert/alert-item.mjs +0 -52
  490. package/esm2020/emphasis/alert/alert-text.mjs +0 -23
  491. package/esm2020/emphasis/alert/alert.mjs +0 -142
  492. package/esm2020/emphasis/alert/alert.module.mjs +0 -36
  493. package/esm2020/emphasis/alert/alerts-pager.mjs +0 -87
  494. package/esm2020/emphasis/alert/alerts.mjs +0 -102
  495. package/esm2020/emphasis/alert/index.mjs +0 -13
  496. package/esm2020/emphasis/alert/providers/icon-and-types.service.mjs +0 -90
  497. package/esm2020/emphasis/alert/providers/multi-alert.service.mjs +0 -97
  498. package/esm2020/emphasis/alert/utils/alert-info-object.mjs +0 -8
  499. package/esm2020/emphasis/alert/utils/alert-types.mjs +0 -9
  500. package/esm2020/emphasis/emphasis.module.mjs +0 -21
  501. package/esm2020/emphasis/index.mjs +0 -9
  502. package/esm2020/forms/checkbox/checkbox-container.mjs +0 -136
  503. package/esm2020/forms/checkbox/checkbox-wrapper.mjs +0 -70
  504. package/esm2020/forms/checkbox/checkbox.mjs +0 -53
  505. package/esm2020/forms/checkbox/checkbox.module.mjs +0 -33
  506. package/esm2020/forms/checkbox/index.mjs +0 -11
  507. package/esm2020/forms/combobox/combobox-container.mjs +0 -106
  508. package/esm2020/forms/combobox/combobox.mjs +0 -360
  509. package/esm2020/forms/combobox/combobox.module.mjs +0 -97
  510. package/esm2020/forms/combobox/index.mjs +0 -15
  511. package/esm2020/forms/combobox/model/combobox.model.mjs +0 -9
  512. package/esm2020/forms/combobox/model/multi-select-combobox.model.mjs +0 -82
  513. package/esm2020/forms/combobox/model/pseudo-focus.model.mjs +0 -24
  514. package/esm2020/forms/combobox/model/single-select-combobox.model.mjs +0 -39
  515. package/esm2020/forms/combobox/option-group.mjs +0 -42
  516. package/esm2020/forms/combobox/option-items.directive.mjs +0 -110
  517. package/esm2020/forms/combobox/option-selected.directive.mjs +0 -25
  518. package/esm2020/forms/combobox/option.mjs +0 -103
  519. package/esm2020/forms/combobox/options.mjs +0 -156
  520. package/esm2020/forms/combobox/providers/combobox-container.service.mjs +0 -19
  521. package/esm2020/forms/combobox/providers/combobox-focus-handler.service.mjs +0 -222
  522. package/esm2020/forms/combobox/providers/option-selection.service.mjs +0 -85
  523. package/esm2020/forms/common/abstract-container.mjs +0 -135
  524. package/esm2020/forms/common/abstract-control.mjs +0 -51
  525. package/esm2020/forms/common/common.module.mjs +0 -78
  526. package/esm2020/forms/common/control-container.mjs +0 -84
  527. package/esm2020/forms/common/control.mjs +0 -31
  528. package/esm2020/forms/common/error.mjs +0 -38
  529. package/esm2020/forms/common/form.mjs +0 -54
  530. package/esm2020/forms/common/helper.mjs +0 -37
  531. package/esm2020/forms/common/if-control-state/abstract-if-state.mjs +0 -46
  532. package/esm2020/forms/common/if-control-state/if-control-state.service.mjs +0 -57
  533. package/esm2020/forms/common/if-control-state/if-error.mjs +0 -75
  534. package/esm2020/forms/common/if-control-state/if-success.mjs +0 -48
  535. package/esm2020/forms/common/index.mjs +0 -21
  536. package/esm2020/forms/common/label.mjs +0 -102
  537. package/esm2020/forms/common/layout.mjs +0 -32
  538. package/esm2020/forms/common/providers/container-id.service.mjs +0 -39
  539. package/esm2020/forms/common/providers/control-class.service.mjs +0 -53
  540. package/esm2020/forms/common/providers/control-id.service.mjs +0 -32
  541. package/esm2020/forms/common/providers/focus.service.mjs +0 -26
  542. package/esm2020/forms/common/providers/layout.service.mjs +0 -58
  543. package/esm2020/forms/common/providers/mark-control.service.mjs +0 -26
  544. package/esm2020/forms/common/providers/ng-control.service.mjs +0 -53
  545. package/esm2020/forms/common/success.mjs +0 -38
  546. package/esm2020/forms/common/wrapped-control.mjs +0 -191
  547. package/esm2020/forms/datalist/datalist-container.mjs +0 -121
  548. package/esm2020/forms/datalist/datalist-input.mjs +0 -63
  549. package/esm2020/forms/datalist/datalist.mjs +0 -49
  550. package/esm2020/forms/datalist/datalist.module.mjs +0 -32
  551. package/esm2020/forms/datalist/index.mjs +0 -11
  552. package/esm2020/forms/datalist/providers/datalist-id.service.mjs +0 -32
  553. package/esm2020/forms/datepicker/calendar.mjs +0 -175
  554. package/esm2020/forms/datepicker/date-container.mjs +0 -365
  555. package/esm2020/forms/datepicker/date-end-input.mjs +0 -60
  556. package/esm2020/forms/datepicker/date-input.mjs +0 -294
  557. package/esm2020/forms/datepicker/date-input.validator.mjs +0 -100
  558. package/esm2020/forms/datepicker/date-single-input.mjs +0 -63
  559. package/esm2020/forms/datepicker/date-start-input.mjs +0 -61
  560. package/esm2020/forms/datepicker/datepicker-action-buttons.mjs +0 -59
  561. package/esm2020/forms/datepicker/datepicker-view-manager.mjs +0 -74
  562. package/esm2020/forms/datepicker/datepicker.module.mjs +0 -111
  563. package/esm2020/forms/datepicker/day.mjs +0 -145
  564. package/esm2020/forms/datepicker/daypicker.mjs +0 -81
  565. package/esm2020/forms/datepicker/index.mjs +0 -21
  566. package/esm2020/forms/datepicker/interfaces/date-range.interface.mjs +0 -8
  567. package/esm2020/forms/datepicker/interfaces/day-of-week.interface.mjs +0 -8
  568. package/esm2020/forms/datepicker/model/calendar-view.model.mjs +0 -182
  569. package/esm2020/forms/datepicker/model/calendar.model.mjs +0 -79
  570. package/esm2020/forms/datepicker/model/day-view.model.mjs +0 -25
  571. package/esm2020/forms/datepicker/model/day.model.mjs +0 -72
  572. package/esm2020/forms/datepicker/model/year-range.model.mjs +0 -61
  573. package/esm2020/forms/datepicker/monthpicker.mjs +0 -325
  574. package/esm2020/forms/datepicker/providers/date-form-control.service.mjs +0 -37
  575. package/esm2020/forms/datepicker/providers/date-io.service.mjs +0 -195
  576. package/esm2020/forms/datepicker/providers/date-navigation.service.mjs +0 -195
  577. package/esm2020/forms/datepicker/providers/datepicker-enabled.service.mjs +0 -47
  578. package/esm2020/forms/datepicker/providers/datepicker-focus.service.mjs +0 -48
  579. package/esm2020/forms/datepicker/providers/locale-helper.service.mjs +0 -102
  580. package/esm2020/forms/datepicker/providers/view-manager.service.mjs +0 -42
  581. package/esm2020/forms/datepicker/utils/constants.mjs +0 -38
  582. package/esm2020/forms/datepicker/utils/date-utils.mjs +0 -50
  583. package/esm2020/forms/datepicker/yearpicker.mjs +0 -304
  584. package/esm2020/forms/file-input/file-input-container.mjs +0 -245
  585. package/esm2020/forms/file-input/file-input-validator-errors.mjs +0 -8
  586. package/esm2020/forms/file-input/file-input-validator.mjs +0 -101
  587. package/esm2020/forms/file-input/file-input-value-accessor.mjs +0 -56
  588. package/esm2020/forms/file-input/file-input.helpers.mjs +0 -22
  589. package/esm2020/forms/file-input/file-input.mjs +0 -71
  590. package/esm2020/forms/file-input/file-input.module.mjs +0 -74
  591. package/esm2020/forms/file-input/file-list.mjs +0 -160
  592. package/esm2020/forms/file-input/file-messages-template.mjs +0 -26
  593. package/esm2020/forms/file-input/file-messages.mjs +0 -61
  594. package/esm2020/forms/file-input/index.mjs +0 -16
  595. package/esm2020/forms/forms.module.mjs +0 -73
  596. package/esm2020/forms/index.mjs +0 -21
  597. package/esm2020/forms/input/index.mjs +0 -10
  598. package/esm2020/forms/input/input-container.mjs +0 -92
  599. package/esm2020/forms/input/input.mjs +0 -40
  600. package/esm2020/forms/input/input.module.mjs +0 -33
  601. package/esm2020/forms/number-input/index.mjs +0 -10
  602. package/esm2020/forms/number-input/number-input-container.mjs +0 -148
  603. package/esm2020/forms/number-input/number-input.mjs +0 -79
  604. package/esm2020/forms/number-input/number-input.module.mjs +0 -32
  605. package/esm2020/forms/password/index.mjs +0 -10
  606. package/esm2020/forms/password/password-container.mjs +0 -180
  607. package/esm2020/forms/password/password.mjs +0 -64
  608. package/esm2020/forms/password/password.module.mjs +0 -32
  609. package/esm2020/forms/radio/index.mjs +0 -11
  610. package/esm2020/forms/radio/radio-container.mjs +0 -150
  611. package/esm2020/forms/radio/radio-wrapper.mjs +0 -44
  612. package/esm2020/forms/radio/radio.mjs +0 -29
  613. package/esm2020/forms/radio/radio.module.mjs +0 -33
  614. package/esm2020/forms/range/index.mjs +0 -10
  615. package/esm2020/forms/range/range-container.mjs +0 -137
  616. package/esm2020/forms/range/range.mjs +0 -30
  617. package/esm2020/forms/range/range.module.mjs +0 -32
  618. package/esm2020/forms/select/index.mjs +0 -10
  619. package/esm2020/forms/select/select-container.mjs +0 -114
  620. package/esm2020/forms/select/select.mjs +0 -31
  621. package/esm2020/forms/select/select.module.mjs +0 -32
  622. package/esm2020/forms/textarea/index.mjs +0 -10
  623. package/esm2020/forms/textarea/textarea-container.mjs +0 -84
  624. package/esm2020/forms/textarea/textarea.mjs +0 -31
  625. package/esm2020/forms/textarea/textarea.module.mjs +0 -32
  626. package/esm2020/icon/icon.mjs +0 -29
  627. package/esm2020/icon/icon.module.mjs +0 -25
  628. package/esm2020/icon/index.mjs +0 -9
  629. package/esm2020/index.mjs +0 -23
  630. package/esm2020/layout/breadcrumbs/breadcrumb-item.mjs +0 -24
  631. package/esm2020/layout/breadcrumbs/breadcrumbs.constants.mjs +0 -8
  632. package/esm2020/layout/breadcrumbs/breadcrumbs.mjs +0 -46
  633. package/esm2020/layout/breadcrumbs/breadcrumbs.module.mjs +0 -28
  634. package/esm2020/layout/breadcrumbs/index.mjs +0 -11
  635. package/esm2020/layout/breadcrumbs/model/breadcrumbs.model.mjs +0 -8
  636. package/esm2020/layout/index.mjs +0 -13
  637. package/esm2020/layout/layout.module.mjs +0 -25
  638. package/esm2020/layout/main-container/index.mjs +0 -9
  639. package/esm2020/layout/main-container/main-container.mjs +0 -62
  640. package/esm2020/layout/main-container/main-container.module.mjs +0 -26
  641. package/esm2020/layout/nav/aria-current-link.mjs +0 -32
  642. package/esm2020/layout/nav/chocolate/index.mjs +0 -9
  643. package/esm2020/layout/nav/chocolate/main-container-willy-wonka.mjs +0 -20
  644. package/esm2020/layout/nav/chocolate/nav-detection-oompa-loompa.mjs +0 -36
  645. package/esm2020/layout/nav/header.mjs +0 -154
  646. package/esm2020/layout/nav/index.mjs +0 -12
  647. package/esm2020/layout/nav/nav-level.mjs +0 -197
  648. package/esm2020/layout/nav/navigation.module.mjs +0 -45
  649. package/esm2020/layout/nav/providers/responsive-navigation.service.mjs +0 -61
  650. package/esm2020/layout/nav/responsive-nav-codes.mjs +0 -21
  651. package/esm2020/layout/nav/responsive-nav-control-message.mjs +0 -19
  652. package/esm2020/layout/tabs/chocolate/active-oompa-loompa.mjs +0 -39
  653. package/esm2020/layout/tabs/chocolate/tabs-willy-wonka.mjs +0 -20
  654. package/esm2020/layout/tabs/enums/tabs-layout.enum.mjs +0 -12
  655. package/esm2020/layout/tabs/index.mjs +0 -17
  656. package/esm2020/layout/tabs/providers/tabs.service.mjs +0 -46
  657. package/esm2020/layout/tabs/tab-action.directive.mjs +0 -22
  658. package/esm2020/layout/tabs/tab-content.mjs +0 -87
  659. package/esm2020/layout/tabs/tab-link.directive.mjs +0 -105
  660. package/esm2020/layout/tabs/tab-overflow-content.mjs +0 -23
  661. package/esm2020/layout/tabs/tab.mjs +0 -47
  662. package/esm2020/layout/tabs/tabs-actions.mjs +0 -39
  663. package/esm2020/layout/tabs/tabs-id.provider.mjs +0 -17
  664. package/esm2020/layout/tabs/tabs.mjs +0 -327
  665. package/esm2020/layout/tabs/tabs.module.mjs +0 -67
  666. package/esm2020/layout/vertical-nav/index.mjs +0 -13
  667. package/esm2020/layout/vertical-nav/providers/vertical-nav-group-registration.service.mjs +0 -25
  668. package/esm2020/layout/vertical-nav/providers/vertical-nav-group.service.mjs +0 -26
  669. package/esm2020/layout/vertical-nav/providers/vertical-nav-icon.service.mjs +0 -28
  670. package/esm2020/layout/vertical-nav/providers/vertical-nav.service.mjs +0 -55
  671. package/esm2020/layout/vertical-nav/vertical-nav-group-children.mjs +0 -20
  672. package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +0 -162
  673. package/esm2020/layout/vertical-nav/vertical-nav-icon.mjs +0 -28
  674. package/esm2020/layout/vertical-nav/vertical-nav-link.mjs +0 -57
  675. package/esm2020/layout/vertical-nav/vertical-nav.mjs +0 -85
  676. package/esm2020/layout/vertical-nav/vertical-nav.module.mjs +0 -50
  677. package/esm2020/modal/index.mjs +0 -14
  678. package/esm2020/modal/modal-body.mjs +0 -65
  679. package/esm2020/modal/modal-configuration.service.mjs +0 -21
  680. package/esm2020/modal/modal-host.component.mjs +0 -29
  681. package/esm2020/modal/modal-stack.service.mjs +0 -53
  682. package/esm2020/modal/modal.mjs +0 -185
  683. package/esm2020/modal/modal.module.mjs +0 -33
  684. package/esm2020/modal/side-panel.mjs +0 -227
  685. package/esm2020/modal/side-panel.module.mjs +0 -28
  686. package/esm2020/popover/common/abstract-popover.mjs +0 -138
  687. package/esm2020/popover/common/popover-host-anchor.token.mjs +0 -9
  688. package/esm2020/popover/common/popover-options.interface.mjs +0 -8
  689. package/esm2020/popover/common/popover.mjs +0 -267
  690. package/esm2020/popover/dropdown/dropdown-item.mjs +0 -105
  691. package/esm2020/popover/dropdown/dropdown-menu.mjs +0 -115
  692. package/esm2020/popover/dropdown/dropdown-trigger.mjs +0 -51
  693. package/esm2020/popover/dropdown/dropdown.mjs +0 -53
  694. package/esm2020/popover/dropdown/dropdown.module.mjs +0 -30
  695. package/esm2020/popover/dropdown/index.mjs +0 -13
  696. package/esm2020/popover/dropdown/menu-positions.mjs +0 -17
  697. package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +0 -186
  698. package/esm2020/popover/dropdown/providers/dropdown.service.mjs +0 -34
  699. package/esm2020/popover/index.mjs +0 -11
  700. package/esm2020/popover/popover.module.mjs +0 -23
  701. package/esm2020/popover/signpost/index.mjs +0 -12
  702. package/esm2020/popover/signpost/providers/signpost-focus-manager.service.mjs +0 -24
  703. package/esm2020/popover/signpost/providers/signpost-id.service.mjs +0 -26
  704. package/esm2020/popover/signpost/signpost-content.mjs +0 -179
  705. package/esm2020/popover/signpost/signpost-positions.mjs +0 -23
  706. package/esm2020/popover/signpost/signpost-title.mjs +0 -21
  707. package/esm2020/popover/signpost/signpost-trigger.mjs +0 -90
  708. package/esm2020/popover/signpost/signpost.mjs +0 -94
  709. package/esm2020/popover/signpost/signpost.module.mjs +0 -46
  710. package/esm2020/popover/tooltip/index.mjs +0 -11
  711. package/esm2020/popover/tooltip/providers/tooltip-id.service.mjs +0 -26
  712. package/esm2020/popover/tooltip/providers/tooltip-mouse.service.mjs +0 -44
  713. package/esm2020/popover/tooltip/tooltip-content.mjs +0 -135
  714. package/esm2020/popover/tooltip/tooltip-trigger.mjs +0 -62
  715. package/esm2020/popover/tooltip/tooltip.mjs +0 -29
  716. package/esm2020/popover/tooltip/tooltip.module.mjs +0 -29
  717. package/esm2020/progress/progress-bars/index.mjs +0 -9
  718. package/esm2020/progress/progress-bars/progress-bar.mjs +0 -177
  719. package/esm2020/progress/progress-bars/progress-bar.module.mjs +0 -25
  720. package/esm2020/progress/spinner/index.mjs +0 -9
  721. package/esm2020/progress/spinner/spinner.mjs +0 -95
  722. package/esm2020/progress/spinner/spinner.module.mjs +0 -25
  723. package/esm2020/timeline/enums/timeline-layout.enum.mjs +0 -12
  724. package/esm2020/timeline/enums/timeline-step-state.enum.mjs +0 -15
  725. package/esm2020/timeline/index.mjs +0 -15
  726. package/esm2020/timeline/interface/icon-attribute.interface.mjs +0 -8
  727. package/esm2020/timeline/providers/timeline-icon-attribute.service.mjs +0 -55
  728. package/esm2020/timeline/timeline-step-description.mjs +0 -21
  729. package/esm2020/timeline/timeline-step-header.mjs +0 -21
  730. package/esm2020/timeline/timeline-step-title.mjs +0 -31
  731. package/esm2020/timeline/timeline-step.mjs +0 -97
  732. package/esm2020/timeline/timeline.mjs +0 -36
  733. package/esm2020/timeline/timeline.module.mjs +0 -49
  734. package/esm2020/utils/animations/collapse/collapse.mjs +0 -17
  735. package/esm2020/utils/animations/collapse/index.mjs +0 -8
  736. package/esm2020/utils/animations/constants.mjs +0 -14
  737. package/esm2020/utils/animations/expandable-animation/base-expandable-animation.mjs +0 -46
  738. package/esm2020/utils/animations/expandable-animation/expandable-animation.directive.mjs +0 -56
  739. package/esm2020/utils/animations/expandable-animation/expandable-animation.mjs +0 -49
  740. package/esm2020/utils/animations/expandable-animation/expandable-animation.module.mjs +0 -26
  741. package/esm2020/utils/animations/expandable-animation/index.mjs +0 -12
  742. package/esm2020/utils/animations/fade/fade.mjs +0 -15
  743. package/esm2020/utils/animations/fade/index.mjs +0 -8
  744. package/esm2020/utils/animations/fade-slide/fade-slide.mjs +0 -31
  745. package/esm2020/utils/animations/fade-slide/index.mjs +0 -8
  746. package/esm2020/utils/animations/index.mjs +0 -12
  747. package/esm2020/utils/animations/slide/index.mjs +0 -8
  748. package/esm2020/utils/animations/slide/slide.mjs +0 -31
  749. package/esm2020/utils/assert/assert.helpers.mjs +0 -10
  750. package/esm2020/utils/breakpoints/breakpoints.mjs +0 -24
  751. package/esm2020/utils/cdk/cdk-drag.module.mjs +0 -58
  752. package/esm2020/utils/cdk/cdk-trap-focus.module.mjs +0 -53
  753. package/esm2020/utils/chocolate/oompa-loompa.mjs +0 -33
  754. package/esm2020/utils/chocolate/willy-wonka.mjs +0 -37
  755. package/esm2020/utils/component/is-boolean-attribute-set.mjs +0 -19
  756. package/esm2020/utils/conditional/conditional.module.mjs +0 -27
  757. package/esm2020/utils/conditional/if-active.directive.mjs +0 -98
  758. package/esm2020/utils/conditional/if-active.service.mjs +0 -71
  759. package/esm2020/utils/conditional/if-expanded.directive.mjs +0 -96
  760. package/esm2020/utils/conditional/if-expanded.service.mjs +0 -60
  761. package/esm2020/utils/conditional/if-open.directive.mjs +0 -81
  762. package/esm2020/utils/conditional/index.mjs +0 -11
  763. package/esm2020/utils/destroy/destroy.service.mjs +0 -45
  764. package/esm2020/utils/destroy/index.mjs +0 -8
  765. package/esm2020/utils/dom-adapter/dom-adapter.mjs +0 -62
  766. package/esm2020/utils/enums/keys.enum.mjs +0 -33
  767. package/esm2020/utils/focus/arrow-key-direction.enum.mjs +0 -14
  768. package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.mjs +0 -90
  769. package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.module.mjs +0 -27
  770. package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.provider.mjs +0 -15
  771. package/esm2020/utils/focus/focus-on-view-init/index.mjs +0 -10
  772. package/esm2020/utils/focus/focus-trap/index.mjs +0 -8
  773. package/esm2020/utils/focus/focus-trap/standalone-cdk-trap-focus.directive.mjs +0 -35
  774. package/esm2020/utils/focus/focus.service.mjs +0 -95
  775. package/esm2020/utils/focus/focusable-item/basic-focusable-item.service.mjs +0 -55
  776. package/esm2020/utils/focus/focusable-item/custom-focusable-item-provider.mjs +0 -17
  777. package/esm2020/utils/focus/focusable-item/focusable-item.mjs +0 -9
  778. package/esm2020/utils/focus/focusable-item/linkers.mjs +0 -35
  779. package/esm2020/utils/focus/key-focus/enums/focus-direction.enum.mjs +0 -13
  780. package/esm2020/utils/focus/key-focus/index.mjs +0 -9
  781. package/esm2020/utils/focus/key-focus/interfaces.mjs +0 -8
  782. package/esm2020/utils/focus/key-focus/key-focus-item.mjs +0 -35
  783. package/esm2020/utils/focus/key-focus/key-focus.mjs +0 -199
  784. package/esm2020/utils/focus/key-focus/key-focus.module.mjs +0 -27
  785. package/esm2020/utils/focus/key-focus/roving-tabindex.mjs +0 -103
  786. package/esm2020/utils/focus/key-focus/util.mjs +0 -45
  787. package/esm2020/utils/focus/wrap-observable.mjs +0 -20
  788. package/esm2020/utils/forms/validation.mjs +0 -21
  789. package/esm2020/utils/host-wrapping/empty-anchor.mjs +0 -19
  790. package/esm2020/utils/host-wrapping/host-wrapper.mjs +0 -42
  791. package/esm2020/utils/host-wrapping/host-wrapping.module.mjs +0 -25
  792. package/esm2020/utils/i18n/common-strings.default.mjs +0 -137
  793. package/esm2020/utils/i18n/common-strings.interface.mjs +0 -8
  794. package/esm2020/utils/i18n/common-strings.service.mjs +0 -48
  795. package/esm2020/utils/i18n/index.mjs +0 -10
  796. package/esm2020/utils/id-generator/id-generator.service.mjs +0 -11
  797. package/esm2020/utils/index.mjs +0 -15
  798. package/esm2020/utils/loading/index.mjs +0 -10
  799. package/esm2020/utils/loading/loading-listener.mjs +0 -13
  800. package/esm2020/utils/loading/loading.mjs +0 -58
  801. package/esm2020/utils/loading/loading.module.mjs +0 -25
  802. package/esm2020/utils/outside-click/index.mjs +0 -10
  803. package/esm2020/utils/outside-click/outside-click.mjs +0 -49
  804. package/esm2020/utils/outside-click/outside-click.module.mjs +0 -25
  805. package/esm2020/utils/popover/enums/alignment.enum.mjs +0 -13
  806. package/esm2020/utils/popover/enums/axis.enum.mjs +0 -12
  807. package/esm2020/utils/popover/enums/positions.enum.mjs +0 -60
  808. package/esm2020/utils/popover/enums/side.enum.mjs +0 -12
  809. package/esm2020/utils/popover/enums/viewport-violation.enum.mjs +0 -14
  810. package/esm2020/utils/popover/index.mjs +0 -21
  811. package/esm2020/utils/popover/interfaces/popover-content-offset.interface.mjs +0 -8
  812. package/esm2020/utils/popover/interfaces/popover-position.interface.mjs +0 -8
  813. package/esm2020/utils/popover/interfaces/visibility-coords.interface.mjs +0 -8
  814. package/esm2020/utils/popover/popover-anchor.mjs +0 -26
  815. package/esm2020/utils/popover/popover-close-button.mjs +0 -52
  816. package/esm2020/utils/popover/popover-content.mjs +0 -161
  817. package/esm2020/utils/popover/popover-host.directive.mjs +0 -37
  818. package/esm2020/utils/popover/popover-open-close-button.mjs +0 -43
  819. package/esm2020/utils/popover/popover.module.mjs +0 -26
  820. package/esm2020/utils/popover/position-operators.mjs +0 -180
  821. package/esm2020/utils/popover/providers/popover-events.service.mjs +0 -142
  822. package/esm2020/utils/popover/providers/popover-position.service.mjs +0 -230
  823. package/esm2020/utils/popover/providers/popover-toggle.service.mjs +0 -75
  824. package/esm2020/utils/popover/stop-escape-propagation.directive.mjs +0 -43
  825. package/esm2020/utils/scrolling/scrolling-service.mjs +0 -31
  826. package/esm2020/utils/template-ref/index.mjs +0 -10
  827. package/esm2020/utils/template-ref/template-ref-container.mjs +0 -30
  828. package/esm2020/utils/template-ref/template-ref.module.mjs +0 -25
  829. package/esm2020/wizard/heading-level.mjs +0 -8
  830. package/esm2020/wizard/index.mjs +0 -20
  831. package/esm2020/wizard/providers/button-hub.service.mjs +0 -64
  832. package/esm2020/wizard/providers/header-actions.service.mjs +0 -36
  833. package/esm2020/wizard/providers/page-collection.service.mjs +0 -360
  834. package/esm2020/wizard/providers/wizard-navigation.service.mjs +0 -575
  835. package/esm2020/wizard/wizard-button.mjs +0 -188
  836. package/esm2020/wizard/wizard-header-action.mjs +0 -77
  837. package/esm2020/wizard/wizard-page-buttons.mjs +0 -22
  838. package/esm2020/wizard/wizard-page-header-actions.mjs +0 -22
  839. package/esm2020/wizard/wizard-page-navtitle.mjs +0 -22
  840. package/esm2020/wizard/wizard-page-title.mjs +0 -25
  841. package/esm2020/wizard/wizard-page.mjs +0 -652
  842. package/esm2020/wizard/wizard-stepnav-item.mjs +0 -204
  843. package/esm2020/wizard/wizard-stepnav.mjs +0 -55
  844. package/esm2020/wizard/wizard-title.mjs +0 -22
  845. package/esm2020/wizard/wizard.mjs +0 -535
  846. package/esm2020/wizard/wizard.module.mjs +0 -73
  847. package/fesm2015/clr-angular.mjs +0 -31534
  848. package/fesm2015/clr-angular.mjs.map +0 -1
  849. package/fesm2020/clr-angular.mjs +0 -31350
  850. package/fesm2020/clr-angular.mjs.map +0 -1
  851. package/forms/checkbox/checkbox-container.d.ts +0 -25
  852. package/forms/checkbox/checkbox-wrapper.d.ts +0 -22
  853. package/forms/checkbox/checkbox.d.ts +0 -20
  854. package/forms/checkbox/checkbox.module.d.ts +0 -14
  855. package/forms/checkbox/index.d.ts +0 -4
  856. package/forms/combobox/combobox-container.d.ts +0 -18
  857. package/forms/combobox/combobox.d.ts +0 -87
  858. package/forms/combobox/combobox.module.d.ts +0 -22
  859. package/forms/combobox/index.d.ts +0 -8
  860. package/forms/combobox/model/combobox.model.d.ts +0 -9
  861. package/forms/combobox/model/multi-select-combobox.model.d.ts +0 -12
  862. package/forms/combobox/model/pseudo-focus.model.d.ts +0 -7
  863. package/forms/combobox/model/single-select-combobox.model.d.ts +0 -10
  864. package/forms/combobox/option-group.d.ts +0 -9
  865. package/forms/combobox/option-items.directive.d.ts +0 -28
  866. package/forms/combobox/option-selected.directive.d.ts +0 -13
  867. package/forms/combobox/option.d.ts +0 -25
  868. package/forms/combobox/options.d.ts +0 -36
  869. package/forms/combobox/providers/combobox-container.service.d.ts +0 -7
  870. package/forms/combobox/providers/combobox-focus-handler.service.d.ts +0 -48
  871. package/forms/combobox/providers/option-selection.service.d.ts +0 -24
  872. package/forms/common/abstract-container.d.ts +0 -47
  873. package/forms/common/abstract-control.d.ts +0 -18
  874. package/forms/common/common.module.d.ts +0 -19
  875. package/forms/common/control-container.d.ts +0 -6
  876. package/forms/common/control.d.ts +0 -11
  877. package/forms/common/error.d.ts +0 -12
  878. package/forms/common/form.d.ts +0 -16
  879. package/forms/common/helper.d.ts +0 -12
  880. package/forms/common/if-control-state/abstract-if-state.d.ts +0 -18
  881. package/forms/common/if-control-state/if-control-state.service.d.ts +0 -17
  882. package/forms/common/if-control-state/if-error.d.ts +0 -19
  883. package/forms/common/if-control-state/if-success.d.ts +0 -16
  884. package/forms/common/index.d.ts +0 -14
  885. package/forms/common/label.d.ts +0 -32
  886. package/forms/common/layout.d.ts +0 -11
  887. package/forms/common/providers/container-id.service.d.ts +0 -18
  888. package/forms/common/providers/control-class.service.d.ts +0 -13
  889. package/forms/common/providers/control-id.service.d.ts +0 -11
  890. package/forms/common/providers/focus.service.d.ts +0 -9
  891. package/forms/common/providers/layout.service.d.ts +0 -23
  892. package/forms/common/providers/mark-control.service.d.ts +0 -9
  893. package/forms/common/providers/ng-control.service.d.ts +0 -27
  894. package/forms/common/success.d.ts +0 -12
  895. package/forms/common/wrapped-control.d.ts +0 -46
  896. package/forms/datalist/datalist-container.d.ts +0 -14
  897. package/forms/datalist/datalist-input.d.ts +0 -18
  898. package/forms/datalist/datalist.d.ts +0 -14
  899. package/forms/datalist/datalist.module.d.ts +0 -13
  900. package/forms/datalist/index.d.ts +0 -4
  901. package/forms/datalist/providers/datalist-id.service.d.ts +0 -11
  902. package/forms/datepicker/calendar.d.ts +0 -65
  903. package/forms/datepicker/date-container.d.ts +0 -72
  904. package/forms/datepicker/date-end-input.d.ts +0 -15
  905. package/forms/datepicker/date-input.d.ts +0 -67
  906. package/forms/datepicker/date-input.validator.d.ts +0 -27
  907. package/forms/datepicker/date-single-input.d.ts +0 -15
  908. package/forms/datepicker/date-start-input.d.ts +0 -15
  909. package/forms/datepicker/datepicker-action-buttons.d.ts +0 -16
  910. package/forms/datepicker/datepicker-view-manager.d.ts +0 -30
  911. package/forms/datepicker/datepicker.module.d.ts +0 -29
  912. package/forms/datepicker/day.d.ts +0 -40
  913. package/forms/datepicker/daypicker.d.ts +0 -44
  914. package/forms/datepicker/index.d.ts +0 -14
  915. package/forms/datepicker/interfaces/date-range.interface.d.ts +0 -13
  916. package/forms/datepicker/interfaces/day-of-week.interface.d.ts +0 -4
  917. package/forms/datepicker/model/calendar-view.model.d.ts +0 -74
  918. package/forms/datepicker/model/calendar.model.d.ts +0 -35
  919. package/forms/datepicker/model/day-view.model.d.ts +0 -16
  920. package/forms/datepicker/model/day.model.d.ts +0 -30
  921. package/forms/datepicker/model/year-range.model.d.ts +0 -34
  922. package/forms/datepicker/monthpicker.d.ts +0 -87
  923. package/forms/datepicker/providers/date-form-control.service.d.ts +0 -14
  924. package/forms/datepicker/providers/date-io.service.d.ts +0 -39
  925. package/forms/datepicker/providers/date-navigation.service.d.ts +0 -94
  926. package/forms/datepicker/providers/datepicker-enabled.service.d.ts +0 -15
  927. package/forms/datepicker/providers/datepicker-focus.service.d.ts +0 -16
  928. package/forms/datepicker/providers/locale-helper.service.d.ts +0 -46
  929. package/forms/datepicker/providers/view-manager.service.d.ts +0 -17
  930. package/forms/datepicker/utils/constants.d.ts +0 -24
  931. package/forms/datepicker/utils/date-utils.d.ts +0 -16
  932. package/forms/datepicker/yearpicker.d.ts +0 -78
  933. package/forms/file-input/file-input-container.d.ts +0 -27
  934. package/forms/file-input/file-input-validator-errors.d.ts +0 -52
  935. package/forms/file-input/file-input-validator.d.ts +0 -14
  936. package/forms/file-input/file-input-value-accessor.d.ts +0 -16
  937. package/forms/file-input/file-input.d.ts +0 -22
  938. package/forms/file-input/file-input.helpers.d.ts +0 -3
  939. package/forms/file-input/file-input.module.d.ts +0 -17
  940. package/forms/file-input/file-list.d.ts +0 -18
  941. package/forms/file-input/file-messages-template.d.ts +0 -19
  942. package/forms/file-input/file-messages.d.ts +0 -17
  943. package/forms/file-input/index.d.ts +0 -9
  944. package/forms/forms.module.d.ts +0 -20
  945. package/forms/index.d.ts +0 -14
  946. package/forms/input/index.d.ts +0 -3
  947. package/forms/input/input-container.d.ts +0 -6
  948. package/forms/input/input.d.ts +0 -11
  949. package/forms/input/input.module.d.ts +0 -13
  950. package/forms/number-input/index.d.ts +0 -3
  951. package/forms/number-input/number-input-container.d.ts +0 -17
  952. package/forms/number-input/number-input.d.ts +0 -22
  953. package/forms/number-input/number-input.module.d.ts +0 -13
  954. package/forms/password/index.d.ts +0 -3
  955. package/forms/password/password-container.d.ts +0 -32
  956. package/forms/password/password.d.ts +0 -16
  957. package/forms/password/password.module.d.ts +0 -13
  958. package/forms/radio/index.d.ts +0 -4
  959. package/forms/radio/radio-container.d.ts +0 -28
  960. package/forms/radio/radio-wrapper.d.ts +0 -9
  961. package/forms/radio/radio.d.ts +0 -10
  962. package/forms/radio/radio.module.d.ts +0 -14
  963. package/forms/range/index.d.ts +0 -3
  964. package/forms/range/range-container.d.ts +0 -22
  965. package/forms/range/range.d.ts +0 -10
  966. package/forms/range/range.module.d.ts +0 -13
  967. package/forms/select/index.d.ts +0 -3
  968. package/forms/select/select-container.d.ts +0 -20
  969. package/forms/select/select.d.ts +0 -11
  970. package/forms/select/select.module.d.ts +0 -13
  971. package/forms/textarea/index.d.ts +0 -3
  972. package/forms/textarea/textarea-container.d.ts +0 -6
  973. package/forms/textarea/textarea.d.ts +0 -11
  974. package/forms/textarea/textarea.module.d.ts +0 -13
  975. package/icon/icon.d.ts +0 -9
  976. package/icon/icon.module.d.ts +0 -10
  977. package/icon/index.d.ts +0 -2
  978. package/index.d.ts +0 -16
  979. package/layout/breadcrumbs/breadcrumb-item.d.ts +0 -5
  980. package/layout/breadcrumbs/breadcrumbs.constants.d.ts +0 -1
  981. package/layout/breadcrumbs/breadcrumbs.d.ts +0 -17
  982. package/layout/breadcrumbs/breadcrumbs.module.d.ts +0 -12
  983. package/layout/breadcrumbs/index.d.ts +0 -4
  984. package/layout/breadcrumbs/model/breadcrumbs.model.d.ts +0 -9
  985. package/layout/index.d.ts +0 -6
  986. package/layout/layout.module.d.ts +0 -11
  987. package/layout/main-container/index.d.ts +0 -2
  988. package/layout/main-container/main-container.d.ts +0 -17
  989. package/layout/main-container/main-container.module.d.ts +0 -11
  990. package/layout/nav/aria-current-link.d.ts +0 -13
  991. package/layout/nav/chocolate/index.d.ts +0 -2
  992. package/layout/nav/chocolate/main-container-willy-wonka.d.ts +0 -6
  993. package/layout/nav/chocolate/nav-detection-oompa-loompa.d.ts +0 -12
  994. package/layout/nav/header.d.ts +0 -31
  995. package/layout/nav/index.d.ts +0 -5
  996. package/layout/nav/nav-level.d.ts +0 -35
  997. package/layout/nav/navigation.module.d.ts +0 -16
  998. package/layout/nav/providers/responsive-navigation.service.d.ts +0 -18
  999. package/layout/nav/responsive-nav-codes.d.ts +0 -14
  1000. package/layout/nav/responsive-nav-control-message.d.ts +0 -7
  1001. package/layout/tabs/chocolate/active-oompa-loompa.d.ts +0 -13
  1002. package/layout/tabs/chocolate/tabs-willy-wonka.d.ts +0 -6
  1003. package/layout/tabs/enums/tabs-layout.enum.d.ts +0 -4
  1004. package/layout/tabs/index.d.ts +0 -11
  1005. package/layout/tabs/providers/tabs.service.d.ts +0 -16
  1006. package/layout/tabs/tab-action.directive.d.ts +0 -5
  1007. package/layout/tabs/tab-content.d.ts +0 -18
  1008. package/layout/tabs/tab-link.directive.d.ts +0 -25
  1009. package/layout/tabs/tab-overflow-content.d.ts +0 -5
  1010. package/layout/tabs/tab.d.ts +0 -17
  1011. package/layout/tabs/tabs-actions.d.ts +0 -7
  1012. package/layout/tabs/tabs-id.provider.d.ts +0 -7
  1013. package/layout/tabs/tabs.d.ts +0 -50
  1014. package/layout/tabs/tabs.module.d.ts +0 -23
  1015. package/layout/vertical-nav/index.d.ts +0 -6
  1016. package/layout/vertical-nav/providers/vertical-nav-group-registration.service.d.ts +0 -8
  1017. package/layout/vertical-nav/providers/vertical-nav-group.service.d.ts +0 -9
  1018. package/layout/vertical-nav/providers/vertical-nav-icon.service.d.ts +0 -9
  1019. package/layout/vertical-nav/providers/vertical-nav.service.d.ts +0 -17
  1020. package/layout/vertical-nav/vertical-nav-group-children.d.ts +0 -5
  1021. package/layout/vertical-nav/vertical-nav-group.d.ts +0 -32
  1022. package/layout/vertical-nav/vertical-nav-icon.d.ts +0 -10
  1023. package/layout/vertical-nav/vertical-nav-link.d.ts +0 -10
  1024. package/layout/vertical-nav/vertical-nav.d.ts +0 -28
  1025. package/layout/vertical-nav/vertical-nav.module.d.ts +0 -18
  1026. package/modal/index.d.ts +0 -7
  1027. package/modal/modal-body.d.ts +0 -22
  1028. package/modal/modal-configuration.service.d.ts +0 -7
  1029. package/modal/modal-host.component.d.ts +0 -5
  1030. package/modal/modal-stack.service.d.ts +0 -15
  1031. package/modal/modal.d.ts +0 -43
  1032. package/modal/modal.module.d.ts +0 -15
  1033. package/modal/side-panel.d.ts +0 -53
  1034. package/modal/side-panel.module.d.ts +0 -13
  1035. package/popover/common/abstract-popover.d.ts +0 -35
  1036. package/popover/common/popover-host-anchor.token.d.ts +0 -2
  1037. package/popover/common/popover-options.interface.d.ts +0 -7
  1038. package/popover/common/popover.d.ts +0 -30
  1039. package/popover/dropdown/dropdown-item.d.ts +0 -27
  1040. package/popover/dropdown/dropdown-menu.d.ts +0 -15
  1041. package/popover/dropdown/dropdown-trigger.d.ts +0 -16
  1042. package/popover/dropdown/dropdown.d.ts +0 -17
  1043. package/popover/dropdown/dropdown.module.d.ts +0 -15
  1044. package/popover/dropdown/index.d.ts +0 -6
  1045. package/popover/dropdown/menu-positions.d.ts +0 -1
  1046. package/popover/dropdown/providers/dropdown-focus-handler.service.d.ts +0 -49
  1047. package/popover/dropdown/providers/dropdown.service.d.ts +0 -16
  1048. package/popover/index.d.ts +0 -4
  1049. package/popover/popover.module.d.ts +0 -9
  1050. package/popover/signpost/index.d.ts +0 -5
  1051. package/popover/signpost/providers/signpost-focus-manager.service.d.ts +0 -8
  1052. package/popover/signpost/providers/signpost-id.service.d.ts +0 -9
  1053. package/popover/signpost/signpost-content.d.ts +0 -57
  1054. package/popover/signpost/signpost-positions.d.ts +0 -10
  1055. package/popover/signpost/signpost-title.d.ts +0 -5
  1056. package/popover/signpost/signpost-trigger.d.ts +0 -29
  1057. package/popover/signpost/signpost.d.ts +0 -27
  1058. package/popover/signpost/signpost.module.d.ts +0 -17
  1059. package/popover/tooltip/index.d.ts +0 -4
  1060. package/popover/tooltip/providers/tooltip-id.service.d.ts +0 -9
  1061. package/popover/tooltip/providers/tooltip-mouse.service.d.ts +0 -15
  1062. package/popover/tooltip/tooltip-content.d.ts +0 -25
  1063. package/popover/tooltip/tooltip-trigger.d.ts +0 -18
  1064. package/popover/tooltip/tooltip.d.ts +0 -6
  1065. package/popover/tooltip/tooltip.module.d.ts +0 -14
  1066. package/progress/progress-bars/index.d.ts +0 -2
  1067. package/progress/progress-bars/progress-bar.d.ts +0 -45
  1068. package/progress/progress-bars/progress-bar.module.d.ts +0 -10
  1069. package/progress/spinner/index.d.ts +0 -2
  1070. package/progress/spinner/spinner.d.ts +0 -32
  1071. package/progress/spinner/spinner.module.d.ts +0 -10
  1072. package/timeline/enums/timeline-layout.enum.d.ts +0 -4
  1073. package/timeline/enums/timeline-step-state.enum.d.ts +0 -7
  1074. package/timeline/index.d.ts +0 -8
  1075. package/timeline/interface/icon-attribute.interface.d.ts +0 -6
  1076. package/timeline/providers/timeline-icon-attribute.service.d.ts +0 -12
  1077. package/timeline/timeline-step-description.d.ts +0 -5
  1078. package/timeline/timeline-step-header.d.ts +0 -5
  1079. package/timeline/timeline-step-title.d.ts +0 -15
  1080. package/timeline/timeline-step.d.ts +0 -19
  1081. package/timeline/timeline.d.ts +0 -8
  1082. package/timeline/timeline.module.d.ts +0 -15
  1083. package/utils/animations/collapse/collapse.d.ts +0 -2
  1084. package/utils/animations/collapse/index.d.ts +0 -1
  1085. package/utils/animations/constants.d.ts +0 -2
  1086. package/utils/animations/expandable-animation/base-expandable-animation.d.ts +0 -16
  1087. package/utils/animations/expandable-animation/expandable-animation.d.ts +0 -16
  1088. package/utils/animations/expandable-animation/expandable-animation.directive.d.ts +0 -16
  1089. package/utils/animations/expandable-animation/expandable-animation.module.d.ts +0 -9
  1090. package/utils/animations/expandable-animation/index.d.ts +0 -4
  1091. package/utils/animations/fade/fade.d.ts +0 -2
  1092. package/utils/animations/fade/index.d.ts +0 -1
  1093. package/utils/animations/fade-slide/fade-slide.d.ts +0 -2
  1094. package/utils/animations/fade-slide/index.d.ts +0 -1
  1095. package/utils/animations/index.d.ts +0 -5
  1096. package/utils/animations/slide/index.d.ts +0 -1
  1097. package/utils/animations/slide/slide.d.ts +0 -2
  1098. package/utils/assert/assert.helpers.d.ts +0 -1
  1099. package/utils/breakpoints/breakpoints.d.ts +0 -15
  1100. package/utils/cdk/cdk-drag.module.d.ts +0 -25
  1101. package/utils/cdk/cdk-trap-focus.module.d.ts +0 -24
  1102. package/utils/chocolate/oompa-loompa.d.ts +0 -13
  1103. package/utils/chocolate/willy-wonka.d.ts +0 -11
  1104. package/utils/component/is-boolean-attribute-set.d.ts +0 -1
  1105. package/utils/conditional/conditional.module.d.ts +0 -12
  1106. package/utils/conditional/if-active.directive.d.ts +0 -38
  1107. package/utils/conditional/if-active.service.d.ts +0 -45
  1108. package/utils/conditional/if-expanded.directive.d.ts +0 -24
  1109. package/utils/conditional/if-expanded.service.d.ts +0 -20
  1110. package/utils/conditional/if-open.directive.d.ts +0 -36
  1111. package/utils/conditional/index.d.ts +0 -4
  1112. package/utils/destroy/destroy.service.d.ts +0 -32
  1113. package/utils/destroy/index.d.ts +0 -1
  1114. package/utils/dom-adapter/dom-adapter.d.ts +0 -12
  1115. package/utils/enums/keys.enum.d.ts +0 -24
  1116. package/utils/focus/arrow-key-direction.enum.d.ts +0 -6
  1117. package/utils/focus/focus-on-view-init/focus-on-view-init.d.ts +0 -19
  1118. package/utils/focus/focus-on-view-init/focus-on-view-init.module.d.ts +0 -10
  1119. package/utils/focus/focus-on-view-init/focus-on-view-init.provider.d.ts +0 -6
  1120. package/utils/focus/focus-on-view-init/index.d.ts +0 -3
  1121. package/utils/focus/focus-trap/index.d.ts +0 -1
  1122. package/utils/focus/focus-trap/standalone-cdk-trap-focus.directive.d.ts +0 -13
  1123. package/utils/focus/focus.service.d.ts +0 -26
  1124. package/utils/focus/focusable-item/basic-focusable-item.service.d.ts +0 -20
  1125. package/utils/focus/focusable-item/custom-focusable-item-provider.d.ts +0 -6
  1126. package/utils/focus/focusable-item/focusable-item.d.ts +0 -12
  1127. package/utils/focus/focusable-item/linkers.d.ts +0 -13
  1128. package/utils/focus/key-focus/enums/focus-direction.enum.d.ts +0 -5
  1129. package/utils/focus/key-focus/index.d.ts +0 -2
  1130. package/utils/focus/key-focus/interfaces.d.ts +0 -5
  1131. package/utils/focus/key-focus/key-focus-item.d.ts +0 -11
  1132. package/utils/focus/key-focus/key-focus.d.ts +0 -44
  1133. package/utils/focus/key-focus/key-focus.module.d.ts +0 -10
  1134. package/utils/focus/key-focus/roving-tabindex.d.ts +0 -19
  1135. package/utils/focus/key-focus/util.d.ts +0 -3
  1136. package/utils/focus/wrap-observable.d.ts +0 -2
  1137. package/utils/forms/validation.d.ts +0 -2
  1138. package/utils/host-wrapping/empty-anchor.d.ts +0 -5
  1139. package/utils/host-wrapping/host-wrapper.d.ts +0 -11
  1140. package/utils/host-wrapping/host-wrapping.module.d.ts +0 -10
  1141. package/utils/i18n/common-strings.default.d.ts +0 -2
  1142. package/utils/i18n/common-strings.interface.d.ts +0 -309
  1143. package/utils/i18n/common-strings.service.d.ts +0 -21
  1144. package/utils/i18n/index.d.ts +0 -3
  1145. package/utils/id-generator/id-generator.service.d.ts +0 -1
  1146. package/utils/index.d.ts +0 -8
  1147. package/utils/loading/index.d.ts +0 -3
  1148. package/utils/loading/loading-listener.d.ts +0 -8
  1149. package/utils/loading/loading.d.ts +0 -20
  1150. package/utils/loading/loading.module.d.ts +0 -10
  1151. package/utils/outside-click/index.d.ts +0 -3
  1152. package/utils/outside-click/outside-click.d.ts +0 -11
  1153. package/utils/outside-click/outside-click.module.d.ts +0 -8
  1154. package/utils/popover/enums/alignment.enum.d.ts +0 -5
  1155. package/utils/popover/enums/axis.enum.d.ts +0 -4
  1156. package/utils/popover/enums/positions.enum.d.ts +0 -23
  1157. package/utils/popover/enums/side.enum.d.ts +0 -4
  1158. package/utils/popover/enums/viewport-violation.enum.d.ts +0 -6
  1159. package/utils/popover/index.d.ts +0 -14
  1160. package/utils/popover/interfaces/popover-content-offset.interface.d.ts +0 -4
  1161. package/utils/popover/interfaces/popover-position.interface.d.ts +0 -16
  1162. package/utils/popover/interfaces/visibility-coords.interface.d.ts +0 -6
  1163. package/utils/popover/popover-anchor.d.ts +0 -8
  1164. package/utils/popover/popover-close-button.d.ts +0 -17
  1165. package/utils/popover/popover-content.d.ts +0 -42
  1166. package/utils/popover/popover-host.directive.d.ts +0 -6
  1167. package/utils/popover/popover-open-close-button.d.ts +0 -13
  1168. package/utils/popover/popover.module.d.ts +0 -10
  1169. package/utils/popover/position-operators.d.ts +0 -10
  1170. package/utils/popover/providers/popover-events.service.d.ts +0 -34
  1171. package/utils/popover/providers/popover-position.service.d.ts +0 -24
  1172. package/utils/popover/providers/popover-toggle.service.d.ts +0 -28
  1173. package/utils/popover/stop-escape-propagation.directive.d.ts +0 -14
  1174. package/utils/scrolling/scrolling-service.d.ts +0 -9
  1175. package/utils/template-ref/index.d.ts +0 -3
  1176. package/utils/template-ref/template-ref-container.d.ts +0 -7
  1177. package/utils/template-ref/template-ref.module.d.ts +0 -8
  1178. package/wizard/heading-level.d.ts +0 -1
  1179. package/wizard/index.d.ts +0 -13
  1180. package/wizard/providers/button-hub.service.d.ts +0 -20
  1181. package/wizard/providers/header-actions.service.d.ts +0 -15
  1182. package/wizard/providers/page-collection.service.d.ts +0 -196
  1183. package/wizard/providers/wizard-navigation.service.d.ts +0 -366
  1184. package/wizard/wizard-button.d.ts +0 -28
  1185. package/wizard/wizard-header-action.d.ts +0 -12
  1186. package/wizard/wizard-page-buttons.d.ts +0 -8
  1187. package/wizard/wizard-page-header-actions.d.ts +0 -8
  1188. package/wizard/wizard-page-navtitle.d.ts +0 -8
  1189. package/wizard/wizard-page-title.d.ts +0 -10
  1190. package/wizard/wizard-page.d.ts +0 -494
  1191. package/wizard/wizard-stepnav-item.d.ts +0 -42
  1192. package/wizard/wizard-stepnav.d.ts +0 -9
  1193. package/wizard/wizard-title.d.ts +0 -7
  1194. package/wizard/wizard.d.ts +0 -259
  1195. package/wizard/wizard.module.d.ts +0 -22
@@ -0,0 +1,3222 @@
1
+ import * as i5$1 from '@angular/common';
2
+ import { getLocaleDayNames, FormStyle, TranslationWidth, getLocaleMonthNames, getLocaleFirstDayOfWeek, getLocaleDateFormat, FormatWidth, isPlatformBrowser, CommonModule } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { Injectable, LOCALE_ID, Inject, DOCUMENT, PLATFORM_ID, HostListener, Component, EventEmitter, Input, Output, ViewChild, Optional, forwardRef, HostBinding, Self, Directive, NgModule } from '@angular/core';
5
+ import * as i7 from '@clr/angular/forms/common';
6
+ import { ClrAbstractContainer, ControlIdService, ControlClassService, FormsFocusService, NgControlService, WrappedFormControl, ClrCommonFormsModule } from '@clr/angular/forms/common';
7
+ import * as i4 from '@clr/angular/utils';
8
+ import { DATEPICKER_ENABLE_BREAKPOINT, Keys, isBooleanAttributeSet, CdkTrapFocusModule, ClrHostWrappingModule, ClrConditionalModule } from '@clr/angular/utils';
9
+ import { first, filter, startWith } from 'rxjs/operators';
10
+ import * as i1 from '@clr/angular/popover/common';
11
+ import { ClrPopoverPosition, ClrPopoverType, DROPDOWN_POSITIONS, ClrPopoverHostDirective, ClrPopoverModuleNext } from '@clr/angular/popover/common';
12
+ import { Subject, tap } from 'rxjs';
13
+ import * as i5 from '@clr/angular/icon';
14
+ import { ClarityIcons, successStandardIcon, errorStandardIcon, angleIcon, eventIcon, calendarIcon, ClrIcon } from '@clr/angular/icon';
15
+ import * as i6 from '@clr/angular/layout/vertical-nav';
16
+ import { ClrVerticalNavModule } from '@clr/angular/layout/vertical-nav';
17
+ import * as i1$1 from '@angular/forms';
18
+ import { NG_VALIDATORS } from '@angular/forms';
19
+
20
+ /*
21
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
22
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
23
+ * This software is released under MIT license.
24
+ * The full license information can be found in LICENSE in the root directory of this project.
25
+ */
26
+ class DateFormControlService {
27
+ constructor() {
28
+ this._touchedChange = new Subject();
29
+ this._dirtyChange = new Subject();
30
+ }
31
+ get touchedChange() {
32
+ return this._touchedChange.asObservable();
33
+ }
34
+ get dirtyChange() {
35
+ return this._dirtyChange.asObservable();
36
+ }
37
+ markAsTouched() {
38
+ this._touchedChange.next();
39
+ }
40
+ markAsDirty() {
41
+ this._dirtyChange.next();
42
+ }
43
+ // friendly wrapper
44
+ setDisabled(state) {
45
+ this.disabled = state;
46
+ }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DateFormControlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
48
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DateFormControlService }); }
49
+ }
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DateFormControlService, decorators: [{
51
+ type: Injectable
52
+ }] });
53
+
54
+ /*
55
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
56
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
57
+ * This software is released under MIT license.
58
+ * The full license information can be found in LICENSE in the root directory of this project.
59
+ */
60
+ class DayModel {
61
+ constructor(year, month, date) {
62
+ this.year = year;
63
+ this.month = month;
64
+ this.date = date;
65
+ }
66
+ /**
67
+ * Checks if the passed CalendarDate is equal to itself.
68
+ */
69
+ isEqual(day) {
70
+ if (day) {
71
+ return this.year === day.year && this.month === day.month && this.date === day.date;
72
+ }
73
+ return false;
74
+ }
75
+ toDate() {
76
+ return new Date(this.year, this.month, this.date);
77
+ }
78
+ /**
79
+ * Returns a new DayModel which is incremented based on the value passed.
80
+ */
81
+ incrementBy(value) {
82
+ // Creating new Javascript Date object to increment because
83
+ // it will automatically take care of switching to next or previous
84
+ // months & years without we having to worry about it.
85
+ const date = new Date(this.year, this.month, this.date + value);
86
+ return new DayModel(date.getFullYear(), date.getMonth(), date.getDate());
87
+ }
88
+ /**
89
+ * Clones the current day model.
90
+ */
91
+ clone() {
92
+ return new DayModel(this.year, this.month, this.date);
93
+ }
94
+ toComparisonString() {
95
+ return `${this.year}${this.pad(this.month)}${this.pad(this.date)}`;
96
+ }
97
+ toDateString() {
98
+ return this.toDate().toLocaleDateString(undefined, {
99
+ weekday: 'long',
100
+ month: 'long',
101
+ day: 'numeric',
102
+ year: 'numeric',
103
+ });
104
+ }
105
+ /**
106
+ * Compares the dates and returns boolean value based on the value passed
107
+ */
108
+ isBefore(day, dayInclusive = false) {
109
+ return dayInclusive
110
+ ? this.toDate().getTime() <= day?.toDate().getTime()
111
+ : this.toDate().getTime() < day?.toDate().getTime();
112
+ }
113
+ /**
114
+ * Compares the dates and returns boolean value based on the value passed
115
+ */
116
+ isAfter(day, dayInclusive = false) {
117
+ return dayInclusive
118
+ ? this.toDate().getTime() >= day?.toDate().getTime()
119
+ : this.toDate().getTime() > day?.toDate().getTime();
120
+ }
121
+ pad(num) {
122
+ return num < 10 ? `0${num}` : `${num}`;
123
+ }
124
+ }
125
+
126
+ /*
127
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
128
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
129
+ * This software is released under MIT license.
130
+ * The full license information can be found in LICENSE in the root directory of this project.
131
+ */
132
+ /**
133
+ * This is the en-001 short locale date format. Setting as default.
134
+ */
135
+ const DEFAULT_LOCALE_FORMAT = 'dd/MM/y';
136
+ // https://en.wikipedia.org/wiki/Date_format_by_country
137
+ const LITTLE_ENDIAN_REGEX = /d+.+m+.+y+/i;
138
+ const MIDDLE_ENDIAN_REGEX = /m+.+d+.+y+/i;
139
+ // No need for BIG_ENDIAN_REGEX because anything that doesn't satisfy the above 2
140
+ // is automatically BIG_ENDIAN
141
+ const DELIMITER_REGEX = /d+|m+|y+/i;
142
+ const USER_INPUT_REGEX = /\d+/g;
143
+ const MOBILE_USERAGENT_REGEX = /Mobi/i;
144
+ const RTL_REGEX = /\u200f/g;
145
+ const YEAR = 'YYYY';
146
+ const MONTH = 'MM';
147
+ const DATE = 'DD';
148
+ const LITTLE_ENDIAN = {
149
+ name: 'LITTLE_ENDIAN',
150
+ format: [DATE, MONTH, YEAR],
151
+ };
152
+ const MIDDLE_ENDIAN = {
153
+ name: 'MIDDLE_ENDIAN',
154
+ format: [MONTH, DATE, YEAR],
155
+ };
156
+ const BIG_ENDIAN = {
157
+ name: 'BIG_ENDIAN',
158
+ format: [YEAR, MONTH, DATE],
159
+ };
160
+ const NO_OF_DAYS_IN_A_WEEK = 7;
161
+ const NO_OF_ROWS_IN_CALENDAR_VIEW = 6;
162
+ const TOTAL_DAYS_IN_DAYS_VIEW = NO_OF_DAYS_IN_A_WEEK * NO_OF_ROWS_IN_CALENDAR_VIEW;
163
+
164
+ /*
165
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
166
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
167
+ * This software is released under MIT license.
168
+ * The full license information can be found in LICENSE in the root directory of this project.
169
+ */
170
+ /**
171
+ * Returns the number of days in a month.
172
+ */
173
+ function getNumberOfDaysInTheMonth(year, month) {
174
+ // If we go to the next month, but use a day of 0, it returns the last day from the previous month
175
+ return new Date(year, month + 1, 0).getDate();
176
+ }
177
+ /**
178
+ * Returns the day for the corresponding date where 0 represents Sunday.
179
+ */
180
+ function getDay(year, month, date) {
181
+ return new Date(year, month, date).getDay();
182
+ }
183
+ /**
184
+ * Takes in a year and if it is a 2 digit year, returns the corresponding 4 digit year.
185
+ * Window of 80 years before and 20 years after the present year.
186
+ * Credit: https://github.com/globalizejs/globalize/blob/e1b31cd6a4f1cff75b185b68b7a32220aac5196f/src/date/parse.js
187
+ */
188
+ function parseToFourDigitYear(year) {
189
+ if (year > 9999 || (year > 100 && year < 999) || year < 10) {
190
+ return -1;
191
+ }
192
+ if (year > 999) {
193
+ return year;
194
+ }
195
+ const currYear = new Date().getFullYear();
196
+ const century = Math.floor(currYear / 100) * 100;
197
+ let result = year + century;
198
+ if (result > currYear + 20) {
199
+ result = result - 100;
200
+ }
201
+ return result;
202
+ }
203
+ function datesAreEqual(date1, date2) {
204
+ if (date1 instanceof Date && date2 instanceof Date) {
205
+ return (date1.getFullYear() === date2.getFullYear() &&
206
+ date1.getMonth() === date2.getMonth() &&
207
+ date1.getDate() === date2.getDate());
208
+ }
209
+ else {
210
+ return false;
211
+ }
212
+ }
213
+
214
+ /*
215
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
216
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
217
+ * This software is released under MIT license.
218
+ * The full license information can be found in LICENSE in the root directory of this project.
219
+ */
220
+ /**
221
+ * This service extracts the Angular CLDR data needed by the datepicker.
222
+ */
223
+ class LocaleHelperService {
224
+ constructor(locale) {
225
+ this.locale = locale;
226
+ this._firstDayOfWeek = 0;
227
+ this.initializeLocaleData();
228
+ }
229
+ get firstDayOfWeek() {
230
+ return this._firstDayOfWeek;
231
+ }
232
+ get localeDays() {
233
+ return this._localeDays;
234
+ }
235
+ // leave for backward compatibility
236
+ get localeDaysNarrow() {
237
+ return this._localeDays.map(day => day.narrow);
238
+ }
239
+ get localeMonthsAbbreviated() {
240
+ return this._localeMonthsAbbreviated;
241
+ }
242
+ get localeMonthsWide() {
243
+ return this._localeMonthsWide;
244
+ }
245
+ get localeDateFormat() {
246
+ return this._localeDateFormat;
247
+ }
248
+ /**
249
+ * Initializes the locale data.
250
+ */
251
+ initializeLocaleData() {
252
+ // Order in which these functions is called is very important.
253
+ this.initializeFirstDayOfWeek();
254
+ this.initializeLocaleDateFormat();
255
+ this.initializeLocaleMonthsAbbreviated();
256
+ this.initializeLocaleMonthsWide();
257
+ this.initializeLocaleDays();
258
+ }
259
+ /**
260
+ * Initialize day names based on the locale.
261
+ * eg: [{day: Sunday, narrow: S}, {day: Monday, narrow: M}...] for en-US.
262
+ */
263
+ initializeLocaleDays() {
264
+ // Get locale day names starting with Sunday
265
+ const tempArr = [];
266
+ const tempWideArr = getLocaleDayNames(this.locale, FormStyle.Standalone, TranslationWidth.Wide).slice();
267
+ const tempNarrowArr = getLocaleDayNames(this.locale, FormStyle.Standalone, TranslationWidth.Narrow).slice();
268
+ // Get first day of the week based on the locale
269
+ const firstDayOfWeek = this.firstDayOfWeek;
270
+ for (let i = 0; i < 7; i++) {
271
+ tempArr.push({ day: tempWideArr[i], narrow: tempNarrowArr[i] });
272
+ }
273
+ // Rearrange the tempArr to start with the first day of the week based on the locale.
274
+ if (firstDayOfWeek > 0) {
275
+ const prevDays = tempArr.splice(0, firstDayOfWeek);
276
+ tempArr.push(...prevDays);
277
+ }
278
+ this._localeDays = tempArr;
279
+ }
280
+ /**
281
+ * Initializes the array of month names in the TranslationWidth.Abbreviated format.
282
+ * e.g. `[Jan, Feb, ...]` for en-US
283
+ */
284
+ initializeLocaleMonthsAbbreviated() {
285
+ this._localeMonthsAbbreviated = getLocaleMonthNames(this.locale, FormStyle.Standalone, TranslationWidth.Abbreviated).slice();
286
+ }
287
+ /**
288
+ * Initializes the array of month names in the TranslationWidth.Wide format.
289
+ * e.g. `[January, February, ...]` for en-US
290
+ */
291
+ initializeLocaleMonthsWide() {
292
+ this._localeMonthsWide = getLocaleMonthNames(this.locale, FormStyle.Standalone, TranslationWidth.Wide).slice();
293
+ }
294
+ /**
295
+ * Initializes the first day of the week based on the locale.
296
+ */
297
+ initializeFirstDayOfWeek() {
298
+ this._firstDayOfWeek = getLocaleFirstDayOfWeek(this.locale);
299
+ }
300
+ initializeLocaleDateFormat() {
301
+ this._localeDateFormat = getLocaleDateFormat(this.locale, FormatWidth.Short);
302
+ }
303
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: LocaleHelperService, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
304
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: LocaleHelperService }); }
305
+ }
306
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: LocaleHelperService, decorators: [{
307
+ type: Injectable
308
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
309
+ type: Inject,
310
+ args: [LOCALE_ID]
311
+ }] }] });
312
+
313
+ /*
314
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
315
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
316
+ * This software is released under MIT license.
317
+ * The full license information can be found in LICENSE in the root directory of this project.
318
+ */
319
+ class DateIOService {
320
+ constructor(localeHelperService) {
321
+ /**
322
+ * This is the default range. It approximates the beginning of time to the end of time.
323
+ * The disabled dates are the dates that are not allowed to be selected.
324
+ * The min date is the earliest date that can be selected.
325
+ * The max date is the latest date that can be selected.
326
+ * Unless a minDate or maxDate is set with the native HTML5 api the range is all dates
327
+ */
328
+ this.disabledDates = {
329
+ minDate: new DayModel(0, 0, 1),
330
+ maxDate: new DayModel(9999, 11, 31),
331
+ };
332
+ this.cldrLocaleDateFormat = DEFAULT_LOCALE_FORMAT;
333
+ this.minDateChange = new Subject();
334
+ this.maxDateChange = new Subject();
335
+ this.localeDisplayFormat = LITTLE_ENDIAN;
336
+ this.delimiters = ['/', '/'];
337
+ this.cldrLocaleDateFormat = localeHelperService.localeDateFormat;
338
+ this.initializeLocaleDisplayFormat();
339
+ }
340
+ get placeholderText() {
341
+ const format = this.localeDisplayFormat.format;
342
+ return format[0] + this.delimiters[0] + format[1] + this.delimiters[1] + format[2];
343
+ }
344
+ setMinDate(date) {
345
+ // NOTE: I'm expecting consumers to pass one of four things here:
346
+ // A proper date string(2019-11-11), null, undefined or empty string ('')
347
+ if (!date) {
348
+ // attribute binding was removed, reset back to the beginning of time
349
+ this.disabledDates.minDate = new DayModel(0, 0, 1);
350
+ }
351
+ else {
352
+ const [year, month, day] = date.split('-').map(n => parseInt(n, 10));
353
+ this.disabledDates.minDate = new DayModel(year, month - 1, day);
354
+ }
355
+ this.minDateChange.next(this.disabledDates.minDate);
356
+ }
357
+ setMaxDate(date) {
358
+ // NOTE: I'm expecting consumers to pass one of four things here:
359
+ // A proper date string(2019-11-11), null, undefined or empty string ('')
360
+ if (!date) {
361
+ // attribute binding was removed, reset forward to the end of time
362
+ this.disabledDates.maxDate = new DayModel(9999, 11, 31);
363
+ }
364
+ else {
365
+ const [year, month, day] = date.split('-').map(n => parseInt(n, 10));
366
+ this.disabledDates.maxDate = new DayModel(year, month - 1, day);
367
+ }
368
+ this.maxDateChange.next(this.disabledDates.maxDate);
369
+ }
370
+ setRangeOptions(rangeOptions) {
371
+ const validatedRangeOption = this.validateDateRangeOptions(rangeOptions);
372
+ this.dateRangeOptions = validatedRangeOption || [];
373
+ }
374
+ getRangeOptions() {
375
+ return this.dateRangeOptions;
376
+ }
377
+ toLocaleDisplayFormatString(date) {
378
+ if (date) {
379
+ if (isNaN(date.getTime())) {
380
+ return '';
381
+ }
382
+ const dateNo = date.getDate();
383
+ const monthNo = date.getMonth() + 1;
384
+ const dateStr = dateNo > 9 ? dateNo.toString() : '0' + dateNo;
385
+ const monthStr = monthNo > 9 ? monthNo.toString() : '0' + monthNo;
386
+ if (this.localeDisplayFormat === LITTLE_ENDIAN) {
387
+ return dateStr + this.delimiters[0] + monthStr + this.delimiters[1] + date.getFullYear();
388
+ }
389
+ else if (this.localeDisplayFormat === MIDDLE_ENDIAN) {
390
+ return monthStr + this.delimiters[0] + dateStr + this.delimiters[1] + date.getFullYear();
391
+ }
392
+ else {
393
+ return date.getFullYear() + this.delimiters[0] + monthStr + this.delimiters[1] + dateStr;
394
+ }
395
+ }
396
+ return '';
397
+ }
398
+ getDateValueFromDateString(date) {
399
+ if (!date || typeof date !== 'string') {
400
+ return null;
401
+ }
402
+ const dateParts = date.match(USER_INPUT_REGEX);
403
+ if (!dateParts || dateParts.length !== 3) {
404
+ return null;
405
+ }
406
+ const [firstPart, secondPart, thirdPart] = dateParts;
407
+ if (this.localeDisplayFormat === LITTLE_ENDIAN) {
408
+ // secondPart is month && firstPart is date
409
+ return this.validateAndGetDate(thirdPart, secondPart, firstPart);
410
+ }
411
+ else if (this.localeDisplayFormat === MIDDLE_ENDIAN) {
412
+ // firstPart is month && secondPart is date
413
+ return this.validateAndGetDate(thirdPart, firstPart, secondPart);
414
+ }
415
+ else {
416
+ // secondPart is month && thirdPart is date
417
+ return this.validateAndGetDate(firstPart, secondPart, thirdPart);
418
+ }
419
+ }
420
+ validateDateRangeOptions(rangeOptions) {
421
+ const validOptions = [];
422
+ rangeOptions?.forEach((rangeOption) => {
423
+ if (rangeOption?.value?.length !== 2 ||
424
+ Object.prototype.toString.call(rangeOption?.value[0]) !== '[object Date]' ||
425
+ Object.prototype.toString.call(rangeOption?.value[1]) !== '[object Date]') {
426
+ return;
427
+ }
428
+ validOptions.push(rangeOption);
429
+ });
430
+ return validOptions;
431
+ }
432
+ initializeLocaleDisplayFormat() {
433
+ const format = this.cldrLocaleDateFormat.toLocaleLowerCase();
434
+ if (LITTLE_ENDIAN_REGEX.test(format)) {
435
+ this.localeDisplayFormat = LITTLE_ENDIAN;
436
+ }
437
+ else if (MIDDLE_ENDIAN_REGEX.test(format)) {
438
+ this.localeDisplayFormat = MIDDLE_ENDIAN;
439
+ }
440
+ else {
441
+ // everything else is set to BIG-ENDIAN FORMAT
442
+ this.localeDisplayFormat = BIG_ENDIAN;
443
+ }
444
+ this.extractDelimiters();
445
+ }
446
+ extractDelimiters() {
447
+ if (this.cldrLocaleDateFormat) {
448
+ // Sanitize Date Format. Remove RTL characters.
449
+ // FIXME: When we support RTL, remove this and handle it correctly.
450
+ const localeFormat = this.cldrLocaleDateFormat.replace(RTL_REGEX, '');
451
+ const delimiters = localeFormat.split(DELIMITER_REGEX);
452
+ // NOTE: The split from the CLDR date format should always result
453
+ // in an arary with 4 elements. The 1st and the 2nd values are the delimiters
454
+ // we will use in order.
455
+ // Eg: "dd/MM/y".split(/d+|m+|y+/i) results in ["", "/", "/", ""]
456
+ if (delimiters && delimiters.length === 4) {
457
+ this.delimiters = [delimiters[1], delimiters[2]];
458
+ }
459
+ else {
460
+ console.error('Unexpected date format received. Delimiters extracted: ', delimiters);
461
+ }
462
+ }
463
+ }
464
+ /**
465
+ * Checks if the month entered by the user is valid or not.
466
+ * Note: Month is 0 based.
467
+ */
468
+ isValidMonth(month) {
469
+ return month > -1 && month < 12;
470
+ }
471
+ /**
472
+ * Checks if the date is valid depending on the year and month provided.
473
+ */
474
+ isValidDate(year, month, date) {
475
+ return date > 0 && date <= getNumberOfDaysInTheMonth(year, month);
476
+ }
477
+ /**
478
+ * Validates the parameters provided and returns the date.
479
+ * If the parameters are not
480
+ * valid then return null.
481
+ * NOTE: (Month here is 1 based since the user has provided that as an input)
482
+ */
483
+ validateAndGetDate(year, month, date) {
484
+ // I don't know whats wrong with the TS compiler. It throws an error if I write
485
+ // the below if statement. The error is:
486
+ // Operator '!==' cannot be applied to types '2' and '4'
487
+ // More info here: https://github.com/Microsoft/TypeScript/issues/12794#issuecomment-270342936
488
+ /*
489
+ if (year.length !== 2 || year.length !== 4) {
490
+ return null;
491
+ }
492
+ */
493
+ // Instead I have to write the logic like this x-(
494
+ const y = +year;
495
+ const m = +month - 1; // month is 0 based
496
+ const d = +date;
497
+ if (!this.isValidMonth(m) || !this.isValidDate(y, m, d)) {
498
+ return null;
499
+ }
500
+ const result = parseToFourDigitYear(y);
501
+ return result !== -1 ? new Date(result, m, d) : null;
502
+ }
503
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DateIOService, deps: [{ token: LocaleHelperService }], target: i0.ɵɵFactoryTarget.Injectable }); }
504
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DateIOService }); }
505
+ }
506
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DateIOService, decorators: [{
507
+ type: Injectable
508
+ }], ctorParameters: () => [{ type: LocaleHelperService }] });
509
+
510
+ /*
511
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
512
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
513
+ * This software is released under MIT license.
514
+ * The full license information can be found in LICENSE in the root directory of this project.
515
+ */
516
+ class CalendarModel {
517
+ constructor(year, month) {
518
+ this.year = year;
519
+ this.month = month;
520
+ this.initializeDaysInCalendar();
521
+ }
522
+ /**
523
+ * Checks if the calendar passed is equal to the current calendar.
524
+ */
525
+ isEqual(calendar) {
526
+ if (calendar) {
527
+ return this.year === calendar.year && this.month === calendar.month;
528
+ }
529
+ return false;
530
+ }
531
+ /**
532
+ * Checks if a DayModel is in the Calendar
533
+ */
534
+ isDayInCalendar(day) {
535
+ if (day) {
536
+ return this.year === day.year && this.month === day.month;
537
+ }
538
+ return false;
539
+ }
540
+ /**
541
+ * Returns CalendarModel of the previous month.
542
+ */
543
+ previousMonth() {
544
+ if (this.month === 0) {
545
+ return new CalendarModel(this.year - 1, 11);
546
+ }
547
+ else {
548
+ return new CalendarModel(this.year, this.month - 1);
549
+ }
550
+ }
551
+ /**
552
+ * Returns CalendarModel of the next month.
553
+ */
554
+ nextMonth() {
555
+ if (this.month === 11) {
556
+ return new CalendarModel(this.year + 1, 0);
557
+ }
558
+ else {
559
+ return new CalendarModel(this.year, this.month + 1);
560
+ }
561
+ }
562
+ /**
563
+ * Returns CalendarModel of the previous year.
564
+ */
565
+ previousYear() {
566
+ return new CalendarModel(this.year - 1, this.month);
567
+ }
568
+ /**
569
+ * Returns CalendarModel of the next year.
570
+ */
571
+ nextYear() {
572
+ return new CalendarModel(this.year + 1, this.month);
573
+ }
574
+ /**
575
+ * Populates the days array with the DayModels in the current Calendar.
576
+ */
577
+ initializeDaysInCalendar() {
578
+ const noOfDaysInCalendar = getNumberOfDaysInTheMonth(this.year, this.month);
579
+ this.days = Array(noOfDaysInCalendar)
580
+ .fill(null)
581
+ .map((_date, index) => {
582
+ return new DayModel(this.year, this.month, index + 1);
583
+ });
584
+ }
585
+ }
586
+
587
+ /*
588
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
589
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
590
+ * This software is released under MIT license.
591
+ * The full license information can be found in LICENSE in the root directory of this project.
592
+ */
593
+ /**
594
+ * This service is responsible for:
595
+ * 1. Initializing the displayed calendar.
596
+ * 2. Moving the calendar to the next, previous or current months
597
+ * 3. Managing the focused and selected day models.
598
+ */
599
+ class DateNavigationService {
600
+ constructor() {
601
+ this.isRangePicker = false;
602
+ this.hasActionButtons = false;
603
+ this._todaysFullDate = new Date();
604
+ this._selectedDayChange = new Subject();
605
+ this._selectedEndDayChange = new Subject();
606
+ this._displayedCalendarChange = new Subject();
607
+ this._focusOnCalendarChange = new Subject();
608
+ this._refreshCalendarView = new Subject();
609
+ this._focusedDayChange = new Subject();
610
+ }
611
+ get today() {
612
+ return this._today;
613
+ }
614
+ get displayedCalendar() {
615
+ return this._displayedCalendar;
616
+ }
617
+ get selectedDayChange() {
618
+ return this._selectedDayChange.asObservable();
619
+ }
620
+ get selectedEndDayChange() {
621
+ return this._selectedEndDayChange.asObservable();
622
+ }
623
+ /**
624
+ * This observable lets the subscriber know that the displayed calendar has changed.
625
+ */
626
+ get displayedCalendarChange() {
627
+ return this._displayedCalendarChange.asObservable();
628
+ }
629
+ /**
630
+ * This observable lets the subscriber know that the focus should be applied on the calendar.
631
+ */
632
+ get focusOnCalendarChange() {
633
+ return this._focusOnCalendarChange.asObservable();
634
+ }
635
+ /**
636
+ * This observable lets the subscriber know that the focused day in the displayed calendar has changed.
637
+ */
638
+ get focusedDayChange() {
639
+ return this._focusedDayChange.asObservable().pipe(tap((day) => (this.focusedDay = day)));
640
+ }
641
+ /**
642
+ * This observable lets the subscriber know that the displayed calendar has changed.
643
+ */
644
+ get refreshCalendarView() {
645
+ return this._refreshCalendarView.asObservable();
646
+ }
647
+ /**
648
+ * Notifies that the selected day has changed so that the date can be emitted to the user.
649
+ */
650
+ notifySelectedDayChanged(dayObject, { emitEvent } = { emitEvent: true }) {
651
+ if (this.isRangePicker) {
652
+ const { startDate, endDate } = dayObject;
653
+ if (startDate && endDate) {
654
+ this.setSelectedDay(startDate, emitEvent);
655
+ this.setSelectedEndDay(endDate, emitEvent);
656
+ }
657
+ else {
658
+ if (endDate !== null) {
659
+ this.setSelectedEndDay(endDate, emitEvent);
660
+ }
661
+ if (startDate !== null) {
662
+ this.setSelectedDay(startDate, emitEvent);
663
+ }
664
+ }
665
+ }
666
+ else {
667
+ const day = dayObject;
668
+ this.setSelectedDay(day, emitEvent);
669
+ }
670
+ this._refreshCalendarView.next();
671
+ }
672
+ /**
673
+ * Initializes the calendar based on the selected day.
674
+ */
675
+ initializeCalendar() {
676
+ this.focusedDay = null; // Can be removed later on the store focus
677
+ this.initializeTodaysDate();
678
+ if (this.selectedDay) {
679
+ this._displayedCalendar = new CalendarModel(this.selectedDay.year, this.selectedDay.month);
680
+ }
681
+ else {
682
+ this._displayedCalendar = new CalendarModel(this.today.year, this.today.month);
683
+ }
684
+ }
685
+ changeMonth(month) {
686
+ this.setDisplayedCalendar(new CalendarModel(this._displayedCalendar.year, month));
687
+ }
688
+ changeYear(year) {
689
+ this.setDisplayedCalendar(new CalendarModel(year, this._displayedCalendar.month));
690
+ }
691
+ /**
692
+ * Moves the displayed calendar to the next month.
693
+ */
694
+ moveToNextMonth() {
695
+ this.setDisplayedCalendar(this._displayedCalendar.nextMonth());
696
+ }
697
+ /**
698
+ * Moves the displayed calendar to the previous month.
699
+ */
700
+ moveToPreviousMonth() {
701
+ this.setDisplayedCalendar(this._displayedCalendar.previousMonth());
702
+ }
703
+ /**
704
+ * Moves the displayed calendar to the next year.
705
+ */
706
+ moveToNextYear() {
707
+ this.setDisplayedCalendar(this._displayedCalendar.nextYear());
708
+ }
709
+ /**
710
+ * Moves the displayed calendar to the previous year.
711
+ */
712
+ moveToPreviousYear() {
713
+ this.setDisplayedCalendar(this._displayedCalendar.previousYear());
714
+ }
715
+ /**
716
+ * Moves the displayed calendar to the current month and year.
717
+ */
718
+ moveToCurrentMonth() {
719
+ if (!this.displayedCalendar.isDayInCalendar(this.today)) {
720
+ this.setDisplayedCalendar(new CalendarModel(this.today.year, this.today.month));
721
+ }
722
+ this._focusOnCalendarChange.next();
723
+ }
724
+ moveToSpecificMonth(day) {
725
+ if (!this.displayedCalendar.isDayInCalendar(day)) {
726
+ this.setDisplayedCalendar(new CalendarModel(day.year, day.month));
727
+ }
728
+ }
729
+ incrementFocusDay(value) {
730
+ this.hoveredDay = this.focusedDay = this.focusedDay.incrementBy(value);
731
+ if (this._displayedCalendar.isDayInCalendar(this.focusedDay)) {
732
+ this._focusedDayChange.next(this.focusedDay);
733
+ }
734
+ else {
735
+ this.setDisplayedCalendar(new CalendarModel(this.focusedDay.year, this.focusedDay.month));
736
+ }
737
+ this._focusOnCalendarChange.next();
738
+ }
739
+ resetSelectedDay() {
740
+ this.selectedDay = this.persistedDate;
741
+ this.selectedEndDay = this.persistedEndDate;
742
+ }
743
+ convertDateToDayModel(date) {
744
+ return new DayModel(date.getFullYear(), date.getMonth(), date.getDate());
745
+ }
746
+ setSelectedDay(dayModel, emitEvent) {
747
+ this.selectedDay = dayModel;
748
+ if (emitEvent) {
749
+ this._selectedDayChange.next(dayModel);
750
+ }
751
+ }
752
+ setSelectedEndDay(dayModel, emitEvent) {
753
+ this.selectedEndDay = dayModel;
754
+ if (emitEvent) {
755
+ this._selectedEndDayChange.next(dayModel);
756
+ }
757
+ }
758
+ // not a setter because i want this to remain private
759
+ setDisplayedCalendar(value) {
760
+ if (!this._displayedCalendar.isEqual(value)) {
761
+ this._displayedCalendar = value;
762
+ this._displayedCalendarChange.next();
763
+ }
764
+ }
765
+ initializeTodaysDate() {
766
+ this._todaysFullDate = new Date();
767
+ this._today = new DayModel(this._todaysFullDate.getFullYear(), this._todaysFullDate.getMonth(), this._todaysFullDate.getDate());
768
+ }
769
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DateNavigationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
770
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DateNavigationService }); }
771
+ }
772
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DateNavigationService, decorators: [{
773
+ type: Injectable
774
+ }] });
775
+
776
+ /*
777
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
778
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
779
+ * This software is released under MIT license.
780
+ * The full license information can be found in LICENSE in the root directory of this project.
781
+ */
782
+ class DatepickerEnabledService {
783
+ constructor(_document) {
784
+ this._document = _document;
785
+ this._isUserAgentMobile = false;
786
+ if (_document) {
787
+ this._isUserAgentMobile = MOBILE_USERAGENT_REGEX.test(_document.defaultView.navigator.userAgent);
788
+ this._innerWidth = _document.defaultView.innerWidth;
789
+ }
790
+ }
791
+ /**
792
+ * Returns if the calendar should be active or not.
793
+ * If the user agent is mobile and the screen width is less than DATEPICKER_ACTIVE_BREAKPOINT
794
+ * then the calendar is inactive.
795
+ */
796
+ get isEnabled() {
797
+ // https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent
798
+ // What they recommend is:
799
+ //"In summary, we recommend looking for the string 'Mobi'
800
+ // anywhere in the User Agent to detect a mobile device."
801
+ if (this._document) {
802
+ if (this._innerWidth < DATEPICKER_ENABLE_BREAKPOINT && this._isUserAgentMobile) {
803
+ return false;
804
+ }
805
+ }
806
+ return true;
807
+ }
808
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DatepickerEnabledService, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
809
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DatepickerEnabledService }); }
810
+ }
811
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DatepickerEnabledService, decorators: [{
812
+ type: Injectable
813
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
814
+ type: Inject,
815
+ args: [DOCUMENT]
816
+ }] }] });
817
+
818
+ /*
819
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
820
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
821
+ * This software is released under MIT license.
822
+ * The full license information can be found in LICENSE in the root directory of this project.
823
+ */
824
+ /**
825
+ * This service manages which view is visible in the datepicker popover.
826
+ */
827
+ class ViewManagerService {
828
+ constructor() {
829
+ this.position = ClrPopoverPosition.BOTTOM_LEFT;
830
+ this._currentView = "DAYVIEW" /* DatepickerViewEnum.DAYVIEW */;
831
+ }
832
+ get isDayView() {
833
+ return this._currentView === "DAYVIEW" /* DatepickerViewEnum.DAYVIEW */;
834
+ }
835
+ get isYearView() {
836
+ return this._currentView === "YEARVIEW" /* DatepickerViewEnum.YEARVIEW */;
837
+ }
838
+ get isMonthView() {
839
+ return this._currentView === "MONTHVIEW" /* DatepickerViewEnum.MONTHVIEW */;
840
+ }
841
+ changeToMonthView() {
842
+ this._currentView = "MONTHVIEW" /* DatepickerViewEnum.MONTHVIEW */;
843
+ }
844
+ changeToYearView() {
845
+ this._currentView = "YEARVIEW" /* DatepickerViewEnum.YEARVIEW */;
846
+ }
847
+ changeToDayView() {
848
+ this._currentView = "DAYVIEW" /* DatepickerViewEnum.DAYVIEW */;
849
+ }
850
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ViewManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
851
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ViewManagerService }); }
852
+ }
853
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ViewManagerService, decorators: [{
854
+ type: Injectable
855
+ }] });
856
+
857
+ /*
858
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
859
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
860
+ * This software is released under MIT license.
861
+ * The full license information can be found in LICENSE in the root directory of this project.
862
+ */
863
+ /**
864
+ * This service focuses the day that is focusable in the calendar.
865
+ */
866
+ class DatepickerFocusService {
867
+ constructor(_ngZone, platformId) {
868
+ this._ngZone = _ngZone;
869
+ this.platformId = platformId;
870
+ }
871
+ focusCell(elRef) {
872
+ this._ngZone.runOutsideAngular(() => {
873
+ this.ngZoneIsStableInBrowser().subscribe(() => {
874
+ const focusEl = elRef.nativeElement.querySelector('[tabindex="0"]');
875
+ if (focusEl) {
876
+ focusEl.focus();
877
+ }
878
+ });
879
+ });
880
+ }
881
+ focusInput(element) {
882
+ this._ngZone.runOutsideAngular(() => this.ngZoneIsStableInBrowser().subscribe(() => element.focus()));
883
+ }
884
+ elementIsFocused(element) {
885
+ return isPlatformBrowser(this.platformId) && document.activeElement === element;
886
+ }
887
+ ngZoneIsStableInBrowser() {
888
+ // Credit: Material: https://github.com/angular/material2/blob/master/src/lib/datepicker/calendar.ts
889
+ return this._ngZone.onStable.asObservable().pipe(first(), filter(() => isPlatformBrowser(this.platformId)));
890
+ }
891
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DatepickerFocusService, deps: [{ token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
892
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DatepickerFocusService }); }
893
+ }
894
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DatepickerFocusService, decorators: [{
895
+ type: Injectable
896
+ }], ctorParameters: () => [{ type: i0.NgZone }, { type: undefined, decorators: [{
897
+ type: Inject,
898
+ args: [PLATFORM_ID]
899
+ }] }] });
900
+
901
+ /*
902
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
903
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
904
+ * This software is released under MIT license.
905
+ * The full license information can be found in LICENSE in the root directory of this project.
906
+ */
907
+ class ClrMonthpicker {
908
+ constructor(_localeHelperService, _dateNavigationService, _datepickerFocusService, _elRef, _viewManagerService, commonStrings) {
909
+ this._localeHelperService = _localeHelperService;
910
+ this._dateNavigationService = _dateNavigationService;
911
+ this._datepickerFocusService = _datepickerFocusService;
912
+ this._elRef = _elRef;
913
+ this._viewManagerService = _viewManagerService;
914
+ this.commonStrings = commonStrings;
915
+ this._focusedMonthIndex = this.calendarMonthIndex;
916
+ }
917
+ /**
918
+ * Gets the months array which is used to rendered the monthpicker view.
919
+ * Months are in the TranslationWidth.Wide format.
920
+ */
921
+ get monthNames() {
922
+ return this._localeHelperService.localeMonthsWide;
923
+ }
924
+ /**
925
+ * Gets the month value of the Calendar.
926
+ */
927
+ get calendarMonthIndex() {
928
+ return this._dateNavigationService.displayedCalendar.month;
929
+ }
930
+ /**
931
+ * Gets the year which the user is currently on.
932
+ */
933
+ get calendarEndMonthIndex() {
934
+ return this._dateNavigationService.selectedEndDay?.month;
935
+ }
936
+ get yearAttrString() {
937
+ return this.commonStrings.parse(this.commonStrings.keys.datepickerSelectYearText, {
938
+ CALENDAR_YEAR: this.calendarYear.toString(),
939
+ });
940
+ }
941
+ /**
942
+ * Returns the year value of the calendar.
943
+ */
944
+ get calendarYear() {
945
+ return this._dateNavigationService.displayedCalendar.year;
946
+ }
947
+ get currentCalendarYear() {
948
+ return new Date().getFullYear();
949
+ }
950
+ get currentCalendarMonth() {
951
+ return new Date().getMonth();
952
+ }
953
+ getIsRangeStartMonth(monthIndex) {
954
+ return (this._dateNavigationService.isRangePicker &&
955
+ this.calendarYear === this._dateNavigationService.selectedDay?.year &&
956
+ monthIndex === this._dateNavigationService.selectedDay?.month);
957
+ }
958
+ getIsRangeEndMonth(monthIndex) {
959
+ return (this._dateNavigationService.isRangePicker &&
960
+ this.calendarYear === this._dateNavigationService.selectedEndDay?.year &&
961
+ monthIndex === this._dateNavigationService.selectedEndDay?.month);
962
+ }
963
+ /**
964
+ * Calls the ViewManagerService to change to the yearpicker view.
965
+ */
966
+ changeToYearView() {
967
+ this._viewManagerService.changeToYearView();
968
+ }
969
+ /**
970
+ * Focuses on the current calendar month when the View is initialized.
971
+ */
972
+ ngAfterViewInit() {
973
+ this._datepickerFocusService.focusCell(this._elRef);
974
+ }
975
+ /**
976
+ * Handles the Keyboard arrow navigation for the monthpicker.
977
+ */
978
+ onKeyDown(event) {
979
+ // NOTE: Didn't move this to the date navigation service because
980
+ // the logic is fairly simple and it didn't make sense for me
981
+ // to create extra observables just to move this logic to the service.
982
+ if (event) {
983
+ const key = event.key;
984
+ if (key === Keys.ArrowUp && this._focusedMonthIndex > 1) {
985
+ event.preventDefault();
986
+ this._focusedMonthIndex -= 2;
987
+ this._datepickerFocusService.focusCell(this._elRef);
988
+ }
989
+ else if (key === Keys.ArrowDown && this._focusedMonthIndex < 10) {
990
+ event.preventDefault();
991
+ this._focusedMonthIndex += 2;
992
+ this._datepickerFocusService.focusCell(this._elRef);
993
+ }
994
+ else if (key === Keys.ArrowRight && this._focusedMonthIndex < 11) {
995
+ event.preventDefault();
996
+ this._focusedMonthIndex++;
997
+ this._datepickerFocusService.focusCell(this._elRef);
998
+ }
999
+ else if (key === Keys.ArrowLeft && this._focusedMonthIndex > 0) {
1000
+ event.preventDefault();
1001
+ this._focusedMonthIndex--;
1002
+ this._datepickerFocusService.focusCell(this._elRef);
1003
+ }
1004
+ }
1005
+ }
1006
+ isSelected(monthIndex) {
1007
+ return ((this._dateNavigationService.selectedDay?.year === this.calendarYear &&
1008
+ monthIndex === this._dateNavigationService.selectedDay?.month) ||
1009
+ (this._dateNavigationService.selectedEndDay?.year === this.calendarYear &&
1010
+ monthIndex === this.calendarEndMonthIndex));
1011
+ }
1012
+ /**
1013
+ * Calls the DateNavigationService to update the hovered month value of the calendar
1014
+ */
1015
+ onHover(monthIndex) {
1016
+ this._dateNavigationService.hoveredMonth = monthIndex;
1017
+ }
1018
+ /**
1019
+ * Calls the DateNavigationService to update the month value of the calendar.
1020
+ * Also changes the view to the daypicker.
1021
+ */
1022
+ changeMonth(monthIndex) {
1023
+ this._dateNavigationService.changeMonth(monthIndex);
1024
+ this._viewManagerService.changeToDayView();
1025
+ }
1026
+ /**
1027
+ * Compares the month passed to the focused month and returns the tab index.
1028
+ */
1029
+ getTabIndex(monthIndex) {
1030
+ return monthIndex === this._focusedMonthIndex ? 0 : -1;
1031
+ }
1032
+ /**
1033
+ * Calls the DateNavigationService to move to the next month.
1034
+ */
1035
+ nextYear() {
1036
+ this._dateNavigationService.moveToNextYear();
1037
+ }
1038
+ /**
1039
+ * Calls the DateNavigationService to move to the previous month.
1040
+ */
1041
+ previousYear() {
1042
+ this._dateNavigationService.moveToPreviousYear();
1043
+ }
1044
+ /**
1045
+ * Calls the DateNavigationService to move to the current month.
1046
+ */
1047
+ currentYear() {
1048
+ this._dateNavigationService.moveToCurrentMonth();
1049
+ }
1050
+ /**
1051
+ * Applicable only to date range picker
1052
+ * Compares the month passed is in between the start and end date range
1053
+ */
1054
+ isInRange(monthIndex) {
1055
+ if (!this._dateNavigationService.isRangePicker) {
1056
+ return false;
1057
+ }
1058
+ if (this._dateNavigationService.selectedDay && this._dateNavigationService.selectedEndDay) {
1059
+ return ((this.calendarYear === this._dateNavigationService.selectedDay.year &&
1060
+ monthIndex > this._dateNavigationService.selectedDay.month &&
1061
+ this.calendarYear === this._dateNavigationService.selectedEndDay.year &&
1062
+ monthIndex < this._dateNavigationService.selectedEndDay.month) ||
1063
+ (this._dateNavigationService.selectedDay.year !== this._dateNavigationService.selectedEndDay.year &&
1064
+ this.calendarYear === this._dateNavigationService.selectedDay.year &&
1065
+ monthIndex > this._dateNavigationService.selectedDay.month) ||
1066
+ (this._dateNavigationService.selectedDay.year !== this._dateNavigationService.selectedEndDay.year &&
1067
+ this.calendarYear === this._dateNavigationService.selectedEndDay.year &&
1068
+ monthIndex < this._dateNavigationService.selectedEndDay.month) ||
1069
+ (this.calendarYear > this._dateNavigationService.selectedDay.year &&
1070
+ this.calendarYear < this._dateNavigationService.selectedEndDay.year));
1071
+ }
1072
+ else if (this._dateNavigationService.selectedDay && !this._dateNavigationService.selectedEndDay) {
1073
+ return ((this.calendarYear === this._dateNavigationService.selectedDay.year &&
1074
+ monthIndex > this._dateNavigationService.selectedDay.month &&
1075
+ monthIndex < this._dateNavigationService.hoveredMonth) ||
1076
+ (this.calendarYear > this._dateNavigationService.selectedDay.year &&
1077
+ monthIndex < this._dateNavigationService.hoveredMonth));
1078
+ }
1079
+ else {
1080
+ return false;
1081
+ }
1082
+ }
1083
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrMonthpicker, deps: [{ token: LocaleHelperService }, { token: DateNavigationService }, { token: DatepickerFocusService }, { token: i0.ElementRef }, { token: ViewManagerService }, { token: i4.ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component }); }
1084
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrMonthpicker, isStandalone: false, selector: "clr-monthpicker", host: { attributes: { "role": "application" }, listeners: { "keydown": "onKeyDown($event)" }, properties: { "class.monthpicker": "true" } }, ngImport: i0, template: `
1085
+ <div class="calendar-header in-monthpicker">
1086
+ <div class="year-view-switcher">
1087
+ <button
1088
+ class="calendar-btn yearpicker-trigger"
1089
+ type="button"
1090
+ (click)="changeToYearView()"
1091
+ [attr.aria-label]="yearAttrString"
1092
+ [attr.title]="yearAttrString"
1093
+ >
1094
+ {{ calendarYear }}
1095
+ </button>
1096
+ </div>
1097
+ <div class="calendar-switchers">
1098
+ <button
1099
+ class="calendar-btn switcher"
1100
+ type="button"
1101
+ (click)="previousYear()"
1102
+ [attr.aria-label]="commonStrings.keys.datepickerPreviousMonth"
1103
+ >
1104
+ <cds-icon shape="angle" direction="left" [attr.title]="commonStrings.keys.datepickerPreviousMonth"></cds-icon>
1105
+ </button>
1106
+ <button
1107
+ class="calendar-btn switcher"
1108
+ type="button"
1109
+ (click)="currentYear()"
1110
+ [attr.aria-label]="commonStrings.keys.datepickerCurrentMonth"
1111
+ >
1112
+ <cds-icon shape="event" [attr.title]="commonStrings.keys.datepickerCurrentMonth"></cds-icon>
1113
+ </button>
1114
+ <button
1115
+ class="calendar-btn switcher"
1116
+ type="button"
1117
+ (click)="nextYear()"
1118
+ [attr.aria-label]="commonStrings.keys.datepickerNextMonth"
1119
+ >
1120
+ <cds-icon shape="angle" direction="right" [attr.title]="commonStrings.keys.datepickerNextMonth"></cds-icon>
1121
+ </button>
1122
+ </div>
1123
+ </div>
1124
+ <div class="months">
1125
+ @for (month of monthNames; track month; let monthIndex = $index) {
1126
+ <button
1127
+ type="button"
1128
+ class="calendar-btn month"
1129
+ (click)="changeMonth(monthIndex)"
1130
+ [class.is-selected]="isSelected(monthIndex)"
1131
+ [class.is-start-range]="getIsRangeStartMonth(monthIndex)"
1132
+ [class.is-end-range]="getIsRangeEndMonth(monthIndex)"
1133
+ [class.in-range]="isInRange(monthIndex)"
1134
+ [attr.tabindex]="getTabIndex(monthIndex)"
1135
+ [class.is-today]="calendarYear === currentCalendarYear && monthIndex === currentCalendarMonth"
1136
+ (mouseenter)="onHover(monthIndex)"
1137
+ >
1138
+ {{ month }}
1139
+ </button>
1140
+ }
1141
+ </div>
1142
+ `, isInline: true, dependencies: [{ kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }] }); }
1143
+ }
1144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrMonthpicker, decorators: [{
1145
+ type: Component,
1146
+ args: [{
1147
+ selector: 'clr-monthpicker',
1148
+ template: `
1149
+ <div class="calendar-header in-monthpicker">
1150
+ <div class="year-view-switcher">
1151
+ <button
1152
+ class="calendar-btn yearpicker-trigger"
1153
+ type="button"
1154
+ (click)="changeToYearView()"
1155
+ [attr.aria-label]="yearAttrString"
1156
+ [attr.title]="yearAttrString"
1157
+ >
1158
+ {{ calendarYear }}
1159
+ </button>
1160
+ </div>
1161
+ <div class="calendar-switchers">
1162
+ <button
1163
+ class="calendar-btn switcher"
1164
+ type="button"
1165
+ (click)="previousYear()"
1166
+ [attr.aria-label]="commonStrings.keys.datepickerPreviousMonth"
1167
+ >
1168
+ <cds-icon shape="angle" direction="left" [attr.title]="commonStrings.keys.datepickerPreviousMonth"></cds-icon>
1169
+ </button>
1170
+ <button
1171
+ class="calendar-btn switcher"
1172
+ type="button"
1173
+ (click)="currentYear()"
1174
+ [attr.aria-label]="commonStrings.keys.datepickerCurrentMonth"
1175
+ >
1176
+ <cds-icon shape="event" [attr.title]="commonStrings.keys.datepickerCurrentMonth"></cds-icon>
1177
+ </button>
1178
+ <button
1179
+ class="calendar-btn switcher"
1180
+ type="button"
1181
+ (click)="nextYear()"
1182
+ [attr.aria-label]="commonStrings.keys.datepickerNextMonth"
1183
+ >
1184
+ <cds-icon shape="angle" direction="right" [attr.title]="commonStrings.keys.datepickerNextMonth"></cds-icon>
1185
+ </button>
1186
+ </div>
1187
+ </div>
1188
+ <div class="months">
1189
+ @for (month of monthNames; track month; let monthIndex = $index) {
1190
+ <button
1191
+ type="button"
1192
+ class="calendar-btn month"
1193
+ (click)="changeMonth(monthIndex)"
1194
+ [class.is-selected]="isSelected(monthIndex)"
1195
+ [class.is-start-range]="getIsRangeStartMonth(monthIndex)"
1196
+ [class.is-end-range]="getIsRangeEndMonth(monthIndex)"
1197
+ [class.in-range]="isInRange(monthIndex)"
1198
+ [attr.tabindex]="getTabIndex(monthIndex)"
1199
+ [class.is-today]="calendarYear === currentCalendarYear && monthIndex === currentCalendarMonth"
1200
+ (mouseenter)="onHover(monthIndex)"
1201
+ >
1202
+ {{ month }}
1203
+ </button>
1204
+ }
1205
+ </div>
1206
+ `,
1207
+ host: {
1208
+ '[class.monthpicker]': 'true',
1209
+ role: 'application',
1210
+ },
1211
+ standalone: false,
1212
+ }]
1213
+ }], ctorParameters: () => [{ type: LocaleHelperService }, { type: DateNavigationService }, { type: DatepickerFocusService }, { type: i0.ElementRef }, { type: ViewManagerService }, { type: i4.ClrCommonStringsService }], propDecorators: { onKeyDown: [{
1214
+ type: HostListener,
1215
+ args: ['keydown', ['$event']]
1216
+ }] } });
1217
+
1218
+ /*
1219
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1220
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1221
+ * This software is released under MIT license.
1222
+ * The full license information can be found in LICENSE in the root directory of this project.
1223
+ */
1224
+ const YEARS_TO_DISPLAY = 10;
1225
+ class YearRangeModel {
1226
+ constructor(year) {
1227
+ this.year = year;
1228
+ this.yearRange = [];
1229
+ this.generateYearRange();
1230
+ }
1231
+ /**
1232
+ * Gets the number in the middle of the range.
1233
+ */
1234
+ get middleYear() {
1235
+ return this.yearRange[Math.floor(this.yearRange.length / 2)];
1236
+ }
1237
+ /**
1238
+ * Generates the YearRangeModel for the next decade.
1239
+ */
1240
+ nextDecade() {
1241
+ return new YearRangeModel(this.year + 10);
1242
+ }
1243
+ /**
1244
+ * Generates the YearRangeModel for the previous decade.
1245
+ */
1246
+ previousDecade() {
1247
+ return new YearRangeModel(this.year - 10);
1248
+ }
1249
+ /**
1250
+ * Generates the YearRangeModel for the current decade.
1251
+ */
1252
+ currentDecade() {
1253
+ return new YearRangeModel(new Date().getFullYear());
1254
+ }
1255
+ /**
1256
+ * Checks if the value is in the YearRangeModel.
1257
+ */
1258
+ inRange(value) {
1259
+ return this.yearRange.indexOf(value) > -1;
1260
+ }
1261
+ /**
1262
+ * Generates the year range based on the year parameter.
1263
+ * eg: If 2018 is passed the output will be [2010, 2011, ..., 2019]
1264
+ */
1265
+ generateYearRange() {
1266
+ const remainder = this.year % YEARS_TO_DISPLAY;
1267
+ const floor = this.year - remainder;
1268
+ const ceil = floor + YEARS_TO_DISPLAY;
1269
+ this.yearRange = this.generateRange(floor, ceil);
1270
+ }
1271
+ /**
1272
+ * Function which generate a range of numbers from floor to ceil.
1273
+ */
1274
+ generateRange(floor, ceil) {
1275
+ return Array.from({ length: ceil - floor }, (_v, k) => k + floor);
1276
+ }
1277
+ }
1278
+
1279
+ /*
1280
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1281
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1282
+ * This software is released under MIT license.
1283
+ * The full license information can be found in LICENSE in the root directory of this project.
1284
+ */
1285
+ class ClrYearpicker {
1286
+ constructor(_dateNavigationService, _viewManagerService, _datepickerFocusService, _elRef, commonStrings) {
1287
+ this._dateNavigationService = _dateNavigationService;
1288
+ this._viewManagerService = _viewManagerService;
1289
+ this._datepickerFocusService = _datepickerFocusService;
1290
+ this._elRef = _elRef;
1291
+ this.commonStrings = commonStrings;
1292
+ this.yearRangeModel = new YearRangeModel(this.calendarYear);
1293
+ this._focusedYear = this.calendarYear;
1294
+ }
1295
+ get selectedStartYear() {
1296
+ return this._dateNavigationService.selectedDay?.year;
1297
+ }
1298
+ get selectedEndYear() {
1299
+ return this._dateNavigationService.selectedEndDay?.year;
1300
+ }
1301
+ /**
1302
+ * Gets the year which the user is currently on.
1303
+ */
1304
+ get calendarYear() {
1305
+ return this._dateNavigationService.displayedCalendar.year;
1306
+ }
1307
+ isCurrentCalendarYear(year) {
1308
+ return year === new Date().getFullYear();
1309
+ }
1310
+ getIsRangeStartYear(year) {
1311
+ return this._dateNavigationService.isRangePicker && year === this._dateNavigationService.selectedDay?.year;
1312
+ }
1313
+ getIsRangeEndYear(year) {
1314
+ return this._dateNavigationService.isRangePicker && year === this._dateNavigationService.selectedEndDay?.year;
1315
+ }
1316
+ /**
1317
+ * Focuses on the current calendar year when the View is initialized.
1318
+ */
1319
+ ngAfterViewInit() {
1320
+ this._datepickerFocusService.focusCell(this._elRef);
1321
+ }
1322
+ /**
1323
+ * Handles the Keyboard arrow navigation for the yearpicker.
1324
+ */
1325
+ onKeyDown(event) {
1326
+ // NOTE: Didn't move this to the date navigation service because
1327
+ // the logic is fairly simple and it didn't make sense for me
1328
+ // to create extra observables just to move this logic to the service.
1329
+ if (event) {
1330
+ const key = event.key;
1331
+ if (key === Keys.ArrowUp) {
1332
+ event.preventDefault();
1333
+ this.incrementFocusYearBy(-2);
1334
+ }
1335
+ else if (key === Keys.ArrowDown) {
1336
+ event.preventDefault();
1337
+ this.incrementFocusYearBy(2);
1338
+ }
1339
+ else if (key === Keys.ArrowRight) {
1340
+ event.preventDefault();
1341
+ this.incrementFocusYearBy(1);
1342
+ }
1343
+ else if (key === Keys.ArrowLeft) {
1344
+ event.preventDefault();
1345
+ this.incrementFocusYearBy(-1);
1346
+ }
1347
+ }
1348
+ }
1349
+ /**
1350
+ * Calls the DateNavigationService to update the year value of the calendar.
1351
+ * Also changes the view to the daypicker.
1352
+ */
1353
+ changeYear(year) {
1354
+ this._dateNavigationService.changeYear(year);
1355
+ this._viewManagerService.changeToDayView();
1356
+ }
1357
+ /**
1358
+ * Calls the DateNavigationService to update the hovered year value of the calendar
1359
+ */
1360
+ onHover(year) {
1361
+ this._dateNavigationService.hoveredYear = year;
1362
+ }
1363
+ /**
1364
+ * Updates the YearRangeModel to the previous decade.
1365
+ */
1366
+ previousDecade() {
1367
+ this.yearRangeModel = this.yearRangeModel.previousDecade();
1368
+ // Year in the yearpicker is not focused because while navigating to a different decade,
1369
+ // you want the focus to remain on the decade switcher arrows.
1370
+ }
1371
+ /**
1372
+ * Updates the YearRangeModel to the current decade.
1373
+ */
1374
+ currentDecade() {
1375
+ if (!this.yearRangeModel.inRange(this._dateNavigationService.today.year)) {
1376
+ this.yearRangeModel = this.yearRangeModel.currentDecade();
1377
+ }
1378
+ this._datepickerFocusService.focusCell(this._elRef);
1379
+ }
1380
+ /**
1381
+ * Updates the YearRangeModel to the next decade.
1382
+ */
1383
+ nextDecade() {
1384
+ this.yearRangeModel = this.yearRangeModel.nextDecade();
1385
+ // Year in the yearpicker is not focused because while navigating to a different decade,
1386
+ // you want the focus to remain on the decade switcher arrows.
1387
+ }
1388
+ /**
1389
+ * Compares the year passed to the focused year and returns the tab index.
1390
+ */
1391
+ getTabIndex(year) {
1392
+ if (!this.yearRangeModel.inRange(this._focusedYear)) {
1393
+ if (this.yearRangeModel.inRange(this.calendarYear)) {
1394
+ this._focusedYear = this.calendarYear;
1395
+ }
1396
+ else if (this.yearRangeModel.inRange(this.selectedEndYear)) {
1397
+ this._focusedYear = this.selectedEndYear;
1398
+ }
1399
+ else {
1400
+ this._focusedYear = this.yearRangeModel.middleYear;
1401
+ }
1402
+ }
1403
+ return this._focusedYear === year ? 0 : -1;
1404
+ }
1405
+ /**
1406
+ * Applicable only to date range picker
1407
+ * Compares the year passed is in between the start and end date range
1408
+ */
1409
+ isInRange(year) {
1410
+ if (!this._dateNavigationService.isRangePicker) {
1411
+ return false;
1412
+ }
1413
+ if (this._dateNavigationService.selectedDay?.year && this.selectedEndYear) {
1414
+ return year > this.selectedStartYear && year < this.selectedEndYear;
1415
+ }
1416
+ else if (this._dateNavigationService.selectedDay?.year && !this.selectedEndYear) {
1417
+ return year > this.selectedStartYear && year < this._dateNavigationService.hoveredYear;
1418
+ }
1419
+ else {
1420
+ return false;
1421
+ }
1422
+ }
1423
+ changeToDayView() {
1424
+ this._viewManagerService.changeToDayView();
1425
+ }
1426
+ /**
1427
+ * Increments the focus year by the value passed. Updates the YearRangeModel if the
1428
+ * new value is not in the current decade.
1429
+ */
1430
+ incrementFocusYearBy(value) {
1431
+ this._focusedYear = this._focusedYear + value;
1432
+ if (!this.yearRangeModel.inRange(this._focusedYear)) {
1433
+ if (value > 0) {
1434
+ this.yearRangeModel = this.yearRangeModel.nextDecade();
1435
+ }
1436
+ else {
1437
+ this.yearRangeModel = this.yearRangeModel.previousDecade();
1438
+ }
1439
+ }
1440
+ this._datepickerFocusService.focusCell(this._elRef);
1441
+ }
1442
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrYearpicker, deps: [{ token: DateNavigationService }, { token: ViewManagerService }, { token: DatepickerFocusService }, { token: i0.ElementRef }, { token: i4.ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component }); }
1443
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrYearpicker, isStandalone: false, selector: "clr-yearpicker", host: { attributes: { "role": "application" }, listeners: { "keydown": "onKeyDown($event)" }, properties: { "class.yearpicker": "true" } }, ngImport: i0, template: `
1444
+ <div class="calendar-header">
1445
+ <div class="calendar-pickers">
1446
+ <button class="calendar-btn yearpicker-trigger year-range" type="button" (click)="changeToDayView()">
1447
+ {{ yearRangeModel.yearRange[0] }} - {{ yearRangeModel.yearRange[yearRangeModel.yearRange.length - 1] }}
1448
+ </button>
1449
+ </div>
1450
+ <div class="year-switchers">
1451
+ <button
1452
+ class="calendar-btn switcher"
1453
+ type="button"
1454
+ (click)="previousDecade()"
1455
+ [attr.aria-label]="commonStrings.keys.datepickerPreviousDecade"
1456
+ >
1457
+ <cds-icon
1458
+ shape="angle"
1459
+ direction="left"
1460
+ [attr.title]="commonStrings.keys.datepickerPreviousDecade"
1461
+ ></cds-icon>
1462
+ </button>
1463
+ <button
1464
+ class="calendar-btn switcher"
1465
+ type="button"
1466
+ (click)="currentDecade()"
1467
+ [attr.aria-label]="commonStrings.keys.datepickerCurrentDecade"
1468
+ >
1469
+ <cds-icon shape="event" [attr.title]="commonStrings.keys.datepickerCurrentDecade"></cds-icon>
1470
+ </button>
1471
+ <button
1472
+ class="calendar-btn switcher"
1473
+ type="button"
1474
+ (click)="nextDecade()"
1475
+ [attr.aria-label]="commonStrings.keys.datepickerNextDecade"
1476
+ >
1477
+ <cds-icon shape="angle" direction="right" [attr.title]="commonStrings.keys.datepickerNextDecade"></cds-icon>
1478
+ </button>
1479
+ </div>
1480
+ </div>
1481
+
1482
+ <div class="years">
1483
+ @for (year of yearRangeModel.yearRange; track year) {
1484
+ <button
1485
+ type="button"
1486
+ class="calendar-btn year"
1487
+ [attr.tabindex]="getTabIndex(year)"
1488
+ [class.is-selected]="year === selectedStartYear || year === selectedEndYear"
1489
+ [class.is-start-range]="getIsRangeStartYear(year)"
1490
+ [class.is-end-range]="getIsRangeEndYear(year)"
1491
+ [class.in-range]="isInRange(year)"
1492
+ [class.is-today]="isCurrentCalendarYear(year)"
1493
+ (click)="changeYear(year)"
1494
+ (mouseenter)="onHover(year)"
1495
+ >
1496
+ {{ year }}
1497
+ </button>
1498
+ }
1499
+ </div>
1500
+ `, isInline: true, dependencies: [{ kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }] }); }
1501
+ }
1502
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrYearpicker, decorators: [{
1503
+ type: Component,
1504
+ args: [{
1505
+ selector: 'clr-yearpicker',
1506
+ template: `
1507
+ <div class="calendar-header">
1508
+ <div class="calendar-pickers">
1509
+ <button class="calendar-btn yearpicker-trigger year-range" type="button" (click)="changeToDayView()">
1510
+ {{ yearRangeModel.yearRange[0] }} - {{ yearRangeModel.yearRange[yearRangeModel.yearRange.length - 1] }}
1511
+ </button>
1512
+ </div>
1513
+ <div class="year-switchers">
1514
+ <button
1515
+ class="calendar-btn switcher"
1516
+ type="button"
1517
+ (click)="previousDecade()"
1518
+ [attr.aria-label]="commonStrings.keys.datepickerPreviousDecade"
1519
+ >
1520
+ <cds-icon
1521
+ shape="angle"
1522
+ direction="left"
1523
+ [attr.title]="commonStrings.keys.datepickerPreviousDecade"
1524
+ ></cds-icon>
1525
+ </button>
1526
+ <button
1527
+ class="calendar-btn switcher"
1528
+ type="button"
1529
+ (click)="currentDecade()"
1530
+ [attr.aria-label]="commonStrings.keys.datepickerCurrentDecade"
1531
+ >
1532
+ <cds-icon shape="event" [attr.title]="commonStrings.keys.datepickerCurrentDecade"></cds-icon>
1533
+ </button>
1534
+ <button
1535
+ class="calendar-btn switcher"
1536
+ type="button"
1537
+ (click)="nextDecade()"
1538
+ [attr.aria-label]="commonStrings.keys.datepickerNextDecade"
1539
+ >
1540
+ <cds-icon shape="angle" direction="right" [attr.title]="commonStrings.keys.datepickerNextDecade"></cds-icon>
1541
+ </button>
1542
+ </div>
1543
+ </div>
1544
+
1545
+ <div class="years">
1546
+ @for (year of yearRangeModel.yearRange; track year) {
1547
+ <button
1548
+ type="button"
1549
+ class="calendar-btn year"
1550
+ [attr.tabindex]="getTabIndex(year)"
1551
+ [class.is-selected]="year === selectedStartYear || year === selectedEndYear"
1552
+ [class.is-start-range]="getIsRangeStartYear(year)"
1553
+ [class.is-end-range]="getIsRangeEndYear(year)"
1554
+ [class.in-range]="isInRange(year)"
1555
+ [class.is-today]="isCurrentCalendarYear(year)"
1556
+ (click)="changeYear(year)"
1557
+ (mouseenter)="onHover(year)"
1558
+ >
1559
+ {{ year }}
1560
+ </button>
1561
+ }
1562
+ </div>
1563
+ `,
1564
+ host: {
1565
+ '[class.yearpicker]': 'true',
1566
+ role: 'application',
1567
+ },
1568
+ standalone: false,
1569
+ }]
1570
+ }], ctorParameters: () => [{ type: DateNavigationService }, { type: ViewManagerService }, { type: DatepickerFocusService }, { type: i0.ElementRef }, { type: i4.ClrCommonStringsService }], propDecorators: { onKeyDown: [{
1571
+ type: HostListener,
1572
+ args: ['keydown', ['$event']]
1573
+ }] } });
1574
+
1575
+ /*
1576
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1577
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1578
+ * This software is released under MIT license.
1579
+ * The full license information can be found in LICENSE in the root directory of this project.
1580
+ */
1581
+ class DayViewModel {
1582
+ constructor(dayModel, isTodaysDate = false, isExcluded = false, isDisabled = false, isSelected = false, isFocusable = false, isRangeStartDay = false, isRangeEndDay = false) {
1583
+ this.dayModel = dayModel;
1584
+ this.isTodaysDate = isTodaysDate;
1585
+ this.isExcluded = isExcluded;
1586
+ this.isDisabled = isDisabled;
1587
+ this.isSelected = isSelected;
1588
+ this.isFocusable = isFocusable;
1589
+ this.isRangeStartDay = isRangeStartDay;
1590
+ this.isRangeEndDay = isRangeEndDay;
1591
+ }
1592
+ /**
1593
+ * Gets the tab index based on the isFocusable flag.
1594
+ */
1595
+ get tabIndex() {
1596
+ return this.isFocusable ? 0 : -1;
1597
+ }
1598
+ }
1599
+
1600
+ /*
1601
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1602
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1603
+ * This software is released under MIT license.
1604
+ * The full license information can be found in LICENSE in the root directory of this project.
1605
+ */
1606
+ class CalendarViewModel {
1607
+ constructor(calendar, selectedDay, selectedEndDay, focusableDay, today, firstDayOfWeek, excludedDates) {
1608
+ this.calendar = calendar;
1609
+ this.selectedDay = selectedDay;
1610
+ this.selectedEndDay = selectedEndDay;
1611
+ this.focusableDay = focusableDay;
1612
+ this.today = today;
1613
+ this.firstDayOfWeek = firstDayOfWeek;
1614
+ this.excludedDates = excludedDates;
1615
+ this.currMonthDayViews = [];
1616
+ this.initializeCalendarView();
1617
+ }
1618
+ /**
1619
+ * DayViewModel matrix. Size 6x7
1620
+ */
1621
+ get calendarView() {
1622
+ return this._calendarView;
1623
+ }
1624
+ /**
1625
+ * Updates the focusable day in the calendar.
1626
+ */
1627
+ updateFocusableDay(day) {
1628
+ this.setFocusableFlag(this.focusableDay, false);
1629
+ this.setFocusableFlag(day, true);
1630
+ this.focusableDay = day;
1631
+ }
1632
+ /**
1633
+ * Updates the selected day in the calendar
1634
+ */
1635
+ updateSelectedDay(day) {
1636
+ this.setSelectedDay(this.selectedDay, false);
1637
+ this.selectedDay = day;
1638
+ this.setSelectedDay(day, true);
1639
+ }
1640
+ /**
1641
+ * Updates the selected end day in the calendar
1642
+ */
1643
+ updateSelectedEndDay(day) {
1644
+ this.setSelectedDay(this.selectedEndDay, false);
1645
+ this.selectedEndDay = day;
1646
+ this.setSelectedDay(day, true);
1647
+ }
1648
+ /**
1649
+ * Generates a 6x7 matrix of DayViewModel based on the Calendar.
1650
+ * The 6x7 matrix is structured according to the first day of the week.
1651
+ * 6 rows to accommodate months which might have dates spanning over 6 weeks.
1652
+ * 7 columns because there are 7 days in a week :P :D
1653
+ */
1654
+ initializeCalendarView() {
1655
+ // Generate prev and next month calendar models.
1656
+ const prevMonthCalendar = this.calendar.previousMonth();
1657
+ const nextMonthCalendar = this.calendar.nextMonth();
1658
+ // Get no of days from prev and next months.
1659
+ const daysFromPrevMonthInCalView = this.numDaysFromPrevMonthInCalView(this.calendar.year, this.calendar.month);
1660
+ const daysFromNextMonthInCalView = TOTAL_DAYS_IN_DAYS_VIEW - (this.calendar.days.length + daysFromPrevMonthInCalView);
1661
+ // Generate prev, curr and next day view models
1662
+ let prevMonthDayViews = [];
1663
+ let nextMonthDayViews = [];
1664
+ if (daysFromPrevMonthInCalView > 0) {
1665
+ prevMonthDayViews = this.generateDayViewModels(prevMonthCalendar.days.slice(-1 * daysFromPrevMonthInCalView), true, false);
1666
+ }
1667
+ this.currMonthDayViews = this.generateDayViewModels(this.calendar.days, false, true);
1668
+ if (daysFromNextMonthInCalView > 0) {
1669
+ nextMonthDayViews = this.generateDayViewModels(nextMonthCalendar.days.slice(0, daysFromNextMonthInCalView), true, false);
1670
+ }
1671
+ // Generate calendar view and initialize flags
1672
+ this._calendarView = this.generateCalendarView(prevMonthDayViews, this.currMonthDayViews, nextMonthDayViews);
1673
+ this.initializeSelectedDay();
1674
+ this.initializeFocusableDay();
1675
+ }
1676
+ isDateExcluded(date) {
1677
+ const { minDate, maxDate } = this.excludedDates;
1678
+ const from = minDate.toComparisonString();
1679
+ const to = maxDate.toComparisonString();
1680
+ const today = date.toComparisonString();
1681
+ return !(today >= from && today <= to);
1682
+ }
1683
+ /**
1684
+ * Generates a DayViewModel array based on the DayModel passed
1685
+ */
1686
+ generateDayViewModels(days, isExcluded, isCurrentCalendar) {
1687
+ const dayViews = days.map(day => {
1688
+ return new DayViewModel(day, false, isExcluded, this.isDateExcluded(day), false, false);
1689
+ });
1690
+ if (isCurrentCalendar && this.calendar.isDayInCalendar(this.today)) {
1691
+ dayViews[this.today.date - 1].isTodaysDate = true;
1692
+ }
1693
+ return dayViews;
1694
+ }
1695
+ /**
1696
+ * Gets the first day of the current month to figure out how many dates of previous month
1697
+ * are needed to complete the Calendar View based on the first day of the week.
1698
+ * eg: Assuming locale en-US, the first day of the week is Sunday,
1699
+ * if first day of the current month lands on Wednesday, then
1700
+ * (this.getDay function would return 3 since
1701
+ * first day of the week is 0), we need the 3 days from the previous month.
1702
+ */
1703
+ numDaysFromPrevMonthInCalView(currentYear, currentMonth) {
1704
+ const firstDayOfCurrMonth = getDay(currentYear, currentMonth, 1);
1705
+ if (firstDayOfCurrMonth >= this.firstDayOfWeek) {
1706
+ return firstDayOfCurrMonth - this.firstDayOfWeek;
1707
+ }
1708
+ else {
1709
+ return NO_OF_DAYS_IN_A_WEEK + firstDayOfCurrMonth - this.firstDayOfWeek;
1710
+ }
1711
+ }
1712
+ /**
1713
+ * Checks if the Day passed is in the CalendarView.
1714
+ */
1715
+ isDayInCalendarView(day) {
1716
+ if (!this.calendar.isDayInCalendar(day)) {
1717
+ return false;
1718
+ }
1719
+ return true;
1720
+ }
1721
+ /**
1722
+ * Using the DayViewModels from the previous, current and next month, this function
1723
+ * generates the CalendarView.
1724
+ */
1725
+ generateCalendarView(prev, curr, next) {
1726
+ const combinationArr = [...prev, ...curr, ...next];
1727
+ const calendarView = [];
1728
+ for (let i = 0; i < NO_OF_ROWS_IN_CALENDAR_VIEW; i++) {
1729
+ calendarView[i] = combinationArr.slice(i * NO_OF_DAYS_IN_A_WEEK, (i + 1) * NO_OF_DAYS_IN_A_WEEK);
1730
+ }
1731
+ return calendarView;
1732
+ }
1733
+ /**
1734
+ * Initialize the selected day if the day is in the calendar.
1735
+ */
1736
+ initializeSelectedDay() {
1737
+ this.setSelectedDay(this.selectedDay, true);
1738
+ this.setSelectedDay(this.selectedEndDay, true);
1739
+ }
1740
+ /**
1741
+ * Initializes the focusable day if the day is in the calendar. If focusable day is not set, then
1742
+ * we check for the selected day. If selected day is not set then check if today is in the current
1743
+ * calendar. If not then just set the 15th of the current calendar month.
1744
+ */
1745
+ initializeFocusableDay() {
1746
+ if (this.focusableDay && this.isDayInCalendarView(this.focusableDay)) {
1747
+ this.setFocusableFlag(this.focusableDay, true);
1748
+ }
1749
+ else if (this.selectedDay && this.isDayInCalendarView(this.selectedDay)) {
1750
+ this.setFocusableFlag(this.selectedDay, true);
1751
+ this.focusableDay = this.selectedDay.clone();
1752
+ }
1753
+ else if (this.selectedEndDay && this.isDayInCalendarView(this.selectedEndDay)) {
1754
+ this.setFocusableFlag(this.selectedEndDay, true);
1755
+ this.focusableDay = this.selectedEndDay.clone();
1756
+ }
1757
+ else if (this.isDayInCalendarView(this.today)) {
1758
+ this.setFocusableFlag(this.today, true);
1759
+ this.focusableDay = this.today.clone();
1760
+ }
1761
+ else {
1762
+ this.focusableDay = new DayModel(this.calendar.year, this.calendar.month, 15);
1763
+ this.setFocusableFlag(this.focusableDay, true);
1764
+ }
1765
+ }
1766
+ setFocusableFlag(day, flag) {
1767
+ if (day) {
1768
+ this.currMonthDayViews[day.date - 1].isFocusable = flag;
1769
+ }
1770
+ }
1771
+ setSelectedDay(day, flag) {
1772
+ if (day && this.isDayInCalendarView(day)) {
1773
+ this.currMonthDayViews[day?.date - 1].isSelected = flag;
1774
+ }
1775
+ }
1776
+ }
1777
+
1778
+ /*
1779
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1780
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1781
+ * This software is released under MIT license.
1782
+ * The full license information can be found in LICENSE in the root directory of this project.
1783
+ */
1784
+ class ClrDay {
1785
+ constructor(_dateNavigationService, commonStrings) {
1786
+ this._dateNavigationService = _dateNavigationService;
1787
+ this.commonStrings = commonStrings;
1788
+ this.onSelectDay = new EventEmitter();
1789
+ }
1790
+ /**
1791
+ * DayViewModel input which is used to build the Day View.
1792
+ */
1793
+ get dayView() {
1794
+ return this._dayView;
1795
+ }
1796
+ set dayView(day) {
1797
+ this._dayView = day;
1798
+ }
1799
+ get dayString() {
1800
+ return this.dayView.isSelected
1801
+ ? this.commonStrings.parse(this.commonStrings.keys.datepickerSelectedLabel, {
1802
+ FULL_DATE: this._dayView.dayModel.toDateString(),
1803
+ })
1804
+ : this._dayView.dayModel.toDateString();
1805
+ }
1806
+ get isRangeStartDay() {
1807
+ return (this._dateNavigationService.isRangePicker &&
1808
+ this.dayView?.dayModel?.toComparisonString() === this._dateNavigationService.selectedDay?.toComparisonString());
1809
+ }
1810
+ get isRangeEndDay() {
1811
+ return (this._dateNavigationService.isRangePicker &&
1812
+ this.dayView?.dayModel?.toComparisonString() === this._dateNavigationService.selectedEndDay?.toComparisonString());
1813
+ }
1814
+ /**
1815
+ * Calls the DateNavigationService to update the hovered day value of the calendar
1816
+ */
1817
+ hoverListener() {
1818
+ if (!this.dayView.isDisabled) {
1819
+ this._dateNavigationService.hoveredDay = this.dayView.dayModel;
1820
+ }
1821
+ }
1822
+ /**
1823
+ * Updates the focusedDay in the DateNavigationService when the ClrDay is focused.
1824
+ */
1825
+ onDayViewFocus() {
1826
+ this._dateNavigationService.focusedDay = this.dayView.dayModel;
1827
+ }
1828
+ /**
1829
+ * Updates the selectedDay when the ClrDay is selected and closes the datepicker popover.
1830
+ */
1831
+ selectDay() {
1832
+ if (this.dayView.isDisabled) {
1833
+ return;
1834
+ }
1835
+ const day = this.dayView.dayModel;
1836
+ this.onSelectDay.emit(day);
1837
+ }
1838
+ /**
1839
+ * Applicable only to date range picker
1840
+ * Compares whether the day is in between the start and end date range
1841
+ */
1842
+ isInRange() {
1843
+ if (!this._dateNavigationService.isRangePicker) {
1844
+ return false;
1845
+ }
1846
+ if (this._dateNavigationService.selectedDay && this._dateNavigationService.selectedEndDay) {
1847
+ return (this._dayView.dayModel?.isAfter(this._dateNavigationService.selectedDay) &&
1848
+ this._dayView.dayModel?.isBefore(this._dateNavigationService.selectedEndDay));
1849
+ }
1850
+ else if (this._dateNavigationService.selectedDay && !this._dateNavigationService.selectedEndDay) {
1851
+ return (this._dayView.dayModel?.isAfter(this._dateNavigationService.selectedDay) &&
1852
+ this._dayView.dayModel?.isBefore(this._dateNavigationService.hoveredDay, true));
1853
+ }
1854
+ else {
1855
+ return false;
1856
+ }
1857
+ }
1858
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDay, deps: [{ token: DateNavigationService }, { token: i4.ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component }); }
1859
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrDay, isStandalone: false, selector: "clr-day", inputs: { dayView: ["clrDayView", "dayView"] }, outputs: { onSelectDay: "selectDay" }, host: { listeners: { "mouseenter": "hoverListener()" }, properties: { "class.day": "true" } }, ngImport: i0, template: `
1860
+ <button
1861
+ class="day-btn"
1862
+ type="button"
1863
+ [class.is-today]="dayView.isTodaysDate"
1864
+ [class.is-excluded]="dayView.isExcluded"
1865
+ [class.is-disabled]="dayView.isDisabled"
1866
+ [class.is-selected]="dayView.isSelected"
1867
+ [class.in-range]="isInRange()"
1868
+ [class.is-start-range]="isRangeStartDay"
1869
+ [class.is-end-range]="isRangeEndDay"
1870
+ [attr.tabindex]="dayView.tabIndex"
1871
+ (click)="selectDay()"
1872
+ (focus)="onDayViewFocus()"
1873
+ [attr.aria-current]="dayView.isTodaysDate ? 'date' : 'false'"
1874
+ [attr.aria-label]="dayString"
1875
+ [attr.aria-selected]="dayView.isSelected"
1876
+ >
1877
+ {{ dayView.dayModel.date }}
1878
+ </button>
1879
+ `, isInline: true }); }
1880
+ }
1881
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDay, decorators: [{
1882
+ type: Component,
1883
+ args: [{
1884
+ selector: 'clr-day',
1885
+ template: `
1886
+ <button
1887
+ class="day-btn"
1888
+ type="button"
1889
+ [class.is-today]="dayView.isTodaysDate"
1890
+ [class.is-excluded]="dayView.isExcluded"
1891
+ [class.is-disabled]="dayView.isDisabled"
1892
+ [class.is-selected]="dayView.isSelected"
1893
+ [class.in-range]="isInRange()"
1894
+ [class.is-start-range]="isRangeStartDay"
1895
+ [class.is-end-range]="isRangeEndDay"
1896
+ [attr.tabindex]="dayView.tabIndex"
1897
+ (click)="selectDay()"
1898
+ (focus)="onDayViewFocus()"
1899
+ [attr.aria-current]="dayView.isTodaysDate ? 'date' : 'false'"
1900
+ [attr.aria-label]="dayString"
1901
+ [attr.aria-selected]="dayView.isSelected"
1902
+ >
1903
+ {{ dayView.dayModel.date }}
1904
+ </button>
1905
+ `,
1906
+ host: { '[class.day]': 'true' },
1907
+ standalone: false,
1908
+ }]
1909
+ }], ctorParameters: () => [{ type: DateNavigationService }, { type: i4.ClrCommonStringsService }], propDecorators: { onSelectDay: [{
1910
+ type: Output,
1911
+ args: ['selectDay']
1912
+ }], dayView: [{
1913
+ type: Input,
1914
+ args: ['clrDayView']
1915
+ }], hoverListener: [{
1916
+ type: HostListener,
1917
+ args: ['mouseenter']
1918
+ }] } });
1919
+
1920
+ /*
1921
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1922
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1923
+ * This software is released under MIT license.
1924
+ * The full license information can be found in LICENSE in the root directory of this project.
1925
+ */
1926
+ class ClrCalendar {
1927
+ constructor(_localeHelperService, _dateNavigationService, _datepickerFocusService, _dateIOService, _elRef, _dateFormControlService, _popoverService) {
1928
+ this._localeHelperService = _localeHelperService;
1929
+ this._dateNavigationService = _dateNavigationService;
1930
+ this._datepickerFocusService = _datepickerFocusService;
1931
+ this._dateIOService = _dateIOService;
1932
+ this._elRef = _elRef;
1933
+ this._dateFormControlService = _dateFormControlService;
1934
+ this._popoverService = _popoverService;
1935
+ this._subs = [];
1936
+ this.generateCalendarView();
1937
+ this.initializeSubscriptions();
1938
+ }
1939
+ /**
1940
+ * Gets the locale days according to the TranslationWidth.Narrow format.
1941
+ */
1942
+ get localeDays() {
1943
+ return this._localeHelperService.localeDays;
1944
+ }
1945
+ get calendar() {
1946
+ return this._dateNavigationService.displayedCalendar;
1947
+ }
1948
+ get selectedDay() {
1949
+ return this._dateNavigationService.selectedDay;
1950
+ }
1951
+ get selectedEndDay() {
1952
+ return this._dateNavigationService.selectedEndDay;
1953
+ }
1954
+ get focusedDay() {
1955
+ return this._dateNavigationService.focusedDay;
1956
+ }
1957
+ get today() {
1958
+ return this._dateNavigationService.today;
1959
+ }
1960
+ /**
1961
+ * Focuses on the focusable day when the Calendar View is initialized.
1962
+ */
1963
+ ngAfterViewInit() {
1964
+ this._datepickerFocusService.focusCell(this._elRef);
1965
+ }
1966
+ /**
1967
+ * Unsubscribe from subscriptions.
1968
+ */
1969
+ ngOnDestroy() {
1970
+ this._subs.forEach((sub) => sub.unsubscribe());
1971
+ }
1972
+ /**
1973
+ * Delegates Keyboard arrow navigation to the DateNavigationService.
1974
+ */
1975
+ onKeyDown(event) {
1976
+ if (event && this.focusedDay) {
1977
+ switch (event.key) {
1978
+ case Keys.ArrowUp:
1979
+ event.preventDefault();
1980
+ this._dateNavigationService.incrementFocusDay(-1 * NO_OF_DAYS_IN_A_WEEK);
1981
+ break;
1982
+ case Keys.ArrowDown:
1983
+ event.preventDefault();
1984
+ this._dateNavigationService.incrementFocusDay(NO_OF_DAYS_IN_A_WEEK);
1985
+ break;
1986
+ case Keys.ArrowLeft:
1987
+ event.preventDefault();
1988
+ this._dateNavigationService.incrementFocusDay(-1);
1989
+ break;
1990
+ case Keys.ArrowRight:
1991
+ event.preventDefault();
1992
+ this._dateNavigationService.incrementFocusDay(1);
1993
+ break;
1994
+ default:
1995
+ break; // No default case. ESLint x-(
1996
+ }
1997
+ }
1998
+ }
1999
+ setSelectedDay(day) {
2000
+ const hasActionButtons = this._dateNavigationService.hasActionButtons;
2001
+ const selectedDates = this.updateCalendarViewModal(day);
2002
+ this._dateNavigationService.notifySelectedDayChanged(selectedDates, { emitEvent: !hasActionButtons });
2003
+ if (!hasActionButtons) {
2004
+ this._dateFormControlService.markAsDirty();
2005
+ this.validateAndCloseDatePicker();
2006
+ }
2007
+ }
2008
+ /**
2009
+ * Initialize subscriptions to:
2010
+ * 1. update the calendar view model.
2011
+ * 2. update the focusable day in the calendar view model.
2012
+ * 3. focus on the focusable day in the calendar.
2013
+ */
2014
+ initializeSubscriptions() {
2015
+ this._subs.push(this._dateNavigationService.displayedCalendarChange.subscribe(() => {
2016
+ this.generateCalendarView();
2017
+ }));
2018
+ this._subs.push(this._dateNavigationService.focusedDayChange.subscribe((focusedDay) => {
2019
+ this.calendarViewModel.updateFocusableDay(focusedDay);
2020
+ }));
2021
+ this._subs.push(this._dateNavigationService.focusOnCalendarChange.subscribe(() => {
2022
+ this._datepickerFocusService.focusCell(this._elRef);
2023
+ }));
2024
+ this._subs.push(this._dateNavigationService.refreshCalendarView.subscribe(() => {
2025
+ this.refreshCalendarViewModal();
2026
+ }));
2027
+ }
2028
+ validateAndCloseDatePicker() {
2029
+ if ((this._dateNavigationService.isRangePicker &&
2030
+ this._dateNavigationService.selectedDay &&
2031
+ this._dateNavigationService.selectedEndDay) ||
2032
+ (!this._dateNavigationService.isRangePicker && this._dateNavigationService.selectedDay)) {
2033
+ this._popoverService.open = false;
2034
+ }
2035
+ }
2036
+ updateCalendarViewModal(day) {
2037
+ const startDate = this.calendarViewModel.selectedDay || null, isRangePicker = this._dateNavigationService.isRangePicker;
2038
+ let endDate = this.calendarViewModel.selectedEndDay || null;
2039
+ if (isRangePicker) {
2040
+ if (!startDate || (!!startDate && !!endDate) || (!!startDate && day?.isBefore(startDate))) {
2041
+ this.calendarViewModel.updateSelectedDay(day);
2042
+ if (endDate) {
2043
+ endDate = undefined;
2044
+ this.calendarViewModel.updateSelectedEndDay(endDate);
2045
+ }
2046
+ }
2047
+ else {
2048
+ this.calendarViewModel.updateSelectedEndDay(day);
2049
+ }
2050
+ }
2051
+ else {
2052
+ this.calendarViewModel.updateSelectedDay(day);
2053
+ }
2054
+ return isRangePicker
2055
+ ? { startDate: this.calendarViewModel.selectedDay, endDate: this.calendarViewModel.selectedEndDay }
2056
+ : this.calendarViewModel.selectedDay;
2057
+ }
2058
+ refreshCalendarViewModal() {
2059
+ this.calendarViewModel.updateSelectedDay(this._dateNavigationService.selectedDay);
2060
+ if (this._dateNavigationService.isRangePicker) {
2061
+ this.calendarViewModel.updateSelectedEndDay(this._dateNavigationService.selectedEndDay);
2062
+ }
2063
+ }
2064
+ /**
2065
+ * Generates the Calendar View based on the calendar retrieved from the DateNavigationService.
2066
+ */
2067
+ generateCalendarView() {
2068
+ this.calendarViewModel = new CalendarViewModel(this.calendar, this.selectedDay, this.selectedEndDay, this.focusedDay, this.today, this._localeHelperService.firstDayOfWeek, this._dateIOService.disabledDates);
2069
+ }
2070
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrCalendar, deps: [{ token: LocaleHelperService }, { token: DateNavigationService }, { token: DatepickerFocusService }, { token: DateIOService }, { token: i0.ElementRef }, { token: DateFormControlService }, { token: i1.ClrPopoverService }], target: i0.ɵɵFactoryTarget.Component }); }
2071
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrCalendar, isStandalone: false, selector: "clr-calendar", host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n<table class=\"calendar-table\" role=\"presentation\">\n <tr class=\"calendar-row weekdays\">\n @for (day of localeDays; track day) {\n <th class=\"calendar-cell weekday\">\n <span [attr.aria-label]=\"day.day\">{{day.narrow}}</span>\n </th>\n }\n </tr>\n @for (row of calendarViewModel.calendarView; track row) {\n <tr class=\"calendar-row\">\n @for (dayView of row; track dayView) {\n <td class=\"calendar-cell\">\n <clr-day [clrDayView]=\"dayView\" (selectDay)=\"setSelectedDay($event)\"></clr-day>\n </td>\n }\n </tr>\n }\n</table>\n", dependencies: [{ kind: "component", type: ClrDay, selector: "clr-day", inputs: ["clrDayView"], outputs: ["selectDay"] }] }); }
2072
+ }
2073
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrCalendar, decorators: [{
2074
+ type: Component,
2075
+ args: [{ selector: 'clr-calendar', standalone: false, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n<table class=\"calendar-table\" role=\"presentation\">\n <tr class=\"calendar-row weekdays\">\n @for (day of localeDays; track day) {\n <th class=\"calendar-cell weekday\">\n <span [attr.aria-label]=\"day.day\">{{day.narrow}}</span>\n </th>\n }\n </tr>\n @for (row of calendarViewModel.calendarView; track row) {\n <tr class=\"calendar-row\">\n @for (dayView of row; track dayView) {\n <td class=\"calendar-cell\">\n <clr-day [clrDayView]=\"dayView\" (selectDay)=\"setSelectedDay($event)\"></clr-day>\n </td>\n }\n </tr>\n }\n</table>\n" }]
2076
+ }], ctorParameters: () => [{ type: LocaleHelperService }, { type: DateNavigationService }, { type: DatepickerFocusService }, { type: DateIOService }, { type: i0.ElementRef }, { type: DateFormControlService }, { type: i1.ClrPopoverService }], propDecorators: { onKeyDown: [{
2077
+ type: HostListener,
2078
+ args: ['keydown', ['$event']]
2079
+ }] } });
2080
+
2081
+ /*
2082
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
2083
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
2084
+ * This software is released under MIT license.
2085
+ * The full license information can be found in LICENSE in the root directory of this project.
2086
+ */
2087
+ class ClrDaypicker {
2088
+ constructor(_viewManagerService, _dateNavigationService, _localeHelperService, commonStrings) {
2089
+ this._viewManagerService = _viewManagerService;
2090
+ this._dateNavigationService = _dateNavigationService;
2091
+ this._localeHelperService = _localeHelperService;
2092
+ this.commonStrings = commonStrings;
2093
+ }
2094
+ get monthAttrString() {
2095
+ return this.commonStrings.parse(this.commonStrings.keys.datepickerSelectMonthText, {
2096
+ CALENDAR_MONTH: this.calendarMonth,
2097
+ });
2098
+ }
2099
+ get yearAttrString() {
2100
+ return this.commonStrings.parse(this.commonStrings.keys.datepickerSelectYearText, {
2101
+ CALENDAR_YEAR: this.calendarYear.toString(),
2102
+ });
2103
+ }
2104
+ /**
2105
+ * Returns the month value of the calendar in the TranslationWidth.Abbreviated format.
2106
+ */
2107
+ get calendarMonth() {
2108
+ return this._localeHelperService.localeMonthsAbbreviated[this._dateNavigationService.displayedCalendar.month];
2109
+ }
2110
+ /**
2111
+ * Returns the year value of the calendar.
2112
+ */
2113
+ get calendarYear() {
2114
+ return this._dateNavigationService.displayedCalendar.year;
2115
+ }
2116
+ /**
2117
+ * Calls the ViewManagerService to change to the monthpicker view.
2118
+ */
2119
+ changeToMonthView() {
2120
+ this._viewManagerService.changeToMonthView();
2121
+ }
2122
+ /**
2123
+ * Calls the ViewManagerService to change to the yearpicker view.
2124
+ */
2125
+ changeToYearView() {
2126
+ this._viewManagerService.changeToYearView();
2127
+ }
2128
+ /**
2129
+ * Calls the DateNavigationService to move to the next month.
2130
+ */
2131
+ nextMonth() {
2132
+ this._dateNavigationService.moveToNextMonth();
2133
+ }
2134
+ /**
2135
+ * Calls the DateNavigationService to move to the previous month.
2136
+ */
2137
+ previousMonth() {
2138
+ this._dateNavigationService.moveToPreviousMonth();
2139
+ }
2140
+ /**
2141
+ * Calls the DateNavigationService to move to the current month.
2142
+ */
2143
+ currentMonth() {
2144
+ this._dateNavigationService.moveToCurrentMonth();
2145
+ }
2146
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDaypicker, deps: [{ token: ViewManagerService }, { token: DateNavigationService }, { token: LocaleHelperService }, { token: i4.ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component }); }
2147
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrDaypicker, isStandalone: false, selector: "clr-daypicker", host: { attributes: { "role": "application" }, properties: { "class.daypicker": "true" } }, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n<div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n<div class=\"calendar-header\">\n <div class=\"calendar-pickers\">\n <button\n class=\"calendar-btn monthpicker-trigger\"\n type=\"button\"\n (click)=\"changeToMonthView()\"\n [attr.aria-label]=\"monthAttrString\"\n [attr.title]=\"monthAttrString\"\n >\n {{calendarMonth}}\n </button>\n <button\n class=\"calendar-btn yearpicker-trigger\"\n type=\"button\"\n (click)=\"changeToYearView()\"\n [attr.aria-label]=\"yearAttrString\"\n [attr.title]=\"yearAttrString\"\n >\n {{calendarYear}}\n </button>\n </div>\n <div class=\"calendar-switchers\">\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"previousMonth()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerPreviousMonth\"\n >\n <cds-icon shape=\"angle\" direction=\"left\" [attr.title]=\"commonStrings.keys.datepickerPreviousMonth\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"currentMonth()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerCurrentMonth\"\n >\n <cds-icon shape=\"event\" [attr.title]=\"commonStrings.keys.datepickerCurrentMonth\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"nextMonth()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerNextMonth\"\n >\n <cds-icon shape=\"angle\" direction=\"right\" [attr.title]=\"commonStrings.keys.datepickerNextMonth\"></cds-icon>\n </button>\n </div>\n</div>\n<clr-calendar></clr-calendar>\n<div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n", dependencies: [{ kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "component", type: ClrCalendar, selector: "clr-calendar" }] }); }
2148
+ }
2149
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDaypicker, decorators: [{
2150
+ type: Component,
2151
+ args: [{ selector: 'clr-daypicker', host: { '[class.daypicker]': 'true', role: 'application' }, standalone: false, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n<div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n<div class=\"calendar-header\">\n <div class=\"calendar-pickers\">\n <button\n class=\"calendar-btn monthpicker-trigger\"\n type=\"button\"\n (click)=\"changeToMonthView()\"\n [attr.aria-label]=\"monthAttrString\"\n [attr.title]=\"monthAttrString\"\n >\n {{calendarMonth}}\n </button>\n <button\n class=\"calendar-btn yearpicker-trigger\"\n type=\"button\"\n (click)=\"changeToYearView()\"\n [attr.aria-label]=\"yearAttrString\"\n [attr.title]=\"yearAttrString\"\n >\n {{calendarYear}}\n </button>\n </div>\n <div class=\"calendar-switchers\">\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"previousMonth()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerPreviousMonth\"\n >\n <cds-icon shape=\"angle\" direction=\"left\" [attr.title]=\"commonStrings.keys.datepickerPreviousMonth\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"currentMonth()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerCurrentMonth\"\n >\n <cds-icon shape=\"event\" [attr.title]=\"commonStrings.keys.datepickerCurrentMonth\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"nextMonth()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerNextMonth\"\n >\n <cds-icon shape=\"angle\" direction=\"right\" [attr.title]=\"commonStrings.keys.datepickerNextMonth\"></cds-icon>\n </button>\n </div>\n</div>\n<clr-calendar></clr-calendar>\n<div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n" }]
2152
+ }], ctorParameters: () => [{ type: ViewManagerService }, { type: DateNavigationService }, { type: LocaleHelperService }, { type: i4.ClrCommonStringsService }] });
2153
+
2154
+ /*
2155
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
2156
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
2157
+ * This software is released under MIT license.
2158
+ * The full license information can be found in LICENSE in the root directory of this project.
2159
+ */
2160
+ class ClrDatepickerActions {
2161
+ constructor(commonStrings, popoverService, dateNavigationService, dateFormControlService) {
2162
+ this.commonStrings = commonStrings;
2163
+ this.popoverService = popoverService;
2164
+ this.dateNavigationService = dateNavigationService;
2165
+ this.dateFormControlService = dateFormControlService;
2166
+ }
2167
+ apply() {
2168
+ if (this.dateNavigationService.isRangePicker &&
2169
+ this.dateNavigationService.selectedDay &&
2170
+ this.dateNavigationService.selectedEndDay) {
2171
+ this.dateNavigationService.notifySelectedDayChanged({
2172
+ startDate: this.dateNavigationService.selectedDay,
2173
+ endDate: this.dateNavigationService.selectedEndDay,
2174
+ });
2175
+ this.dateFormControlService.markAsDirty();
2176
+ }
2177
+ else if (!this.dateNavigationService.isRangePicker && this.dateNavigationService.selectedDay) {
2178
+ this.dateNavigationService.notifySelectedDayChanged(this.dateNavigationService.selectedDay);
2179
+ this.dateFormControlService.markAsDirty();
2180
+ }
2181
+ this.popoverService.open = false;
2182
+ }
2183
+ cancel() {
2184
+ this.dateNavigationService.resetSelectedDay();
2185
+ this.popoverService.open = false;
2186
+ }
2187
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDatepickerActions, deps: [{ token: i4.ClrCommonStringsService }, { token: i1.ClrPopoverService }, { token: DateNavigationService }, { token: DateFormControlService }], target: i0.ɵɵFactoryTarget.Component }); }
2188
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrDatepickerActions, isStandalone: false, selector: "clr-datepicker-actions", host: { properties: { "class.datepicker-actions": "true" } }, ngImport: i0, template: `
2189
+ <button class="btn btn-outline" (click)="cancel()">{{ commonStrings.keys.cancel }}</button>
2190
+ <button class="btn btn-primary" (click)="apply()">{{ commonStrings.keys.apply }}</button>
2191
+ `, isInline: true }); }
2192
+ }
2193
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDatepickerActions, decorators: [{
2194
+ type: Component,
2195
+ args: [{
2196
+ selector: 'clr-datepicker-actions',
2197
+ template: `
2198
+ <button class="btn btn-outline" (click)="cancel()">{{ commonStrings.keys.cancel }}</button>
2199
+ <button class="btn btn-primary" (click)="apply()">{{ commonStrings.keys.apply }}</button>
2200
+ `,
2201
+ host: {
2202
+ '[class.datepicker-actions]': 'true',
2203
+ },
2204
+ standalone: false,
2205
+ }]
2206
+ }], ctorParameters: () => [{ type: i4.ClrCommonStringsService }, { type: i1.ClrPopoverService }, { type: DateNavigationService }, { type: DateFormControlService }] });
2207
+
2208
+ /*
2209
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
2210
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
2211
+ * This software is released under MIT license.
2212
+ * The full license information can be found in LICENSE in the root directory of this project.
2213
+ */
2214
+ class ClrDatepickerViewManager {
2215
+ constructor(commonStrings, viewManagerService, dateNavigationService, dateIOService) {
2216
+ this.commonStrings = commonStrings;
2217
+ this.viewManagerService = viewManagerService;
2218
+ this.dateNavigationService = dateNavigationService;
2219
+ this.dateIOService = dateIOService;
2220
+ }
2221
+ /**
2222
+ * Returns if the current view is the monthpicker.
2223
+ */
2224
+ get isMonthView() {
2225
+ return this.viewManagerService.isMonthView;
2226
+ }
2227
+ /**
2228
+ * Returns if the current view is the yearpicker.
2229
+ */
2230
+ get isYearView() {
2231
+ return this.viewManagerService.isYearView;
2232
+ }
2233
+ /**
2234
+ * Returns if the current view is the daypicker.
2235
+ */
2236
+ get isDayView() {
2237
+ return this.viewManagerService.isDayView;
2238
+ }
2239
+ get hasRangeOptions() {
2240
+ return !!this.dateNavigationService?.isRangePicker && !!this.dateRangeOptions?.length;
2241
+ }
2242
+ get hasActionButtons() {
2243
+ return this.dateNavigationService.hasActionButtons;
2244
+ }
2245
+ get dateRangeOptions() {
2246
+ return this.dateIOService.getRangeOptions();
2247
+ }
2248
+ onRangeOptionSelect(selectedRange) {
2249
+ const startDate = this.dateNavigationService.convertDateToDayModel(selectedRange?.value[0]), endDate = this.dateNavigationService.convertDateToDayModel(selectedRange?.value[1]);
2250
+ this.dateNavigationService.notifySelectedDayChanged({ startDate, endDate }, { emitEvent: !this.hasActionButtons });
2251
+ this.dateNavigationService.moveToSpecificMonth(startDate);
2252
+ }
2253
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDatepickerViewManager, deps: [{ token: i4.ClrCommonStringsService }, { token: ViewManagerService }, { token: DateNavigationService }, { token: DateIOService }], target: i0.ɵɵFactoryTarget.Component }); }
2254
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrDatepickerViewManager, isStandalone: false, selector: "clr-datepicker-view-manager", host: { attributes: { "role": "dialog" }, properties: { "class.datepicker": "true", "class.has-range-option": "hasRangeOptions", "class.has-action-buttons": "hasActionButtons", "attr.aria-modal": "true", "attr.aria-label": "commonStrings.keys.datepickerDialogLabel" } }, providers: [DatepickerFocusService], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n@if (hasRangeOptions) {\n<clr-vertical-nav class=\"clr-date-range-picker-nav\">\n @for (option of dateRangeOptions; track option) {\n <a\n clrVerticalNavLink\n href=\"javascript:void(0)\"\n [attr.aria-label]=\"option?.label\"\n tabindex=\"0\"\n (keyup.enter)=\"onRangeOptionSelect(option)\"\n (click)=\"onRangeOptionSelect(option)\"\n >\n {{option.label}}\n </a>\n }\n</clr-vertical-nav>\n<ng-container *ngTemplateOutlet=\"calendarView\"></ng-container>\n} @else {\n<div class=\"datepicker-view-manager\">\n @if (isMonthView) {\n <clr-monthpicker></clr-monthpicker>\n } @if (isYearView) {\n <clr-yearpicker></clr-yearpicker>\n } @if (isDayView) {\n <clr-daypicker></clr-daypicker>\n } @if (hasActionButtons) {\n <clr-datepicker-actions></clr-datepicker-actions>\n }\n</div>\n}\n\n<ng-template #calendarView>\n <div class=\"datepicker-view-manager\">\n @if (isMonthView) {\n <clr-monthpicker></clr-monthpicker>\n } @if (isYearView) {\n <clr-yearpicker></clr-yearpicker>\n } @if (isDayView) {\n <clr-daypicker></clr-daypicker>\n } @if (hasActionButtons) {\n <clr-datepicker-actions></clr-datepicker-actions>\n }\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i5$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.ClrVerticalNav, selector: "clr-vertical-nav", inputs: ["clrVerticalNavToggleLabel", "clrVerticalNavCollapsible", "clrVerticalNavCollapsed"], outputs: ["clrVerticalNavCollapsedChange"] }, { kind: "component", type: i6.ClrVerticalNavLink, selector: "[clrVerticalNavLink]" }, { kind: "component", type: ClrMonthpicker, selector: "clr-monthpicker" }, { kind: "component", type: ClrYearpicker, selector: "clr-yearpicker" }, { kind: "component", type: ClrDaypicker, selector: "clr-daypicker" }, { kind: "component", type: ClrDatepickerActions, selector: "clr-datepicker-actions" }] }); }
2255
+ }
2256
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDatepickerViewManager, decorators: [{
2257
+ type: Component,
2258
+ args: [{ selector: 'clr-datepicker-view-manager', providers: [DatepickerFocusService], host: {
2259
+ '[class.datepicker]': 'true',
2260
+ '[class.has-range-option]': 'hasRangeOptions',
2261
+ '[class.has-action-buttons]': 'hasActionButtons',
2262
+ '[attr.aria-modal]': 'true',
2263
+ '[attr.aria-label]': 'commonStrings.keys.datepickerDialogLabel',
2264
+ role: 'dialog',
2265
+ }, standalone: false, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n@if (hasRangeOptions) {\n<clr-vertical-nav class=\"clr-date-range-picker-nav\">\n @for (option of dateRangeOptions; track option) {\n <a\n clrVerticalNavLink\n href=\"javascript:void(0)\"\n [attr.aria-label]=\"option?.label\"\n tabindex=\"0\"\n (keyup.enter)=\"onRangeOptionSelect(option)\"\n (click)=\"onRangeOptionSelect(option)\"\n >\n {{option.label}}\n </a>\n }\n</clr-vertical-nav>\n<ng-container *ngTemplateOutlet=\"calendarView\"></ng-container>\n} @else {\n<div class=\"datepicker-view-manager\">\n @if (isMonthView) {\n <clr-monthpicker></clr-monthpicker>\n } @if (isYearView) {\n <clr-yearpicker></clr-yearpicker>\n } @if (isDayView) {\n <clr-daypicker></clr-daypicker>\n } @if (hasActionButtons) {\n <clr-datepicker-actions></clr-datepicker-actions>\n }\n</div>\n}\n\n<ng-template #calendarView>\n <div class=\"datepicker-view-manager\">\n @if (isMonthView) {\n <clr-monthpicker></clr-monthpicker>\n } @if (isYearView) {\n <clr-yearpicker></clr-yearpicker>\n } @if (isDayView) {\n <clr-daypicker></clr-daypicker>\n } @if (hasActionButtons) {\n <clr-datepicker-actions></clr-datepicker-actions>\n }\n </div>\n</ng-template>\n" }]
2266
+ }], ctorParameters: () => [{ type: i4.ClrCommonStringsService }, { type: ViewManagerService }, { type: DateNavigationService }, { type: DateIOService }] });
2267
+
2268
+ /*
2269
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
2270
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
2271
+ * This software is released under MIT license.
2272
+ * The full license information can be found in LICENSE in the root directory of this project.
2273
+ */
2274
+ class ClrDateContainer extends ClrAbstractContainer {
2275
+ constructor(renderer, elem, popoverService, dateNavigationService, datepickerEnabledService, dateFormControlService, dateIOService, commonStrings, focusService, viewManagerService, controlClassService, layoutService, ngControlService) {
2276
+ super(layoutService, controlClassService, ngControlService);
2277
+ this.renderer = renderer;
2278
+ this.elem = elem;
2279
+ this.popoverService = popoverService;
2280
+ this.dateNavigationService = dateNavigationService;
2281
+ this.datepickerEnabledService = datepickerEnabledService;
2282
+ this.dateFormControlService = dateFormControlService;
2283
+ this.dateIOService = dateIOService;
2284
+ this.commonStrings = commonStrings;
2285
+ this.viewManagerService = viewManagerService;
2286
+ this.controlClassService = controlClassService;
2287
+ this.layoutService = layoutService;
2288
+ this.ngControlService = ngControlService;
2289
+ this.focus = false;
2290
+ this.popoverType = ClrPopoverType.DROPDOWN;
2291
+ this.subscriptions.push(focusService.focusChange.subscribe(state => {
2292
+ this.focus = state;
2293
+ }));
2294
+ this.subscriptions.push(popoverService.openChange.subscribe(() => {
2295
+ dateFormControlService.markAsTouched();
2296
+ }));
2297
+ if (dateNavigationService) {
2298
+ const tagName = elem.nativeElement.tagName.toLowerCase();
2299
+ dateNavigationService.hasActionButtons = dateNavigationService.isRangePicker =
2300
+ tagName === 'clr-date-range-container';
2301
+ }
2302
+ }
2303
+ /**
2304
+ * For date range picker actions buttons are shown by default
2305
+ */
2306
+ set showActionButtons(flag) {
2307
+ if (this.dateNavigationService.isRangePicker && !flag) {
2308
+ console.error('Error! The date range picker requires action buttons, [showActionButtons] cannot be turned off.');
2309
+ }
2310
+ else {
2311
+ this.dateNavigationService.hasActionButtons = flag;
2312
+ }
2313
+ }
2314
+ set clrPosition(position) {
2315
+ if (!position) {
2316
+ return;
2317
+ }
2318
+ const posIndex = DROPDOWN_POSITIONS.indexOf(position);
2319
+ if (posIndex === -1) {
2320
+ return;
2321
+ }
2322
+ this.viewManagerService.position = DROPDOWN_POSITIONS[posIndex];
2323
+ }
2324
+ set rangeOptions(rangeOptions) {
2325
+ this.dateIOService.setRangeOptions(rangeOptions);
2326
+ }
2327
+ set min(dateString) {
2328
+ if (this.dateNavigationService.isRangePicker) {
2329
+ this.dateIOService.setMinDate(dateString);
2330
+ }
2331
+ else {
2332
+ console.error('Error! The date container [min] input only works for date range pickers. Use the native `min` attribute/property for single-date inputs.');
2333
+ }
2334
+ }
2335
+ set max(dateString) {
2336
+ if (this.dateNavigationService.isRangePicker) {
2337
+ this.dateIOService.setMaxDate(dateString);
2338
+ }
2339
+ else {
2340
+ console.error('Error! The date container [max] input only works for date range pickers. Use the native `max` attribute/property for single-date inputs.');
2341
+ }
2342
+ }
2343
+ set actionButton(button) {
2344
+ this.toggleButton = button;
2345
+ }
2346
+ get popoverPosition() {
2347
+ return this.viewManagerService.position;
2348
+ }
2349
+ get open() {
2350
+ return this.popoverService.open;
2351
+ }
2352
+ /**
2353
+ * Returns if the Datepicker is enabled or not. If disabled, hides the datepicker trigger.
2354
+ */
2355
+ get isEnabled() {
2356
+ return this.datepickerEnabledService.isEnabled;
2357
+ }
2358
+ /**
2359
+ * Return if Datepicker is diabled or not as Form Control
2360
+ */
2361
+ get isInputDateDisabled() {
2362
+ /* clrForm wrapper or without clrForm */
2363
+ return ((this.control && this.control.disabled) || (this.dateFormControlService && this.dateFormControlService.disabled));
2364
+ }
2365
+ get isRangePicker() {
2366
+ return this.dateNavigationService.isRangePicker;
2367
+ }
2368
+ ngAfterViewInit() {
2369
+ this.dateRangeStructuralChecks();
2370
+ this.subscriptions.push(this.popoverService.openChange.subscribe(open => {
2371
+ if (open) {
2372
+ this.initializeCalendar();
2373
+ }
2374
+ else {
2375
+ this.toggleButton.nativeElement.focus();
2376
+ this.dateNavigationService.resetSelectedDay();
2377
+ }
2378
+ }));
2379
+ this.subscriptions.push(this.listenForDateChanges());
2380
+ }
2381
+ /**
2382
+ * Return the label for the toggle button.
2383
+ * If there's a selected date, the date is included in the label.
2384
+ */
2385
+ getToggleButtonLabel(day) {
2386
+ if (day) {
2387
+ const formattedDate = this.dateIOService.toLocaleDisplayFormatString(day.toDate());
2388
+ return this.commonStrings.parse(this.commonStrings.keys.datepickerToggleChangeDateLabel, {
2389
+ SELECTED_DATE: formattedDate,
2390
+ });
2391
+ }
2392
+ return this.commonStrings.keys.datepickerToggleChooseDateLabel;
2393
+ }
2394
+ listenForDateChanges() {
2395
+ // because date-input.ts initializes the input in ngAfterViewInit,
2396
+ // using a databound attribute to change the button labels results in ExpressionChangedAfterItHasBeenCheckedError.
2397
+ // so instead, update the attribute directly on the element
2398
+ return this.dateNavigationService.selectedDayChange
2399
+ .pipe(startWith(this.dateNavigationService.selectedDay))
2400
+ .subscribe(day => {
2401
+ if (this.isEnabled) {
2402
+ const label = this.getToggleButtonLabel(day);
2403
+ const toggleEl = this.toggleButton.nativeElement;
2404
+ this.renderer.setAttribute(toggleEl, 'aria-label', label);
2405
+ this.renderer.setAttribute(toggleEl, 'title', label);
2406
+ }
2407
+ });
2408
+ }
2409
+ /**
2410
+ * Processes the user input and Initializes the Calendar everytime the datepicker popover is open.
2411
+ */
2412
+ initializeCalendar() {
2413
+ this.dateNavigationService.initializeCalendar();
2414
+ }
2415
+ dateRangeStructuralChecks() {
2416
+ if (this.dateNavigationService.isRangePicker) {
2417
+ const inputs = Array.from(this.elem.nativeElement.querySelectorAll('input'));
2418
+ if (inputs.some(input => input.classList.contains('clr-date-input'))) {
2419
+ console.error('Error! clr-date-range-container must contain clrStartDate and clrEndDate inputs');
2420
+ }
2421
+ if (!inputs.some(input => input.classList.contains('clr-date-start-input'))) {
2422
+ console.error('Error! clr-date-range-container must contain clrStartDate input');
2423
+ }
2424
+ if (!inputs.some(input => input.classList.contains('clr-date-end-input'))) {
2425
+ console.error('Error! clr-date-range-container must contain clrEndDate input');
2426
+ }
2427
+ }
2428
+ }
2429
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDateContainer, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.ClrPopoverService }, { token: DateNavigationService }, { token: DatepickerEnabledService }, { token: DateFormControlService }, { token: DateIOService }, { token: i4.ClrCommonStringsService }, { token: i7.FormsFocusService }, { token: ViewManagerService }, { token: i7.ControlClassService }, { token: i7.LayoutService, optional: true }, { token: i7.NgControlService }], target: i0.ɵɵFactoryTarget.Component }); }
2430
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrDateContainer, isStandalone: false, selector: "clr-date-container, clr-date-range-container", inputs: { showActionButtons: "showActionButtons", clrPosition: "clrPosition", rangeOptions: "rangeOptions", min: "min", max: "max" }, host: { properties: { "class.clr-date-container": "true", "class.clr-form-control-disabled": "isInputDateDisabled", "class.clr-form-control": "true", "class.clr-row": "addGrid()" } }, providers: [
2431
+ ControlIdService,
2432
+ LocaleHelperService,
2433
+ ControlClassService,
2434
+ FormsFocusService,
2435
+ NgControlService,
2436
+ DateIOService,
2437
+ DateNavigationService,
2438
+ DatepickerEnabledService,
2439
+ DateFormControlService,
2440
+ ViewManagerService,
2441
+ ], viewQueries: [{ propertyName: "actionButton", first: true, predicate: ["actionButton"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i1.ClrPopoverHostDirective }], ngImport: i0, template: `
2442
+ <ng-content select="label"></ng-content>
2443
+ @if (!label && addGrid()) {
2444
+ <label></label>
2445
+ }
2446
+ <div class="clr-control-container" [ngClass]="controlClass()">
2447
+ <div class="clr-input-wrapper" clrPopoverOrigin>
2448
+ <div class="clr-input-group" [class.clr-focus]="focus">
2449
+ <!-- render range inputs only if using clr-date-range-container -->
2450
+ @if (isRangePicker) {
2451
+ <ng-content select="[clrStartDate]"></ng-content>
2452
+ <span class="date-range-separator">-</span>
2453
+ <ng-content select="[clrEndDate]"></ng-content>
2454
+ }
2455
+ <!-- no @if for the singe-date input because it breaks the "auto-wrapped" date picker -->
2456
+ <ng-content select="[clrDate]"></ng-content>
2457
+ @if (isEnabled) {
2458
+ <button
2459
+ #actionButton
2460
+ type="button"
2461
+ clrPopoverOpenCloseButton
2462
+ class="clr-input-group-icon-action"
2463
+ [disabled]="isInputDateDisabled"
2464
+ >
2465
+ <cds-icon status="info" shape="calendar"></cds-icon>
2466
+ </button>
2467
+ }
2468
+ <clr-datepicker-view-manager
2469
+ *clrPopoverContent="
2470
+ open;
2471
+ at: popoverPosition;
2472
+ type: popoverType;
2473
+ outsideClickToClose: true;
2474
+ scrollToClose: true
2475
+ "
2476
+ cdkTrapFocus
2477
+ ></clr-datepicker-view-manager>
2478
+ </div>
2479
+ </div>
2480
+ @if (showHelper) {
2481
+ <ng-content select="clr-control-helper"></ng-content>
2482
+ }
2483
+ @if (showInvalid) {
2484
+ <ng-content select="clr-control-error"></ng-content>
2485
+ }
2486
+ @if (showValid) {
2487
+ <ng-content select="clr-control-success"></ng-content>
2488
+ }
2489
+ </div>
2490
+ `, isInline: true, dependencies: [{ kind: "directive", type: i5$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: i1.ClrPopoverOrigin, selector: "[clrPopoverOrigin]" }, { kind: "directive", type: i1.ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: i1.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentAvailablePositions", "clrPopoverContentType", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose", "clrPopoverContentOrigin"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i7.ClrControlLabel, selector: "label", inputs: ["id", "for"] }, { kind: "component", type: ClrDatepickerViewManager, selector: "clr-datepicker-view-manager" }] }); }
2491
+ }
2492
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDateContainer, decorators: [{
2493
+ type: Component,
2494
+ args: [{
2495
+ selector: 'clr-date-container, clr-date-range-container',
2496
+ template: `
2497
+ <ng-content select="label"></ng-content>
2498
+ @if (!label && addGrid()) {
2499
+ <label></label>
2500
+ }
2501
+ <div class="clr-control-container" [ngClass]="controlClass()">
2502
+ <div class="clr-input-wrapper" clrPopoverOrigin>
2503
+ <div class="clr-input-group" [class.clr-focus]="focus">
2504
+ <!-- render range inputs only if using clr-date-range-container -->
2505
+ @if (isRangePicker) {
2506
+ <ng-content select="[clrStartDate]"></ng-content>
2507
+ <span class="date-range-separator">-</span>
2508
+ <ng-content select="[clrEndDate]"></ng-content>
2509
+ }
2510
+ <!-- no @if for the singe-date input because it breaks the "auto-wrapped" date picker -->
2511
+ <ng-content select="[clrDate]"></ng-content>
2512
+ @if (isEnabled) {
2513
+ <button
2514
+ #actionButton
2515
+ type="button"
2516
+ clrPopoverOpenCloseButton
2517
+ class="clr-input-group-icon-action"
2518
+ [disabled]="isInputDateDisabled"
2519
+ >
2520
+ <cds-icon status="info" shape="calendar"></cds-icon>
2521
+ </button>
2522
+ }
2523
+ <clr-datepicker-view-manager
2524
+ *clrPopoverContent="
2525
+ open;
2526
+ at: popoverPosition;
2527
+ type: popoverType;
2528
+ outsideClickToClose: true;
2529
+ scrollToClose: true
2530
+ "
2531
+ cdkTrapFocus
2532
+ ></clr-datepicker-view-manager>
2533
+ </div>
2534
+ </div>
2535
+ @if (showHelper) {
2536
+ <ng-content select="clr-control-helper"></ng-content>
2537
+ }
2538
+ @if (showInvalid) {
2539
+ <ng-content select="clr-control-error"></ng-content>
2540
+ }
2541
+ @if (showValid) {
2542
+ <ng-content select="clr-control-success"></ng-content>
2543
+ }
2544
+ </div>
2545
+ `,
2546
+ providers: [
2547
+ ControlIdService,
2548
+ LocaleHelperService,
2549
+ ControlClassService,
2550
+ FormsFocusService,
2551
+ NgControlService,
2552
+ DateIOService,
2553
+ DateNavigationService,
2554
+ DatepickerEnabledService,
2555
+ DateFormControlService,
2556
+ ViewManagerService,
2557
+ ],
2558
+ hostDirectives: [ClrPopoverHostDirective],
2559
+ host: {
2560
+ '[class.clr-date-container]': 'true',
2561
+ '[class.clr-form-control-disabled]': 'isInputDateDisabled',
2562
+ '[class.clr-form-control]': 'true',
2563
+ '[class.clr-row]': 'addGrid()',
2564
+ },
2565
+ standalone: false,
2566
+ }]
2567
+ }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.ClrPopoverService }, { type: DateNavigationService }, { type: DatepickerEnabledService }, { type: DateFormControlService }, { type: DateIOService }, { type: i4.ClrCommonStringsService }, { type: i7.FormsFocusService }, { type: ViewManagerService }, { type: i7.ControlClassService }, { type: i7.LayoutService, decorators: [{
2568
+ type: Optional
2569
+ }] }, { type: i7.NgControlService }], propDecorators: { showActionButtons: [{
2570
+ type: Input,
2571
+ args: ['showActionButtons']
2572
+ }], clrPosition: [{
2573
+ type: Input,
2574
+ args: ['clrPosition']
2575
+ }], rangeOptions: [{
2576
+ type: Input
2577
+ }], min: [{
2578
+ type: Input
2579
+ }], max: [{
2580
+ type: Input
2581
+ }], actionButton: [{
2582
+ type: ViewChild,
2583
+ args: ['actionButton']
2584
+ }] } });
2585
+
2586
+ /*
2587
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
2588
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
2589
+ * This software is released under MIT license.
2590
+ * The full license information can be found in LICENSE in the root directory of this project.
2591
+ */
2592
+ // There are four ways the datepicker value is set
2593
+ // 1. Value set by user typing into text input as a string ex: '01/28/2015'
2594
+ // 2. Value set explicitly by Angular Forms APIs as a string ex: '01/28/2015'
2595
+ // 3. Value set by user via datepicker UI as a Date Object
2596
+ // 4. Value set via `clrDate` input as a Date Object
2597
+ class ClrDateInputBase extends WrappedFormControl {
2598
+ constructor(viewContainerRef, injector, el, renderer, control, container, dateIOService, dateNavigationService, datepickerEnabledService, dateFormControlService, platformId, focusService, datepickerFocusService) {
2599
+ super(viewContainerRef, ClrDateContainer, injector, control, renderer, el);
2600
+ this.el = el;
2601
+ this.renderer = renderer;
2602
+ this.control = control;
2603
+ this.container = container;
2604
+ this.dateIOService = dateIOService;
2605
+ this.dateNavigationService = dateNavigationService;
2606
+ this.datepickerEnabledService = datepickerEnabledService;
2607
+ this.dateFormControlService = dateFormControlService;
2608
+ this.platformId = platformId;
2609
+ this.focusService = focusService;
2610
+ this.datepickerFocusService = datepickerFocusService;
2611
+ this.index = 1;
2612
+ }
2613
+ get disabled() {
2614
+ if (this.dateFormControlService) {
2615
+ return this.dateFormControlService.disabled || !!this.control?.control?.disabled;
2616
+ }
2617
+ return null;
2618
+ }
2619
+ set disabled(value) {
2620
+ if (this.dateFormControlService) {
2621
+ this.dateFormControlService.setDisabled(isBooleanAttributeSet(value));
2622
+ }
2623
+ }
2624
+ get placeholderText() {
2625
+ return this.placeholder ? this.placeholder : this.dateIOService.placeholderText;
2626
+ }
2627
+ get inputType() {
2628
+ return isPlatformBrowser(this.platformId) && this.usingNativeDatepicker() ? 'date' : 'text';
2629
+ }
2630
+ ngOnInit() {
2631
+ super.ngOnInit();
2632
+ this.populateServicesFromContainerComponent();
2633
+ this.subscriptions.push(this.listenForUserSelectedDayChanges(), this.listenForControlValueChanges(), this.listenForTouchChanges(), this.listenForDirtyChanges(), this.listenForInputRefocus());
2634
+ }
2635
+ ngAfterViewInit() {
2636
+ // I don't know why I have to do this but after using the new HostWrapping Module I have to delay the processing
2637
+ // of the initial Input set by the user to here. If I do not 2 issues occur:
2638
+ // 1. The Input setter is called before ngOnInit. ngOnInit initializes the services without which the setter fails.
2639
+ // 2. The Renderer doesn't work before ngAfterViewInit (It used to before the new HostWrapping Module for some reason).
2640
+ // I need the renderer to set the value property on the input to make sure that if the user has supplied a Date
2641
+ // input object, we reflect it with the right date on the input field using the IO service. I am not sure if
2642
+ // these are major issues or not but just noting them down here.
2643
+ this.processInitialInputs();
2644
+ }
2645
+ setFocusStates() {
2646
+ this.setFocus(true);
2647
+ }
2648
+ triggerValidation() {
2649
+ super.triggerValidation();
2650
+ this.setFocus(false);
2651
+ }
2652
+ onValueChange(target) {
2653
+ const validDateValue = this.dateIOService.getDateValueFromDateString(target.value);
2654
+ if (this.usingClarityDatepicker() && validDateValue) {
2655
+ this.updateDate(validDateValue, true);
2656
+ }
2657
+ else if (this.usingNativeDatepicker()) {
2658
+ const [year, month, day] = target.value.split('-');
2659
+ this.updateDate(new Date(+year, +month - 1, +day), true);
2660
+ }
2661
+ else {
2662
+ this.emitDateOutput(null);
2663
+ }
2664
+ }
2665
+ datepickerHasFormControl() {
2666
+ return !!this.control;
2667
+ }
2668
+ setDate(date) {
2669
+ if (typeof date === 'string') {
2670
+ date = new Date(date);
2671
+ }
2672
+ if (this.previousDateChange !== date) {
2673
+ this.updateDate(date);
2674
+ }
2675
+ if (!this.initialClrDateInputValue) {
2676
+ this.initialClrDateInputValue = date;
2677
+ }
2678
+ }
2679
+ triggerControlInputValidation() {
2680
+ if (this.datepickerHasFormControl()) {
2681
+ this.control.control?.updateValueAndValidity({ emitEvent: false });
2682
+ this.control.control?.setErrors(this.control.control.errors);
2683
+ }
2684
+ }
2685
+ usingClarityDatepicker() {
2686
+ return this.datepickerEnabledService.isEnabled;
2687
+ }
2688
+ usingNativeDatepicker() {
2689
+ return !this.datepickerEnabledService.isEnabled;
2690
+ }
2691
+ setFocus(focus) {
2692
+ if (this.focusService) {
2693
+ this.focusService.focused = focus;
2694
+ }
2695
+ }
2696
+ populateServicesFromContainerComponent() {
2697
+ if (!this.container) {
2698
+ this.dateIOService = this.getProviderFromContainer(DateIOService);
2699
+ this.dateNavigationService = this.getProviderFromContainer(DateNavigationService);
2700
+ this.datepickerEnabledService = this.getProviderFromContainer(DatepickerEnabledService);
2701
+ this.dateFormControlService = this.getProviderFromContainer(DateFormControlService);
2702
+ }
2703
+ }
2704
+ processInitialInputs() {
2705
+ if (this.datepickerHasFormControl()) {
2706
+ this.updateDate(this.dateIOService.getDateValueFromDateString(this.control.value));
2707
+ }
2708
+ else {
2709
+ this.updateDate(this.initialClrDateInputValue);
2710
+ }
2711
+ }
2712
+ updateDate(value, setByUserInteraction = false) {
2713
+ const date = this.getValidDateValueFromDate(value);
2714
+ if (setByUserInteraction) {
2715
+ this.emitDateOutput(date);
2716
+ }
2717
+ else {
2718
+ this.previousDateChange = date;
2719
+ }
2720
+ if (this.dateNavigationService) {
2721
+ const dayModel = date ? new DayModel(date.getFullYear(), date.getMonth(), date.getDate()) : null;
2722
+ this.updateDayModel(dayModel);
2723
+ }
2724
+ this.updateInput(date);
2725
+ }
2726
+ updateInput(date) {
2727
+ if (date) {
2728
+ const dateString = this.dateIOService.toLocaleDisplayFormatString(date);
2729
+ if (this.usingNativeDatepicker()) {
2730
+ // valueAsDate expects UTC, date from input is time-zoned
2731
+ date.setMinutes(date.getMinutes() - date.getTimezoneOffset());
2732
+ this.renderer.setProperty(this.el.nativeElement, 'valueAsDate', date);
2733
+ }
2734
+ else if (this.datepickerHasFormControl() && dateString !== this.control.value) {
2735
+ this.control.control.setValue(dateString);
2736
+ }
2737
+ else {
2738
+ this.renderer.setProperty(this.el.nativeElement, 'value', dateString);
2739
+ }
2740
+ this.validateDateRange();
2741
+ }
2742
+ else {
2743
+ this.renderer.setProperty(this.el.nativeElement, 'value', '');
2744
+ }
2745
+ }
2746
+ getValidDateValueFromDate(date) {
2747
+ if (this.dateIOService) {
2748
+ const dateString = this.dateIOService.toLocaleDisplayFormatString(date);
2749
+ return this.dateIOService.getDateValueFromDateString(dateString);
2750
+ }
2751
+ else {
2752
+ return null;
2753
+ }
2754
+ }
2755
+ emitDateOutput(date) {
2756
+ if (!datesAreEqual(date, this.previousDateChange)) {
2757
+ this.dateChange.emit(date);
2758
+ this.previousDateChange = date;
2759
+ }
2760
+ else if (!date && this.previousDateChange) {
2761
+ this.dateChange.emit(null);
2762
+ this.previousDateChange = null;
2763
+ }
2764
+ }
2765
+ listenForControlValueChanges() {
2766
+ if (this.datepickerHasFormControl()) {
2767
+ return this.control.valueChanges
2768
+ .pipe(
2769
+ // only update date value if not being set by user
2770
+ filter(() => !this.datepickerFocusService.elementIsFocused(this.el.nativeElement)))
2771
+ .subscribe((value) => this.updateDate(this.dateIOService.getDateValueFromDateString(value)));
2772
+ }
2773
+ else {
2774
+ return null;
2775
+ }
2776
+ }
2777
+ listenForUserSelectedDayChanges() {
2778
+ return this.userSelectedDayChange.subscribe(dayModel => this.updateDate(dayModel?.toDate(), true));
2779
+ }
2780
+ listenForTouchChanges() {
2781
+ return this.dateFormControlService.touchedChange
2782
+ .pipe(filter(() => this.datepickerHasFormControl()))
2783
+ .subscribe(() => this.control.control.markAsTouched());
2784
+ }
2785
+ listenForDirtyChanges() {
2786
+ return this.dateFormControlService.dirtyChange
2787
+ .pipe(filter(() => this.datepickerHasFormControl()))
2788
+ .subscribe(() => this.control.control.markAsDirty());
2789
+ }
2790
+ listenForInputRefocus() {
2791
+ return this.dateNavigationService.selectedDayChange
2792
+ .pipe(filter(date => !!date && !this.dateNavigationService.isRangePicker))
2793
+ .subscribe(() => this.datepickerFocusService.focusInput(this.el.nativeElement));
2794
+ }
2795
+ /**
2796
+ * In case of date range error, both start & end date field validation has to be triggered
2797
+ * if either of the field gets updated
2798
+ */
2799
+ validateDateRange() {
2800
+ if (this.dateNavigationService.isRangePicker) {
2801
+ const controls = this.ngControlService?.controls;
2802
+ const isValid = this.dateNavigationService.selectedDay?.isBefore(this.dateNavigationService.selectedEndDay, true);
2803
+ if (isValid && controls?.some(control => control.hasError('range'))) {
2804
+ controls.forEach((ngControl) => {
2805
+ ngControl?.control?.updateValueAndValidity({ emitEvent: false });
2806
+ });
2807
+ }
2808
+ }
2809
+ }
2810
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDateInputBase, deps: [{ token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1$1.NgControl, optional: true, self: true }, { token: forwardRef(() => ClrDateContainer), optional: true }, { token: DateIOService, optional: true }, { token: DateNavigationService, optional: true }, { token: DatepickerEnabledService, optional: true }, { token: DateFormControlService, optional: true }, { token: PLATFORM_ID }, { token: i7.FormsFocusService, optional: true }, { token: DatepickerFocusService }], target: i0.ɵɵFactoryTarget.Directive }); }
2811
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrDateInputBase, isStandalone: true, inputs: { placeholder: "placeholder", disabled: "disabled" }, host: { listeners: { "focus": "setFocusStates()", "change": "onValueChange($event.target)" }, properties: { "disabled": "this.disabled", "attr.placeholder": "this.placeholderText", "attr.type": "this.inputType" } }, usesInheritance: true, ngImport: i0 }); }
2812
+ }
2813
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDateInputBase, decorators: [{
2814
+ type: Directive
2815
+ }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1$1.NgControl, decorators: [{
2816
+ type: Self
2817
+ }, {
2818
+ type: Optional
2819
+ }] }, { type: ClrDateContainer, decorators: [{
2820
+ type: Optional
2821
+ }, {
2822
+ type: Inject,
2823
+ args: [forwardRef(() => ClrDateContainer)]
2824
+ }] }, { type: DateIOService, decorators: [{
2825
+ type: Optional
2826
+ }] }, { type: DateNavigationService, decorators: [{
2827
+ type: Optional
2828
+ }] }, { type: DatepickerEnabledService, decorators: [{
2829
+ type: Optional
2830
+ }] }, { type: DateFormControlService, decorators: [{
2831
+ type: Optional
2832
+ }] }, { type: undefined, decorators: [{
2833
+ type: Inject,
2834
+ args: [PLATFORM_ID]
2835
+ }] }, { type: i7.FormsFocusService, decorators: [{
2836
+ type: Optional
2837
+ }] }, { type: DatepickerFocusService }], propDecorators: { placeholder: [{
2838
+ type: Input
2839
+ }], disabled: [{
2840
+ type: Input,
2841
+ args: ['disabled']
2842
+ }, {
2843
+ type: HostBinding,
2844
+ args: ['disabled']
2845
+ }], placeholderText: [{
2846
+ type: HostBinding,
2847
+ args: ['attr.placeholder']
2848
+ }], inputType: [{
2849
+ type: HostBinding,
2850
+ args: ['attr.type']
2851
+ }], setFocusStates: [{
2852
+ type: HostListener,
2853
+ args: ['focus']
2854
+ }], onValueChange: [{
2855
+ type: HostListener,
2856
+ args: ['change', ['$event.target']]
2857
+ }] } });
2858
+
2859
+ /*
2860
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
2861
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
2862
+ * This software is released under MIT license.
2863
+ * The full license information can be found in LICENSE in the root directory of this project.
2864
+ */
2865
+ class ClrDateInput extends ClrDateInputBase {
2866
+ constructor() {
2867
+ super(...arguments);
2868
+ this.dateChange = new EventEmitter(false);
2869
+ }
2870
+ set date(date) {
2871
+ this.setDate(date);
2872
+ }
2873
+ set min(dateString) {
2874
+ this.dateIOService.setMinDate(dateString);
2875
+ }
2876
+ set max(dateString) {
2877
+ this.dateIOService.setMaxDate(dateString);
2878
+ }
2879
+ get userSelectedDayChange() {
2880
+ return this.dateNavigationService.selectedDayChange;
2881
+ }
2882
+ updateDayModel(dayModel) {
2883
+ this.dateNavigationService.persistedDate = this.dateNavigationService.selectedDay = dayModel;
2884
+ }
2885
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDateInput, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
2886
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrDateInput, isStandalone: false, selector: "[clrDate]", inputs: { date: ["clrDate", "date"], min: "min", max: "max" }, outputs: { dateChange: "clrDateChange" }, host: { properties: { "class.clr-input": "true", "class.clr-date-input": "true" } }, providers: [DatepickerFocusService], usesInheritance: true, ngImport: i0 }); }
2887
+ }
2888
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDateInput, decorators: [{
2889
+ type: Directive,
2890
+ args: [{
2891
+ selector: '[clrDate]',
2892
+ host: {
2893
+ '[class.clr-input]': 'true',
2894
+ '[class.clr-date-input]': 'true',
2895
+ },
2896
+ providers: [DatepickerFocusService],
2897
+ standalone: false,
2898
+ }]
2899
+ }], propDecorators: { dateChange: [{
2900
+ type: Output,
2901
+ args: ['clrDateChange']
2902
+ }], date: [{
2903
+ type: Input,
2904
+ args: ['clrDate']
2905
+ }], min: [{
2906
+ type: Input
2907
+ }], max: [{
2908
+ type: Input
2909
+ }] } });
2910
+
2911
+ /*
2912
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
2913
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
2914
+ * This software is released under MIT license.
2915
+ * The full license information can be found in LICENSE in the root directory of this project.
2916
+ */
2917
+ class ClrStartDateInput extends ClrDateInputBase {
2918
+ constructor() {
2919
+ super(...arguments);
2920
+ this.dateChange = new EventEmitter(false);
2921
+ this.inputWidth = 13;
2922
+ }
2923
+ set date(date) {
2924
+ this.setDate(date);
2925
+ }
2926
+ get inputSize() {
2927
+ return this.inputWidth;
2928
+ }
2929
+ get userSelectedDayChange() {
2930
+ return this.dateNavigationService.selectedDayChange;
2931
+ }
2932
+ ngOnInit() {
2933
+ super.ngOnInit();
2934
+ this.subscriptions.push(this.dateIOService.minDateChange.subscribe(() => this.triggerControlInputValidation()));
2935
+ }
2936
+ updateDayModel(dayModel) {
2937
+ this.dateNavigationService.persistedDate = this.dateNavigationService.selectedDay = dayModel;
2938
+ }
2939
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrStartDateInput, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
2940
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrStartDateInput, isStandalone: false, selector: "[clrStartDate]", inputs: { inputWidth: "inputWidth", date: ["clrStartDate", "date"] }, outputs: { dateChange: "clrStartDateChange" }, host: { properties: { "class.clr-input": "true", "class.clr-date-start-input": "true", "style.text-align": "'right'", "attr.size": "this.inputSize" } }, providers: [DatepickerFocusService], usesInheritance: true, ngImport: i0 }); }
2941
+ }
2942
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrStartDateInput, decorators: [{
2943
+ type: Directive,
2944
+ args: [{
2945
+ selector: '[clrStartDate]',
2946
+ host: {
2947
+ '[class.clr-input]': 'true',
2948
+ '[class.clr-date-start-input]': 'true',
2949
+ '[style.text-align]': "'right'",
2950
+ },
2951
+ providers: [DatepickerFocusService],
2952
+ standalone: false,
2953
+ }]
2954
+ }], propDecorators: { dateChange: [{
2955
+ type: Output,
2956
+ args: ['clrStartDateChange']
2957
+ }], inputWidth: [{
2958
+ type: Input,
2959
+ args: ['inputWidth']
2960
+ }], date: [{
2961
+ type: Input,
2962
+ args: ['clrStartDate']
2963
+ }], inputSize: [{
2964
+ type: HostBinding,
2965
+ args: ['attr.size']
2966
+ }] } });
2967
+
2968
+ /*
2969
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
2970
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
2971
+ * This software is released under MIT license.
2972
+ * The full license information can be found in LICENSE in the root directory of this project.
2973
+ */
2974
+ class ClrEndDateInput extends ClrDateInputBase {
2975
+ constructor() {
2976
+ super(...arguments);
2977
+ this.dateChange = new EventEmitter(false);
2978
+ this.inputWidth = 13;
2979
+ }
2980
+ set date(date) {
2981
+ this.setDate(date);
2982
+ }
2983
+ get inputSize() {
2984
+ return this.inputWidth;
2985
+ }
2986
+ get userSelectedDayChange() {
2987
+ return this.dateNavigationService.selectedEndDayChange;
2988
+ }
2989
+ ngOnInit() {
2990
+ super.ngOnInit();
2991
+ this.subscriptions.push(this.dateIOService.maxDateChange.subscribe(() => this.triggerControlInputValidation()));
2992
+ }
2993
+ updateDayModel(dayModel) {
2994
+ this.dateNavigationService.persistedEndDate = this.dateNavigationService.selectedEndDay = dayModel;
2995
+ }
2996
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrEndDateInput, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
2997
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrEndDateInput, isStandalone: false, selector: "[clrEndDate]", inputs: { inputWidth: "inputWidth", date: ["clrEndDate", "date"] }, outputs: { dateChange: "clrEndDateChange" }, host: { properties: { "class.clr-input": "true", "class.clr-date-end-input": "true", "attr.size": "this.inputSize" } }, providers: [DatepickerFocusService], usesInheritance: true, ngImport: i0 }); }
2998
+ }
2999
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrEndDateInput, decorators: [{
3000
+ type: Directive,
3001
+ args: [{
3002
+ selector: '[clrEndDate]',
3003
+ host: {
3004
+ '[class.clr-input]': 'true',
3005
+ '[class.clr-date-end-input]': 'true',
3006
+ },
3007
+ providers: [DatepickerFocusService],
3008
+ standalone: false,
3009
+ }]
3010
+ }], propDecorators: { dateChange: [{
3011
+ type: Output,
3012
+ args: ['clrEndDateChange']
3013
+ }], inputWidth: [{
3014
+ type: Input,
3015
+ args: ['inputWidth']
3016
+ }], date: [{
3017
+ type: Input,
3018
+ args: ['clrEndDate']
3019
+ }], inputSize: [{
3020
+ type: HostBinding,
3021
+ args: ['attr.size']
3022
+ }] } });
3023
+
3024
+ /*
3025
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
3026
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
3027
+ * This software is released under MIT license.
3028
+ * The full license information can be found in LICENSE in the root directory of this project.
3029
+ */
3030
+ class ClrDateInputValidator {
3031
+ constructor(dateIOService) {
3032
+ this.dateIOService = dateIOService;
3033
+ }
3034
+ validate(control) {
3035
+ if (this.dateIOService) {
3036
+ const value = this.dateIOService.getDateValueFromDateString(control.value);
3037
+ const minDate = this.dateIOService.disabledDates.minDate.toDate();
3038
+ const maxDate = this.dateIOService.disabledDates.maxDate.toDate();
3039
+ if (value && value < minDate) {
3040
+ return { min: { min: minDate.toLocaleDateString(), actual: value.toLocaleDateString() } };
3041
+ }
3042
+ else if (value && value > maxDate) {
3043
+ return { max: { max: maxDate.toLocaleDateString(), actual: value.toLocaleDateString() } };
3044
+ }
3045
+ }
3046
+ return null;
3047
+ }
3048
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDateInputValidator, deps: [{ token: DateIOService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
3049
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrDateInputValidator, isStandalone: false, selector: "[clrDate], [clrStartDate], [clrEndDate]", providers: [{ provide: NG_VALIDATORS, useExisting: ClrDateInputValidator, multi: true }], ngImport: i0 }); }
3050
+ }
3051
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDateInputValidator, decorators: [{
3052
+ type: Directive,
3053
+ args: [{
3054
+ selector: '[clrDate], [clrStartDate], [clrEndDate]',
3055
+ providers: [{ provide: NG_VALIDATORS, useExisting: ClrDateInputValidator, multi: true }],
3056
+ standalone: false,
3057
+ }]
3058
+ }], ctorParameters: () => [{ type: DateIOService, decorators: [{
3059
+ type: Optional
3060
+ }] }] });
3061
+ class ClrStartDateInputValidator {
3062
+ constructor(dateIOService, dateNavigationService) {
3063
+ this.dateIOService = dateIOService;
3064
+ this.dateNavigationService = dateNavigationService;
3065
+ }
3066
+ validate(control) {
3067
+ if (this.dateIOService) {
3068
+ const value = this.dateIOService.getDateValueFromDateString(control.value);
3069
+ const endDate = this.dateNavigationService?.selectedEndDay?.toDate();
3070
+ if (value && endDate && value > endDate) {
3071
+ return { range: { startDate: value, endDate } };
3072
+ }
3073
+ }
3074
+ return null;
3075
+ }
3076
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrStartDateInputValidator, deps: [{ token: DateIOService, optional: true }, { token: DateNavigationService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
3077
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrStartDateInputValidator, isStandalone: false, selector: "[clrStartDate]", providers: [{ provide: NG_VALIDATORS, useExisting: ClrStartDateInputValidator, multi: true }], ngImport: i0 }); }
3078
+ }
3079
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrStartDateInputValidator, decorators: [{
3080
+ type: Directive,
3081
+ args: [{
3082
+ selector: '[clrStartDate]',
3083
+ providers: [{ provide: NG_VALIDATORS, useExisting: ClrStartDateInputValidator, multi: true }],
3084
+ standalone: false,
3085
+ }]
3086
+ }], ctorParameters: () => [{ type: DateIOService, decorators: [{
3087
+ type: Optional
3088
+ }] }, { type: DateNavigationService, decorators: [{
3089
+ type: Optional
3090
+ }] }] });
3091
+ class ClrEndDateInputValidator {
3092
+ constructor(dateIOService, dateNavigationService) {
3093
+ this.dateIOService = dateIOService;
3094
+ this.dateNavigationService = dateNavigationService;
3095
+ }
3096
+ validate(control) {
3097
+ if (this.dateIOService) {
3098
+ const value = this.dateIOService.getDateValueFromDateString(control.value);
3099
+ const startDate = this.dateNavigationService?.selectedDay?.toDate();
3100
+ if (value && startDate && value < startDate) {
3101
+ return { range: { startDate, endDate: value } };
3102
+ }
3103
+ }
3104
+ return null;
3105
+ }
3106
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrEndDateInputValidator, deps: [{ token: DateIOService, optional: true }, { token: DateNavigationService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
3107
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrEndDateInputValidator, isStandalone: false, selector: "[clrEndDate]", providers: [{ provide: NG_VALIDATORS, useExisting: ClrEndDateInputValidator, multi: true }], ngImport: i0 }); }
3108
+ }
3109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrEndDateInputValidator, decorators: [{
3110
+ type: Directive,
3111
+ args: [{
3112
+ selector: '[clrEndDate]',
3113
+ providers: [{ provide: NG_VALIDATORS, useExisting: ClrEndDateInputValidator, multi: true }],
3114
+ standalone: false,
3115
+ }]
3116
+ }], ctorParameters: () => [{ type: DateIOService, decorators: [{
3117
+ type: Optional
3118
+ }] }, { type: DateNavigationService, decorators: [{
3119
+ type: Optional
3120
+ }] }] });
3121
+
3122
+ /*
3123
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
3124
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
3125
+ * This software is released under MIT license.
3126
+ * The full license information can be found in LICENSE in the root directory of this project.
3127
+ */
3128
+ const CLR_DATEPICKER_DIRECTIVES = [
3129
+ ClrDateInput,
3130
+ ClrDay,
3131
+ ClrDateContainer,
3132
+ ClrDateInputValidator,
3133
+ ClrStartDateInput,
3134
+ ClrEndDateInput,
3135
+ ClrStartDateInputValidator,
3136
+ ClrEndDateInputValidator,
3137
+ ClrDatepickerViewManager,
3138
+ ClrMonthpicker,
3139
+ ClrYearpicker,
3140
+ ClrDaypicker,
3141
+ ClrCalendar,
3142
+ ClrDatepickerActions,
3143
+ ];
3144
+ class ClrDatepickerModule {
3145
+ constructor() {
3146
+ ClarityIcons.addIcons(successStandardIcon, errorStandardIcon, angleIcon, eventIcon, calendarIcon);
3147
+ }
3148
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3149
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrDatepickerModule, declarations: [ClrDateInput,
3150
+ ClrDay,
3151
+ ClrDateContainer,
3152
+ ClrDateInputValidator,
3153
+ ClrStartDateInput,
3154
+ ClrEndDateInput,
3155
+ ClrStartDateInputValidator,
3156
+ ClrEndDateInputValidator,
3157
+ ClrDatepickerViewManager,
3158
+ ClrMonthpicker,
3159
+ ClrYearpicker,
3160
+ ClrDaypicker,
3161
+ ClrCalendar,
3162
+ ClrDatepickerActions], imports: [CommonModule,
3163
+ CdkTrapFocusModule,
3164
+ ClrHostWrappingModule,
3165
+ ClrConditionalModule,
3166
+ ClrPopoverModuleNext,
3167
+ ClrIcon,
3168
+ ClrCommonFormsModule,
3169
+ ClrVerticalNavModule], exports: [ClrDateInput,
3170
+ ClrDay,
3171
+ ClrDateContainer,
3172
+ ClrDateInputValidator,
3173
+ ClrStartDateInput,
3174
+ ClrEndDateInput,
3175
+ ClrStartDateInputValidator,
3176
+ ClrEndDateInputValidator,
3177
+ ClrDatepickerViewManager,
3178
+ ClrMonthpicker,
3179
+ ClrYearpicker,
3180
+ ClrDaypicker,
3181
+ ClrCalendar,
3182
+ ClrDatepickerActions] }); }
3183
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDatepickerModule, imports: [CommonModule,
3184
+ CdkTrapFocusModule,
3185
+ ClrHostWrappingModule,
3186
+ ClrConditionalModule,
3187
+ ClrPopoverModuleNext,
3188
+ ClrIcon,
3189
+ ClrCommonFormsModule,
3190
+ ClrVerticalNavModule] }); }
3191
+ }
3192
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDatepickerModule, decorators: [{
3193
+ type: NgModule,
3194
+ args: [{
3195
+ imports: [
3196
+ CommonModule,
3197
+ CdkTrapFocusModule,
3198
+ ClrHostWrappingModule,
3199
+ ClrConditionalModule,
3200
+ ClrPopoverModuleNext,
3201
+ ClrIcon,
3202
+ ClrCommonFormsModule,
3203
+ ClrVerticalNavModule,
3204
+ ],
3205
+ declarations: [CLR_DATEPICKER_DIRECTIVES],
3206
+ exports: [CLR_DATEPICKER_DIRECTIVES],
3207
+ }]
3208
+ }], ctorParameters: () => [] });
3209
+
3210
+ /*
3211
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
3212
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
3213
+ * This software is released under MIT license.
3214
+ * The full license information can be found in LICENSE in the root directory of this project.
3215
+ */
3216
+
3217
+ /**
3218
+ * Generated bundle index. Do not edit.
3219
+ */
3220
+
3221
+ export { CLR_DATEPICKER_DIRECTIVES, ClrCalendar, ClrDateContainer, ClrDateInput, ClrDateInputBase, ClrDateInputValidator, ClrDatepickerActions, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrEndDateInput, ClrEndDateInputValidator, ClrMonthpicker, ClrStartDateInput, ClrStartDateInputValidator, ClrYearpicker };
3222
+ //# sourceMappingURL=clr-angular-forms-datepicker.mjs.map