@koobiq/components 16.0.0-beta.6 → 16.0.0-beta.8

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 (331) hide show
  1. package/autocomplete/autocomplete-trigger.directive.d.ts +5 -15
  2. package/button-toggle/_button-toggle-theme.scss +26 -45
  3. package/button-toggle/button-toggle.component.d.ts +2 -2
  4. package/button-toggle/button-toggle.scss +40 -87
  5. package/card/_card-theme.scss +1 -1
  6. package/checkbox/_checkbox-theme.scss +10 -2
  7. package/checkbox/checkbox.d.ts +1 -1
  8. package/code-block/README.md +14 -14
  9. package/code-block/_code-block-theme.scss +8 -0
  10. package/code-block/code-block.component.d.ts +1 -1
  11. package/core/animation/index.d.ts +1 -1
  12. package/core/animation/select-animations.d.ts +1 -1
  13. package/core/formatters/index.d.ts +1 -1
  14. package/core/formatters/number/formatter.d.ts +56 -1
  15. package/core/forms/forms.directive.d.ts +2 -2
  16. package/core/locales/en-US.d.ts +19 -1
  17. package/core/locales/es-LA.d.ts +27 -0
  18. package/core/locales/fa-IR.d.ts +28 -0
  19. package/core/locales/locale-service.d.ts +148 -3
  20. package/core/locales/pt-BR.d.ts +27 -0
  21. package/core/locales/ru-RU.d.ts +20 -1
  22. package/core/locales/zh-CN.d.ts +26 -0
  23. package/core/option/_optgroup-theme.scss +1 -1
  24. package/core/option/_option-theme.scss +2 -2
  25. package/core/option/action.d.ts +1 -1
  26. package/core/option/optgroup.d.ts +1 -1
  27. package/core/option/option.d.ts +37 -8
  28. package/core/option/option.scss +4 -4
  29. package/core/overlay/overlay-position-map.d.ts +7 -1
  30. package/core/pop-up/constants.d.ts +2 -1
  31. package/core/public-api.d.ts +1 -0
  32. package/core/select/constants.d.ts +2 -2
  33. package/core/services/theme.service.d.ts +23 -0
  34. package/core/styles/_koobiq-theme.scss +6 -0
  35. package/core/styles/_variables.scss +1 -0
  36. package/core/styles/common/_animation.scss +10 -6
  37. package/core/styles/common/_overlay.scss +1 -1
  38. package/core/styles/common/_select.scss +79 -65
  39. package/core/styles/theming/_components-theming.scss +205 -23
  40. package/core/styles/theming/_theming.scss +2 -2
  41. package/datepicker/_datepicker-theme.scss +43 -57
  42. package/datepicker/calendar-body.component.d.ts +1 -1
  43. package/datepicker/calendar-body.scss +11 -26
  44. package/datepicker/calendar-header.component.d.ts +9 -3
  45. package/datepicker/calendar-header.scss +7 -31
  46. package/datepicker/calendar.component.d.ts +4 -5
  47. package/datepicker/calendar.scss +20 -25
  48. package/datepicker/datepicker-animations.d.ts +1 -1
  49. package/datepicker/datepicker-content.scss +17 -10
  50. package/datepicker/datepicker-input.directive.d.ts +4 -4
  51. package/datepicker/datepicker-input.scss +1 -1
  52. package/datepicker/datepicker-toggle.component.d.ts +3 -3
  53. package/datepicker/datepicker.component.d.ts +2 -2
  54. package/datepicker/month-view.component.d.ts +5 -6
  55. package/dl/_dl-theme.scss +2 -56
  56. package/dl/dl.component.d.ts +1 -2
  57. package/dl/dl.scss +10 -47
  58. package/dropdown/_dropdown-theme.scss +2 -2
  59. package/dropdown/dropdown-animations.d.ts +1 -1
  60. package/dropdown/dropdown-content.directive.d.ts +1 -1
  61. package/dropdown/dropdown-item.component.d.ts +1 -1
  62. package/dropdown/dropdown-item.scss +1 -1
  63. package/dropdown/dropdown-trigger.directive.d.ts +2 -2
  64. package/dropdown/dropdown.component.d.ts +1 -1
  65. package/dropdown/dropdown.types.d.ts +1 -1
  66. package/esm2022/alert/alert.component.mjs +2 -2
  67. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +27 -24
  68. package/esm2022/button/button.component.mjs +3 -2
  69. package/esm2022/button-toggle/button-toggle.component.mjs +15 -15
  70. package/esm2022/checkbox/checkbox.mjs +3 -3
  71. package/esm2022/code-block/actionbar.component.mjs +1 -1
  72. package/esm2022/code-block/code-block.component.mjs +3 -3
  73. package/esm2022/core/animation/index.mjs +2 -2
  74. package/esm2022/core/animation/select-animations.mjs +4 -4
  75. package/esm2022/core/formatters/index.mjs +10 -2
  76. package/esm2022/core/formatters/number/formatter.mjs +224 -3
  77. package/esm2022/core/forms/forms.directive.mjs +5 -5
  78. package/esm2022/core/locales/en-US.mjs +22 -4
  79. package/esm2022/core/locales/es-LA.mjs +31 -2
  80. package/esm2022/core/locales/fa-IR.mjs +30 -2
  81. package/esm2022/core/locales/locale-service.mjs +4 -4
  82. package/esm2022/core/locales/pt-BR.mjs +29 -2
  83. package/esm2022/core/locales/ru-RU.mjs +23 -2
  84. package/esm2022/core/locales/zh-CN.mjs +28 -2
  85. package/esm2022/core/option/action.mjs +3 -3
  86. package/esm2022/core/option/optgroup.mjs +3 -3
  87. package/esm2022/core/option/option.mjs +47 -10
  88. package/esm2022/core/overlay/overlay-position-map.mjs +7 -1
  89. package/esm2022/core/pop-up/constants.mjs +2 -1
  90. package/esm2022/core/pop-up/pop-up-trigger.mjs +12 -3
  91. package/esm2022/core/public-api.mjs +2 -1
  92. package/esm2022/core/select/constants.mjs +3 -3
  93. package/esm2022/core/services/theme.service.mjs +60 -0
  94. package/esm2022/core/version.mjs +2 -2
  95. package/esm2022/datepicker/calendar-body.component.mjs +7 -5
  96. package/esm2022/datepicker/calendar-header.component.mjs +9 -8
  97. package/esm2022/datepicker/calendar.component.mjs +8 -17
  98. package/esm2022/datepicker/datepicker-animations.mjs +2 -2
  99. package/esm2022/datepicker/datepicker-input.directive.mjs +29 -20
  100. package/esm2022/datepicker/datepicker-toggle.component.mjs +6 -6
  101. package/esm2022/datepicker/datepicker.component.mjs +12 -12
  102. package/esm2022/datepicker/month-view.component.mjs +9 -18
  103. package/esm2022/dl/dl.component.mjs +3 -7
  104. package/esm2022/dropdown/dropdown-animations.mjs +4 -4
  105. package/esm2022/dropdown/dropdown-content.directive.mjs +3 -3
  106. package/esm2022/dropdown/dropdown-errors.mjs +6 -6
  107. package/esm2022/dropdown/dropdown-item.component.mjs +5 -5
  108. package/esm2022/dropdown/dropdown-trigger.directive.mjs +10 -9
  109. package/esm2022/dropdown/dropdown.component.mjs +8 -8
  110. package/esm2022/dropdown/dropdown.types.mjs +1 -1
  111. package/esm2022/file-upload/file-drop.mjs +4 -4
  112. package/esm2022/file-upload/multiple-file-upload.component.mjs +13 -9
  113. package/esm2022/file-upload/single-file-upload.component.mjs +16 -13
  114. package/esm2022/form-field/cleaner.mjs +3 -3
  115. package/esm2022/form-field/form-field.mjs +7 -7
  116. package/esm2022/form-field/hint.mjs +4 -4
  117. package/esm2022/form-field/password-hint.mjs +11 -11
  118. package/esm2022/form-field/password-toggle.mjs +21 -8
  119. package/esm2022/form-field/suffix.mjs +3 -3
  120. package/esm2022/form-field/validate.directive.mjs +4 -4
  121. package/esm2022/input/input-number.mjs +259 -43
  122. package/esm2022/link/link.component.mjs +3 -3
  123. package/esm2022/list/list-selection.component.mjs +8 -8
  124. package/esm2022/list/list.component.mjs +2 -2
  125. package/esm2022/loader-overlay/loader-overlay.component.mjs +2 -2
  126. package/esm2022/modal/modal-control.service.mjs +5 -5
  127. package/esm2022/modal/modal-ref.class.mjs +1 -1
  128. package/esm2022/modal/modal.component.mjs +124 -111
  129. package/esm2022/modal/modal.service.mjs +23 -23
  130. package/esm2022/modal/modal.type.mjs +1 -3
  131. package/esm2022/navbar/navbar-item.component.mjs +6 -6
  132. package/esm2022/navbar/navbar.component.mjs +18 -9
  133. package/esm2022/navbar/vertical-navbar.component.mjs +9 -6
  134. package/esm2022/popover/popover-animations.mjs +2 -2
  135. package/esm2022/popover/popover-confirm.component.mjs +9 -9
  136. package/esm2022/popover/popover.component.mjs +24 -24
  137. package/esm2022/radio/radio.component.mjs +10 -8
  138. package/esm2022/select/select-option.directive.mjs +15 -3
  139. package/esm2022/select/select.component.mjs +37 -21
  140. package/esm2022/sidebar/sidebar-animations.mjs +2 -2
  141. package/esm2022/sidebar/sidebar.component.mjs +9 -9
  142. package/esm2022/sidepanel/sidepanel-container.component.mjs +3 -3
  143. package/esm2022/sidepanel/sidepanel-directives.mjs +2 -2
  144. package/esm2022/splitter/splitter.component.mjs +3 -3
  145. package/esm2022/table/table.component.mjs +3 -3
  146. package/esm2022/tabs/tab-body.component.mjs +7 -7
  147. package/esm2022/tabs/tab-content.directive.mjs +3 -3
  148. package/esm2022/tabs/tab-group.component.mjs +3 -3
  149. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +6 -6
  150. package/esm2022/tabs/tab.component.mjs +14 -5
  151. package/esm2022/tabs/tabs-animations.mjs +2 -2
  152. package/esm2022/tags/tag-input.mjs +3 -3
  153. package/esm2022/tags/tag-list.component.mjs +5 -5
  154. package/esm2022/tags/tag.component.mjs +10 -10
  155. package/esm2022/timepicker/timepicker.directive.mjs +10 -10
  156. package/esm2022/timezone/timezone-option.component.mjs +4 -4
  157. package/esm2022/timezone/timezone-select.component.mjs +5 -5
  158. package/esm2022/title/title.directive.mjs +5 -5
  159. package/esm2022/toast/toast.module.mjs +10 -4
  160. package/esm2022/toggle/toggle.component.mjs +4 -4
  161. package/esm2022/tooltip/tooltip.component.mjs +18 -17
  162. package/esm2022/tree/control/base-tree-control.mjs +1 -1
  163. package/esm2022/tree/control/flat-tree-control.mjs +4 -4
  164. package/esm2022/tree/control/tree-control.mjs +1 -1
  165. package/esm2022/tree/node.mjs +5 -5
  166. package/esm2022/tree/outlet.mjs +3 -3
  167. package/esm2022/tree/padding.directive.mjs +7 -7
  168. package/esm2022/tree/toggle.mjs +9 -11
  169. package/esm2022/tree/tree-base.mjs +3 -3
  170. package/esm2022/tree/tree-option.component.mjs +8 -5
  171. package/esm2022/tree/tree-selection.component.mjs +8 -6
  172. package/esm2022/tree/tree.mjs +3 -3
  173. package/esm2022/tree-select/tree-select.component.mjs +14 -15
  174. package/fesm2022/koobiq-components-alert.mjs +2 -2
  175. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  176. package/fesm2022/koobiq-components-autocomplete.mjs +27 -24
  177. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  178. package/fesm2022/koobiq-components-button-toggle.mjs +14 -14
  179. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  180. package/fesm2022/koobiq-components-button.mjs +2 -1
  181. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  182. package/fesm2022/koobiq-components-checkbox.mjs +2 -2
  183. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  184. package/fesm2022/koobiq-components-code-block.mjs +3 -3
  185. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  186. package/fesm2022/koobiq-components-core.mjs +526 -39
  187. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  188. package/fesm2022/koobiq-components-datepicker.mjs +72 -78
  189. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  190. package/fesm2022/koobiq-components-dl.mjs +2 -6
  191. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  192. package/fesm2022/koobiq-components-dropdown.mjs +30 -29
  193. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  194. package/fesm2022/koobiq-components-file-upload.mjs +26 -19
  195. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  196. package/fesm2022/koobiq-components-form-field.mjs +46 -34
  197. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  198. package/fesm2022/koobiq-components-input.mjs +257 -43
  199. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  200. package/fesm2022/koobiq-components-link.mjs +2 -2
  201. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  202. package/fesm2022/koobiq-components-list.mjs +9 -9
  203. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  204. package/fesm2022/koobiq-components-loader-overlay.mjs +2 -2
  205. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  206. package/fesm2022/koobiq-components-modal.mjs +149 -140
  207. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  208. package/fesm2022/koobiq-components-navbar.mjs +28 -20
  209. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  210. package/fesm2022/koobiq-components-popover.mjs +31 -31
  211. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  212. package/fesm2022/koobiq-components-radio.mjs +9 -7
  213. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  214. package/fesm2022/koobiq-components-select.mjs +50 -22
  215. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  216. package/fesm2022/koobiq-components-sidebar.mjs +8 -8
  217. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  218. package/fesm2022/koobiq-components-sidepanel.mjs +3 -3
  219. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  220. package/fesm2022/koobiq-components-splitter.mjs +2 -2
  221. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  222. package/fesm2022/koobiq-components-table.mjs +2 -2
  223. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  224. package/fesm2022/koobiq-components-tabs.mjs +29 -20
  225. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  226. package/fesm2022/koobiq-components-tags.mjs +15 -15
  227. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  228. package/fesm2022/koobiq-components-timepicker.mjs +9 -9
  229. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  230. package/fesm2022/koobiq-components-timezone.mjs +7 -7
  231. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  232. package/fesm2022/koobiq-components-title.mjs +4 -4
  233. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  234. package/fesm2022/koobiq-components-toast.mjs +8 -2
  235. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  236. package/fesm2022/koobiq-components-toggle.mjs +3 -3
  237. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  238. package/fesm2022/koobiq-components-tooltip.mjs +17 -16
  239. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  240. package/fesm2022/koobiq-components-tree-select.mjs +13 -14
  241. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  242. package/fesm2022/koobiq-components-tree.mjs +42 -38
  243. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  244. package/file-upload/_file-upload-theme.scss +54 -40
  245. package/file-upload/file-drop.d.ts +1 -1
  246. package/file-upload/file-upload.scss +2 -9
  247. package/file-upload/multiple-file-upload.component.d.ts +4 -3
  248. package/file-upload/multiple-file-upload.component.scss +170 -59
  249. package/file-upload/single-file-upload.component.d.ts +4 -3
  250. package/file-upload/single-file-upload.component.scss +42 -22
  251. package/form-field/_hint-theme.scss +1 -1
  252. package/form-field/cleaner.d.ts +1 -1
  253. package/form-field/form-field.d.ts +2 -2
  254. package/form-field/form-field.scss +2 -2
  255. package/form-field/hint.d.ts +1 -1
  256. package/form-field/password-hint.d.ts +2 -1
  257. package/form-field/password-toggle.d.ts +11 -6
  258. package/form-field/suffix.d.ts +1 -1
  259. package/form-field/validate.directive.d.ts +1 -1
  260. package/icon/_icon-theme.scss +12 -22
  261. package/input/input-number.d.ts +61 -10
  262. package/link/_link-theme.scss +6 -2
  263. package/link/link.component.d.ts +1 -1
  264. package/list/_list-theme.scss +2 -2
  265. package/list/list-selection.component.d.ts +1 -1
  266. package/list/list.scss +1 -5
  267. package/loader-overlay/loader-overlay.scss +3 -0
  268. package/markdown/_markdown-theme.scss +2 -2
  269. package/modal/README.md +5 -5
  270. package/modal/_modal-theme.scss +10 -18
  271. package/modal/modal-ref.class.d.ts +2 -2
  272. package/modal/modal.component.d.ts +51 -47
  273. package/modal/modal.scss +0 -1
  274. package/modal/modal.type.d.ts +35 -36
  275. package/navbar/_navbar-theme.scss +1 -1
  276. package/navbar/navbar-item.component.d.ts +2 -2
  277. package/navbar/navbar.component.d.ts +5 -2
  278. package/navbar/vertical-navbar.component.d.ts +4 -2
  279. package/package.json +28 -30
  280. package/popover/README.md +14 -14
  281. package/popover/_popover-theme.scss +15 -78
  282. package/popover/popover-animations.d.ts +1 -1
  283. package/popover/popover-confirm.component.d.ts +1 -1
  284. package/popover/popover.component.d.ts +3 -3
  285. package/popover/popover.scss +60 -50
  286. package/prebuilt-themes/dark-theme.css +1 -1
  287. package/prebuilt-themes/light-theme.css +1 -1
  288. package/radio/_radio-theme.scss +17 -4
  289. package/radio/radio.component.d.ts +2 -2
  290. package/radio/radio.scss +13 -0
  291. package/select/_select-theme.scss +1 -1
  292. package/select/select-option.directive.d.ts +2 -0
  293. package/select/select.component.d.ts +14 -11
  294. package/sidebar/sidebar-animations.d.ts +1 -1
  295. package/sidebar/sidebar.component.d.ts +3 -3
  296. package/sidepanel/_sidepanel-theme.scss +5 -0
  297. package/splitter/splitter.component.d.ts +1 -1
  298. package/table/_table-theme.scss +1 -1
  299. package/table/table.component.d.ts +1 -1
  300. package/tabs/tab-body.component.d.ts +1 -1
  301. package/tabs/tab-content.directive.d.ts +1 -1
  302. package/tabs/tab-nav-bar/tab-nav-bar.d.ts +2 -2
  303. package/tabs/tab.component.d.ts +1 -1
  304. package/tabs/tabs-animations.d.ts +1 -1
  305. package/tags/_tag-theme.scss +1 -1
  306. package/tags/tag-input.d.ts +2 -2
  307. package/tags/tag-list.component.d.ts +2 -2
  308. package/tags/tag-list.scss +2 -0
  309. package/tags/tag.component.d.ts +3 -3
  310. package/timepicker/timepicker.directive.d.ts +2 -2
  311. package/timezone/timezone-option.component.d.ts +1 -1
  312. package/timezone/timezone-select.component.d.ts +1 -1
  313. package/title/title.directive.d.ts +1 -1
  314. package/toggle/_toggle-theme.scss +9 -1
  315. package/toggle/toggle.component.d.ts +1 -1
  316. package/toggle/toggle.scss +5 -2
  317. package/tooltip/tooltip.component.d.ts +3 -3
  318. package/tree/_tree-theme.scss +2 -2
  319. package/tree/control/base-tree-control.d.ts +1 -1
  320. package/tree/control/tree-control.d.ts +1 -1
  321. package/tree/node.d.ts +1 -1
  322. package/tree/outlet.d.ts +1 -1
  323. package/tree/padding.directive.d.ts +1 -1
  324. package/tree/toggle.d.ts +3 -3
  325. package/tree/tree-base.d.ts +1 -1
  326. package/tree/tree-option.component.d.ts +1 -1
  327. package/tree/tree-option.scss +2 -0
  328. package/tree/tree-selection.component.d.ts +1 -1
  329. package/tree/tree.d.ts +1 -1
  330. package/tree-select/_tree-select-theme.scss +1 -1
  331. package/tree-select/tree-select.component.d.ts +1 -1
@@ -5,7 +5,7 @@ import { ComponentPortal, PortalModule } from '@angular/cdk/portal';
5
5
  import * as i1 from '@angular/common';
6
6
  import { DOCUMENT, CommonModule } from '@angular/common';
7
7
  import * as i0 from '@angular/core';
8
- import { EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, Injectable, Optional, Inject, ViewChild, InjectionToken, forwardRef, Directive, ContentChild, NgModule } from '@angular/core';
8
+ import { EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, Injectable, Optional, ViewChild, InjectionToken, Inject, forwardRef, Directive, ContentChild, NgModule } from '@angular/core';
9
9
  import * as i3 from '@koobiq/components/button';
10
10
  import { KbqButtonModule } from '@koobiq/components/button';
11
11
  import * as i6 from '@koobiq/components/icon';
@@ -13,7 +13,7 @@ import { KbqIconModule } from '@koobiq/components/icon';
13
13
  import * as i5 from '@koobiq/components/select';
14
14
  import { KbqSelectModule } from '@koobiq/components/select';
15
15
  import * as i1$1 from '@koobiq/components/core';
16
- import { KBQ_DATE_FORMATS, validationTooltipShowDelay, validationTooltipHideDelay, KBQ_LOCALE_SERVICE } from '@koobiq/components/core';
16
+ import { validationTooltipShowDelay, validationTooltipHideDelay, KBQ_DATE_FORMATS, KBQ_LOCALE_SERVICE } from '@koobiq/components/core';
17
17
  import * as i4 from '@koobiq/components/form-field';
18
18
  import { KbqFormFieldControl } from '@koobiq/components/form-field';
19
19
  import { Subject, Subscription, merge, of } from 'rxjs';
@@ -69,7 +69,9 @@ class KbqCalendarBody {
69
69
  this.firstRowOffset = rows && rows.length && rows[0].length ? numCols - rows[0].length : 0;
70
70
  }
71
71
  if (changes.cellAspectRatio || columnChanges || !this.cellPadding) {
72
- this.cellPadding = `${this.cellAspectRatio * 50 / numCols}%`;
72
+ // todo
73
+ // this.cellPadding = `${this.cellAspectRatio * 50 / numCols}%`;
74
+ this.cellPadding = '0';
73
75
  }
74
76
  if (columnChanges || !this.cellWidth) {
75
77
  this.cellWidth = `${100 / numCols}%`;
@@ -84,13 +86,13 @@ class KbqCalendarBody {
84
86
  return cellNumber === this.activeCell;
85
87
  }
86
88
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqCalendarBody, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
87
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqCalendarBody, selector: "[kbq-calendar-body]", inputs: { rows: "rows", todayValue: "todayValue", selectedValue: "selectedValue", labelMinRequiredCells: "labelMinRequiredCells", numCols: "numCols", activeCell: "activeCell", cellAspectRatio: "cellAspectRatio" }, outputs: { selectedValueChange: "selectedValueChange" }, host: { classAttribute: "kbq-calendar__body" }, exportAs: ["mcCalendarBody"], usesOnChanges: true, ngImport: i0, template: "<!-- Create the first row separately so we can include a special spacer cell. -->\n<tr *ngFor=\"let row of rows; let rowIndex = index\">\n <!--\n We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\n The aspect ratio of the table cells is maintained by setting the top and bottom padding as a\n percentage of the width (a variant of the trick described here:\n https://www.w3schools.com/howto/howto_css_aspect_ratio.asp).\n -->\n <td *ngIf=\"rowIndex === 0 && firstRowOffset\"\n class=\"kbq-calendar__body-label\"\n [attr.colspan]=\"firstRowOffset\">\n </td>\n\n <td *ngFor=\"let item of row; let colIndex = index\"\n class=\"kbq-calendar__body-cell\"\n [ngClass]=\"item.cssClasses!\"\n [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [class.kbq-calendar__body_disabled]=\"!item.enabled\"\n [class.kbq-calendar__body_active]=\"isActiveCell(rowIndex, colIndex)\"\n (click)=\"cellClicked(item)\"\n [style.width]=\"cellWidth\"\n [style.paddingTop]=\"cellPadding\"\n [style.paddingBottom]=\"cellPadding\">\n <div class=\"kbq-calendar__body-cell-content\"\n [class.kbq-selected]=\"selectedValue === item.value\"\n [class.kbq-calendar__body-today]=\"todayValue === item.value\">\n {{ item.displayValue }}\n </div>\n </td>\n</tr>\n", styles: [".kbq-calendar__body{min-width:calc(7 * var(--kbq-datepicker-body-size-cell-min-size, 32px))}.kbq-calendar__body-cell{position:relative;height:0;line-height:0;text-align:center;outline:none;cursor:pointer}.kbq-calendar__body_disabled{cursor:default}.kbq-calendar__body-cell-content{position:absolute;top:var(--kbq-datepicker-body-size-cell-margin, 5%);left:var(--kbq-datepicker-body-size-cell-margin, 5%);padding:var(--kbq-datepicker-body-size-cell-padding, 8px);display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:var(--kbq-datepicker-body-size-cell-border-width, 1px);border-radius:var(--kbq-datepicker-body-size-cell-border-radius, 0);border-style:solid}kbq-month-view .kbq-calendar__body-cell-content{justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
89
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqCalendarBody, selector: "[kbq-calendar-body]", inputs: { rows: "rows", todayValue: "todayValue", selectedValue: "selectedValue", labelMinRequiredCells: "labelMinRequiredCells", numCols: "numCols", activeCell: "activeCell", cellAspectRatio: "cellAspectRatio" }, outputs: { selectedValueChange: "selectedValueChange" }, host: { classAttribute: "kbq-calendar__body" }, exportAs: ["kbqCalendarBody"], usesOnChanges: true, ngImport: i0, template: "<!-- Create the first row separately so we can include a special spacer cell. -->\n<tr *ngFor=\"let row of rows; let rowIndex = index\">\n <!--\n We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\n The aspect ratio of the table cells is maintained by setting the top and bottom padding as a\n percentage of the width (a variant of the trick described here:\n https://www.w3schools.com/howto/howto_css_aspect_ratio.asp).\n -->\n <td *ngIf=\"rowIndex === 0 && firstRowOffset\"\n class=\"kbq-calendar__body-label\"\n [attr.colspan]=\"firstRowOffset\">\n </td>\n\n <td *ngFor=\"let item of row; let colIndex = index\"\n class=\"kbq-calendar__body-cell\"\n [ngClass]=\"item.cssClasses!\"\n [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [class.kbq-calendar__body_active]=\"isActiveCell(rowIndex, colIndex)\"\n (click)=\"cellClicked(item)\"\n [style.width]=\"cellWidth\"\n [style.paddingTop]=\"cellPadding\"\n [style.paddingBottom]=\"cellPadding\">\n\n <div class=\"kbq-calendar__body-cell-content\"\n [class.kbq-disabled]=\"!item.enabled\"\n [class.kbq-selected]=\"selectedValue === item.value\"\n [class.kbq-calendar__body-today]=\"todayValue === item.value\">\n {{ item.displayValue }}\n </div>\n </td>\n</tr>\n", styles: [".kbq-calendar__body-cell{position:relative;height:0;line-height:0;text-align:center;outline:none;cursor:pointer;padding:0}.kbq-disabled{cursor:default}.kbq-calendar__body-cell-content{display:flex;align-items:center;justify-content:center;box-sizing:border-box;height:32px;line-height:1;border-radius:var(--kbq-datepicker-size-grid-cell-border-radius, 8px);margin-bottom:var(--kbq-datepicker-size-grid-content-gap-vertical, 2px)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
88
90
  }
89
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqCalendarBody, decorators: [{
90
92
  type: Component,
91
- args: [{ selector: '[kbq-calendar-body]', exportAs: 'mcCalendarBody', host: {
93
+ args: [{ selector: '[kbq-calendar-body]', exportAs: 'kbqCalendarBody', host: {
92
94
  class: 'kbq-calendar__body'
93
- }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Create the first row separately so we can include a special spacer cell. -->\n<tr *ngFor=\"let row of rows; let rowIndex = index\">\n <!--\n We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\n The aspect ratio of the table cells is maintained by setting the top and bottom padding as a\n percentage of the width (a variant of the trick described here:\n https://www.w3schools.com/howto/howto_css_aspect_ratio.asp).\n -->\n <td *ngIf=\"rowIndex === 0 && firstRowOffset\"\n class=\"kbq-calendar__body-label\"\n [attr.colspan]=\"firstRowOffset\">\n </td>\n\n <td *ngFor=\"let item of row; let colIndex = index\"\n class=\"kbq-calendar__body-cell\"\n [ngClass]=\"item.cssClasses!\"\n [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [class.kbq-calendar__body_disabled]=\"!item.enabled\"\n [class.kbq-calendar__body_active]=\"isActiveCell(rowIndex, colIndex)\"\n (click)=\"cellClicked(item)\"\n [style.width]=\"cellWidth\"\n [style.paddingTop]=\"cellPadding\"\n [style.paddingBottom]=\"cellPadding\">\n <div class=\"kbq-calendar__body-cell-content\"\n [class.kbq-selected]=\"selectedValue === item.value\"\n [class.kbq-calendar__body-today]=\"todayValue === item.value\">\n {{ item.displayValue }}\n </div>\n </td>\n</tr>\n", styles: [".kbq-calendar__body{min-width:calc(7 * var(--kbq-datepicker-body-size-cell-min-size, 32px))}.kbq-calendar__body-cell{position:relative;height:0;line-height:0;text-align:center;outline:none;cursor:pointer}.kbq-calendar__body_disabled{cursor:default}.kbq-calendar__body-cell-content{position:absolute;top:var(--kbq-datepicker-body-size-cell-margin, 5%);left:var(--kbq-datepicker-body-size-cell-margin, 5%);padding:var(--kbq-datepicker-body-size-cell-padding, 8px);display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:var(--kbq-datepicker-body-size-cell-border-width, 1px);border-radius:var(--kbq-datepicker-body-size-cell-border-radius, 0);border-style:solid}kbq-month-view .kbq-calendar__body-cell-content{justify-content:flex-end}\n"] }]
95
+ }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Create the first row separately so we can include a special spacer cell. -->\n<tr *ngFor=\"let row of rows; let rowIndex = index\">\n <!--\n We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\n The aspect ratio of the table cells is maintained by setting the top and bottom padding as a\n percentage of the width (a variant of the trick described here:\n https://www.w3schools.com/howto/howto_css_aspect_ratio.asp).\n -->\n <td *ngIf=\"rowIndex === 0 && firstRowOffset\"\n class=\"kbq-calendar__body-label\"\n [attr.colspan]=\"firstRowOffset\">\n </td>\n\n <td *ngFor=\"let item of row; let colIndex = index\"\n class=\"kbq-calendar__body-cell\"\n [ngClass]=\"item.cssClasses!\"\n [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [class.kbq-calendar__body_active]=\"isActiveCell(rowIndex, colIndex)\"\n (click)=\"cellClicked(item)\"\n [style.width]=\"cellWidth\"\n [style.paddingTop]=\"cellPadding\"\n [style.paddingBottom]=\"cellPadding\">\n\n <div class=\"kbq-calendar__body-cell-content\"\n [class.kbq-disabled]=\"!item.enabled\"\n [class.kbq-selected]=\"selectedValue === item.value\"\n [class.kbq-calendar__body-today]=\"todayValue === item.value\">\n {{ item.displayValue }}\n </div>\n </td>\n</tr>\n", styles: [".kbq-calendar__body-cell{position:relative;height:0;line-height:0;text-align:center;outline:none;cursor:pointer;padding:0}.kbq-disabled{cursor:default}.kbq-calendar__body-cell-content{display:flex;align-items:center;justify-content:center;box-sizing:border-box;height:32px;line-height:1;border-radius:var(--kbq-datepicker-size-grid-cell-border-radius, 8px);margin-bottom:var(--kbq-datepicker-size-grid-content-gap-vertical, 2px)}\n"] }]
94
96
  }], propDecorators: { rows: [{
95
97
  type: Input
96
98
  }], todayValue: [{
@@ -201,25 +203,26 @@ class KbqCalendarHeader {
201
203
  }
202
204
  updateSelectedValues() {
203
205
  this.selectedMonth = this.monthNames[this.adapter.getMonth(this.activeDate)].value;
204
- const selectedYear = this.adapter.getYear(this.activeDate);
205
- this.selectedYear = this.years.includes(selectedYear) ? selectedYear : this.years[0];
206
+ const year = this.adapter.getYear(this.activeDate);
207
+ this.selectedYear = this.years.find(({ name }) => name === year)
208
+ || { name: year, value: this.adapter.getYearName(this.activeDate) };
206
209
  }
207
210
  updateYearsArray() {
208
211
  const minYear = this.adapter.getYear(this.minDate);
209
212
  const maxYear = this.adapter.getYear(this.maxDate);
210
213
  this.years = [];
211
- for (let i = minYear; i <= maxYear; i++) {
212
- this.years.push(i);
214
+ for (let key = minYear; key <= maxYear; key++) {
215
+ this.years.push({ name: key, value: this.adapter.getYearName(this.adapter.createDate(key)) });
213
216
  }
214
217
  }
215
218
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqCalendarHeader, deps: [{ token: i1$1.DateAdapter }], target: i0.ɵɵFactoryTarget.Component }); }
216
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqCalendarHeader, selector: "kbq-calendar-header", inputs: { activeDate: "activeDate", maxDate: "maxDate", minDate: "minDate" }, outputs: { activeDateChange: "activeDateChange", monthSelected: "monthSelected", yearSelected: "yearSelected" }, host: { classAttribute: "kbq-calendar-header" }, exportAs: ["mcCalendarHeader"], ngImport: i0, template: "<div class=\"kbq-calendar-header__select-group\">\n <kbq-select\n class=\"kbq-calendar-header__select\"\n #monthSelect=\"mcSelect\"\n [value]=\"selectedMonth\"\n [panelClass]=\"'kbq-calendar-select-panel'\"\n (selectionChange)=\"onMonthSelected($event.value)\">\n\n <button class=\"kbq-button_transparent layout-padding-right-xs\"\n kbq-button\n kbq-select-matcher\n [class.kbq-active]=\"monthSelect.panelOpen\"\n [tabindex]=\"-1\">\n {{ monthSelect.triggerValue }}\n\n <i class=\"layout-padding-left-3xs\" kbq-icon=\"mc-angle-down-S_16\"></i>\n </button>\n\n <kbq-option *ngFor=\"let month of monthNames\"\n [kbqTooltipDisabled]=\"true\"\n [value]=\"month.value\">\n {{ month.name }}\n </kbq-option>\n </kbq-select>\n\n <kbq-select\n #yearSelect=\"mcSelect\"\n [value]=\"selectedYear\"\n [panelClass]=\"'kbq-calendar-select-panel'\"\n (selectionChange)=\"onYearSelected($event.value)\">\n <button class=\"kbq-button_transparent layout-padding-right-xs\"\n kbq-button\n kbq-select-matcher\n [class.kbq-active]=\"yearSelect.panelOpen\"\n [tabindex]=\"-1\">\n {{ yearSelect.triggerValue }}\n\n <i class=\"layout-padding-left-3xs\" kbq-icon=\"mc-angle-down-S_16\"></i>\n </button>\n\n <kbq-option *ngFor=\"let year of years\"\n [kbqTooltipDisabled]=\"true\"\n [value]=\"year\">\n {{ year }}\n </kbq-option>\n </kbq-select>\n</div>\n\n<div class=\"kbq-calendar-header__button-group\">\n <button kbq-button\n class=\"kbq-button_transparent kbq-calendar-header__previous-button\"\n [tabindex]=\"-1\"\n [disabled]=\"previousDisabled\"\n (click)=\"selectPreviousMonth()\">\n\n <i kbq-icon=\"mc-angle-left-L_16\"></i>\n </button>\n\n <button kbq-button\n class=\"kbq-button_transparent\"\n [tabindex]=\"-1\"\n (click)=\"selectCurrentDate()\">\n\n <i kbq-icon=\"mc-circle-8_16\"></i>\n </button>\n\n <button kbq-button\n class=\"kbq-button_transparent kbq-calendar-header__next-button\"\n [tabindex]=\"-1\"\n [disabled]=\"nextDisabled\"\n (click)=\"selectNextMonth()\">\n\n <i kbq-icon=\"mc-angle-right-L_16\"></i>\n </button>\n</div>\n", styles: [".kbq-calendar-header{display:flex;flex-direction:row;justify-content:space-between;padding:var(--kbq-datepicker-calendar-size-padding-top, 16px) var(--kbq-datepicker-calendar-size-padding-horizontal, 8px) var(--kbq-datepicker-calendar-size-padding-blocks, 12px) var(--kbq-datepicker-calendar-size-padding-horizontal, 8px)}.kbq-calendar-header__previous-button:after{border-left-width:var(--kbq-datepicker-calendar-size-icon-border-width, 2px);transform:var(--kbq-datepicker-calendar-size-icon-prev-icon-transform, translateX(2px) rotate(-45deg))}.kbq-calendar-header__next-button:after{border-right-width:var(--kbq-datepicker-calendar-size-icon-border-width, 2px);transform:var(--kbq-datepicker-calendar-size-icon-nex-icon-transform, translateX(-2px) rotate(45deg))}.kbq-calendar-header__select{width:auto!important}.kbq-calendar-header__button-group,.kbq-calendar-header__select-group{display:flex;flex-direction:row}.kbq-calendar-select-panel{margin-top:2px;min-width:98%!important}.kbq-calendar-select-panel .kbq-select__content{max-height:384px;overflow-x:hidden;scrollbar-gutter:stable}.kbq-calendar-select-panel .kbq-select__content .kbq-option{min-width:65px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.KbqButton, selector: "[kbq-button]", inputs: ["color", "tabIndex", "kbqStyle", "disabled"] }, { kind: "directive", type: i3.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "directive", type: i4.KbqValidateDirective, selector: " input[kbqInput], input[kbqInputPassword], input[mcTimepicker], input[mcDatepicker], textarea[kbqTextarea], kbq-select, kbq-tree-select, kbq-tag-list ", exportAs: ["KbqValidate"] }, { kind: "component", type: i5.KbqSelect, selector: "kbq-select", inputs: ["disabled", "tabIndex", "hiddenItemsText", "panelClass", "backdropClass", "errorStateMatcher", "sortComparator", "hasBackdrop", "placeholder", "required", "multiple", "compareWith", "value", "id", "hiddenItemsTextFormatter"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["mcSelect"] }, { kind: "directive", type: i5.KbqSelectMatcher, selector: "kbq-select-matcher, [kbq-select-matcher]" }, { kind: "directive", type: i5.KbqOptionTooltip, selector: "kbq-option" }, { kind: "component", type: i1$1.KbqOption, selector: "kbq-option", inputs: ["value", "showCheckbox", "disabled"], outputs: ["onSelectionChange"], exportAs: ["mcOption"] }, { kind: "component", type: i6.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
219
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqCalendarHeader, selector: "kbq-calendar-header", inputs: { activeDate: "activeDate", maxDate: "maxDate", minDate: "minDate" }, outputs: { activeDateChange: "activeDateChange", monthSelected: "monthSelected", yearSelected: "yearSelected" }, host: { classAttribute: "kbq-calendar-header" }, exportAs: ["kbqCalendarHeader"], ngImport: i0, template: "<div class=\"kbq-calendar-header__select-group\">\n <kbq-select\n class=\"kbq-calendar-header__select\"\n #monthSelect=\"kbqSelect\"\n [value]=\"selectedMonth\"\n [panelClass]=\"'kbq-calendar-select-panel'\"\n (selectionChange)=\"onMonthSelected($event.value)\">\n\n <button class=\"layout-padding-right-xs\"\n kbq-button\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n kbq-select-matcher\n [class.kbq-active]=\"monthSelect.panelOpen\"\n [tabindex]=\"-1\">\n {{ monthSelect.triggerValue }}\n\n <i class=\"layout-padding-left-3xs\" kbq-icon=\"mc-angle-down-S_16\" [color]=\"'contrast'\"></i>\n </button>\n\n <kbq-option *ngFor=\"let month of monthNames\"\n [kbqTooltipDisabled]=\"true\"\n [value]=\"month.value\">\n {{ month.name }}\n </kbq-option>\n </kbq-select>\n\n <kbq-select\n #yearSelect=\"kbqSelect\"\n [value]=\"selectedYear\"\n [panelClass]=\"'kbq-calendar-select-panel'\"\n (selectionChange)=\"onYearSelected($event.value.name)\">\n <button class=\"layout-padding-right-xs\"\n kbq-button\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n kbq-select-matcher\n [class.kbq-active]=\"yearSelect.panelOpen\"\n [tabindex]=\"-1\">\n {{ selectedYear.value }}\n\n <i class=\"layout-padding-left-3xs\" kbq-icon=\"mc-angle-down-S_16\"></i>\n </button>\n\n <kbq-option *ngFor=\"let year of years\"\n [kbqTooltipDisabled]=\"true\"\n [value]=\"year\">\n {{ year.value }}\n </kbq-option>\n </kbq-select>\n</div>\n\n<div class=\"kbq-calendar-header__button-group\">\n <button kbq-button\n class=\"kbq-calendar-header__previous-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n [tabindex]=\"-1\"\n [disabled]=\"previousDisabled\"\n (click)=\"selectPreviousMonth()\">\n\n <i kbq-icon=\"mc-angle-left-L_16\"></i>\n </button>\n\n <button kbq-button\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n [tabindex]=\"-1\"\n (click)=\"selectCurrentDate()\">\n\n <i kbq-icon=\"mc-circle-8_16\"></i>\n </button>\n\n <button kbq-button\n class=\"kbq-calendar-header__next-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n [tabindex]=\"-1\"\n [disabled]=\"nextDisabled\"\n (click)=\"selectNextMonth()\">\n\n <i kbq-icon=\"mc-angle-right-L_16\"></i>\n </button>\n</div>\n", styles: [".kbq-calendar-header{display:flex;flex-direction:row;justify-content:space-between;padding-right:var(--kbq-datepicker-size-header-padding-horizontal, 4px);padding-left:var(--kbq-datepicker-size-header-padding-horizontal, 4px);margin-bottom:var(--kbq-datepicker-size-header-margin-bottom, 2px)}.kbq-calendar-header__select{width:auto!important}.kbq-calendar-header__button-group,.kbq-calendar-header__select-group{display:flex;flex-direction:row}.kbq-calendar-select-panel{margin-top:2px;min-width:98%!important}.kbq-calendar-select-panel .kbq-select__content{max-height:384px;overflow-x:hidden;scrollbar-gutter:auto}.kbq-calendar-select-panel .kbq-select__content .kbq-option{min-width:65px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.KbqButton, selector: "[kbq-button]", inputs: ["color", "tabIndex", "kbqStyle", "disabled"] }, { kind: "directive", type: i3.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "directive", type: i4.KbqValidateDirective, selector: " input[kbqInput], input[kbqInputPassword], input[kbqTimepicker], input[kbqDatepicker], textarea[kbqTextarea], kbq-select, kbq-tree-select, kbq-tag-list ", exportAs: ["KbqValidate"] }, { kind: "component", type: i5.KbqSelect, selector: "kbq-select", inputs: ["disabled", "tabIndex", "hiddenItemsText", "panelClass", "backdropClass", "errorStateMatcher", "sortComparator", "hasBackdrop", "placeholder", "required", "multiple", "compareWith", "value", "id", "hiddenItemsTextFormatter"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["kbqSelect"] }, { kind: "directive", type: i5.KbqSelectMatcher, selector: "kbq-select-matcher, [kbq-select-matcher]" }, { kind: "directive", type: i5.KbqOptionTooltip, selector: "kbq-option" }, { kind: "component", type: i1$1.KbqOption, selector: "kbq-option", inputs: ["value", "showCheckbox", "disabled"], outputs: ["onSelectionChange"], exportAs: ["kbqOption"] }, { kind: "component", type: i6.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
217
220
  }
218
221
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqCalendarHeader, decorators: [{
219
222
  type: Component,
220
- args: [{ selector: 'kbq-calendar-header', exportAs: 'mcCalendarHeader', host: {
223
+ args: [{ selector: 'kbq-calendar-header', exportAs: 'kbqCalendarHeader', host: {
221
224
  class: 'kbq-calendar-header'
222
- }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"kbq-calendar-header__select-group\">\n <kbq-select\n class=\"kbq-calendar-header__select\"\n #monthSelect=\"mcSelect\"\n [value]=\"selectedMonth\"\n [panelClass]=\"'kbq-calendar-select-panel'\"\n (selectionChange)=\"onMonthSelected($event.value)\">\n\n <button class=\"kbq-button_transparent layout-padding-right-xs\"\n kbq-button\n kbq-select-matcher\n [class.kbq-active]=\"monthSelect.panelOpen\"\n [tabindex]=\"-1\">\n {{ monthSelect.triggerValue }}\n\n <i class=\"layout-padding-left-3xs\" kbq-icon=\"mc-angle-down-S_16\"></i>\n </button>\n\n <kbq-option *ngFor=\"let month of monthNames\"\n [kbqTooltipDisabled]=\"true\"\n [value]=\"month.value\">\n {{ month.name }}\n </kbq-option>\n </kbq-select>\n\n <kbq-select\n #yearSelect=\"mcSelect\"\n [value]=\"selectedYear\"\n [panelClass]=\"'kbq-calendar-select-panel'\"\n (selectionChange)=\"onYearSelected($event.value)\">\n <button class=\"kbq-button_transparent layout-padding-right-xs\"\n kbq-button\n kbq-select-matcher\n [class.kbq-active]=\"yearSelect.panelOpen\"\n [tabindex]=\"-1\">\n {{ yearSelect.triggerValue }}\n\n <i class=\"layout-padding-left-3xs\" kbq-icon=\"mc-angle-down-S_16\"></i>\n </button>\n\n <kbq-option *ngFor=\"let year of years\"\n [kbqTooltipDisabled]=\"true\"\n [value]=\"year\">\n {{ year }}\n </kbq-option>\n </kbq-select>\n</div>\n\n<div class=\"kbq-calendar-header__button-group\">\n <button kbq-button\n class=\"kbq-button_transparent kbq-calendar-header__previous-button\"\n [tabindex]=\"-1\"\n [disabled]=\"previousDisabled\"\n (click)=\"selectPreviousMonth()\">\n\n <i kbq-icon=\"mc-angle-left-L_16\"></i>\n </button>\n\n <button kbq-button\n class=\"kbq-button_transparent\"\n [tabindex]=\"-1\"\n (click)=\"selectCurrentDate()\">\n\n <i kbq-icon=\"mc-circle-8_16\"></i>\n </button>\n\n <button kbq-button\n class=\"kbq-button_transparent kbq-calendar-header__next-button\"\n [tabindex]=\"-1\"\n [disabled]=\"nextDisabled\"\n (click)=\"selectNextMonth()\">\n\n <i kbq-icon=\"mc-angle-right-L_16\"></i>\n </button>\n</div>\n", styles: [".kbq-calendar-header{display:flex;flex-direction:row;justify-content:space-between;padding:var(--kbq-datepicker-calendar-size-padding-top, 16px) var(--kbq-datepicker-calendar-size-padding-horizontal, 8px) var(--kbq-datepicker-calendar-size-padding-blocks, 12px) var(--kbq-datepicker-calendar-size-padding-horizontal, 8px)}.kbq-calendar-header__previous-button:after{border-left-width:var(--kbq-datepicker-calendar-size-icon-border-width, 2px);transform:var(--kbq-datepicker-calendar-size-icon-prev-icon-transform, translateX(2px) rotate(-45deg))}.kbq-calendar-header__next-button:after{border-right-width:var(--kbq-datepicker-calendar-size-icon-border-width, 2px);transform:var(--kbq-datepicker-calendar-size-icon-nex-icon-transform, translateX(-2px) rotate(45deg))}.kbq-calendar-header__select{width:auto!important}.kbq-calendar-header__button-group,.kbq-calendar-header__select-group{display:flex;flex-direction:row}.kbq-calendar-select-panel{margin-top:2px;min-width:98%!important}.kbq-calendar-select-panel .kbq-select__content{max-height:384px;overflow-x:hidden;scrollbar-gutter:stable}.kbq-calendar-select-panel .kbq-select__content .kbq-option{min-width:65px}\n"] }]
225
+ }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"kbq-calendar-header__select-group\">\n <kbq-select\n class=\"kbq-calendar-header__select\"\n #monthSelect=\"kbqSelect\"\n [value]=\"selectedMonth\"\n [panelClass]=\"'kbq-calendar-select-panel'\"\n (selectionChange)=\"onMonthSelected($event.value)\">\n\n <button class=\"layout-padding-right-xs\"\n kbq-button\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n kbq-select-matcher\n [class.kbq-active]=\"monthSelect.panelOpen\"\n [tabindex]=\"-1\">\n {{ monthSelect.triggerValue }}\n\n <i class=\"layout-padding-left-3xs\" kbq-icon=\"mc-angle-down-S_16\" [color]=\"'contrast'\"></i>\n </button>\n\n <kbq-option *ngFor=\"let month of monthNames\"\n [kbqTooltipDisabled]=\"true\"\n [value]=\"month.value\">\n {{ month.name }}\n </kbq-option>\n </kbq-select>\n\n <kbq-select\n #yearSelect=\"kbqSelect\"\n [value]=\"selectedYear\"\n [panelClass]=\"'kbq-calendar-select-panel'\"\n (selectionChange)=\"onYearSelected($event.value.name)\">\n <button class=\"layout-padding-right-xs\"\n kbq-button\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n kbq-select-matcher\n [class.kbq-active]=\"yearSelect.panelOpen\"\n [tabindex]=\"-1\">\n {{ selectedYear.value }}\n\n <i class=\"layout-padding-left-3xs\" kbq-icon=\"mc-angle-down-S_16\"></i>\n </button>\n\n <kbq-option *ngFor=\"let year of years\"\n [kbqTooltipDisabled]=\"true\"\n [value]=\"year\">\n {{ year.value }}\n </kbq-option>\n </kbq-select>\n</div>\n\n<div class=\"kbq-calendar-header__button-group\">\n <button kbq-button\n class=\"kbq-calendar-header__previous-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n [tabindex]=\"-1\"\n [disabled]=\"previousDisabled\"\n (click)=\"selectPreviousMonth()\">\n\n <i kbq-icon=\"mc-angle-left-L_16\"></i>\n </button>\n\n <button kbq-button\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n [tabindex]=\"-1\"\n (click)=\"selectCurrentDate()\">\n\n <i kbq-icon=\"mc-circle-8_16\"></i>\n </button>\n\n <button kbq-button\n class=\"kbq-calendar-header__next-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n [tabindex]=\"-1\"\n [disabled]=\"nextDisabled\"\n (click)=\"selectNextMonth()\">\n\n <i kbq-icon=\"mc-angle-right-L_16\"></i>\n </button>\n</div>\n", styles: [".kbq-calendar-header{display:flex;flex-direction:row;justify-content:space-between;padding-right:var(--kbq-datepicker-size-header-padding-horizontal, 4px);padding-left:var(--kbq-datepicker-size-header-padding-horizontal, 4px);margin-bottom:var(--kbq-datepicker-size-header-margin-bottom, 2px)}.kbq-calendar-header__select{width:auto!important}.kbq-calendar-header__button-group,.kbq-calendar-header__select-group{display:flex;flex-direction:row}.kbq-calendar-select-panel{margin-top:2px;min-width:98%!important}.kbq-calendar-select-panel .kbq-select__content{max-height:384px;overflow-x:hidden;scrollbar-gutter:auto}.kbq-calendar-select-panel .kbq-select__content .kbq-option{min-width:65px}\n"] }]
223
226
  }], ctorParameters: function () { return [{ type: i1$1.DateAdapter }]; }, propDecorators: { activeDate: [{
224
227
  type: Input
225
228
  }], maxDate: [{
@@ -305,9 +308,8 @@ class KbqMonthView {
305
308
  this._selected = value;
306
309
  this.selectedDate = this.getDateInCurrentMonth(this._selected);
307
310
  }
308
- constructor(changeDetectorRef, dateFormats, adapter) {
311
+ constructor(changeDetectorRef, adapter) {
309
312
  this.changeDetectorRef = changeDetectorRef;
310
- this.dateFormats = dateFormats;
311
313
  this.adapter = adapter;
312
314
  /** Emits when a new date is selected. */
313
315
  this.selectedChange = new EventEmitter();
@@ -318,9 +320,6 @@ class KbqMonthView {
318
320
  if (!this.adapter) {
319
321
  throw createMissingDateImplError('DateAdapter');
320
322
  }
321
- if (!this.dateFormats) {
322
- throw createMissingDateImplError('KBQ_DATE_FORMATS');
323
- }
324
323
  const firstDayOfWeek = this.adapter.getFirstDayOfWeek();
325
324
  const narrowWeekdays = this.adapter.getDayOfWeekNames('short');
326
325
  const longWeekdays = this.adapter.getDayOfWeekNames('long');
@@ -391,18 +390,13 @@ class KbqMonthView {
391
390
  return !!(d1 && d2 && this.adapter.getMonth(d1) === this.adapter.getMonth(d2) &&
392
391
  this.adapter.getYear(d1) === this.adapter.getYear(d2));
393
392
  }
394
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqMonthView, deps: [{ token: i0.ChangeDetectorRef }, { token: KBQ_DATE_FORMATS, optional: true }, { token: i1$1.DateAdapter, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
395
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqMonthView, selector: "kbq-month-view", inputs: { activeDate: "activeDate", selected: "selected", minDate: "minDate", maxDate: "maxDate", dateFilter: "dateFilter", dateClass: "dateClass" }, outputs: { selectedChange: "selectedChange", userSelection: "userSelection", activeDateChange: "activeDateChange" }, viewQueries: [{ propertyName: "mcCalendarBody", first: true, predicate: KbqCalendarBody, descendants: true }], exportAs: ["mcMonthView"], ngImport: i0, template: "<table class=\"kbq-calendar__table\">\n <thead class=\"kbq-calendar__table-header\">\n <tr>\n <th *ngFor=\"let day of weekdays\" [attr.aria-label]=\"day.long\">{{day.narrow}}</th>\n </tr>\n <tr>\n <th class=\"kbq-calendar__table-header-divider\" colspan=\"7\"></th>\n </tr>\n </thead>\n <tbody kbq-calendar-body\n [rows]=\"weeks\"\n [todayValue]=\"todayDate!\"\n [selectedValue]=\"selectedDate!\"\n [labelMinRequiredCells]=\"3\"\n [activeCell]=\"adapter.getDate(activeDate) - 1\"\n (selectedValueChange)=\"dateSelected($event)\">\n </tbody>\n</table>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: KbqCalendarBody, selector: "[kbq-calendar-body]", inputs: ["rows", "todayValue", "selectedValue", "labelMinRequiredCells", "numCols", "activeCell", "cellAspectRatio"], outputs: ["selectedValueChange"], exportAs: ["mcCalendarBody"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
393
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqMonthView, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.DateAdapter, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
394
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqMonthView, selector: "kbq-month-view", inputs: { activeDate: "activeDate", selected: "selected", minDate: "minDate", maxDate: "maxDate", dateFilter: "dateFilter", dateClass: "dateClass" }, outputs: { selectedChange: "selectedChange", userSelection: "userSelection", activeDateChange: "activeDateChange" }, viewQueries: [{ propertyName: "kbqCalendarBody", first: true, predicate: KbqCalendarBody, descendants: true }], exportAs: ["kbqMonthView"], ngImport: i0, template: "<table class=\"kbq-calendar__table\">\n <thead class=\"kbq-calendar__table-header\">\n <tr>\n <th *ngFor=\"let day of weekdays\" [attr.aria-label]=\"day.long\">{{day.narrow}}</th>\n </tr>\n <tr>\n <th class=\"kbq-calendar__table-header-divider\" colspan=\"7\"></th>\n </tr>\n </thead>\n <tbody kbq-calendar-body\n [rows]=\"weeks\"\n [todayValue]=\"todayDate!\"\n [selectedValue]=\"selectedDate!\"\n [labelMinRequiredCells]=\"3\"\n [activeCell]=\"adapter.getDate(activeDate) - 1\"\n (selectedValueChange)=\"dateSelected($event)\">\n </tbody>\n</table>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: KbqCalendarBody, selector: "[kbq-calendar-body]", inputs: ["rows", "todayValue", "selectedValue", "labelMinRequiredCells", "numCols", "activeCell", "cellAspectRatio"], outputs: ["selectedValueChange"], exportAs: ["kbqCalendarBody"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
396
395
  }
397
396
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqMonthView, decorators: [{
398
397
  type: Component,
399
- args: [{ selector: 'kbq-month-view', exportAs: 'mcMonthView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<table class=\"kbq-calendar__table\">\n <thead class=\"kbq-calendar__table-header\">\n <tr>\n <th *ngFor=\"let day of weekdays\" [attr.aria-label]=\"day.long\">{{day.narrow}}</th>\n </tr>\n <tr>\n <th class=\"kbq-calendar__table-header-divider\" colspan=\"7\"></th>\n </tr>\n </thead>\n <tbody kbq-calendar-body\n [rows]=\"weeks\"\n [todayValue]=\"todayDate!\"\n [selectedValue]=\"selectedDate!\"\n [labelMinRequiredCells]=\"3\"\n [activeCell]=\"adapter.getDate(activeDate) - 1\"\n (selectedValueChange)=\"dateSelected($event)\">\n </tbody>\n</table>\n" }]
400
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
401
- type: Optional
402
- }, {
403
- type: Inject,
404
- args: [KBQ_DATE_FORMATS]
405
- }] }, { type: i1$1.DateAdapter, decorators: [{
398
+ args: [{ selector: 'kbq-month-view', exportAs: 'kbqMonthView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<table class=\"kbq-calendar__table\">\n <thead class=\"kbq-calendar__table-header\">\n <tr>\n <th *ngFor=\"let day of weekdays\" [attr.aria-label]=\"day.long\">{{day.narrow}}</th>\n </tr>\n <tr>\n <th class=\"kbq-calendar__table-header-divider\" colspan=\"7\"></th>\n </tr>\n </thead>\n <tbody kbq-calendar-body\n [rows]=\"weeks\"\n [todayValue]=\"todayDate!\"\n [selectedValue]=\"selectedDate!\"\n [labelMinRequiredCells]=\"3\"\n [activeCell]=\"adapter.getDate(activeDate) - 1\"\n (selectedValueChange)=\"dateSelected($event)\">\n </tbody>\n</table>\n" }]
399
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1$1.DateAdapter, decorators: [{
406
400
  type: Optional
407
401
  }] }]; }, propDecorators: { activeDate: [{
408
402
  type: Input
@@ -422,7 +416,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
422
416
  type: Output
423
417
  }], activeDateChange: [{
424
418
  type: Output
425
- }], mcCalendarBody: [{
419
+ }], kbqCalendarBody: [{
426
420
  type: ViewChild,
427
421
  args: [KbqCalendarBody, { static: false }]
428
422
  }] } });
@@ -475,9 +469,8 @@ class KbqCalendar {
475
469
  this._activeDate = this.adapter.clampDate(value || this.getActiveDateDefault(), this.minDate, this.maxDate);
476
470
  this.stateChanges.next();
477
471
  }
478
- constructor(intl, adapter, dateFormats, changeDetectorRef) {
472
+ constructor(intl, adapter, changeDetectorRef) {
479
473
  this.adapter = adapter;
480
- this.dateFormats = dateFormats;
481
474
  this.changeDetectorRef = changeDetectorRef;
482
475
  /** Emits when the currently selected date changes. */
483
476
  this.selectedChange = new EventEmitter();
@@ -500,9 +493,6 @@ class KbqCalendar {
500
493
  if (!this.adapter) {
501
494
  throw createMissingDateImplError('DateAdapter');
502
495
  }
503
- if (!this.dateFormats) {
504
- throw createMissingDateImplError('KBQ_DATE_FORMATS');
505
- }
506
496
  this.intlChanges = intl.changes.subscribe(() => {
507
497
  changeDetectorRef.markForCheck();
508
498
  this.stateChanges.next();
@@ -551,21 +541,16 @@ class KbqCalendar {
551
541
  getActiveDateDefault() {
552
542
  return this.startAt || this.adapter.today();
553
543
  }
554
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqCalendar, deps: [{ token: KbqDatepickerIntl }, { token: i1$1.DateAdapter, optional: true }, { token: KBQ_DATE_FORMATS, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
555
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqCalendar, selector: "kbq-calendar", inputs: { startAt: "startAt", selected: "selected", minDate: "minDate", maxDate: "maxDate", dateFilter: "dateFilter", dateClass: "dateClass" }, outputs: { selectedChange: "selectedChange", yearSelected: "yearSelected", monthSelected: "monthSelected", userSelection: "userSelection" }, host: { classAttribute: "kbq-calendar" }, viewQueries: [{ propertyName: "monthView", first: true, predicate: KbqMonthView, descendants: true }], exportAs: ["mcCalendar"], usesOnChanges: true, ngImport: i0, template: "<kbq-calendar-header\n [(activeDate)]=\"activeDate\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n (monthSelected)=\"monthSelected.emit(activeDate)\"\n (yearSelected)=\"yearSelected.emit(activeDate)\">\n</kbq-calendar-header>\n\n<div class=\"kbq-calendar__content\">\n <kbq-month-view\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n (selectedChange)=\"dateSelected($event!)\"\n (userSelection)=\"userSelected()\">\n </kbq-month-view>\n</div>\n", styles: [".kbq-calendar{display:block}.kbq-calendar__content{padding:0 var(--kbq-datepicker-calendar-size-padding-horizontal, 8px) var(--kbq-datepicker-calendar-size-padding-horizontal, 8px) var(--kbq-datepicker-calendar-size-padding-horizontal, 8px);outline:none}.kbq-calendar__table{border-spacing:0;border-collapse:collapse;width:100%}.kbq-calendar__table-header th{text-align:center;height:30px}.kbq-calendar__table-header th.kbq-calendar__table-header-divider{position:relative;height:calc(var(--kbq-datepicker-calendar-size-padding-blocks, 12px) - 2px)}.kbq-calendar__table-header th.kbq-calendar__table-header-divider:after{content:\"\";position:absolute;top:0;left:calc(-1 * var(--kbq-datepicker-calendar-size-padding-horizontal, 8px));right:calc(-1 * var(--kbq-datepicker-calendar-size-padding-horizontal, 8px));height:var(--kbq-datepicker-calendar-size-divider-width, 1px)}\n"], dependencies: [{ kind: "component", type: KbqMonthView, selector: "kbq-month-view", inputs: ["activeDate", "selected", "minDate", "maxDate", "dateFilter", "dateClass"], outputs: ["selectedChange", "userSelection", "activeDateChange"], exportAs: ["mcMonthView"] }, { kind: "component", type: KbqCalendarHeader, selector: "kbq-calendar-header", inputs: ["activeDate", "maxDate", "minDate"], outputs: ["activeDateChange", "monthSelected", "yearSelected"], exportAs: ["mcCalendarHeader"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
544
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqCalendar, deps: [{ token: KbqDatepickerIntl }, { token: i1$1.DateAdapter, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
545
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqCalendar, selector: "kbq-calendar", inputs: { startAt: "startAt", selected: "selected", minDate: "minDate", maxDate: "maxDate", dateFilter: "dateFilter", dateClass: "dateClass" }, outputs: { selectedChange: "selectedChange", yearSelected: "yearSelected", monthSelected: "monthSelected", userSelection: "userSelection" }, host: { classAttribute: "kbq-calendar" }, viewQueries: [{ propertyName: "monthView", first: true, predicate: KbqMonthView, descendants: true }], exportAs: ["kbqCalendar"], usesOnChanges: true, ngImport: i0, template: "<kbq-calendar-header\n [(activeDate)]=\"activeDate\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n (monthSelected)=\"monthSelected.emit(activeDate)\"\n (yearSelected)=\"yearSelected.emit(activeDate)\">\n</kbq-calendar-header>\n\n<div class=\"kbq-calendar__content\">\n <kbq-month-view\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n (selectedChange)=\"dateSelected($event!)\"\n (userSelection)=\"userSelected()\">\n </kbq-month-view>\n</div>\n", styles: [".kbq-calendar{display:block}.kbq-calendar__content{padding-right:var(--kbq-datepicker-size-grid-padding-horizontal, 12px);padding-left:var(--kbq-datepicker-size-grid-padding-horizontal, 12px);outline:none}.kbq-calendar__table{border-spacing:0;border-collapse:collapse;width:100%}.kbq-calendar__table-header th{text-align:center;height:30px}.kbq-calendar__table-header th.kbq-calendar__table-header-divider{position:relative;box-sizing:border-box;height:var(--kbq-datepicker-size-grid-content-gap-vertical, 2px)}.kbq-calendar__table-header th.kbq-calendar__table-header-divider:after{content:\"\";position:absolute;top:0;left:calc(-1 * var(--kbq-datepicker-size-grid-padding-horizontal, 12px));right:calc(-1 * var(--kbq-datepicker-size-grid-padding-horizontal, 12px));height:var(--kbq-datepicker-size-grid-divider-height, 1px)}\n"], dependencies: [{ kind: "component", type: KbqMonthView, selector: "kbq-month-view", inputs: ["activeDate", "selected", "minDate", "maxDate", "dateFilter", "dateClass"], outputs: ["selectedChange", "userSelection", "activeDateChange"], exportAs: ["kbqMonthView"] }, { kind: "component", type: KbqCalendarHeader, selector: "kbq-calendar-header", inputs: ["activeDate", "maxDate", "minDate"], outputs: ["activeDateChange", "monthSelected", "yearSelected"], exportAs: ["kbqCalendarHeader"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
556
546
  }
557
547
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqCalendar, decorators: [{
558
548
  type: Component,
559
- args: [{ selector: 'kbq-calendar', exportAs: 'mcCalendar', host: {
549
+ args: [{ selector: 'kbq-calendar', exportAs: 'kbqCalendar', host: {
560
550
  class: 'kbq-calendar'
561
- }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<kbq-calendar-header\n [(activeDate)]=\"activeDate\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n (monthSelected)=\"monthSelected.emit(activeDate)\"\n (yearSelected)=\"yearSelected.emit(activeDate)\">\n</kbq-calendar-header>\n\n<div class=\"kbq-calendar__content\">\n <kbq-month-view\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n (selectedChange)=\"dateSelected($event!)\"\n (userSelection)=\"userSelected()\">\n </kbq-month-view>\n</div>\n", styles: [".kbq-calendar{display:block}.kbq-calendar__content{padding:0 var(--kbq-datepicker-calendar-size-padding-horizontal, 8px) var(--kbq-datepicker-calendar-size-padding-horizontal, 8px) var(--kbq-datepicker-calendar-size-padding-horizontal, 8px);outline:none}.kbq-calendar__table{border-spacing:0;border-collapse:collapse;width:100%}.kbq-calendar__table-header th{text-align:center;height:30px}.kbq-calendar__table-header th.kbq-calendar__table-header-divider{position:relative;height:calc(var(--kbq-datepicker-calendar-size-padding-blocks, 12px) - 2px)}.kbq-calendar__table-header th.kbq-calendar__table-header-divider:after{content:\"\";position:absolute;top:0;left:calc(-1 * var(--kbq-datepicker-calendar-size-padding-horizontal, 8px));right:calc(-1 * var(--kbq-datepicker-calendar-size-padding-horizontal, 8px));height:var(--kbq-datepicker-calendar-size-divider-width, 1px)}\n"] }]
551
+ }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<kbq-calendar-header\n [(activeDate)]=\"activeDate\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n (monthSelected)=\"monthSelected.emit(activeDate)\"\n (yearSelected)=\"yearSelected.emit(activeDate)\">\n</kbq-calendar-header>\n\n<div class=\"kbq-calendar__content\">\n <kbq-month-view\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n (selectedChange)=\"dateSelected($event!)\"\n (userSelection)=\"userSelected()\">\n </kbq-month-view>\n</div>\n", styles: [".kbq-calendar{display:block}.kbq-calendar__content{padding-right:var(--kbq-datepicker-size-grid-padding-horizontal, 12px);padding-left:var(--kbq-datepicker-size-grid-padding-horizontal, 12px);outline:none}.kbq-calendar__table{border-spacing:0;border-collapse:collapse;width:100%}.kbq-calendar__table-header th{text-align:center;height:30px}.kbq-calendar__table-header th.kbq-calendar__table-header-divider{position:relative;box-sizing:border-box;height:var(--kbq-datepicker-size-grid-content-gap-vertical, 2px)}.kbq-calendar__table-header th.kbq-calendar__table-header-divider:after{content:\"\";position:absolute;top:0;left:calc(-1 * var(--kbq-datepicker-size-grid-padding-horizontal, 12px));right:calc(-1 * var(--kbq-datepicker-size-grid-padding-horizontal, 12px));height:var(--kbq-datepicker-size-grid-divider-height, 1px)}\n"] }]
562
552
  }], ctorParameters: function () { return [{ type: KbqDatepickerIntl }, { type: i1$1.DateAdapter, decorators: [{
563
553
  type: Optional
564
- }] }, { type: undefined, decorators: [{
565
- type: Optional
566
- }, {
567
- type: Inject,
568
- args: [KBQ_DATE_FORMATS]
569
554
  }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { startAt: [{
570
555
  type: Input
571
556
  }], selected: [{
@@ -595,7 +580,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
595
580
  * Animations used by the Koobiq datepicker.
596
581
  * @docs-private
597
582
  */
598
- const mcDatepickerAnimations = {
583
+ const kbqDatepickerAnimations = {
599
584
  /** Transforms the height of the datepicker's calendar. */
600
585
  transformPanel: trigger('transformPanel', [
601
586
  state('void', style({
@@ -667,27 +652,27 @@ class KbqDatepickerContent {
667
652
  this.changeDetectorRef.markForCheck();
668
653
  }
669
654
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqDatepickerContent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
670
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqDatepickerContent, selector: "kbq-datepicker__content", host: { listeners: { "@transformPanel.done": "animationDone.next()" }, properties: { "@transformPanel": "animationState" }, classAttribute: "kbq-datepicker__content" }, viewQueries: [{ propertyName: "calendar", first: true, predicate: KbqCalendar, descendants: true }], exportAs: ["mcDatepickerContent"], ngImport: i0, template: "<kbq-calendar [id]=\"datepicker.id\"\n [@fadeInCalendar]=\"'enter'\"\n [ngClass]=\"datepicker.panelClass\"\n [dateClass]=\"datepicker.dateClass\"\n\n [startAt]=\"datepicker.startAt\"\n [minDate]=\"datepicker.minDate\"\n [maxDate]=\"datepicker.maxDate\"\n [dateFilter]=\"datepicker.dateFilter\"\n\n [selected]=\"datepicker.selected\"\n\n (selectedChange)=\"datepicker.select($event)\"\n (yearSelected)=\"datepicker.selectYear($event)\"\n (monthSelected)=\"datepicker.selectMonth($event)\"\n (userSelection)=\"datepicker.close()\">\n</kbq-calendar>\n", styles: [".kbq-datepicker__content{display:block;border-width:1px;border-style:solid;border-radius:var(--kbq-datepicker-calendar-size-border-radius, 0)}.kbq-datepicker__content .kbq-calendar{width:296px;height:348px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: KbqCalendar, selector: "kbq-calendar", inputs: ["startAt", "selected", "minDate", "maxDate", "dateFilter", "dateClass"], outputs: ["selectedChange", "yearSelected", "monthSelected", "userSelection"], exportAs: ["mcCalendar"] }], animations: [
671
- mcDatepickerAnimations.transformPanel,
672
- mcDatepickerAnimations.fadeInCalendar
655
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqDatepickerContent, selector: "kbq-datepicker__content", host: { listeners: { "@transformPanel.done": "animationDone.next()" }, properties: { "@transformPanel": "animationState" }, classAttribute: "kbq-datepicker__content" }, viewQueries: [{ propertyName: "calendar", first: true, predicate: KbqCalendar, descendants: true }], exportAs: ["kbqDatepickerContent"], ngImport: i0, template: "<kbq-calendar [id]=\"datepicker.id\"\n [@fadeInCalendar]=\"'enter'\"\n [ngClass]=\"datepicker.panelClass\"\n [dateClass]=\"datepicker.dateClass\"\n\n [startAt]=\"datepicker.startAt\"\n [minDate]=\"datepicker.minDate\"\n [maxDate]=\"datepicker.maxDate\"\n [dateFilter]=\"datepicker.dateFilter\"\n\n [selected]=\"datepicker.selected\"\n\n (selectedChange)=\"datepicker.select($event)\"\n (yearSelected)=\"datepicker.selectYear($event)\"\n (monthSelected)=\"datepicker.selectMonth($event)\"\n (userSelection)=\"datepicker.close()\">\n</kbq-calendar>\n", styles: [".kbq-datepicker__content{display:block;border-radius:var(--kbq-datepicker-size-container-border-radius, 8px)}.kbq-datepicker__content .kbq-calendar{width:304px;height:270px;padding-top:var(--kbq-datepicker-size-container-padding-vertical, 12px);padding-bottom:var(--kbq-datepicker-size-container-padding-vertical, 12px)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: KbqCalendar, selector: "kbq-calendar", inputs: ["startAt", "selected", "minDate", "maxDate", "dateFilter", "dateClass"], outputs: ["selectedChange", "yearSelected", "monthSelected", "userSelection"], exportAs: ["kbqCalendar"] }], animations: [
656
+ kbqDatepickerAnimations.transformPanel,
657
+ kbqDatepickerAnimations.fadeInCalendar
673
658
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
674
659
  }
675
660
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqDatepickerContent, decorators: [{
676
661
  type: Component,
677
- args: [{ selector: 'kbq-datepicker__content', exportAs: 'mcDatepickerContent', host: {
662
+ args: [{ selector: 'kbq-datepicker__content', exportAs: 'kbqDatepickerContent', host: {
678
663
  class: 'kbq-datepicker__content',
679
664
  '[@transformPanel]': 'animationState',
680
665
  '(@transformPanel.done)': 'animationDone.next()'
681
666
  }, animations: [
682
- mcDatepickerAnimations.transformPanel,
683
- mcDatepickerAnimations.fadeInCalendar
684
- ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<kbq-calendar [id]=\"datepicker.id\"\n [@fadeInCalendar]=\"'enter'\"\n [ngClass]=\"datepicker.panelClass\"\n [dateClass]=\"datepicker.dateClass\"\n\n [startAt]=\"datepicker.startAt\"\n [minDate]=\"datepicker.minDate\"\n [maxDate]=\"datepicker.maxDate\"\n [dateFilter]=\"datepicker.dateFilter\"\n\n [selected]=\"datepicker.selected\"\n\n (selectedChange)=\"datepicker.select($event)\"\n (yearSelected)=\"datepicker.selectYear($event)\"\n (monthSelected)=\"datepicker.selectMonth($event)\"\n (userSelection)=\"datepicker.close()\">\n</kbq-calendar>\n", styles: [".kbq-datepicker__content{display:block;border-width:1px;border-style:solid;border-radius:var(--kbq-datepicker-calendar-size-border-radius, 0)}.kbq-datepicker__content .kbq-calendar{width:296px;height:348px}\n"] }]
667
+ kbqDatepickerAnimations.transformPanel,
668
+ kbqDatepickerAnimations.fadeInCalendar
669
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<kbq-calendar [id]=\"datepicker.id\"\n [@fadeInCalendar]=\"'enter'\"\n [ngClass]=\"datepicker.panelClass\"\n [dateClass]=\"datepicker.dateClass\"\n\n [startAt]=\"datepicker.startAt\"\n [minDate]=\"datepicker.minDate\"\n [maxDate]=\"datepicker.maxDate\"\n [dateFilter]=\"datepicker.dateFilter\"\n\n [selected]=\"datepicker.selected\"\n\n (selectedChange)=\"datepicker.select($event)\"\n (yearSelected)=\"datepicker.selectYear($event)\"\n (monthSelected)=\"datepicker.selectMonth($event)\"\n (userSelection)=\"datepicker.close()\">\n</kbq-calendar>\n", styles: [".kbq-datepicker__content{display:block;border-radius:var(--kbq-datepicker-size-container-border-radius, 8px)}.kbq-datepicker__content .kbq-calendar{width:304px;height:270px;padding-top:var(--kbq-datepicker-size-container-padding-vertical, 12px);padding-bottom:var(--kbq-datepicker-size-container-padding-vertical, 12px)}\n"] }]
685
670
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { calendar: [{
686
671
  type: ViewChild,
687
672
  args: [KbqCalendar]
688
673
  }] } });
689
674
  // TODO: We use a component instead of a directive here so the user can use implicit
690
- // template reference variables (e.g. #d vs #d="mcDatepicker"). We can change this to a directive
675
+ // template reference variables (e.g. #d vs #d="kbqDatepicker"). We can change this to a directive
691
676
  // if angular adds support for `exportAs: '$implicit'` on directives.
692
677
  /** Component responsible for managing the datepicker popup/dialog. */
693
678
  class KbqDatepicker {
@@ -942,14 +927,14 @@ class KbqDatepicker {
942
927
  ]);
943
928
  }
944
929
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqDatepicker, deps: [{ token: i3$1.Overlay }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: KBQ_DATEPICKER_SCROLL_STRATEGY }, { token: i1$1.DateAdapter, optional: true }, { token: i5$1.Directionality, optional: true }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
945
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqDatepicker, selector: "kbq-datepicker", inputs: { hasBackdrop: "hasBackdrop", startAt: "startAt", disabled: "disabled", opened: "opened", minDate: "minDate", maxDate: "maxDate", panelClass: "panelClass", dateClass: "dateClass", backdropClass: "backdropClass" }, outputs: { yearSelected: "yearSelected", monthSelected: "monthSelected", openedStream: "opened", closedStream: "closed" }, providers: [{ provide: KbqFormFieldControl, useExisting: KbqDatepicker }], exportAs: ["mcDatepicker"], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
930
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqDatepicker, selector: "kbq-datepicker", inputs: { hasBackdrop: "hasBackdrop", startAt: "startAt", disabled: "disabled", opened: "opened", minDate: "minDate", maxDate: "maxDate", panelClass: "panelClass", dateClass: "dateClass", backdropClass: "backdropClass" }, outputs: { yearSelected: "yearSelected", monthSelected: "monthSelected", openedStream: "opened", closedStream: "closed" }, providers: [{ provide: KbqFormFieldControl, useExisting: KbqDatepicker }], exportAs: ["kbqDatepicker"], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
946
931
  }
947
932
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqDatepicker, decorators: [{
948
933
  type: Component,
949
934
  args: [{
950
935
  selector: 'kbq-datepicker',
951
936
  template: '',
952
- exportAs: 'mcDatepicker',
937
+ exportAs: 'kbqDatepicker',
953
938
  changeDetection: ChangeDetectionStrategy.OnPush,
954
939
  encapsulation: ViewEncapsulation.None,
955
940
  providers: [{ provide: KbqFormFieldControl, useExisting: KbqDatepicker }]
@@ -1123,7 +1108,7 @@ class KbqDatepickerInput {
1123
1108
  this._required = coerceBooleanProperty(value);
1124
1109
  }
1125
1110
  /** The datepicker that this input is associated with. */
1126
- set mcDatepicker(value) {
1111
+ set kbqDatepicker(value) {
1127
1112
  if (!value) {
1128
1113
  return;
1129
1114
  }
@@ -1140,7 +1125,7 @@ class KbqDatepickerInput {
1140
1125
  });
1141
1126
  }
1142
1127
  /** Function that can be used to filter out dates within the datepicker. */
1143
- set mcDatepickerFilter(value) {
1128
+ set kbqDatepickerFilter(value) {
1144
1129
  this.dateFilter = value;
1145
1130
  this.validatorOnChange();
1146
1131
  }
@@ -1200,7 +1185,7 @@ class KbqDatepickerInput {
1200
1185
  set id(value) {
1201
1186
  this._id = value || this.uid;
1202
1187
  }
1203
- set mcValidationTooltip(tooltip) {
1188
+ set kbqValidationTooltip(tooltip) {
1204
1189
  if (!tooltip) {
1205
1190
  return;
1206
1191
  }
@@ -1228,7 +1213,7 @@ class KbqDatepickerInput {
1228
1213
  return this.elementRef.nativeElement.readOnly;
1229
1214
  }
1230
1215
  get dateInputFormat() {
1231
- return this.localeService?.getParams('datepicker').dateInput || this.dateFormats.dateInput;
1216
+ return this.dateFormats?.dateInput || this.adapter.config.dateInput;
1232
1217
  }
1233
1218
  get readyForParse() {
1234
1219
  return !!(this.firstDigit && this.secondDigit && this.thirdDigit);
@@ -1333,6 +1318,10 @@ class KbqDatepickerInput {
1333
1318
  this.cvaOnChange(null);
1334
1319
  return setTimeout(() => this.control.updateValueAndValidity());
1335
1320
  }
1321
+ /* Check if the number of days entered does not match the entered month */
1322
+ if (!this.getValidDateOrNull(newTimeObj)) {
1323
+ return null;
1324
+ }
1336
1325
  this.lastValueValid = !!newTimeObj;
1337
1326
  this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.dateInputFormat), true);
1338
1327
  this.updateValue(newTimeObj);
@@ -1352,27 +1341,27 @@ class KbqDatepickerInput {
1352
1341
  this.parseValidator = () => {
1353
1342
  return this.focused ||
1354
1343
  this.empty ||
1355
- this.lastValueValid ? null : { mcDatepickerParse: { text: this.elementRef.nativeElement.value } };
1344
+ this.lastValueValid ? null : { kbqDatepickerParse: { text: this.elementRef.nativeElement.value } };
1356
1345
  };
1357
1346
  /** The form control validator for the min date. */
1358
1347
  this.minValidator = (control) => {
1359
1348
  const controlValue = this.adapter.deserialize(control.value);
1360
1349
  return !this.min || !controlValue || this.adapter.compareDateTime(this.min, controlValue) <= 0 ?
1361
1350
  null :
1362
- { mcDatepickerMin: { min: this.min, actual: controlValue } };
1351
+ { kbqDatepickerMin: { min: this.min, actual: controlValue } };
1363
1352
  };
1364
1353
  /** The form control validator for the max date. */
1365
1354
  this.maxValidator = (control) => {
1366
1355
  const controlValue = this.adapter.deserialize(control.value);
1367
1356
  return !this.max || !controlValue || this.adapter.compareDateTime(this.max, controlValue) >= 0 ?
1368
1357
  null :
1369
- { mcDatepickerMax: { max: this.max, actual: controlValue } };
1358
+ { kbqDatepickerMax: { max: this.max, actual: controlValue } };
1370
1359
  };
1371
1360
  /** The form control validator for the date filter. */
1372
1361
  this.filterValidator = (control) => {
1373
1362
  const controlValue = this.adapter.deserialize(control.value);
1374
1363
  return !this.dateFilter || !controlValue || this.dateFilter(controlValue) ?
1375
- null : { mcDatepickerFilter: true };
1364
+ null : { kbqDatepickerFilter: true };
1376
1365
  };
1377
1366
  this.validator = Validators.compose([
1378
1367
  this.parseValidator,
@@ -1383,9 +1372,6 @@ class KbqDatepickerInput {
1383
1372
  if (!this.adapter) {
1384
1373
  throw createMissingDateImplError('DateAdapter');
1385
1374
  }
1386
- if (!this.dateFormats) {
1387
- throw createMissingDateImplError('KBQ_DATE_FORMATS');
1388
- }
1389
1375
  this.setFormat(this.dateInputFormat);
1390
1376
  this.localeSubscription = adapter.localeChanges
1391
1377
  .subscribe(this.updateLocaleParams);
@@ -1632,6 +1618,14 @@ class KbqDatepickerInput {
1632
1618
  thirdViewDigit.length < this.thirdDigit.length) {
1633
1619
  return null;
1634
1620
  }
1621
+ const digitViewValue = {};
1622
+ const dateDigits = [this.firstDigit, this.secondDigit, this.thirdDigit];
1623
+ for (const [index, dateDigit] of dateDigits.entries()) {
1624
+ digitViewValue[dateDigit.fullName] = parseInt(viewDigits[index]);
1625
+ }
1626
+ if (this.value && digitViewValue.month && digitViewValue.month <= this.firstDigit.maxMonth) {
1627
+ dateDigits.forEach((digit) => digit.maxDays = this.getLastDayFor(digitViewValue.year, digitViewValue.month - 1));
1628
+ }
1635
1629
  date[this.firstDigit.fullName] = this.firstDigit.parse(firsViewDigit);
1636
1630
  date[this.secondDigit.fullName] = this.secondDigit.parse(secondViewDigit);
1637
1631
  date[this.thirdDigit.fullName] = this.thirdDigit.parse(thirdViewDigit);
@@ -1639,7 +1633,7 @@ class KbqDatepickerInput {
1639
1633
  else {
1640
1634
  return null;
1641
1635
  }
1642
- return this.createDateTime(date);
1636
+ return this.getValidDateOrNull(this.createDateTime(date));
1643
1637
  }
1644
1638
  getDefaultValue() {
1645
1639
  const defaultValue = this.value || this.adapter.today();
@@ -1867,17 +1861,17 @@ class KbqDatepickerInput {
1867
1861
  }
1868
1862
  }
1869
1863
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqDatepickerInput, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1$1.DateAdapter, optional: true }, { token: KBQ_DATE_FORMATS, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1870
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqDatepickerInput, selector: "input[mcDatepicker]", inputs: { placeholder: "placeholder", required: "required", mcDatepicker: "mcDatepicker", mcDatepickerFilter: "mcDatepickerFilter", value: "value", min: "min", max: "max", disabled: "disabled", id: "id", mcValidationTooltip: "mcValidationTooltip" }, outputs: { incorrectInput: "incorrectInput", dateChange: "dateChange", dateInput: "dateInput" }, host: { listeners: { "paste": "onPaste($event)", "change": "onChange()", "focus": "focusChanged(true)", "blur": "onBlur()", "keydown": "onKeyDown($event)" }, properties: { "attr.placeholder": "placeholder", "attr.required": "required", "attr.disabled": "disabled || null", "attr.min": "min ? toISO8601(min) : null", "attr.max": "max ? toISO8601(max) : null", "attr.autocomplete": "\"off\"" }, classAttribute: "kbq-input kbq-datepicker" }, providers: [
1864
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqDatepickerInput, selector: "input[kbqDatepicker]", inputs: { placeholder: "placeholder", required: "required", kbqDatepicker: "kbqDatepicker", kbqDatepickerFilter: "kbqDatepickerFilter", value: "value", min: "min", max: "max", disabled: "disabled", id: "id", kbqValidationTooltip: "kbqValidationTooltip" }, outputs: { incorrectInput: "incorrectInput", dateChange: "dateChange", dateInput: "dateInput" }, host: { listeners: { "paste": "onPaste($event)", "change": "onChange()", "focus": "focusChanged(true)", "blur": "onBlur()", "keydown": "onKeyDown($event)" }, properties: { "attr.placeholder": "placeholder", "attr.required": "required", "attr.disabled": "disabled || null", "attr.min": "min ? toISO8601(min) : null", "attr.max": "max ? toISO8601(max) : null", "attr.autocomplete": "\"off\"" }, classAttribute: "kbq-input kbq-datepicker" }, providers: [
1871
1865
  KBQ_DATEPICKER_VALUE_ACCESSOR,
1872
1866
  KBQ_DATEPICKER_VALIDATORS,
1873
1867
  { provide: KbqFormFieldControl, useExisting: KbqDatepickerInput }
1874
- ], exportAs: ["mcDatepickerInput"], ngImport: i0 }); }
1868
+ ], exportAs: ["kbqDatepickerInput"], ngImport: i0 }); }
1875
1869
  }
1876
1870
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqDatepickerInput, decorators: [{
1877
1871
  type: Directive,
1878
1872
  args: [{
1879
- selector: 'input[mcDatepicker]',
1880
- exportAs: 'mcDatepickerInput',
1873
+ selector: 'input[kbqDatepicker]',
1874
+ exportAs: 'kbqDatepickerInput',
1881
1875
  providers: [
1882
1876
  KBQ_DATEPICKER_VALUE_ACCESSOR,
1883
1877
  KBQ_DATEPICKER_VALIDATORS,
@@ -1914,9 +1908,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
1914
1908
  type: Input
1915
1909
  }], required: [{
1916
1910
  type: Input
1917
- }], mcDatepicker: [{
1911
+ }], kbqDatepicker: [{
1918
1912
  type: Input
1919
- }], mcDatepickerFilter: [{
1913
+ }], kbqDatepickerFilter: [{
1920
1914
  type: Input
1921
1915
  }], value: [{
1922
1916
  type: Input
@@ -1928,7 +1922,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
1928
1922
  type: Input
1929
1923
  }], id: [{
1930
1924
  type: Input
1931
- }], mcValidationTooltip: [{
1925
+ }], kbqValidationTooltip: [{
1932
1926
  type: Input
1933
1927
  }], incorrectInput: [{
1934
1928
  type: Output
@@ -1938,15 +1932,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
1938
1932
  type: Output
1939
1933
  }] } });
1940
1934
 
1941
- /** Can be used to override the icon of a `mcDatepickerToggle`. */
1935
+ /** Can be used to override the icon of a `kbqDatepickerToggle`. */
1942
1936
  class KbqDatepickerToggleIcon {
1943
1937
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqDatepickerToggleIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1944
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqDatepickerToggleIcon, selector: "[mcDatepickerToggleIcon]", ngImport: i0 }); }
1938
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqDatepickerToggleIcon, selector: "[kbqDatepickerToggleIcon]", ngImport: i0 }); }
1945
1939
  }
1946
1940
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqDatepickerToggleIcon, decorators: [{
1947
1941
  type: Directive,
1948
1942
  args: [{
1949
- selector: '[mcDatepickerToggleIcon]'
1943
+ selector: '[kbqDatepickerToggleIcon]'
1950
1944
  }]
1951
1945
  }] });
1952
1946
  class KbqDatepickerToggle {
@@ -1990,14 +1984,14 @@ class KbqDatepickerToggle {
1990
1984
  this.stateChanges = merge(this.intl.changes, datepickerDisabled, inputDisabled, datepickerToggled).subscribe(() => this.changeDetectorRef.markForCheck());
1991
1985
  }
1992
1986
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqDatepickerToggle, deps: [{ token: KbqDatepickerIntl }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1993
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqDatepickerToggle, selector: "kbq-datepicker-toggle", inputs: { disabled: "disabled", datepicker: ["for", "datepicker"], tabIndex: "tabIndex" }, host: { properties: { "class.kbq-active": "datepicker && datepicker.opened" }, classAttribute: "kbq-datepicker-toggle" }, queries: [{ propertyName: "customIcon", first: true, predicate: KbqDatepickerToggleIcon, descendants: true }], viewQueries: [{ propertyName: "button", first: true, predicate: ["button"], descendants: true }], exportAs: ["mcDatepickerToggle"], usesOnChanges: true, ngImport: i0, template: "<!--todo need simplify this-->\n<button\n #button\n kbq-button\n type=\"button\"\n class=\"kbq-datepicker-toggle__button\"\n aria-haspopup=\"true\"\n [attr.aria-label]=\"intl.openCalendarLabel\"\n [tabIndex]=\"tabIndex\"\n [disabled]=\"disabled\"\n (click)=\"open($event)\">\n\n <i *ngIf=\"!customIcon\" kbq-icon=\"mc-calendar_16\" class=\"kbq-datepicker-toggle__default-icon\"></i>\n\n <ng-content select=\"[mcDatepickerToggleIcon]\"></ng-content>\n</button>\n", styles: [".kbq-datepicker-toggle:focus{outline:0}.kbq-datepicker-toggle__button.kbq-button-icon{width:var(--kbq-datepicker-toggle-size-width, 30px);height:var(--kbq-datepicker-toggle-size-height, 30px);margin-left:2px}.kbq-form-field-appearance-legacy .kbq-form-field-prefix .kbq-datepicker-toggle__default-icon,.kbq-form-field-appearance-legacy .kbq-form-field-suffix .kbq-datepicker-toggle__default-icon{width:1em}.kbq-form-field:not(.kbq-form-field-appearance-legacy) .kbq-form-field-prefix .kbq-datepicker-toggle__default-icon,.kbq-form-field:not(.kbq-form-field-appearance-legacy) .kbq-form-field-suffix .kbq-datepicker-toggle__default-icon{display:block;width:1.5em;height:1.5em}.kbq-form-field:not(.kbq-form-field-appearance-legacy) .kbq-form-field-prefix .kbq-button-icon .kbq-datepicker-toggle__default-icon,.kbq-form-field:not(.kbq-form-field-appearance-legacy) .kbq-form-field-suffix .kbq-button-icon .kbq-datepicker-toggle__default-icon{margin:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.KbqButton, selector: "[kbq-button]", inputs: ["color", "tabIndex", "kbqStyle", "disabled"] }, { kind: "directive", type: i3.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "component", type: i6.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1987
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqDatepickerToggle, selector: "kbq-datepicker-toggle", inputs: { disabled: "disabled", datepicker: ["for", "datepicker"], tabIndex: "tabIndex" }, host: { properties: { "class.kbq-active": "datepicker && datepicker.opened" }, classAttribute: "kbq-datepicker-toggle" }, queries: [{ propertyName: "customIcon", first: true, predicate: KbqDatepickerToggleIcon, descendants: true }], viewQueries: [{ propertyName: "button", first: true, predicate: ["button"], descendants: true }], exportAs: ["kbqDatepickerToggle"], usesOnChanges: true, ngImport: i0, template: "<!--todo need simplify this-->\n<button\n #button\n kbq-button\n type=\"button\"\n class=\"kbq-datepicker-toggle__button\"\n aria-haspopup=\"true\"\n [attr.aria-label]=\"intl.openCalendarLabel\"\n [tabIndex]=\"tabIndex\"\n [disabled]=\"disabled\"\n (click)=\"open($event)\">\n\n <i *ngIf=\"!customIcon\" kbq-icon=\"mc-calendar_16\" class=\"kbq-datepicker-toggle__default-icon\"></i>\n\n <ng-content select=\"[kbqDatepickerToggleIcon]\"></ng-content>\n</button>\n", styles: [".kbq-datepicker-toggle:focus{outline:0}.kbq-datepicker-toggle__button.kbq-button-icon{width:var(--kbq-datepicker-toggle-size-width, );height:var(--kbq-datepicker-toggle-size-height, );margin-left:2px}.kbq-form-field-appearance-legacy .kbq-form-field-prefix .kbq-datepicker-toggle__default-icon,.kbq-form-field-appearance-legacy .kbq-form-field-suffix .kbq-datepicker-toggle__default-icon{width:1em}.kbq-form-field:not(.kbq-form-field-appearance-legacy) .kbq-form-field-prefix .kbq-datepicker-toggle__default-icon,.kbq-form-field:not(.kbq-form-field-appearance-legacy) .kbq-form-field-suffix .kbq-datepicker-toggle__default-icon{display:block;width:1.5em;height:1.5em}.kbq-form-field:not(.kbq-form-field-appearance-legacy) .kbq-form-field-prefix .kbq-button-icon .kbq-datepicker-toggle__default-icon,.kbq-form-field:not(.kbq-form-field-appearance-legacy) .kbq-form-field-suffix .kbq-button-icon .kbq-datepicker-toggle__default-icon{margin:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.KbqButton, selector: "[kbq-button]", inputs: ["color", "tabIndex", "kbqStyle", "disabled"] }, { kind: "directive", type: i3.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "component", type: i6.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1994
1988
  }
1995
1989
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqDatepickerToggle, decorators: [{
1996
1990
  type: Component,
1997
1991
  args: [{ selector: 'kbq-datepicker-toggle', host: {
1998
1992
  class: 'kbq-datepicker-toggle',
1999
1993
  '[class.kbq-active]': 'datepicker && datepicker.opened'
2000
- }, exportAs: 'mcDatepickerToggle', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--todo need simplify this-->\n<button\n #button\n kbq-button\n type=\"button\"\n class=\"kbq-datepicker-toggle__button\"\n aria-haspopup=\"true\"\n [attr.aria-label]=\"intl.openCalendarLabel\"\n [tabIndex]=\"tabIndex\"\n [disabled]=\"disabled\"\n (click)=\"open($event)\">\n\n <i *ngIf=\"!customIcon\" kbq-icon=\"mc-calendar_16\" class=\"kbq-datepicker-toggle__default-icon\"></i>\n\n <ng-content select=\"[mcDatepickerToggleIcon]\"></ng-content>\n</button>\n", styles: [".kbq-datepicker-toggle:focus{outline:0}.kbq-datepicker-toggle__button.kbq-button-icon{width:var(--kbq-datepicker-toggle-size-width, 30px);height:var(--kbq-datepicker-toggle-size-height, 30px);margin-left:2px}.kbq-form-field-appearance-legacy .kbq-form-field-prefix .kbq-datepicker-toggle__default-icon,.kbq-form-field-appearance-legacy .kbq-form-field-suffix .kbq-datepicker-toggle__default-icon{width:1em}.kbq-form-field:not(.kbq-form-field-appearance-legacy) .kbq-form-field-prefix .kbq-datepicker-toggle__default-icon,.kbq-form-field:not(.kbq-form-field-appearance-legacy) .kbq-form-field-suffix .kbq-datepicker-toggle__default-icon{display:block;width:1.5em;height:1.5em}.kbq-form-field:not(.kbq-form-field-appearance-legacy) .kbq-form-field-prefix .kbq-button-icon .kbq-datepicker-toggle__default-icon,.kbq-form-field:not(.kbq-form-field-appearance-legacy) .kbq-form-field-suffix .kbq-button-icon .kbq-datepicker-toggle__default-icon{margin:auto}\n"] }]
1994
+ }, exportAs: 'kbqDatepickerToggle', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--todo need simplify this-->\n<button\n #button\n kbq-button\n type=\"button\"\n class=\"kbq-datepicker-toggle__button\"\n aria-haspopup=\"true\"\n [attr.aria-label]=\"intl.openCalendarLabel\"\n [tabIndex]=\"tabIndex\"\n [disabled]=\"disabled\"\n (click)=\"open($event)\">\n\n <i *ngIf=\"!customIcon\" kbq-icon=\"mc-calendar_16\" class=\"kbq-datepicker-toggle__default-icon\"></i>\n\n <ng-content select=\"[kbqDatepickerToggleIcon]\"></ng-content>\n</button>\n", styles: [".kbq-datepicker-toggle:focus{outline:0}.kbq-datepicker-toggle__button.kbq-button-icon{width:var(--kbq-datepicker-toggle-size-width, );height:var(--kbq-datepicker-toggle-size-height, );margin-left:2px}.kbq-form-field-appearance-legacy .kbq-form-field-prefix .kbq-datepicker-toggle__default-icon,.kbq-form-field-appearance-legacy .kbq-form-field-suffix .kbq-datepicker-toggle__default-icon{width:1em}.kbq-form-field:not(.kbq-form-field-appearance-legacy) .kbq-form-field-prefix .kbq-datepicker-toggle__default-icon,.kbq-form-field:not(.kbq-form-field-appearance-legacy) .kbq-form-field-suffix .kbq-datepicker-toggle__default-icon{display:block;width:1.5em;height:1.5em}.kbq-form-field:not(.kbq-form-field-appearance-legacy) .kbq-form-field-prefix .kbq-button-icon .kbq-datepicker-toggle__default-icon,.kbq-form-field:not(.kbq-form-field-appearance-legacy) .kbq-form-field-suffix .kbq-button-icon .kbq-datepicker-toggle__default-icon{margin:auto}\n"] }]
2001
1995
  }], ctorParameters: function () { return [{ type: KbqDatepickerIntl }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
2002
1996
  type: Input
2003
1997
  }], datepicker: [{
@@ -2097,5 +2091,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
2097
2091
  * Generated bundle index. Do not edit.
2098
2092
  */
2099
2093
 
2100
- export { KBQ_DATEPICKER_SCROLL_STRATEGY, KBQ_DATEPICKER_SCROLL_STRATEGY_FACTORY, KBQ_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER, KBQ_DATEPICKER_VALIDATORS, KBQ_DATEPICKER_VALUE_ACCESSOR, KbqCalendar, KbqCalendarBody, KbqCalendarCell, KbqCalendarHeader, KbqDatepicker, KbqDatepickerContent, KbqDatepickerInput, KbqDatepickerInputEvent, KbqDatepickerIntl, KbqDatepickerModule, KbqDatepickerToggle, KbqDatepickerToggleIcon, KbqMonthView, MAX_YEAR, mcDatepickerAnimations };
2094
+ export { KBQ_DATEPICKER_SCROLL_STRATEGY, KBQ_DATEPICKER_SCROLL_STRATEGY_FACTORY, KBQ_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER, KBQ_DATEPICKER_VALIDATORS, KBQ_DATEPICKER_VALUE_ACCESSOR, KbqCalendar, KbqCalendarBody, KbqCalendarCell, KbqCalendarHeader, KbqDatepicker, KbqDatepickerContent, KbqDatepickerInput, KbqDatepickerInputEvent, KbqDatepickerIntl, KbqDatepickerModule, KbqDatepickerToggle, KbqDatepickerToggleIcon, KbqMonthView, MAX_YEAR, kbqDatepickerAnimations };
2101
2095
  //# sourceMappingURL=koobiq-components-datepicker.mjs.map